{"version":3,"file":"bundle.cjs","sources":["../lib/db/schema/Column.js","../lib/db/schema/IndexedColumn.js","../lib/db/schema/Index.js","../lib/db/schema/internal.js","../lib/db/schema/Table.js","../lib/attachments/Schema.js","../lib/attachments/AttachmentContext.js","../lib/client/watched/WatchedQuery.js","../lib/attachments/SyncingService.js","../lib/utils/queue.js","../lib/utils/mutex.js","../lib/attachments/AttachmentService.js","../lib/attachments/AttachmentQueue.js","../lib/attachments/LocalStorageAdapter.js","../../../node_modules/.pnpm/event-iterator@2.0.0/node_modules/event-iterator/lib/event-iterator.js","../../../node_modules/.pnpm/event-iterator@2.0.0/node_modules/event-iterator/lib/dom.js","../../../node_modules/.pnpm/js-logger@1.6.1/node_modules/js-logger/src/logger.js","../lib/db/DBAdapter.js","../lib/db/crud/SyncProgress.js","../lib/db/crud/SyncStatus.js","../lib/db/crud/UploadQueueStatus.js","../lib/utils/BaseObserver.js","../lib/utils/ControlledExecutor.js","../lib/utils/async.js","../lib/client/ConnectionManager.js","../lib/client/watched/processors/comparators.js","../lib/utils/MetaBaseObserver.js","../lib/client/watched/processors/AbstractQueryProcessor.js","../lib/client/watched/processors/DifferentialQueryProcessor.js","../lib/client/watched/processors/OnChangeQueryProcessor.js","../lib/client/CustomQuery.js","../lib/client/SQLOpenFactory.js","../lib/client/sync/bucket/BucketStorageAdapter.js","../lib/client/sync/bucket/CrudBatch.js","../lib/client/sync/bucket/CrudEntry.js","../lib/client/sync/bucket/CrudTransaction.js","../lib/utils/AbortOperation.js","../lib/client/sync/bucket/OpType.js","../lib/client/sync/bucket/OplogEntry.js","../lib/client/sync/bucket/SyncDataBucket.js","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Frames.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Codecs.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Common.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Deferred.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Errors.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RSocket.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/ClientServerMultiplexerDemultiplexer.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Fragmenter.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Reassembler.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RequestChannelStream.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RequestFnFStream.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RequestResponseStream.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RequestStreamStream.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RSocketSupport.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Resume.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RSocketConnector.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/RSocketServer.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/Transport.js","../../../node_modules/.pnpm/rsocket-core@1.0.0-alpha.3/node_modules/rsocket-core/dist/index.js","../../../node_modules/.pnpm/rsocket-websocket-client@1.0.0-alpha.3/node_modules/rsocket-websocket-client/dist/WebsocketDuplexConnection.js","../lib/client/sync/stream/WebsocketClientTransport.js","../lib/utils/stream_transform.js","../lib/client/sync/stream/AbstractRemote.js","../lib/client/sync/stream/core-instruction.js","../lib/client/sync/stream/streaming-sync-types.js","../lib/client/sync/stream/AbstractStreamingSyncImplementation.js","../lib/client/triggers/MemoryTriggerClaimManager.js","../lib/client/triggers/TriggerManager.js","../lib/client/triggers/TriggerManagerImpl.js","../lib/client/AbstractPowerSyncDatabase.js","../lib/client/AbstractPowerSyncOpenFactory.js","../lib/client/runOnSchemaChange.js","../lib/client/compilableQueryWatch.js","../lib/client/constants.js","../lib/client/sync/bucket/SqliteBucketStorage.js","../lib/client/sync/bucket/SyncDataBatch.js","../lib/db/ConnectionClosedError.js","../lib/db/schema/Schema.js","../lib/db/schema/TableV2.js","../lib/client/triggers/sanitizeSQL.js","../lib/client/watched/GetAllQuery.js","../lib/utils/Logger.js","../lib/utils/parseQuery.js"],"sourcesContent":["// https://www.sqlite.org/lang_expr.html#castexpr\nexport var ColumnType;\n(function (ColumnType) {\n    ColumnType[\"TEXT\"] = \"TEXT\";\n    ColumnType[\"INTEGER\"] = \"INTEGER\";\n    ColumnType[\"REAL\"] = \"REAL\";\n})(ColumnType || (ColumnType = {}));\nconst text = {\n    type: ColumnType.TEXT\n};\nconst integer = {\n    type: ColumnType.INTEGER\n};\nconst real = {\n    type: ColumnType.REAL\n};\n// powersync-sqlite-core limits the number of column per table to 1999, due to internal SQLite limits.\n// In earlier versions this was limited to 63.\nexport const MAX_AMOUNT_OF_COLUMNS = 1999;\nexport const column = {\n    text,\n    integer,\n    real\n};\nexport class Column {\n    options;\n    constructor(options) {\n        this.options = options;\n    }\n    get name() {\n        return this.options.name;\n    }\n    get type() {\n        return this.options.type;\n    }\n    toJSON() {\n        return {\n            name: this.name,\n            type: this.type\n        };\n    }\n}\n//# sourceMappingURL=Column.js.map","import { ColumnType } from './Column.js';\nexport const DEFAULT_INDEX_COLUMN_OPTIONS = {\n    ascending: true\n};\nexport class IndexedColumn {\n    options;\n    static createAscending(column) {\n        return new IndexedColumn({\n            name: column,\n            ascending: true\n        });\n    }\n    constructor(options) {\n        this.options = { ...DEFAULT_INDEX_COLUMN_OPTIONS, ...options };\n    }\n    get name() {\n        return this.options.name;\n    }\n    get ascending() {\n        return this.options.ascending;\n    }\n    toJSON(table) {\n        return {\n            name: this.name,\n            ascending: this.ascending,\n            type: table.columns.find((column) => column.name === this.name)?.type ?? ColumnType.TEXT\n        };\n    }\n}\n//# sourceMappingURL=IndexedColumn.js.map","import { IndexedColumn } from './IndexedColumn.js';\nexport const DEFAULT_INDEX_OPTIONS = {\n    columns: []\n};\nexport class Index {\n    options;\n    static createAscending(options, columnNames) {\n        return new Index({\n            ...options,\n            columns: columnNames.map((name) => IndexedColumn.createAscending(name))\n        });\n    }\n    constructor(options) {\n        this.options = options;\n        this.options = { ...DEFAULT_INDEX_OPTIONS, ...options };\n    }\n    get name() {\n        return this.options.name;\n    }\n    get columns() {\n        return this.options.columns ?? [];\n    }\n    toJSON(table) {\n        return {\n            name: this.name,\n            columns: this.columns.map((c) => c.toJSON(table))\n        };\n    }\n}\n//# sourceMappingURL=Index.js.map","/**\n * @internal Not exported from `index.ts`.\n */\nexport function encodeTableOptions(options) {\n    const trackPrevious = options.trackPrevious;\n    return {\n        local_only: options.localOnly,\n        insert_only: options.insertOnly,\n        include_old: trackPrevious && (trackPrevious.columns ?? true),\n        include_old_only_when_changed: typeof trackPrevious == 'object' && trackPrevious.onlyWhenChanged == true,\n        include_metadata: options.trackMetadata,\n        ignore_empty_update: options.ignoreEmptyUpdates\n    };\n}\n//# sourceMappingURL=internal.js.map","import { Column, ColumnType, MAX_AMOUNT_OF_COLUMNS } from './Column.js';\nimport { Index } from './Index.js';\nimport { IndexedColumn } from './IndexedColumn.js';\nimport { encodeTableOptions } from './internal.js';\nexport const DEFAULT_TABLE_OPTIONS = {\n    indexes: [],\n    insertOnly: false,\n    localOnly: false,\n    trackPrevious: false,\n    trackMetadata: false,\n    ignoreEmptyUpdates: false\n};\nexport const InvalidSQLCharacters = /[\"'%,.#\\s[\\]]/;\nexport class Table {\n    options;\n    _mappedColumns;\n    static createLocalOnly(options) {\n        return new Table({ ...options, localOnly: true, insertOnly: false });\n    }\n    static createInsertOnly(options) {\n        return new Table({ ...options, localOnly: false, insertOnly: true });\n    }\n    /**\n     * Create a table.\n     * @deprecated This was only only included for TableV2 and is no longer necessary.\n     * Prefer to use new Table() directly.\n     *\n     * TODO remove in the next major release.\n     */\n    static createTable(name, table) {\n        return new Table({\n            name,\n            columns: table.columns,\n            indexes: table.indexes,\n            localOnly: table.options.localOnly,\n            insertOnly: table.options.insertOnly,\n            viewName: table.options.viewName\n        });\n    }\n    constructor(optionsOrColumns, v2Options) {\n        if (this.isTableV1(optionsOrColumns)) {\n            this.initTableV1(optionsOrColumns);\n        }\n        else {\n            this.initTableV2(optionsOrColumns, v2Options);\n        }\n    }\n    copyWithName(name) {\n        return new Table({\n            ...this.options,\n            name\n        });\n    }\n    isTableV1(arg) {\n        return 'columns' in arg && Array.isArray(arg.columns);\n    }\n    initTableV1(options) {\n        this.options = {\n            ...options,\n            indexes: options.indexes || []\n        };\n        this.applyDefaultOptions();\n    }\n    initTableV2(columns, options) {\n        const convertedColumns = Object.entries(columns).map(([name, columnInfo]) => new Column({ name, type: columnInfo.type }));\n        const convertedIndexes = Object.entries(options?.indexes ?? {}).map(([name, columnNames]) => new Index({\n            name,\n            columns: columnNames.map((name) => new IndexedColumn({\n                name: name.replace(/^-/, ''),\n                ascending: !name.startsWith('-')\n            }))\n        }));\n        this.options = {\n            name: '',\n            columns: convertedColumns,\n            indexes: convertedIndexes,\n            viewName: options?.viewName,\n            insertOnly: options?.insertOnly,\n            localOnly: options?.localOnly,\n            trackPrevious: options?.trackPrevious,\n            trackMetadata: options?.trackMetadata,\n            ignoreEmptyUpdates: options?.ignoreEmptyUpdates\n        };\n        this.applyDefaultOptions();\n        this._mappedColumns = columns;\n    }\n    applyDefaultOptions() {\n        this.options.insertOnly ??= DEFAULT_TABLE_OPTIONS.insertOnly;\n        this.options.localOnly ??= DEFAULT_TABLE_OPTIONS.localOnly;\n        this.options.trackPrevious ??= DEFAULT_TABLE_OPTIONS.trackPrevious;\n        this.options.trackMetadata ??= DEFAULT_TABLE_OPTIONS.trackMetadata;\n        this.options.ignoreEmptyUpdates ??= DEFAULT_TABLE_OPTIONS.ignoreEmptyUpdates;\n    }\n    get name() {\n        return this.options.name;\n    }\n    get viewNameOverride() {\n        return this.options.viewName;\n    }\n    get viewName() {\n        return this.viewNameOverride ?? this.name;\n    }\n    get columns() {\n        return this.options.columns;\n    }\n    get columnMap() {\n        return (this._mappedColumns ??\n            this.columns.reduce((hash, column) => {\n                hash[column.name] = { type: column.type ?? ColumnType.TEXT };\n                return hash;\n            }, {}));\n    }\n    get indexes() {\n        return this.options.indexes ?? [];\n    }\n    get localOnly() {\n        return this.options.localOnly;\n    }\n    get insertOnly() {\n        return this.options.insertOnly;\n    }\n    get trackPrevious() {\n        return this.options.trackPrevious;\n    }\n    get trackMetadata() {\n        return this.options.trackMetadata;\n    }\n    get ignoreEmptyUpdates() {\n        return this.options.ignoreEmptyUpdates;\n    }\n    get internalName() {\n        if (this.options.localOnly) {\n            return `ps_data_local__${this.name}`;\n        }\n        return `ps_data__${this.name}`;\n    }\n    get validName() {\n        if (InvalidSQLCharacters.test(this.name)) {\n            return false;\n        }\n        if (this.viewNameOverride != null && InvalidSQLCharacters.test(this.viewNameOverride)) {\n            return false;\n        }\n        return true;\n    }\n    validate() {\n        if (InvalidSQLCharacters.test(this.name)) {\n            throw new Error(`Invalid characters in table name: ${this.name}`);\n        }\n        if (this.viewNameOverride && InvalidSQLCharacters.test(this.viewNameOverride)) {\n            throw new Error(`Invalid characters in view name: ${this.viewNameOverride}`);\n        }\n        if (this.columns.length > MAX_AMOUNT_OF_COLUMNS) {\n            throw new Error(`Table has too many columns. The maximum number of columns is ${MAX_AMOUNT_OF_COLUMNS}.`);\n        }\n        if (this.trackMetadata && this.localOnly) {\n            throw new Error(`Can't include metadata for local-only tables.`);\n        }\n        if (this.trackPrevious != false && this.localOnly) {\n            throw new Error(`Can't include old values for local-only tables.`);\n        }\n        const columnNames = new Set();\n        columnNames.add('id');\n        for (const column of this.columns) {\n            const { name: columnName } = column;\n            if (column.name === 'id') {\n                throw new Error(`An id column is automatically added, custom id columns are not supported`);\n            }\n            if (columnNames.has(columnName)) {\n                throw new Error(`Duplicate column ${columnName}`);\n            }\n            if (InvalidSQLCharacters.test(columnName)) {\n                throw new Error(`Invalid characters in column name: ${column.name}`);\n            }\n            columnNames.add(columnName);\n        }\n        const indexNames = new Set();\n        for (const index of this.indexes) {\n            if (indexNames.has(index.name)) {\n                throw new Error(`Duplicate index ${index.name}`);\n            }\n            if (InvalidSQLCharacters.test(index.name)) {\n                throw new Error(`Invalid characters in index name: ${index.name}`);\n            }\n            for (const column of index.columns) {\n                if (!columnNames.has(column.name)) {\n                    throw new Error(`Column ${column.name} not found for index ${index.name}`);\n                }\n            }\n            indexNames.add(index.name);\n        }\n    }\n    toJSON() {\n        return {\n            name: this.name,\n            view_name: this.viewName,\n            columns: this.columns.map((c) => c.toJSON()),\n            indexes: this.indexes.map((e) => e.toJSON(this)),\n            ...encodeTableOptions(this)\n        };\n    }\n}\n//# sourceMappingURL=Table.js.map","import { column } from '../db/schema/Column.js';\nimport { Table } from '../db/schema/Table.js';\nexport const ATTACHMENT_TABLE = 'attachments';\n/**\n * Maps a database row to an AttachmentRecord.\n *\n * @param row - The database row object\n * @returns The corresponding AttachmentRecord\n *\n * @experimental\n */\nexport function attachmentFromSql(row) {\n    return {\n        id: row.id,\n        filename: row.filename,\n        localUri: row.local_uri,\n        size: row.size,\n        mediaType: row.media_type,\n        timestamp: row.timestamp,\n        metaData: row.meta_data,\n        hasSynced: row.has_synced === 1,\n        state: row.state\n    };\n}\n/**\n * AttachmentState represents the current synchronization state of an attachment.\n *\n * @experimental\n */\nexport var AttachmentState;\n(function (AttachmentState) {\n    AttachmentState[AttachmentState[\"QUEUED_UPLOAD\"] = 0] = \"QUEUED_UPLOAD\";\n    AttachmentState[AttachmentState[\"QUEUED_DOWNLOAD\"] = 1] = \"QUEUED_DOWNLOAD\";\n    AttachmentState[AttachmentState[\"QUEUED_DELETE\"] = 2] = \"QUEUED_DELETE\";\n    AttachmentState[AttachmentState[\"SYNCED\"] = 3] = \"SYNCED\";\n    AttachmentState[AttachmentState[\"ARCHIVED\"] = 4] = \"ARCHIVED\"; // Attachment has been orphaned, i.e. the associated record has been deleted\n})(AttachmentState || (AttachmentState = {}));\n/**\n * AttachmentTable defines the schema for the attachment queue table.\n *\n * @internal\n */\nexport class AttachmentTable extends Table {\n    constructor(options) {\n        super({\n            filename: column.text,\n            local_uri: column.text,\n            timestamp: column.integer,\n            size: column.integer,\n            media_type: column.text,\n            state: column.integer, // Corresponds to AttachmentState\n            has_synced: column.integer,\n            meta_data: column.text\n        }, {\n            ...options,\n            viewName: options?.viewName ?? ATTACHMENT_TABLE,\n            localOnly: true,\n            insertOnly: false\n        });\n    }\n}\n//# sourceMappingURL=Schema.js.map","import { AttachmentState, attachmentFromSql } from './Schema.js';\n/**\n * AttachmentContext provides database operations for managing attachment records.\n *\n * Provides methods to query, insert, update, and delete attachment records with\n * proper transaction management through PowerSync.\n *\n * @internal\n */\nexport class AttachmentContext {\n    /** PowerSync database instance for executing queries */\n    db;\n    /** Name of the database table storing attachment records */\n    tableName;\n    /** Logger instance for diagnostic information */\n    logger;\n    /** Maximum number of archived attachments to keep before cleanup */\n    archivedCacheLimit = 100;\n    /**\n     * Creates a new AttachmentContext instance.\n     *\n     * @param db - PowerSync database instance\n     * @param tableName - Name of the table storing attachment records. Default: 'attachments'\n     * @param logger - Logger instance for diagnostic output\n     */\n    constructor(db, tableName = 'attachments', logger, archivedCacheLimit) {\n        this.db = db;\n        this.tableName = tableName;\n        this.logger = logger;\n        this.archivedCacheLimit = archivedCacheLimit;\n    }\n    /**\n     * Retrieves all active attachments that require synchronization.\n     * Active attachments include those queued for upload, download, or delete.\n     * Results are ordered by timestamp in ascending order.\n     *\n     * @returns Promise resolving to an array of active attachment records\n     */\n    async getActiveAttachments() {\n        const attachments = await this.db.getAll(\n        /* sql */\n        `\n        SELECT\n          *\n        FROM\n          ${this.tableName}\n        WHERE\n          state = ?\n          OR state = ?\n          OR state = ?\n        ORDER BY\n          timestamp ASC\n      `, [AttachmentState.QUEUED_UPLOAD, AttachmentState.QUEUED_DOWNLOAD, AttachmentState.QUEUED_DELETE]);\n        return attachments.map(attachmentFromSql);\n    }\n    /**\n     * Retrieves all archived attachments.\n     *\n     * Archived attachments are no longer referenced but haven't been permanently deleted.\n     * These are candidates for cleanup operations to free up storage space.\n     *\n     * @returns Promise resolving to an array of archived attachment records\n     */\n    async getArchivedAttachments() {\n        const attachments = await this.db.getAll(\n        /* sql */\n        `\n        SELECT\n          *\n        FROM\n          ${this.tableName}\n        WHERE\n          state = ?\n        ORDER BY\n          timestamp ASC\n      `, [AttachmentState.ARCHIVED]);\n        return attachments.map(attachmentFromSql);\n    }\n    /**\n     * Retrieves all attachment records regardless of state.\n     * Results are ordered by timestamp in ascending order.\n     *\n     * @returns Promise resolving to an array of all attachment records\n     */\n    async getAttachments() {\n        const attachments = await this.db.getAll(\n        /* sql */\n        `\n        SELECT\n          *\n        FROM\n          ${this.tableName}\n        ORDER BY\n          timestamp ASC\n      `, []);\n        return attachments.map(attachmentFromSql);\n    }\n    /**\n     * Inserts or updates an attachment record within an existing transaction.\n     *\n     * Performs an upsert operation (INSERT OR REPLACE). Must be called within\n     * an active database transaction context.\n     *\n     * @param attachment - The attachment record to upsert\n     * @param context - Active database transaction context\n     */\n    async upsertAttachment(attachment, context) {\n        await context.execute(\n        /* sql */\n        `\n        INSERT\n        OR REPLACE INTO ${this.tableName} (\n          id,\n          filename,\n          local_uri,\n          size,\n          media_type,\n          timestamp,\n          state,\n          has_synced,\n          meta_data\n        )\n        VALUES\n          (?, ?, ?, ?, ?, ?, ?, ?, ?)\n      `, [\n            attachment.id,\n            attachment.filename,\n            attachment.localUri || null,\n            attachment.size || null,\n            attachment.mediaType || null,\n            attachment.timestamp,\n            attachment.state,\n            attachment.hasSynced ? 1 : 0,\n            attachment.metaData || null\n        ]);\n    }\n    async getAttachment(id) {\n        const attachment = await this.db.get(\n        /* sql */\n        `\n        SELECT\n          *\n        FROM\n          ${this.tableName}\n        WHERE\n          id = ?\n      `, [id]);\n        return attachment ? attachmentFromSql(attachment) : undefined;\n    }\n    /**\n     * Permanently deletes an attachment record from the database.\n     *\n     * This operation removes the attachment record but does not delete\n     * the associated local or remote files. File deletion should be handled\n     * separately through the appropriate storage adapters.\n     *\n     * @param attachmentId - Unique identifier of the attachment to delete\n     */\n    async deleteAttachment(attachmentId) {\n        await this.db.writeTransaction((tx) => tx.execute(\n        /* sql */\n        `\n          DELETE FROM ${this.tableName}\n          WHERE\n            id = ?\n        `, [attachmentId]));\n    }\n    async clearQueue() {\n        await this.db.writeTransaction((tx) => tx.execute(/* sql */ ` DELETE FROM ${this.tableName} `));\n    }\n    async deleteArchivedAttachments(callback) {\n        const limit = 1000;\n        const results = await this.db.getAll(\n        /* sql */\n        `\n        SELECT\n          *\n        FROM\n          ${this.tableName}\n        WHERE\n          state = ?\n        ORDER BY\n          timestamp DESC\n        LIMIT\n          ?\n        OFFSET\n          ?\n      `, [AttachmentState.ARCHIVED, limit, this.archivedCacheLimit]);\n        const archivedAttachments = results.map(attachmentFromSql);\n        if (archivedAttachments.length === 0)\n            return false;\n        await callback?.(archivedAttachments);\n        this.logger.info(`Deleting ${archivedAttachments.length} archived attachments. Archived attachment exceeds cache archiveCacheLimit of ${this.archivedCacheLimit}.`);\n        const ids = archivedAttachments.map((attachment) => attachment.id);\n        await this.db.execute(\n        /* sql */\n        `\n        DELETE FROM ${this.tableName}\n        WHERE\n          id IN (\n            SELECT\n              json_each.value\n            FROM\n              json_each (?)\n          );\n      `, [JSON.stringify(ids)]);\n        this.logger.info(`Deleted ${archivedAttachments.length} archived attachments`);\n        return archivedAttachments.length < limit;\n    }\n    /**\n     * Saves multiple attachment records in a single transaction.\n     *\n     * All updates are saved in a single batch after processing.\n     * If the attachments array is empty, no database operations are performed.\n     *\n     * @param attachments - Array of attachment records to save\n     */\n    async saveAttachments(attachments) {\n        if (attachments.length === 0) {\n            return;\n        }\n        await this.db.writeTransaction(async (tx) => {\n            for (const attachment of attachments) {\n                await this.upsertAttachment(attachment, tx);\n            }\n        });\n    }\n}\n//# sourceMappingURL=AttachmentContext.js.map","export var WatchedQueryListenerEvent;\n(function (WatchedQueryListenerEvent) {\n    WatchedQueryListenerEvent[\"ON_DATA\"] = \"onData\";\n    WatchedQueryListenerEvent[\"ON_ERROR\"] = \"onError\";\n    WatchedQueryListenerEvent[\"ON_STATE_CHANGE\"] = \"onStateChange\";\n    WatchedQueryListenerEvent[\"SETTINGS_WILL_UPDATE\"] = \"settingsWillUpdate\";\n    WatchedQueryListenerEvent[\"CLOSED\"] = \"closed\";\n})(WatchedQueryListenerEvent || (WatchedQueryListenerEvent = {}));\nexport const DEFAULT_WATCH_THROTTLE_MS = 30;\nexport const DEFAULT_WATCH_QUERY_OPTIONS = {\n    throttleMs: DEFAULT_WATCH_THROTTLE_MS,\n    reportFetching: true\n};\n//# sourceMappingURL=WatchedQuery.js.map","import { AttachmentState } from './Schema.js';\n/**\n * Orchestrates attachment synchronization between local and remote storage.\n * Handles uploads, downloads, deletions, and state transitions.\n *\n * @internal\n */\nexport class SyncingService {\n    attachmentService;\n    localStorage;\n    remoteStorage;\n    logger;\n    errorHandler;\n    constructor(attachmentService, localStorage, remoteStorage, logger, errorHandler) {\n        this.attachmentService = attachmentService;\n        this.localStorage = localStorage;\n        this.remoteStorage = remoteStorage;\n        this.logger = logger;\n        this.errorHandler = errorHandler;\n    }\n    /**\n     * Processes attachments based on their state (upload, download, or delete).\n     * All updates are saved in a single batch after processing.\n     *\n     * @param attachments - Array of attachment records to process\n     * @param context - Attachment context for database operations\n     * @returns Promise that resolves when all attachments have been processed and saved\n     */\n    async processAttachments(attachments, context) {\n        const updatedAttachments = [];\n        for (const attachment of attachments) {\n            switch (attachment.state) {\n                case AttachmentState.QUEUED_UPLOAD:\n                    const uploaded = await this.uploadAttachment(attachment);\n                    updatedAttachments.push(uploaded);\n                    break;\n                case AttachmentState.QUEUED_DOWNLOAD:\n                    const downloaded = await this.downloadAttachment(attachment);\n                    updatedAttachments.push(downloaded);\n                    break;\n                case AttachmentState.QUEUED_DELETE:\n                    const deleted = await this.deleteAttachment(attachment, context);\n                    updatedAttachments.push(deleted);\n                    break;\n                default:\n                    break;\n            }\n        }\n        await context.saveAttachments(updatedAttachments);\n    }\n    /**\n     * Uploads an attachment from local storage to remote storage.\n     * On success, marks as SYNCED. On failure, defers to error handler or archives.\n     *\n     * @param attachment - The attachment record to upload\n     * @returns Updated attachment record with new state\n     * @throws Error if the attachment has no localUri\n     */\n    async uploadAttachment(attachment) {\n        this.logger.info(`Uploading attachment ${attachment.filename}`);\n        try {\n            if (attachment.localUri == null) {\n                throw new Error(`No localUri for attachment ${attachment.id}`);\n            }\n            const fileBlob = await this.localStorage.readFile(attachment.localUri);\n            await this.remoteStorage.uploadFile(fileBlob, attachment);\n            return {\n                ...attachment,\n                state: AttachmentState.SYNCED,\n                hasSynced: true\n            };\n        }\n        catch (error) {\n            const shouldRetry = (await this.errorHandler?.onUploadError(attachment, error)) ?? true;\n            if (!shouldRetry) {\n                return {\n                    ...attachment,\n                    state: AttachmentState.ARCHIVED\n                };\n            }\n            return attachment;\n        }\n    }\n    /**\n     * Downloads an attachment from remote storage to local storage.\n     * Retrieves the file, converts to base64, and saves locally.\n     * On success, marks as SYNCED. On failure, defers to error handler or archives.\n     *\n     * @param attachment - The attachment record to download\n     * @returns Updated attachment record with local URI and new state\n     */\n    async downloadAttachment(attachment) {\n        this.logger.info(`Downloading attachment ${attachment.filename}`);\n        try {\n            const fileData = await this.remoteStorage.downloadFile(attachment);\n            const localUri = this.localStorage.getLocalUri(attachment.filename);\n            await this.localStorage.saveFile(localUri, fileData);\n            return {\n                ...attachment,\n                state: AttachmentState.SYNCED,\n                localUri: localUri,\n                hasSynced: true\n            };\n        }\n        catch (error) {\n            const shouldRetry = (await this.errorHandler?.onDownloadError(attachment, error)) ?? true;\n            if (!shouldRetry) {\n                return {\n                    ...attachment,\n                    state: AttachmentState.ARCHIVED\n                };\n            }\n            return attachment;\n        }\n    }\n    /**\n     * Deletes an attachment from both remote and local storage.\n     * Removes the remote file, local file (if exists), and the attachment record.\n     * On failure, defers to error handler or archives.\n     *\n     * @param attachment - The attachment record to delete\n     * @param context - Attachment context for database operations\n     * @returns Updated attachment record\n     */\n    async deleteAttachment(attachment, context) {\n        try {\n            await this.remoteStorage.deleteFile(attachment);\n            if (attachment.localUri) {\n                await this.localStorage.deleteFile(attachment.localUri);\n            }\n            await context.deleteAttachment(attachment.id);\n            return {\n                ...attachment,\n                state: AttachmentState.ARCHIVED\n            };\n        }\n        catch (error) {\n            const shouldRetry = (await this.errorHandler?.onDeleteError(attachment, error)) ?? true;\n            if (!shouldRetry) {\n                return {\n                    ...attachment,\n                    state: AttachmentState.ARCHIVED\n                };\n            }\n            return attachment;\n        }\n    }\n    /**\n     * Performs cleanup of archived attachments by removing their local files and records.\n     * Errors during local file deletion are logged but do not prevent record deletion.\n     */\n    async deleteArchivedAttachments(context) {\n        return await context.deleteArchivedAttachments(async (archivedAttachments) => {\n            for (const attachment of archivedAttachments) {\n                if (attachment.localUri) {\n                    try {\n                        await this.localStorage.deleteFile(attachment.localUri);\n                    }\n                    catch (error) {\n                        this.logger.error('Error deleting local file for archived attachment', error);\n                    }\n                }\n            }\n        });\n    }\n}\n//# sourceMappingURL=SyncingService.js.map","/**\n * A simple fixed-capacity queue implementation.\n *\n * Unlike a naive queue implemented by `array.push()` and `array.shift()`, this avoids moving array elements around\n * and is `O(1)` for {@link addLast} and {@link removeFirst}.\n */\nexport class Queue {\n    table;\n    // Index of the first element in the table.\n    head;\n    // Amount of items currently in the queue.\n    _length;\n    constructor(initialItems) {\n        this.table = [...initialItems];\n        this.head = 0;\n        this._length = this.table.length;\n    }\n    get isEmpty() {\n        return this.length == 0;\n    }\n    get length() {\n        return this._length;\n    }\n    removeFirst() {\n        if (this.isEmpty) {\n            throw new Error('Queue is empty');\n        }\n        const result = this.table[this.head];\n        this._length--;\n        this.table[this.head] = undefined;\n        this.head = (this.head + 1) % this.table.length;\n        return result;\n    }\n    addLast(element) {\n        if (this.length == this.table.length) {\n            throw new Error('Queue is full');\n        }\n        this.table[(this.head + this._length) % this.table.length] = element;\n        this._length++;\n    }\n}\n//# sourceMappingURL=queue.js.map","import { Queue } from './queue.js';\n/**\n * An asynchronous semaphore implementation with associated items per lease.\n *\n * @internal This class is meant to be used in PowerSync SDKs only, and is not part of the public API.\n */\nexport class Semaphore {\n    // Available items that are not currently assigned to a waiter.\n    available;\n    size;\n    // Linked list of waiters. We don't expect the wait list to become particularly large, and this allows removing\n    // aborted waiters from the middle of the list efficiently.\n    firstWaiter;\n    lastWaiter;\n    constructor(elements) {\n        this.available = new Queue(elements);\n        this.size = this.available.length;\n    }\n    addWaiter(requestedItems, onAcquire) {\n        const node = {\n            isActive: true,\n            acquiredItems: [],\n            remainingItems: requestedItems,\n            onAcquire,\n            prev: this.lastWaiter\n        };\n        if (this.lastWaiter) {\n            this.lastWaiter.next = node;\n            this.lastWaiter = node;\n        }\n        else {\n            // First waiter\n            this.lastWaiter = this.firstWaiter = node;\n        }\n        return node;\n    }\n    deactivateWaiter(waiter) {\n        const { prev, next } = waiter;\n        waiter.isActive = false;\n        if (prev)\n            prev.next = next;\n        if (next)\n            next.prev = prev;\n        if (waiter == this.firstWaiter)\n            this.firstWaiter = next;\n        if (waiter == this.lastWaiter)\n            this.lastWaiter = prev;\n    }\n    requestPermits(amount, abort) {\n        if (amount <= 0 || amount > this.size) {\n            throw new Error(`Invalid amount of items requested (${amount}), must be between 1 and ${this.size}`);\n        }\n        return new Promise((resolve, reject) => {\n            function rejectAborted() {\n                reject(abort?.reason ?? new Error('Semaphore acquire aborted'));\n            }\n            if (abort?.aborted) {\n                return rejectAborted();\n            }\n            let waiter;\n            const markCompleted = () => {\n                const items = waiter.acquiredItems;\n                waiter.acquiredItems = []; // Avoid releasing items twice.\n                for (const element of items) {\n                    // Give to next waiter, if possible.\n                    const nextWaiter = this.firstWaiter;\n                    if (nextWaiter) {\n                        nextWaiter.acquiredItems.push(element);\n                        nextWaiter.remainingItems--;\n                        if (nextWaiter.remainingItems == 0) {\n                            nextWaiter.onAcquire();\n                        }\n                    }\n                    else {\n                        // No pending waiter, return lease into pool.\n                        this.available.addLast(element);\n                    }\n                }\n            };\n            const onAbort = () => {\n                abort?.removeEventListener('abort', onAbort);\n                if (waiter.isActive) {\n                    this.deactivateWaiter(waiter);\n                    rejectAborted();\n                }\n            };\n            const resolvePromise = () => {\n                this.deactivateWaiter(waiter);\n                abort?.removeEventListener('abort', onAbort);\n                const items = waiter.acquiredItems;\n                resolve({ items, release: markCompleted });\n            };\n            waiter = this.addWaiter(amount, resolvePromise);\n            // If there are items in the pool that haven't been assigned, we can pull them into this waiter. Note that this is\n            // only the case if we're the first waiter (otherwise, items would have been assigned to an earlier waiter).\n            while (!this.available.isEmpty && waiter.remainingItems > 0) {\n                waiter.acquiredItems.push(this.available.removeFirst());\n                waiter.remainingItems--;\n            }\n            if (waiter.remainingItems == 0) {\n                return resolvePromise();\n            }\n            abort?.addEventListener('abort', onAbort);\n        });\n    }\n    /**\n     * Requests a single item from the pool.\n     *\n     * The returned `release` callback must be invoked to return the item into the pool.\n     */\n    async requestOne(abort) {\n        const { items, release } = await this.requestPermits(1, abort);\n        return { release, item: items[0] };\n    }\n    /**\n     * Requests access to all items from the pool.\n     *\n     * The returned `release` callback must be invoked to return items into the pool.\n     */\n    requestAll(abort) {\n        return this.requestPermits(this.size, abort);\n    }\n}\n/**\n * An asynchronous mutex implementation.\n *\n * @internal This class is meant to be used in PowerSync SDKs only, and is not part of the public API.\n */\nexport class Mutex {\n    inner = new Semaphore([null]);\n    async acquire(abort) {\n        const { release } = await this.inner.requestOne(abort);\n        return release;\n    }\n    async runExclusive(fn, abort) {\n        const returnMutex = await this.acquire(abort);\n        try {\n            return await fn();\n        }\n        finally {\n            returnMutex();\n        }\n    }\n}\nexport function timeoutSignal(timeout) {\n    if (timeout == null)\n        return;\n    if ('timeout' in AbortSignal)\n        return AbortSignal.timeout(timeout);\n    const controller = new AbortController();\n    setTimeout(() => controller.abort(new Error('Timeout waiting for lock')), timeout);\n    return controller.signal;\n}\n//# sourceMappingURL=mutex.js.map","import { Mutex } from '../utils/mutex.js';\nimport { AttachmentContext } from './AttachmentContext.js';\nimport { AttachmentState } from './Schema.js';\n/**\n * Service for querying and watching attachment records in the database.\n *\n * @internal\n */\nexport class AttachmentService {\n    db;\n    logger;\n    tableName;\n    mutex = new Mutex();\n    context;\n    constructor(db, logger, tableName = 'attachments', archivedCacheLimit = 100) {\n        this.db = db;\n        this.logger = logger;\n        this.tableName = tableName;\n        this.context = new AttachmentContext(db, tableName, logger, archivedCacheLimit);\n    }\n    /**\n     * Creates a differential watch query for active attachments requiring synchronization.\n     * @returns Watch query that emits changes for queued uploads, downloads, and deletes\n     */\n    watchActiveAttachments({ throttleMs } = {}) {\n        this.logger.info('Watching active attachments...');\n        const watch = this.db\n            .query({\n            sql: /* sql */ `\n          SELECT\n            *\n          FROM\n            ${this.tableName}\n          WHERE\n            state = ?\n            OR state = ?\n            OR state = ?\n          ORDER BY\n            timestamp ASC\n        `,\n            parameters: [AttachmentState.QUEUED_UPLOAD, AttachmentState.QUEUED_DOWNLOAD, AttachmentState.QUEUED_DELETE]\n        })\n            .differentialWatch({ throttleMs });\n        return watch;\n    }\n    /**\n     * Executes a callback with exclusive access to the attachment context.\n     */\n    async withContext(callback) {\n        return this.mutex.runExclusive(async () => {\n            return callback(this.context);\n        });\n    }\n}\n//# sourceMappingURL=AttachmentService.js.map","import { DEFAULT_WATCH_THROTTLE_MS } from '../client/watched/WatchedQuery.js';\nimport { ATTACHMENT_TABLE, AttachmentState } from './Schema.js';\nimport { SyncingService } from './SyncingService.js';\nimport { AttachmentService } from './AttachmentService.js';\n/**\n * AttachmentQueue manages the lifecycle and synchronization of attachments\n * between local and remote storage.\n * Provides automatic synchronization, upload/download queuing, attachment monitoring,\n * verification and repair of local files, and cleanup of archived attachments.\n *\n * @experimental\n * @alpha This is currently experimental and may change without a major version bump.\n */\nexport class AttachmentQueue {\n    /** Timer for periodic synchronization operations */\n    periodicSyncTimer;\n    /** Service for synchronizing attachments between local and remote storage */\n    syncingService;\n    /** Adapter for local file storage operations */\n    localStorage;\n    /** Adapter for remote file storage operations */\n    remoteStorage;\n    /**\n     * Callback function to watch for changes in attachment references in your data model.\n     *\n     * This should be implemented by the user of AttachmentQueue to monitor changes in your application's\n     * data that reference attachments. When attachments are added, removed, or modified,\n     * this callback should trigger the onUpdate function with the current set of attachments.\n     */\n    watchAttachments;\n    /** Name of the database table storing attachment records */\n    tableName;\n    /** Logger instance for diagnostic information */\n    logger;\n    /** Interval in milliseconds between periodic sync operations. Acts as a polling timer to retry\n     *  failed uploads/downloads, especially after the app goes offline. Default: 30000 (30 seconds) */\n    syncIntervalMs = 30 * 1000;\n    /** Throttle duration in milliseconds for the reactive watch query on the attachments table.\n     *  When attachment records change, a watch query detects the change and triggers a sync.\n     *  This throttle prevents the sync from firing too rapidly when many changes happen in\n     *  quick succession (e.g., bulk inserts). This is distinct from syncIntervalMs — it controls\n     *  how quickly the queue reacts to changes, while syncIntervalMs controls how often it polls\n     *  for retries. Default: 30 (from DEFAULT_WATCH_THROTTLE_MS) */\n    syncThrottleDuration;\n    /** Whether to automatically download remote attachments. Default: true */\n    downloadAttachments = true;\n    /** Maximum number of archived attachments to keep before cleanup. Default: 100 */\n    archivedCacheLimit;\n    /** Service for managing attachment-related database operations */\n    attachmentService;\n    /** PowerSync database instance */\n    db;\n    /** Cleanup function for status change listener */\n    statusListenerDispose;\n    watchActiveAttachments;\n    watchAttachmentsAbortController;\n    /**\n     * Creates a new AttachmentQueue instance.\n     *\n     * @param options - Configuration options\n     * @param options.db - PowerSync database instance\n     * @param options.remoteStorage - Remote storage adapter for upload/download operations\n     * @param options.localStorage - Local storage adapter for file persistence\n     * @param options.watchAttachments - Callback for monitoring attachment changes in your data model\n     * @param options.tableName - Name of the table to store attachment records. Default: 'ps_attachment_queue'\n     * @param options.logger - Logger instance. Defaults to db.logger\n     * @param options.syncIntervalMs - Periodic polling interval in milliseconds for retrying failed uploads/downloads. Default: 30000\n     * @param options.syncThrottleDuration - Throttle duration in milliseconds for the reactive watch query that detects attachment changes. Prevents rapid-fire syncs during bulk changes. Default: 30\n     * @param options.downloadAttachments - Whether to automatically download remote attachments. Default: true\n     * @param options.archivedCacheLimit - Maximum archived attachments before cleanup. Default: 100\n     */\n    constructor({ db, localStorage, remoteStorage, watchAttachments, logger, tableName = ATTACHMENT_TABLE, syncIntervalMs = 30 * 1000, syncThrottleDuration = DEFAULT_WATCH_THROTTLE_MS, downloadAttachments = true, archivedCacheLimit = 100, errorHandler }) {\n        this.db = db;\n        this.remoteStorage = remoteStorage;\n        this.localStorage = localStorage;\n        this.watchAttachments = watchAttachments;\n        this.tableName = tableName;\n        this.syncIntervalMs = syncIntervalMs;\n        this.syncThrottleDuration = syncThrottleDuration;\n        this.archivedCacheLimit = archivedCacheLimit;\n        this.downloadAttachments = downloadAttachments;\n        this.logger = logger ?? db.logger;\n        this.attachmentService = new AttachmentService(db, this.logger, tableName, archivedCacheLimit);\n        this.syncingService = new SyncingService(this.attachmentService, localStorage, remoteStorage, this.logger, errorHandler);\n    }\n    /**\n     * Generates a new attachment ID using a SQLite UUID function.\n     *\n     * @returns Promise resolving to the new attachment ID\n     */\n    async generateAttachmentId() {\n        return this.db.get('SELECT uuid() as id').then((row) => row.id);\n    }\n    /**\n     * Starts the attachment synchronization process.\n     *\n     * This method:\n     * - Stops any existing sync operations\n     * - Sets up periodic synchronization based on syncIntervalMs\n     * - Registers listeners for active attachment changes\n     * - Processes watched attachments to queue uploads/downloads\n     * - Handles state transitions for archived and new attachments\n     */\n    async startSync() {\n        await this.stopSync();\n        this.watchActiveAttachments = this.attachmentService.watchActiveAttachments({\n            throttleMs: this.syncThrottleDuration\n        });\n        // immediately invoke the sync storage to initialize local storage\n        await this.localStorage.initialize();\n        await this.verifyAttachments();\n        // Sync storage periodically\n        this.periodicSyncTimer = setInterval(async () => {\n            await this.syncStorage();\n        }, this.syncIntervalMs);\n        // Sync storage when there is a change in active attachments\n        this.watchActiveAttachments.registerListener({\n            onDiff: async () => {\n                await this.syncStorage();\n            }\n        });\n        this.statusListenerDispose = this.db.registerListener({\n            statusChanged: (status) => {\n                if (status.connected) {\n                    // Device came online, process attachments immediately\n                    this.syncStorage().catch((error) => {\n                        this.logger.error('Error syncing storage on connection:', error);\n                    });\n                }\n            }\n        });\n        this.watchAttachmentsAbortController = new AbortController();\n        const signal = this.watchAttachmentsAbortController.signal;\n        // Process attachments when there is a change in watched attachments\n        this.watchAttachments(async (watchedAttachments) => {\n            // Skip processing if sync has been stopped\n            if (signal.aborted) {\n                return;\n            }\n            await this.attachmentService.withContext(async (ctx) => {\n                // Need to get all the attachments which are tracked in the DB.\n                // We might need to restore an archived attachment.\n                const currentAttachments = await ctx.getAttachments();\n                const attachmentUpdates = [];\n                for (const watchedAttachment of watchedAttachments) {\n                    const existingQueueItem = currentAttachments.find((a) => a.id === watchedAttachment.id);\n                    if (!existingQueueItem) {\n                        // Item is watched but not in the queue yet. Need to add it.\n                        if (!this.downloadAttachments) {\n                            continue;\n                        }\n                        const filename = watchedAttachment.filename ?? `${watchedAttachment.id}.${watchedAttachment.fileExtension}`;\n                        attachmentUpdates.push({\n                            id: watchedAttachment.id,\n                            filename,\n                            state: AttachmentState.QUEUED_DOWNLOAD,\n                            hasSynced: false,\n                            metaData: watchedAttachment.metaData,\n                            timestamp: new Date().getTime()\n                        });\n                        continue;\n                    }\n                    if (existingQueueItem.state === AttachmentState.ARCHIVED) {\n                        // The attachment is present again. Need to queue it for sync.\n                        // We might be able to optimize this in future\n                        if (existingQueueItem.hasSynced === true) {\n                            // No remote action required, we can restore the record (avoids deletion)\n                            attachmentUpdates.push({\n                                ...existingQueueItem,\n                                state: AttachmentState.SYNCED\n                            });\n                        }\n                        else {\n                            // The localURI should be set if the record was meant to be uploaded\n                            // and hasSynced is false then\n                            // it must be an upload operation\n                            const newState = existingQueueItem.localUri == null ? AttachmentState.QUEUED_DOWNLOAD : AttachmentState.QUEUED_UPLOAD;\n                            attachmentUpdates.push({\n                                ...existingQueueItem,\n                                state: newState\n                            });\n                        }\n                    }\n                }\n                for (const attachment of currentAttachments) {\n                    const notInWatchedItems = watchedAttachments.find((i) => i.id === attachment.id) == null;\n                    if (notInWatchedItems) {\n                        switch (attachment.state) {\n                            case AttachmentState.QUEUED_DELETE:\n                            case AttachmentState.QUEUED_UPLOAD:\n                                // Only archive if it has synced\n                                if (attachment.hasSynced === true) {\n                                    attachmentUpdates.push({\n                                        ...attachment,\n                                        state: AttachmentState.ARCHIVED\n                                    });\n                                }\n                                break;\n                            default:\n                                // Archive other states such as QUEUED_DOWNLOAD\n                                attachmentUpdates.push({\n                                    ...attachment,\n                                    state: AttachmentState.ARCHIVED\n                                });\n                        }\n                    }\n                }\n                if (attachmentUpdates.length > 0) {\n                    await ctx.saveAttachments(attachmentUpdates);\n                }\n            });\n        }, signal);\n    }\n    /**\n     * Synchronizes all active attachments between local and remote storage.\n     *\n     * This is called automatically at regular intervals when sync is started,\n     * but can also be called manually to trigger an immediate sync.\n     */\n    async syncStorage() {\n        await this.attachmentService.withContext(async (ctx) => {\n            const activeAttachments = await ctx.getActiveAttachments();\n            await this.localStorage.initialize();\n            await this.syncingService.processAttachments(activeAttachments, ctx);\n            await this.syncingService.deleteArchivedAttachments(ctx);\n        });\n    }\n    /**\n     * Stops the attachment synchronization process.\n     *\n     * Clears the periodic sync timer and closes all active attachment watchers.\n     */\n    async stopSync() {\n        clearInterval(this.periodicSyncTimer);\n        this.periodicSyncTimer = undefined;\n        if (this.watchActiveAttachments)\n            await this.watchActiveAttachments.close();\n        if (this.watchAttachmentsAbortController) {\n            this.watchAttachmentsAbortController.abort();\n        }\n        if (this.statusListenerDispose) {\n            this.statusListenerDispose();\n            this.statusListenerDispose = undefined;\n        }\n    }\n    /**\n     * Saves a file to local storage and queues it for upload to remote storage.\n     *\n     * @param options - File save options\n     * @param options.data - The file data as ArrayBuffer, Blob, or base64 string\n     * @param options.fileExtension - File extension (e.g., 'jpg', 'pdf')\n     * @param options.mediaType - MIME type of the file (e.g., 'image/jpeg')\n     * @param options.metaData - Optional metadata to associate with the attachment\n     * @param options.id - Optional custom ID. If not provided, a UUID will be generated\n     * @param options.updateHook - Optional callback to execute additional database operations\n     *                             within the same transaction as the attachment creation\n     * @returns Promise resolving to the created attachment record\n     */\n    async saveFile({ data, fileExtension, mediaType, metaData, id, updateHook }) {\n        const resolvedId = id ?? (await this.generateAttachmentId());\n        const filename = `${resolvedId}.${fileExtension}`;\n        const localUri = this.localStorage.getLocalUri(filename);\n        const size = await this.localStorage.saveFile(localUri, data);\n        const attachment = {\n            id: resolvedId,\n            filename,\n            mediaType,\n            localUri,\n            state: AttachmentState.QUEUED_UPLOAD,\n            hasSynced: false,\n            size,\n            timestamp: new Date().getTime(),\n            metaData\n        };\n        await this.attachmentService.withContext(async (ctx) => {\n            await ctx.db.writeTransaction(async (tx) => {\n                await updateHook?.(tx, attachment);\n                await ctx.upsertAttachment(attachment, tx);\n            });\n        });\n        return attachment;\n    }\n    async deleteFile({ id, updateHook }) {\n        await this.attachmentService.withContext(async (ctx) => {\n            const attachment = await ctx.getAttachment(id);\n            if (!attachment) {\n                throw new Error(`Attachment with id ${id} not found`);\n            }\n            await ctx.db.writeTransaction(async (tx) => {\n                await updateHook?.(tx, attachment);\n                await ctx.upsertAttachment({\n                    ...attachment,\n                    state: AttachmentState.QUEUED_DELETE,\n                    hasSynced: false\n                }, tx);\n            });\n        });\n    }\n    async expireCache() {\n        let isDone = false;\n        while (!isDone) {\n            await this.attachmentService.withContext(async (ctx) => {\n                isDone = await this.syncingService.deleteArchivedAttachments(ctx);\n            });\n        }\n    }\n    async clearQueue() {\n        await this.attachmentService.withContext(async (ctx) => {\n            await ctx.clearQueue();\n        });\n        await this.localStorage.clear();\n    }\n    /**\n     * Verifies the integrity of all attachment records and repairs inconsistencies.\n     *\n     * This method checks each attachment record against the local filesystem and:\n     * - Updates localUri if the file exists at a different path\n     * - Archives attachments with missing local files that haven't been uploaded\n     * - Requeues synced attachments for download if their local files are missing\n     */\n    async verifyAttachments() {\n        await this.attachmentService.withContext(async (ctx) => {\n            const attachments = await ctx.getAttachments();\n            const updates = [];\n            for (const attachment of attachments) {\n                if (attachment.localUri == null) {\n                    continue;\n                }\n                const exists = await this.localStorage.fileExists(attachment.localUri);\n                if (exists) {\n                    // The file exists, this is correct\n                    continue;\n                }\n                const newLocalUri = this.localStorage.getLocalUri(attachment.filename);\n                const newExists = await this.localStorage.fileExists(newLocalUri);\n                if (newExists) {\n                    // The file exists locally but the localUri is broken, we update it.\n                    updates.push({\n                        ...attachment,\n                        localUri: newLocalUri\n                    });\n                }\n                else {\n                    // the file doesn't exist locally.\n                    if (attachment.state === AttachmentState.SYNCED) {\n                        // the file has been successfully synced to remote storage but is missing\n                        // we download it again\n                        updates.push({\n                            ...attachment,\n                            state: AttachmentState.QUEUED_DOWNLOAD,\n                            localUri: undefined\n                        });\n                    }\n                    else {\n                        // the file wasn't successfully synced to remote storage, we archive it\n                        updates.push({\n                            ...attachment,\n                            state: AttachmentState.ARCHIVED,\n                            localUri: undefined // Clears the value\n                        });\n                    }\n                }\n            }\n            await ctx.saveAttachments(updates);\n        });\n    }\n}\n//# sourceMappingURL=AttachmentQueue.js.map","export var EncodingType;\n(function (EncodingType) {\n    EncodingType[\"UTF8\"] = \"utf8\";\n    EncodingType[\"Base64\"] = \"base64\";\n})(EncodingType || (EncodingType = {}));\n//# sourceMappingURL=LocalStorageAdapter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass EventQueue {\n    constructor() {\n        this.pullQueue = [];\n        this.pushQueue = [];\n        this.eventHandlers = {};\n        this.isPaused = false;\n        this.isStopped = false;\n    }\n    push(value) {\n        if (this.isStopped)\n            return;\n        const resolution = { value, done: false };\n        if (this.pullQueue.length) {\n            const placeholder = this.pullQueue.shift();\n            if (placeholder)\n                placeholder.resolve(resolution);\n        }\n        else {\n            this.pushQueue.push(Promise.resolve(resolution));\n            if (this.highWaterMark !== undefined &&\n                this.pushQueue.length >= this.highWaterMark &&\n                !this.isPaused) {\n                this.isPaused = true;\n                if (this.eventHandlers.highWater) {\n                    this.eventHandlers.highWater();\n                }\n                else if (console) {\n                    console.warn(`EventIterator queue reached ${this.pushQueue.length} items`);\n                }\n            }\n        }\n    }\n    stop() {\n        if (this.isStopped)\n            return;\n        this.isStopped = true;\n        this.remove();\n        for (const placeholder of this.pullQueue) {\n            placeholder.resolve({ value: undefined, done: true });\n        }\n        this.pullQueue.length = 0;\n    }\n    fail(error) {\n        if (this.isStopped)\n            return;\n        this.isStopped = true;\n        this.remove();\n        if (this.pullQueue.length) {\n            for (const placeholder of this.pullQueue) {\n                placeholder.reject(error);\n            }\n            this.pullQueue.length = 0;\n        }\n        else {\n            const rejection = Promise.reject(error);\n            /* Attach error handler to avoid leaking an unhandled promise rejection. */\n            rejection.catch(() => { });\n            this.pushQueue.push(rejection);\n        }\n    }\n    remove() {\n        Promise.resolve().then(() => {\n            if (this.removeCallback)\n                this.removeCallback();\n        });\n    }\n    [Symbol.asyncIterator]() {\n        return {\n            next: (value) => {\n                const result = this.pushQueue.shift();\n                if (result) {\n                    if (this.lowWaterMark !== undefined &&\n                        this.pushQueue.length <= this.lowWaterMark &&\n                        this.isPaused) {\n                        this.isPaused = false;\n                        if (this.eventHandlers.lowWater) {\n                            this.eventHandlers.lowWater();\n                        }\n                    }\n                    return result;\n                }\n                else if (this.isStopped) {\n                    return Promise.resolve({ value: undefined, done: true });\n                }\n                else {\n                    return new Promise((resolve, reject) => {\n                        this.pullQueue.push({ resolve, reject });\n                    });\n                }\n            },\n            return: () => {\n                this.isStopped = true;\n                this.pushQueue.length = 0;\n                this.remove();\n                return Promise.resolve({ value: undefined, done: true });\n            },\n        };\n    }\n}\nclass EventIterator {\n    constructor(listen, { highWaterMark = 100, lowWaterMark = 1 } = {}) {\n        const queue = new EventQueue();\n        queue.highWaterMark = highWaterMark;\n        queue.lowWaterMark = lowWaterMark;\n        queue.removeCallback =\n            listen({\n                push: value => queue.push(value),\n                stop: () => queue.stop(),\n                fail: error => queue.fail(error),\n                on: (event, fn) => {\n                    queue.eventHandlers[event] = fn;\n                },\n            }) || (() => { });\n        this[Symbol.asyncIterator] = () => queue[Symbol.asyncIterator]();\n        Object.freeze(this);\n    }\n}\nexports.EventIterator = EventIterator;\nexports.default = EventIterator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst event_iterator_1 = require(\"./event-iterator\");\nexports.EventIterator = event_iterator_1.EventIterator;\nfunction subscribe(event, options, evOptions) {\n    return new event_iterator_1.EventIterator(({ push }) => {\n        this.addEventListener(event, push, options);\n        return () => this.removeEventListener(event, push, options);\n    }, evOptions);\n}\nexports.subscribe = subscribe;\nexports.default = event_iterator_1.EventIterator;\n","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.6.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.TRACE = defineLogLevel(1, 'TRACE');\r\n\tLogger.DEBUG = defineLogLevel(2, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(3, 'INFO');\r\n\tLogger.TIME = defineLogLevel(4, 'TIME');\r\n\tLogger.WARN = defineLogLevel(5, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info;  // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\ttrace: function () {\r\n\t\t\tthis.invoke(Logger.TRACE, arguments);\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.trace = bind(globalLogger, globalLogger.trace);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler.  The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance.  Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t} else if (context.level === Logger.TRACE && console.trace) {\r\n\t\t\t\t\thdlr = console.trace;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present).  The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Createa an alias to useDefaults to avoid reaking a react-hooks rule.\r\n\tLogger.setDefaults = Logger.useDefaults;\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n","/**\n * Set of generic interfaces to allow PowerSync compatibility with\n * different SQLite DB implementations.\n */\n/**\n * Implements {@link DBGetUtils} on a {@link SqlRunner}.\n */\nexport function DBGetUtilsDefaultMixin(Base) {\n    return class extends Base {\n        async getAll(sql, parameters) {\n            const res = await this.execute(sql, parameters);\n            return res.rows?._array ?? [];\n        }\n        async getOptional(sql, parameters) {\n            const res = await this.execute(sql, parameters);\n            return res.rows?.item(0) ?? null;\n        }\n        async get(sql, parameters) {\n            const res = await this.execute(sql, parameters);\n            const first = res.rows?.item(0);\n            if (!first) {\n                throw new Error('Result set is empty');\n            }\n            return first;\n        }\n        async executeBatch(query, params = []) {\n            // If this context can run batch statements natively, use that.\n            // @ts-ignore\n            if (super.executeBatch) {\n                // @ts-ignore\n                return super.executeBatch(query, params);\n            }\n            // Emulate executeBatch by running statements individually.\n            let lastInsertId;\n            let rowsAffected = 0;\n            for (const set of params) {\n                const result = await this.execute(query, set);\n                lastInsertId = result.insertId;\n                rowsAffected += result.rowsAffected;\n            }\n            return {\n                rowsAffected,\n                insertId: lastInsertId\n            };\n        }\n    };\n}\n/**\n * Update table operation numbers from SQLite\n */\nexport var RowUpdateType;\n(function (RowUpdateType) {\n    RowUpdateType[RowUpdateType[\"SQLITE_INSERT\"] = 18] = \"SQLITE_INSERT\";\n    RowUpdateType[RowUpdateType[\"SQLITE_DELETE\"] = 9] = \"SQLITE_DELETE\";\n    RowUpdateType[RowUpdateType[\"SQLITE_UPDATE\"] = 23] = \"SQLITE_UPDATE\";\n})(RowUpdateType || (RowUpdateType = {}));\n/**\n * A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool.readLock} and\n * {@link ConnectionPool.writeLock}.\n */\nexport function DBAdapterDefaultMixin(Base) {\n    return class extends Base {\n        readTransaction(fn, options) {\n            return this.readLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);\n        }\n        writeTransaction(fn, options) {\n            return this.writeLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);\n        }\n        getAll(sql, parameters) {\n            return this.readLock((ctx) => ctx.getAll(sql, parameters));\n        }\n        getOptional(sql, parameters) {\n            return this.readLock((ctx) => ctx.getOptional(sql, parameters));\n        }\n        get(sql, parameters) {\n            return this.readLock((ctx) => ctx.get(sql, parameters));\n        }\n        execute(query, params) {\n            return this.writeLock((ctx) => ctx.execute(query, params));\n        }\n        executeRaw(query, params) {\n            return this.writeLock((ctx) => ctx.executeRaw(query, params));\n        }\n        executeBatch(query, params) {\n            return this.writeTransaction((tx) => tx.executeBatch(query, params));\n        }\n    };\n}\nclass BaseTransaction {\n    inner;\n    finalized = false;\n    constructor(inner) {\n        this.inner = inner;\n    }\n    async commit() {\n        if (this.finalized) {\n            return { rowsAffected: 0 };\n        }\n        this.finalized = true;\n        return this.inner.execute('COMMIT');\n    }\n    async rollback() {\n        if (this.finalized) {\n            return { rowsAffected: 0 };\n        }\n        this.finalized = true;\n        return this.inner.execute('ROLLBACK');\n    }\n    execute(query, params) {\n        return this.inner.execute(query, params);\n    }\n    executeRaw(query, params) {\n        return this.inner.executeRaw(query, params);\n    }\n    executeBatch(query, params) {\n        return this.inner.executeBatch(query, params);\n    }\n}\nclass TransactionImplementation extends DBGetUtilsDefaultMixin(BaseTransaction) {\n    static async runWith(ctx, fn) {\n        let tx = new TransactionImplementation(ctx);\n        try {\n            await ctx.execute('BEGIN IMMEDIATE');\n            const result = await fn(tx);\n            await tx.commit();\n            return result;\n        }\n        catch (ex) {\n            try {\n                await tx.rollback();\n            }\n            catch (ex2) {\n                // In rare cases, a rollback may fail.\n                // Safe to ignore.\n            }\n            throw ex;\n        }\n    }\n}\nexport function isBatchedUpdateNotification(update) {\n    return 'tables' in update;\n}\nexport function extractTableUpdates(update) {\n    return isBatchedUpdateNotification(update) ? update.tables : [update.table];\n}\n//# sourceMappingURL=DBAdapter.js.map","/**\n * @internal The priority used by the core extension to indicate that a full sync was completed.\n */\nexport const FULL_SYNC_PRIORITY = 2147483647;\n/**\n * Provides realtime progress on how PowerSync is downloading rows.\n *\n * The progress until the next complete sync is available through the fields on {@link ProgressWithOperations},\n * which this class implements.\n * Additionally, the {@link SyncProgress.untilPriority} method can be used to otbain progress towards\n * a specific priority (instead of the progress for the entire download).\n *\n * The reported progress always reflects the status towards the end of a sync iteration (after\n * which a consistent snapshot of all buckets is available locally).\n *\n * In rare cases (in particular, when a [compacting](https://docs.powersync.com/usage/lifecycle-maintenance/compacting-buckets)\n * operation takes place between syncs), it's possible for the returned numbers to be slightly\n * inaccurate. For this reason, {@link SyncProgress} should be seen as an approximation of progress.\n * The information returned is good enough to build progress bars, but not exact enough to track\n * individual download counts.\n *\n * Also note that data is downloaded in bulk, which means that individual counters are unlikely\n * to be updated one-by-one.\n */\nexport class SyncProgress {\n    internal;\n    totalOperations;\n    downloadedOperations;\n    downloadedFraction;\n    constructor(internal) {\n        this.internal = internal;\n        const untilCompletion = this.untilPriority(FULL_SYNC_PRIORITY);\n        this.totalOperations = untilCompletion.totalOperations;\n        this.downloadedOperations = untilCompletion.downloadedOperations;\n        this.downloadedFraction = untilCompletion.downloadedFraction;\n    }\n    /**\n     * Returns download progress towards all data up until the specified priority being received.\n     *\n     * The returned {@link ProgressWithOperations} tracks the target amount of operations that need\n     * to be downloaded in total and how many of them have already been received.\n     */\n    untilPriority(priority) {\n        let total = 0;\n        let downloaded = 0;\n        for (const progress of Object.values(this.internal)) {\n            // Include higher-priority buckets, which are represented by lower numbers.\n            if (progress.priority <= priority) {\n                downloaded += progress.since_last;\n                total += progress.target_count - progress.at_last;\n            }\n        }\n        let progress = total == 0 ? 0.0 : downloaded / total;\n        return {\n            totalOperations: total,\n            downloadedOperations: downloaded,\n            downloadedFraction: progress\n        };\n    }\n}\n//# sourceMappingURL=SyncProgress.js.map","import { SyncProgress } from './SyncProgress.js';\nexport class SyncStatus {\n    options;\n    constructor(options) {\n        this.options = options;\n    }\n    /**\n     * Returns the used sync client implementation (either the one implemented in JavaScript or the newer Rust-based\n     * implementation).\n     *\n     * This information is only available after a connection has been requested.\n     */\n    get clientImplementation() {\n        return this.options.clientImplementation;\n    }\n    /**\n     * Indicates if the client is currently connected to the PowerSync service.\n     *\n     * @returns {boolean} True if connected, false otherwise. Defaults to false if not specified.\n     */\n    get connected() {\n        return this.options.connected ?? false;\n    }\n    /**\n     * Indicates if the client is in the process of establishing a connection to the PowerSync service.\n     *\n     * @returns {boolean} True if connecting, false otherwise. Defaults to false if not specified.\n     */\n    get connecting() {\n        return this.options.connecting ?? false;\n    }\n    /**\n     * Time that a last sync has fully completed, if any.\n     * This timestamp is reset to null after a restart of the PowerSync service.\n     *\n     * @returns {Date | undefined} The timestamp of the last successful sync, or undefined if no sync has completed.\n     */\n    get lastSyncedAt() {\n        return this.options.lastSyncedAt;\n    }\n    /**\n     * Indicates whether there has been at least one full sync completed since initialization.\n     *\n     * @returns {boolean | undefined} True if at least one sync has completed, false if no sync has completed,\n     * or undefined when the state is still being loaded from the database.\n     */\n    get hasSynced() {\n        return this.options.hasSynced;\n    }\n    /**\n     * Provides the current data flow status regarding uploads and downloads.\n     *\n     * @returns {SyncDataFlowStatus} An object containing:\n     * - downloading: True if actively downloading changes (only when connected is also true)\n     * - uploading: True if actively uploading changes\n     * Defaults to {downloading: false, uploading: false} if not specified.\n     */\n    get dataFlowStatus() {\n        return (this.options.dataFlow ?? {\n            /**\n             * true if actively downloading changes.\n             * This is only true when {@link connected} is also true.\n             */\n            downloading: false,\n            /**\n             * true if uploading changes.\n             */\n            uploading: false\n        });\n    }\n    /**\n     * All sync streams currently being tracked in teh database.\n     *\n     * This returns null when the database is currently being opened and we don't have reliable information about all\n     * included streams yet.\n     *\n     * @experimental Sync streams are currently in alpha.\n     */\n    get syncStreams() {\n        return this.options.dataFlow?.internalStreamSubscriptions?.map((core) => new SyncStreamStatusView(this, core));\n    }\n    /**\n     * If the `stream` appears in {@link syncStreams}, returns the current status for that stream.\n     *\n     * @experimental Sync streams are currently in alpha.\n     */\n    forStream(stream) {\n        const asJson = JSON.stringify(stream.parameters);\n        const raw = this.options.dataFlow?.internalStreamSubscriptions?.find((r) => r.name == stream.name && asJson == JSON.stringify(r.parameters));\n        return raw && new SyncStreamStatusView(this, raw);\n    }\n    /**\n     * Provides sync status information for all bucket priorities, sorted by priority (highest first).\n     *\n     * @returns {SyncPriorityStatus[]} An array of status entries for different sync priority levels,\n     * sorted with highest priorities (lower numbers) first.\n     */\n    get priorityStatusEntries() {\n        return (this.options.priorityStatusEntries ?? []).slice().sort(SyncStatus.comparePriorities);\n    }\n    /**\n     * A realtime progress report on how many operations have been downloaded and\n     * how many are necessary in total to complete the next sync iteration.\n     *\n     * This field is only set when {@link SyncDataFlowStatus#downloading} is also true.\n     */\n    get downloadProgress() {\n        const internalProgress = this.options.dataFlow?.downloadProgress;\n        if (internalProgress == null) {\n            return null;\n        }\n        return new SyncProgress(internalProgress);\n    }\n    /**\n     * Reports the sync status (a pair of {@link SyncStatus#hasSynced} and {@link SyncStatus#lastSyncedAt} fields)\n     * for a specific bucket priority level.\n     *\n     * When buckets with different priorities are declared, PowerSync may choose to synchronize higher-priority\n     * buckets first. When a consistent view over all buckets for all priorities up until the given priority is\n     * reached, PowerSync makes data from those buckets available before lower-priority buckets have finished\n     * syncing.\n     *\n     * This method returns the status for the requested priority or the next higher priority level that has\n     * status information available. This is because when PowerSync makes data for a given priority available,\n     * all buckets in higher-priorities are guaranteed to be consistent with that checkpoint.\n     *\n     * For example, if PowerSync just finished synchronizing buckets in priority level 3, calling this method\n     * with a priority of 1 may return information for priority level 3.\n     *\n     * @param {number} priority The bucket priority for which the status should be reported\n     * @returns {SyncPriorityStatus} Status information for the requested priority level or the next higher level with available status\n     */\n    statusForPriority(priority) {\n        // priorityStatusEntries are sorted by ascending priorities (so higher numbers to lower numbers).\n        for (const known of this.priorityStatusEntries) {\n            // We look for the first entry that doesn't have a higher priority.\n            if (known.priority >= priority) {\n                return known;\n            }\n        }\n        // If we have a complete sync, that necessarily includes all priorities.\n        return {\n            priority,\n            lastSyncedAt: this.lastSyncedAt,\n            hasSynced: this.hasSynced\n        };\n    }\n    /**\n     * Compares this SyncStatus instance with another to determine if they are equal.\n     * Equality is determined by comparing the serialized JSON representation of both instances.\n     *\n     * @param {SyncStatus} status The SyncStatus instance to compare against\n     * @returns {boolean} True if the instances are considered equal, false otherwise\n     */\n    isEqual(status) {\n        /**\n         * By default Error object are serialized to an empty object.\n         * This replaces Errors with more useful information before serialization.\n         */\n        const replacer = (_, value) => {\n            if (value instanceof Error) {\n                return {\n                    name: value.name,\n                    message: value.message,\n                    stack: value.stack\n                };\n            }\n            return value;\n        };\n        return JSON.stringify(this.options, replacer) == JSON.stringify(status.options, replacer);\n    }\n    /**\n     * Creates a human-readable string representation of the current sync status.\n     * Includes information about connection state, sync completion, and data flow.\n     *\n     * @returns {string} A string representation of the sync status\n     */\n    getMessage() {\n        const dataFlow = this.dataFlowStatus;\n        return `SyncStatus<connected: ${this.connected} connecting: ${this.connecting} lastSyncedAt: ${this.lastSyncedAt} hasSynced: ${this.hasSynced}. Downloading: ${dataFlow.downloading}. Uploading: ${dataFlow.uploading}. UploadError: ${dataFlow.uploadError}, DownloadError?: ${dataFlow.downloadError}>`;\n    }\n    /**\n     * Serializes the SyncStatus instance to a plain object.\n     *\n     * @returns {SyncStatusOptions} A plain object representation of the sync status\n     */\n    toJSON() {\n        return {\n            connected: this.connected,\n            connecting: this.connecting,\n            dataFlow: {\n                ...this.dataFlowStatus,\n                uploadError: this.serializeError(this.dataFlowStatus.uploadError),\n                downloadError: this.serializeError(this.dataFlowStatus.downloadError)\n            },\n            lastSyncedAt: this.lastSyncedAt,\n            hasSynced: this.hasSynced,\n            priorityStatusEntries: this.priorityStatusEntries\n        };\n    }\n    /**\n     * Not all errors are serializable over a MessagePort. E.g. some `DomExceptions` fail to be passed across workers.\n     * This explicitly serializes errors in the SyncStatus.\n     */\n    serializeError(error) {\n        if (typeof error == 'undefined') {\n            return undefined;\n        }\n        return {\n            name: error.name,\n            message: error.message,\n            stack: error.stack\n        };\n    }\n    static comparePriorities(a, b) {\n        return b.priority - a.priority; // Reverse because higher priorities have lower numbers\n    }\n}\nclass SyncStreamStatusView {\n    status;\n    core;\n    subscription;\n    constructor(status, core) {\n        this.status = status;\n        this.core = core;\n        this.subscription = {\n            name: core.name,\n            parameters: core.parameters,\n            active: core.active,\n            isDefault: core.is_default,\n            hasExplicitSubscription: core.has_explicit_subscription,\n            expiresAt: core.expires_at != null ? new Date(core.expires_at * 1000) : null,\n            hasSynced: core.last_synced_at != null,\n            lastSyncedAt: core.last_synced_at != null ? new Date(core.last_synced_at * 1000) : null\n        };\n    }\n    get progress() {\n        if (this.status.dataFlowStatus.downloadProgress == null) {\n            // Don't make download progress public if we're not currently downloading.\n            return null;\n        }\n        const { total, downloaded } = this.core.progress;\n        const progress = total == 0 ? 0.0 : downloaded / total;\n        return { totalOperations: total, downloadedOperations: downloaded, downloadedFraction: progress };\n    }\n    get priority() {\n        return this.core.priority;\n    }\n}\n//# sourceMappingURL=SyncStatus.js.map","export class UploadQueueStats {\n    count;\n    size;\n    constructor(\n    /**\n     * Number of records in the upload queue.\n     */\n    count, \n    /**\n     * Size of the upload queue in bytes.\n     */\n    size = null) {\n        this.count = count;\n        this.size = size;\n    }\n    toString() {\n        if (this.size == null) {\n            return `UploadQueueStats<count:${this.count}>`;\n        }\n        else {\n            return `UploadQueueStats<count: $count size: ${this.size / 1024}kB>`;\n        }\n    }\n}\n//# sourceMappingURL=UploadQueueStatus.js.map","export class BaseObserver {\n    listeners = new Set();\n    constructor() { }\n    dispose() {\n        this.listeners.clear();\n    }\n    /**\n     * Register a listener for updates to the PowerSync client.\n     */\n    registerListener(listener) {\n        this.listeners.add(listener);\n        return () => {\n            this.listeners.delete(listener);\n        };\n    }\n    iterateListeners(cb) {\n        for (const listener of this.listeners) {\n            cb(listener);\n        }\n    }\n    async iterateAsyncListeners(cb) {\n        for (let i of Array.from(this.listeners.values())) {\n            await cb(i);\n        }\n    }\n}\n//# sourceMappingURL=BaseObserver.js.map","export class ControlledExecutor {\n    task;\n    /**\n     * Represents the currently running task, which could be a Promise or undefined if no task is running.\n     */\n    runningTask;\n    pendingTaskParam;\n    /**\n     * Flag to determine if throttling is enabled, which controls whether tasks are queued or run immediately.\n     */\n    isThrottling;\n    closed;\n    constructor(task, options) {\n        this.task = task;\n        const { throttleEnabled = true } = options ?? {};\n        this.isThrottling = throttleEnabled;\n        this.closed = false;\n    }\n    schedule(param) {\n        if (this.closed) {\n            return;\n        }\n        if (!this.isThrottling) {\n            this.task(param);\n            return;\n        }\n        if (this.runningTask) {\n            // set or replace the pending task param with latest one\n            this.pendingTaskParam = param;\n            return;\n        }\n        this.execute(param);\n    }\n    dispose() {\n        this.closed = true;\n        if (this.runningTask) {\n            this.runningTask = undefined;\n        }\n    }\n    async execute(param) {\n        this.runningTask = this.task(param);\n        await this.runningTask;\n        this.runningTask = undefined;\n        if (this.pendingTaskParam) {\n            const pendingParam = this.pendingTaskParam;\n            this.pendingTaskParam = undefined;\n            this.execute(pendingParam);\n        }\n    }\n}\n//# sourceMappingURL=ControlledExecutor.js.map","/**\n * Throttle a function to be called at most once every \"wait\" milliseconds,\n * on the trailing edge.\n *\n * Roughly equivalent to lodash/throttle with {leading: false, trailing: true}\n */\nexport function throttleTrailing(func, wait) {\n    let timeoutId = null;\n    const later = () => {\n        func();\n        timeoutId = null;\n    };\n    return function () {\n        if (timeoutId == null) {\n            timeoutId = setTimeout(later, wait);\n        }\n    };\n}\n/**\n * Throttle a function to be called at most once every \"wait\" milliseconds,\n * on the leading and trailing edge.\n *\n * Roughly equivalent to lodash/throttle with {leading: true, trailing: true}\n */\nexport function throttleLeadingTrailing(func, wait) {\n    let timeoutId = null;\n    let lastCallTime = 0;\n    const invokeFunction = () => {\n        func();\n        lastCallTime = Date.now();\n        timeoutId = null;\n    };\n    return function () {\n        const now = Date.now();\n        const timeToWait = wait - (now - lastCallTime);\n        if (timeToWait <= 0) {\n            // Leading edge: Call the function immediately if enough time has passed\n            invokeFunction();\n        }\n        else if (!timeoutId) {\n            // Set a timeout for the trailing edge if not already set\n            timeoutId = setTimeout(invokeFunction, timeToWait);\n        }\n    };\n}\n//# sourceMappingURL=async.js.map","import { BaseObserver } from '../utils/BaseObserver.js';\n/**\n * @internal\n */\nexport class ConnectionManager extends BaseObserver {\n    options;\n    /**\n     * Tracks active connection attempts\n     */\n    connectingPromise;\n    /**\n     * Tracks actively instantiating a streaming sync implementation.\n     */\n    syncStreamInitPromise;\n    /**\n     * Active disconnect operation. Calling disconnect multiple times\n     * will resolve to the same operation.\n     */\n    disconnectingPromise;\n    /**\n     * Tracks the last parameters supplied to `connect` calls.\n     * Calling `connect` multiple times in succession will result in:\n     * - 1 pending connection operation which will be aborted.\n     * - updating the last set of parameters while waiting for the pending\n     *   attempt to be aborted\n     * - internally connecting with the last set of parameters\n     */\n    pendingConnectionOptions;\n    syncStreamImplementation;\n    /**\n     * Additional cleanup function which is called after the sync stream implementation\n     * is disposed.\n     */\n    syncDisposer;\n    /**\n     * Subscriptions managed in this connection manager.\n     *\n     * On the web, these local subscriptions are merged across tabs by a shared worker.\n     */\n    locallyActiveSubscriptions = new Map();\n    constructor(options) {\n        super();\n        this.options = options;\n        this.connectingPromise = null;\n        this.syncStreamInitPromise = null;\n        this.disconnectingPromise = null;\n        this.pendingConnectionOptions = null;\n        this.syncStreamImplementation = null;\n        this.syncDisposer = null;\n    }\n    get connector() {\n        return this.pendingConnectionOptions?.connector ?? null;\n    }\n    get connectionOptions() {\n        return this.pendingConnectionOptions?.options ?? null;\n    }\n    get logger() {\n        return this.options.logger;\n    }\n    async close() {\n        await this.syncStreamImplementation?.dispose();\n        await this.syncDisposer?.();\n    }\n    async connect(connector, options) {\n        // Keep track if there were pending operations before this call\n        const hadPendingOptions = !!this.pendingConnectionOptions;\n        // Update pending options to the latest values\n        this.pendingConnectionOptions = {\n            connector,\n            options\n        };\n        // Disconnecting here provides aborting in progress connection attempts.\n        // The connectInternal method will clear pending options once it starts connecting (with the options).\n        // We only need to trigger a disconnect here if we have already reached the point of connecting.\n        // If we do already have pending options, a disconnect has already been performed.\n        // The connectInternal method also does a sanity disconnect to prevent straggler connections.\n        // We should also disconnect if we have already completed a connection attempt.\n        if (!hadPendingOptions || this.syncStreamImplementation) {\n            await this.disconnectInternal();\n        }\n        // Triggers a connect which checks if pending options are available after the connect completes.\n        // The completion can be for a successful, unsuccessful or aborted connection attempt.\n        // If pending options are available another connection will be triggered.\n        const checkConnection = async () => {\n            if (this.pendingConnectionOptions) {\n                // Pending options have been placed while connecting.\n                // Need to reconnect.\n                this.connectingPromise = this.connectInternal()\n                    .catch(() => { })\n                    .finally(checkConnection);\n                return this.connectingPromise;\n            }\n            else {\n                // Clear the connecting promise, done.\n                this.connectingPromise = null;\n                return;\n            }\n        };\n        this.connectingPromise ??= this.connectInternal()\n            .catch(() => { })\n            .finally(checkConnection);\n        return this.connectingPromise;\n    }\n    async connectInternal() {\n        let appliedOptions = null;\n        // This method ensures a disconnect before any connection attempt\n        await this.disconnectInternal();\n        /**\n         * This portion creates a sync implementation which can be racy when disconnecting or\n         * if multiple tabs on web are in use.\n         * This is protected in an exclusive lock.\n         * The promise tracks the creation which is used to synchronize disconnect attempts.\n         */\n        this.syncStreamInitPromise = new Promise(async (resolve, reject) => {\n            try {\n                if (!this.pendingConnectionOptions) {\n                    this.logger.debug('No pending connection options found, not creating sync stream implementation');\n                    // A disconnect could have cleared this.\n                    resolve();\n                    return;\n                }\n                if (this.disconnectingPromise) {\n                    resolve();\n                    return;\n                }\n                const { connector, options } = this.pendingConnectionOptions;\n                appliedOptions = options;\n                this.pendingConnectionOptions = null;\n                const { sync, onDispose } = await this.options.createSyncImplementation(connector, {\n                    subscriptions: this.activeStreams,\n                    ...options\n                });\n                this.iterateListeners((l) => l.syncStreamCreated?.(sync));\n                this.syncStreamImplementation = sync;\n                this.syncDisposer = onDispose;\n                await this.syncStreamImplementation.waitForReady();\n                resolve();\n            }\n            catch (error) {\n                reject(error);\n            }\n        });\n        await this.syncStreamInitPromise;\n        this.syncStreamInitPromise = null;\n        if (!appliedOptions) {\n            // A disconnect could have cleared the options which did not create a syncStreamImplementation\n            return;\n        }\n        // It might be possible that a disconnect triggered between the last check\n        // and this point. Awaiting here allows the sync stream to be cleared if disconnected.\n        await this.disconnectingPromise;\n        this.logger.debug('Attempting to connect to PowerSync instance');\n        await this.syncStreamImplementation?.connect(appliedOptions);\n    }\n    /**\n     * Close the sync connection.\n     *\n     * Use {@link connect} to connect again.\n     */\n    async disconnect() {\n        // This will help abort pending connects\n        this.pendingConnectionOptions = null;\n        await this.disconnectInternal();\n    }\n    async disconnectInternal() {\n        if (this.disconnectingPromise) {\n            // A disconnect is already in progress\n            return this.disconnectingPromise;\n        }\n        this.disconnectingPromise = this.performDisconnect();\n        await this.disconnectingPromise;\n        this.disconnectingPromise = null;\n    }\n    async performDisconnect() {\n        // Wait if a sync stream implementation is being created before closing it\n        // (syncStreamImplementation must be assigned before we can properly dispose it)\n        await this.syncStreamInitPromise;\n        // Keep reference to the sync stream implementation and disposer\n        // The class members will be cleared before we trigger the disconnect\n        // to prevent any further calls to the sync stream implementation.\n        const sync = this.syncStreamImplementation;\n        this.syncStreamImplementation = null;\n        const disposer = this.syncDisposer;\n        this.syncDisposer = null;\n        await sync?.disconnect();\n        await sync?.dispose();\n        await disposer?.();\n    }\n    stream(adapter, name, parameters) {\n        const desc = { name, parameters };\n        const waitForFirstSync = (abort) => {\n            return adapter.firstStatusMatching((s) => s.forStream(desc)?.subscription.hasSynced, abort);\n        };\n        return {\n            ...desc,\n            subscribe: async (options) => {\n                // NOTE: We also run this command if a subscription already exists, because this increases the expiry date\n                // (relevant if the app is closed before connecting again, where the last subscribe call determines the ttl).\n                await adapter.rustSubscriptionsCommand({\n                    subscribe: {\n                        stream: {\n                            name,\n                            params: parameters\n                        },\n                        ttl: options?.ttl,\n                        priority: options?.priority\n                    }\n                });\n                if (!this.syncStreamImplementation) {\n                    // We're not connected. So, update the offline sync status to reflect the new subscription.\n                    // (With an active iteration, the sync client would include it in its state).\n                    await adapter.resolveOfflineSyncStatus();\n                }\n                const key = `${name}|${JSON.stringify(parameters)}`;\n                let subscription = this.locallyActiveSubscriptions.get(key);\n                if (subscription == null) {\n                    const clearSubscription = () => {\n                        this.locallyActiveSubscriptions.delete(key);\n                        this.subscriptionsMayHaveChanged();\n                    };\n                    subscription = new ActiveSubscription(name, parameters, this.logger, waitForFirstSync, clearSubscription);\n                    this.locallyActiveSubscriptions.set(key, subscription);\n                    this.subscriptionsMayHaveChanged();\n                }\n                return new SyncStreamSubscriptionHandle(subscription);\n            },\n            unsubscribeAll: async () => {\n                await adapter.rustSubscriptionsCommand({ unsubscribe: { name, params: parameters } });\n                this.subscriptionsMayHaveChanged();\n            }\n        };\n    }\n    /**\n     * @internal exposed for testing\n     */\n    get activeStreams() {\n        return [...this.locallyActiveSubscriptions.values()].map((a) => ({ name: a.name, params: a.parameters }));\n    }\n    subscriptionsMayHaveChanged() {\n        this.syncStreamImplementation?.updateSubscriptions(this.activeStreams);\n    }\n}\nclass ActiveSubscription {\n    name;\n    parameters;\n    logger;\n    waitForFirstSync;\n    clearSubscription;\n    refcount = 0;\n    constructor(name, parameters, logger, waitForFirstSync, clearSubscription) {\n        this.name = name;\n        this.parameters = parameters;\n        this.logger = logger;\n        this.waitForFirstSync = waitForFirstSync;\n        this.clearSubscription = clearSubscription;\n    }\n    decrementRefCount() {\n        this.refcount--;\n        if (this.refcount == 0) {\n            this.clearSubscription();\n        }\n    }\n}\nclass SyncStreamSubscriptionHandle {\n    subscription;\n    active = true;\n    constructor(subscription) {\n        this.subscription = subscription;\n        subscription.refcount++;\n        _finalizer?.register(this, subscription);\n    }\n    get name() {\n        return this.subscription.name;\n    }\n    get parameters() {\n        return this.subscription.parameters;\n    }\n    waitForFirstSync(abort) {\n        return this.subscription.waitForFirstSync(abort);\n    }\n    unsubscribe() {\n        if (this.active) {\n            this.active = false;\n            _finalizer?.unregister(this);\n            this.subscription.decrementRefCount();\n        }\n    }\n}\nconst _finalizer = 'FinalizationRegistry' in globalThis\n    ? new FinalizationRegistry((sub) => {\n        sub.logger.warn(`A subscription to ${sub.name} with params ${JSON.stringify(sub.parameters)} leaked! Please ensure calling unsubscribe() when you don't need a subscription anymore. For global subscriptions, consider storing them in global fields to avoid this warning.`);\n    })\n    : null;\n//# sourceMappingURL=ConnectionManager.js.map","/**\n * An efficient comparator for {@link WatchedQuery} created with {@link Query#watch}. This has the ability to determine if a query\n * result has changes without necessarily processing all items in the result.\n */\nexport class ArrayComparator {\n    options;\n    constructor(options) {\n        this.options = options;\n    }\n    checkEquality(current, previous) {\n        if (current.length === 0 && previous.length === 0) {\n            return true;\n        }\n        if (current.length !== previous.length) {\n            return false;\n        }\n        const { compareBy } = this.options;\n        // At this point the lengths are equal\n        for (let i = 0; i < current.length; i++) {\n            const currentItem = compareBy(current[i]);\n            const previousItem = compareBy(previous[i]);\n            if (currentItem !== previousItem) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n/**\n * Watched query comparator that always reports changed result sets.\n */\nexport const FalsyComparator = {\n    checkEquality: () => false // Default comparator that always returns false\n};\n//# sourceMappingURL=comparators.js.map","import { BaseObserver } from './BaseObserver.js';\n/**\n * A BaseObserver that tracks the counts of listeners for each event type.\n */\nexport class MetaBaseObserver extends BaseObserver {\n    get listenerCounts() {\n        const counts = {};\n        let total = 0;\n        for (const listener of this.listeners) {\n            for (const key in listener) {\n                if (listener[key]) {\n                    counts[key] = (counts[key] ?? 0) + 1;\n                    total++;\n                }\n            }\n        }\n        return {\n            ...counts,\n            total\n        };\n    }\n    get listenerMeta() {\n        return {\n            counts: this.listenerCounts,\n            // Allows registering a meta listener that will be notified of changes in listener counts\n            registerListener: (listener) => {\n                return this.metaListener.registerListener(listener);\n            }\n        };\n    }\n    metaListener;\n    constructor() {\n        super();\n        this.metaListener = new BaseObserver();\n    }\n    registerListener(listener) {\n        const dispose = super.registerListener(listener);\n        const updatedCount = this.listenerCounts;\n        this.metaListener.iterateListeners((l) => {\n            l.listenersChanged?.(updatedCount);\n        });\n        return () => {\n            dispose();\n            const updatedCount = this.listenerCounts;\n            this.metaListener.iterateListeners((l) => {\n                l.listenersChanged?.(updatedCount);\n            });\n        };\n    }\n}\n//# sourceMappingURL=MetaBaseObserver.js.map","import { MetaBaseObserver } from '../../../utils/MetaBaseObserver.js';\nimport { WatchedQueryListenerEvent } from '../WatchedQuery.js';\n/**\n * Performs underlying watching and yields a stream of results.\n * @internal\n */\nexport class AbstractQueryProcessor extends MetaBaseObserver {\n    options;\n    state;\n    abortController;\n    initialized;\n    _closed;\n    disposeListeners;\n    get closed() {\n        return this._closed;\n    }\n    constructor(options) {\n        super();\n        this.options = options;\n        this.abortController = new AbortController();\n        this._closed = false;\n        this.state = this.constructInitialState();\n        this.disposeListeners = null;\n        this.initialized = this.init(this.abortController.signal);\n    }\n    constructInitialState() {\n        return {\n            isLoading: true,\n            isFetching: this.reportFetching, // Only set to true if we will report updates in future\n            error: null,\n            lastUpdated: null,\n            data: this.options.placeholderData\n        };\n    }\n    get reportFetching() {\n        return this.options.watchOptions.reportFetching ?? true;\n    }\n    async updateSettingsInternal(settings, signal) {\n        // This may have been aborted while awaiting or if multiple calls to `updateSettings` were made\n        if (this._closed || signal.aborted) {\n            return;\n        }\n        this.options.watchOptions = settings;\n        this.iterateListeners((l) => l[WatchedQueryListenerEvent.SETTINGS_WILL_UPDATE]?.());\n        if (!this.state.isFetching && this.reportFetching) {\n            await this.updateState({\n                isFetching: true\n            });\n        }\n        await this.runWithReporting(() => this.linkQuery({\n            abortSignal: signal,\n            settings\n        }));\n    }\n    /**\n     * Updates the underlying query.\n     */\n    async updateSettings(settings) {\n        // Abort the previous request\n        this.abortController.abort();\n        // Keep track of this controller's abort status\n        const abortController = new AbortController();\n        // Allow this to be aborted externally\n        this.abortController = abortController;\n        await this.initialized;\n        return this.updateSettingsInternal(settings, abortController.signal);\n    }\n    async updateState(update) {\n        if (this._closed) {\n            return;\n        }\n        if (typeof update.error !== 'undefined') {\n            await this.iterateAsyncListenersWithError(async (l) => l.onError?.(update.error));\n            // An error always stops for the current fetching state\n            update.isFetching = false;\n            update.isLoading = false;\n        }\n        Object.assign(this.state, { lastUpdated: new Date() }, update);\n        if (typeof update.data !== 'undefined') {\n            await this.iterateAsyncListenersWithError(async (l) => l.onData?.(this.state.data));\n        }\n        await this.iterateAsyncListenersWithError(async (l) => l.onStateChange?.(this.state));\n    }\n    /**\n     * Configures base DB listeners and links the query to listeners.\n     */\n    async init(signal) {\n        const { db } = this.options;\n        const disposeCloseListener = db.registerListener({\n            closing: async () => {\n                await this.close();\n            }\n        });\n        // Wait for the schema to be set before listening to changes\n        await db.waitForReady();\n        const disposeSchemaListener = db.registerListener({\n            schemaChanged: async () => {\n                await this.runWithReporting(async () => {\n                    await this.updateSettings(this.options.watchOptions);\n                });\n            }\n        });\n        this.disposeListeners = () => {\n            disposeCloseListener();\n            disposeSchemaListener();\n        };\n        // Initial setup\n        await this.runWithReporting(async () => {\n            await this.updateSettingsInternal(this.options.watchOptions, signal);\n        });\n    }\n    async close() {\n        this._closed = true;\n        this.abortController.abort();\n        this.disposeListeners?.();\n        this.disposeListeners = null;\n        this.iterateListeners((l) => l.closed?.());\n        this.listeners.clear();\n    }\n    /**\n     * Runs a callback and reports errors to the error listeners.\n     */\n    async runWithReporting(callback) {\n        try {\n            await callback();\n        }\n        catch (error) {\n            // This will update the error on the state and iterate error listeners\n            await this.updateState({ error });\n        }\n    }\n    /**\n     * Iterate listeners and reports errors to onError handlers.\n     */\n    async iterateAsyncListenersWithError(callback) {\n        try {\n            await this.iterateAsyncListeners(async (l) => callback(l));\n        }\n        catch (error) {\n            try {\n                await this.iterateAsyncListeners(async (l) => l.onError?.(error));\n            }\n            catch (error) {\n                // Errors here are ignored\n                // since we are already in an error state\n                this.options.db.logger.error('Watched query error handler threw an Error', error);\n            }\n        }\n    }\n}\n//# sourceMappingURL=AbstractQueryProcessor.js.map","import { AbstractQueryProcessor } from './AbstractQueryProcessor.js';\n/**\n * An empty differential result set.\n * This is used as the initial state for differential incrementally watched queries.\n */\nexport const EMPTY_DIFFERENTIAL = {\n    added: [],\n    all: [],\n    removed: [],\n    updated: [],\n    unchanged: []\n};\n/**\n * Default implementation of the {@link DifferentialWatchedQueryComparator} for watched queries.\n * It keys items by their `id` property if available, alternatively it uses JSON stringification\n * of the entire item for the key and comparison.\n */\nexport const DEFAULT_ROW_COMPARATOR = {\n    keyBy: (item) => {\n        if (item && typeof item == 'object' && typeof item['id'] == 'string') {\n            return item['id'];\n        }\n        return JSON.stringify(item);\n    },\n    compareBy: (item) => JSON.stringify(item)\n};\n/**\n * Uses the PowerSync onChange event to trigger watched queries.\n * Results are emitted on every change of the relevant tables.\n * @internal\n */\nexport class DifferentialQueryProcessor extends AbstractQueryProcessor {\n    options;\n    comparator;\n    constructor(options) {\n        super(options);\n        this.options = options;\n        this.comparator = options.rowComparator ?? DEFAULT_ROW_COMPARATOR;\n    }\n    /*\n     * @returns If the sets are equal\n     */\n    differentiate(current, previousMap) {\n        const { keyBy, compareBy } = this.comparator;\n        let hasChanged = false;\n        const currentMap = new Map();\n        const removedTracker = new Set(previousMap.keys());\n        // Allow mutating to populate the data temporarily.\n        const diff = {\n            all: [],\n            added: [],\n            removed: [],\n            updated: [],\n            unchanged: []\n        };\n        /**\n         * Looping over the current result set array is important to preserve\n         * the ordering of the result set.\n         * We can replace items in the current array with previous object references if they are equal.\n         */\n        for (const item of current) {\n            const key = keyBy(item);\n            const hash = compareBy(item);\n            currentMap.set(key, { hash, item });\n            const previousItem = previousMap.get(key);\n            if (!previousItem) {\n                // New item\n                hasChanged = true;\n                diff.added.push(item);\n                diff.all.push(item);\n            }\n            else {\n                // Existing item\n                if (hash == previousItem.hash) {\n                    diff.unchanged.push(previousItem.item);\n                    // Use the previous object reference\n                    diff.all.push(previousItem.item);\n                    // update the map to preserve the reference\n                    currentMap.set(key, previousItem);\n                }\n                else {\n                    hasChanged = true;\n                    diff.updated.push({ current: item, previous: previousItem.item });\n                    // Use the new reference\n                    diff.all.push(item);\n                }\n            }\n            // The item is present, we don't consider it removed\n            removedTracker.delete(key);\n        }\n        diff.removed = Array.from(removedTracker).map((key) => previousMap.get(key).item);\n        hasChanged = hasChanged || diff.removed.length > 0;\n        return {\n            diff,\n            hasChanged,\n            map: currentMap\n        };\n    }\n    async linkQuery(options) {\n        const { db, watchOptions } = this.options;\n        const { abortSignal } = options;\n        const compiledQuery = watchOptions.query.compile();\n        const tables = await db.resolveTables(compiledQuery.sql, compiledQuery.parameters, {\n            tables: options.settings.triggerOnTables\n        });\n        let currentMap = new Map();\n        // populate the currentMap from the placeholder data\n        this.state.data.forEach((item) => {\n            currentMap.set(this.comparator.keyBy(item), {\n                hash: this.comparator.compareBy(item),\n                item\n            });\n        });\n        db.onChangeWithCallback({\n            onChange: async () => {\n                if (this.closed || abortSignal.aborted) {\n                    return;\n                }\n                // This fires for each change of the relevant tables\n                try {\n                    if (this.reportFetching && !this.state.isFetching) {\n                        await this.updateState({ isFetching: true });\n                    }\n                    const partialStateUpdate = {};\n                    // Always run the query if an underlying table has changed\n                    const result = await watchOptions.query.execute({\n                        sql: compiledQuery.sql,\n                        // Allows casting from ReadOnlyArray[unknown] to Array<unknown>\n                        // This allows simpler compatibility with PowerSync queries\n                        parameters: [...compiledQuery.parameters],\n                        db: this.options.db\n                    });\n                    if (abortSignal.aborted) {\n                        return;\n                    }\n                    if (this.reportFetching) {\n                        partialStateUpdate.isFetching = false;\n                    }\n                    if (this.state.isLoading) {\n                        partialStateUpdate.isLoading = false;\n                    }\n                    const { diff, hasChanged, map } = this.differentiate(result, currentMap);\n                    // Update for future comparisons\n                    currentMap = map;\n                    if (hasChanged) {\n                        await this.iterateAsyncListenersWithError((l) => l.onDiff?.(diff));\n                        Object.assign(partialStateUpdate, {\n                            data: diff.all\n                        });\n                    }\n                    if (this.state.error) {\n                        partialStateUpdate.error = null;\n                    }\n                    if (Object.keys(partialStateUpdate).length > 0) {\n                        await this.updateState(partialStateUpdate);\n                    }\n                }\n                catch (error) {\n                    await this.updateState({ error });\n                }\n            },\n            onError: async (error) => {\n                await this.updateState({ error });\n            }\n        }, {\n            signal: abortSignal,\n            tables,\n            throttleMs: watchOptions.throttleMs,\n            triggerImmediate: true // used to emit the initial state\n        });\n    }\n}\n//# sourceMappingURL=DifferentialQueryProcessor.js.map","import { AbstractQueryProcessor } from './AbstractQueryProcessor.js';\n/**\n * Uses the PowerSync onChange event to trigger watched queries.\n * Results are emitted on every change of the relevant tables.\n * @internal\n */\nexport class OnChangeQueryProcessor extends AbstractQueryProcessor {\n    options;\n    constructor(options) {\n        super(options);\n        this.options = options;\n    }\n    /**\n     * @returns If the sets are equal\n     */\n    checkEquality(current, previous) {\n        // Use the provided comparator if available. Assume values are unique if not available.\n        return this.options.comparator?.checkEquality?.(current, previous) ?? false;\n    }\n    async linkQuery(options) {\n        const { db, watchOptions } = this.options;\n        const { abortSignal } = options;\n        const compiledQuery = watchOptions.query.compile();\n        const tables = await db.resolveTables(compiledQuery.sql, compiledQuery.parameters, {\n            tables: options.settings.triggerOnTables\n        });\n        db.onChangeWithCallback({\n            onChange: async () => {\n                if (this.closed || abortSignal.aborted) {\n                    return;\n                }\n                // This fires for each change of the relevant tables\n                try {\n                    if (this.reportFetching && !this.state.isFetching) {\n                        await this.updateState({ isFetching: true });\n                    }\n                    const partialStateUpdate = {};\n                    // Always run the query if an underlying table has changed\n                    const result = await watchOptions.query.execute({\n                        sql: compiledQuery.sql,\n                        // Allows casting from ReadOnlyArray[unknown] to Array<unknown>\n                        // This allows simpler compatibility with PowerSync queries\n                        parameters: [...compiledQuery.parameters],\n                        db: this.options.db\n                    });\n                    if (abortSignal.aborted) {\n                        return;\n                    }\n                    if (this.reportFetching) {\n                        partialStateUpdate.isFetching = false;\n                    }\n                    if (this.state.isLoading) {\n                        partialStateUpdate.isLoading = false;\n                    }\n                    // Check if the result has changed\n                    if (!this.checkEquality(result, this.state.data)) {\n                        Object.assign(partialStateUpdate, {\n                            data: result\n                        });\n                    }\n                    if (this.state.error) {\n                        partialStateUpdate.error = null;\n                    }\n                    if (Object.keys(partialStateUpdate).length > 0) {\n                        await this.updateState(partialStateUpdate);\n                    }\n                }\n                catch (error) {\n                    await this.updateState({ error });\n                }\n            },\n            onError: async (error) => {\n                await this.updateState({ error });\n            }\n        }, {\n            signal: abortSignal,\n            tables,\n            throttleMs: watchOptions.throttleMs,\n            triggerImmediate: true // used to emit the initial state\n        });\n    }\n}\n//# sourceMappingURL=OnChangeQueryProcessor.js.map","import { FalsyComparator } from './watched/processors/comparators.js';\nimport { DifferentialQueryProcessor } from './watched/processors/DifferentialQueryProcessor.js';\nimport { OnChangeQueryProcessor } from './watched/processors/OnChangeQueryProcessor.js';\nimport { DEFAULT_WATCH_QUERY_OPTIONS } from './watched/WatchedQuery.js';\n/**\n * @internal\n */\nexport class CustomQuery {\n    options;\n    constructor(options) {\n        this.options = options;\n    }\n    resolveOptions(options) {\n        return {\n            reportFetching: options?.reportFetching ?? DEFAULT_WATCH_QUERY_OPTIONS.reportFetching,\n            throttleMs: options?.throttleMs ?? DEFAULT_WATCH_QUERY_OPTIONS.throttleMs,\n            triggerOnTables: options?.triggerOnTables\n        };\n    }\n    watch(watchOptions) {\n        return new OnChangeQueryProcessor({\n            db: this.options.db,\n            comparator: watchOptions?.comparator ?? FalsyComparator,\n            placeholderData: watchOptions?.placeholderData ?? [],\n            watchOptions: {\n                ...this.resolveOptions(watchOptions),\n                query: this.options.query\n            }\n        });\n    }\n    differentialWatch(differentialWatchOptions) {\n        return new DifferentialQueryProcessor({\n            db: this.options.db,\n            rowComparator: differentialWatchOptions?.rowComparator,\n            placeholderData: differentialWatchOptions?.placeholderData ?? [],\n            watchOptions: {\n                ...this.resolveOptions(differentialWatchOptions),\n                query: this.options.query\n            }\n        });\n    }\n}\n//# sourceMappingURL=CustomQuery.js.map","/**\n * Tests if the input is a {@link SQLOpenOptions}\n */\nexport const isSQLOpenOptions = (test) => {\n    // typeof null is `object`, but you cannot use the `in` operator on `null.\n    return test && typeof test == 'object' && 'dbFilename' in test;\n};\n/**\n * Tests if input is a {@link SQLOpenFactory}\n */\nexport const isSQLOpenFactory = (test) => {\n    return typeof test?.openDB == 'function';\n};\n/**\n * Tests if input is a {@link DBAdapter}\n */\nexport const isDBAdapter = (test) => {\n    return typeof test?.writeTransaction == 'function';\n};\n//# sourceMappingURL=SQLOpenFactory.js.map","export var PSInternalTable;\n(function (PSInternalTable) {\n    PSInternalTable[\"DATA\"] = \"ps_data\";\n    PSInternalTable[\"CRUD\"] = \"ps_crud\";\n    PSInternalTable[\"BUCKETS\"] = \"ps_buckets\";\n    PSInternalTable[\"OPLOG\"] = \"ps_oplog\";\n    PSInternalTable[\"UNTYPED\"] = \"ps_untyped\";\n})(PSInternalTable || (PSInternalTable = {}));\nexport var PowerSyncControlCommand;\n(function (PowerSyncControlCommand) {\n    PowerSyncControlCommand[\"PROCESS_TEXT_LINE\"] = \"line_text\";\n    PowerSyncControlCommand[\"PROCESS_BSON_LINE\"] = \"line_binary\";\n    PowerSyncControlCommand[\"STOP\"] = \"stop\";\n    PowerSyncControlCommand[\"START\"] = \"start\";\n    PowerSyncControlCommand[\"NOTIFY_TOKEN_REFRESHED\"] = \"refreshed_token\";\n    PowerSyncControlCommand[\"NOTIFY_CRUD_UPLOAD_COMPLETED\"] = \"completed_upload\";\n    PowerSyncControlCommand[\"UPDATE_SUBSCRIPTIONS\"] = \"update_subscriptions\";\n})(PowerSyncControlCommand || (PowerSyncControlCommand = {}));\n//# sourceMappingURL=BucketStorageAdapter.js.map","/**\n * A batch of client-side changes.\n */\nexport class CrudBatch {\n    crud;\n    haveMore;\n    complete;\n    constructor(\n    /**\n     * List of client-side changes.\n     */\n    crud, \n    /**\n     * true if there are more changes in the local queue.\n     */\n    haveMore, \n    /**\n     * Call to remove the changes from the local queue, once successfully uploaded.\n     */\n    complete) {\n        this.crud = crud;\n        this.haveMore = haveMore;\n        this.complete = complete;\n    }\n}\n//# sourceMappingURL=CrudBatch.js.map","/**\n * Type of local change.\n */\nexport var UpdateType;\n(function (UpdateType) {\n    /** Insert or replace existing row. All non-null columns are included in the data. Generated by INSERT statements. */\n    UpdateType[\"PUT\"] = \"PUT\";\n    /** Update existing row. Contains the id, and value of each changed column. Generated by UPDATE statements. */\n    UpdateType[\"PATCH\"] = \"PATCH\";\n    /** Delete existing row. Contains the id. Generated by DELETE statements. */\n    UpdateType[\"DELETE\"] = \"DELETE\";\n})(UpdateType || (UpdateType = {}));\n/**\n * A single client-side change.\n */\nexport class CrudEntry {\n    /**\n     * Auto-incrementing client-side id.\n     */\n    clientId;\n    /**\n     * ID of the changed row.\n     */\n    id;\n    /**\n     * Type of change.\n     */\n    op;\n    /**\n     * Data associated with the change.\n     */\n    opData;\n    /**\n     * For tables where the `trackPreviousValues` option has been enabled, this tracks previous values for\n     * `UPDATE` and `DELETE` statements.\n     */\n    previousValues;\n    /**\n     * Table that contained the change.\n     */\n    table;\n    /**\n     * Auto-incrementing transaction id. This is the same for all operations within the same transaction.\n     */\n    transactionId;\n    /**\n     * Client-side metadata attached with this write.\n     *\n     * This field is only available when the `trackMetadata` option was set to `true` when creating a table\n     * and the insert or update statement set the `_metadata` column.\n     */\n    metadata;\n    static fromRow(dbRow) {\n        const data = JSON.parse(dbRow.data);\n        return new CrudEntry(parseInt(dbRow.id), data.op, data.type, data.id, dbRow.tx_id, data.data, data.old, data.metadata);\n    }\n    constructor(clientId, op, table, id, transactionId, opData, previousValues, metadata) {\n        this.clientId = clientId;\n        this.id = id;\n        this.op = op;\n        this.opData = opData;\n        this.table = table;\n        this.transactionId = transactionId;\n        this.previousValues = previousValues;\n        this.metadata = metadata;\n    }\n    /**\n     * Converts the change to JSON format.\n     */\n    toJSON() {\n        return {\n            op_id: this.clientId,\n            op: this.op,\n            type: this.table,\n            id: this.id,\n            tx_id: this.transactionId,\n            data: this.opData,\n            old: this.previousValues,\n            metadata: this.metadata\n        };\n    }\n    equals(entry) {\n        return JSON.stringify(this.toComparisonArray()) == JSON.stringify(entry.toComparisonArray());\n    }\n    /**\n     * The hash code for this object.\n     * @deprecated This should not be necessary in the JS SDK.\n     * Use the  @see CrudEntry#equals method instead.\n     * TODO remove in the next major release.\n     */\n    hashCode() {\n        return JSON.stringify(this.toComparisonArray());\n    }\n    /**\n     * Generates an array for use in deep comparison operations\n     */\n    toComparisonArray() {\n        return [\n            this.transactionId,\n            this.clientId,\n            this.op,\n            this.table,\n            this.id,\n            this.opData,\n            this.previousValues,\n            this.metadata\n        ];\n    }\n}\n//# sourceMappingURL=CrudEntry.js.map","import { CrudBatch } from './CrudBatch.js';\nexport class CrudTransaction extends CrudBatch {\n    crud;\n    complete;\n    transactionId;\n    constructor(\n    /**\n     * List of client-side changes.\n     */\n    crud, \n    /**\n     * Call to remove the changes from the local queue, once successfully uploaded.\n     */\n    complete, \n    /**\n     * If null, this contains a list of changes recorded without an explicit transaction associated.\n     */\n    transactionId) {\n        super(crud, false, complete);\n        this.crud = crud;\n        this.complete = complete;\n        this.transactionId = transactionId;\n    }\n}\n//# sourceMappingURL=CrudTransaction.js.map","/**\n * Calls to Abortcontroller.abort(reason: any) will result in the\n * `reason` being thrown. This is not necessarily an error,\n *  but extends error for better logging purposes.\n */\nexport class AbortOperation extends Error {\n    reason;\n    constructor(reason) {\n        super(reason);\n        this.reason = reason;\n        // Set the prototype explicitly\n        Object.setPrototypeOf(this, AbortOperation.prototype);\n        // Capture stack trace\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, AbortOperation);\n        }\n    }\n}\n//# sourceMappingURL=AbortOperation.js.map","export var OpTypeEnum;\n(function (OpTypeEnum) {\n    OpTypeEnum[OpTypeEnum[\"CLEAR\"] = 1] = \"CLEAR\";\n    OpTypeEnum[OpTypeEnum[\"MOVE\"] = 2] = \"MOVE\";\n    OpTypeEnum[OpTypeEnum[\"PUT\"] = 3] = \"PUT\";\n    OpTypeEnum[OpTypeEnum[\"REMOVE\"] = 4] = \"REMOVE\";\n})(OpTypeEnum || (OpTypeEnum = {}));\n/**\n * Used internally for sync buckets.\n */\nexport class OpType {\n    value;\n    static fromJSON(jsonValue) {\n        return new OpType(OpTypeEnum[jsonValue]);\n    }\n    constructor(value) {\n        this.value = value;\n    }\n    toJSON() {\n        return Object.entries(OpTypeEnum).find(([, value]) => value === this.value)[0];\n    }\n}\n//# sourceMappingURL=OpType.js.map","import { OpType } from './OpType.js';\nexport class OplogEntry {\n    op_id;\n    op;\n    checksum;\n    subkey;\n    object_type;\n    object_id;\n    data;\n    static fromRow(row) {\n        return new OplogEntry(row.op_id, OpType.fromJSON(row.op), row.checksum, row.subkey, row.object_type, row.object_id, row.data);\n    }\n    constructor(op_id, op, checksum, subkey, object_type, object_id, data) {\n        this.op_id = op_id;\n        this.op = op;\n        this.checksum = checksum;\n        this.subkey = subkey;\n        this.object_type = object_type;\n        this.object_id = object_id;\n        this.data = data;\n    }\n    toJSON(fixedKeyEncoding = false) {\n        return {\n            op_id: this.op_id,\n            op: this.op.toJSON(),\n            object_type: this.object_type,\n            object_id: this.object_id,\n            checksum: this.checksum,\n            data: this.data,\n            // Older versions of the JS SDK used to always JSON.stringify here. That has always been wrong,\n            // but we need to migrate gradually to not break existing databases.\n            subkey: fixedKeyEncoding ? this.subkey : JSON.stringify(this.subkey)\n        };\n    }\n}\n//# sourceMappingURL=OplogEntry.js.map","import { OplogEntry } from './OplogEntry.js';\nexport class SyncDataBucket {\n    bucket;\n    data;\n    has_more;\n    after;\n    next_after;\n    static fromRow(row) {\n        return new SyncDataBucket(row.bucket, row.data.map((entry) => OplogEntry.fromRow(entry)), row.has_more ?? false, row.after, row.next_after);\n    }\n    constructor(bucket, data, \n    /**\n     * True if the response does not contain all the data for this bucket, and another request must be made.\n     */\n    has_more, \n    /**\n     * The `after` specified in the request.\n     */\n    after, \n    /**\n     * Use this for the next request.\n     */\n    next_after) {\n        this.bucket = bucket;\n        this.data = data;\n        this.has_more = has_more;\n        this.after = after;\n        this.next_after = next_after;\n    }\n    toJSON(fixedKeyEncoding = false) {\n        return {\n            bucket: this.bucket,\n            has_more: this.has_more,\n            after: this.after,\n            next_after: this.next_after,\n            data: this.data.map((entry) => entry.toJSON(fixedKeyEncoding))\n        };\n    }\n}\n//# sourceMappingURL=SyncDataBucket.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    const arr = new Uint8Array(1)\n    const proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  const buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    const copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  let buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    const len = checked(obj.length) | 0\n    const buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  let x = a.length\n  let y = b.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  let i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        buf.copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  let loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  const length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  let str = ''\n  const max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  let indexSize = 1\n  let arrLength = arr.length\n  let valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  let i\n  if (dir) {\n    let foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      let found = true\n      for (let j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  const remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  const remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  let res = ''\n  let i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  const len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  const newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  let val = this[offset + --byteLength]\n  let mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let i = byteLength\n  let mul = 1\n  let val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  const len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      const code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  let c, hi, lo\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  let i\n  for (i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Frame = exports.Lengths = exports.Flags = exports.FrameTypes = void 0;\nvar FrameTypes;\n(function (FrameTypes) {\n    FrameTypes[FrameTypes[\"RESERVED\"] = 0] = \"RESERVED\";\n    FrameTypes[FrameTypes[\"SETUP\"] = 1] = \"SETUP\";\n    FrameTypes[FrameTypes[\"LEASE\"] = 2] = \"LEASE\";\n    FrameTypes[FrameTypes[\"KEEPALIVE\"] = 3] = \"KEEPALIVE\";\n    FrameTypes[FrameTypes[\"REQUEST_RESPONSE\"] = 4] = \"REQUEST_RESPONSE\";\n    FrameTypes[FrameTypes[\"REQUEST_FNF\"] = 5] = \"REQUEST_FNF\";\n    FrameTypes[FrameTypes[\"REQUEST_STREAM\"] = 6] = \"REQUEST_STREAM\";\n    FrameTypes[FrameTypes[\"REQUEST_CHANNEL\"] = 7] = \"REQUEST_CHANNEL\";\n    FrameTypes[FrameTypes[\"REQUEST_N\"] = 8] = \"REQUEST_N\";\n    FrameTypes[FrameTypes[\"CANCEL\"] = 9] = \"CANCEL\";\n    FrameTypes[FrameTypes[\"PAYLOAD\"] = 10] = \"PAYLOAD\";\n    FrameTypes[FrameTypes[\"ERROR\"] = 11] = \"ERROR\";\n    FrameTypes[FrameTypes[\"METADATA_PUSH\"] = 12] = \"METADATA_PUSH\";\n    FrameTypes[FrameTypes[\"RESUME\"] = 13] = \"RESUME\";\n    FrameTypes[FrameTypes[\"RESUME_OK\"] = 14] = \"RESUME_OK\";\n    FrameTypes[FrameTypes[\"EXT\"] = 63] = \"EXT\";\n})(FrameTypes = exports.FrameTypes || (exports.FrameTypes = {}));\nvar Flags;\n(function (Flags) {\n    Flags[Flags[\"NONE\"] = 0] = \"NONE\";\n    Flags[Flags[\"COMPLETE\"] = 64] = \"COMPLETE\";\n    Flags[Flags[\"FOLLOWS\"] = 128] = \"FOLLOWS\";\n    Flags[Flags[\"IGNORE\"] = 512] = \"IGNORE\";\n    Flags[Flags[\"LEASE\"] = 64] = \"LEASE\";\n    Flags[Flags[\"METADATA\"] = 256] = \"METADATA\";\n    Flags[Flags[\"NEXT\"] = 32] = \"NEXT\";\n    Flags[Flags[\"RESPOND\"] = 128] = \"RESPOND\";\n    Flags[Flags[\"RESUME_ENABLE\"] = 128] = \"RESUME_ENABLE\";\n})(Flags = exports.Flags || (exports.Flags = {}));\n(function (Flags) {\n    function hasMetadata(flags) {\n        return (flags & Flags.METADATA) === Flags.METADATA;\n    }\n    Flags.hasMetadata = hasMetadata;\n    function hasComplete(flags) {\n        return (flags & Flags.COMPLETE) === Flags.COMPLETE;\n    }\n    Flags.hasComplete = hasComplete;\n    function hasNext(flags) {\n        return (flags & Flags.NEXT) === Flags.NEXT;\n    }\n    Flags.hasNext = hasNext;\n    function hasFollows(flags) {\n        return (flags & Flags.FOLLOWS) === Flags.FOLLOWS;\n    }\n    Flags.hasFollows = hasFollows;\n    function hasIgnore(flags) {\n        return (flags & Flags.IGNORE) === Flags.IGNORE;\n    }\n    Flags.hasIgnore = hasIgnore;\n    function hasRespond(flags) {\n        return (flags & Flags.RESPOND) === Flags.RESPOND;\n    }\n    Flags.hasRespond = hasRespond;\n    function hasLease(flags) {\n        return (flags & Flags.LEASE) === Flags.LEASE;\n    }\n    Flags.hasLease = hasLease;\n    function hasResume(flags) {\n        return (flags & Flags.RESUME_ENABLE) === Flags.RESUME_ENABLE;\n    }\n    Flags.hasResume = hasResume;\n})(Flags = exports.Flags || (exports.Flags = {}));\nvar Lengths;\n(function (Lengths) {\n    Lengths[Lengths[\"FRAME\"] = 3] = \"FRAME\";\n    Lengths[Lengths[\"HEADER\"] = 6] = \"HEADER\";\n    Lengths[Lengths[\"METADATA\"] = 3] = \"METADATA\";\n    Lengths[Lengths[\"REQUEST\"] = 3] = \"REQUEST\";\n})(Lengths = exports.Lengths || (exports.Lengths = {}));\nvar Frame;\n(function (Frame) {\n    function isConnection(frame) {\n        return frame.streamId === 0;\n    }\n    Frame.isConnection = isConnection;\n    function isRequest(frame) {\n        return (FrameTypes.REQUEST_RESPONSE <= frame.type &&\n            frame.type <= FrameTypes.REQUEST_CHANNEL);\n    }\n    Frame.isRequest = isRequest;\n})(Frame = exports.Frame || (exports.Frame = {}));\n//# sourceMappingURL=Frames.js.map","/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deserializer = exports.sizeOfFrame = exports.serializeFrame = exports.deserializeFrame = exports.serializeFrameWithLength = exports.deserializeFrames = exports.deserializeFrameWithLength = exports.writeUInt64BE = exports.readUInt64BE = exports.writeUInt24BE = exports.readUInt24BE = exports.MAX_VERSION = exports.MAX_TTL = exports.MAX_STREAM_ID = exports.MAX_RESUME_LENGTH = exports.MAX_REQUEST_N = exports.MAX_REQUEST_COUNT = exports.MAX_MIME_LENGTH = exports.MAX_METADATA_LENGTH = exports.MAX_LIFETIME = exports.MAX_KEEPALIVE = exports.MAX_CODE = exports.FRAME_TYPE_OFFFSET = exports.FLAGS_MASK = void 0;\nvar Frames_1 = require(\"./Frames\");\nexports.FLAGS_MASK = 0x3ff; // low 10 bits\nexports.FRAME_TYPE_OFFFSET = 10; // frame type is offset 10 bytes within the uint16 containing type + flags\nexports.MAX_CODE = 0x7fffffff; // uint31\nexports.MAX_KEEPALIVE = 0x7fffffff; // uint31\nexports.MAX_LIFETIME = 0x7fffffff; // uint31\nexports.MAX_METADATA_LENGTH = 0xffffff; // uint24\nexports.MAX_MIME_LENGTH = 0xff; // int8\nexports.MAX_REQUEST_COUNT = 0x7fffffff; // uint31\nexports.MAX_REQUEST_N = 0x7fffffff; // uint31\nexports.MAX_RESUME_LENGTH = 0xffff; // uint16\nexports.MAX_STREAM_ID = 0x7fffffff; // uint31\nexports.MAX_TTL = 0x7fffffff; // uint31\nexports.MAX_VERSION = 0xffff; // uint16\n/**\n * Mimimum value that would overflow bitwise operators (2^32).\n */\nvar BITWISE_OVERFLOW = 0x100000000;\n/**\n * Read a uint24 from a buffer starting at the given offset.\n */\nfunction readUInt24BE(buffer, offset) {\n    var val1 = buffer.readUInt8(offset) << 16;\n    var val2 = buffer.readUInt8(offset + 1) << 8;\n    var val3 = buffer.readUInt8(offset + 2);\n    return val1 | val2 | val3;\n}\nexports.readUInt24BE = readUInt24BE;\n/**\n * Writes a uint24 to a buffer starting at the given offset, returning the\n * offset of the next byte.\n */\nfunction writeUInt24BE(buffer, value, offset) {\n    offset = buffer.writeUInt8(value >>> 16, offset); // 3rd byte\n    offset = buffer.writeUInt8((value >>> 8) & 0xff, offset); // 2nd byte\n    return buffer.writeUInt8(value & 0xff, offset); // 1st byte\n}\nexports.writeUInt24BE = writeUInt24BE;\n/**\n * Read a uint64 (technically supports up to 53 bits per JS number\n * representation).\n */\nfunction readUInt64BE(buffer, offset) {\n    var high = buffer.readUInt32BE(offset);\n    var low = buffer.readUInt32BE(offset + 4);\n    return high * BITWISE_OVERFLOW + low;\n}\nexports.readUInt64BE = readUInt64BE;\n/**\n * Write a uint64 (technically supports up to 53 bits per JS number\n * representation).\n */\nfunction writeUInt64BE(buffer, value, offset) {\n    var high = (value / BITWISE_OVERFLOW) | 0;\n    var low = value % BITWISE_OVERFLOW;\n    offset = buffer.writeUInt32BE(high, offset); // first half of uint64\n    return buffer.writeUInt32BE(low, offset); // second half of uint64\n}\nexports.writeUInt64BE = writeUInt64BE;\n/**\n * Frame header is:\n * - stream id (uint32 = 4)\n * - type + flags (uint 16 = 2)\n */\nvar FRAME_HEADER_SIZE = 6;\n/**\n * Size of frame length and metadata length fields.\n */\nvar UINT24_SIZE = 3;\n/**\n * Reads a frame from a buffer that is prefixed with the frame length.\n */\nfunction deserializeFrameWithLength(buffer) {\n    var frameLength = readUInt24BE(buffer, 0);\n    return deserializeFrame(buffer.slice(UINT24_SIZE, UINT24_SIZE + frameLength));\n}\nexports.deserializeFrameWithLength = deserializeFrameWithLength;\n/**\n * Given a buffer that may contain zero or more length-prefixed frames followed\n * by zero or more bytes of a (partial) subsequent frame, returns an array of\n * the frames and an int representing the buffer offset.\n */\nfunction deserializeFrames(buffer) {\n    var offset, frameLength, frameStart, frameEnd, frameBuffer, frame;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                offset = 0;\n                _a.label = 1;\n            case 1:\n                if (!(offset + UINT24_SIZE < buffer.length)) return [3 /*break*/, 3];\n                frameLength = readUInt24BE(buffer, offset);\n                frameStart = offset + UINT24_SIZE;\n                frameEnd = frameStart + frameLength;\n                if (frameEnd > buffer.length) {\n                    // not all bytes of next frame received\n                    return [3 /*break*/, 3];\n                }\n                frameBuffer = buffer.slice(frameStart, frameEnd);\n                frame = deserializeFrame(frameBuffer);\n                offset = frameEnd;\n                return [4 /*yield*/, [frame, offset]];\n            case 2:\n                _a.sent();\n                return [3 /*break*/, 1];\n            case 3: return [2 /*return*/];\n        }\n    });\n}\nexports.deserializeFrames = deserializeFrames;\n/**\n * Writes a frame to a buffer with a length prefix.\n */\nfunction serializeFrameWithLength(frame) {\n    var buffer = serializeFrame(frame);\n    var lengthPrefixed = Buffer.allocUnsafe(buffer.length + UINT24_SIZE);\n    writeUInt24BE(lengthPrefixed, buffer.length, 0);\n    buffer.copy(lengthPrefixed, UINT24_SIZE);\n    return lengthPrefixed;\n}\nexports.serializeFrameWithLength = serializeFrameWithLength;\n/**\n * Read a frame from the buffer.\n */\nfunction deserializeFrame(buffer) {\n    var offset = 0;\n    var streamId = buffer.readInt32BE(offset);\n    offset += 4;\n    // invariant(\n    //   streamId >= 0,\n    //   'RSocketBinaryFraming: Invalid frame, expected a positive stream id, got `%s.',\n    //   streamId,\n    // );\n    var typeAndFlags = buffer.readUInt16BE(offset);\n    offset += 2;\n    var type = typeAndFlags >>> exports.FRAME_TYPE_OFFFSET; // keep highest 6 bits\n    var flags = typeAndFlags & exports.FLAGS_MASK; // keep lowest 10 bits\n    switch (type) {\n        case Frames_1.FrameTypes.SETUP:\n            return deserializeSetupFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.PAYLOAD:\n            return deserializePayloadFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.ERROR:\n            return deserializeErrorFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.KEEPALIVE:\n            return deserializeKeepAliveFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.REQUEST_FNF:\n            return deserializeRequestFnfFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.REQUEST_RESPONSE:\n            return deserializeRequestResponseFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.REQUEST_STREAM:\n            return deserializeRequestStreamFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.REQUEST_CHANNEL:\n            return deserializeRequestChannelFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.METADATA_PUSH:\n            return deserializeMetadataPushFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.REQUEST_N:\n            return deserializeRequestNFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.RESUME:\n            return deserializeResumeFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.RESUME_OK:\n            return deserializeResumeOkFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.CANCEL:\n            return deserializeCancelFrame(buffer, streamId, flags);\n        case Frames_1.FrameTypes.LEASE:\n            return deserializeLeaseFrame(buffer, streamId, flags);\n        default:\n        // invariant(\n        //   false,\n        //   \"RSocketBinaryFraming: Unsupported frame type `%s`.\",\n        //   getFrameTypeName(type)\n        // );\n    }\n}\nexports.deserializeFrame = deserializeFrame;\n/**\n * Convert the frame to a (binary) buffer.\n */\nfunction serializeFrame(frame) {\n    switch (frame.type) {\n        case Frames_1.FrameTypes.SETUP:\n            return serializeSetupFrame(frame);\n        case Frames_1.FrameTypes.PAYLOAD:\n            return serializePayloadFrame(frame);\n        case Frames_1.FrameTypes.ERROR:\n            return serializeErrorFrame(frame);\n        case Frames_1.FrameTypes.KEEPALIVE:\n            return serializeKeepAliveFrame(frame);\n        case Frames_1.FrameTypes.REQUEST_FNF:\n        case Frames_1.FrameTypes.REQUEST_RESPONSE:\n            return serializeRequestFrame(frame);\n        case Frames_1.FrameTypes.REQUEST_STREAM:\n        case Frames_1.FrameTypes.REQUEST_CHANNEL:\n            return serializeRequestManyFrame(frame);\n        case Frames_1.FrameTypes.METADATA_PUSH:\n            return serializeMetadataPushFrame(frame);\n        case Frames_1.FrameTypes.REQUEST_N:\n            return serializeRequestNFrame(frame);\n        case Frames_1.FrameTypes.RESUME:\n            return serializeResumeFrame(frame);\n        case Frames_1.FrameTypes.RESUME_OK:\n            return serializeResumeOkFrame(frame);\n        case Frames_1.FrameTypes.CANCEL:\n            return serializeCancelFrame(frame);\n        case Frames_1.FrameTypes.LEASE:\n            return serializeLeaseFrame(frame);\n        default:\n        // invariant(\n        //   false,\n        //   \"RSocketBinaryFraming: Unsupported frame type `%s`.\",\n        //   getFrameTypeName(frame.type)\n        // );\n    }\n}\nexports.serializeFrame = serializeFrame;\n/**\n * Byte size of frame without size prefix\n */\nfunction sizeOfFrame(frame) {\n    switch (frame.type) {\n        case Frames_1.FrameTypes.SETUP:\n            return sizeOfSetupFrame(frame);\n        case Frames_1.FrameTypes.PAYLOAD:\n            return sizeOfPayloadFrame(frame);\n        case Frames_1.FrameTypes.ERROR:\n            return sizeOfErrorFrame(frame);\n        case Frames_1.FrameTypes.KEEPALIVE:\n            return sizeOfKeepAliveFrame(frame);\n        case Frames_1.FrameTypes.REQUEST_FNF:\n        case Frames_1.FrameTypes.REQUEST_RESPONSE:\n            return sizeOfRequestFrame(frame);\n        case Frames_1.FrameTypes.REQUEST_STREAM:\n        case Frames_1.FrameTypes.REQUEST_CHANNEL:\n            return sizeOfRequestManyFrame(frame);\n        case Frames_1.FrameTypes.METADATA_PUSH:\n            return sizeOfMetadataPushFrame(frame);\n        case Frames_1.FrameTypes.REQUEST_N:\n            return sizeOfRequestNFrame(frame);\n        case Frames_1.FrameTypes.RESUME:\n            return sizeOfResumeFrame(frame);\n        case Frames_1.FrameTypes.RESUME_OK:\n            return sizeOfResumeOkFrame(frame);\n        case Frames_1.FrameTypes.CANCEL:\n            return sizeOfCancelFrame(frame);\n        case Frames_1.FrameTypes.LEASE:\n            return sizeOfLeaseFrame(frame);\n        default:\n        // invariant(\n        //   false,\n        //   \"RSocketBinaryFraming: Unsupported frame type `%s`.\",\n        //   getFrameTypeName(frame.type)\n        // );\n    }\n}\nexports.sizeOfFrame = sizeOfFrame;\n/**\n * Writes a SETUP frame into a new buffer and returns it.\n *\n * Prefix size is:\n * - version (2x uint16 = 4)\n * - keepalive (uint32 = 4)\n * - lifetime (uint32 = 4)\n * - mime lengths (2x uint8 = 2)\n */\nvar SETUP_FIXED_SIZE = 14;\nvar RESUME_TOKEN_LENGTH_SIZE = 2;\nfunction serializeSetupFrame(frame) {\n    var resumeTokenLength = frame.resumeToken != null ? frame.resumeToken.byteLength : 0;\n    var metadataMimeTypeLength = frame.metadataMimeType != null\n        ? Buffer.byteLength(frame.metadataMimeType, \"ascii\")\n        : 0;\n    var dataMimeTypeLength = frame.dataMimeType != null\n        ? Buffer.byteLength(frame.dataMimeType, \"ascii\")\n        : 0;\n    var payloadLength = getPayloadLength(frame);\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE +\n        SETUP_FIXED_SIZE + //\n        (resumeTokenLength ? RESUME_TOKEN_LENGTH_SIZE + resumeTokenLength : 0) +\n        metadataMimeTypeLength +\n        dataMimeTypeLength +\n        payloadLength);\n    var offset = writeHeader(frame, buffer);\n    offset = buffer.writeUInt16BE(frame.majorVersion, offset);\n    offset = buffer.writeUInt16BE(frame.minorVersion, offset);\n    offset = buffer.writeUInt32BE(frame.keepAlive, offset);\n    offset = buffer.writeUInt32BE(frame.lifetime, offset);\n    if (frame.flags & Frames_1.Flags.RESUME_ENABLE) {\n        offset = buffer.writeUInt16BE(resumeTokenLength, offset);\n        if (frame.resumeToken != null) {\n            offset += frame.resumeToken.copy(buffer, offset);\n        }\n    }\n    offset = buffer.writeUInt8(metadataMimeTypeLength, offset);\n    if (frame.metadataMimeType != null) {\n        offset += buffer.write(frame.metadataMimeType, offset, offset + metadataMimeTypeLength, \"ascii\");\n    }\n    offset = buffer.writeUInt8(dataMimeTypeLength, offset);\n    if (frame.dataMimeType != null) {\n        offset += buffer.write(frame.dataMimeType, offset, offset + dataMimeTypeLength, \"ascii\");\n    }\n    writePayload(frame, buffer, offset);\n    return buffer;\n}\nfunction sizeOfSetupFrame(frame) {\n    var resumeTokenLength = frame.resumeToken != null ? frame.resumeToken.byteLength : 0;\n    var metadataMimeTypeLength = frame.metadataMimeType != null\n        ? Buffer.byteLength(frame.metadataMimeType, \"ascii\")\n        : 0;\n    var dataMimeTypeLength = frame.dataMimeType != null\n        ? Buffer.byteLength(frame.dataMimeType, \"ascii\")\n        : 0;\n    var payloadLength = getPayloadLength(frame);\n    return (FRAME_HEADER_SIZE +\n        SETUP_FIXED_SIZE + //\n        (resumeTokenLength ? RESUME_TOKEN_LENGTH_SIZE + resumeTokenLength : 0) +\n        metadataMimeTypeLength +\n        dataMimeTypeLength +\n        payloadLength);\n}\n/**\n * Reads a SETUP frame from the buffer and returns it.\n */\nfunction deserializeSetupFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId === 0,\n    //   'RSocketBinaryFraming: Invalid SETUP frame, expected stream id to be 0.',\n    // );\n    var length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var majorVersion = buffer.readUInt16BE(offset);\n    offset += 2;\n    var minorVersion = buffer.readUInt16BE(offset);\n    offset += 2;\n    var keepAlive = buffer.readInt32BE(offset);\n    offset += 4;\n    // invariant(\n    //   keepAlive >= 0 && keepAlive <= MAX_KEEPALIVE,\n    //   'RSocketBinaryFraming: Invalid SETUP frame, expected keepAlive to be ' +\n    //     '>= 0 and <= %s. Got `%s`.',\n    //   MAX_KEEPALIVE,\n    //   keepAlive,\n    // );\n    var lifetime = buffer.readInt32BE(offset);\n    offset += 4;\n    // invariant(\n    //   lifetime >= 0 && lifetime <= MAX_LIFETIME,\n    //   'RSocketBinaryFraming: Invalid SETUP frame, expected lifetime to be ' +\n    //     '>= 0 and <= %s. Got `%s`.',\n    //   MAX_LIFETIME,\n    //   lifetime,\n    // );\n    var resumeToken = null;\n    if (flags & Frames_1.Flags.RESUME_ENABLE) {\n        var resumeTokenLength = buffer.readInt16BE(offset);\n        offset += 2;\n        // invariant(\n        //   resumeTokenLength >= 0 && resumeTokenLength <= MAX_RESUME_LENGTH,\n        //   'RSocketBinaryFraming: Invalid SETUP frame, expected resumeToken length ' +\n        //     'to be >= 0 and <= %s. Got `%s`.',\n        //   MAX_RESUME_LENGTH,\n        //   resumeTokenLength,\n        // );\n        resumeToken = buffer.slice(offset, offset + resumeTokenLength);\n        offset += resumeTokenLength;\n    }\n    var metadataMimeTypeLength = buffer.readUInt8(offset);\n    offset += 1;\n    var metadataMimeType = buffer.toString(\"ascii\", offset, offset + metadataMimeTypeLength);\n    offset += metadataMimeTypeLength;\n    var dataMimeTypeLength = buffer.readUInt8(offset);\n    offset += 1;\n    var dataMimeType = buffer.toString(\"ascii\", offset, offset + dataMimeTypeLength);\n    offset += dataMimeTypeLength;\n    var frame = {\n        data: null,\n        dataMimeType: dataMimeType,\n        flags: flags,\n        keepAlive: keepAlive,\n        lifetime: lifetime,\n        majorVersion: majorVersion,\n        metadata: null,\n        metadataMimeType: metadataMimeType,\n        minorVersion: minorVersion,\n        resumeToken: resumeToken,\n        // streamId,\n        streamId: 0,\n        type: Frames_1.FrameTypes.SETUP,\n    };\n    readPayload(buffer, frame, offset);\n    return frame;\n}\n/**\n * Writes an ERROR frame into a new buffer and returns it.\n *\n * Prefix size is for the error code (uint32 = 4).\n */\nvar ERROR_FIXED_SIZE = 4;\nfunction serializeErrorFrame(frame) {\n    var messageLength = frame.message != null ? Buffer.byteLength(frame.message, \"utf8\") : 0;\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + ERROR_FIXED_SIZE + messageLength);\n    var offset = writeHeader(frame, buffer);\n    offset = buffer.writeUInt32BE(frame.code, offset);\n    if (frame.message != null) {\n        buffer.write(frame.message, offset, offset + messageLength, \"utf8\");\n    }\n    return buffer;\n}\nfunction sizeOfErrorFrame(frame) {\n    var messageLength = frame.message != null ? Buffer.byteLength(frame.message, \"utf8\") : 0;\n    return FRAME_HEADER_SIZE + ERROR_FIXED_SIZE + messageLength;\n}\n/**\n * Reads an ERROR frame from the buffer and returns it.\n */\nfunction deserializeErrorFrame(buffer, streamId, flags) {\n    var length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var code = buffer.readInt32BE(offset);\n    offset += 4;\n    // invariant(\n    //   code >= 0 && code <= MAX_CODE,\n    //   \"RSocketBinaryFraming: Invalid ERROR frame, expected code to be >= 0 and <= %s. Got `%s`.\",\n    //   MAX_CODE,\n    //   code\n    // );\n    var messageLength = buffer.length - offset;\n    var message = \"\";\n    if (messageLength > 0) {\n        message = buffer.toString(\"utf8\", offset, offset + messageLength);\n        offset += messageLength;\n    }\n    return {\n        code: code,\n        flags: flags,\n        message: message,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.ERROR,\n    };\n}\n/**\n * Writes a KEEPALIVE frame into a new buffer and returns it.\n *\n * Prefix size is for the last received position (uint64 = 8).\n */\nvar KEEPALIVE_FIXED_SIZE = 8;\nfunction serializeKeepAliveFrame(frame) {\n    var dataLength = frame.data != null ? frame.data.byteLength : 0;\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + KEEPALIVE_FIXED_SIZE + dataLength);\n    var offset = writeHeader(frame, buffer);\n    offset = writeUInt64BE(buffer, frame.lastReceivedPosition, offset);\n    if (frame.data != null) {\n        frame.data.copy(buffer, offset);\n    }\n    return buffer;\n}\nfunction sizeOfKeepAliveFrame(frame) {\n    var dataLength = frame.data != null ? frame.data.byteLength : 0;\n    return FRAME_HEADER_SIZE + KEEPALIVE_FIXED_SIZE + dataLength;\n}\n/**\n * Reads a KEEPALIVE frame from the buffer and returns it.\n */\nfunction deserializeKeepAliveFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId === 0,\n    //   \"RSocketBinaryFraming: Invalid KEEPALIVE frame, expected stream id to be 0.\"\n    // );\n    var length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var lastReceivedPosition = readUInt64BE(buffer, offset);\n    offset += 8;\n    var data = null;\n    if (offset < buffer.length) {\n        data = buffer.slice(offset, buffer.length);\n    }\n    return {\n        data: data,\n        flags: flags,\n        lastReceivedPosition: lastReceivedPosition,\n        // streamId,\n        streamId: 0,\n        type: Frames_1.FrameTypes.KEEPALIVE,\n    };\n}\n/**\n * Writes a LEASE frame into a new buffer and returns it.\n *\n * Prefix size is for the ttl (uint32) and requestcount (uint32).\n */\nvar LEASE_FIXED_SIZE = 8;\nfunction serializeLeaseFrame(frame) {\n    var metaLength = frame.metadata != null ? frame.metadata.byteLength : 0;\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + LEASE_FIXED_SIZE + metaLength);\n    var offset = writeHeader(frame, buffer);\n    offset = buffer.writeUInt32BE(frame.ttl, offset);\n    offset = buffer.writeUInt32BE(frame.requestCount, offset);\n    if (frame.metadata != null) {\n        frame.metadata.copy(buffer, offset);\n    }\n    return buffer;\n}\nfunction sizeOfLeaseFrame(frame) {\n    var metaLength = frame.metadata != null ? frame.metadata.byteLength : 0;\n    return FRAME_HEADER_SIZE + LEASE_FIXED_SIZE + metaLength;\n}\n/**\n * Reads a LEASE frame from the buffer and returns it.\n */\nfunction deserializeLeaseFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId === 0,\n    //   \"RSocketBinaryFraming: Invalid LEASE frame, expected stream id to be 0.\"\n    // );\n    // const length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var ttl = buffer.readUInt32BE(offset);\n    offset += 4;\n    var requestCount = buffer.readUInt32BE(offset);\n    offset += 4;\n    var metadata = null;\n    if (offset < buffer.length) {\n        metadata = buffer.slice(offset, buffer.length);\n    }\n    return {\n        flags: flags,\n        metadata: metadata,\n        requestCount: requestCount,\n        // streamId,\n        streamId: 0,\n        ttl: ttl,\n        type: Frames_1.FrameTypes.LEASE,\n    };\n}\n/**\n * Writes a REQUEST_FNF or REQUEST_RESPONSE frame to a new buffer and returns\n * it.\n *\n * Note that these frames have the same shape and only differ in their type.\n */\nfunction serializeRequestFrame(frame) {\n    var payloadLength = getPayloadLength(frame);\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + payloadLength);\n    var offset = writeHeader(frame, buffer);\n    writePayload(frame, buffer, offset);\n    return buffer;\n}\nfunction sizeOfRequestFrame(frame) {\n    var payloadLength = getPayloadLength(frame);\n    return FRAME_HEADER_SIZE + payloadLength;\n}\n/**\n * Writes a METADATA_PUSH frame to a new buffer and returns\n * it.\n */\nfunction serializeMetadataPushFrame(frame) {\n    var metadata = frame.metadata;\n    if (metadata != null) {\n        var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + metadata.byteLength);\n        var offset = writeHeader(frame, buffer);\n        metadata.copy(buffer, offset);\n        return buffer;\n    }\n    else {\n        var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE);\n        writeHeader(frame, buffer);\n        return buffer;\n    }\n}\nfunction sizeOfMetadataPushFrame(frame) {\n    return (FRAME_HEADER_SIZE + (frame.metadata != null ? frame.metadata.byteLength : 0));\n}\nfunction deserializeRequestFnfFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_FNF frame, expected stream id to be > 0.\"\n    // );\n    var length = buffer.length;\n    var frame = {\n        data: null,\n        flags: flags,\n        // length,\n        metadata: null,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.REQUEST_FNF,\n    };\n    readPayload(buffer, frame, FRAME_HEADER_SIZE);\n    return frame;\n}\nfunction deserializeRequestResponseFrame(buffer, streamId, flags) {\n    // invariant(\n    // streamId > 0,\n    // \"RSocketBinaryFraming: Invalid REQUEST_RESPONSE frame, expected stream id to be > 0.\"\n    // );\n    // const length = buffer.length;\n    var frame = {\n        data: null,\n        flags: flags,\n        // length,\n        metadata: null,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.REQUEST_RESPONSE,\n    };\n    readPayload(buffer, frame, FRAME_HEADER_SIZE);\n    return frame;\n}\nfunction deserializeMetadataPushFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId === 0,\n    //   \"RSocketBinaryFraming: Invalid METADATA_PUSH frame, expected stream id to be 0.\"\n    // );\n    // const length = buffer.length;\n    return {\n        flags: flags,\n        // length,\n        metadata: length === FRAME_HEADER_SIZE\n            ? null\n            : buffer.slice(FRAME_HEADER_SIZE, length),\n        // streamId,\n        streamId: 0,\n        type: Frames_1.FrameTypes.METADATA_PUSH,\n    };\n}\n/**\n * Writes a REQUEST_STREAM or REQUEST_CHANNEL frame to a new buffer and returns\n * it.\n *\n * Note that these frames have the same shape and only differ in their type.\n *\n * Prefix size is for requestN (uint32 = 4).\n */\nvar REQUEST_MANY_HEADER = 4;\nfunction serializeRequestManyFrame(frame) {\n    var payloadLength = getPayloadLength(frame);\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + REQUEST_MANY_HEADER + payloadLength);\n    var offset = writeHeader(frame, buffer);\n    offset = buffer.writeUInt32BE(frame.requestN, offset);\n    writePayload(frame, buffer, offset);\n    return buffer;\n}\nfunction sizeOfRequestManyFrame(frame) {\n    var payloadLength = getPayloadLength(frame);\n    return FRAME_HEADER_SIZE + REQUEST_MANY_HEADER + payloadLength;\n}\nfunction deserializeRequestStreamFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected stream id to be > 0.\"\n    // );\n    var length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var requestN = buffer.readInt32BE(offset);\n    offset += 4;\n    // invariant(\n    //   requestN > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected requestN to be > 0, got `%s`.\",\n    //   requestN\n    // );\n    var frame = {\n        data: null,\n        flags: flags,\n        // length,\n        metadata: null,\n        requestN: requestN,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.REQUEST_STREAM,\n    };\n    readPayload(buffer, frame, offset);\n    return frame;\n}\nfunction deserializeRequestChannelFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_CHANNEL frame, expected stream id to be > 0.\"\n    // );\n    var length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var requestN = buffer.readInt32BE(offset);\n    offset += 4;\n    // invariant(\n    //   requestN > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected requestN to be > 0, got `%s`.\",\n    //   requestN\n    // );\n    var frame = {\n        data: null,\n        flags: flags,\n        // length,\n        metadata: null,\n        requestN: requestN,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.REQUEST_CHANNEL,\n    };\n    readPayload(buffer, frame, offset);\n    return frame;\n}\n/**\n * Writes a REQUEST_N frame to a new buffer and returns it.\n *\n * Prefix size is for requestN (uint32 = 4).\n */\nvar REQUEST_N_HEADER = 4;\nfunction serializeRequestNFrame(frame) {\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + REQUEST_N_HEADER);\n    var offset = writeHeader(frame, buffer);\n    buffer.writeUInt32BE(frame.requestN, offset);\n    return buffer;\n}\nfunction sizeOfRequestNFrame(frame) {\n    return FRAME_HEADER_SIZE + REQUEST_N_HEADER;\n}\nfunction deserializeRequestNFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_N frame, expected stream id to be > 0.\"\n    // );\n    var length = buffer.length;\n    var requestN = buffer.readInt32BE(FRAME_HEADER_SIZE);\n    // invariant(\n    //   requestN > 0,\n    //   \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected requestN to be > 0, got `%s`.\",\n    //   requestN\n    // );\n    return {\n        flags: flags,\n        // length,\n        requestN: requestN,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.REQUEST_N,\n    };\n}\n/**\n * Writes a CANCEL frame to a new buffer and returns it.\n */\nfunction serializeCancelFrame(frame) {\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE);\n    writeHeader(frame, buffer);\n    return buffer;\n}\nfunction sizeOfCancelFrame(frame) {\n    return FRAME_HEADER_SIZE;\n}\nfunction deserializeCancelFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId > 0,\n    //   \"RSocketBinaryFraming: Invalid CANCEL frame, expected stream id to be > 0.\"\n    // );\n    var length = buffer.length;\n    return {\n        flags: flags,\n        // length,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.CANCEL,\n    };\n}\n/**\n * Writes a PAYLOAD frame to a new buffer and returns it.\n */\nfunction serializePayloadFrame(frame) {\n    var payloadLength = getPayloadLength(frame);\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + payloadLength);\n    var offset = writeHeader(frame, buffer);\n    writePayload(frame, buffer, offset);\n    return buffer;\n}\nfunction sizeOfPayloadFrame(frame) {\n    var payloadLength = getPayloadLength(frame);\n    return FRAME_HEADER_SIZE + payloadLength;\n}\nfunction deserializePayloadFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId > 0,\n    //   \"RSocketBinaryFraming: Invalid PAYLOAD frame, expected stream id to be > 0.\"\n    // );\n    var length = buffer.length;\n    var frame = {\n        data: null,\n        flags: flags,\n        // length,\n        metadata: null,\n        streamId: streamId,\n        type: Frames_1.FrameTypes.PAYLOAD,\n    };\n    readPayload(buffer, frame, FRAME_HEADER_SIZE);\n    return frame;\n}\n/**\n * Writes a RESUME frame into a new buffer and returns it.\n *\n * Fixed size is:\n * - major version (uint16 = 2)\n * - minor version (uint16 = 2)\n * - token length (uint16 = 2)\n * - client position (uint64 = 8)\n * - server position (uint64 = 8)\n */\nvar RESUME_FIXED_SIZE = 22;\nfunction serializeResumeFrame(frame) {\n    var resumeTokenLength = frame.resumeToken.byteLength;\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + RESUME_FIXED_SIZE + resumeTokenLength);\n    var offset = writeHeader(frame, buffer);\n    offset = buffer.writeUInt16BE(frame.majorVersion, offset);\n    offset = buffer.writeUInt16BE(frame.minorVersion, offset);\n    offset = buffer.writeUInt16BE(resumeTokenLength, offset);\n    offset += frame.resumeToken.copy(buffer, offset);\n    offset = writeUInt64BE(buffer, frame.serverPosition, offset);\n    writeUInt64BE(buffer, frame.clientPosition, offset);\n    return buffer;\n}\nfunction sizeOfResumeFrame(frame) {\n    var resumeTokenLength = frame.resumeToken.byteLength;\n    return FRAME_HEADER_SIZE + RESUME_FIXED_SIZE + resumeTokenLength;\n}\nfunction deserializeResumeFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId === 0,\n    //   \"RSocketBinaryFraming: Invalid RESUME frame, expected stream id to be 0.\"\n    // );\n    var length = buffer.length;\n    var offset = FRAME_HEADER_SIZE;\n    var majorVersion = buffer.readUInt16BE(offset);\n    offset += 2;\n    var minorVersion = buffer.readUInt16BE(offset);\n    offset += 2;\n    var resumeTokenLength = buffer.readInt16BE(offset);\n    offset += 2;\n    // invariant(\n    //   resumeTokenLength >= 0 && resumeTokenLength <= MAX_RESUME_LENGTH,\n    //   \"RSocketBinaryFraming: Invalid SETUP frame, expected resumeToken length \" +\n    //     \"to be >= 0 and <= %s. Got `%s`.\",\n    //   MAX_RESUME_LENGTH,\n    //   resumeTokenLength\n    // );\n    var resumeToken = buffer.slice(offset, offset + resumeTokenLength);\n    offset += resumeTokenLength;\n    var serverPosition = readUInt64BE(buffer, offset);\n    offset += 8;\n    var clientPosition = readUInt64BE(buffer, offset);\n    offset += 8;\n    return {\n        clientPosition: clientPosition,\n        flags: flags,\n        // length,\n        majorVersion: majorVersion,\n        minorVersion: minorVersion,\n        resumeToken: resumeToken,\n        serverPosition: serverPosition,\n        // streamId,\n        streamId: 0,\n        type: Frames_1.FrameTypes.RESUME,\n    };\n}\n/**\n * Writes a RESUME_OK frame into a new buffer and returns it.\n *\n * Fixed size is:\n * - client position (uint64 = 8)\n */\nvar RESUME_OK_FIXED_SIZE = 8;\nfunction serializeResumeOkFrame(frame) {\n    var buffer = Buffer.allocUnsafe(FRAME_HEADER_SIZE + RESUME_OK_FIXED_SIZE);\n    var offset = writeHeader(frame, buffer);\n    writeUInt64BE(buffer, frame.clientPosition, offset);\n    return buffer;\n}\nfunction sizeOfResumeOkFrame(frame) {\n    return FRAME_HEADER_SIZE + RESUME_OK_FIXED_SIZE;\n}\nfunction deserializeResumeOkFrame(buffer, streamId, flags) {\n    // invariant(\n    //   streamId === 0,\n    //   \"RSocketBinaryFraming: Invalid RESUME frame, expected stream id to be 0.\"\n    // );\n    var length = buffer.length;\n    var clientPosition = readUInt64BE(buffer, FRAME_HEADER_SIZE);\n    return {\n        clientPosition: clientPosition,\n        flags: flags,\n        // length,\n        // streamId,\n        streamId: 0,\n        type: Frames_1.FrameTypes.RESUME_OK,\n    };\n}\n/**\n * Write the header of the frame into the buffer.\n */\nfunction writeHeader(frame, buffer) {\n    var offset = buffer.writeInt32BE(frame.streamId, 0);\n    // shift frame to high 6 bits, extract lowest 10 bits from flags\n    return buffer.writeUInt16BE((frame.type << exports.FRAME_TYPE_OFFFSET) | (frame.flags & exports.FLAGS_MASK), offset);\n}\n/**\n * Determine the length of the payload section of a frame. Only applies to\n * frame types that MAY have both metadata and data.\n */\nfunction getPayloadLength(frame) {\n    var payloadLength = 0;\n    if (frame.data != null) {\n        payloadLength += frame.data.byteLength;\n    }\n    if (Frames_1.Flags.hasMetadata(frame.flags)) {\n        payloadLength += UINT24_SIZE;\n        if (frame.metadata != null) {\n            payloadLength += frame.metadata.byteLength;\n        }\n    }\n    return payloadLength;\n}\n/**\n * Write the payload of a frame into the given buffer. Only applies to frame\n * types that MAY have both metadata and data.\n */\nfunction writePayload(frame, buffer, offset) {\n    if (Frames_1.Flags.hasMetadata(frame.flags)) {\n        if (frame.metadata != null) {\n            var metaLength = frame.metadata.byteLength;\n            offset = writeUInt24BE(buffer, metaLength, offset);\n            offset += frame.metadata.copy(buffer, offset);\n        }\n        else {\n            offset = writeUInt24BE(buffer, 0, offset);\n        }\n    }\n    if (frame.data != null) {\n        frame.data.copy(buffer, offset);\n    }\n}\n/**\n * Read the payload from a buffer and write it into the frame. Only applies to\n * frame types that MAY have both metadata and data.\n */\nfunction readPayload(buffer, frame, offset) {\n    if (Frames_1.Flags.hasMetadata(frame.flags)) {\n        var metaLength = readUInt24BE(buffer, offset);\n        offset += UINT24_SIZE;\n        if (metaLength > 0) {\n            frame.metadata = buffer.slice(offset, offset + metaLength);\n            offset += metaLength;\n        }\n    }\n    if (offset < buffer.length) {\n        frame.data = buffer.slice(offset, buffer.length);\n    }\n}\n// exported as class to facilitate testing\nvar Deserializer = /** @class */ (function () {\n    function Deserializer() {\n    }\n    /**\n     * Read a frame from the buffer.\n     */\n    Deserializer.prototype.deserializeFrame = function (buffer) {\n        return deserializeFrame(buffer);\n    };\n    /**\n     * Reads a frame from a buffer that is prefixed with the frame length.\n     */\n    Deserializer.prototype.deserializeFrameWithLength = function (buffer) {\n        return deserializeFrameWithLength(buffer);\n    };\n    /**\n     * Given a buffer that may contain zero or more length-prefixed frames followed\n     * by zero or more bytes of a (partial) subsequent frame, returns an array of\n     * the frames and a int representing the buffer offset.\n     */\n    Deserializer.prototype.deserializeFrames = function (buffer) {\n        return deserializeFrames(buffer);\n    };\n    return Deserializer;\n}());\nexports.Deserializer = Deserializer;\n//# sourceMappingURL=Codecs.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Common.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nvar Deferred = /** @class */ (function () {\n    function Deferred() {\n        this._done = false;\n        this.onCloseCallbacks = [];\n    }\n    Object.defineProperty(Deferred.prototype, \"done\", {\n        get: function () {\n            return this._done;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Signals to an observer that the Deferred operation has been closed, which invokes\n     * the provided `onClose` callback.\n     */\n    Deferred.prototype.close = function (error) {\n        var e_1, _a, e_2, _b;\n        if (this.done) {\n            console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        this._done = true;\n        this._error = error;\n        if (error) {\n            try {\n                for (var _c = __values(this.onCloseCallbacks), _d = _c.next(); !_d.done; _d = _c.next()) {\n                    var callback = _d.value;\n                    callback(error);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return;\n        }\n        try {\n            for (var _e = __values(this.onCloseCallbacks), _f = _e.next(); !_f.done; _f = _e.next()) {\n                var callback = _f.value;\n                callback();\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n    };\n    /**\n     * Registers a callback to be called when the Closeable is closed. optionally with an Error.\n     */\n    Deferred.prototype.onClose = function (callback) {\n        if (this._done) {\n            callback(this._error);\n            return;\n        }\n        this.onCloseCallbacks.push(callback);\n    };\n    return Deferred;\n}());\nexports.Deferred = Deferred;\n//# sourceMappingURL=Deferred.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorCodes = exports.RSocketError = void 0;\nvar RSocketError = /** @class */ (function (_super) {\n    __extends(RSocketError, _super);\n    function RSocketError(code, message) {\n        var _this = _super.call(this, message) || this;\n        _this.code = code;\n        return _this;\n    }\n    return RSocketError;\n}(Error));\nexports.RSocketError = RSocketError;\nvar ErrorCodes;\n(function (ErrorCodes) {\n    ErrorCodes[ErrorCodes[\"RESERVED\"] = 0] = \"RESERVED\";\n    ErrorCodes[ErrorCodes[\"INVALID_SETUP\"] = 1] = \"INVALID_SETUP\";\n    ErrorCodes[ErrorCodes[\"UNSUPPORTED_SETUP\"] = 2] = \"UNSUPPORTED_SETUP\";\n    ErrorCodes[ErrorCodes[\"REJECTED_SETUP\"] = 3] = \"REJECTED_SETUP\";\n    ErrorCodes[ErrorCodes[\"REJECTED_RESUME\"] = 4] = \"REJECTED_RESUME\";\n    ErrorCodes[ErrorCodes[\"CONNECTION_CLOSE\"] = 258] = \"CONNECTION_CLOSE\";\n    ErrorCodes[ErrorCodes[\"CONNECTION_ERROR\"] = 257] = \"CONNECTION_ERROR\";\n    ErrorCodes[ErrorCodes[\"APPLICATION_ERROR\"] = 513] = \"APPLICATION_ERROR\";\n    ErrorCodes[ErrorCodes[\"REJECTED\"] = 514] = \"REJECTED\";\n    ErrorCodes[ErrorCodes[\"CANCELED\"] = 515] = \"CANCELED\";\n    ErrorCodes[ErrorCodes[\"INVALID\"] = 516] = \"INVALID\";\n    ErrorCodes[ErrorCodes[\"RESERVED_EXTENSION\"] = 4294967295] = \"RESERVED_EXTENSION\";\n})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\n//# sourceMappingURL=Errors.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=RSocket.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer = exports.ResumableClientServerInputMultiplexerDemultiplexer = exports.ClientServerInputMultiplexerDemultiplexer = exports.StreamIdGenerator = void 0;\nvar _1 = require(\".\");\nvar Deferred_1 = require(\"./Deferred\");\nvar Errors_1 = require(\"./Errors\");\nvar Frames_1 = require(\"./Frames\");\nvar StreamIdGenerator;\n(function (StreamIdGenerator) {\n    function create(seedId) {\n        return new StreamIdGeneratorImpl(seedId);\n    }\n    StreamIdGenerator.create = create;\n    var StreamIdGeneratorImpl = /** @class */ (function () {\n        function StreamIdGeneratorImpl(currentId) {\n            this.currentId = currentId;\n        }\n        StreamIdGeneratorImpl.prototype.next = function (handler) {\n            var nextId = this.currentId + 2;\n            if (!handler(nextId)) {\n                return;\n            }\n            this.currentId = nextId;\n        };\n        return StreamIdGeneratorImpl;\n    }());\n})(StreamIdGenerator = exports.StreamIdGenerator || (exports.StreamIdGenerator = {}));\nvar ClientServerInputMultiplexerDemultiplexer = /** @class */ (function (_super) {\n    __extends(ClientServerInputMultiplexerDemultiplexer, _super);\n    function ClientServerInputMultiplexerDemultiplexer(streamIdSupplier, outbound, closeable) {\n        var _this = _super.call(this) || this;\n        _this.streamIdSupplier = streamIdSupplier;\n        _this.outbound = outbound;\n        _this.closeable = closeable;\n        _this.registry = {};\n        closeable.onClose(_this.close.bind(_this));\n        return _this;\n    }\n    ClientServerInputMultiplexerDemultiplexer.prototype.handle = function (frame) {\n        if (Frames_1.Frame.isConnection(frame)) {\n            if (frame.type === _1.FrameTypes.RESERVED) {\n                // TODO: throw\n                return;\n            }\n            this.connectionFramesHandler.handle(frame);\n            // TODO: Connection Handler\n        }\n        else if (Frames_1.Frame.isRequest(frame)) {\n            if (this.registry[frame.streamId]) {\n                // TODO: Send error and close connection\n                return;\n            }\n            this.requestFramesHandler.handle(frame, this);\n        }\n        else {\n            var handler = this.registry[frame.streamId];\n            if (!handler) {\n                // TODO: add validation\n                return;\n            }\n            handler.handle(frame);\n        }\n        // TODO: add extensions support\n    };\n    ClientServerInputMultiplexerDemultiplexer.prototype.connectionInbound = function (handler) {\n        if (this.connectionFramesHandler) {\n            throw new Error(\"Connection frame handler has already been installed\");\n        }\n        this.connectionFramesHandler = handler;\n    };\n    ClientServerInputMultiplexerDemultiplexer.prototype.handleRequestStream = function (handler) {\n        if (this.requestFramesHandler) {\n            throw new Error(\"Stream handler has already been installed\");\n        }\n        this.requestFramesHandler = handler;\n    };\n    ClientServerInputMultiplexerDemultiplexer.prototype.send = function (frame) {\n        this.outbound.send(frame);\n    };\n    Object.defineProperty(ClientServerInputMultiplexerDemultiplexer.prototype, \"connectionOutbound\", {\n        get: function () {\n            return this;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ClientServerInputMultiplexerDemultiplexer.prototype.createRequestStream = function (streamHandler) {\n        var _this = this;\n        // handle requester side stream registration\n        if (this.done) {\n            streamHandler.handleReject(new Error(\"Already closed\"));\n            return;\n        }\n        var registry = this.registry;\n        this.streamIdSupplier.next(function (streamId) { return streamHandler.handleReady(streamId, _this); }, Object.keys(registry));\n    };\n    ClientServerInputMultiplexerDemultiplexer.prototype.connect = function (handler) {\n        this.registry[handler.streamId] = handler;\n    };\n    ClientServerInputMultiplexerDemultiplexer.prototype.disconnect = function (stream) {\n        delete this.registry[stream.streamId];\n    };\n    ClientServerInputMultiplexerDemultiplexer.prototype.close = function (error) {\n        if (this.done) {\n            _super.prototype.close.call(this, error);\n            return;\n        }\n        for (var streamId in this.registry) {\n            var stream = this.registry[streamId];\n            stream.close(new Error(\"Closed. \".concat(error ? \"Original cause [\".concat(error, \"].\") : \"\")));\n        }\n        _super.prototype.close.call(this, error);\n    };\n    return ClientServerInputMultiplexerDemultiplexer;\n}(Deferred_1.Deferred));\nexports.ClientServerInputMultiplexerDemultiplexer = ClientServerInputMultiplexerDemultiplexer;\nvar ResumableClientServerInputMultiplexerDemultiplexer = /** @class */ (function (_super) {\n    __extends(ResumableClientServerInputMultiplexerDemultiplexer, _super);\n    function ResumableClientServerInputMultiplexerDemultiplexer(streamIdSupplier, outbound, closeable, frameStore, token, sessionStoreOrReconnector, sessionTimeout) {\n        var _this = _super.call(this, streamIdSupplier, outbound, new Deferred_1.Deferred()) || this;\n        _this.frameStore = frameStore;\n        _this.token = token;\n        _this.sessionTimeout = sessionTimeout;\n        if (sessionStoreOrReconnector instanceof Function) {\n            _this.reconnector = sessionStoreOrReconnector;\n        }\n        else {\n            _this.sessionStore = sessionStoreOrReconnector;\n        }\n        closeable.onClose(_this.handleConnectionClose.bind(_this));\n        return _this;\n    }\n    ResumableClientServerInputMultiplexerDemultiplexer.prototype.send = function (frame) {\n        if (Frames_1.Frame.isConnection(frame)) {\n            if (frame.type === _1.FrameTypes.KEEPALIVE) {\n                frame.lastReceivedPosition = this.frameStore.lastReceivedFramePosition;\n            }\n            else if (frame.type === _1.FrameTypes.ERROR) {\n                this.outbound.send(frame);\n                if (this.sessionStore) {\n                    delete this.sessionStore[this.token];\n                }\n                _super.prototype.close.call(this, new Errors_1.RSocketError(frame.code, frame.message));\n                return;\n            }\n        }\n        else {\n            this.frameStore.store(frame);\n        }\n        this.outbound.send(frame);\n    };\n    ResumableClientServerInputMultiplexerDemultiplexer.prototype.handle = function (frame) {\n        if (Frames_1.Frame.isConnection(frame)) {\n            if (frame.type === _1.FrameTypes.KEEPALIVE) {\n                try {\n                    this.frameStore.dropTo(frame.lastReceivedPosition);\n                }\n                catch (re) {\n                    this.outbound.send({\n                        type: _1.FrameTypes.ERROR,\n                        streamId: 0,\n                        flags: _1.Flags.NONE,\n                        code: re.code,\n                        message: re.message,\n                    });\n                    this.close(re);\n                }\n            }\n            else if (frame.type === _1.FrameTypes.ERROR) {\n                _super.prototype.handle.call(this, frame);\n                if (this.sessionStore) {\n                    delete this.sessionStore[this.token];\n                }\n                _super.prototype.close.call(this, new Errors_1.RSocketError(frame.code, frame.message));\n                return;\n            }\n        }\n        else {\n            this.frameStore.record(frame);\n        }\n        _super.prototype.handle.call(this, frame);\n    };\n    ResumableClientServerInputMultiplexerDemultiplexer.prototype.resume = function (frame, outbound, closeable) {\n        this.outbound = outbound;\n        switch (frame.type) {\n            case _1.FrameTypes.RESUME: {\n                clearTimeout(this.timeoutId);\n                if (this.frameStore.lastReceivedFramePosition < frame.clientPosition) {\n                    var e = new Errors_1.RSocketError(_1.ErrorCodes.REJECTED_RESUME, \"Impossible to resume since first available client frame position is greater than last received server frame position\");\n                    this.outbound.send({\n                        type: _1.FrameTypes.ERROR,\n                        streamId: 0,\n                        flags: _1.Flags.NONE,\n                        code: e.code,\n                        message: e.message,\n                    });\n                    this.close(e);\n                    return;\n                }\n                try {\n                    this.frameStore.dropTo(frame.serverPosition);\n                }\n                catch (re) {\n                    this.outbound.send({\n                        type: _1.FrameTypes.ERROR,\n                        streamId: 0,\n                        flags: _1.Flags.NONE,\n                        code: re.code,\n                        message: re.message,\n                    });\n                    this.close(re);\n                    return;\n                }\n                this.outbound.send({\n                    type: _1.FrameTypes.RESUME_OK,\n                    streamId: 0,\n                    flags: _1.Flags.NONE,\n                    clientPosition: this.frameStore.lastReceivedFramePosition,\n                });\n                break;\n            }\n            case _1.FrameTypes.RESUME_OK: {\n                try {\n                    this.frameStore.dropTo(frame.clientPosition);\n                }\n                catch (re) {\n                    this.outbound.send({\n                        type: _1.FrameTypes.ERROR,\n                        streamId: 0,\n                        flags: _1.Flags.NONE,\n                        code: re.code,\n                        message: re.message,\n                    });\n                    this.close(re);\n                }\n                break;\n            }\n        }\n        this.frameStore.drain(this.outbound.send.bind(this.outbound));\n        closeable.onClose(this.handleConnectionClose.bind(this));\n        this.connectionFramesHandler.resume();\n    };\n    ResumableClientServerInputMultiplexerDemultiplexer.prototype.handleConnectionClose = function (_error) {\n        return __awaiter(this, void 0, void 0, function () {\n            var e_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.connectionFramesHandler.pause();\n                        if (!this.reconnector) return [3 /*break*/, 5];\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, this.reconnector(this, this.frameStore)];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _a.sent();\n                        this.close(e_1);\n                        return [3 /*break*/, 4];\n                    case 4: return [3 /*break*/, 6];\n                    case 5:\n                        this.timeoutId = setTimeout(this.close.bind(this), this.sessionTimeout);\n                        _a.label = 6;\n                    case 6: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return ResumableClientServerInputMultiplexerDemultiplexer;\n}(ClientServerInputMultiplexerDemultiplexer));\nexports.ResumableClientServerInputMultiplexerDemultiplexer = ResumableClientServerInputMultiplexerDemultiplexer;\nvar ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer = /** @class */ (function () {\n    function ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer(outbound, closeable, delegate) {\n        this.outbound = outbound;\n        this.closeable = closeable;\n        this.delegate = delegate;\n        this.resumed = false;\n    }\n    ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.close = function () {\n        this.delegate.close();\n    };\n    ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.onClose = function (callback) {\n        this.delegate.onClose(callback);\n    };\n    Object.defineProperty(ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype, \"connectionOutbound\", {\n        get: function () {\n            return this.delegate.connectionOutbound;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.createRequestStream = function (streamHandler) {\n        this.delegate.createRequestStream(streamHandler);\n    };\n    ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.connectionInbound = function (handler) {\n        this.delegate.connectionInbound(handler);\n    };\n    ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.handleRequestStream = function (handler) {\n        this.delegate.handleRequestStream(handler);\n    };\n    ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.handle = function (frame) {\n        var _this = this;\n        if (!this.resumed) {\n            if (frame.type === _1.FrameTypes.RESUME_OK) {\n                this.resumed = true;\n                this.delegate.resume(frame, this.outbound, this.closeable);\n                return;\n            }\n            else {\n                this.outbound.send({\n                    type: _1.FrameTypes.ERROR,\n                    streamId: 0,\n                    code: _1.ErrorCodes.CONNECTION_ERROR,\n                    message: \"Incomplete RESUME handshake. Unexpected frame \".concat(frame.type, \" received\"),\n                    flags: _1.Flags.NONE,\n                });\n                this.closeable.close();\n                this.closeable.onClose(function () {\n                    return _this.delegate.close(new Errors_1.RSocketError(_1.ErrorCodes.CONNECTION_ERROR, \"Incomplete RESUME handshake. Unexpected frame \".concat(frame.type, \" received\")));\n                });\n            }\n            return;\n        }\n        this.delegate.handle(frame);\n    };\n    return ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer;\n}());\nexports.ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer = ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer;\n//# sourceMappingURL=ClientServerMultiplexerDemultiplexer.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentWithRequestN = exports.fragment = exports.isFragmentable = void 0;\nvar Frames_1 = require(\"./Frames\");\nfunction isFragmentable(payload, fragmentSize, frameType) {\n    if (fragmentSize === 0) {\n        return false;\n    }\n    return (payload.data.byteLength +\n        (payload.metadata ? payload.metadata.byteLength + Frames_1.Lengths.METADATA : 0) +\n        (frameType == Frames_1.FrameTypes.REQUEST_STREAM ||\n            frameType == Frames_1.FrameTypes.REQUEST_CHANNEL\n            ? Frames_1.Lengths.REQUEST\n            : 0) >\n        fragmentSize);\n}\nexports.isFragmentable = isFragmentable;\nfunction fragment(streamId, payload, fragmentSize, frameType, isComplete) {\n    var dataLength, firstFrame, remaining, metadata, metadataLength, metadataPosition, nextMetadataPosition, nextMetadataPosition, dataPosition, data, nextDataPosition, nextDataPosition;\n    var _a, _b;\n    if (isComplete === void 0) { isComplete = false; }\n    return __generator(this, function (_c) {\n        switch (_c.label) {\n            case 0:\n                dataLength = (_b = (_a = payload.data) === null || _a === void 0 ? void 0 : _a.byteLength) !== null && _b !== void 0 ? _b : 0;\n                firstFrame = frameType !== Frames_1.FrameTypes.PAYLOAD;\n                remaining = fragmentSize;\n                if (!payload.metadata) return [3 /*break*/, 6];\n                metadataLength = payload.metadata.byteLength;\n                if (!(metadataLength === 0)) return [3 /*break*/, 1];\n                remaining -= Frames_1.Lengths.METADATA;\n                metadata = Buffer.allocUnsafe(0);\n                return [3 /*break*/, 6];\n            case 1:\n                metadataPosition = 0;\n                if (!firstFrame) return [3 /*break*/, 3];\n                remaining -= Frames_1.Lengths.METADATA;\n                nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n                metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n                remaining -= metadata.byteLength;\n                metadataPosition = nextMetadataPosition;\n                if (!(remaining === 0)) return [3 /*break*/, 3];\n                firstFrame = false;\n                return [4 /*yield*/, {\n                        type: frameType,\n                        flags: Frames_1.Flags.FOLLOWS | Frames_1.Flags.METADATA,\n                        data: undefined,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 2:\n                _c.sent();\n                metadata = undefined;\n                remaining = fragmentSize;\n                _c.label = 3;\n            case 3:\n                if (!(metadataPosition < metadataLength)) return [3 /*break*/, 6];\n                remaining -= Frames_1.Lengths.METADATA;\n                nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n                metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n                remaining -= metadata.byteLength;\n                metadataPosition = nextMetadataPosition;\n                if (!(remaining === 0 || dataLength === 0)) return [3 /*break*/, 5];\n                return [4 /*yield*/, {\n                        type: Frames_1.FrameTypes.PAYLOAD,\n                        flags: Frames_1.Flags.NEXT |\n                            Frames_1.Flags.METADATA |\n                            (metadataPosition === metadataLength &&\n                                isComplete &&\n                                dataLength === 0\n                                ? Frames_1.Flags.COMPLETE\n                                : Frames_1.Flags.FOLLOWS),\n                        data: undefined,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 4:\n                _c.sent();\n                metadata = undefined;\n                remaining = fragmentSize;\n                _c.label = 5;\n            case 5: return [3 /*break*/, 3];\n            case 6:\n                dataPosition = 0;\n                if (!firstFrame) return [3 /*break*/, 8];\n                nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n                data = payload.data.slice(dataPosition, nextDataPosition);\n                remaining -= data.byteLength;\n                dataPosition = nextDataPosition;\n                return [4 /*yield*/, {\n                        type: frameType,\n                        flags: Frames_1.Flags.FOLLOWS | (metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n                        data: data,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 7:\n                _c.sent();\n                metadata = undefined;\n                data = undefined;\n                remaining = fragmentSize;\n                _c.label = 8;\n            case 8:\n                if (!(dataPosition < dataLength)) return [3 /*break*/, 10];\n                nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n                data = payload.data.slice(dataPosition, nextDataPosition);\n                remaining -= data.byteLength;\n                dataPosition = nextDataPosition;\n                return [4 /*yield*/, {\n                        type: Frames_1.FrameTypes.PAYLOAD,\n                        flags: dataPosition === dataLength\n                            ? (isComplete ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n                                Frames_1.Flags.NEXT |\n                                (metadata ? Frames_1.Flags.METADATA : 0)\n                            : Frames_1.Flags.FOLLOWS | Frames_1.Flags.NEXT | (metadata ? Frames_1.Flags.METADATA : 0),\n                        data: data,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 9:\n                _c.sent();\n                metadata = undefined;\n                data = undefined;\n                remaining = fragmentSize;\n                return [3 /*break*/, 8];\n            case 10: return [2 /*return*/];\n        }\n    });\n}\nexports.fragment = fragment;\nfunction fragmentWithRequestN(streamId, payload, fragmentSize, frameType, requestN, isComplete) {\n    var dataLength, firstFrame, remaining, metadata, metadataLength, metadataPosition, nextMetadataPosition, nextMetadataPosition, dataPosition, data, nextDataPosition, nextDataPosition;\n    var _a, _b;\n    if (isComplete === void 0) { isComplete = false; }\n    return __generator(this, function (_c) {\n        switch (_c.label) {\n            case 0:\n                dataLength = (_b = (_a = payload.data) === null || _a === void 0 ? void 0 : _a.byteLength) !== null && _b !== void 0 ? _b : 0;\n                firstFrame = true;\n                remaining = fragmentSize;\n                if (!payload.metadata) return [3 /*break*/, 6];\n                metadataLength = payload.metadata.byteLength;\n                if (!(metadataLength === 0)) return [3 /*break*/, 1];\n                remaining -= Frames_1.Lengths.METADATA;\n                metadata = Buffer.allocUnsafe(0);\n                return [3 /*break*/, 6];\n            case 1:\n                metadataPosition = 0;\n                if (!firstFrame) return [3 /*break*/, 3];\n                remaining -= Frames_1.Lengths.METADATA + Frames_1.Lengths.REQUEST;\n                nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n                metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n                remaining -= metadata.byteLength;\n                metadataPosition = nextMetadataPosition;\n                if (!(remaining === 0)) return [3 /*break*/, 3];\n                firstFrame = false;\n                return [4 /*yield*/, {\n                        type: frameType,\n                        flags: Frames_1.Flags.FOLLOWS | Frames_1.Flags.METADATA,\n                        data: undefined,\n                        requestN: requestN,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 2:\n                _c.sent();\n                metadata = undefined;\n                remaining = fragmentSize;\n                _c.label = 3;\n            case 3:\n                if (!(metadataPosition < metadataLength)) return [3 /*break*/, 6];\n                remaining -= Frames_1.Lengths.METADATA;\n                nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n                metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n                remaining -= metadata.byteLength;\n                metadataPosition = nextMetadataPosition;\n                if (!(remaining === 0 || dataLength === 0)) return [3 /*break*/, 5];\n                return [4 /*yield*/, {\n                        type: Frames_1.FrameTypes.PAYLOAD,\n                        flags: Frames_1.Flags.NEXT |\n                            Frames_1.Flags.METADATA |\n                            (metadataPosition === metadataLength &&\n                                isComplete &&\n                                dataLength === 0\n                                ? Frames_1.Flags.COMPLETE\n                                : Frames_1.Flags.FOLLOWS),\n                        data: undefined,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 4:\n                _c.sent();\n                metadata = undefined;\n                remaining = fragmentSize;\n                _c.label = 5;\n            case 5: return [3 /*break*/, 3];\n            case 6:\n                dataPosition = 0;\n                if (!firstFrame) return [3 /*break*/, 8];\n                remaining -= Frames_1.Lengths.REQUEST;\n                nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n                data = payload.data.slice(dataPosition, nextDataPosition);\n                remaining -= data.byteLength;\n                dataPosition = nextDataPosition;\n                return [4 /*yield*/, {\n                        type: frameType,\n                        flags: Frames_1.Flags.FOLLOWS | (metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n                        data: data,\n                        requestN: requestN,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 7:\n                _c.sent();\n                metadata = undefined;\n                data = undefined;\n                remaining = fragmentSize;\n                _c.label = 8;\n            case 8:\n                if (!(dataPosition < dataLength)) return [3 /*break*/, 10];\n                nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n                data = payload.data.slice(dataPosition, nextDataPosition);\n                remaining -= data.byteLength;\n                dataPosition = nextDataPosition;\n                return [4 /*yield*/, {\n                        type: Frames_1.FrameTypes.PAYLOAD,\n                        flags: dataPosition === dataLength\n                            ? (isComplete ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n                                Frames_1.Flags.NEXT |\n                                (metadata ? Frames_1.Flags.METADATA : 0)\n                            : Frames_1.Flags.FOLLOWS | Frames_1.Flags.NEXT | (metadata ? Frames_1.Flags.METADATA : 0),\n                        data: data,\n                        metadata: metadata,\n                        streamId: streamId,\n                    }];\n            case 9:\n                _c.sent();\n                metadata = undefined;\n                data = undefined;\n                remaining = fragmentSize;\n                return [3 /*break*/, 8];\n            case 10: return [2 /*return*/];\n        }\n    });\n}\nexports.fragmentWithRequestN = fragmentWithRequestN;\n//# sourceMappingURL=Fragmenter.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cancel = exports.reassemble = exports.add = void 0;\nfunction add(holder, dataFragment, metadataFragment) {\n    if (!holder.hasFragments) {\n        holder.hasFragments = true;\n        holder.data = dataFragment;\n        if (metadataFragment) {\n            holder.metadata = metadataFragment;\n        }\n        return true;\n    }\n    // TODO: add validation\n    holder.data = holder.data\n        ? Buffer.concat([holder.data, dataFragment])\n        : dataFragment;\n    if (holder.metadata && metadataFragment) {\n        holder.metadata = Buffer.concat([holder.metadata, metadataFragment]);\n    }\n    return true;\n}\nexports.add = add;\nfunction reassemble(holder, dataFragment, metadataFragment) {\n    // TODO: add validation\n    holder.hasFragments = false;\n    var data = holder.data\n        ? Buffer.concat([holder.data, dataFragment])\n        : dataFragment;\n    holder.data = undefined;\n    if (holder.metadata) {\n        var metadata = metadataFragment\n            ? Buffer.concat([holder.metadata, metadataFragment])\n            : holder.metadata;\n        holder.metadata = undefined;\n        return {\n            data: data,\n            metadata: metadata,\n        };\n    }\n    return {\n        data: data,\n    };\n}\nexports.reassemble = reassemble;\nfunction cancel(holder) {\n    holder.hasFragments = false;\n    holder.data = undefined;\n    holder.metadata = undefined;\n}\nexports.cancel = cancel;\n//# sourceMappingURL=Reassembler.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestChannelResponderStream = exports.RequestChannelRequesterStream = void 0;\nvar Errors_1 = require(\"./Errors\");\nvar Fragmenter_1 = require(\"./Fragmenter\");\nvar Frames_1 = require(\"./Frames\");\nvar Reassembler = __importStar(require(\"./Reassembler\"));\nvar RequestChannelRequesterStream = /** @class */ (function () {\n    function RequestChannelRequesterStream(payload, isComplete, receiver, fragmentSize, initialRequestN, leaseManager) {\n        this.payload = payload;\n        this.isComplete = isComplete;\n        this.receiver = receiver;\n        this.fragmentSize = fragmentSize;\n        this.initialRequestN = initialRequestN;\n        this.leaseManager = leaseManager;\n        this.streamType = Frames_1.FrameTypes.REQUEST_CHANNEL;\n        // TODO: add payload size validation\n    }\n    RequestChannelRequesterStream.prototype.handleReady = function (streamId, stream) {\n        var e_1, _a;\n        if (this.outboundDone) {\n            return false;\n        }\n        this.streamId = streamId;\n        this.stream = stream;\n        stream.connect(this);\n        var isCompleted = this.isComplete;\n        if (isCompleted) {\n            this.outboundDone = isCompleted;\n        }\n        if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_CHANNEL)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragmentWithRequestN)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_CHANNEL, this.initialRequestN, isCompleted)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.REQUEST_CHANNEL,\n                data: this.payload.data,\n                metadata: this.payload.metadata,\n                requestN: this.initialRequestN,\n                flags: (this.payload.metadata !== undefined ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE) |\n                    (isCompleted ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE),\n                streamId: streamId,\n            });\n        }\n        if (this.hasExtension) {\n            this.stream.send({\n                type: Frames_1.FrameTypes.EXT,\n                streamId: streamId,\n                extendedContent: this.extendedContent,\n                extendedType: this.extendedType,\n                flags: this.flags,\n            });\n        }\n        return true;\n    };\n    RequestChannelRequesterStream.prototype.handleReject = function (error) {\n        if (this.inboundDone) {\n            return;\n        }\n        this.inboundDone = true;\n        this.outboundDone = true;\n        this.receiver.onError(error);\n    };\n    RequestChannelRequesterStream.prototype.handle = function (frame) {\n        var errorMessage;\n        var frameType = frame.type;\n        switch (frameType) {\n            case Frames_1.FrameTypes.PAYLOAD: {\n                var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n                var hasNext = Frames_1.Flags.hasNext(frame.flags);\n                if (hasComplete || !Frames_1.Flags.hasFollows(frame.flags)) {\n                    if (hasComplete) {\n                        this.inboundDone = true;\n                        if (this.outboundDone) {\n                            this.stream.disconnect(this);\n                        }\n                        if (!hasNext) {\n                            // TODO: add validation no frame in reassembly\n                            this.receiver.onComplete();\n                            return;\n                        }\n                    }\n                    var payload = this.hasFragments\n                        ? Reassembler.reassemble(this, frame.data, frame.metadata)\n                        : {\n                            data: frame.data,\n                            metadata: frame.metadata,\n                        };\n                    this.receiver.onNext(payload, hasComplete);\n                    return;\n                }\n                if (Reassembler.add(this, frame.data, frame.metadata)) {\n                    return;\n                }\n                errorMessage = \"Unexpected frame size\";\n                break;\n            }\n            case Frames_1.FrameTypes.CANCEL: {\n                if (this.outboundDone) {\n                    return;\n                }\n                this.outboundDone = true;\n                if (this.inboundDone) {\n                    this.stream.disconnect(this);\n                }\n                this.receiver.cancel();\n                return;\n            }\n            case Frames_1.FrameTypes.REQUEST_N: {\n                if (this.outboundDone) {\n                    return;\n                }\n                if (this.hasFragments) {\n                    errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n                    break;\n                }\n                this.receiver.request(frame.requestN);\n                return;\n            }\n            case Frames_1.FrameTypes.ERROR: {\n                var outboundDone = this.outboundDone;\n                this.inboundDone = true;\n                this.outboundDone = true;\n                this.stream.disconnect(this);\n                Reassembler.cancel(this);\n                if (!outboundDone) {\n                    this.receiver.cancel();\n                }\n                this.receiver.onError(new Errors_1.RSocketError(frame.code, frame.message));\n                return;\n            }\n            case Frames_1.FrameTypes.EXT:\n                this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n                return;\n            default: {\n                errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n            }\n        }\n        this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n        this.stream.send({\n            type: Frames_1.FrameTypes.CANCEL,\n            streamId: this.streamId,\n            flags: Frames_1.Flags.NONE,\n        });\n        this.stream.disconnect(this);\n    };\n    RequestChannelRequesterStream.prototype.request = function (n) {\n        if (this.inboundDone) {\n            return;\n        }\n        if (!this.streamId) {\n            this.initialRequestN += n;\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.REQUEST_N,\n            flags: Frames_1.Flags.NONE,\n            requestN: n,\n            streamId: this.streamId,\n        });\n    };\n    RequestChannelRequesterStream.prototype.cancel = function () {\n        var _a;\n        var inboundDone = this.inboundDone;\n        var outboundDone = this.outboundDone;\n        if (inboundDone && outboundDone) {\n            return;\n        }\n        this.inboundDone = true;\n        this.outboundDone = true;\n        if (!outboundDone) {\n            this.receiver.cancel();\n        }\n        if (!this.streamId) {\n            (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n            return;\n        }\n        this.stream.send({\n            type: inboundDone ? Frames_1.FrameTypes.ERROR : Frames_1.FrameTypes.CANCEL,\n            flags: Frames_1.Flags.NONE,\n            streamId: this.streamId,\n            code: Errors_1.ErrorCodes.CANCELED,\n            message: \"Cancelled\",\n        });\n        this.stream.disconnect(this);\n        Reassembler.cancel(this);\n    };\n    RequestChannelRequesterStream.prototype.onNext = function (payload, isComplete) {\n        var e_2, _a;\n        if (this.outboundDone) {\n            return;\n        }\n        if (isComplete) {\n            this.outboundDone = true;\n            if (this.inboundDone) {\n                this.stream.disconnect(this);\n            }\n        }\n        if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, isComplete)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.PAYLOAD,\n                streamId: this.streamId,\n                flags: Frames_1.Flags.NEXT |\n                    (payload.metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE) |\n                    (isComplete ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE),\n                data: payload.data,\n                metadata: payload.metadata,\n            });\n        }\n    };\n    RequestChannelRequesterStream.prototype.onComplete = function () {\n        if (!this.streamId) {\n            this.isComplete = true;\n            return;\n        }\n        if (this.outboundDone) {\n            return;\n        }\n        this.outboundDone = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.PAYLOAD,\n            streamId: this.streamId,\n            flags: Frames_1.Flags.COMPLETE,\n            data: null,\n            metadata: null,\n        });\n        if (this.inboundDone) {\n            this.stream.disconnect(this);\n        }\n    };\n    RequestChannelRequesterStream.prototype.onError = function (error) {\n        if (this.outboundDone) {\n            return;\n        }\n        var inboundDone = this.inboundDone;\n        this.outboundDone = true;\n        this.inboundDone = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.ERROR,\n            streamId: this.streamId,\n            flags: Frames_1.Flags.NONE,\n            code: error instanceof Errors_1.RSocketError\n                ? error.code\n                : Errors_1.ErrorCodes.APPLICATION_ERROR,\n            message: error.message,\n        });\n        this.stream.disconnect(this);\n        if (!inboundDone) {\n            this.receiver.onError(error);\n        }\n    };\n    RequestChannelRequesterStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n        if (this.outboundDone) {\n            return;\n        }\n        if (!this.streamId) {\n            this.hasExtension = true;\n            this.extendedType = extendedType;\n            this.extendedContent = content;\n            this.flags = canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE;\n            return;\n        }\n        this.stream.send({\n            streamId: this.streamId,\n            type: Frames_1.FrameTypes.EXT,\n            extendedType: extendedType,\n            extendedContent: content,\n            flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n        });\n    };\n    RequestChannelRequesterStream.prototype.close = function (error) {\n        if (this.inboundDone && this.outboundDone) {\n            return;\n        }\n        var inboundDone = this.inboundDone;\n        var outboundDone = this.outboundDone;\n        this.inboundDone = true;\n        this.outboundDone = true;\n        Reassembler.cancel(this);\n        if (!outboundDone) {\n            this.receiver.cancel();\n        }\n        if (!inboundDone) {\n            if (error) {\n                this.receiver.onError(error);\n            }\n            else {\n                this.receiver.onComplete();\n            }\n        }\n    };\n    return RequestChannelRequesterStream;\n}());\nexports.RequestChannelRequesterStream = RequestChannelRequesterStream;\nvar RequestChannelResponderStream = /** @class */ (function () {\n    function RequestChannelResponderStream(streamId, stream, fragmentSize, handler, frame) {\n        this.streamId = streamId;\n        this.stream = stream;\n        this.fragmentSize = fragmentSize;\n        this.handler = handler;\n        this.streamType = Frames_1.FrameTypes.REQUEST_CHANNEL;\n        stream.connect(this);\n        if (Frames_1.Flags.hasFollows(frame.flags)) {\n            Reassembler.add(this, frame.data, frame.metadata);\n            this.initialRequestN = frame.requestN;\n            this.isComplete = Frames_1.Flags.hasComplete(frame.flags);\n            return;\n        }\n        var payload = {\n            data: frame.data,\n            metadata: frame.metadata,\n        };\n        var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n        this.inboundDone = hasComplete;\n        try {\n            this.receiver = handler(payload, frame.requestN, hasComplete, this);\n            if (this.outboundDone && this.defferedError) {\n                this.receiver.onError(this.defferedError);\n            }\n        }\n        catch (error) {\n            if (this.outboundDone && !this.inboundDone) {\n                this.cancel();\n            }\n            else {\n                this.inboundDone = true;\n            }\n            this.onError(error);\n        }\n    }\n    RequestChannelResponderStream.prototype.handle = function (frame) {\n        var errorMessage;\n        var frameType = frame.type;\n        switch (frameType) {\n            case Frames_1.FrameTypes.PAYLOAD: {\n                if (Frames_1.Flags.hasFollows(frame.flags)) {\n                    if (Reassembler.add(this, frame.data, frame.metadata)) {\n                        return;\n                    }\n                    errorMessage = \"Unexpected frame size\";\n                    break;\n                }\n                var payload = this.hasFragments\n                    ? Reassembler.reassemble(this, frame.data, frame.metadata)\n                    : {\n                        data: frame.data,\n                        metadata: frame.metadata,\n                    };\n                var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n                if (!this.receiver) {\n                    var inboundDone = this.isComplete || hasComplete;\n                    if (inboundDone) {\n                        this.inboundDone = true;\n                        if (this.outboundDone) {\n                            this.stream.disconnect(this);\n                        }\n                    }\n                    try {\n                        this.receiver = this.handler(payload, this.initialRequestN, inboundDone, this);\n                        if (this.outboundDone && this.defferedError) {\n                        }\n                    }\n                    catch (error) {\n                        if (this.outboundDone && !this.inboundDone) {\n                            this.cancel();\n                        }\n                        else {\n                            this.inboundDone = true;\n                        }\n                        this.onError(error);\n                    }\n                }\n                else {\n                    if (hasComplete) {\n                        this.inboundDone = true;\n                        if (this.outboundDone) {\n                            this.stream.disconnect(this);\n                        }\n                        if (!Frames_1.Flags.hasNext(frame.flags)) {\n                            this.receiver.onComplete();\n                            return;\n                        }\n                    }\n                    this.receiver.onNext(payload, hasComplete);\n                }\n                return;\n            }\n            case Frames_1.FrameTypes.REQUEST_N: {\n                if (!this.receiver || this.hasFragments) {\n                    errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n                    break;\n                }\n                this.receiver.request(frame.requestN);\n                return;\n            }\n            case Frames_1.FrameTypes.ERROR:\n            case Frames_1.FrameTypes.CANCEL: {\n                var inboundDone = this.inboundDone;\n                var outboundDone = this.outboundDone;\n                this.inboundDone = true;\n                this.outboundDone = true;\n                this.stream.disconnect(this);\n                Reassembler.cancel(this);\n                if (!this.receiver) {\n                    return;\n                }\n                if (!outboundDone) {\n                    this.receiver.cancel();\n                }\n                if (!inboundDone) {\n                    var error = frameType === Frames_1.FrameTypes.CANCEL\n                        ? new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, \"Cancelled\")\n                        : new Errors_1.RSocketError(frame.code, frame.message);\n                    this.receiver.onError(error);\n                }\n                return;\n            }\n            case Frames_1.FrameTypes.EXT: {\n                if (!this.receiver || this.hasFragments) {\n                    errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n                    break;\n                }\n                this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n                return;\n            }\n            default: {\n                errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n                // TODO: throws if strict\n            }\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.ERROR,\n            flags: Frames_1.Flags.NONE,\n            code: Errors_1.ErrorCodes.CANCELED,\n            message: errorMessage,\n            streamId: this.streamId,\n        });\n        this.stream.disconnect(this);\n        this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n    };\n    RequestChannelResponderStream.prototype.onError = function (error) {\n        if (this.outboundDone) {\n            console.warn(\"Trying to error for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        var inboundDone = this.inboundDone;\n        this.outboundDone = true;\n        this.inboundDone = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.ERROR,\n            flags: Frames_1.Flags.NONE,\n            code: error instanceof Errors_1.RSocketError\n                ? error.code\n                : Errors_1.ErrorCodes.APPLICATION_ERROR,\n            message: error.message,\n            streamId: this.streamId,\n        });\n        this.stream.disconnect(this);\n        if (!inboundDone) {\n            if (this.receiver) {\n                this.receiver.onError(error);\n            }\n            else {\n                this.defferedError = error;\n            }\n        }\n    };\n    RequestChannelResponderStream.prototype.onNext = function (payload, isCompletion) {\n        var e_3, _a;\n        if (this.outboundDone) {\n            return;\n        }\n        if (isCompletion) {\n            this.outboundDone = true;\n        }\n        // TODO: add payload size validation\n        if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, isCompletion)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.PAYLOAD,\n                flags: Frames_1.Flags.NEXT |\n                    (isCompletion ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n                    (payload.metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n                data: payload.data,\n                metadata: payload.metadata,\n                streamId: this.streamId,\n            });\n        }\n        if (isCompletion && this.inboundDone) {\n            this.stream.disconnect(this);\n        }\n    };\n    RequestChannelResponderStream.prototype.onComplete = function () {\n        if (this.outboundDone) {\n            return;\n        }\n        this.outboundDone = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.PAYLOAD,\n            flags: Frames_1.Flags.COMPLETE,\n            streamId: this.streamId,\n            data: null,\n            metadata: null,\n        });\n        if (this.inboundDone) {\n            this.stream.disconnect(this);\n        }\n    };\n    RequestChannelResponderStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n        if (this.outboundDone && this.inboundDone) {\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.EXT,\n            streamId: this.streamId,\n            flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n            extendedType: extendedType,\n            extendedContent: content,\n        });\n    };\n    RequestChannelResponderStream.prototype.request = function (n) {\n        if (this.inboundDone) {\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.REQUEST_N,\n            flags: Frames_1.Flags.NONE,\n            streamId: this.streamId,\n            requestN: n,\n        });\n    };\n    RequestChannelResponderStream.prototype.cancel = function () {\n        if (this.inboundDone) {\n            return;\n        }\n        this.inboundDone = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.CANCEL,\n            flags: Frames_1.Flags.NONE,\n            streamId: this.streamId,\n        });\n        if (this.outboundDone) {\n            this.stream.disconnect(this);\n        }\n    };\n    RequestChannelResponderStream.prototype.close = function (error) {\n        if (this.inboundDone && this.outboundDone) {\n            console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        var inboundDone = this.inboundDone;\n        var outboundDone = this.outboundDone;\n        this.inboundDone = true;\n        this.outboundDone = true;\n        Reassembler.cancel(this);\n        var receiver = this.receiver;\n        if (!receiver) {\n            return;\n        }\n        if (!outboundDone) {\n            receiver.cancel();\n        }\n        if (!inboundDone) {\n            if (error) {\n                receiver.onError(error);\n            }\n            else {\n                receiver.onComplete();\n            }\n        }\n    };\n    return RequestChannelResponderStream;\n}());\nexports.RequestChannelResponderStream = RequestChannelResponderStream;\n//# sourceMappingURL=RequestChannelStream.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestFnfResponderStream = exports.RequestFnFRequesterStream = void 0;\nvar Errors_1 = require(\"./Errors\");\nvar Fragmenter_1 = require(\"./Fragmenter\");\nvar Frames_1 = require(\"./Frames\");\nvar Reassembler = __importStar(require(\"./Reassembler\"));\nvar RequestFnFRequesterStream = /** @class */ (function () {\n    function RequestFnFRequesterStream(payload, receiver, fragmentSize, leaseManager) {\n        this.payload = payload;\n        this.receiver = receiver;\n        this.fragmentSize = fragmentSize;\n        this.leaseManager = leaseManager;\n        this.streamType = Frames_1.FrameTypes.REQUEST_FNF;\n    }\n    RequestFnFRequesterStream.prototype.handleReady = function (streamId, stream) {\n        var e_1, _a;\n        if (this.done) {\n            return false;\n        }\n        this.streamId = streamId;\n        if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_FNF)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragment)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_FNF)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    stream.send(frame);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n        else {\n            stream.send({\n                type: Frames_1.FrameTypes.REQUEST_FNF,\n                data: this.payload.data,\n                metadata: this.payload.metadata,\n                flags: this.payload.metadata ? Frames_1.Flags.METADATA : 0,\n                streamId: streamId,\n            });\n        }\n        this.done = true;\n        this.receiver.onComplete();\n        return true;\n    };\n    RequestFnFRequesterStream.prototype.handleReject = function (error) {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        this.receiver.onError(error);\n    };\n    RequestFnFRequesterStream.prototype.cancel = function () {\n        var _a;\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n    };\n    RequestFnFRequesterStream.prototype.handle = function (frame) {\n        if (frame.type == Frames_1.FrameTypes.ERROR) {\n            this.close(new Errors_1.RSocketError(frame.code, frame.message));\n            return;\n        }\n        this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, \"Received invalid frame\"));\n    };\n    RequestFnFRequesterStream.prototype.close = function (error) {\n        if (this.done) {\n            console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        if (error) {\n            this.receiver.onError(error);\n        }\n        else {\n            this.receiver.onComplete();\n        }\n    };\n    return RequestFnFRequesterStream;\n}());\nexports.RequestFnFRequesterStream = RequestFnFRequesterStream;\nvar RequestFnfResponderStream = /** @class */ (function () {\n    function RequestFnfResponderStream(streamId, stream, handler, frame) {\n        this.streamId = streamId;\n        this.stream = stream;\n        this.handler = handler;\n        this.streamType = Frames_1.FrameTypes.REQUEST_FNF;\n        if (Frames_1.Flags.hasFollows(frame.flags)) {\n            Reassembler.add(this, frame.data, frame.metadata);\n            stream.connect(this);\n            return;\n        }\n        var payload = {\n            data: frame.data,\n            metadata: frame.metadata,\n        };\n        try {\n            this.cancellable = handler(payload, this);\n        }\n        catch (e) {\n            // do nothing\n        }\n    }\n    RequestFnfResponderStream.prototype.handle = function (frame) {\n        var errorMessage;\n        if (frame.type == Frames_1.FrameTypes.PAYLOAD) {\n            if (Frames_1.Flags.hasFollows(frame.flags)) {\n                if (Reassembler.add(this, frame.data, frame.metadata)) {\n                    return;\n                }\n                errorMessage = \"Unexpected fragment size\";\n            }\n            else {\n                this.stream.disconnect(this);\n                var payload = Reassembler.reassemble(this, frame.data, frame.metadata);\n                try {\n                    this.cancellable = this.handler(payload, this);\n                }\n                catch (e) {\n                    // do nothing\n                }\n                return;\n            }\n        }\n        else {\n            errorMessage = \"Unexpected frame type [\".concat(frame.type, \"]\");\n        }\n        this.done = true;\n        if (frame.type != Frames_1.FrameTypes.CANCEL && frame.type != Frames_1.FrameTypes.ERROR) {\n            this.stream.send({\n                type: Frames_1.FrameTypes.ERROR,\n                streamId: this.streamId,\n                flags: Frames_1.Flags.NONE,\n                code: Errors_1.ErrorCodes.CANCELED,\n                message: errorMessage,\n            });\n        }\n        this.stream.disconnect(this);\n        Reassembler.cancel(this);\n        // TODO: throws if strict\n    };\n    RequestFnfResponderStream.prototype.close = function (error) {\n        var _a;\n        if (this.done) {\n            console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        this.done = true;\n        Reassembler.cancel(this);\n        (_a = this.cancellable) === null || _a === void 0 ? void 0 : _a.cancel();\n    };\n    RequestFnfResponderStream.prototype.onError = function (error) { };\n    RequestFnfResponderStream.prototype.onComplete = function () { };\n    return RequestFnfResponderStream;\n}());\nexports.RequestFnfResponderStream = RequestFnfResponderStream;\n/*\nexport function request(\n  payload: Payload,\n  responderStream: UnidirectionalStream\n): Handler<Cancellable> {\n  return {\n    create: (r) => {\n      const response = new RequestFnFRequesterHandler(\n        payload,\n        responderStream,\n        r\n      );\n\n      r.add(response);\n\n      return response;\n    },\n  };\n}\n\nexport function response(\n  handler: (payload: Payload, responderStream: UnidirectionalStream,) => void\n): Handler<void> {\n  return {\n    create: (r) => new RequestFnfResponderHandler(),\n  };\n} */\n//# sourceMappingURL=RequestFnFStream.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestResponseResponderStream = exports.RequestResponseRequesterStream = void 0;\nvar Errors_1 = require(\"./Errors\");\nvar Fragmenter_1 = require(\"./Fragmenter\");\nvar Frames_1 = require(\"./Frames\");\nvar Reassembler = __importStar(require(\"./Reassembler\"));\nvar RequestResponseRequesterStream = /** @class */ (function () {\n    function RequestResponseRequesterStream(payload, receiver, fragmentSize, leaseManager) {\n        this.payload = payload;\n        this.receiver = receiver;\n        this.fragmentSize = fragmentSize;\n        this.leaseManager = leaseManager;\n        this.streamType = Frames_1.FrameTypes.REQUEST_RESPONSE;\n    }\n    RequestResponseRequesterStream.prototype.handleReady = function (streamId, stream) {\n        var e_1, _a;\n        if (this.done) {\n            return false;\n        }\n        this.streamId = streamId;\n        this.stream = stream;\n        stream.connect(this);\n        if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_RESPONSE)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragment)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_RESPONSE)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.REQUEST_RESPONSE,\n                data: this.payload.data,\n                metadata: this.payload.metadata,\n                flags: this.payload.metadata ? Frames_1.Flags.METADATA : 0,\n                streamId: streamId,\n            });\n        }\n        if (this.hasExtension) {\n            this.stream.send({\n                type: Frames_1.FrameTypes.EXT,\n                streamId: streamId,\n                extendedContent: this.extendedContent,\n                extendedType: this.extendedType,\n                flags: this.flags,\n            });\n        }\n        return true;\n    };\n    RequestResponseRequesterStream.prototype.handleReject = function (error) {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        this.receiver.onError(error);\n    };\n    RequestResponseRequesterStream.prototype.handle = function (frame) {\n        var errorMessage;\n        var frameType = frame.type;\n        switch (frameType) {\n            case Frames_1.FrameTypes.PAYLOAD: {\n                var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n                var hasPayload = Frames_1.Flags.hasNext(frame.flags);\n                if (hasComplete || !Frames_1.Flags.hasFollows(frame.flags)) {\n                    this.done = true;\n                    this.stream.disconnect(this);\n                    if (!hasPayload) {\n                        // TODO: add validation no frame in reassembly\n                        this.receiver.onComplete();\n                        return;\n                    }\n                    var payload = this.hasFragments\n                        ? Reassembler.reassemble(this, frame.data, frame.metadata)\n                        : {\n                            data: frame.data,\n                            metadata: frame.metadata,\n                        };\n                    this.receiver.onNext(payload, true);\n                    return;\n                }\n                if (!Reassembler.add(this, frame.data, frame.metadata)) {\n                    errorMessage = \"Unexpected fragment size\";\n                    break;\n                }\n                return;\n            }\n            case Frames_1.FrameTypes.ERROR: {\n                this.done = true;\n                this.stream.disconnect(this);\n                Reassembler.cancel(this);\n                this.receiver.onError(new Errors_1.RSocketError(frame.code, frame.message));\n                return;\n            }\n            case Frames_1.FrameTypes.EXT: {\n                if (this.hasFragments) {\n                    errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n                    break;\n                }\n                this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n                return;\n            }\n            default: {\n                errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n            }\n        }\n        this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n        this.stream.send({\n            type: Frames_1.FrameTypes.CANCEL,\n            streamId: this.streamId,\n            flags: Frames_1.Flags.NONE,\n        });\n        this.stream.disconnect(this);\n        // TODO: throw an exception if strict frame handling mode\n    };\n    RequestResponseRequesterStream.prototype.cancel = function () {\n        var _a;\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        if (!this.streamId) {\n            (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.CANCEL,\n            flags: Frames_1.Flags.NONE,\n            streamId: this.streamId,\n        });\n        this.stream.disconnect(this);\n        Reassembler.cancel(this);\n    };\n    RequestResponseRequesterStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n        if (this.done) {\n            return;\n        }\n        if (!this.streamId) {\n            this.hasExtension = true;\n            this.extendedType = extendedType;\n            this.extendedContent = content;\n            this.flags = canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE;\n            return;\n        }\n        this.stream.send({\n            streamId: this.streamId,\n            type: Frames_1.FrameTypes.EXT,\n            extendedType: extendedType,\n            extendedContent: content,\n            flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n        });\n    };\n    RequestResponseRequesterStream.prototype.close = function (error) {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        Reassembler.cancel(this);\n        if (error) {\n            this.receiver.onError(error);\n        }\n        else {\n            this.receiver.onComplete();\n        }\n    };\n    return RequestResponseRequesterStream;\n}());\nexports.RequestResponseRequesterStream = RequestResponseRequesterStream;\nvar RequestResponseResponderStream = /** @class */ (function () {\n    function RequestResponseResponderStream(streamId, stream, fragmentSize, handler, frame) {\n        this.streamId = streamId;\n        this.stream = stream;\n        this.fragmentSize = fragmentSize;\n        this.handler = handler;\n        this.streamType = Frames_1.FrameTypes.REQUEST_RESPONSE;\n        stream.connect(this);\n        if (Frames_1.Flags.hasFollows(frame.flags)) {\n            Reassembler.add(this, frame.data, frame.metadata);\n            return;\n        }\n        var payload = {\n            data: frame.data,\n            metadata: frame.metadata,\n        };\n        try {\n            this.receiver = handler(payload, this);\n        }\n        catch (error) {\n            this.onError(error);\n        }\n    }\n    RequestResponseResponderStream.prototype.handle = function (frame) {\n        var _a;\n        var errorMessage;\n        if (!this.receiver || this.hasFragments) {\n            if (frame.type === Frames_1.FrameTypes.PAYLOAD) {\n                if (Frames_1.Flags.hasFollows(frame.flags)) {\n                    if (Reassembler.add(this, frame.data, frame.metadata)) {\n                        return;\n                    }\n                    errorMessage = \"Unexpected fragment size\";\n                }\n                else {\n                    var payload = Reassembler.reassemble(this, frame.data, frame.metadata);\n                    try {\n                        this.receiver = this.handler(payload, this);\n                    }\n                    catch (error) {\n                        this.onError(error);\n                    }\n                    return;\n                }\n            }\n            else {\n                errorMessage = \"Unexpected frame type [\".concat(frame.type, \"] during reassembly\");\n            }\n        }\n        else if (frame.type === Frames_1.FrameTypes.EXT) {\n            this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n            return;\n        }\n        else {\n            errorMessage = \"Unexpected frame type [\".concat(frame.type, \"]\");\n        }\n        this.done = true;\n        (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n        if (frame.type !== Frames_1.FrameTypes.CANCEL && frame.type !== Frames_1.FrameTypes.ERROR) {\n            this.stream.send({\n                type: Frames_1.FrameTypes.ERROR,\n                flags: Frames_1.Flags.NONE,\n                code: Errors_1.ErrorCodes.CANCELED,\n                message: errorMessage,\n                streamId: this.streamId,\n            });\n        }\n        this.stream.disconnect(this);\n        Reassembler.cancel(this);\n        // TODO: throws if strict\n    };\n    RequestResponseResponderStream.prototype.onError = function (error) {\n        if (this.done) {\n            console.warn(\"Trying to error for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        this.done = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.ERROR,\n            flags: Frames_1.Flags.NONE,\n            code: error instanceof Errors_1.RSocketError\n                ? error.code\n                : Errors_1.ErrorCodes.APPLICATION_ERROR,\n            message: error.message,\n            streamId: this.streamId,\n        });\n        this.stream.disconnect(this);\n    };\n    RequestResponseResponderStream.prototype.onNext = function (payload, isCompletion) {\n        var e_2, _a;\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        // TODO: add payload size validation\n        if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, true)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.PAYLOAD,\n                flags: Frames_1.Flags.NEXT | Frames_1.Flags.COMPLETE | (payload.metadata ? Frames_1.Flags.METADATA : 0),\n                data: payload.data,\n                metadata: payload.metadata,\n                streamId: this.streamId,\n            });\n        }\n        this.stream.disconnect(this);\n    };\n    RequestResponseResponderStream.prototype.onComplete = function () {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.PAYLOAD,\n            flags: Frames_1.Flags.COMPLETE,\n            streamId: this.streamId,\n            data: null,\n            metadata: null,\n        });\n        this.stream.disconnect(this);\n    };\n    RequestResponseResponderStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n        if (this.done) {\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.EXT,\n            streamId: this.streamId,\n            flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n            extendedType: extendedType,\n            extendedContent: content,\n        });\n    };\n    RequestResponseResponderStream.prototype.close = function (error) {\n        var _a;\n        if (this.done) {\n            console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        Reassembler.cancel(this);\n        (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n    };\n    return RequestResponseResponderStream;\n}());\nexports.RequestResponseResponderStream = RequestResponseResponderStream;\n//# sourceMappingURL=RequestResponseStream.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestStreamResponderStream = exports.RequestStreamRequesterStream = void 0;\nvar Errors_1 = require(\"./Errors\");\nvar Fragmenter_1 = require(\"./Fragmenter\");\nvar Frames_1 = require(\"./Frames\");\nvar Reassembler = __importStar(require(\"./Reassembler\"));\nvar RequestStreamRequesterStream = /** @class */ (function () {\n    function RequestStreamRequesterStream(payload, receiver, fragmentSize, initialRequestN, leaseManager) {\n        this.payload = payload;\n        this.receiver = receiver;\n        this.fragmentSize = fragmentSize;\n        this.initialRequestN = initialRequestN;\n        this.leaseManager = leaseManager;\n        this.streamType = Frames_1.FrameTypes.REQUEST_STREAM;\n        // TODO: add payload size validation\n    }\n    RequestStreamRequesterStream.prototype.handleReady = function (streamId, stream) {\n        var e_1, _a;\n        if (this.done) {\n            return false;\n        }\n        this.streamId = streamId;\n        this.stream = stream;\n        stream.connect(this);\n        if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_STREAM)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragmentWithRequestN)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_STREAM, this.initialRequestN)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.REQUEST_STREAM,\n                data: this.payload.data,\n                metadata: this.payload.metadata,\n                requestN: this.initialRequestN,\n                flags: this.payload.metadata !== undefined ? Frames_1.Flags.METADATA : 0,\n                streamId: streamId,\n            });\n        }\n        if (this.hasExtension) {\n            this.stream.send({\n                type: Frames_1.FrameTypes.EXT,\n                streamId: streamId,\n                extendedContent: this.extendedContent,\n                extendedType: this.extendedType,\n                flags: this.flags,\n            });\n        }\n        return true;\n    };\n    RequestStreamRequesterStream.prototype.handleReject = function (error) {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        this.receiver.onError(error);\n    };\n    RequestStreamRequesterStream.prototype.handle = function (frame) {\n        var errorMessage;\n        var frameType = frame.type;\n        switch (frameType) {\n            case Frames_1.FrameTypes.PAYLOAD: {\n                var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n                var hasNext = Frames_1.Flags.hasNext(frame.flags);\n                if (hasComplete || !Frames_1.Flags.hasFollows(frame.flags)) {\n                    if (hasComplete) {\n                        this.done = true;\n                        this.stream.disconnect(this);\n                        if (!hasNext) {\n                            // TODO: add validation no frame in reassembly\n                            this.receiver.onComplete();\n                            return;\n                        }\n                    }\n                    var payload = this.hasFragments\n                        ? Reassembler.reassemble(this, frame.data, frame.metadata)\n                        : {\n                            data: frame.data,\n                            metadata: frame.metadata,\n                        };\n                    this.receiver.onNext(payload, hasComplete);\n                    return;\n                }\n                if (!Reassembler.add(this, frame.data, frame.metadata)) {\n                    errorMessage = \"Unexpected fragment size\";\n                    break;\n                }\n                return;\n            }\n            case Frames_1.FrameTypes.ERROR: {\n                this.done = true;\n                this.stream.disconnect(this);\n                Reassembler.cancel(this);\n                this.receiver.onError(new Errors_1.RSocketError(frame.code, frame.message));\n                return;\n            }\n            case Frames_1.FrameTypes.EXT: {\n                if (this.hasFragments) {\n                    errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n                    break;\n                }\n                this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n                return;\n            }\n            default: {\n                errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n            }\n        }\n        this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n        this.stream.send({\n            type: Frames_1.FrameTypes.CANCEL,\n            streamId: this.streamId,\n            flags: Frames_1.Flags.NONE,\n        });\n        this.stream.disconnect(this);\n        // TODO: throw an exception if strict frame handling mode\n    };\n    RequestStreamRequesterStream.prototype.request = function (n) {\n        if (this.done) {\n            return;\n        }\n        if (!this.streamId) {\n            this.initialRequestN += n;\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.REQUEST_N,\n            flags: Frames_1.Flags.NONE,\n            requestN: n,\n            streamId: this.streamId,\n        });\n    };\n    RequestStreamRequesterStream.prototype.cancel = function () {\n        var _a;\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        if (!this.streamId) {\n            (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.CANCEL,\n            flags: Frames_1.Flags.NONE,\n            streamId: this.streamId,\n        });\n        this.stream.disconnect(this);\n        Reassembler.cancel(this);\n    };\n    RequestStreamRequesterStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n        if (this.done) {\n            return;\n        }\n        if (!this.streamId) {\n            this.hasExtension = true;\n            this.extendedType = extendedType;\n            this.extendedContent = content;\n            this.flags = canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE;\n            return;\n        }\n        this.stream.send({\n            streamId: this.streamId,\n            type: Frames_1.FrameTypes.EXT,\n            extendedType: extendedType,\n            extendedContent: content,\n            flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n        });\n    };\n    RequestStreamRequesterStream.prototype.close = function (error) {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        Reassembler.cancel(this);\n        if (error) {\n            this.receiver.onError(error);\n        }\n        else {\n            this.receiver.onComplete();\n        }\n    };\n    return RequestStreamRequesterStream;\n}());\nexports.RequestStreamRequesterStream = RequestStreamRequesterStream;\nvar RequestStreamResponderStream = /** @class */ (function () {\n    function RequestStreamResponderStream(streamId, stream, fragmentSize, handler, frame) {\n        this.streamId = streamId;\n        this.stream = stream;\n        this.fragmentSize = fragmentSize;\n        this.handler = handler;\n        this.streamType = Frames_1.FrameTypes.REQUEST_STREAM;\n        stream.connect(this);\n        if (Frames_1.Flags.hasFollows(frame.flags)) {\n            this.initialRequestN = frame.requestN;\n            Reassembler.add(this, frame.data, frame.metadata);\n            return;\n        }\n        var payload = {\n            data: frame.data,\n            metadata: frame.metadata,\n        };\n        try {\n            this.receiver = handler(payload, frame.requestN, this);\n        }\n        catch (error) {\n            this.onError(error);\n        }\n    }\n    RequestStreamResponderStream.prototype.handle = function (frame) {\n        var _a;\n        var errorMessage;\n        if (!this.receiver || this.hasFragments) {\n            if (frame.type === Frames_1.FrameTypes.PAYLOAD) {\n                if (Frames_1.Flags.hasFollows(frame.flags)) {\n                    if (Reassembler.add(this, frame.data, frame.metadata)) {\n                        return;\n                    }\n                    errorMessage = \"Unexpected frame size\";\n                }\n                else {\n                    var payload = Reassembler.reassemble(this, frame.data, frame.metadata);\n                    try {\n                        this.receiver = this.handler(payload, this.initialRequestN, this);\n                    }\n                    catch (error) {\n                        this.onError(error);\n                    }\n                    return;\n                }\n            }\n            else {\n                errorMessage = \"Unexpected frame type [\".concat(frame.type, \"] during reassembly\");\n            }\n        }\n        else if (frame.type === Frames_1.FrameTypes.REQUEST_N) {\n            this.receiver.request(frame.requestN);\n            return;\n        }\n        else if (frame.type === Frames_1.FrameTypes.EXT) {\n            this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n            return;\n        }\n        else {\n            errorMessage = \"Unexpected frame type [\".concat(frame.type, \"]\");\n        }\n        this.done = true;\n        Reassembler.cancel(this);\n        (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n        if (frame.type !== Frames_1.FrameTypes.CANCEL && frame.type !== Frames_1.FrameTypes.ERROR) {\n            this.stream.send({\n                type: Frames_1.FrameTypes.ERROR,\n                flags: Frames_1.Flags.NONE,\n                code: Errors_1.ErrorCodes.CANCELED,\n                message: errorMessage,\n                streamId: this.streamId,\n            });\n        }\n        this.stream.disconnect(this);\n        // TODO: throws if strict\n    };\n    RequestStreamResponderStream.prototype.onError = function (error) {\n        if (this.done) {\n            console.warn(\"Trying to error for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        this.done = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.ERROR,\n            flags: Frames_1.Flags.NONE,\n            code: error instanceof Errors_1.RSocketError\n                ? error.code\n                : Errors_1.ErrorCodes.APPLICATION_ERROR,\n            message: error.message,\n            streamId: this.streamId,\n        });\n        this.stream.disconnect(this);\n    };\n    RequestStreamResponderStream.prototype.onNext = function (payload, isCompletion) {\n        var e_2, _a;\n        if (this.done) {\n            return;\n        }\n        if (isCompletion) {\n            this.done = true;\n        }\n        // TODO: add payload size validation\n        if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n            try {\n                for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, isCompletion)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var frame = _c.value;\n                    this.stream.send(frame);\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n        }\n        else {\n            this.stream.send({\n                type: Frames_1.FrameTypes.PAYLOAD,\n                flags: Frames_1.Flags.NEXT |\n                    (isCompletion ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n                    (payload.metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n                data: payload.data,\n                metadata: payload.metadata,\n                streamId: this.streamId,\n            });\n        }\n        if (isCompletion) {\n            this.stream.disconnect(this);\n        }\n    };\n    RequestStreamResponderStream.prototype.onComplete = function () {\n        if (this.done) {\n            return;\n        }\n        this.done = true;\n        this.stream.send({\n            type: Frames_1.FrameTypes.PAYLOAD,\n            flags: Frames_1.Flags.COMPLETE,\n            streamId: this.streamId,\n            data: null,\n            metadata: null,\n        });\n        this.stream.disconnect(this);\n    };\n    RequestStreamResponderStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n        if (this.done) {\n            return;\n        }\n        this.stream.send({\n            type: Frames_1.FrameTypes.EXT,\n            streamId: this.streamId,\n            flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n            extendedType: extendedType,\n            extendedContent: content,\n        });\n    };\n    RequestStreamResponderStream.prototype.close = function (error) {\n        var _a;\n        if (this.done) {\n            console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n            return;\n        }\n        Reassembler.cancel(this);\n        (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n    };\n    return RequestStreamResponderStream;\n}());\nexports.RequestStreamResponderStream = RequestStreamResponderStream;\n//# sourceMappingURL=RequestStreamStream.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeepAliveSender = exports.KeepAliveHandler = exports.DefaultConnectionFrameHandler = exports.DefaultStreamRequestHandler = exports.LeaseHandler = exports.RSocketRequester = void 0;\nvar Errors_1 = require(\"./Errors\");\nvar Frames_1 = require(\"./Frames\");\nvar RequestChannelStream_1 = require(\"./RequestChannelStream\");\nvar RequestFnFStream_1 = require(\"./RequestFnFStream\");\nvar RequestResponseStream_1 = require(\"./RequestResponseStream\");\nvar RequestStreamStream_1 = require(\"./RequestStreamStream\");\nvar RSocketRequester = /** @class */ (function () {\n    function RSocketRequester(connection, fragmentSize, leaseManager) {\n        this.connection = connection;\n        this.fragmentSize = fragmentSize;\n        this.leaseManager = leaseManager;\n    }\n    RSocketRequester.prototype.fireAndForget = function (payload, responderStream) {\n        var handler = new RequestFnFStream_1.RequestFnFRequesterStream(payload, responderStream, this.fragmentSize, this.leaseManager);\n        if (this.leaseManager) {\n            this.leaseManager.requestLease(handler);\n        }\n        else {\n            this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n        }\n        return handler;\n    };\n    RSocketRequester.prototype.requestResponse = function (payload, responderStream) {\n        var handler = new RequestResponseStream_1.RequestResponseRequesterStream(payload, responderStream, this.fragmentSize, this.leaseManager);\n        if (this.leaseManager) {\n            this.leaseManager.requestLease(handler);\n        }\n        else {\n            this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n        }\n        return handler;\n    };\n    RSocketRequester.prototype.requestStream = function (payload, initialRequestN, responderStream) {\n        var handler = new RequestStreamStream_1.RequestStreamRequesterStream(payload, responderStream, this.fragmentSize, initialRequestN, this.leaseManager);\n        if (this.leaseManager) {\n            this.leaseManager.requestLease(handler);\n        }\n        else {\n            this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n        }\n        return handler;\n    };\n    RSocketRequester.prototype.requestChannel = function (payload, initialRequestN, isCompleted, responderStream) {\n        var handler = new RequestChannelStream_1.RequestChannelRequesterStream(payload, isCompleted, responderStream, this.fragmentSize, initialRequestN, this.leaseManager);\n        if (this.leaseManager) {\n            this.leaseManager.requestLease(handler);\n        }\n        else {\n            this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n        }\n        return handler;\n    };\n    RSocketRequester.prototype.metadataPush = function (metadata, responderStream) {\n        throw new Error(\"Method not implemented.\");\n    };\n    RSocketRequester.prototype.close = function (error) {\n        this.connection.close(error);\n    };\n    RSocketRequester.prototype.onClose = function (callback) {\n        this.connection.onClose(callback);\n    };\n    return RSocketRequester;\n}());\nexports.RSocketRequester = RSocketRequester;\nvar LeaseHandler = /** @class */ (function () {\n    function LeaseHandler(maxPendingRequests, multiplexer) {\n        this.maxPendingRequests = maxPendingRequests;\n        this.multiplexer = multiplexer;\n        this.pendingRequests = [];\n        this.expirationTime = 0;\n        this.availableLease = 0;\n    }\n    LeaseHandler.prototype.handle = function (frame) {\n        this.expirationTime = frame.ttl + Date.now();\n        this.availableLease = frame.requestCount;\n        while (this.availableLease > 0 && this.pendingRequests.length > 0) {\n            var handler = this.pendingRequests.shift();\n            this.availableLease--;\n            this.multiplexer.createRequestStream(handler);\n        }\n    };\n    LeaseHandler.prototype.requestLease = function (handler) {\n        var availableLease = this.availableLease;\n        if (availableLease > 0 && Date.now() < this.expirationTime) {\n            this.availableLease = availableLease - 1;\n            this.multiplexer.createRequestStream(handler);\n            return;\n        }\n        if (this.pendingRequests.length >= this.maxPendingRequests) {\n            handler.handleReject(new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED, \"No available lease given\"));\n            return;\n        }\n        this.pendingRequests.push(handler);\n    };\n    LeaseHandler.prototype.cancelRequest = function (handler) {\n        var index = this.pendingRequests.indexOf(handler);\n        if (index > -1) {\n            this.pendingRequests.splice(index, 1);\n        }\n    };\n    return LeaseHandler;\n}());\nexports.LeaseHandler = LeaseHandler;\nvar DefaultStreamRequestHandler = /** @class */ (function () {\n    function DefaultStreamRequestHandler(rsocket, fragmentSize) {\n        this.rsocket = rsocket;\n        this.fragmentSize = fragmentSize;\n    }\n    DefaultStreamRequestHandler.prototype.handle = function (frame, stream) {\n        switch (frame.type) {\n            case Frames_1.FrameTypes.REQUEST_FNF:\n                if (this.rsocket.fireAndForget) {\n                    new RequestFnFStream_1.RequestFnfResponderStream(frame.streamId, stream, this.rsocket.fireAndForget.bind(this.rsocket), frame);\n                }\n                return;\n            case Frames_1.FrameTypes.REQUEST_RESPONSE:\n                if (this.rsocket.requestResponse) {\n                    new RequestResponseStream_1.RequestResponseResponderStream(frame.streamId, stream, this.fragmentSize, this.rsocket.requestResponse.bind(this.rsocket), frame);\n                    return;\n                }\n                this.rejectRequest(frame.streamId, stream);\n                return;\n            case Frames_1.FrameTypes.REQUEST_STREAM:\n                if (this.rsocket.requestStream) {\n                    new RequestStreamStream_1.RequestStreamResponderStream(frame.streamId, stream, this.fragmentSize, this.rsocket.requestStream.bind(this.rsocket), frame);\n                    return;\n                }\n                this.rejectRequest(frame.streamId, stream);\n                return;\n            case Frames_1.FrameTypes.REQUEST_CHANNEL:\n                if (this.rsocket.requestChannel) {\n                    new RequestChannelStream_1.RequestChannelResponderStream(frame.streamId, stream, this.fragmentSize, this.rsocket.requestChannel.bind(this.rsocket), frame);\n                    return;\n                }\n                this.rejectRequest(frame.streamId, stream);\n                return;\n        }\n    };\n    DefaultStreamRequestHandler.prototype.rejectRequest = function (streamId, stream) {\n        stream.send({\n            type: Frames_1.FrameTypes.ERROR,\n            streamId: streamId,\n            flags: Frames_1.Flags.NONE,\n            code: Errors_1.ErrorCodes.REJECTED,\n            message: \"No available handler found\",\n        });\n    };\n    DefaultStreamRequestHandler.prototype.close = function () { };\n    return DefaultStreamRequestHandler;\n}());\nexports.DefaultStreamRequestHandler = DefaultStreamRequestHandler;\nvar DefaultConnectionFrameHandler = /** @class */ (function () {\n    function DefaultConnectionFrameHandler(connection, keepAliveHandler, keepAliveSender, leaseHandler, rsocket) {\n        this.connection = connection;\n        this.keepAliveHandler = keepAliveHandler;\n        this.keepAliveSender = keepAliveSender;\n        this.leaseHandler = leaseHandler;\n        this.rsocket = rsocket;\n    }\n    DefaultConnectionFrameHandler.prototype.handle = function (frame) {\n        switch (frame.type) {\n            case Frames_1.FrameTypes.KEEPALIVE:\n                this.keepAliveHandler.handle(frame);\n                return;\n            case Frames_1.FrameTypes.LEASE:\n                if (this.leaseHandler) {\n                    this.leaseHandler.handle(frame);\n                    return;\n                }\n                // TODO throw exception and close connection\n                return;\n            case Frames_1.FrameTypes.ERROR:\n                // TODO: add code validation\n                this.connection.close(new Errors_1.RSocketError(frame.code, frame.message));\n                return;\n            case Frames_1.FrameTypes.METADATA_PUSH:\n                if (this.rsocket.metadataPush) {\n                    // this.rsocket.metadataPush()\n                }\n                return;\n            default:\n                this.connection.multiplexerDemultiplexer.connectionOutbound.send({\n                    type: Frames_1.FrameTypes.ERROR,\n                    streamId: 0,\n                    flags: Frames_1.Flags.NONE,\n                    message: \"Received unknown frame type\",\n                    code: Errors_1.ErrorCodes.CONNECTION_ERROR,\n                });\n            // TODO: throw an exception and close connection\n        }\n    };\n    DefaultConnectionFrameHandler.prototype.pause = function () {\n        var _a;\n        this.keepAliveHandler.pause();\n        (_a = this.keepAliveSender) === null || _a === void 0 ? void 0 : _a.pause();\n    };\n    DefaultConnectionFrameHandler.prototype.resume = function () {\n        var _a;\n        this.keepAliveHandler.start();\n        (_a = this.keepAliveSender) === null || _a === void 0 ? void 0 : _a.start();\n    };\n    DefaultConnectionFrameHandler.prototype.close = function (error) {\n        var _a;\n        this.keepAliveHandler.close();\n        (_a = this.rsocket.close) === null || _a === void 0 ? void 0 : _a.call(this.rsocket, error);\n    };\n    return DefaultConnectionFrameHandler;\n}());\nexports.DefaultConnectionFrameHandler = DefaultConnectionFrameHandler;\nvar KeepAliveHandlerStates;\n(function (KeepAliveHandlerStates) {\n    KeepAliveHandlerStates[KeepAliveHandlerStates[\"Paused\"] = 0] = \"Paused\";\n    KeepAliveHandlerStates[KeepAliveHandlerStates[\"Running\"] = 1] = \"Running\";\n    KeepAliveHandlerStates[KeepAliveHandlerStates[\"Closed\"] = 2] = \"Closed\";\n})(KeepAliveHandlerStates || (KeepAliveHandlerStates = {}));\nvar KeepAliveHandler = /** @class */ (function () {\n    function KeepAliveHandler(connection, keepAliveTimeoutDuration) {\n        this.connection = connection;\n        this.keepAliveTimeoutDuration = keepAliveTimeoutDuration;\n        this.state = KeepAliveHandlerStates.Paused;\n        this.outbound = connection.multiplexerDemultiplexer.connectionOutbound;\n    }\n    KeepAliveHandler.prototype.handle = function (frame) {\n        this.keepAliveLastReceivedMillis = Date.now();\n        if (Frames_1.Flags.hasRespond(frame.flags)) {\n            this.outbound.send({\n                type: Frames_1.FrameTypes.KEEPALIVE,\n                streamId: 0,\n                data: frame.data,\n                flags: frame.flags ^ Frames_1.Flags.RESPOND,\n                lastReceivedPosition: 0,\n            });\n        }\n    };\n    KeepAliveHandler.prototype.start = function () {\n        if (this.state !== KeepAliveHandlerStates.Paused) {\n            return;\n        }\n        this.keepAliveLastReceivedMillis = Date.now();\n        this.state = KeepAliveHandlerStates.Running;\n        this.activeTimeout = setTimeout(this.timeoutCheck.bind(this), this.keepAliveTimeoutDuration);\n    };\n    KeepAliveHandler.prototype.pause = function () {\n        if (this.state !== KeepAliveHandlerStates.Running) {\n            return;\n        }\n        this.state = KeepAliveHandlerStates.Paused;\n        clearTimeout(this.activeTimeout);\n    };\n    KeepAliveHandler.prototype.close = function () {\n        this.state = KeepAliveHandlerStates.Closed;\n        clearTimeout(this.activeTimeout);\n    };\n    KeepAliveHandler.prototype.timeoutCheck = function () {\n        var now = Date.now();\n        var noKeepAliveDuration = now - this.keepAliveLastReceivedMillis;\n        if (noKeepAliveDuration >= this.keepAliveTimeoutDuration) {\n            this.connection.close(new Error(\"No keep-alive acks for \".concat(this.keepAliveTimeoutDuration, \" millis\")));\n        }\n        else {\n            this.activeTimeout = setTimeout(this.timeoutCheck.bind(this), Math.max(100, this.keepAliveTimeoutDuration - noKeepAliveDuration));\n        }\n    };\n    return KeepAliveHandler;\n}());\nexports.KeepAliveHandler = KeepAliveHandler;\nvar KeepAliveSenderStates;\n(function (KeepAliveSenderStates) {\n    KeepAliveSenderStates[KeepAliveSenderStates[\"Paused\"] = 0] = \"Paused\";\n    KeepAliveSenderStates[KeepAliveSenderStates[\"Running\"] = 1] = \"Running\";\n    KeepAliveSenderStates[KeepAliveSenderStates[\"Closed\"] = 2] = \"Closed\";\n})(KeepAliveSenderStates || (KeepAliveSenderStates = {}));\nvar KeepAliveSender = /** @class */ (function () {\n    function KeepAliveSender(outbound, keepAlivePeriodDuration) {\n        this.outbound = outbound;\n        this.keepAlivePeriodDuration = keepAlivePeriodDuration;\n        this.state = KeepAliveSenderStates.Paused;\n    }\n    KeepAliveSender.prototype.sendKeepAlive = function () {\n        this.outbound.send({\n            type: Frames_1.FrameTypes.KEEPALIVE,\n            streamId: 0,\n            data: undefined,\n            flags: Frames_1.Flags.RESPOND,\n            lastReceivedPosition: 0,\n        });\n    };\n    KeepAliveSender.prototype.start = function () {\n        if (this.state !== KeepAliveSenderStates.Paused) {\n            return;\n        }\n        this.state = KeepAliveSenderStates.Running;\n        this.activeInterval = setInterval(this.sendKeepAlive.bind(this), this.keepAlivePeriodDuration);\n    };\n    KeepAliveSender.prototype.pause = function () {\n        if (this.state !== KeepAliveSenderStates.Running) {\n            return;\n        }\n        this.state = KeepAliveSenderStates.Paused;\n        clearInterval(this.activeInterval);\n    };\n    KeepAliveSender.prototype.close = function () {\n        this.state = KeepAliveSenderStates.Closed;\n        clearInterval(this.activeInterval);\n    };\n    return KeepAliveSender;\n}());\nexports.KeepAliveSender = KeepAliveSender;\n//# sourceMappingURL=RSocketSupport.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FrameStore = void 0;\nvar _1 = require(\".\");\nvar Codecs_1 = require(\"./Codecs\");\nvar FrameStore = /** @class */ (function () {\n    function FrameStore() {\n        this.storedFrames = [];\n        this._lastReceivedFramePosition = 0;\n        this._firstAvailableFramePosition = 0;\n        this._lastSentFramePosition = 0;\n    }\n    Object.defineProperty(FrameStore.prototype, \"lastReceivedFramePosition\", {\n        get: function () {\n            return this._lastReceivedFramePosition;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(FrameStore.prototype, \"firstAvailableFramePosition\", {\n        get: function () {\n            return this._firstAvailableFramePosition;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(FrameStore.prototype, \"lastSentFramePosition\", {\n        get: function () {\n            return this._lastSentFramePosition;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    FrameStore.prototype.store = function (frame) {\n        this._lastSentFramePosition += (0, Codecs_1.sizeOfFrame)(frame);\n        this.storedFrames.push(frame);\n    };\n    FrameStore.prototype.record = function (frame) {\n        this._lastReceivedFramePosition += (0, Codecs_1.sizeOfFrame)(frame);\n    };\n    FrameStore.prototype.dropTo = function (lastReceivedPosition) {\n        var bytesToDrop = lastReceivedPosition - this._firstAvailableFramePosition;\n        while (bytesToDrop > 0 && this.storedFrames.length > 0) {\n            var storedFrame = this.storedFrames.shift();\n            bytesToDrop -= (0, Codecs_1.sizeOfFrame)(storedFrame);\n        }\n        if (bytesToDrop !== 0) {\n            throw new _1.RSocketError(_1.ErrorCodes.CONNECTION_ERROR, \"State inconsistency. Expected bytes to drop \".concat(lastReceivedPosition - this._firstAvailableFramePosition, \" but actual \").concat(bytesToDrop));\n        }\n        this._firstAvailableFramePosition = lastReceivedPosition;\n    };\n    FrameStore.prototype.drain = function (consumer) {\n        var e_1, _a;\n        try {\n            for (var _b = __values(this.storedFrames), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var frame = _c.value;\n                consumer(frame);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    return FrameStore;\n}());\nexports.FrameStore = FrameStore;\n//# sourceMappingURL=Resume.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RSocketConnector = void 0;\nvar ClientServerMultiplexerDemultiplexer_1 = require(\"./ClientServerMultiplexerDemultiplexer\");\nvar Frames_1 = require(\"./Frames\");\nvar RSocketSupport_1 = require(\"./RSocketSupport\");\nvar Resume_1 = require(\"./Resume\");\nvar RSocketConnector = /** @class */ (function () {\n    function RSocketConnector(config) {\n        this.config = config;\n    }\n    RSocketConnector.prototype.connect = function () {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\n        return __awaiter(this, void 0, void 0, function () {\n            var config, setupFrame, connection, keepAliveSender, keepAliveHandler, leaseHandler, responder, connectionFrameHandler, streamsHandler;\n            var _this = this;\n            return __generator(this, function (_w) {\n                switch (_w.label) {\n                    case 0:\n                        config = this.config;\n                        setupFrame = {\n                            type: Frames_1.FrameTypes.SETUP,\n                            dataMimeType: (_b = (_a = config.setup) === null || _a === void 0 ? void 0 : _a.dataMimeType) !== null && _b !== void 0 ? _b : \"application/octet-stream\",\n                            metadataMimeType: (_d = (_c = config.setup) === null || _c === void 0 ? void 0 : _c.metadataMimeType) !== null && _d !== void 0 ? _d : \"application/octet-stream\",\n                            keepAlive: (_f = (_e = config.setup) === null || _e === void 0 ? void 0 : _e.keepAlive) !== null && _f !== void 0 ? _f : 60000,\n                            lifetime: (_h = (_g = config.setup) === null || _g === void 0 ? void 0 : _g.lifetime) !== null && _h !== void 0 ? _h : 300000,\n                            metadata: (_k = (_j = config.setup) === null || _j === void 0 ? void 0 : _j.payload) === null || _k === void 0 ? void 0 : _k.metadata,\n                            data: (_m = (_l = config.setup) === null || _l === void 0 ? void 0 : _l.payload) === null || _m === void 0 ? void 0 : _m.data,\n                            resumeToken: (_p = (_o = config.resume) === null || _o === void 0 ? void 0 : _o.tokenGenerator()) !== null && _p !== void 0 ? _p : null,\n                            streamId: 0,\n                            majorVersion: 1,\n                            minorVersion: 0,\n                            flags: (((_r = (_q = config.setup) === null || _q === void 0 ? void 0 : _q.payload) === null || _r === void 0 ? void 0 : _r.metadata) ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE) |\n                                (config.lease ? Frames_1.Flags.LEASE : Frames_1.Flags.NONE) |\n                                (config.resume ? Frames_1.Flags.RESUME_ENABLE : Frames_1.Flags.NONE),\n                        };\n                        return [4 /*yield*/, config.transport.connect(function (outbound) {\n                                return config.resume\n                                    ? new ClientServerMultiplexerDemultiplexer_1.ResumableClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(-1), outbound, outbound, new Resume_1.FrameStore(), // TODO: add size control\n                                    setupFrame.resumeToken.toString(), function (self, frameStore) { return __awaiter(_this, void 0, void 0, function () {\n                                        var multiplexerDemultiplexerProvider, reconnectionAttempts, reconnector;\n                                        return __generator(this, function (_a) {\n                                            switch (_a.label) {\n                                                case 0:\n                                                    multiplexerDemultiplexerProvider = function (outbound) {\n                                                        outbound.send({\n                                                            type: Frames_1.FrameTypes.RESUME,\n                                                            streamId: 0,\n                                                            flags: Frames_1.Flags.NONE,\n                                                            clientPosition: frameStore.firstAvailableFramePosition,\n                                                            serverPosition: frameStore.lastReceivedFramePosition,\n                                                            majorVersion: setupFrame.minorVersion,\n                                                            minorVersion: setupFrame.majorVersion,\n                                                            resumeToken: setupFrame.resumeToken,\n                                                        });\n                                                        return new ClientServerMultiplexerDemultiplexer_1.ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer(outbound, outbound, self);\n                                                    };\n                                                    reconnectionAttempts = -1;\n                                                    reconnector = function () {\n                                                        reconnectionAttempts++;\n                                                        return config.resume\n                                                            .reconnectFunction(reconnectionAttempts)\n                                                            .then(function () {\n                                                            return config.transport\n                                                                .connect(multiplexerDemultiplexerProvider)\n                                                                .catch(reconnector);\n                                                        });\n                                                    };\n                                                    return [4 /*yield*/, reconnector()];\n                                                case 1:\n                                                    _a.sent();\n                                                    return [2 /*return*/];\n                                            }\n                                        });\n                                    }); })\n                                    : new ClientServerMultiplexerDemultiplexer_1.ClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(-1), outbound, outbound);\n                            })];\n                    case 1:\n                        connection = _w.sent();\n                        keepAliveSender = new RSocketSupport_1.KeepAliveSender(connection.multiplexerDemultiplexer.connectionOutbound, setupFrame.keepAlive);\n                        keepAliveHandler = new RSocketSupport_1.KeepAliveHandler(connection, setupFrame.lifetime);\n                        leaseHandler = config.lease\n                            ? new RSocketSupport_1.LeaseHandler((_s = config.lease.maxPendingRequests) !== null && _s !== void 0 ? _s : 256, connection.multiplexerDemultiplexer)\n                            : undefined;\n                        responder = (_t = config.responder) !== null && _t !== void 0 ? _t : {};\n                        connectionFrameHandler = new RSocketSupport_1.DefaultConnectionFrameHandler(connection, keepAliveHandler, keepAliveSender, leaseHandler, responder);\n                        streamsHandler = new RSocketSupport_1.DefaultStreamRequestHandler(responder, 0);\n                        connection.onClose(function (e) {\n                            keepAliveSender.close();\n                            keepAliveHandler.close();\n                            connectionFrameHandler.close(e);\n                        });\n                        connection.multiplexerDemultiplexer.connectionInbound(connectionFrameHandler);\n                        connection.multiplexerDemultiplexer.handleRequestStream(streamsHandler);\n                        connection.multiplexerDemultiplexer.connectionOutbound.send(setupFrame);\n                        keepAliveHandler.start();\n                        keepAliveSender.start();\n                        return [2 /*return*/, new RSocketSupport_1.RSocketRequester(connection, (_v = (_u = config.fragmentation) === null || _u === void 0 ? void 0 : _u.maxOutboundFragmentSize) !== null && _v !== void 0 ? _v : 0, leaseHandler)];\n                }\n            });\n        });\n    };\n    return RSocketConnector;\n}());\nexports.RSocketConnector = RSocketConnector;\n//# sourceMappingURL=RSocketConnector.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RSocketServer = void 0;\nvar ClientServerMultiplexerDemultiplexer_1 = require(\"./ClientServerMultiplexerDemultiplexer\");\nvar Errors_1 = require(\"./Errors\");\nvar Frames_1 = require(\"./Frames\");\nvar RSocketSupport_1 = require(\"./RSocketSupport\");\nvar Resume_1 = require(\"./Resume\");\nvar RSocketServer = /** @class */ (function () {\n    function RSocketServer(config) {\n        var _a, _b;\n        this.acceptor = config.acceptor;\n        this.transport = config.transport;\n        this.lease = config.lease;\n        this.serverSideKeepAlive = config.serverSideKeepAlive;\n        this.sessionStore = config.resume ? {} : undefined;\n        this.sessionTimeout = (_b = (_a = config.resume) === null || _a === void 0 ? void 0 : _a.sessionTimeout) !== null && _b !== void 0 ? _b : undefined;\n    }\n    RSocketServer.prototype.bind = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.transport.bind(function (frame, connection) { return __awaiter(_this, void 0, void 0, function () {\n                            var _a, error, error, leaseHandler, requester, responder, keepAliveHandler_1, keepAliveSender_1, connectionFrameHandler_1, streamsHandler, e_1;\n                            var _b, _c, _d, _e;\n                            return __generator(this, function (_f) {\n                                switch (_f.label) {\n                                    case 0:\n                                        _a = frame.type;\n                                        switch (_a) {\n                                            case Frames_1.FrameTypes.SETUP: return [3 /*break*/, 1];\n                                            case Frames_1.FrameTypes.RESUME: return [3 /*break*/, 5];\n                                        }\n                                        return [3 /*break*/, 6];\n                                    case 1:\n                                        _f.trys.push([1, 3, , 4]);\n                                        if (this.lease && !Frames_1.Flags.hasLease(frame.flags)) {\n                                            error = new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, \"Lease has to be enabled\");\n                                            connection.multiplexerDemultiplexer.connectionOutbound.send({\n                                                type: Frames_1.FrameTypes.ERROR,\n                                                streamId: 0,\n                                                flags: Frames_1.Flags.NONE,\n                                                code: error.code,\n                                                message: error.message,\n                                            });\n                                            connection.close(error);\n                                            return [2 /*return*/];\n                                        }\n                                        if (Frames_1.Flags.hasLease(frame.flags) && !this.lease) {\n                                            error = new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, \"Lease has to be disabled\");\n                                            connection.multiplexerDemultiplexer.connectionOutbound.send({\n                                                type: Frames_1.FrameTypes.ERROR,\n                                                streamId: 0,\n                                                flags: Frames_1.Flags.NONE,\n                                                code: error.code,\n                                                message: error.message,\n                                            });\n                                            connection.close(error);\n                                            return [2 /*return*/];\n                                        }\n                                        leaseHandler = Frames_1.Flags.hasLease(frame.flags)\n                                            ? new RSocketSupport_1.LeaseHandler((_b = this.lease.maxPendingRequests) !== null && _b !== void 0 ? _b : 256, connection.multiplexerDemultiplexer)\n                                            : undefined;\n                                        requester = new RSocketSupport_1.RSocketRequester(connection, (_d = (_c = this.fragmentation) === null || _c === void 0 ? void 0 : _c.maxOutboundFragmentSize) !== null && _d !== void 0 ? _d : 0, leaseHandler);\n                                        return [4 /*yield*/, this.acceptor.accept({\n                                                data: frame.data,\n                                                dataMimeType: frame.dataMimeType,\n                                                metadata: frame.metadata,\n                                                metadataMimeType: frame.metadataMimeType,\n                                                flags: frame.flags,\n                                                keepAliveMaxLifetime: frame.lifetime,\n                                                keepAliveInterval: frame.keepAlive,\n                                                resumeToken: frame.resumeToken,\n                                            }, requester)];\n                                    case 2:\n                                        responder = _f.sent();\n                                        keepAliveHandler_1 = new RSocketSupport_1.KeepAliveHandler(connection, frame.lifetime);\n                                        keepAliveSender_1 = this.serverSideKeepAlive\n                                            ? new RSocketSupport_1.KeepAliveSender(connection.multiplexerDemultiplexer.connectionOutbound, frame.keepAlive)\n                                            : undefined;\n                                        connectionFrameHandler_1 = new RSocketSupport_1.DefaultConnectionFrameHandler(connection, keepAliveHandler_1, keepAliveSender_1, leaseHandler, responder);\n                                        streamsHandler = new RSocketSupport_1.DefaultStreamRequestHandler(responder, 0);\n                                        connection.onClose(function (e) {\n                                            keepAliveSender_1 === null || keepAliveSender_1 === void 0 ? void 0 : keepAliveSender_1.close();\n                                            keepAliveHandler_1.close();\n                                            connectionFrameHandler_1.close(e);\n                                        });\n                                        connection.multiplexerDemultiplexer.connectionInbound(connectionFrameHandler_1);\n                                        connection.multiplexerDemultiplexer.handleRequestStream(streamsHandler);\n                                        keepAliveHandler_1.start();\n                                        keepAliveSender_1 === null || keepAliveSender_1 === void 0 ? void 0 : keepAliveSender_1.start();\n                                        return [3 /*break*/, 4];\n                                    case 3:\n                                        e_1 = _f.sent();\n                                        connection.multiplexerDemultiplexer.connectionOutbound.send({\n                                            type: Frames_1.FrameTypes.ERROR,\n                                            streamId: 0,\n                                            code: Errors_1.ErrorCodes.REJECTED_SETUP,\n                                            message: (_e = e_1.message) !== null && _e !== void 0 ? _e : \"\",\n                                            flags: Frames_1.Flags.NONE,\n                                        });\n                                        connection.close(e_1 instanceof Errors_1.RSocketError\n                                            ? e_1\n                                            : new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, e_1.message));\n                                        return [3 /*break*/, 4];\n                                    case 4: return [2 /*return*/];\n                                    case 5:\n                                        {\n                                            // frame should be handled earlier\n                                            return [2 /*return*/];\n                                        }\n                                        _f.label = 6;\n                                    case 6:\n                                        {\n                                            connection.multiplexerDemultiplexer.connectionOutbound.send({\n                                                type: Frames_1.FrameTypes.ERROR,\n                                                streamId: 0,\n                                                code: Errors_1.ErrorCodes.UNSUPPORTED_SETUP,\n                                                message: \"Unsupported setup\",\n                                                flags: Frames_1.Flags.NONE,\n                                            });\n                                            connection.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.UNSUPPORTED_SETUP));\n                                        }\n                                        _f.label = 7;\n                                    case 7: return [2 /*return*/];\n                                }\n                            });\n                        }); }, function (frame, outbound) {\n                            if (frame.type === Frames_1.FrameTypes.RESUME) {\n                                if (_this.sessionStore) {\n                                    var multiplexerDemultiplexer = _this.sessionStore[frame.resumeToken.toString()];\n                                    if (!multiplexerDemultiplexer) {\n                                        outbound.send({\n                                            type: Frames_1.FrameTypes.ERROR,\n                                            streamId: 0,\n                                            code: Errors_1.ErrorCodes.REJECTED_RESUME,\n                                            message: \"No session found for the given resume token\",\n                                            flags: Frames_1.Flags.NONE,\n                                        });\n                                        outbound.close();\n                                        return;\n                                    }\n                                    multiplexerDemultiplexer.resume(frame, outbound, outbound);\n                                    return multiplexerDemultiplexer;\n                                }\n                                outbound.send({\n                                    type: Frames_1.FrameTypes.ERROR,\n                                    streamId: 0,\n                                    code: Errors_1.ErrorCodes.REJECTED_RESUME,\n                                    message: \"Resume is not enabled\",\n                                    flags: Frames_1.Flags.NONE,\n                                });\n                                outbound.close();\n                                return;\n                            }\n                            else if (frame.type === Frames_1.FrameTypes.SETUP) {\n                                if (Frames_1.Flags.hasResume(frame.flags)) {\n                                    if (!_this.sessionStore) {\n                                        var error = new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, \"No resume support\");\n                                        outbound.send({\n                                            type: Frames_1.FrameTypes.ERROR,\n                                            streamId: 0,\n                                            flags: Frames_1.Flags.NONE,\n                                            code: error.code,\n                                            message: error.message,\n                                        });\n                                        outbound.close(error);\n                                        return;\n                                    }\n                                    var multiplexerDumiltiplexer = new ClientServerMultiplexerDemultiplexer_1.ResumableClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(0), outbound, outbound, new Resume_1.FrameStore(), // TODO: add size parameter\n                                    frame.resumeToken.toString(), _this.sessionStore, _this.sessionTimeout);\n                                    _this.sessionStore[frame.resumeToken.toString()] =\n                                        multiplexerDumiltiplexer;\n                                    return multiplexerDumiltiplexer;\n                                }\n                            }\n                            return new ClientServerMultiplexerDemultiplexer_1.ClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(0), outbound, outbound);\n                        })];\n                    case 1: return [2 /*return*/, _a.sent()];\n                }\n            });\n        });\n    };\n    return RSocketServer;\n}());\nexports.RSocketServer = RSocketServer;\n//# sourceMappingURL=RSocketServer.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Transport.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Codecs\"), exports);\n__exportStar(require(\"./Common\"), exports);\n__exportStar(require(\"./Deferred\"), exports);\n__exportStar(require(\"./Errors\"), exports);\n__exportStar(require(\"./Frames\"), exports);\n__exportStar(require(\"./RSocket\"), exports);\n__exportStar(require(\"./RSocketConnector\"), exports);\n__exportStar(require(\"./RSocketServer\"), exports);\n__exportStar(require(\"./Transport\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebsocketDuplexConnection = void 0;\nvar rsocket_core_1 = require(\"rsocket-core\");\nvar WebsocketDuplexConnection = /** @class */ (function (_super) {\n    __extends(WebsocketDuplexConnection, _super);\n    function WebsocketDuplexConnection(websocket, deserializer, multiplexerDemultiplexerFactory) {\n        var _this = _super.call(this) || this;\n        _this.websocket = websocket;\n        _this.deserializer = deserializer;\n        _this.handleClosed = function (e) {\n            _this.close(new Error(e.reason || \"WebsocketDuplexConnection: Socket closed unexpectedly.\"));\n        };\n        _this.handleError = function (e) {\n            _this.close(e.error);\n        };\n        _this.handleMessage = function (message) {\n            try {\n                var buffer = Buffer.from(message.data);\n                var frame = _this.deserializer.deserializeFrame(buffer);\n                _this.multiplexerDemultiplexer.handle(frame);\n            }\n            catch (error) {\n                _this.close(error);\n            }\n        };\n        websocket.addEventListener(\"close\", _this.handleClosed);\n        websocket.addEventListener(\"error\", _this.handleError);\n        websocket.addEventListener(\"message\", _this.handleMessage);\n        _this.multiplexerDemultiplexer = multiplexerDemultiplexerFactory(_this);\n        return _this;\n    }\n    Object.defineProperty(WebsocketDuplexConnection.prototype, \"availability\", {\n        get: function () {\n            return this.done ? 0 : 1;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    WebsocketDuplexConnection.prototype.close = function (error) {\n        if (this.done) {\n            _super.prototype.close.call(this, error);\n            return;\n        }\n        this.websocket.removeEventListener(\"close\", this.handleClosed);\n        this.websocket.removeEventListener(\"error\", this.handleError);\n        this.websocket.removeEventListener(\"message\", this.handleMessage);\n        this.websocket.close();\n        delete this.websocket;\n        _super.prototype.close.call(this, error);\n    };\n    WebsocketDuplexConnection.prototype.send = function (frame) {\n        if (this.done) {\n            return;\n        }\n        var buffer = (0, rsocket_core_1.serializeFrame)(frame);\n        this.websocket.send(buffer);\n    };\n    return WebsocketDuplexConnection;\n}(rsocket_core_1.Deferred));\nexports.WebsocketDuplexConnection = WebsocketDuplexConnection;\n//# sourceMappingURL=WebsocketDuplexConnection.js.map","/**\n * Adapted from rsocket-websocket-client\n * https://github.com/rsocket/rsocket-js/blob/e224cf379e747c4f1ddc4f2fa111854626cc8575/packages/rsocket-websocket-client/src/WebsocketClientTransport.ts#L17\n * This adds additional error handling for React Native iOS.\n * This particularly adds a close listener to handle cases where the WebSocket\n * connection closes immediately after opening without emitting an error.\n */\nimport { Deserializer } from 'rsocket-core';\nimport { WebsocketDuplexConnection } from 'rsocket-websocket-client/dist/WebsocketDuplexConnection.js';\nexport class WebsocketClientTransport {\n    url;\n    factory;\n    constructor(options) {\n        this.url = options.url;\n        this.factory = options.wsCreator ?? ((url) => new WebSocket(url));\n    }\n    connect(multiplexerDemultiplexerFactory) {\n        return new Promise((resolve, reject) => {\n            const websocket = this.factory(this.url);\n            websocket.binaryType = 'arraybuffer';\n            let removeListeners;\n            const openListener = () => {\n                removeListeners();\n                resolve(new WebsocketDuplexConnection(websocket, new Deserializer(), multiplexerDemultiplexerFactory));\n            };\n            const errorListener = (ev) => {\n                removeListeners();\n                // We add a default error in that case.\n                if (ev.error != null) {\n                    // undici typically provides an error object\n                    reject(ev.error);\n                }\n                else if (ev.message != null) {\n                    // React Native typically does not provide an error object, but does provide a message\n                    reject(new Error(`Failed to create websocket connection: ${ev.message}`));\n                }\n                else {\n                    // Browsers often provide no details at all\n                    reject(new Error(`Failed to create websocket connection to ${this.url}`));\n                }\n            };\n            /**\n             * In some cases, such as React Native iOS, the WebSocket connection may close immediately after opening\n             * without and error. In such cases, we need to handle the close event to reject the promise.\n             */\n            const closeListener = () => {\n                removeListeners();\n                reject(new Error('WebSocket connection closed while opening'));\n            };\n            removeListeners = () => {\n                websocket.removeEventListener('open', openListener);\n                websocket.removeEventListener('error', errorListener);\n                websocket.removeEventListener('close', closeListener);\n            };\n            websocket.addEventListener('open', openListener);\n            websocket.addEventListener('error', errorListener);\n            websocket.addEventListener('close', closeListener);\n        });\n    }\n}\n//# sourceMappingURL=WebsocketClientTransport.js.map","export const doneResult = { done: true, value: undefined };\nexport function valueResult(value) {\n    return { done: false, value };\n}\n/**\n * A variant of {@link Array.map} for async iterators.\n */\nexport function map(source, map) {\n    return {\n        next: async () => {\n            const value = await source.next();\n            if (value.done) {\n                return value;\n            }\n            else {\n                return { value: map(value.value) };\n            }\n        }\n    };\n}\n/**\n * Expands a source async iterator by allowing to inject events asynchronously.\n *\n * The resulting iterator will emit all events from its source. Additionally though, events can be injected. These\n * events are dropped once the main iterator completes, but are otherwise forwarded.\n *\n * The iterator completes when its source completes, and it supports backpressure by only calling `next()` on the source\n * in response to a `next()` call from downstream if no pending injected events can be dispatched.\n */\nexport function injectable(source) {\n    let sourceIsDone = false;\n    let waiter = undefined; // An active, waiting next() call.\n    // A pending upstream event that couldn't be dispatched because inject() has been called before it was resolved.\n    let pendingSourceEvent = null;\n    let pendingInjectedEvents = [];\n    const consumeWaiter = () => {\n        const pending = waiter;\n        waiter = undefined;\n        return pending;\n    };\n    const fetchFromSource = () => {\n        const resolveWaiter = (propagate) => {\n            const active = consumeWaiter();\n            if (active) {\n                propagate(active);\n            }\n            else {\n                pendingSourceEvent = propagate;\n            }\n        };\n        const nextFromSource = source.next();\n        nextFromSource.then((value) => {\n            sourceIsDone = value.done == true;\n            resolveWaiter((w) => w.resolve(value));\n        }, (error) => {\n            resolveWaiter((w) => w.reject(error));\n        });\n    };\n    return {\n        next: () => {\n            return new Promise((resolve, reject) => {\n                // First priority: Dispatch ready upstream events.\n                if (sourceIsDone) {\n                    return resolve(doneResult);\n                }\n                if (pendingSourceEvent) {\n                    pendingSourceEvent({ resolve, reject });\n                    pendingSourceEvent = null;\n                    return;\n                }\n                // Second priority: Dispatch injected events\n                if (pendingInjectedEvents.length) {\n                    return resolve(valueResult(pendingInjectedEvents.shift()));\n                }\n                // Nothing pending? Fetch from source\n                waiter = { resolve, reject };\n                return fetchFromSource();\n            });\n        },\n        inject: (event) => {\n            const pending = consumeWaiter();\n            if (pending != null) {\n                pending.resolve(valueResult(event));\n            }\n            else {\n                pendingInjectedEvents.push(event);\n            }\n        }\n    };\n}\n/**\n * Splits a byte stream at line endings, emitting each line as a string.\n */\nexport function extractJsonLines(source, decoder) {\n    let buffer = '';\n    const pendingLines = [];\n    let isFinalEvent = false;\n    return {\n        next: async () => {\n            while (true) {\n                if (isFinalEvent) {\n                    return doneResult;\n                }\n                {\n                    const first = pendingLines.shift();\n                    if (first) {\n                        return { done: false, value: first };\n                    }\n                }\n                const { done, value } = await source.next();\n                if (done) {\n                    const remaining = buffer.trim();\n                    if (remaining.length != 0) {\n                        isFinalEvent = true;\n                        return { done: false, value: remaining };\n                    }\n                    return doneResult;\n                }\n                const data = decoder.decode(value, { stream: true });\n                buffer += data;\n                const lines = buffer.split('\\n');\n                for (let i = 0; i < lines.length - 1; i++) {\n                    const l = lines[i].trim();\n                    if (l.length > 0) {\n                        pendingLines.push(l);\n                    }\n                }\n                buffer = lines[lines.length - 1];\n            }\n        }\n    };\n}\n/**\n * Splits a concatenated stream of BSON objects by emitting individual objects.\n */\nexport function extractBsonObjects(source) {\n    // Fully read but not emitted yet.\n    const completedObjects = [];\n    // Whether source has returned { done: true }. We do the same once completed objects have been emitted.\n    let isDone = false;\n    const lengthBuffer = new DataView(new ArrayBuffer(4));\n    let objectBody = null;\n    // If we're parsing the length field, a number between 1 and 4 (inclusive) describing remaining bytes in the header.\n    // If we're consuming a document, the bytes remaining.\n    let remainingLength = 4;\n    return {\n        async next() {\n            while (true) {\n                // Before fetching new data from upstream, return completed objects.\n                if (completedObjects.length) {\n                    return valueResult(completedObjects.shift());\n                }\n                if (isDone) {\n                    return doneResult;\n                }\n                const upstreamEvent = await source.next();\n                if (upstreamEvent.done) {\n                    isDone = true;\n                    if (objectBody || remainingLength != 4) {\n                        throw new Error('illegal end of stream in BSON object');\n                    }\n                    return doneResult;\n                }\n                const chunk = upstreamEvent.value;\n                for (let i = 0; i < chunk.length;) {\n                    const availableInData = chunk.length - i;\n                    if (objectBody) {\n                        // We're in the middle of reading a BSON document.\n                        const bytesToRead = Math.min(availableInData, remainingLength);\n                        const copySource = new Uint8Array(chunk.buffer, chunk.byteOffset + i, bytesToRead);\n                        objectBody.set(copySource, objectBody.length - remainingLength);\n                        i += bytesToRead;\n                        remainingLength -= bytesToRead;\n                        if (remainingLength == 0) {\n                            completedObjects.push(objectBody);\n                            // Prepare to read another document, starting with its length\n                            objectBody = null;\n                            remainingLength = 4;\n                        }\n                    }\n                    else {\n                        // Copy up to 4 bytes into lengthBuffer, depending on how many we still need.\n                        const bytesToRead = Math.min(availableInData, remainingLength);\n                        for (let j = 0; j < bytesToRead; j++) {\n                            lengthBuffer.setUint8(4 - remainingLength + j, chunk[i + j]);\n                        }\n                        i += bytesToRead;\n                        remainingLength -= bytesToRead;\n                        if (remainingLength == 0) {\n                            // Transition from reading length header to reading document. Subtracting 4 because the length of the\n                            // header is included in length.\n                            const length = lengthBuffer.getInt32(0, true /* little endian */);\n                            remainingLength = length - 4;\n                            if (remainingLength < 1) {\n                                throw new Error(`invalid length for bson: ${length}`);\n                            }\n                            objectBody = new Uint8Array(length);\n                            new DataView(objectBody.buffer).setInt32(0, length, true);\n                        }\n                    }\n                }\n            }\n        }\n    };\n}\n//# sourceMappingURL=stream_transform.js.map","import Logger from 'js-logger';\nimport { RSocketConnector } from 'rsocket-core';\nimport PACKAGE from '../../../../package.json' with { type: 'json' };\nimport { AbortOperation } from '../../../utils/AbortOperation.js';\nimport { WebsocketClientTransport } from './WebsocketClientTransport.js';\nimport { doneResult, extractBsonObjects, extractJsonLines } from '../../../utils/stream_transform.js';\nimport { EventIterator } from 'event-iterator';\nconst POWERSYNC_TRAILING_SLASH_MATCH = /\\/+$/;\nconst POWERSYNC_JS_VERSION = PACKAGE.version;\nconst SYNC_QUEUE_REQUEST_HIGH_WATER = 10;\nconst SYNC_QUEUE_REQUEST_LOW_WATER = 5;\n// Keep alive message is sent every period\nconst KEEP_ALIVE_MS = 20_000;\n// One message of any type must be received in this period.\nconst SOCKET_TIMEOUT_MS = 30_000;\n// One keepalive message must be received in this period.\n// If there is a backlog of messages (for example on slow connections), keepalive messages could be delayed\n// significantly. Therefore this is longer than the socket timeout.\nconst KEEP_ALIVE_LIFETIME_MS = 90_000;\nexport const DEFAULT_REMOTE_LOGGER = Logger.get('PowerSyncRemote');\nexport var FetchStrategy;\n(function (FetchStrategy) {\n    /**\n     * Queues multiple sync events before processing, reducing round-trips.\n     * This comes at the cost of more processing overhead, which may cause ACK timeouts on older/weaker devices for big enough datasets.\n     */\n    FetchStrategy[\"Buffered\"] = \"buffered\";\n    /**\n     * Processes each sync event immediately before requesting the next.\n     * This reduces processing overhead and improves real-time responsiveness.\n     */\n    FetchStrategy[\"Sequential\"] = \"sequential\";\n})(FetchStrategy || (FetchStrategy = {}));\n/**\n * Class wrapper for providing a fetch implementation.\n * The class wrapper is used to distinguish the fetchImplementation\n * option in [AbstractRemoteOptions] from the general fetch method\n * which is typeof \"function\"\n */\nexport class FetchImplementationProvider {\n    getFetch() {\n        throw new Error('Unspecified fetch implementation');\n    }\n}\nexport const DEFAULT_REMOTE_OPTIONS = {\n    socketUrlTransformer: (url) => url.replace(/^https?:\\/\\//, function (match) {\n        return match === 'https://' ? 'wss://' : 'ws://';\n    }),\n    fetchImplementation: new FetchImplementationProvider(),\n    fetchOptions: {}\n};\nexport class AbstractRemote {\n    connector;\n    logger;\n    credentials = null;\n    options;\n    constructor(connector, logger = DEFAULT_REMOTE_LOGGER, options) {\n        this.connector = connector;\n        this.logger = logger;\n        this.options = {\n            ...DEFAULT_REMOTE_OPTIONS,\n            ...(options ?? {})\n        };\n    }\n    /**\n     * @returns a fetch implementation (function)\n     * which can be called to perform fetch requests\n     */\n    get fetch() {\n        const { fetchImplementation } = this.options;\n        return fetchImplementation instanceof FetchImplementationProvider\n            ? fetchImplementation.getFetch()\n            : fetchImplementation;\n    }\n    /**\n     * Get credentials currently cached, or fetch new credentials if none are\n     * available.\n     *\n     * These credentials may have expired already.\n     */\n    async getCredentials() {\n        if (this.credentials) {\n            return this.credentials;\n        }\n        return this.prefetchCredentials();\n    }\n    /**\n     * Fetch a new set of credentials and cache it.\n     *\n     * Until this call succeeds, `getCredentials` will still return the\n     * old credentials.\n     *\n     * This may be called before the current credentials have expired.\n     */\n    async prefetchCredentials() {\n        this.credentials = await this.fetchCredentials();\n        return this.credentials;\n    }\n    /**\n     * Get credentials for PowerSync.\n     *\n     * This should always fetch a fresh set of credentials - don't use cached\n     * values.\n     */\n    async fetchCredentials() {\n        const credentials = await this.connector.fetchCredentials();\n        if (credentials?.endpoint.match(POWERSYNC_TRAILING_SLASH_MATCH)) {\n            throw new Error(`A trailing forward slash \"/\" was found in the fetchCredentials endpoint: \"${credentials.endpoint}\". Remove the trailing forward slash \"/\" to fix this error.`);\n        }\n        return credentials;\n    }\n    /***\n     * Immediately invalidate credentials.\n     *\n     * This may be called when the current credentials have expired.\n     */\n    invalidateCredentials() {\n        this.credentials = null;\n        this.connector.invalidateCredentials?.();\n    }\n    getUserAgent() {\n        return `powersync-js/${POWERSYNC_JS_VERSION}`;\n    }\n    async buildRequest(path) {\n        const credentials = await this.getCredentials();\n        if (credentials != null && (credentials.endpoint == null || credentials.endpoint == '')) {\n            throw new Error('PowerSync endpoint not configured');\n        }\n        else if (credentials?.token == null || credentials?.token == '') {\n            const error = new Error(`Not signed in`);\n            error.status = 401;\n            throw error;\n        }\n        const userAgent = this.getUserAgent();\n        return {\n            url: credentials.endpoint + path,\n            headers: {\n                'content-type': 'application/json',\n                Authorization: `Token ${credentials.token}`,\n                'x-user-agent': userAgent\n            }\n        };\n    }\n    async post(path, data, headers = {}) {\n        const request = await this.buildRequest(path);\n        const res = await this.fetch(request.url, {\n            method: 'POST',\n            headers: {\n                ...headers,\n                ...request.headers\n            },\n            body: JSON.stringify(data)\n        });\n        if (res.status === 401) {\n            this.invalidateCredentials();\n        }\n        if (!res.ok) {\n            throw new Error(`Received ${res.status} - ${res.statusText} when posting to ${path}: ${await res.text()}}`);\n        }\n        return res.json();\n    }\n    async get(path, headers) {\n        const request = await this.buildRequest(path);\n        const res = await this.fetch(request.url, {\n            method: 'GET',\n            headers: {\n                ...headers,\n                ...request.headers\n            }\n        });\n        if (res.status === 401) {\n            this.invalidateCredentials();\n        }\n        if (!res.ok) {\n            throw new Error(`Received ${res.status} - ${res.statusText} when getting from ${path}: ${await res.text()}}`);\n        }\n        return res.json();\n    }\n    /**\n     * @returns A text decoder decoding UTF-8. This is a method to allow patching it for Hermes which doesn't support the\n     * builtin, without forcing us to bundle a polyfill with `@powersync/common`.\n     */\n    createTextDecoder() {\n        return new TextDecoder();\n    }\n    createSocket(url) {\n        return new WebSocket(url);\n    }\n    /**\n     * Returns a data stream of sync line data, fetched via RSocket-over-WebSocket.\n     *\n     * The only mechanism to abort the returned stream is to use the abort signal in {@link SocketSyncStreamOptions}.\n     *\n     * @param bson A BSON encoder and decoder. When set, the data stream will be requested with a BSON payload\n     * (required for compatibility with older sync services).\n     */\n    async socketStreamRaw(options, bson) {\n        const { path, fetchStrategy = FetchStrategy.Buffered } = options;\n        const mimeType = bson == null ? 'application/json' : 'application/bson';\n        function toBuffer(js) {\n            let contents;\n            if (bson != null) {\n                contents = bson.serialize(js);\n            }\n            else {\n                contents = JSON.stringify(js);\n            }\n            return Buffer.from(contents);\n        }\n        const syncQueueRequestSize = fetchStrategy == FetchStrategy.Buffered ? 10 : 1;\n        const request = await this.buildRequest(path);\n        const url = this.options.socketUrlTransformer(request.url);\n        // Add the user agent in the setup payload - we can't set custom\n        // headers with websockets on web. The browser userAgent is however added\n        // automatically as a header.\n        const userAgent = this.getUserAgent();\n        // While we're connecting (a process that can't be aborted in RSocket), the WebSocket instance to close if we wanted\n        // to abort the connection.\n        let pendingSocket = null;\n        let keepAliveTimeout;\n        let rsocket = null;\n        let queue = null;\n        let didClose = false;\n        const abortRequest = () => {\n            if (didClose) {\n                return;\n            }\n            didClose = true;\n            clearTimeout(keepAliveTimeout);\n            if (pendingSocket) {\n                pendingSocket.close();\n            }\n            if (rsocket) {\n                rsocket.close();\n            }\n            if (queue) {\n                queue.stop();\n            }\n        };\n        // Handle upstream abort\n        if (options.abortSignal.aborted) {\n            throw new AbortOperation('Connection request aborted');\n        }\n        else {\n            options.abortSignal.addEventListener('abort', abortRequest);\n        }\n        const resetTimeout = () => {\n            clearTimeout(keepAliveTimeout);\n            keepAliveTimeout = setTimeout(() => {\n                this.logger.error(`No data received on WebSocket in ${SOCKET_TIMEOUT_MS}ms, closing connection.`);\n                abortRequest();\n            }, SOCKET_TIMEOUT_MS);\n        };\n        resetTimeout();\n        const connector = new RSocketConnector({\n            transport: new WebsocketClientTransport({\n                url,\n                wsCreator: (url) => {\n                    const socket = (pendingSocket = this.createSocket(url));\n                    socket.addEventListener('message', () => {\n                        resetTimeout();\n                    });\n                    return socket;\n                }\n            }),\n            setup: {\n                keepAlive: KEEP_ALIVE_MS,\n                lifetime: KEEP_ALIVE_LIFETIME_MS,\n                dataMimeType: mimeType,\n                metadataMimeType: mimeType,\n                payload: {\n                    data: null,\n                    metadata: toBuffer({\n                        token: request.headers.Authorization,\n                        user_agent: userAgent\n                    })\n                }\n            }\n        });\n        try {\n            rsocket = await connector.connect();\n            // The connection is established, we no longer need to monitor the initial timeout\n            pendingSocket = null;\n        }\n        catch (ex) {\n            this.logger.error(`Failed to connect WebSocket`, ex);\n            abortRequest();\n            throw ex;\n        }\n        resetTimeout();\n        // Helps to prevent double close scenarios\n        rsocket.onClose(() => (rsocket = null));\n        return await new Promise((resolve, reject) => {\n            let connectionEstablished = false;\n            let pendingEventsCount = syncQueueRequestSize;\n            let paused = false;\n            let res = null;\n            function requestMore() {\n                const delta = syncQueueRequestSize - pendingEventsCount;\n                if (!paused && delta > 0) {\n                    res?.request(delta);\n                    pendingEventsCount = syncQueueRequestSize;\n                }\n            }\n            const events = new EventIterator((q) => {\n                queue = q;\n                q.on('highWater', () => (paused = true));\n                q.on('lowWater', () => {\n                    paused = false;\n                    requestMore();\n                });\n            }, { highWaterMark: SYNC_QUEUE_REQUEST_HIGH_WATER, lowWaterMark: SYNC_QUEUE_REQUEST_LOW_WATER })[Symbol.asyncIterator]();\n            res = rsocket.requestStream({\n                data: toBuffer(options.data),\n                metadata: toBuffer({\n                    path\n                })\n            }, syncQueueRequestSize, // The initial N amount\n            {\n                onError: (e) => {\n                    if (e.message.includes('PSYNC_')) {\n                        if (e.message.includes('PSYNC_S21')) {\n                            this.invalidateCredentials();\n                        }\n                    }\n                    else {\n                        // Possible that connection is with an older service, always invalidate to be safe\n                        if (e.message !== 'Closed. ') {\n                            this.invalidateCredentials();\n                        }\n                    }\n                    // Don't log closed as an error\n                    if (e.message !== 'Closed. ') {\n                        this.logger.error(e);\n                    }\n                    // RSocket will close the RSocket stream automatically\n                    // Close the downstream stream as well - this will close the RSocket connection and WebSocket\n                    abortRequest();\n                    // Handles cases where the connection failed e.g. auth error or connection error\n                    if (!connectionEstablished) {\n                        reject(e);\n                    }\n                },\n                onNext: (payload) => {\n                    // The connection is active\n                    if (!connectionEstablished) {\n                        connectionEstablished = true;\n                        resolve(events);\n                    }\n                    const { data } = payload;\n                    if (data) {\n                        queue.push(data);\n                    }\n                    // Less events are now pending\n                    pendingEventsCount--;\n                    // Request another event (unless the downstream consumer is paused).\n                    requestMore();\n                },\n                onComplete: () => {\n                    abortRequest(); // this will also emit a done event\n                },\n                onExtension: () => { }\n            });\n        });\n    }\n    /**\n     * @returns Whether the HTTP implementation on this platform can receive streamed binary responses. This is true on\n     * all platforms except React Native (who would have guessed...), where we must not request BSON responses.\n     *\n     * @see https://github.com/react-native-community/fetch?tab=readme-ov-file#motivation\n     */\n    get supportsStreamingBinaryResponses() {\n        return true;\n    }\n    /**\n     * Posts a `/sync/stream` request, asserts that it completes successfully and returns the streaming response as an\n     * async iterator of byte blobs.\n     *\n     * To cancel the async iterator, use the abort signal from {@link SyncStreamOptions} passed to this method.\n     */\n    async fetchStreamRaw(options) {\n        const { data, path, headers, abortSignal } = options;\n        const request = await this.buildRequest(path);\n        /**\n         * This abort controller will abort pending fetch requests.\n         * If the request has resolved, it will be used to close the readable stream.\n         * Which will cancel the network request.\n         *\n         * This nested controller is required since:\n         *  Aborting the active fetch request while it is being consumed seems to throw\n         *  an unhandled exception on the window level.\n         */\n        if (abortSignal.aborted) {\n            throw new AbortOperation('Abort request received before making fetchStreamRaw request');\n        }\n        const controller = new AbortController();\n        let reader = null;\n        abortSignal.addEventListener('abort', () => {\n            const reason = abortSignal.reason ??\n                new AbortOperation('Cancelling network request before it resolves. Abort signal has been received.');\n            if (reader == null) {\n                // Only abort via the abort controller if the request has not resolved yet\n                controller.abort(reason);\n            }\n            else {\n                reader.cancel(reason).catch(() => {\n                    // Cancelling the reader might rethrow an exception we would have handled by throwing in next(). So we can\n                    // ignore it here.\n                });\n            }\n        });\n        let res;\n        let responseIsBson = false;\n        try {\n            const ndJson = 'application/x-ndjson';\n            const bson = 'application/vnd.powersync.bson-stream';\n            res = await this.fetch(request.url, {\n                method: 'POST',\n                headers: {\n                    ...headers,\n                    ...request.headers,\n                    accept: this.supportsStreamingBinaryResponses ? `${bson};q=0.9,${ndJson};q=0.8` : ndJson\n                },\n                body: JSON.stringify(data),\n                signal: controller.signal,\n                cache: 'no-store',\n                ...(this.options.fetchOptions ?? {}),\n                ...options.fetchOptions\n            });\n            if (!res.ok || !res.body) {\n                const text = await res.text();\n                this.logger.error(`Could not POST streaming to ${path} - ${res.status} - ${res.statusText}: ${text}`);\n                const error = new Error(`HTTP ${res.statusText}: ${text}`);\n                error.status = res.status;\n                throw error;\n            }\n            const contentType = res.headers.get('content-type');\n            responseIsBson = contentType == bson;\n        }\n        catch (ex) {\n            if (ex.name == 'AbortError') {\n                throw new AbortOperation(`Pending fetch request to ${request.url} has been aborted.`);\n            }\n            throw ex;\n        }\n        reader = res.body.getReader();\n        const stream = {\n            next: async () => {\n                if (controller.signal.aborted) {\n                    return doneResult;\n                }\n                try {\n                    return await reader.read();\n                }\n                catch (ex) {\n                    if (controller.signal.aborted) {\n                        // .read() completes with an error if we cancel the reader, which we do to disconnect. So this is just\n                        // things working as intended, we can return a done event and consider the exception handled.\n                        return doneResult;\n                    }\n                    throw ex;\n                }\n            }\n        };\n        return { isBson: responseIsBson, stream };\n    }\n    /**\n     * Posts a `/sync/stream` request.\n     *\n     * Depending on the `Content-Type` of the response, this returns strings for sync lines or encoded BSON documents as\n     * {@link Uint8Array}s.\n     */\n    async fetchStream(options) {\n        const { isBson, stream } = await this.fetchStreamRaw(options);\n        if (isBson) {\n            return extractBsonObjects(stream);\n        }\n        else {\n            return extractJsonLines(stream, this.createTextDecoder());\n        }\n    }\n}\n//# sourceMappingURL=AbstractRemote.js.map","import { FULL_SYNC_PRIORITY } from '../../../db/crud/SyncProgress.js';\nfunction priorityToJs(status) {\n    return {\n        priority: status.priority,\n        hasSynced: status.has_synced ?? undefined,\n        lastSyncedAt: status.last_synced_at != null ? new Date(status.last_synced_at * 1000) : undefined\n    };\n}\nexport function coreStatusToJs(status) {\n    const coreCompleteSync = status.priority_status.find((s) => s.priority == FULL_SYNC_PRIORITY);\n    const completeSync = coreCompleteSync != null ? priorityToJs(coreCompleteSync) : null;\n    return {\n        connected: status.connected,\n        connecting: status.connecting,\n        dataFlow: {\n            // We expose downloading as a boolean field, the core extension reports download information as a nullable\n            // download status. When that status is non-null, a download is in progress.\n            downloading: status.downloading != null,\n            downloadProgress: status.downloading?.buckets,\n            internalStreamSubscriptions: status.streams\n        },\n        lastSyncedAt: completeSync?.lastSyncedAt,\n        hasSynced: completeSync?.hasSynced,\n        priorityStatusEntries: status.priority_status.map(priorityToJs)\n    };\n}\n//# sourceMappingURL=core-instruction.js.map","export function isStreamingSyncData(line) {\n    return line.data != null;\n}\nexport function isStreamingKeepalive(line) {\n    return line.token_expires_in != null;\n}\nexport function isStreamingSyncCheckpoint(line) {\n    return line.checkpoint != null;\n}\nexport function isStreamingSyncCheckpointComplete(line) {\n    return line.checkpoint_complete != null;\n}\nexport function isStreamingSyncCheckpointPartiallyComplete(line) {\n    return line.partial_checkpoint_complete != null;\n}\nexport function isStreamingSyncCheckpointDiff(line) {\n    return line.checkpoint_diff != null;\n}\nexport function isContinueCheckpointRequest(request) {\n    return (Array.isArray(request.buckets) &&\n        typeof request.checkpoint_token == 'string');\n}\nexport function isSyncNewCheckpointRequest(request) {\n    return typeof request.request_checkpoint == 'object';\n}\n//# sourceMappingURL=streaming-sync-types.js.map","import Logger from 'js-logger';\nimport { SyncStatus } from '../../../db/crud/SyncStatus.js';\nimport { AbortOperation } from '../../../utils/AbortOperation.js';\nimport { BaseObserver } from '../../../utils/BaseObserver.js';\nimport { throttleLeadingTrailing } from '../../../utils/async.js';\nimport { PowerSyncControlCommand } from '../bucket/BucketStorageAdapter.js';\nimport { SyncDataBucket } from '../bucket/SyncDataBucket.js';\nimport { FetchStrategy } from './AbstractRemote.js';\nimport { coreStatusToJs } from './core-instruction.js';\nimport { isStreamingKeepalive, isStreamingSyncCheckpoint, isStreamingSyncCheckpointComplete, isStreamingSyncCheckpointDiff, isStreamingSyncCheckpointPartiallyComplete, isStreamingSyncData } from './streaming-sync-types.js';\nimport { injectable, map } from '../../../utils/stream_transform.js';\nexport var LockType;\n(function (LockType) {\n    LockType[\"CRUD\"] = \"crud\";\n    LockType[\"SYNC\"] = \"sync\";\n})(LockType || (LockType = {}));\nexport var SyncStreamConnectionMethod;\n(function (SyncStreamConnectionMethod) {\n    SyncStreamConnectionMethod[\"HTTP\"] = \"http\";\n    SyncStreamConnectionMethod[\"WEB_SOCKET\"] = \"web-socket\";\n})(SyncStreamConnectionMethod || (SyncStreamConnectionMethod = {}));\nexport var SyncClientImplementation;\n(function (SyncClientImplementation) {\n    /**\n     * Decodes and handles sync lines received from the sync service in JavaScript.\n     *\n     * This is the default option.\n     *\n     * @deprecated We recommend the {@link RUST} client implementation for all apps. If you have issues with\n     * the Rust client, please file an issue or reach out to us. The JavaScript client will be removed in a future\n     * version of the PowerSync SDK.\n     */\n    SyncClientImplementation[\"JAVASCRIPT\"] = \"js\";\n    /**\n     * This implementation offloads the sync line decoding and handling into the PowerSync\n     * core extension.\n     *\n     * This option is more performant than the {@link JAVASCRIPT} client, enabled by default and the\n     * recommended client implementation for all apps.\n     *\n     * ## Compatibility warning\n     *\n     * The Rust sync client stores sync data in a format that is slightly different than the one used\n     * by the old {@link JAVASCRIPT} implementation. When adopting the {@link RUST} client on existing\n     * databases, the PowerSync SDK will migrate the format automatically.\n     * Further, the {@link JAVASCRIPT} client in recent versions of the PowerSync JS SDK (starting from\n     * the version introducing {@link RUST} as an option) also supports the new format, so you can switch\n     * back to {@link JAVASCRIPT} later.\n     *\n     * __However__: Upgrading the SDK version, then adopting {@link RUST} as a sync client and later\n     * downgrading the SDK to an older version (necessarily using the JavaScript-based implementation then)\n     * can lead to sync issues.\n     */\n    SyncClientImplementation[\"RUST\"] = \"rust\";\n})(SyncClientImplementation || (SyncClientImplementation = {}));\n/**\n * The default {@link SyncClientImplementation} to use, {@link SyncClientImplementation.RUST}.\n */\nexport const DEFAULT_SYNC_CLIENT_IMPLEMENTATION = SyncClientImplementation.RUST;\nexport const DEFAULT_CRUD_UPLOAD_THROTTLE_MS = 1000;\nexport const DEFAULT_RETRY_DELAY_MS = 5000;\nexport const DEFAULT_STREAMING_SYNC_OPTIONS = {\n    retryDelayMs: DEFAULT_RETRY_DELAY_MS,\n    crudUploadThrottleMs: DEFAULT_CRUD_UPLOAD_THROTTLE_MS\n};\nexport const DEFAULT_STREAM_CONNECTION_OPTIONS = {\n    appMetadata: {},\n    connectionMethod: SyncStreamConnectionMethod.WEB_SOCKET,\n    clientImplementation: DEFAULT_SYNC_CLIENT_IMPLEMENTATION,\n    fetchStrategy: FetchStrategy.Buffered,\n    params: {},\n    serializedSchema: undefined,\n    includeDefaultStreams: true\n};\n// The priority we assume when we receive checkpoint lines where no priority is set.\n// This is the default priority used by the sync service, but can be set to an arbitrary\n// value since sync services without priorities also won't send partial sync completion\n// messages.\nconst FALLBACK_PRIORITY = 3;\nexport class AbstractStreamingSyncImplementation extends BaseObserver {\n    _lastSyncedAt;\n    options;\n    abortController;\n    // In rare cases, mostly for tests, uploads can be triggered without being properly connected.\n    // This allows ensuring that all upload processes can be aborted.\n    uploadAbortController;\n    crudUpdateListener;\n    streamingSyncPromise;\n    logger;\n    activeStreams;\n    isUploadingCrud = false;\n    notifyCompletedUploads;\n    handleActiveStreamsChange;\n    syncStatus;\n    triggerCrudUpload;\n    constructor(options) {\n        super();\n        this.options = options;\n        this.activeStreams = options.subscriptions;\n        this.logger = options.logger ?? Logger.get('PowerSyncStream');\n        this.syncStatus = new SyncStatus({\n            connected: false,\n            connecting: false,\n            lastSyncedAt: undefined,\n            dataFlow: {\n                uploading: false,\n                downloading: false\n            }\n        });\n        this.abortController = null;\n        this.triggerCrudUpload = throttleLeadingTrailing(() => {\n            if (!this.syncStatus.connected || this.isUploadingCrud) {\n                return;\n            }\n            this.isUploadingCrud = true;\n            this._uploadAllCrud().finally(() => {\n                this.notifyCompletedUploads?.();\n                this.isUploadingCrud = false;\n            });\n        }, this.options.crudUploadThrottleMs);\n    }\n    async waitForReady() { }\n    waitForStatus(status) {\n        return this.waitUntilStatusMatches((currentStatus) => {\n            /**\n             * Match only the partial status options provided in the\n             * matching status\n             */\n            const matchPartialObject = (compA, compB) => {\n                return Object.entries(compA).every(([key, value]) => {\n                    const comparisonBValue = compB[key];\n                    if (typeof value == 'object' && typeof comparisonBValue == 'object') {\n                        return matchPartialObject(value, comparisonBValue);\n                    }\n                    return value == comparisonBValue;\n                });\n            };\n            return matchPartialObject(status, currentStatus);\n        });\n    }\n    waitUntilStatusMatches(predicate) {\n        return new Promise((resolve) => {\n            if (predicate(this.syncStatus)) {\n                resolve();\n                return;\n            }\n            const l = this.registerListener({\n                statusChanged: (updatedStatus) => {\n                    if (predicate(updatedStatus)) {\n                        resolve();\n                        l?.();\n                    }\n                }\n            });\n        });\n    }\n    get lastSyncedAt() {\n        const lastSynced = this.syncStatus.lastSyncedAt;\n        return lastSynced && new Date(lastSynced);\n    }\n    get isConnected() {\n        return this.syncStatus.connected;\n    }\n    async dispose() {\n        super.dispose();\n        this.crudUpdateListener?.();\n        this.crudUpdateListener = undefined;\n        this.uploadAbortController?.abort();\n    }\n    async hasCompletedSync() {\n        return this.options.adapter.hasCompletedSync();\n    }\n    async getWriteCheckpoint() {\n        const clientId = await this.options.adapter.getClientId();\n        let path = `/write-checkpoint2.json?client_id=${clientId}`;\n        const response = await this.options.remote.get(path);\n        const checkpoint = response['data']['write_checkpoint'];\n        this.logger.debug(`Created write checkpoint: ${checkpoint}`);\n        return checkpoint;\n    }\n    async _uploadAllCrud() {\n        return this.obtainLock({\n            type: LockType.CRUD,\n            callback: async () => {\n                /**\n                 * Keep track of the first item in the CRUD queue for the last `uploadCrud` iteration.\n                 */\n                let checkedCrudItem;\n                const controller = new AbortController();\n                this.uploadAbortController = controller;\n                this.abortController?.signal.addEventListener('abort', () => {\n                    controller.abort();\n                }, { once: true });\n                while (!controller.signal.aborted) {\n                    try {\n                        /**\n                         * This is the first item in the FIFO CRUD queue.\n                         */\n                        const nextCrudItem = await this.options.adapter.nextCrudItem();\n                        if (nextCrudItem) {\n                            this.updateSyncStatus({\n                                dataFlow: {\n                                    uploading: true\n                                }\n                            });\n                            if (nextCrudItem.clientId == checkedCrudItem?.clientId) {\n                                // This will force a higher log level than exceptions which are caught here.\n                                this.logger.warn(`Potentially previously uploaded CRUD entries are still present in the upload queue.\nMake sure to handle uploads and complete CRUD transactions or batches by calling and awaiting their [.complete()] method.\nThe next upload iteration will be delayed.`);\n                                throw new Error('Delaying due to previously encountered CRUD item.');\n                            }\n                            checkedCrudItem = nextCrudItem;\n                            await this.options.uploadCrud();\n                            this.updateSyncStatus({\n                                dataFlow: {\n                                    uploadError: undefined\n                                }\n                            });\n                        }\n                        else {\n                            // Uploading is completed\n                            const neededUpdate = await this.options.adapter.updateLocalTarget(() => this.getWriteCheckpoint());\n                            if (neededUpdate == false && checkedCrudItem != null) {\n                                // Only log this if there was something to upload\n                                this.logger.debug('Upload complete, no write checkpoint needed.');\n                            }\n                            break;\n                        }\n                    }\n                    catch (ex) {\n                        checkedCrudItem = undefined;\n                        this.updateSyncStatus({\n                            dataFlow: {\n                                uploading: false,\n                                uploadError: ex\n                            }\n                        });\n                        await this.delayRetry(controller.signal);\n                        if (!this.isConnected) {\n                            // Exit the upload loop if the sync stream is no longer connected\n                            break;\n                        }\n                        this.logger.debug(`Caught exception when uploading. Upload will retry after a delay. Exception: ${ex.message}`);\n                    }\n                    finally {\n                        this.updateSyncStatus({\n                            dataFlow: {\n                                uploading: false\n                            }\n                        });\n                    }\n                }\n                this.uploadAbortController = null;\n            }\n        });\n    }\n    async connect(options) {\n        if (this.abortController) {\n            await this.disconnect();\n        }\n        const controller = new AbortController();\n        this.abortController = controller;\n        this.streamingSyncPromise = this.streamingSync(this.abortController.signal, options);\n        // Return a promise that resolves when the connection status is updated to indicate that we're connected.\n        return new Promise((resolve) => {\n            const disposer = this.registerListener({\n                statusChanged: (status) => {\n                    if (status.dataFlowStatus.downloadError != null) {\n                        this.logger.warn('Initial connect attempt did not successfully connect to server');\n                    }\n                    else if (status.connecting) {\n                        // Still connecting.\n                        return;\n                    }\n                    disposer();\n                    resolve();\n                }\n            });\n        });\n    }\n    async disconnect() {\n        if (!this.abortController) {\n            return;\n        }\n        // This might be called multiple times\n        if (!this.abortController.signal.aborted) {\n            this.abortController.abort(new AbortOperation('Disconnect has been requested'));\n        }\n        // Await any pending operations before completing the disconnect operation\n        try {\n            await this.streamingSyncPromise;\n        }\n        catch (ex) {\n            // The operation might have failed, all we care about is if it has completed\n            this.logger.warn(ex);\n        }\n        this.streamingSyncPromise = undefined;\n        this.abortController = null;\n        this.updateSyncStatus({ connected: false, connecting: false });\n    }\n    /**\n     * @deprecated use [connect instead]\n     */\n    async streamingSync(signal, options) {\n        if (!signal) {\n            this.abortController = new AbortController();\n            signal = this.abortController.signal;\n        }\n        /**\n         * Listen for CRUD updates and trigger upstream uploads\n         */\n        this.crudUpdateListener = this.options.adapter.registerListener({\n            crudUpdate: () => this.triggerCrudUpload()\n        });\n        /**\n         * Create a new abort controller which aborts items downstream.\n         * This is needed to close any previous connections on exception.\n         */\n        let nestedAbortController = new AbortController();\n        signal.addEventListener('abort', () => {\n            /**\n             * A request for disconnect was received upstream. Relay the request\n             * to the nested abort controller.\n             */\n            nestedAbortController.abort(signal?.reason ?? new AbortOperation('Received command to disconnect from upstream'));\n            this.crudUpdateListener?.();\n            this.crudUpdateListener = undefined;\n            this.updateSyncStatus({\n                connected: false,\n                connecting: false,\n                dataFlow: {\n                    downloading: false,\n                    downloadProgress: null\n                }\n            });\n        });\n        /**\n         * This loops runs until [retry] is false or the abort signal is set to aborted.\n         * Aborting the nestedAbortController will:\n         *  - Abort any pending fetch requests\n         *  - Close any sync stream ReadableStreams (which will also close any established network requests)\n         */\n        while (true) {\n            this.updateSyncStatus({ connecting: true });\n            let shouldDelayRetry = true;\n            let result = null;\n            try {\n                if (signal?.aborted) {\n                    break;\n                }\n                result = await this.streamingSyncIteration(nestedAbortController.signal, options);\n                // Continue immediately, streamingSyncIteration will wait before completing if necessary.\n            }\n            catch (ex) {\n                /**\n                 * Either:\n                 *  - A network request failed with a failed connection or not OKAY response code.\n                 *  - There was a sync processing error.\n                 *  - The connection was aborted.\n                 * This loop will retry after a delay if the connection was not aborted.\n                 * The nested abort controller will cleanup any open network requests and streams.\n                 * The WebRemote should only abort pending fetch requests or close active Readable streams.\n                 */\n                if (ex instanceof AbortOperation) {\n                    this.logger.warn(ex);\n                    shouldDelayRetry = false;\n                    // A disconnect was requested, we should not delay since there is no explicit retry\n                }\n                else {\n                    this.logger.error(ex);\n                }\n                this.updateSyncStatus({\n                    dataFlow: {\n                        downloadError: ex\n                    }\n                });\n            }\n            finally {\n                this.notifyCompletedUploads = undefined;\n                if (!signal.aborted) {\n                    nestedAbortController.abort(new AbortOperation('Closing sync stream network requests before retry.'));\n                    nestedAbortController = new AbortController();\n                }\n                if (result?.immediateRestart != true) {\n                    this.updateSyncStatus({\n                        connected: false,\n                        connecting: true // May be unnecessary\n                    });\n                    // On error, wait a little before retrying\n                    if (shouldDelayRetry) {\n                        await this.delayRetry(nestedAbortController.signal);\n                    }\n                }\n            }\n        }\n        // Mark as disconnected if here\n        this.updateSyncStatus({ connected: false, connecting: false });\n    }\n    async collectLocalBucketState() {\n        const bucketEntries = await this.options.adapter.getBucketStates();\n        const req = bucketEntries.map((entry) => ({\n            name: entry.bucket,\n            after: entry.op_id\n        }));\n        const localDescriptions = new Map();\n        for (const entry of bucketEntries) {\n            localDescriptions.set(entry.bucket, null);\n        }\n        return [req, localDescriptions];\n    }\n    /**\n     * Older versions of the JS SDK used to encode subkeys as JSON in {@link OplogEntry.toJSON}.\n     * Because subkeys are always strings, this leads to quotes being added around them in `ps_oplog`.\n     * While this is not a problem as long as it's done consistently, it causes issues when a database\n     * created by the JS SDK is used with other SDKs, or (more likely) when the new Rust sync client\n     * is enabled.\n     *\n     * So, we add a migration from the old key format (with quotes) to the new one (no quotes). The\n     * migration is only triggered when necessary (for now). The function returns whether the new format\n     * should be used, so that the JS SDK is able to write to updated databases.\n     *\n     * @param requireFixedKeyFormat Whether we require the new format or also support the old one.\n     *        The Rust client requires the new subkey format.\n     * @returns Whether the database is now using the new, fixed subkey format.\n     */\n    async requireKeyFormat(requireFixedKeyFormat) {\n        const hasMigrated = await this.options.adapter.hasMigratedSubkeys();\n        if (requireFixedKeyFormat && !hasMigrated) {\n            await this.options.adapter.migrateToFixedSubkeys();\n            return true;\n        }\n        else {\n            return hasMigrated;\n        }\n    }\n    streamingSyncIteration(signal, options) {\n        return this.obtainLock({\n            type: LockType.SYNC,\n            signal,\n            callback: async () => {\n                const resolvedOptions = {\n                    ...DEFAULT_STREAM_CONNECTION_OPTIONS,\n                    ...(options ?? {})\n                };\n                // Validate app metadata\n                const invalidMetadata = Object.entries(resolvedOptions.appMetadata).filter(([_, value]) => typeof value != 'string');\n                if (invalidMetadata.length > 0) {\n                    throw new Error(`Invalid appMetadata provided. Only string values are allowed. Invalid values: ${invalidMetadata.map(([key, value]) => `${key}: ${value}`).join(', ')}`);\n                }\n                const clientImplementation = resolvedOptions.clientImplementation;\n                this.updateSyncStatus({ clientImplementation });\n                if (clientImplementation == SyncClientImplementation.JAVASCRIPT) {\n                    await this.legacyStreamingSyncIteration(signal, resolvedOptions);\n                    return null;\n                }\n                else {\n                    await this.requireKeyFormat(true);\n                    return await this.rustSyncIteration(signal, resolvedOptions);\n                }\n            }\n        });\n    }\n    async receiveSyncLines(data) {\n        const { options, connection, bson } = data;\n        const remote = this.options.remote;\n        if (connection.connectionMethod == SyncStreamConnectionMethod.HTTP) {\n            return await remote.fetchStream(options);\n        }\n        else {\n            return await this.options.remote.socketStreamRaw({\n                ...options,\n                ...{ fetchStrategy: connection.fetchStrategy }\n            }, bson);\n        }\n    }\n    async legacyStreamingSyncIteration(signal, resolvedOptions) {\n        const rawTables = resolvedOptions.serializedSchema?.raw_tables;\n        if (rawTables != null && rawTables.length) {\n            this.logger.warn('Raw tables require the Rust-based sync client. The JS client will ignore them.');\n        }\n        if (this.activeStreams.length) {\n            this.logger.error('Sync streams require `clientImplementation: SyncClientImplementation.RUST` when connecting.');\n        }\n        this.logger.debug('Streaming sync iteration started');\n        this.options.adapter.startSession();\n        let [req, bucketMap] = await this.collectLocalBucketState();\n        let targetCheckpoint = null;\n        // A checkpoint that has been validated but not applied (e.g. due to pending local writes)\n        let pendingValidatedCheckpoint = null;\n        const clientId = await this.options.adapter.getClientId();\n        const usingFixedKeyFormat = await this.requireKeyFormat(false);\n        this.logger.debug('Requesting stream from server');\n        const syncOptions = {\n            path: '/sync/stream',\n            abortSignal: signal,\n            data: {\n                buckets: req,\n                include_checksum: true,\n                raw_data: true,\n                parameters: resolvedOptions.params,\n                app_metadata: resolvedOptions.appMetadata,\n                client_id: clientId\n            }\n        };\n        const bson = await this.options.remote.getBSON();\n        const source = await this.receiveSyncLines({\n            options: syncOptions,\n            connection: resolvedOptions,\n            bson\n        });\n        const stream = injectable(map(source, (line) => {\n            if (typeof line == 'string') {\n                return JSON.parse(line);\n            }\n            else {\n                return bson.deserialize(line);\n            }\n        }));\n        this.logger.debug('Stream established. Processing events');\n        this.notifyCompletedUploads = () => {\n            stream.inject({ crud_upload_completed: null });\n        };\n        while (true) {\n            const { value: line, done } = await stream.next();\n            if (done) {\n                // The stream has closed while waiting\n                return;\n            }\n            if ('crud_upload_completed' in line) {\n                if (pendingValidatedCheckpoint != null) {\n                    const { applied, endIteration } = await this.applyCheckpoint(pendingValidatedCheckpoint);\n                    if (applied) {\n                        pendingValidatedCheckpoint = null;\n                    }\n                    else if (endIteration) {\n                        break;\n                    }\n                }\n                continue;\n            }\n            // A connection is active and messages are being received\n            if (!this.syncStatus.connected) {\n                // There is a connection now\n                Promise.resolve().then(() => this.triggerCrudUpload());\n                this.updateSyncStatus({\n                    connected: true\n                });\n            }\n            if (isStreamingSyncCheckpoint(line)) {\n                targetCheckpoint = line.checkpoint;\n                // New checkpoint - existing validated checkpoint is no longer valid\n                pendingValidatedCheckpoint = null;\n                const bucketsToDelete = new Set(bucketMap.keys());\n                const newBuckets = new Map();\n                for (const checksum of line.checkpoint.buckets) {\n                    newBuckets.set(checksum.bucket, {\n                        name: checksum.bucket,\n                        priority: checksum.priority ?? FALLBACK_PRIORITY\n                    });\n                    bucketsToDelete.delete(checksum.bucket);\n                }\n                if (bucketsToDelete.size > 0) {\n                    this.logger.debug('Removing buckets', [...bucketsToDelete]);\n                }\n                bucketMap = newBuckets;\n                await this.options.adapter.removeBuckets([...bucketsToDelete]);\n                await this.options.adapter.setTargetCheckpoint(targetCheckpoint);\n                await this.updateSyncStatusForStartingCheckpoint(targetCheckpoint);\n            }\n            else if (isStreamingSyncCheckpointComplete(line)) {\n                const result = await this.applyCheckpoint(targetCheckpoint);\n                if (result.endIteration) {\n                    return;\n                }\n                else if (!result.applied) {\n                    // \"Could not apply checkpoint due to local data\". We need to retry after\n                    // finishing uploads.\n                    pendingValidatedCheckpoint = targetCheckpoint;\n                }\n                else {\n                    // Nothing to retry later. This would likely already be null from the last\n                    // checksum or checksum_diff operation, but we make sure.\n                    pendingValidatedCheckpoint = null;\n                }\n            }\n            else if (isStreamingSyncCheckpointPartiallyComplete(line)) {\n                const priority = line.partial_checkpoint_complete.priority;\n                this.logger.debug('Partial checkpoint complete', priority);\n                const result = await this.options.adapter.syncLocalDatabase(targetCheckpoint, priority);\n                if (!result.checkpointValid) {\n                    // This means checksums failed. Start again with a new checkpoint.\n                    // TODO: better back-off\n                    await new Promise((resolve) => setTimeout(resolve, 50));\n                    return;\n                }\n                else if (!result.ready) {\n                    // If we have pending uploads, we can't complete new checkpoints outside of priority 0.\n                    // We'll resolve this for a complete checkpoint.\n                }\n                else {\n                    // We'll keep on downloading, but can report that this priority is synced now.\n                    this.logger.debug('partial checkpoint validation succeeded');\n                    // All states with a higher priority can be deleted since this partial sync includes them.\n                    const priorityStates = this.syncStatus.priorityStatusEntries.filter((s) => s.priority <= priority);\n                    priorityStates.push({\n                        priority,\n                        lastSyncedAt: new Date(),\n                        hasSynced: true\n                    });\n                    this.updateSyncStatus({\n                        connected: true,\n                        priorityStatusEntries: priorityStates\n                    });\n                }\n            }\n            else if (isStreamingSyncCheckpointDiff(line)) {\n                // TODO: It may be faster to just keep track of the diff, instead of the entire checkpoint\n                if (targetCheckpoint == null) {\n                    throw new Error('Checkpoint diff without previous checkpoint');\n                }\n                // New checkpoint - existing validated checkpoint is no longer valid\n                pendingValidatedCheckpoint = null;\n                const diff = line.checkpoint_diff;\n                const newBuckets = new Map();\n                for (const checksum of targetCheckpoint.buckets) {\n                    newBuckets.set(checksum.bucket, checksum);\n                }\n                for (const checksum of diff.updated_buckets) {\n                    newBuckets.set(checksum.bucket, checksum);\n                }\n                for (const bucket of diff.removed_buckets) {\n                    newBuckets.delete(bucket);\n                }\n                const newCheckpoint = {\n                    last_op_id: diff.last_op_id,\n                    buckets: [...newBuckets.values()],\n                    write_checkpoint: diff.write_checkpoint\n                };\n                targetCheckpoint = newCheckpoint;\n                await this.updateSyncStatusForStartingCheckpoint(targetCheckpoint);\n                bucketMap = new Map();\n                newBuckets.forEach((checksum, name) => bucketMap.set(name, {\n                    name: checksum.bucket,\n                    priority: checksum.priority ?? FALLBACK_PRIORITY\n                }));\n                const bucketsToDelete = diff.removed_buckets;\n                if (bucketsToDelete.length > 0) {\n                    this.logger.debug('Remove buckets', bucketsToDelete);\n                }\n                await this.options.adapter.removeBuckets(bucketsToDelete);\n                await this.options.adapter.setTargetCheckpoint(targetCheckpoint);\n            }\n            else if (isStreamingSyncData(line)) {\n                const { data } = line;\n                const previousProgress = this.syncStatus.dataFlowStatus.downloadProgress;\n                let updatedProgress = null;\n                if (previousProgress) {\n                    updatedProgress = { ...previousProgress };\n                    const progressForBucket = updatedProgress[data.bucket];\n                    if (progressForBucket) {\n                        updatedProgress[data.bucket] = {\n                            ...progressForBucket,\n                            since_last: progressForBucket.since_last + data.data.length\n                        };\n                    }\n                }\n                this.updateSyncStatus({\n                    dataFlow: {\n                        downloading: true,\n                        downloadProgress: updatedProgress\n                    }\n                });\n                await this.options.adapter.saveSyncData({ buckets: [SyncDataBucket.fromRow(data)] }, usingFixedKeyFormat);\n            }\n            else if (isStreamingKeepalive(line)) {\n                const remaining_seconds = line.token_expires_in;\n                if (remaining_seconds == 0) {\n                    // Connection would be closed automatically right after this\n                    this.logger.debug('Token expiring; reconnect');\n                    /**\n                     * For a rare case where the backend connector does not update the token\n                     * (uses the same one), this should have some delay.\n                     */\n                    await this.delayRetry();\n                    return;\n                }\n                else if (remaining_seconds < 30) {\n                    this.logger.debug('Token will expire soon; reconnect');\n                    // Pre-emptively refresh the token\n                    this.options.remote.invalidateCredentials();\n                    return;\n                }\n                this.triggerCrudUpload();\n            }\n            else {\n                this.logger.debug('Received unknown sync line', line);\n            }\n        }\n        this.logger.debug('Stream input empty');\n        // Connection closed. Likely due to auth issue.\n        return;\n    }\n    async rustSyncIteration(signal, resolvedOptions) {\n        const syncImplementation = this;\n        const adapter = this.options.adapter;\n        const remote = this.options.remote;\n        const controller = new AbortController();\n        const abort = () => {\n            return controller.abort(signal.reason);\n        };\n        signal.addEventListener('abort', abort);\n        let receivingLines = null;\n        let hadSyncLine = false;\n        let hideDisconnectOnRestart = false;\n        if (signal.aborted) {\n            throw new AbortOperation('Connection request has been aborted');\n        }\n        // Pending sync lines received from the service, as well as local events that trigger a powersync_control\n        // invocation (local events include refreshed tokens and completed uploads).\n        // This is a single data stream so that we can handle all control calls from a single place.\n        let controlInvocations = null;\n        async function connect(instr) {\n            const syncOptions = {\n                path: '/sync/stream',\n                abortSignal: controller.signal,\n                data: instr.request\n            };\n            controlInvocations = injectable(map(await syncImplementation.receiveSyncLines({\n                options: syncOptions,\n                connection: resolvedOptions\n            }), (line) => {\n                if (typeof line == 'string') {\n                    return {\n                        command: PowerSyncControlCommand.PROCESS_TEXT_LINE,\n                        payload: line\n                    };\n                }\n                else {\n                    return {\n                        command: PowerSyncControlCommand.PROCESS_BSON_LINE,\n                        payload: line\n                    };\n                }\n            }));\n            // The rust client will set connected: true after the first sync line because that's when it gets invoked, but\n            // we're already connected here and can report that.\n            syncImplementation.updateSyncStatus({ connected: true });\n            try {\n                while (true) {\n                    let event = await controlInvocations.next();\n                    if (event.done) {\n                        break;\n                    }\n                    const line = event.value;\n                    await control(line.command, line.payload);\n                    if (!hadSyncLine) {\n                        syncImplementation.triggerCrudUpload();\n                        hadSyncLine = true;\n                    }\n                }\n            }\n            finally {\n                abort();\n                signal.removeEventListener('abort', abort);\n            }\n        }\n        async function stop() {\n            await control(PowerSyncControlCommand.STOP);\n        }\n        async function control(op, payload) {\n            const rawResponse = await adapter.control(op, payload ?? null);\n            const logger = syncImplementation.logger;\n            logger.trace('powersync_control', op, payload == null || typeof payload == 'string' ? payload : '<bytes>', rawResponse);\n            await handleInstructions(JSON.parse(rawResponse));\n        }\n        async function handleInstruction(instruction) {\n            if ('LogLine' in instruction) {\n                switch (instruction.LogLine.severity) {\n                    case 'DEBUG':\n                        syncImplementation.logger.debug(instruction.LogLine.line);\n                        break;\n                    case 'INFO':\n                        syncImplementation.logger.info(instruction.LogLine.line);\n                        break;\n                    case 'WARNING':\n                        syncImplementation.logger.warn(instruction.LogLine.line);\n                        break;\n                }\n            }\n            else if ('UpdateSyncStatus' in instruction) {\n                syncImplementation.updateSyncStatus(coreStatusToJs(instruction.UpdateSyncStatus.status));\n            }\n            else if ('EstablishSyncStream' in instruction) {\n                if (receivingLines != null) {\n                    // Already connected, this shouldn't happen during a single iteration.\n                    throw 'Unexpected request to establish sync stream, already connected';\n                }\n                receivingLines = connect(instruction.EstablishSyncStream);\n            }\n            else if ('FetchCredentials' in instruction) {\n                if (instruction.FetchCredentials.did_expire) {\n                    remote.invalidateCredentials();\n                }\n                else {\n                    remote.invalidateCredentials();\n                    // Restart iteration after the credentials have been refreshed.\n                    remote.fetchCredentials().then((_) => {\n                        controlInvocations?.inject({ command: PowerSyncControlCommand.NOTIFY_TOKEN_REFRESHED });\n                    }, (err) => {\n                        syncImplementation.logger.warn('Could not prefetch credentials', err);\n                    });\n                }\n            }\n            else if ('CloseSyncStream' in instruction) {\n                controller.abort();\n                hideDisconnectOnRestart = instruction.CloseSyncStream.hide_disconnect;\n            }\n            else if ('FlushFileSystem' in instruction) {\n                // Not necessary on JS platforms.\n            }\n            else if ('DidCompleteSync' in instruction) {\n                syncImplementation.updateSyncStatus({\n                    dataFlow: {\n                        downloadError: undefined\n                    }\n                });\n            }\n        }\n        async function handleInstructions(instructions) {\n            for (const instr of instructions) {\n                await handleInstruction(instr);\n            }\n        }\n        try {\n            const options = {\n                parameters: resolvedOptions.params,\n                app_metadata: resolvedOptions.appMetadata,\n                active_streams: this.activeStreams,\n                include_defaults: resolvedOptions.includeDefaultStreams\n            };\n            if (resolvedOptions.serializedSchema) {\n                options.schema = resolvedOptions.serializedSchema;\n            }\n            await control(PowerSyncControlCommand.START, JSON.stringify(options));\n            this.notifyCompletedUploads = () => {\n                controlInvocations?.inject({ command: PowerSyncControlCommand.NOTIFY_CRUD_UPLOAD_COMPLETED });\n            };\n            this.handleActiveStreamsChange = () => {\n                controlInvocations?.inject({\n                    command: PowerSyncControlCommand.UPDATE_SUBSCRIPTIONS,\n                    payload: JSON.stringify(this.activeStreams)\n                });\n            };\n            await receivingLines;\n        }\n        finally {\n            this.notifyCompletedUploads = this.handleActiveStreamsChange = undefined;\n            await stop();\n        }\n        return { immediateRestart: hideDisconnectOnRestart };\n    }\n    async updateSyncStatusForStartingCheckpoint(checkpoint) {\n        const localProgress = await this.options.adapter.getBucketOperationProgress();\n        const progress = {};\n        let invalidated = false;\n        for (const bucket of checkpoint.buckets) {\n            const savedProgress = localProgress[bucket.bucket];\n            const atLast = savedProgress?.atLast ?? 0;\n            const sinceLast = savedProgress?.sinceLast ?? 0;\n            progress[bucket.bucket] = {\n                // The fallback priority doesn't matter here, but 3 is the one newer versions of the sync service\n                // will use by default.\n                priority: bucket.priority ?? 3,\n                at_last: atLast,\n                since_last: sinceLast,\n                target_count: bucket.count ?? 0\n            };\n            if (bucket.count != null && bucket.count < atLast + sinceLast) {\n                // Either due to a defrag / sync rule deploy or a compaction operation, the size\n                // of the bucket shrank so much that the local ops exceed the ops in the updated\n                // bucket. We can't prossibly report progress in this case (it would overshoot 100%).\n                invalidated = true;\n            }\n        }\n        if (invalidated) {\n            for (const bucket in progress) {\n                const bucketProgress = progress[bucket];\n                bucketProgress.at_last = 0;\n                bucketProgress.since_last = 0;\n            }\n        }\n        this.updateSyncStatus({\n            dataFlow: {\n                downloading: true,\n                downloadProgress: progress\n            }\n        });\n    }\n    async applyCheckpoint(checkpoint) {\n        let result = await this.options.adapter.syncLocalDatabase(checkpoint);\n        if (!result.checkpointValid) {\n            this.logger.debug(`Checksum mismatch in checkpoint ${checkpoint.last_op_id}, will reconnect`);\n            // This means checksums failed. Start again with a new checkpoint.\n            // TODO: better back-off\n            await new Promise((resolve) => setTimeout(resolve, 50));\n            return { applied: false, endIteration: true };\n        }\n        else if (!result.ready) {\n            this.logger.debug(`Could not apply checkpoint ${checkpoint.last_op_id} due to local data. We will retry applying the checkpoint after that upload is completed.`);\n            return { applied: false, endIteration: false };\n        }\n        this.logger.debug(`Applied checkpoint ${checkpoint.last_op_id}`, checkpoint);\n        this.updateSyncStatus({\n            connected: true,\n            lastSyncedAt: new Date(),\n            dataFlow: {\n                downloading: false,\n                downloadProgress: null,\n                downloadError: undefined\n            }\n        });\n        return { applied: true, endIteration: false };\n    }\n    updateSyncStatus(options) {\n        const updatedStatus = new SyncStatus({\n            connected: options.connected ?? this.syncStatus.connected,\n            connecting: !options.connected && (options.connecting ?? this.syncStatus.connecting),\n            lastSyncedAt: options.lastSyncedAt ?? this.syncStatus.lastSyncedAt,\n            dataFlow: {\n                ...this.syncStatus.dataFlowStatus,\n                ...options.dataFlow\n            },\n            priorityStatusEntries: options.priorityStatusEntries ?? this.syncStatus.priorityStatusEntries,\n            clientImplementation: options.clientImplementation ?? this.syncStatus.clientImplementation\n        });\n        if (!this.syncStatus.isEqual(updatedStatus)) {\n            this.syncStatus = updatedStatus;\n            // Only trigger this is there was a change\n            this.iterateListeners((cb) => cb.statusChanged?.(updatedStatus));\n        }\n        // trigger this for all updates\n        this.iterateListeners((cb) => cb.statusUpdated?.(options));\n    }\n    async delayRetry(signal) {\n        return new Promise((resolve) => {\n            if (signal?.aborted) {\n                // If the signal is already aborted, resolve immediately\n                resolve();\n                return;\n            }\n            const { retryDelayMs } = this.options;\n            let timeoutId;\n            const endDelay = () => {\n                resolve();\n                if (timeoutId) {\n                    clearTimeout(timeoutId);\n                    timeoutId = undefined;\n                }\n                signal?.removeEventListener('abort', endDelay);\n            };\n            signal?.addEventListener('abort', endDelay, { once: true });\n            timeoutId = setTimeout(endDelay, retryDelayMs);\n        });\n    }\n    updateSubscriptions(subscriptions) {\n        this.activeStreams = subscriptions;\n        this.handleActiveStreamsChange?.();\n    }\n}\n//# sourceMappingURL=AbstractStreamingSyncImplementation.js.map","const CLAIM_STORE = new Map();\n/**\n * @internal\n * @experimental\n */\nexport const MEMORY_TRIGGER_CLAIM_MANAGER = {\n    async obtainClaim(identifier) {\n        if (CLAIM_STORE.has(identifier)) {\n            throw new Error(`A claim is already present for ${identifier}`);\n        }\n        const release = async () => {\n            CLAIM_STORE.delete(identifier);\n        };\n        CLAIM_STORE.set(identifier, release);\n        return release;\n    },\n    async checkClaim(identifier) {\n        return CLAIM_STORE.has(identifier);\n    }\n};\n//# sourceMappingURL=MemoryTriggerClaimManager.js.map","/**\n * SQLite operations to track changes for with {@link TriggerManager}\n * @experimental\n */\nexport var DiffTriggerOperation;\n(function (DiffTriggerOperation) {\n    DiffTriggerOperation[\"INSERT\"] = \"INSERT\";\n    DiffTriggerOperation[\"UPDATE\"] = \"UPDATE\";\n    DiffTriggerOperation[\"DELETE\"] = \"DELETE\";\n})(DiffTriggerOperation || (DiffTriggerOperation = {}));\n//# sourceMappingURL=TriggerManager.js.map","import { DEFAULT_WATCH_THROTTLE_MS } from '../watched/WatchedQuery.js';\nimport { DiffTriggerOperation } from './TriggerManager.js';\nexport const DEFAULT_TRIGGER_MANAGER_CONFIGURATION = {\n    useStorageByDefault: false\n};\nconst TRIGGER_CLEANUP_INTERVAL_MS = 120_000; // 2 minutes\n/**\n * @internal\n * @experimental\n */\nexport class TriggerManagerImpl {\n    options;\n    schema;\n    defaultConfig;\n    cleanupTimeout;\n    isDisposed;\n    constructor(options) {\n        this.options = options;\n        this.schema = options.schema;\n        options.db.registerListener({\n            schemaChanged: (schema) => {\n                this.schema = schema;\n            }\n        });\n        this.isDisposed = false;\n        /**\n         * Configure a cleanup to run on an interval.\n         * The interval is configured using setTimeout to take the async\n         * execution time of the callback into account.\n         */\n        this.defaultConfig = DEFAULT_TRIGGER_MANAGER_CONFIGURATION;\n        const cleanupCallback = async () => {\n            this.cleanupTimeout = null;\n            if (this.isDisposed) {\n                return;\n            }\n            try {\n                await this.cleanupResources();\n            }\n            catch (ex) {\n                this.db.logger.error(`Caught error while attempting to cleanup triggers`, ex);\n            }\n            finally {\n                // if not closed, set another timeout\n                if (this.isDisposed) {\n                    return;\n                }\n                this.cleanupTimeout = setTimeout(cleanupCallback, TRIGGER_CLEANUP_INTERVAL_MS);\n            }\n        };\n        this.cleanupTimeout = setTimeout(cleanupCallback, TRIGGER_CLEANUP_INTERVAL_MS);\n    }\n    get db() {\n        return this.options.db;\n    }\n    async getUUID() {\n        const { id: uuid } = await this.db.get(/* sql */ `\n      SELECT\n        uuid () as id\n    `);\n        // Replace dashes with underscores for SQLite table/trigger name compatibility\n        return uuid.replace(/-/g, '_');\n    }\n    async removeTriggers(tx, triggerIds) {\n        for (const triggerId of triggerIds) {\n            await tx.execute(/* sql */ `DROP TRIGGER IF EXISTS ${triggerId}; `);\n        }\n    }\n    dispose() {\n        this.isDisposed = true;\n        if (this.cleanupTimeout) {\n            clearTimeout(this.cleanupTimeout);\n        }\n    }\n    /**\n     * Updates default config settings for platform specific use-cases.\n     */\n    updateDefaults(config) {\n        this.defaultConfig = {\n            ...this.defaultConfig,\n            ...config\n        };\n    }\n    generateTriggerName(operation, destinationTable, triggerId) {\n        return `__ps_temp_trigger_${operation.toLowerCase()}__${destinationTable}__${triggerId}`;\n    }\n    /**\n     * Cleanup any SQLite triggers or tables that are no longer in use.\n     */\n    async cleanupResources() {\n        // we use the database here since cleanupResources is called during the PowerSyncDatabase initialization\n        await this.db.database.writeLock(async (ctx) => {\n            /**\n             * Note: We only cleanup persisted triggers. These are tracked in the sqlite_master table.\n             * temporary triggers will not be affected by this.\n             * Query all triggers that match our naming pattern\n             */\n            const triggers = await ctx.getAll(/* sql */ `\n        SELECT\n          name\n        FROM\n          sqlite_master\n        WHERE\n          type = 'trigger'\n          AND name LIKE '__ps_temp_trigger_%'\n      `);\n            /** Use regex to extract table names and IDs from trigger names\n             * Trigger naming convention: __ps_temp_trigger_<operation>__<destination_table>__<id>\n             */\n            const triggerPattern = /^__ps_temp_trigger_(?:insert|update|delete)__(.+)__([a-f0-9_]{36})$/i;\n            const trackedItems = new Map();\n            for (const trigger of triggers) {\n                const match = trigger.name.match(triggerPattern);\n                if (match) {\n                    const [, table, id] = match;\n                    // Collect all trigger names for each id combo\n                    const existing = trackedItems.get(id);\n                    if (existing) {\n                        existing.triggerNames.push(trigger.name);\n                    }\n                    else {\n                        trackedItems.set(id, { table, id, triggerNames: [trigger.name] });\n                    }\n                }\n            }\n            for (const trackedItem of trackedItems.values()) {\n                // check if there is anything holding on to this item\n                const hasClaim = await this.options.claimManager.checkClaim(trackedItem.id);\n                if (hasClaim) {\n                    // This does not require cleanup\n                    continue;\n                }\n                this.db.logger.debug(`Clearing resources for trigger ${trackedItem.id} with table ${trackedItem.table}`);\n                // We need to delete the triggers and table\n                for (const triggerName of trackedItem.triggerNames) {\n                    await ctx.execute(`DROP TRIGGER IF EXISTS ${triggerName}`);\n                }\n                await ctx.execute(`DROP TABLE IF EXISTS ${trackedItem.table}`);\n            }\n        });\n    }\n    async createDiffTrigger(options) {\n        await this.db.waitForReady();\n        const { source, destination, columns, when, hooks, setupContext, \n        // Fall back to the provided default if not given on this level\n        useStorage = this.defaultConfig.useStorageByDefault } = options;\n        const operations = Object.keys(when);\n        if (operations.length == 0) {\n            throw new Error('At least one WHEN operation must be specified for the trigger.');\n        }\n        /**\n         * The clause to use when executing\n         * CREATE ${tableTriggerTypeClause} TABLE\n         * OR\n         * CREATE ${tableTriggerTypeClause} TRIGGER\n         */\n        const tableTriggerTypeClause = !useStorage ? 'TEMP' : '';\n        const whenClauses = Object.fromEntries(Object.entries(when).map(([operation, filter]) => [operation, `WHEN ${filter}`]));\n        /**\n         * Allow specifying the View name as the source.\n         * We can lookup the internal table name from the schema.\n         */\n        const sourceDefinition = this.schema.tables.find((table) => table.viewName == source);\n        if (!sourceDefinition) {\n            throw new Error(`Source table or view \"${source}\" not found in the schema.`);\n        }\n        const replicatedColumns = columns ?? sourceDefinition.columns.map((col) => col.name);\n        const internalSource = sourceDefinition.internalName;\n        const triggerIds = [];\n        const id = await this.getUUID();\n        const releaseStorageClaim = useStorage ? await this.options.claimManager.obtainClaim(id) : null;\n        /**\n         * We default to replicating all columns if no columns array is provided.\n         */\n        const jsonFragment = (source = 'NEW') => {\n            if (columns == null) {\n                // Track all columns\n                return `${source}.data`;\n            }\n            else if (columns.length == 0) {\n                // Don't track any columns except for the id\n                return `'{}'`;\n            }\n            else {\n                // Filter the data by the replicated columns\n                return `json_object(${replicatedColumns.map((col) => `'${col}', json_extract(${source}.data, '$.${col}')`).join(', ')})`;\n            }\n        };\n        const disposeWarningListener = this.db.registerListener({\n            schemaChanged: () => {\n                this.db.logger.warn(`The PowerSync schema has changed while previously configured triggers are still operational. This might cause unexpected results.`);\n            }\n        });\n        /**\n         * Declare the cleanup function early since if any of the init steps fail,\n         * we need to ensure we can cleanup the created resources.\n         * We unfortunately cannot rely on transaction rollback.\n         */\n        const cleanup = async (options) => {\n            const { context } = options ?? {};\n            disposeWarningListener();\n            const doCleanup = async (tx) => {\n                await this.removeTriggers(tx, triggerIds);\n                await tx.execute(`DROP TABLE IF EXISTS ${destination};`);\n                await releaseStorageClaim?.();\n            };\n            if (context) {\n                await doCleanup(context);\n            }\n            else {\n                await this.db.writeLock(doCleanup);\n            }\n        };\n        const setup = async (tx) => {\n            // Allow user code to execute in this lock context before the trigger is created.\n            await hooks?.beforeCreate?.(tx);\n            await tx.execute(/* sql */ `\n        CREATE ${tableTriggerTypeClause} TABLE ${destination} (\n          operation_id INTEGER PRIMARY KEY AUTOINCREMENT,\n          id TEXT,\n          operation TEXT,\n          timestamp TEXT,\n          value TEXT,\n          previous_value TEXT\n        )\n      `);\n            if (operations.includes(DiffTriggerOperation.INSERT)) {\n                const insertTriggerId = this.generateTriggerName(DiffTriggerOperation.INSERT, destination, id);\n                triggerIds.push(insertTriggerId);\n                await tx.execute(/* sql */ `\n          CREATE ${tableTriggerTypeClause} TRIGGER ${insertTriggerId} AFTER INSERT ON ${internalSource} ${whenClauses[DiffTriggerOperation.INSERT]} BEGIN\n          INSERT INTO\n            ${destination} (id, operation, timestamp, value)\n          VALUES\n            (\n              NEW.id,\n              'INSERT',\n              strftime ('%Y-%m-%dT%H:%M:%fZ', 'now'),\n              ${jsonFragment('NEW')}\n            );\n\n          END\n        `);\n            }\n            if (operations.includes(DiffTriggerOperation.UPDATE)) {\n                const updateTriggerId = this.generateTriggerName(DiffTriggerOperation.UPDATE, destination, id);\n                triggerIds.push(updateTriggerId);\n                await tx.execute(/* sql */ `\n          CREATE ${tableTriggerTypeClause} TRIGGER ${updateTriggerId} AFTER\n          UPDATE ON ${internalSource} ${whenClauses[DiffTriggerOperation.UPDATE]} BEGIN\n          INSERT INTO\n            ${destination} (id, operation, timestamp, value, previous_value)\n          VALUES\n            (\n              NEW.id,\n              'UPDATE',\n              strftime ('%Y-%m-%dT%H:%M:%fZ', 'now'),\n              ${jsonFragment('NEW')},\n              ${jsonFragment('OLD')}\n            );\n\n          END;\n        `);\n            }\n            if (operations.includes(DiffTriggerOperation.DELETE)) {\n                const deleteTriggerId = this.generateTriggerName(DiffTriggerOperation.DELETE, destination, id);\n                triggerIds.push(deleteTriggerId);\n                // Create delete trigger for basic JSON\n                await tx.execute(/* sql */ `\n          CREATE ${tableTriggerTypeClause} TRIGGER ${deleteTriggerId} AFTER DELETE ON ${internalSource} ${whenClauses[DiffTriggerOperation.DELETE]} BEGIN\n          INSERT INTO\n            ${destination} (id, operation, timestamp, value)\n          VALUES\n            (\n              OLD.id,\n              'DELETE',\n              strftime ('%Y-%m-%dT%H:%M:%fZ', 'now'),\n              ${jsonFragment('OLD')}\n            );\n\n          END;\n        `);\n            }\n        };\n        try {\n            if (setupContext) {\n                await setup(setupContext);\n            }\n            else {\n                await this.db.writeLock(setup);\n            }\n            return cleanup;\n        }\n        catch (error) {\n            try {\n                await cleanup(setupContext ? { context: setupContext } : undefined);\n            }\n            catch (cleanupError) {\n                throw new AggregateError([error, cleanupError], 'Error during operation and cleanup');\n            }\n            throw error;\n        }\n    }\n    async trackTableDiff(options) {\n        const { source, when, columns, hooks, throttleMs = DEFAULT_WATCH_THROTTLE_MS } = options;\n        await this.db.waitForReady();\n        /**\n         * Allow specifying the View name as the source.\n         * We can lookup the internal table name from the schema.\n         */\n        const sourceDefinition = this.schema.tables.find((table) => table.viewName == source);\n        if (!sourceDefinition) {\n            throw new Error(`Source table or view \"${source}\" not found in the schema.`);\n        }\n        // The columns to present in the onChange context methods.\n        // If no array is provided, we use all columns from the source table.\n        const contextColumns = columns ?? sourceDefinition.columns.map((col) => col.name);\n        const id = await this.getUUID();\n        const destination = `__ps_temp_track_${source}_${id}`;\n        // register an onChange before the trigger is created\n        const abortController = new AbortController();\n        const abortOnChange = () => abortController.abort();\n        this.db.onChange({\n            // Note that the onChange events here have their execution scheduled.\n            // Callbacks are throttled and are sequential.\n            onChange: async () => {\n                if (abortController.signal.aborted)\n                    return;\n                // Run the handler in a write lock to keep the state of the\n                // destination table consistent.\n                await this.db.writeTransaction(async (tx) => {\n                    const callbackResult = await options.onChange({\n                        ...tx,\n                        destinationTable: destination,\n                        withDiff: async (query, params, options) => {\n                            // Wrap the query to expose the destination table\n                            const operationIdSelect = options?.castOperationIdAsText\n                                ? 'id, operation, CAST(operation_id AS TEXT) as operation_id, timestamp, value, previous_value'\n                                : '*';\n                            const wrappedQuery = /* sql */ `\n                  WITH\n                    DIFF AS (\n                      SELECT\n                        ${operationIdSelect}\n                      FROM\n                        ${destination}\n                      ORDER BY\n                        operation_id ASC\n                    ) ${query}\n                `;\n                            return tx.getAll(wrappedQuery, params);\n                        },\n                        withExtractedDiff: async (query, params) => {\n                            // Wrap the query to expose the destination table\n                            const wrappedQuery = /* sql */ `\n                  WITH\n                    DIFF AS (\n                      SELECT\n                        id,\n                        ${contextColumns.length > 0\n                                ? `${contextColumns.map((col) => `json_extract(value, '$.${col}') as ${col}`).join(', ')},`\n                                : ''} operation_id as __operation_id,\n                        operation as __operation,\n                        timestamp as __timestamp,\n                        previous_value as __previous_value\n                      FROM\n                        ${destination}\n                      ORDER BY\n                        __operation_id ASC\n                    ) ${query}\n                `;\n                            return tx.getAll(wrappedQuery, params);\n                        }\n                    });\n                    // Clear the destination table after processing\n                    await tx.execute(/* sql */ `DELETE FROM ${destination};`);\n                    return callbackResult;\n                });\n            }\n        }, { tables: [destination], signal: abortController.signal, throttleMs });\n        try {\n            const removeTrigger = await this.createDiffTrigger({\n                source,\n                destination,\n                columns: contextColumns,\n                when,\n                hooks\n            });\n            return async () => {\n                abortOnChange();\n                await removeTrigger();\n            };\n        }\n        catch (error) {\n            try {\n                abortOnChange();\n            }\n            catch (cleanupError) {\n                throw new AggregateError([error, cleanupError], 'Error during operation and cleanup');\n            }\n            throw error;\n        }\n    }\n}\n//# sourceMappingURL=TriggerManagerImpl.js.map","import { EventIterator } from 'event-iterator';\nimport Logger from 'js-logger';\nimport { isBatchedUpdateNotification } from '../db/DBAdapter.js';\nimport { SyncStatus } from '../db/crud/SyncStatus.js';\nimport { UploadQueueStats } from '../db/crud/UploadQueueStatus.js';\nimport { BaseObserver } from '../utils/BaseObserver.js';\nimport { ControlledExecutor } from '../utils/ControlledExecutor.js';\nimport { throttleTrailing } from '../utils/async.js';\nimport { ConnectionManager } from './ConnectionManager.js';\nimport { CustomQuery } from './CustomQuery.js';\nimport { isDBAdapter, isSQLOpenFactory, isSQLOpenOptions } from './SQLOpenFactory.js';\nimport { PSInternalTable } from './sync/bucket/BucketStorageAdapter.js';\nimport { CrudBatch } from './sync/bucket/CrudBatch.js';\nimport { CrudEntry } from './sync/bucket/CrudEntry.js';\nimport { CrudTransaction } from './sync/bucket/CrudTransaction.js';\nimport { DEFAULT_CRUD_UPLOAD_THROTTLE_MS, DEFAULT_RETRY_DELAY_MS } from './sync/stream/AbstractStreamingSyncImplementation.js';\nimport { coreStatusToJs } from './sync/stream/core-instruction.js';\nimport { MEMORY_TRIGGER_CLAIM_MANAGER } from './triggers/MemoryTriggerClaimManager.js';\nimport { TriggerManagerImpl } from './triggers/TriggerManagerImpl.js';\nimport { DEFAULT_WATCH_THROTTLE_MS } from './watched/WatchedQuery.js';\nimport { OnChangeQueryProcessor } from './watched/processors/OnChangeQueryProcessor.js';\nimport { Mutex } from '../utils/mutex.js';\nconst POWERSYNC_TABLE_MATCH = /(^ps_data__|^ps_data_local__)/;\nconst DEFAULT_DISCONNECT_CLEAR_OPTIONS = {\n    clearLocal: true\n};\nexport const DEFAULT_POWERSYNC_CLOSE_OPTIONS = {\n    disconnect: true\n};\nexport const DEFAULT_POWERSYNC_DB_OPTIONS = {\n    retryDelayMs: 5000,\n    crudUploadThrottleMs: DEFAULT_CRUD_UPLOAD_THROTTLE_MS\n};\nexport const DEFAULT_CRUD_BATCH_LIMIT = 100;\n/**\n * Requesting nested or recursive locks can block the application in some circumstances.\n * This default lock timeout will act as a failsafe to throw an error if a lock cannot\n * be obtained.\n */\nexport const DEFAULT_LOCK_TIMEOUT_MS = 120_000; // 2 mins\n/**\n * Tests if the input is a {@link PowerSyncDatabaseOptionsWithSettings}\n * @internal\n */\nexport const isPowerSyncDatabaseOptionsWithSettings = (test) => {\n    return typeof test == 'object' && isSQLOpenOptions(test.database);\n};\nexport class AbstractPowerSyncDatabase extends BaseObserver {\n    options;\n    /**\n     * Returns true if the connection is closed.\n     */\n    closed;\n    ready;\n    /**\n     * Current connection status.\n     */\n    currentStatus;\n    sdkVersion;\n    bucketStorageAdapter;\n    _isReadyPromise;\n    connectionManager;\n    subscriptions;\n    get syncStreamImplementation() {\n        return this.connectionManager.syncStreamImplementation;\n    }\n    /**\n     * The connector used to connect to the PowerSync service.\n     *\n     * @returns The connector used to connect to the PowerSync service or null if `connect()` has not been called.\n     */\n    get connector() {\n        return this.connectionManager.connector;\n    }\n    /**\n     * The resolved connection options used to connect to the PowerSync service.\n     *\n     * @returns The resolved connection options used to connect to the PowerSync service or null if `connect()` has not been called.\n     */\n    get connectionOptions() {\n        return this.connectionManager.connectionOptions;\n    }\n    _schema;\n    _database;\n    runExclusiveMutex;\n    /**\n     * @experimental\n     * Allows creating SQLite triggers which can be used to track various operations on SQLite tables.\n     */\n    triggers;\n    triggersImpl;\n    logger;\n    constructor(options) {\n        super();\n        this.options = options;\n        const { database, schema } = options;\n        if (typeof schema?.toJSON != 'function') {\n            throw new Error('The `schema` option should be provided and should be an instance of `Schema`.');\n        }\n        if (isDBAdapter(database)) {\n            this._database = database;\n        }\n        else if (isSQLOpenFactory(database)) {\n            this._database = database.openDB();\n        }\n        else if (isPowerSyncDatabaseOptionsWithSettings(options)) {\n            this._database = this.openDBAdapter(options);\n        }\n        else {\n            throw new Error('The provided `database` option is invalid.');\n        }\n        this.logger = options.logger ?? Logger.get(`PowerSyncDatabase[${this._database.name}]`);\n        this.bucketStorageAdapter = this.generateBucketStorageAdapter();\n        this.closed = false;\n        this.currentStatus = new SyncStatus({});\n        this.options = { ...DEFAULT_POWERSYNC_DB_OPTIONS, ...options };\n        this._schema = schema;\n        this.ready = false;\n        this.sdkVersion = '';\n        this.runExclusiveMutex = new Mutex();\n        // Start async init\n        this.subscriptions = {\n            firstStatusMatching: (predicate, abort) => this.waitForStatus(predicate, abort),\n            resolveOfflineSyncStatus: () => this.resolveOfflineSyncStatus(),\n            rustSubscriptionsCommand: async (payload) => {\n                await this.writeTransaction((tx) => {\n                    return tx.execute('select powersync_control(?,?)', ['subscriptions', JSON.stringify(payload)]);\n                });\n            }\n        };\n        this.connectionManager = new ConnectionManager({\n            createSyncImplementation: async (connector, options) => {\n                await this.waitForReady();\n                return this.runExclusive(async () => {\n                    const sync = this.generateSyncStreamImplementation(connector, this.resolvedConnectionOptions(options));\n                    const onDispose = sync.registerListener({\n                        statusChanged: (status) => {\n                            this.currentStatus = new SyncStatus({\n                                ...status.toJSON(),\n                                hasSynced: this.currentStatus?.hasSynced || !!status.lastSyncedAt\n                            });\n                            this.iterateListeners((cb) => cb.statusChanged?.(this.currentStatus));\n                        }\n                    });\n                    await sync.waitForReady();\n                    return {\n                        sync,\n                        onDispose\n                    };\n                });\n            },\n            logger: this.logger\n        });\n        this._isReadyPromise = this.initialize();\n        this.triggers = this.triggersImpl = new TriggerManagerImpl({\n            db: this,\n            schema: this.schema,\n            ...this.generateTriggerManagerConfig()\n        });\n    }\n    /**\n     * Schema used for the local database.\n     */\n    get schema() {\n        return this._schema;\n    }\n    /**\n     * The underlying database.\n     *\n     * For the most part, behavior is the same whether querying on the underlying database, or on {@link AbstractPowerSyncDatabase}.\n     */\n    get database() {\n        return this._database;\n    }\n    /**\n     * Whether a connection to the PowerSync service is currently open.\n     */\n    get connected() {\n        return this.currentStatus?.connected || false;\n    }\n    get connecting() {\n        return this.currentStatus?.connecting || false;\n    }\n    /**\n     * Generates a base configuration for {@link TriggerManagerImpl}.\n     * Implementations should override this if necessary.\n     */\n    generateTriggerManagerConfig() {\n        return {\n            claimManager: MEMORY_TRIGGER_CLAIM_MANAGER\n        };\n    }\n    /**\n     * @returns A promise which will resolve once initialization is completed.\n     */\n    async waitForReady() {\n        if (this.ready) {\n            return;\n        }\n        await this._isReadyPromise;\n    }\n    /**\n     * Wait for the first sync operation to complete.\n     *\n     * @param request Either an abort signal (after which the promise will complete regardless of\n     * whether a full sync was completed) or an object providing an abort signal and a priority target.\n     * When a priority target is set, the promise may complete when all buckets with the given (or higher)\n     * priorities have been synchronized. This can be earlier than a complete sync.\n     * @returns A promise which will resolve once the first full sync has completed.\n     */\n    async waitForFirstSync(request) {\n        const signal = request instanceof AbortSignal ? request : request?.signal;\n        const priority = request && 'priority' in request ? request.priority : undefined;\n        const statusMatches = priority === undefined\n            ? (status) => status.hasSynced\n            : (status) => status.statusForPriority(priority).hasSynced;\n        return this.waitForStatus(statusMatches, signal);\n    }\n    /**\n     * Waits for the first sync status for which the `status` callback returns a truthy value.\n     */\n    async waitForStatus(predicate, signal) {\n        if (predicate(this.currentStatus)) {\n            return;\n        }\n        return new Promise((resolve) => {\n            const dispose = this.registerListener({\n                statusChanged: (status) => {\n                    if (predicate(status)) {\n                        abort();\n                    }\n                }\n            });\n            function abort() {\n                dispose();\n                resolve();\n            }\n            if (signal?.aborted) {\n                abort();\n            }\n            else {\n                signal?.addEventListener('abort', abort);\n            }\n        });\n    }\n    /**\n     * Entry point for executing initialization logic.\n     * This is to be automatically executed in the constructor.\n     */\n    async initialize() {\n        await this._initialize();\n        await this.bucketStorageAdapter.init();\n        await this.loadVersion();\n        await this.updateSchema(this.options.schema);\n        await this.resolveOfflineSyncStatus();\n        await this.database.execute('PRAGMA RECURSIVE_TRIGGERS=TRUE');\n        await this.triggersImpl.cleanupResources();\n        this.ready = true;\n        this.iterateListeners((cb) => cb.initialized?.());\n    }\n    async loadVersion() {\n        try {\n            const { version } = await this.database.get('SELECT powersync_rs_version() as version');\n            this.sdkVersion = version;\n        }\n        catch (e) {\n            throw new Error(`The powersync extension is not loaded correctly. Details: ${e.message}`);\n        }\n        let versionInts;\n        try {\n            versionInts = this.sdkVersion.split(/[.\\/]/)\n                .slice(0, 3)\n                .map((n) => parseInt(n));\n        }\n        catch (e) {\n            throw new Error(`Unsupported powersync extension version. Need >=0.4.10 <1.0.0, got: ${this.sdkVersion}. Details: ${e.message}`);\n        }\n        // Validate >=0.4.10 <1.0.0\n        if (versionInts[0] != 0 || versionInts[1] < 4 || (versionInts[1] == 4 && versionInts[2] < 10)) {\n            throw new Error(`Unsupported powersync extension version. Need >=0.4.10 <1.0.0, got: ${this.sdkVersion}`);\n        }\n    }\n    async resolveOfflineSyncStatus() {\n        const result = await this.database.get('SELECT powersync_offline_sync_status() as r');\n        const parsed = JSON.parse(result.r);\n        const updatedStatus = new SyncStatus({\n            ...this.currentStatus.toJSON(),\n            ...coreStatusToJs(parsed)\n        });\n        if (!updatedStatus.isEqual(this.currentStatus)) {\n            this.currentStatus = updatedStatus;\n            this.iterateListeners((l) => l.statusChanged?.(this.currentStatus));\n        }\n    }\n    /**\n     * Replace the schema with a new version. This is for advanced use cases - typically the schema should just be specified once in the constructor.\n     *\n     * Cannot be used while connected - this should only be called before {@link AbstractPowerSyncDatabase.connect}.\n     */\n    async updateSchema(schema) {\n        if (this.syncStreamImplementation) {\n            throw new Error('Cannot update schema while connected');\n        }\n        /**\n         * TODO\n         * Validations only show a warning for now.\n         * The next major release should throw an exception.\n         */\n        try {\n            schema.validate();\n        }\n        catch (ex) {\n            this.logger.warn('Schema validation failed. Unexpected behaviour could occur', ex);\n        }\n        this._schema = schema;\n        await this.database.execute('SELECT powersync_replace_schema(?)', [JSON.stringify(this.schema.toJSON())]);\n        await this.database.refreshSchema();\n        this.iterateListeners(async (cb) => cb.schemaChanged?.(schema));\n    }\n    /**\n     * Wait for initialization to complete.\n     * While initializing is automatic, this helps to catch and report initialization errors.\n     */\n    async init() {\n        return this.waitForReady();\n    }\n    // Use the options passed in during connect, or fallback to the options set during database creation or fallback to the default options\n    resolvedConnectionOptions(options) {\n        return {\n            ...options,\n            retryDelayMs: options?.retryDelayMs ?? this.options.retryDelayMs ?? this.options.retryDelay ?? DEFAULT_RETRY_DELAY_MS,\n            crudUploadThrottleMs: options?.crudUploadThrottleMs ?? this.options.crudUploadThrottleMs ?? DEFAULT_CRUD_UPLOAD_THROTTLE_MS\n        };\n    }\n    /**\n     * @deprecated Use {@link AbstractPowerSyncDatabase#close} instead.\n     * Clears all listeners registered by {@link AbstractPowerSyncDatabase#registerListener}.\n     */\n    dispose() {\n        return super.dispose();\n    }\n    /**\n     * Locking mechanism for exclusively running critical portions of connect/disconnect operations.\n     * Locking here is mostly only important on web for multiple tab scenarios.\n     */\n    runExclusive(callback) {\n        return this.runExclusiveMutex.runExclusive(callback);\n    }\n    /**\n     * Connects to stream of events from the PowerSync instance.\n     */\n    async connect(connector, options) {\n        const resolvedOptions = options ?? {};\n        resolvedOptions.serializedSchema = this.schema.toJSON();\n        return this.connectionManager.connect(connector, resolvedOptions);\n    }\n    /**\n     * Close the sync connection.\n     *\n     * Use {@link connect} to connect again.\n     */\n    async disconnect() {\n        return this.connectionManager.disconnect();\n    }\n    /**\n     *  Disconnect and clear the database.\n     *  Use this when logging out.\n     *  The database can still be queried after this is called, but the tables\n     *  would be empty.\n     *\n     * To preserve data in local-only tables, set clearLocal to false.\n     */\n    async disconnectAndClear(options = DEFAULT_DISCONNECT_CLEAR_OPTIONS) {\n        await this.disconnect();\n        await this.waitForReady();\n        const { clearLocal } = options;\n        await this.database.writeTransaction(async (tx) => {\n            await tx.execute('SELECT powersync_clear(?)', [clearLocal ? 1 : 0]);\n        });\n        // The data has been deleted - reset the sync status\n        this.currentStatus = new SyncStatus({});\n        this.iterateListeners((l) => l.statusChanged?.(this.currentStatus));\n    }\n    /**\n     * Create a sync stream to query its status or to subscribe to it.\n     *\n     * @param name The name of the stream to subscribe to.\n     * @param params Optional parameters for the stream subscription.\n     * @returns A {@link SyncStream} instance that can be subscribed to.\n     * @experimental Sync streams are currently in alpha.\n     */\n    syncStream(name, params) {\n        return this.connectionManager.stream(this.subscriptions, name, params ?? null);\n    }\n    /**\n     * Close the database, releasing resources.\n     *\n     * Also disconnects any active connection.\n     *\n     * Once close is called, this connection cannot be used again - a new one\n     * must be constructed.\n     */\n    async close(options = DEFAULT_POWERSYNC_CLOSE_OPTIONS) {\n        await this.waitForReady();\n        if (this.closed) {\n            return;\n        }\n        this.triggersImpl.dispose();\n        await this.iterateAsyncListeners(async (cb) => cb.closing?.());\n        const { disconnect } = options;\n        if (disconnect) {\n            await this.disconnect();\n        }\n        await this.connectionManager.close();\n        await this.database.close();\n        this.closed = true;\n        await this.iterateAsyncListeners(async (cb) => cb.closed?.());\n    }\n    /**\n     * Get upload queue size estimate and count.\n     */\n    async getUploadQueueStats(includeSize) {\n        return this.readTransaction(async (tx) => {\n            if (includeSize) {\n                const result = await tx.execute(`SELECT SUM(cast(data as blob) + 20) as size, count(*) as count FROM ${PSInternalTable.CRUD}`);\n                const row = result.rows.item(0);\n                return new UploadQueueStats(row?.count ?? 0, row?.size ?? 0);\n            }\n            else {\n                const result = await tx.execute(`SELECT count(*) as count FROM ${PSInternalTable.CRUD}`);\n                const row = result.rows.item(0);\n                return new UploadQueueStats(row?.count ?? 0);\n            }\n        });\n    }\n    /**\n     * Get a batch of CRUD data to upload.\n     *\n     * Returns null if there is no data to upload.\n     *\n     * Use this from the {@link PowerSyncBackendConnector.uploadData} callback.\n     *\n     * Once the data have been successfully uploaded, call {@link CrudBatch.complete} before\n     * requesting the next batch.\n     *\n     * Use {@link limit} to specify the maximum number of updates to return in a single\n     * batch.\n     *\n     * This method does include transaction ids in the result, but does not group\n     * data by transaction. One batch may contain data from multiple transactions,\n     * and a single transaction may be split over multiple batches.\n     *\n     * @param limit Maximum number of CRUD entries to include in the batch\n     * @returns A batch of CRUD operations to upload, or null if there are none\n     */\n    async getCrudBatch(limit = DEFAULT_CRUD_BATCH_LIMIT) {\n        const result = await this.getAll(`SELECT id, tx_id, data FROM ${PSInternalTable.CRUD} ORDER BY id ASC LIMIT ?`, [limit + 1]);\n        const all = result.map((row) => CrudEntry.fromRow(row)) ?? [];\n        let haveMore = false;\n        if (all.length > limit) {\n            all.pop();\n            haveMore = true;\n        }\n        if (all.length == 0) {\n            return null;\n        }\n        const last = all[all.length - 1];\n        return new CrudBatch(all, haveMore, async (writeCheckpoint) => this.handleCrudCheckpoint(last.clientId, writeCheckpoint));\n    }\n    /**\n     * Get the next recorded transaction to upload.\n     *\n     * Returns null if there is no data to upload.\n     *\n     * Use this from the {@link PowerSyncBackendConnector.uploadData} callback.\n     *\n     * Once the data have been successfully uploaded, call {@link CrudTransaction.complete} before\n     * requesting the next transaction.\n     *\n     * Unlike {@link getCrudBatch}, this only returns data from a single transaction at a time.\n     * All data for the transaction is loaded into memory.\n     *\n     * @returns A transaction of CRUD operations to upload, or null if there are none\n     */\n    async getNextCrudTransaction() {\n        const iterator = this.getCrudTransactions()[Symbol.asyncIterator]();\n        return (await iterator.next()).value;\n    }\n    /**\n     * Returns an async iterator of completed transactions with local writes against the database.\n     *\n     * This is typically used from the {@link PowerSyncBackendConnector.uploadData} callback. Each entry emitted by the\n     * returned iterator is a full transaction containing all local writes made while that transaction was active.\n     *\n     * Unlike {@link getNextCrudTransaction}, which always returns the oldest transaction that hasn't been\n     * {@link CrudTransaction.complete}d yet, this iterator can be used to receive multiple transactions. Calling\n     * {@link CrudTransaction.complete} will mark that and all prior transactions emitted by the iterator as completed.\n     *\n     * This can be used to upload multiple transactions in a single batch, e.g with:\n     *\n     * ```JavaScript\n     * let lastTransaction = null;\n     * let batch = [];\n     *\n     * for await (const transaction of database.getCrudTransactions()) {\n     *   batch.push(...transaction.crud);\n     *   lastTransaction = transaction;\n     *\n     *   if (batch.length > 10) {\n     *     break;\n     *    }\n     * }\n     * ```\n     *\n     * If there is no local data to upload, the async iterator complete without emitting any items.\n     *\n     * Note that iterating over async iterables requires a [polyfill](https://github.com/powersync-ja/powersync-js/tree/main/packages/react-native#babel-plugins-watched-queries)\n     * for React Native.\n     */\n    getCrudTransactions() {\n        return {\n            [Symbol.asyncIterator]: () => {\n                let lastCrudItemId = -1;\n                const sql = `\nWITH RECURSIVE crud_entries AS (\n  SELECT id, tx_id, data FROM ps_crud WHERE id = (SELECT min(id) FROM ps_crud WHERE id > ?)\n  UNION ALL\n  SELECT ps_crud.id, ps_crud.tx_id, ps_crud.data FROM ps_crud\n    INNER JOIN crud_entries ON crud_entries.id + 1 = rowid\n  WHERE crud_entries.tx_id = ps_crud.tx_id\n)\nSELECT * FROM crud_entries;\n    `;\n                return {\n                    next: async () => {\n                        const nextTransaction = await this.database.getAll(sql, [lastCrudItemId]);\n                        if (nextTransaction.length == 0) {\n                            return { done: true, value: null };\n                        }\n                        const items = nextTransaction.map((row) => CrudEntry.fromRow(row));\n                        const last = items[items.length - 1];\n                        const txId = last.transactionId;\n                        lastCrudItemId = last.clientId;\n                        return {\n                            done: false,\n                            value: new CrudTransaction(items, async (writeCheckpoint) => this.handleCrudCheckpoint(last.clientId, writeCheckpoint), txId)\n                        };\n                    }\n                };\n            }\n        };\n    }\n    /**\n     * Get an unique client id for this database.\n     *\n     * The id is not reset when the database is cleared, only when the database is deleted.\n     *\n     * @returns A unique identifier for the database instance\n     */\n    async getClientId() {\n        return this.bucketStorageAdapter.getClientId();\n    }\n    async handleCrudCheckpoint(lastClientId, writeCheckpoint) {\n        return this.writeTransaction(async (tx) => {\n            await tx.execute(`DELETE FROM ${PSInternalTable.CRUD} WHERE id <= ?`, [lastClientId]);\n            if (writeCheckpoint) {\n                const check = await tx.execute(`SELECT 1 FROM ${PSInternalTable.CRUD} LIMIT 1`);\n                if (!check.rows?.length) {\n                    await tx.execute(`UPDATE ${PSInternalTable.BUCKETS} SET target_op = CAST(? as INTEGER) WHERE name='$local'`, [\n                        writeCheckpoint\n                    ]);\n                }\n            }\n            else {\n                await tx.execute(`UPDATE ${PSInternalTable.BUCKETS} SET target_op = CAST(? as INTEGER) WHERE name='$local'`, [\n                    this.bucketStorageAdapter.getMaxOpId()\n                ]);\n            }\n        });\n    }\n    /**\n     * Execute a SQL write (INSERT/UPDATE/DELETE) query\n     * and optionally return results.\n     *\n     * When using the default client-side [JSON-based view system](https://docs.powersync.com/architecture/client-architecture#client-side-schema-and-sqlite-database-structure),\n     * the returned result's `rowsAffected` may be `0` for successful `UPDATE` and `DELETE` statements.\n     * Use a `RETURNING` clause and inspect `result.rows` when you need to confirm which rows changed.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @returns The query result as an object with structured key-value pairs\n     */\n    async execute(sql, parameters) {\n        return this.writeLock((tx) => tx.execute(sql, parameters));\n    }\n    /**\n     * Execute a SQL write (INSERT/UPDATE/DELETE) query directly on the database without any PowerSync processing.\n     * This bypasses certain PowerSync abstractions and is useful for accessing the raw database results.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @returns The raw query result from the underlying database as a nested array of raw values, where each row is\n     * represented as an array of column values without field names.\n     */\n    async executeRaw(sql, parameters) {\n        await this.waitForReady();\n        return this.database.executeRaw(sql, parameters);\n    }\n    /**\n     * Execute a write query (INSERT/UPDATE/DELETE) multiple times with each parameter set\n     * and optionally return results.\n     * This is faster than executing separately with each parameter set.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional 2D array of parameter sets, where each inner array is a set of parameters for one execution\n     * @returns The query result\n     */\n    async executeBatch(sql, parameters) {\n        await this.waitForReady();\n        return this.database.executeBatch(sql, parameters);\n    }\n    /**\n     *  Execute a read-only query and return results.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @returns An array of results\n     */\n    async getAll(sql, parameters) {\n        await this.waitForReady();\n        return this.database.getAll(sql, parameters);\n    }\n    /**\n     * Execute a read-only query and return the first result, or null if the ResultSet is empty.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @returns The first result if found, or null if no results are returned\n     */\n    async getOptional(sql, parameters) {\n        await this.waitForReady();\n        return this.database.getOptional(sql, parameters);\n    }\n    /**\n     * Execute a read-only query and return the first result, error if the ResultSet is empty.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @returns The first result matching the query\n     * @throws Error if no rows are returned\n     */\n    async get(sql, parameters) {\n        await this.waitForReady();\n        return this.database.get(sql, parameters);\n    }\n    /**\n     * Takes a read lock, without starting a transaction.\n     * In most cases, {@link readTransaction} should be used instead.\n     */\n    async readLock(callback) {\n        await this.waitForReady();\n        return this.database.readLock(callback);\n    }\n    /**\n     * Takes a global lock, without starting a transaction.\n     * In most cases, {@link writeTransaction} should be used instead.\n     */\n    async writeLock(callback) {\n        await this.waitForReady();\n        return this.database.writeLock(callback);\n    }\n    /**\n     * Open a read-only transaction.\n     * Read transactions can run concurrently to a write transaction.\n     * Changes from any write transaction are not visible to read transactions started before it.\n     *\n     * @param callback Function to execute within the transaction\n     * @param lockTimeout Time in milliseconds to wait for a lock before throwing an error\n     * @returns The result of the callback\n     * @throws Error if the lock cannot be obtained within the timeout period\n     */\n    async readTransaction(callback, lockTimeout = DEFAULT_LOCK_TIMEOUT_MS) {\n        await this.waitForReady();\n        return this.database.readTransaction(async (tx) => {\n            const res = await callback(tx);\n            await tx.rollback();\n            return res;\n        }, { timeoutMs: lockTimeout });\n    }\n    /**\n     * Open a read-write transaction.\n     * This takes a global lock - only one write transaction can execute against the database at a time.\n     * Statements within the transaction must be done on the provided {@link Transaction} interface.\n     *\n     * @param callback Function to execute within the transaction\n     * @param lockTimeout Time in milliseconds to wait for a lock before throwing an error\n     * @returns The result of the callback\n     * @throws Error if the lock cannot be obtained within the timeout period\n     */\n    async writeTransaction(callback, lockTimeout = DEFAULT_LOCK_TIMEOUT_MS) {\n        await this.waitForReady();\n        return this.database.writeTransaction(async (tx) => {\n            const res = await callback(tx);\n            await tx.commit();\n            return res;\n        }, { timeoutMs: lockTimeout });\n    }\n    watch(sql, parameters, handlerOrOptions, maybeOptions) {\n        if (handlerOrOptions && typeof handlerOrOptions === 'object' && 'onResult' in handlerOrOptions) {\n            const handler = handlerOrOptions;\n            const options = maybeOptions;\n            return this.watchWithCallback(sql, parameters, handler, options);\n        }\n        const options = handlerOrOptions;\n        return this.watchWithAsyncGenerator(sql, parameters, options);\n    }\n    /**\n     * Allows defining a query which can be used to build a {@link WatchedQuery}.\n     * The defined query will be executed with {@link AbstractPowerSyncDatabase#getAll}.\n     * An optional mapper function can be provided to transform the results.\n     *\n     * @example\n     * ```javascript\n     * const watchedTodos = powersync.query({\n     *  sql: `SELECT photo_id as id FROM todos WHERE photo_id IS NOT NULL`,\n     *  parameters: [],\n     *  mapper: (row) => ({\n     *    ...row,\n     *    created_at: new Date(row.created_at as string)\n     *  })\n     * })\n     * .watch()\n     * // OR use .differentialWatch() for fine-grained watches.\n     * ```\n     */\n    query(query) {\n        const { sql, parameters = [], mapper } = query;\n        const compatibleQuery = {\n            compile: () => ({\n                sql,\n                parameters\n            }),\n            execute: async ({ sql, parameters }) => {\n                const result = await this.getAll(sql, parameters);\n                return mapper ? result.map(mapper) : result;\n            }\n        };\n        return this.customQuery(compatibleQuery);\n    }\n    /**\n     * Allows building a {@link WatchedQuery} using an existing {@link WatchCompatibleQuery}.\n     * The watched query will use the provided {@link WatchCompatibleQuery.execute} method to query results.\n     *\n     * @example\n     * ```javascript\n     *\n     * // Potentially a query from an ORM like Drizzle\n     * const query = db.select().from(lists);\n     *\n     * const watchedTodos = powersync.customQuery(query)\n     * .watch()\n     * // OR use .differentialWatch() for fine-grained watches.\n     * ```\n     */\n    customQuery(query) {\n        return new CustomQuery({\n            db: this,\n            query\n        });\n    }\n    /**\n     * Execute a read query every time the source tables are modified.\n     * Use {@link SQLWatchOptions.throttleMs} to specify the minimum interval between queries.\n     * Source tables are automatically detected using `EXPLAIN QUERY PLAN`.\n     *\n     * Note that the `onChange` callback member of the handler is required.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @param handler Callbacks for handling results and errors\n     * @param options Options for configuring watch behavior\n     */\n    watchWithCallback(sql, parameters, handler, options) {\n        const { onResult, onError = (e) => this.logger.error(e) } = handler ?? {};\n        if (!onResult) {\n            throw new Error('onResult is required');\n        }\n        const { comparator } = options ?? {};\n        // This API yields a QueryResult type.\n        // This is not a standard Array result, which makes it incompatible with the .query API.\n        const watchedQuery = new OnChangeQueryProcessor({\n            db: this,\n            comparator,\n            placeholderData: null,\n            watchOptions: {\n                query: {\n                    compile: () => ({\n                        sql: sql,\n                        parameters: parameters ?? []\n                    }),\n                    execute: () => this.executeReadOnly(sql, parameters)\n                },\n                reportFetching: false,\n                throttleMs: options?.throttleMs ?? DEFAULT_WATCH_THROTTLE_MS,\n                triggerOnTables: options?.tables\n            }\n        });\n        const dispose = watchedQuery.registerListener({\n            onData: (data) => {\n                if (!data) {\n                    // This should not happen. We only use null for the initial data.\n                    return;\n                }\n                onResult(data);\n            },\n            onError: (error) => {\n                onError(error);\n            }\n        });\n        options?.signal?.addEventListener('abort', () => {\n            dispose();\n            watchedQuery.close();\n        });\n    }\n    /**\n     * Execute a read query every time the source tables are modified.\n     * Use {@link SQLWatchOptions.throttleMs} to specify the minimum interval between queries.\n     * Source tables are automatically detected using `EXPLAIN QUERY PLAN`.\n     *\n     * @param sql The SQL query to execute\n     * @param parameters Optional array of parameters to bind to the query\n     * @param options Options for configuring watch behavior\n     * @returns An AsyncIterable that yields QueryResults whenever the data changes\n     */\n    watchWithAsyncGenerator(sql, parameters, options) {\n        return new EventIterator((eventOptions) => {\n            const handler = {\n                onResult: (result) => {\n                    eventOptions.push(result);\n                },\n                onError: (error) => {\n                    eventOptions.fail(error);\n                }\n            };\n            this.watchWithCallback(sql, parameters, handler, options);\n            options?.signal?.addEventListener('abort', () => {\n                eventOptions.stop();\n            });\n        });\n    }\n    /**\n     * Resolves the list of tables that are used in a SQL query.\n     * If tables are specified in the options, those are used directly.\n     * Otherwise, analyzes the query using EXPLAIN to determine which tables are accessed.\n     *\n     * @param sql The SQL query to analyze\n     * @param parameters Optional parameters for the SQL query\n     * @param options Optional watch options that may contain explicit table list\n     * @returns Array of table names that the query depends on\n     */\n    async resolveTables(sql, parameters, options) {\n        const resolvedTables = options?.tables ? [...options.tables] : [];\n        if (!options?.tables) {\n            const explained = await this.getAll(`EXPLAIN ${sql}`, parameters);\n            const rootPages = explained\n                .filter((row) => row.opcode == 'OpenRead' && row.p3 == 0 && typeof row.p2 == 'number')\n                .map((row) => row.p2);\n            const tables = await this.getAll(`SELECT DISTINCT tbl_name FROM sqlite_master WHERE rootpage IN (SELECT json_each.value FROM json_each(?))`, [JSON.stringify(rootPages)]);\n            for (const table of tables) {\n                resolvedTables.push(table.tbl_name.replace(POWERSYNC_TABLE_MATCH, ''));\n            }\n        }\n        return resolvedTables;\n    }\n    onChange(handlerOrOptions, maybeOptions) {\n        if (handlerOrOptions && typeof handlerOrOptions === 'object' && 'onChange' in handlerOrOptions) {\n            const handler = handlerOrOptions;\n            const options = maybeOptions;\n            return this.onChangeWithCallback(handler, options);\n        }\n        const options = handlerOrOptions;\n        return this.onChangeWithAsyncGenerator(options);\n    }\n    /**\n     * Invoke the provided callback on any changes to any of the specified tables.\n     *\n     * This is preferred over {@link watchWithCallback} when multiple queries need to be performed\n     * together when data is changed.\n     *\n     * Note that the `onChange` callback member of the handler is required.\n     *\n     * @param handler Callbacks for handling change events and errors\n     * @param options Options for configuring watch behavior\n     * @returns A dispose function to stop watching for changes\n     */\n    onChangeWithCallback(handler, options) {\n        const { onChange, onError = (e) => this.logger.error(e) } = handler ?? {};\n        if (!onChange) {\n            throw new Error('onChange is required');\n        }\n        const resolvedOptions = options ?? {};\n        const watchedTables = new Set((resolvedOptions?.tables ?? []).flatMap((table) => [table, `ps_data__${table}`, `ps_data_local__${table}`]));\n        const changedTables = new Set();\n        const throttleMs = resolvedOptions.throttleMs ?? DEFAULT_WATCH_THROTTLE_MS;\n        const executor = new ControlledExecutor(async (e) => {\n            await onChange(e);\n        });\n        const flushTableUpdates = throttleTrailing(() => this.handleTableChanges(changedTables, watchedTables, (intersection) => {\n            if (resolvedOptions?.signal?.aborted)\n                return;\n            executor.schedule({ changedTables: intersection });\n        }), throttleMs);\n        if (options?.triggerImmediate) {\n            executor.schedule({ changedTables: [] });\n        }\n        const dispose = this.database.registerListener({\n            tablesUpdated: async (update) => {\n                try {\n                    this.processTableUpdates(update, changedTables);\n                    flushTableUpdates();\n                }\n                catch (error) {\n                    onError?.(error);\n                }\n            }\n        });\n        resolvedOptions.signal?.addEventListener('abort', () => {\n            executor.dispose();\n            dispose();\n        });\n        return () => dispose();\n    }\n    /**\n     * Create a Stream of changes to any of the specified tables.\n     *\n     * This is preferred over {@link watchWithAsyncGenerator} when multiple queries need to be performed\n     * together when data is changed.\n     *\n     * Note: do not declare this as `async *onChange` as it will not work in React Native.\n     *\n     * @param options Options for configuring watch behavior\n     * @returns An AsyncIterable that yields change events whenever the specified tables change\n     */\n    onChangeWithAsyncGenerator(options) {\n        const resolvedOptions = options ?? {};\n        return new EventIterator((eventOptions) => {\n            const dispose = this.onChangeWithCallback({\n                onChange: (event) => {\n                    eventOptions.push(event);\n                },\n                onError: (error) => {\n                    eventOptions.fail(error);\n                }\n            }, options);\n            resolvedOptions.signal?.addEventListener('abort', () => {\n                eventOptions.stop();\n                // Maybe fail?\n            });\n            return () => dispose();\n        });\n    }\n    handleTableChanges(changedTables, watchedTables, onDetectedChanges) {\n        if (changedTables.size > 0) {\n            const intersection = Array.from(changedTables.values()).filter((change) => watchedTables.has(change));\n            if (intersection.length) {\n                onDetectedChanges(intersection);\n            }\n        }\n        changedTables.clear();\n    }\n    processTableUpdates(updateNotification, changedTables) {\n        const tables = isBatchedUpdateNotification(updateNotification)\n            ? updateNotification.tables\n            : [updateNotification.table];\n        for (const table of tables) {\n            changedTables.add(table);\n        }\n    }\n    /**\n     * @ignore\n     */\n    async executeReadOnly(sql, params) {\n        await this.waitForReady();\n        return this.database.readLock((tx) => tx.execute(sql, params));\n    }\n}\n//# sourceMappingURL=AbstractPowerSyncDatabase.js.map","import Logger from 'js-logger';\nexport class AbstractPowerSyncDatabaseOpenFactory {\n    options;\n    constructor(options) {\n        this.options = options;\n        options.logger = options.logger ?? Logger.get(`PowerSync ${this.options.dbFilename}`);\n    }\n    /**\n     * Schema used for the local database.\n     */\n    get schema() {\n        return this.options.schema;\n    }\n    generateOptions() {\n        return {\n            database: this.openDB(),\n            ...this.options\n        };\n    }\n    getInstance() {\n        const options = this.generateOptions();\n        return this.generateInstance(options);\n    }\n}\n//# sourceMappingURL=AbstractPowerSyncOpenFactory.js.map","export function runOnSchemaChange(callback, db, options) {\n    const triggerWatchedQuery = () => {\n        const abortController = new AbortController();\n        let disposeSchemaListener = null;\n        const stopWatching = () => {\n            abortController.abort('Abort triggered');\n            disposeSchemaListener?.();\n            disposeSchemaListener = null;\n            // Stop listening to upstream abort for this watch\n            options?.signal?.removeEventListener('abort', stopWatching);\n        };\n        options?.signal?.addEventListener('abort', stopWatching);\n        disposeSchemaListener = db.registerListener({\n            schemaChanged: async () => {\n                stopWatching();\n                // Re trigger the watched query (recursively), setTimeout ensures that we don't modify the list of listeners while iterating through them\n                setTimeout(() => triggerWatchedQuery(), 0);\n            }\n        });\n        callback(abortController.signal);\n    };\n    triggerWatchedQuery();\n}\n//# sourceMappingURL=runOnSchemaChange.js.map","import { runOnSchemaChange } from './runOnSchemaChange.js';\nexport function compilableQueryWatch(db, query, handler, options) {\n    const { onResult, onError = (e) => { } } = handler ?? {};\n    if (!onResult) {\n        throw new Error('onResult is required');\n    }\n    const watchQuery = async (abortSignal) => {\n        try {\n            const toSql = query.compile();\n            const resolvedTables = await db.resolveTables(toSql.sql, toSql.parameters, options);\n            // Fetch initial data\n            const result = await query.execute();\n            onResult(result);\n            db.onChangeWithCallback({\n                onChange: async () => {\n                    try {\n                        const result = await query.execute();\n                        onResult(result);\n                    }\n                    catch (error) {\n                        onError(error);\n                    }\n                },\n                onError\n            }, {\n                ...(options ?? {}),\n                tables: resolvedTables,\n                // Override the abort signal since we intercept it\n                signal: abortSignal\n            });\n        }\n        catch (error) {\n            onError(error);\n        }\n    };\n    runOnSchemaChange(watchQuery, db, options);\n}\n//# sourceMappingURL=compilableQueryWatch.js.map","export const MAX_OP_ID = '9223372036854775807';\n//# sourceMappingURL=constants.js.map","import Logger from 'js-logger';\nimport { extractTableUpdates } from '../../../db/DBAdapter.js';\nimport { BaseObserver } from '../../../utils/BaseObserver.js';\nimport { MAX_OP_ID } from '../../constants.js';\nimport { PSInternalTable } from './BucketStorageAdapter.js';\nimport { CrudEntry } from './CrudEntry.js';\nexport class SqliteBucketStorage extends BaseObserver {\n    db;\n    logger;\n    tableNames;\n    _hasCompletedSync;\n    updateListener;\n    _clientId;\n    constructor(db, logger = Logger.get('SqliteBucketStorage')) {\n        super();\n        this.db = db;\n        this.logger = logger;\n        this._hasCompletedSync = false;\n        this.tableNames = new Set();\n        this.updateListener = db.registerListener({\n            tablesUpdated: (update) => {\n                const tables = extractTableUpdates(update);\n                if (tables.includes(PSInternalTable.CRUD)) {\n                    this.iterateListeners((l) => l.crudUpdate?.());\n                }\n            }\n        });\n    }\n    async init() {\n        this._hasCompletedSync = false;\n        const existingTableRows = await this.db.getAll(`SELECT name FROM sqlite_master WHERE type='table' AND name GLOB 'ps_data_*'`);\n        for (const row of existingTableRows ?? []) {\n            this.tableNames.add(row.name);\n        }\n    }\n    async dispose() {\n        this.updateListener?.();\n    }\n    async _getClientId() {\n        const row = await this.db.get('SELECT powersync_client_id() as client_id');\n        return row['client_id'];\n    }\n    getClientId() {\n        if (this._clientId == null) {\n            this._clientId = this._getClientId();\n        }\n        return this._clientId;\n    }\n    getMaxOpId() {\n        return MAX_OP_ID;\n    }\n    /**\n     * Reset any caches.\n     */\n    startSession() { }\n    async getBucketStates() {\n        const result = await this.db.getAll(\"SELECT name as bucket, cast(last_op as TEXT) as op_id FROM ps_buckets WHERE pending_delete = 0 AND name != '$local'\");\n        return result;\n    }\n    async getBucketOperationProgress() {\n        const rows = await this.db.getAll('SELECT name, count_at_last, count_since_last FROM ps_buckets');\n        return Object.fromEntries(rows.map((r) => [r.name, { atLast: r.count_at_last, sinceLast: r.count_since_last }]));\n    }\n    async saveSyncData(batch, fixedKeyFormat = false) {\n        await this.writeTransaction(async (tx) => {\n            for (const b of batch.buckets) {\n                await tx.execute('INSERT INTO powersync_operations(op, data) VALUES(?, ?)', [\n                    'save',\n                    JSON.stringify({ buckets: [b.toJSON(fixedKeyFormat)] })\n                ]);\n                this.logger.debug(`Saved batch of data for  bucket: ${b.bucket}, operations: ${b.data.length}`);\n            }\n        });\n    }\n    async removeBuckets(buckets) {\n        for (const bucket of buckets) {\n            await this.deleteBucket(bucket);\n        }\n    }\n    /**\n     * Mark a bucket for deletion.\n     */\n    async deleteBucket(bucket) {\n        await this.writeTransaction(async (tx) => {\n            await tx.execute('INSERT INTO powersync_operations(op, data) VALUES(?, ?)', ['delete_bucket', bucket]);\n        });\n        this.logger.debug(`Done deleting bucket ${bucket}`);\n    }\n    async hasCompletedSync() {\n        if (this._hasCompletedSync) {\n            return true;\n        }\n        const r = await this.db.get(`SELECT powersync_last_synced_at() as synced_at`);\n        const completed = r.synced_at != null;\n        if (completed) {\n            this._hasCompletedSync = true;\n        }\n        return completed;\n    }\n    async syncLocalDatabase(checkpoint, priority) {\n        const r = await this.validateChecksums(checkpoint, priority);\n        if (!r.checkpointValid) {\n            this.logger.error('Checksums failed for', r.checkpointFailures);\n            for (const b of r.checkpointFailures ?? []) {\n                await this.deleteBucket(b);\n            }\n            return { ready: false, checkpointValid: false, checkpointFailures: r.checkpointFailures };\n        }\n        if (priority == null) {\n            this.logger.debug(`Validated checksums checkpoint ${checkpoint.last_op_id}`);\n        }\n        else {\n            this.logger.debug(`Validated checksums for partial checkpoint ${checkpoint.last_op_id}, priority ${priority}`);\n        }\n        let buckets = checkpoint.buckets;\n        if (priority !== undefined) {\n            buckets = buckets.filter((b) => hasMatchingPriority(priority, b));\n        }\n        const bucketNames = buckets.map((b) => b.bucket);\n        await this.writeTransaction(async (tx) => {\n            await tx.execute(`UPDATE ps_buckets SET last_op = ? WHERE name IN (SELECT json_each.value FROM json_each(?))`, [\n                checkpoint.last_op_id,\n                JSON.stringify(bucketNames)\n            ]);\n            if (priority == null && checkpoint.write_checkpoint) {\n                await tx.execute(\"UPDATE ps_buckets SET last_op = ? WHERE name = '$local'\", [checkpoint.write_checkpoint]);\n            }\n        });\n        const valid = await this.updateObjectsFromBuckets(checkpoint, priority);\n        if (!valid) {\n            return { ready: false, checkpointValid: true };\n        }\n        return {\n            ready: true,\n            checkpointValid: true\n        };\n    }\n    /**\n     * Atomically update the local state to the current checkpoint.\n     *\n     * This includes creating new tables, dropping old tables, and copying data over from the oplog.\n     */\n    async updateObjectsFromBuckets(checkpoint, priority) {\n        let arg = '';\n        if (priority !== undefined) {\n            const affectedBuckets = [];\n            for (const desc of checkpoint.buckets) {\n                if (hasMatchingPriority(priority, desc)) {\n                    affectedBuckets.push(desc.bucket);\n                }\n            }\n            arg = JSON.stringify({ priority, buckets: affectedBuckets });\n        }\n        return this.writeTransaction(async (tx) => {\n            const { insertId: result } = await tx.execute('INSERT INTO powersync_operations(op, data) VALUES(?, ?)', [\n                'sync_local',\n                arg\n            ]);\n            if (result == 1) {\n                if (priority == null) {\n                    const bucketToCount = Object.fromEntries(checkpoint.buckets.map((b) => [b.bucket, b.count]));\n                    // The two parameters could be replaced with one, but: https://github.com/powersync-ja/better-sqlite3/pull/6\n                    const jsonBucketCount = JSON.stringify(bucketToCount);\n                    await tx.execute(\"UPDATE ps_buckets SET count_since_last = 0, count_at_last = ?->name WHERE name != '$local' AND ?->name IS NOT NULL\", [jsonBucketCount, jsonBucketCount]);\n                }\n                return true;\n            }\n            else {\n                return false;\n            }\n        });\n    }\n    async validateChecksums(checkpoint, priority) {\n        if (priority !== undefined) {\n            // Only validate the buckets within the priority we care about\n            const newBuckets = checkpoint.buckets.filter((cs) => hasMatchingPriority(priority, cs));\n            checkpoint = { ...checkpoint, buckets: newBuckets };\n        }\n        const rs = await this.db.execute('SELECT powersync_validate_checkpoint(?) as result', [\n            JSON.stringify({ ...checkpoint })\n        ]);\n        const resultItem = rs.rows?.item(0);\n        if (!resultItem) {\n            return {\n                checkpointValid: false,\n                ready: false,\n                checkpointFailures: []\n            };\n        }\n        const result = JSON.parse(resultItem['result']);\n        if (result['valid']) {\n            return { ready: true, checkpointValid: true };\n        }\n        else {\n            return {\n                checkpointValid: false,\n                ready: false,\n                checkpointFailures: result['failed_buckets']\n            };\n        }\n    }\n    async updateLocalTarget(cb) {\n        const rs1 = await this.db.getAll(\"SELECT target_op FROM ps_buckets WHERE name = '$local' AND target_op = CAST(? as INTEGER)\", [MAX_OP_ID]);\n        if (!rs1.length) {\n            // Nothing to update\n            return false;\n        }\n        const rs = await this.db.getAll(\"SELECT seq FROM main.sqlite_sequence WHERE name = 'ps_crud'\");\n        if (!rs.length) {\n            // Nothing to update\n            return false;\n        }\n        const seqBefore = rs[0]['seq'];\n        const opId = await cb();\n        return this.writeTransaction(async (tx) => {\n            const anyData = await tx.execute('SELECT 1 FROM ps_crud LIMIT 1');\n            if (anyData.rows?.length) {\n                // if isNotEmpty\n                this.logger.debug(`New data uploaded since write checkpoint ${opId} - need new write checkpoint`);\n                return false;\n            }\n            const rs = await tx.execute(\"SELECT seq FROM main.sqlite_sequence WHERE name = 'ps_crud'\");\n            if (!rs.rows?.length) {\n                // assert isNotEmpty\n                throw new Error('SQLite Sequence should not be empty');\n            }\n            const seqAfter = rs.rows?.item(0)['seq'];\n            if (seqAfter != seqBefore) {\n                this.logger.debug(`New data uploaded since write checpoint ${opId} - need new write checkpoint (sequence updated)`);\n                // New crud data may have been uploaded since we got the checkpoint. Abort.\n                return false;\n            }\n            this.logger.debug(`Updating target write checkpoint to ${opId}`);\n            await tx.execute(\"UPDATE ps_buckets SET target_op = CAST(? as INTEGER) WHERE name='$local'\", [opId]);\n            return true;\n        });\n    }\n    async nextCrudItem() {\n        const next = await this.db.getOptional('SELECT * FROM ps_crud ORDER BY id ASC LIMIT 1');\n        if (!next) {\n            return;\n        }\n        return CrudEntry.fromRow(next);\n    }\n    async hasCrud() {\n        const anyData = await this.db.getOptional('SELECT 1 FROM ps_crud LIMIT 1');\n        return !!anyData;\n    }\n    /**\n     * Get a batch of objects to send to the server.\n     * When the objects are successfully sent to the server, call .complete()\n     */\n    async getCrudBatch(limit = 100) {\n        if (!(await this.hasCrud())) {\n            return null;\n        }\n        const crudResult = await this.db.getAll('SELECT * FROM ps_crud ORDER BY id ASC LIMIT ?', [limit]);\n        const all = [];\n        for (const row of crudResult) {\n            all.push(CrudEntry.fromRow(row));\n        }\n        if (all.length === 0) {\n            return null;\n        }\n        const last = all[all.length - 1];\n        return {\n            crud: all,\n            haveMore: true,\n            complete: async (writeCheckpoint) => {\n                return this.writeTransaction(async (tx) => {\n                    await tx.execute('DELETE FROM ps_crud WHERE id <= ?', [last.clientId]);\n                    if (writeCheckpoint) {\n                        const crudResult = await tx.execute('SELECT 1 FROM ps_crud LIMIT 1');\n                        if (crudResult.rows?.length) {\n                            await tx.execute(\"UPDATE ps_buckets SET target_op = CAST(? as INTEGER) WHERE name='$local'\", [\n                                writeCheckpoint\n                            ]);\n                        }\n                    }\n                    else {\n                        await tx.execute(\"UPDATE ps_buckets SET target_op = CAST(? as INTEGER) WHERE name='$local'\", [\n                            this.getMaxOpId()\n                        ]);\n                    }\n                });\n            }\n        };\n    }\n    async writeTransaction(callback, options) {\n        return this.db.writeTransaction(callback, options);\n    }\n    /**\n     * Set a target checkpoint.\n     */\n    async setTargetCheckpoint(checkpoint) {\n        // No-op for now\n    }\n    async control(op, payload) {\n        return await this.writeTransaction(async (tx) => {\n            const [[raw]] = await tx.executeRaw('SELECT powersync_control(?, ?)', [op, payload]);\n            return raw;\n        });\n    }\n    async hasMigratedSubkeys() {\n        const { r } = await this.db.get('SELECT EXISTS(SELECT * FROM ps_kv WHERE key = ?) as r', [\n            SqliteBucketStorage._subkeyMigrationKey\n        ]);\n        return r != 0;\n    }\n    async migrateToFixedSubkeys() {\n        await this.writeTransaction(async (tx) => {\n            await tx.execute('UPDATE ps_oplog SET key = powersync_remove_duplicate_key_encoding(key);');\n            await tx.execute('INSERT OR REPLACE INTO ps_kv (key, value) VALUES (?, ?);', [\n                SqliteBucketStorage._subkeyMigrationKey,\n                '1'\n            ]);\n        });\n    }\n    static _subkeyMigrationKey = 'powersync_js_migrated_subkeys';\n}\nfunction hasMatchingPriority(priority, bucket) {\n    return bucket.priority != null && bucket.priority <= priority;\n}\n//# sourceMappingURL=SqliteBucketStorage.js.map","import { SyncDataBucket } from './SyncDataBucket.js';\n// TODO JSON\nexport class SyncDataBatch {\n    buckets;\n    static fromJSON(json) {\n        return new SyncDataBatch(json.buckets.map((bucket) => SyncDataBucket.fromRow(bucket)));\n    }\n    constructor(buckets) {\n        this.buckets = buckets;\n    }\n}\n//# sourceMappingURL=SyncDataBatch.js.map","/**\n * Thrown when an underlying database connection is closed.\n * This is particularly relevant when worker connections are marked as closed while\n * operations are still in progress.\n */\nexport class ConnectionClosedError extends Error {\n    static NAME = 'ConnectionClosedError';\n    static MATCHES(input) {\n        /**\n         * If there are weird package issues which cause multiple versions of classes to be present, the instanceof\n         * check might fail. This also performs a failsafe check.\n         * This might also happen if the Error is serialized and parsed over a bridging channel like a MessagePort.\n         */\n        return (input instanceof ConnectionClosedError || (input instanceof Error && input.name == ConnectionClosedError.NAME));\n    }\n    constructor(message) {\n        super(message);\n        this.name = ConnectionClosedError.NAME;\n    }\n}\n//# sourceMappingURL=ConnectionClosedError.js.map","import { encodeTableOptions } from './internal.js';\n/**\n * A schema is a collection of tables. It is used to define the structure of a database.\n */\nexport class Schema {\n    /*\n      Only available when constructing with mapped typed definition columns\n    */\n    types;\n    props;\n    tables;\n    rawTables;\n    constructor(tables) {\n        if (Array.isArray(tables)) {\n            /*\n              We need to validate that the tables have a name here because a user could pass in an array\n              of Tables that don't have a name because they are using the V2 syntax.\n              Therefore, 'convertToClassicTables' won't be called on the tables resulting in a runtime error.\n            */\n            for (const table of tables) {\n                if (table.name === '') {\n                    throw new Error(\"It appears you are trying to create a new Schema with an array instead of an object. Passing in an object instead of an array into 'new Schema()' may resolve your issue.\");\n                }\n            }\n            this.tables = tables;\n        }\n        else {\n            // Update the table entries with the provided table name key\n            this.props = Object.fromEntries(Object.entries(tables).map(([tableName, table]) => [tableName, table.copyWithName(tableName)]));\n            this.tables = Object.values(this.props);\n        }\n        this.rawTables = [];\n    }\n    /**\n     * Adds raw tables to this schema. Raw tables are identified by their name, but entirely managed by the application\n     * developer instead of automatically by PowerSync.\n     * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow\n     * using client-side table and column constraints.\n     * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.\n     *\n     * @param tables An object of (table name, raw table definition) entries.\n     * @experimental Note that the raw tables API is still experimental and may change in the future.\n     */\n    withRawTables(tables) {\n        for (const [name, rawTableDefinition] of Object.entries(tables)) {\n            this.rawTables.push({ name, ...rawTableDefinition });\n        }\n    }\n    validate() {\n        for (const table of this.tables) {\n            table.validate();\n        }\n    }\n    toJSON() {\n        return {\n            tables: this.tables.map((t) => t.toJSON()),\n            raw_tables: this.rawTables.map(Schema.rawTableToJson)\n        };\n    }\n    /**\n     * Returns a representation of the raw table that is understood by the PowerSync SQLite core extension.\n     *\n     * The output of this can be passed through `JSON.serialize` and then used in `powersync_create_raw_table_crud_trigger`\n     * to define triggers for this table.\n     */\n    static rawTableToJson(table) {\n        const serialized = {\n            name: table.name,\n            put: table.put,\n            delete: table.delete,\n            clear: table.clear\n        };\n        if ('schema' in table) {\n            // We have schema options, those are flattened into the outer JSON object for the core extension.\n            const schema = table.schema;\n            serialized.table_name = schema.tableName ?? table.name;\n            serialized.synced_columns = schema.syncedColumns;\n            Object.assign(serialized, encodeTableOptions(table.schema));\n        }\n        return serialized;\n    }\n}\n//# sourceMappingURL=Schema.js.map","import { Table } from './Table.js';\n/**\n  Generate a new table from the columns and indexes\n  @deprecated You should use {@link Table} instead as it now allows TableV2 syntax.\n  This will be removed in the next major release.\n*/\nexport class TableV2 extends Table {\n}\n//# sourceMappingURL=TableV2.js.map","function sanitizeString(input) {\n    return `'${input.replace(/'/g, \"''\")}'`;\n}\n/**\n * Helper function for sanitizing UUID input strings.\n * Typically used with {@link sanitizeSQL}.\n */\nexport function sanitizeUUID(uuid) {\n    const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n    const isValid = uuidRegex.test(uuid);\n    if (!isValid) {\n        throw new Error(`${uuid} is not a valid UUID`);\n    }\n    return uuid;\n}\n/**\n * SQL string template function for {@link TrackDiffOptions#when} and {@link CreateDiffTriggerOptions#when}.\n *\n * This function performs basic string interpolation for SQLite WHEN clauses.\n *\n * **String placeholders:**\n * - All string values passed as placeholders are automatically wrapped in single quotes (`'`).\n * - Do not manually wrap placeholders in single quotes in your template string; the function will handle quoting and escaping for you.\n * - Any single quotes within the string value are escaped by doubling them (`''`), as required by SQL syntax.\n *\n * **Other types:**\n * - `null` and `undefined` are converted to SQL `NULL`.\n * - Objects are stringified using `JSON.stringify()` and wrapped in single quotes, with any single quotes inside the stringified value escaped.\n * - Numbers and other primitive types are inserted directly.\n *\n * **Usage example:**\n * ```typescript\n * const myID = \"O'Reilly\";\n * const clause = sanitizeSQL`New.id = ${myID}`;\n * // Result: \"New.id = 'O''Reilly'\"\n * ```\n *\n * Avoid manually quoting placeholders:\n * ```typescript\n * // Incorrect:\n * sanitizeSQL`New.id = '${myID}'` // Produces double quotes: New.id = ''O''Reilly''\n * ```\n */\nexport function sanitizeSQL(strings, ...values) {\n    let result = '';\n    strings.forEach((str, i) => {\n        result += str;\n        if (i < values.length) {\n            // For SQL, escape single quotes in string values\n            const value = values[i];\n            if (typeof value == 'string') {\n                result += sanitizeString(value);\n            }\n            else if (value == null) {\n                result += 'NULL';\n            }\n            else if (typeof value == 'object') {\n                // Stringify the object and escape single quotes in the result\n                const stringified = JSON.stringify(value);\n                result += sanitizeString(stringified);\n            }\n            else {\n                result += value;\n            }\n        }\n    });\n    return result;\n}\n//# sourceMappingURL=sanitizeSQL.js.map","/**\n * Performs a {@link AbstractPowerSyncDatabase.getAll} operation for a watched query.\n */\nexport class GetAllQuery {\n    options;\n    constructor(options) {\n        this.options = options;\n    }\n    compile() {\n        return {\n            sql: this.options.sql,\n            parameters: this.options.parameters ?? []\n        };\n    }\n    async execute(options) {\n        const { db } = options;\n        const { sql, parameters = [] } = this.compile();\n        const rawResult = await db.getAll(sql, [...parameters]);\n        if (this.options.mapper) {\n            return rawResult.map(this.options.mapper);\n        }\n        return rawResult;\n    }\n}\n//# sourceMappingURL=GetAllQuery.js.map","import Logger from 'js-logger';\nconst TypedLogger = Logger;\nexport const LogLevel = {\n    TRACE: TypedLogger.TRACE,\n    DEBUG: TypedLogger.DEBUG,\n    INFO: TypedLogger.INFO,\n    TIME: TypedLogger.TIME,\n    WARN: TypedLogger.WARN,\n    ERROR: TypedLogger.ERROR,\n    OFF: TypedLogger.OFF\n};\n/**\n * Retrieves the base (default) logger instance.\n *\n * This base logger controls the default logging configuration and is shared\n * across all loggers created with `createLogger`. Adjusting settings on this\n * base logger affects all loggers derived from it unless explicitly overridden.\n *\n */\nexport function createBaseLogger() {\n    return Logger;\n}\n/**\n * Creates and configures a new named logger based on the base logger.\n *\n * Named loggers allow specific modules or areas of your application to have\n * their own logging levels and behaviors. These loggers inherit configuration\n * from the base logger by default but can override settings independently.\n */\nexport function createLogger(name, options = {}) {\n    const logger = Logger.get(name);\n    if (options.logLevel) {\n        logger.setLevel(options.logLevel);\n    }\n    return logger;\n}\n//# sourceMappingURL=Logger.js.map","export const parseQuery = (query, parameters) => {\n    let sqlStatement;\n    if (typeof query == 'string') {\n        sqlStatement = query;\n    }\n    else {\n        const hasAdditionalParameters = parameters.length > 0;\n        if (hasAdditionalParameters) {\n            throw new Error('You cannot pass parameters to a compiled query.');\n        }\n        const compiled = query.compile();\n        sqlStatement = compiled.sql;\n        parameters = compiled.parameters;\n    }\n    return { sqlStatement, parameters: parameters };\n};\n//# sourceMappingURL=parseQuery.js.map"],"names":["ColumnType","AttachmentState","WatchedQueryListenerEvent","EncodingType","require$$0","this","RowUpdateType","PSInternalTable","PowerSyncControlCommand","UpdateType","OpTypeEnum","require$$1","exports","Buffer","Deferred_1","Deferred","require$$2","require$$3","require$$4","require$$5","RSocketConnector_1","RSocketConnector","RSocketServer_1","RSocketServer","require$$6","require$$7","require$$8","WebsocketDuplexConnection_1","WebsocketDuplexConnection","Deserializer","FetchStrategy","EventIterator","LockType","SyncStreamConnectionMethod","SyncClientImplementation","DiffTriggerOperation"],"mappings":"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","x_google_ignoreList":[14,15,16,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]}