From 7d468a26609f833979b4bf0d9d1f0b7a0dc0277a Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Tue, 2 Jun 2026 11:44:07 +0200 Subject: [PATCH 1/3] Adopt API extractor tool for `@powersync/common` --- .github/workflows/build-packages.yaml | 4 + .gitignore | 2 + packages/common/api-extractor.json | 454 +++ packages/common/etc/common.api.md | 2440 +++++++++++++++++ packages/common/package.json | 3 +- .../src/attachments/AttachmentErrorHandler.ts | 12 +- .../common/src/attachments/AttachmentQueue.ts | 68 +- .../src/attachments/LocalStorageAdapter.ts | 22 +- .../src/attachments/RemoteStorageAdapter.ts | 8 +- packages/common/src/attachments/Schema.ts | 16 +- .../src/attachments/WatchedAttachmentItem.ts | 2 +- .../src/client/AbstractPowerSyncDatabase.ts | 164 +- .../client/AbstractPowerSyncOpenFactory.ts | 6 + .../common/src/client/ConnectionManager.ts | 5 +- packages/common/src/client/Query.ts | 9 + packages/common/src/client/SQLOpenFactory.ts | 12 + .../common/src/client/compilableQueryWatch.ts | 6 + .../connection/PowerSyncBackendConnector.ts | 3 + .../client/connection/PowerSyncCredentials.ts | 3 + packages/common/src/client/constants.ts | 3 + .../common/src/client/runOnSchemaChange.ts | 3 + .../sync/bucket/BucketStorageAdapter.ts | 12 + .../src/client/sync/bucket/CrudBatch.ts | 2 + .../src/client/sync/bucket/CrudEntry.ts | 9 + .../src/client/sync/bucket/CrudTransaction.ts | 3 + .../client/sync/bucket/SqliteBucketStorage.ts | 3 + .../src/client/sync/stream/AbstractRemote.ts | 31 +- .../AbstractStreamingSyncImplementation.ts | 60 +- .../src/client/sync/stream/JsonValue.ts | 3 + .../common/src/client/sync/sync-streams.ts | 31 +- .../src/client/triggers/TriggerManager.ts | 37 +- .../common/src/client/triggers/sanitizeSQL.ts | 5 + .../common/src/client/watched/GetAllQuery.ts | 4 + .../common/src/client/watched/WatchedQuery.ts | 26 +- .../processors/AbstractQueryProcessor.ts | 2 +- .../processors/DifferentialQueryProcessor.ts | 20 + .../processors/OnChangeQueryProcessor.ts | 4 + .../client/watched/processors/comparators.ts | 8 + .../common/src/db/ConnectionClosedError.ts | 2 + packages/common/src/db/DBAdapter.ts | 60 +- packages/common/src/db/crud/SyncProgress.ts | 7 +- packages/common/src/db/crud/SyncStatus.ts | 56 +- .../common/src/db/crud/UploadQueueStatus.ts | 3 + packages/common/src/db/schema/Column.ts | 31 +- packages/common/src/db/schema/Index.ts | 9 + .../common/src/db/schema/IndexedColumn.ts | 9 + packages/common/src/db/schema/RawTable.ts | 8 +- packages/common/src/db/schema/Schema.ts | 7 +- packages/common/src/db/schema/Table.ts | 31 +- packages/common/src/db/schema/TableV2.ts | 2 + packages/common/src/index.ts | 2 +- packages/common/src/types/types.ts | 6 + packages/common/src/utils/AbortOperation.ts | 2 + packages/common/src/utils/BaseObserver.ts | 12 + .../common/src/utils/ControlledExecutor.ts | 6 + packages/common/src/utils/Logger.ts | 9 + packages/common/src/utils/mutex.ts | 12 + packages/common/src/utils/parseQuery.ts | 6 + packages/common/src/utils/stream_transform.ts | 4 +- packages/common/tsdoc.json | 20 + .../src/utils/compilableQuery.ts | 2 + pnpm-lock.yaml | 1348 +++++---- pnpm-workspace.yaml | 1 + 63 files changed, 4514 insertions(+), 646 deletions(-) create mode 100644 packages/common/api-extractor.json create mode 100644 packages/common/etc/common.api.md create mode 100644 packages/common/tsdoc.json diff --git a/.github/workflows/build-packages.yaml b/.github/workflows/build-packages.yaml index 41dbd4962..76da008dc 100644 --- a/.github/workflows/build-packages.yaml +++ b/.github/workflows/build-packages.yaml @@ -33,3 +33,7 @@ jobs: - name: Build typescript run: pnpm exec tsc -b + + - name: Verify @powersync/common API + working-directory: packages/common + run: pnpm exec api-extractor run --verbose diff --git a/.gitignore b/.gitignore index 73f9b42e6..f57d67a29 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ Cargo.lock target/ # Large files generated by Tauri **/gen/schemas/ + +/packages/common/temp diff --git a/packages/common/api-extractor.json b/packages/common/api-extractor.json new file mode 100644 index 000000000..7078885d1 --- /dev/null +++ b/packages/common/api-extractor.json @@ -0,0 +1,454 @@ +/** + * Config file for API Extractor. For more info, please visit: https://api-extractor.com + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + /** + * Optionally specifies another JSON config file that this file extends from. This provides a way for + * standard settings to be shared across multiple projects. + * + * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains + * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be + * resolved using NodeJS require(). + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "extends": "./shared/api-extractor-base.json" + // "extends": "my-package/include/api-extractor-base.json" + + /** + * Determines the "" token that can be used with other config file settings. The project folder + * typically contains the tsconfig.json and package.json config files, but the path is user-defined. + * + * The path is resolved relative to the folder of the config file that contains the setting. + * + * The default value for "projectFolder" is the token "", which means the folder is determined by traversing + * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder + * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error + * will be reported. + * + * SUPPORTED TOKENS: + * DEFAULT VALUE: "" + */ + // "projectFolder": "..", + + /** + * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor + * analyzes the symbols exported by this module. + * + * The file extension must be ".d.ts" and not ".ts". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + */ + "mainEntryPointFilePath": "/lib/index.d.ts", + + /** + * A list of NPM package names whose exports should be treated as part of this package. + * + * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", + * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part + * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly + * imports library2. To avoid this, we might specify: + * + * "bundledPackages": [ "library2" ], + * + * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been + * local files for library1. + * + * The "bundledPackages" elements may specify glob patterns using minimatch syntax. To ensure deterministic + * output, globs are expanded by matching explicitly declared top-level dependencies only. For example, + * the pattern below will NOT match "@my-company/example" unless it appears in a field such as "dependencies" + * or "devDependencies" of the project's package.json file: + * + * "bundledPackages": [ "@my-company/*" ], + */ + "bundledPackages": [], + + /** + * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files + * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. + * To use the OS's default newline kind, specify "os". + * + * DEFAULT VALUE: "crlf" + */ + // "newlineKind": "crlf", + + /** + * Specifies how API Extractor sorts members of an enum when generating the .api.json file. By default, the output + * files will be sorted alphabetically, which is "by-name". To keep the ordering in the source code, specify + * "preserve". + * + * DEFAULT VALUE: "by-name" + */ + // "enumMemberOrder": "by-name", + + /** + * Set to true when invoking API Extractor's test harness. When `testMode` is true, the `toolVersion` field in the + * .api.json file is assigned an empty string to prevent spurious diffs in output files tracked for tests. + * + * DEFAULT VALUE: "false" + */ + // "testMode": false, + + /** + * Determines how the TypeScript compiler engine will be invoked by API Extractor. + */ + "compiler": { + /** + * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * Note: This setting will be ignored if "overrideTsconfig" is used. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/tsconfig.json" + */ + // "tsconfigFilePath": "/tsconfig.json", + /** + * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. + * The object must conform to the TypeScript tsconfig schema: + * + * http://json.schemastore.org/tsconfig + * + * If omitted, then the tsconfig.json file will be read from the "projectFolder". + * + * DEFAULT VALUE: no overrideTsconfig section + */ + // "overrideTsconfig": { + // . . . + // } + /** + * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended + * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when + * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses + * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. + * + * DEFAULT VALUE: false + */ + // "skipLibCheck": true, + }, + + /** + * Configures how the API report file (*.api.md) will be generated. + */ + "apiReport": { + /** + * (REQUIRED) Whether to generate an API report. + */ + "enabled": true + + /** + * The base filename for the API report files, to be combined with "reportFolder" or "reportTempFolder" + * to produce the full file path. The "reportFileName" should not include any path separators such as + * "\" or "/". The "reportFileName" should not include a file extension, since API Extractor will automatically + * append an appropriate file extension such as ".api.md". If the "reportVariants" setting is used, then the + * file extension includes the variant name, for example "my-report.public.api.md" or "my-report.beta.api.md". + * The "complete" variant always uses the simple extension "my-report.api.md". + * + * Previous versions of API Extractor required "reportFileName" to include the ".api.md" extension explicitly; + * for backwards compatibility, that is still accepted but will be discarded before applying the above rules. + * + * SUPPORTED TOKENS: , + * DEFAULT VALUE: "" + */ + // "reportFileName": "", + + /** + * To support different approval requirements for different API levels, multiple "variants" of the API report can + * be generated. The "reportVariants" setting specifies a list of variants to be generated. If omitted, + * by default only the "complete" variant will be generated, which includes all @internal, @alpha, @beta, + * and @public items. Other possible variants are "alpha" (@alpha + @beta + @public), "beta" (@beta + @public), + * and "public" (@public only). + * + * DEFAULT VALUE: [ "complete" ] + */ + // "reportVariants": ["public", "beta"], + + /** + * Specifies the folder where the API report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, + * e.g. for an API review. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/etc/" + */ + // "reportFolder": "/etc/", + + /** + * Specifies the folder where the temporary report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * After the temporary file is written to disk, it is compared with the file in the "reportFolder". + * If they are different, a production build will fail. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportTempFolder": "/temp/", + + /** + * Whether "forgotten exports" should be included in the API report file. Forgotten exports are declarations + * flagged with `ae-forgotten-export` warnings. See https://api-extractor.com/pages/messages/ae-forgotten-export/ to + * learn more. + * + * DEFAULT VALUE: "false" + */ + // "includeForgottenExports": false + }, + + /** + * Configures how the doc model file (*.api.json) will be generated. + */ + "docModel": { + /** + * (REQUIRED) Whether to generate a doc model file. + */ + "enabled": true + + /** + * The output path for the doc model file. The file extension should be ".api.json". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/.api.json" + */ + // "apiJsonFilePath": "/temp/.api.json", + + /** + * Whether "forgotten exports" should be included in the doc model file. Forgotten exports are declarations + * flagged with `ae-forgotten-export` warnings. See https://api-extractor.com/pages/messages/ae-forgotten-export/ to + * learn more. + * + * DEFAULT VALUE: "false" + */ + // "includeForgottenExports": false, + + /** + * The base URL where the project's source code can be viewed on a website such as GitHub or + * Azure DevOps. This URL path corresponds to the `` path on disk. + * + * This URL is concatenated with the file paths serialized to the doc model to produce URL file paths to individual API items. + * For example, if the `projectFolderUrl` is "https://github.com/microsoft/rushstack/tree/main/apps/api-extractor" and an API + * item's file path is "api/ExtractorConfig.ts", the full URL file path would be + * "https://github.com/microsoft/rushstack/tree/main/apps/api-extractor/api/ExtractorConfig.js". + * + * This setting can be omitted if you don't need source code links in your API documentation reference. + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "projectFolderUrl": "http://github.com/path/to/your/projectFolder" + }, + + /** + * Configures how the .d.ts rollup file will be generated. + */ + "dtsRollup": { + /** + * (REQUIRED) Whether to generate the .d.ts rollup file. + */ + "enabled": false + + /** + * Specifies the output path for a .d.ts rollup file to be generated without any trimming. + * This file will include all declarations that are exported by the main entry point. + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/dist/.d.ts" + */ + // "untrimmedFilePath": "/dist/.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for an "alpha" release. + * This file will include only declarations that are marked as "@public", "@beta", or "@alpha". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "alphaTrimmedFilePath": "/dist/-alpha.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. + * This file will include only declarations that are marked as "@public" or "@beta". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "betaTrimmedFilePath": "/dist/-beta.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. + * This file will include only declarations that are marked as "@public". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "publicTrimmedFilePath": "/dist/-public.d.ts", + + /** + * When a declaration is trimmed, by default it will be replaced by a code comment such as + * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the + * declaration completely. + * + * DEFAULT VALUE: false + */ + // "omitTrimmingComments": true + }, + + /** + * Configures how the tsdoc-metadata.json file will be generated. + */ + "tsdocMetadata": { + /** + * Whether to generate the tsdoc-metadata.json file. + * + * DEFAULT VALUE: true + */ + // "enabled": true, + /** + * Specifies where the TSDoc metadata file should be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", + * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup + * falls back to "tsdoc-metadata.json" in the package folder. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" + }, + + /** + * Configures how API Extractor reports error and warning messages produced during analysis. + * + * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. + */ + "messages": { + /** + * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing + * the input .d.ts files. + * + * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "compilerMessageReporting": { + /** + * Configures the default routing for messages that don't match an explicit rule in this table. + */ + "default": { + /** + * Specifies whether the message should be written to the the tool's output log. Note that + * the "addToApiReportFile" property may supersede this option. + * + * Possible values: "error", "warning", "none" + * + * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail + * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes + * the "--local" option), the warning is displayed but the build will not fail. + * + * DEFAULT VALUE: "warning" + */ + "logLevel": "warning" + + /** + * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), + * then the message will be written inside that file; otherwise, the message is instead logged according to + * the "logLevel" option. + * + * DEFAULT VALUE: false + */ + // "addToApiReportFile": false + } + + // "TS2551": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by API Extractor during its analysis. + * + * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" + * + * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings + */ + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "ae-extra-release-tag": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by the TSDoc parser when analyzing code comments. + * + * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "tsdoc-link-tag-unescaped-text": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + } + } +} diff --git a/packages/common/etc/common.api.md b/packages/common/etc/common.api.md new file mode 100644 index 000000000..1f16e563e --- /dev/null +++ b/packages/common/etc/common.api.md @@ -0,0 +1,2440 @@ +## API Report File for "@powersync/common" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { fetch as fetch_2 } from 'cross-fetch'; +import { GlobalLogger } from 'js-logger'; +import { ILogger } from 'js-logger'; +import { ILoggerOpts } from 'js-logger'; +import { ILogHandler } from 'js-logger'; +import { ILogLevel } from 'js-logger'; +import Logger from 'js-logger'; + +// Warning: (ae-internal-missing-underscore) The name "AbortOperation" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class AbortOperation extends Error { + constructor(reason: string); + // (undocumented) + protected reason: string; +} + +// Warning: (ae-incompatible-release-tags) The symbol "AbstractPowerSyncDatabase" is marked as @public, but its signature references "BaseObserver" which is marked as @internal +// +// @public (undocumented) +export abstract class AbstractPowerSyncDatabase extends BaseObserver { + constructor(options: PowerSyncDatabaseOptionsWithDBAdapter); + constructor(options: PowerSyncDatabaseOptionsWithOpenFactory); + constructor(options: PowerSyncDatabaseOptionsWithSettings); + constructor(options: PowerSyncDatabaseOptions); + // Warning: (ae-incompatible-release-tags) The symbol "bucketStorageAdapter" is marked as @public, but its signature references "BucketStorageAdapter" which is marked as @internal + // + // (undocumented) + protected bucketStorageAdapter: BucketStorageAdapter; + close(options?: PowerSyncCloseOptions): Promise; + closed: boolean; + connect(connector: PowerSyncBackendConnector, options?: PowerSyncConnectionOptions): Promise; + get connected(): boolean; + // (undocumented) + get connecting(): boolean; + // Warning: (ae-incompatible-release-tags) The symbol "connectionManager" is marked as @public, but its signature references "ConnectionManager" which is marked as @internal + // + // (undocumented) + protected connectionManager: ConnectionManager; + // Warning: (ae-incompatible-release-tags) The symbol "connectionOptions" is marked as @public, but its signature references "InternalConnectionOptions" which is marked as @internal + get connectionOptions(): InternalConnectionOptions | null; + get connector(): PowerSyncBackendConnector | null; + currentStatus: SyncStatus; + customQuery(query: WatchCompatibleQuery): Query; + get database(): DBAdapter; + disconnect(): Promise; + disconnectAndClear(options?: DisconnectAndClearOptions): Promise; + // @deprecated (undocumented) + dispose(): void; + execute(sql: string, parameters?: any[]): Promise; + executeBatch(sql: string, parameters?: any[][]): Promise; + executeRaw(sql: string, parameters?: any[]): Promise; + // Warning: (ae-incompatible-release-tags) The symbol "generateBucketStorageAdapter" is marked as @public, but its signature references "BucketStorageAdapter" which is marked as @internal + // + // (undocumented) + protected abstract generateBucketStorageAdapter(): BucketStorageAdapter; + // Warning: (ae-incompatible-release-tags) The symbol "generateSyncStreamImplementation" is marked as @public, but its signature references "CreateSyncImplementationOptions" which is marked as @internal + // Warning: (ae-incompatible-release-tags) The symbol "generateSyncStreamImplementation" is marked as @public, but its signature references "RequiredAdditionalConnectionOptions" which is marked as @internal + // Warning: (ae-incompatible-release-tags) The symbol "generateSyncStreamImplementation" is marked as @public, but its signature references "StreamingSyncImplementation" which is marked as @internal + // + // (undocumented) + protected abstract generateSyncStreamImplementation(connector: PowerSyncBackendConnector, options: CreateSyncImplementationOptions & RequiredAdditionalConnectionOptions): StreamingSyncImplementation; + // Warning: (ae-incompatible-release-tags) The symbol "generateTriggerManagerConfig" is marked as @public, but its signature references "TriggerManagerConfig" which is marked as @internal + protected generateTriggerManagerConfig(): TriggerManagerConfig; + get(sql: string, parameters?: any[]): Promise; + getAll(sql: string, parameters?: any[]): Promise; + getClientId(): Promise; + getCrudBatch(limit?: number): Promise; + getCrudTransactions(): AsyncIterable; + getNextCrudTransaction(): Promise; + getOptional(sql: string, parameters?: any[]): Promise; + getUploadQueueStats(includeSize?: boolean): Promise; + init(): Promise; + protected initialize(): Promise; + abstract _initialize(): Promise; + // (undocumented) + protected _isReadyPromise: Promise; + // (undocumented) + protected loadVersion(): Promise; + // (undocumented) + logger: ILogger; + onChange(options?: SQLOnChangeOptions): AsyncIterable; + onChange(handler?: WatchOnChangeHandler, options?: SQLOnChangeOptions): () => void; + onChangeWithAsyncGenerator(options?: SQLWatchOptions): AsyncIterable; + onChangeWithCallback(handler?: WatchOnChangeHandler, options?: SQLOnChangeOptions): () => void; + protected abstract openDBAdapter(options: PowerSyncDatabaseOptionsWithSettings): DBAdapter; + // (undocumented) + protected options: PowerSyncDatabaseOptions; + query(query: ArrayQueryDefinition): Query; + readLock(callback: (db: LockContext) => Promise): Promise; + readTransaction(callback: (tx: Transaction) => Promise, lockTimeout?: number): Promise; + // (undocumented) + ready: boolean; + // Warning: (ae-incompatible-release-tags) The symbol "resolvedConnectionOptions" is marked as @public, but its signature references "CreateSyncImplementationOptions" which is marked as @internal + // Warning: (ae-incompatible-release-tags) The symbol "resolvedConnectionOptions" is marked as @public, but its signature references "RequiredAdditionalConnectionOptions" which is marked as @internal + // + // (undocumented) + protected resolvedConnectionOptions(options: CreateSyncImplementationOptions): CreateSyncImplementationOptions & RequiredAdditionalConnectionOptions; + // (undocumented) + protected resolveOfflineSyncStatus(): Promise; + resolveTables(sql: string, parameters?: any[], options?: SQLWatchOptions): Promise; + protected runExclusive(callback: () => Promise): Promise; + // Warning: (ae-incompatible-release-tags) The symbol "runExclusiveMutex" is marked as @public, but its signature references "Mutex" which is marked as @internal + // + // (undocumented) + protected runExclusiveMutex: Mutex; + get schema(): Schema<{ + [x: string]: Table; + }>; + // (undocumented) + protected _schema: Schema; + // (undocumented) + sdkVersion: string; + syncStream(name: string, params?: Record): SyncStream; + // Warning: (ae-incompatible-release-tags) The symbol "syncStreamImplementation" is marked as @public, but its signature references "StreamingSyncImplementation" which is marked as @internal + // + // (undocumented) + get syncStreamImplementation(): StreamingSyncImplementation | null; + // Warning: (ae-incompatible-release-tags) The symbol "triggers" is marked as @public, but its signature references "TriggerManager" which is marked as @alpha + readonly triggers: TriggerManager; + // Warning: (ae-incompatible-release-tags) The symbol "triggersImpl" is marked as @public, but its signature references "TriggerManagerImpl" which is marked as @internal + // + // (undocumented) + protected triggersImpl: TriggerManagerImpl; + updateSchema(schema: Schema): Promise; + waitForFirstSync(request?: AbortSignal | { + signal?: AbortSignal; + priority?: number; + }): Promise; + // (undocumented) + waitForReady(): Promise; + waitForStatus(predicate: (status: SyncStatus) => any, signal?: AbortSignal): Promise; + watch(sql: string, parameters?: any[], options?: SQLWatchOptions): AsyncIterable; + watch(sql: string, parameters?: any[], handler?: WatchHandler, options?: SQLWatchOptions): void; + watchWithAsyncGenerator(sql: string, parameters?: any[], options?: SQLWatchOptions): AsyncIterable; + watchWithCallback(sql: string, parameters?: any[], handler?: WatchHandler, options?: SQLWatchOptions): void; + writeLock(callback: (db: LockContext) => Promise): Promise; + writeTransaction(callback: (tx: Transaction) => Promise, lockTimeout?: number): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "AbstractPowerSyncDatabaseOpenFactory" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export abstract class AbstractPowerSyncDatabaseOpenFactory { + constructor(options: PowerSyncOpenFactoryOptions); + // (undocumented) + abstract generateInstance(options: PowerSyncDatabaseOptions): AbstractPowerSyncDatabase; + // (undocumented) + generateOptions(): PowerSyncDatabaseOptions; + // (undocumented) + getInstance(): AbstractPowerSyncDatabase; + // (undocumented) + protected abstract openDB(): DBAdapter; + // (undocumented) + protected options: PowerSyncOpenFactoryOptions; + get schema(): Schema<{ + [x: string]: Table; + }>; +} + +// Warning: (ae-forgotten-export) The symbol "MetaBaseObserver" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "WatchedQueryProcessorListener" needs to be exported by the entry point index.d.ts +// Warning: (ae-internal-missing-underscore) The name "AbstractQueryProcessor" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export abstract class AbstractQueryProcessor extends MetaBaseObserver> implements WatchedQuery { + constructor(options: AbstractQueryProcessorOptions); + // (undocumented) + protected abortController: AbortController; + // (undocumented) + close(): Promise; + // (undocumented) + get closed(): boolean; + // (undocumented) + protected _closed: boolean; + // (undocumented) + protected constructInitialState(): WatchedQueryState; + // (undocumented) + protected disposeListeners: (() => void) | null; + protected init(signal: AbortSignal): Promise; + // (undocumented) + protected initialized: Promise; + protected iterateAsyncListenersWithError(callback: (listener: Partial>) => Promise | void): Promise; + protected abstract linkQuery(options: LinkQueryOptions): Promise; + // (undocumented) + protected options: AbstractQueryProcessorOptions; + // (undocumented) + protected get reportFetching(): boolean; + protected runWithReporting(callback: () => Promise): Promise; + // (undocumented) + readonly state: WatchedQueryState; + updateSettings(settings: Settings): Promise; + // (undocumented) + protected updateSettingsInternal(settings: Settings, signal: AbortSignal): Promise; + // (undocumented) + protected updateState(update: Partial>): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "AbstractQueryProcessorOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface AbstractQueryProcessorOptions { + // (undocumented) + db: AbstractPowerSyncDatabase; + // (undocumented) + placeholderData: Data; + // (undocumented) + watchOptions: Settings; +} + +// Warning: (ae-internal-missing-underscore) The name "AbstractRemote" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export abstract class AbstractRemote { + constructor(connector: RemoteConnector, logger?: ILogger, options?: Partial); + // (undocumented) + protected buildRequest(path: string): Promise<{ + url: string; + headers: { + 'content-type': string; + Authorization: string; + 'x-user-agent': string; + }; + }>; + // (undocumented) + protected connector: RemoteConnector; + // (undocumented) + protected createSocket(url: string): WebSocket; + // (undocumented) + createTextDecoder(): TextDecoder; + // (undocumented) + protected credentials: PowerSyncCredentials | null; + // (undocumented) + get fetch(): FetchImplementation; + fetchCredentials(): Promise; + fetchStream(options: SyncStreamOptions): Promise>; + protected fetchStreamRaw(options: SyncStreamOptions): Promise<{ + isBson: boolean; + stream: SimpleAsyncIterator; + }>; + // (undocumented) + get(path: string, headers?: Record): Promise; + getCredentials(): Promise; + // (undocumented) + getUserAgent(): string; + invalidateCredentials(): void; + // (undocumented) + protected logger: ILogger; + // (undocumented) + protected options: AbstractRemoteOptions; + // (undocumented) + post(path: string, data: any, headers?: Record): Promise; + prefetchCredentials(): Promise; + socketStreamRaw(options: SocketSyncStreamOptions): Promise>; + // (undocumented) + protected get supportsStreamingBinaryResponses(): boolean; +} + +// Warning: (ae-internal-missing-underscore) The name "AbstractRemoteOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type AbstractRemoteOptions = { + socketUrlTransformer: (url: string) => string; + fetchImplementation: FetchImplementation | FetchImplementationProvider; + fetchOptions?: {}; +}; + +// Warning: (ae-internal-missing-underscore) The name "AbstractStreamingSyncImplementation" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export abstract class AbstractStreamingSyncImplementation extends BaseObserver implements StreamingSyncImplementation { + constructor(options: AbstractStreamingSyncImplementationOptions); + // (undocumented) + protected abortController: AbortController | null; + // (undocumented) + connect(options?: PowerSyncConnectionOptions): Promise; + // (undocumented) + protected crudUpdateListener?: () => void; + // (undocumented) + disconnect(): Promise; + // (undocumented) + dispose(): Promise; + // (undocumented) + getWriteCheckpoint(): Promise; + // (undocumented) + get isConnected(): boolean; + // (undocumented) + get lastSyncedAt(): Date | undefined; + // (undocumented) + protected logger: ILogger; + // (undocumented) + markConnectionMayHaveChanged(): void; + // (undocumented) + abstract obtainLock(lockOptions: LockOptions_2): Promise; + // (undocumented) + protected options: AbstractStreamingSyncImplementationOptions; + // Warning: (ae-forgotten-export) The symbol "RustIterationResult" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected streamingSyncIteration(signal: AbortSignal, options?: PowerSyncConnectionOptions): Promise; + // (undocumented) + protected streamingSyncPromise?: Promise<[void, void]>; + // (undocumented) + syncStatus: SyncStatus; + // (undocumented) + triggerCrudUpload(): void; + // (undocumented) + updateSubscriptions(subscriptions: SubscribedStream[]): void; + // (undocumented) + protected updateSyncStatus(options: SyncStatusOptions): void; + // (undocumented) + waitForReady(): Promise; + // (undocumented) + waitForStatus(status: SyncStatusOptions): Promise; + // (undocumented) + waitUntilStatusMatches(predicate: (status: SyncStatus) => boolean): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "AbstractStreamingSyncImplementationOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface AbstractStreamingSyncImplementationOptions extends RequiredAdditionalConnectionOptions { + // (undocumented) + adapter: BucketStorageAdapter; + identifier?: string; + // (undocumented) + logger?: ILogger; + // (undocumented) + remote: AbstractRemote; + // (undocumented) + subscriptions: SubscribedStream[]; + // (undocumented) + uploadCrud: () => Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "AdditionalConnectionOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface AdditionalConnectionOptions { + crudUploadThrottleMs?: number; + retryDelayMs?: number; +} + +// @public +export class ArrayComparator implements WatchedQueryComparator { + constructor(options: ArrayComparatorOptions); + // (undocumented) + checkEquality(current: ItemType[], previous: ItemType[]): boolean; + // (undocumented) + protected options: ArrayComparatorOptions; +} + +// @public +export type ArrayComparatorOptions = { + compareBy: (item: ItemType) => string; +}; + +// @public +export interface ArrayQueryDefinition { + mapper?: (row: Record) => RowType; + // (undocumented) + parameters?: ReadonlyArray>; + // (undocumented) + sql: string; +} + +// @alpha +export const ATTACHMENT_TABLE = "attachments"; + +// Warning: (ae-internal-missing-underscore) The name "AttachmentContext" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class AttachmentContext { + constructor(db: AbstractPowerSyncDatabase, tableName: string | undefined, logger: ILogger, archivedCacheLimit: number); + archivedCacheLimit: number; + // (undocumented) + clearQueue(): Promise; + db: AbstractPowerSyncDatabase; + // (undocumented) + deleteArchivedAttachments(callback?: (attachments: AttachmentRecord[]) => Promise): Promise; + deleteAttachment(attachmentId: string): Promise; + getActiveAttachments(): Promise; + getArchivedAttachments(): Promise; + // (undocumented) + getAttachment(id: string): Promise; + getAttachments(): Promise; + logger: ILogger; + saveAttachments(attachments: AttachmentRecord[]): Promise; + tableName: string; + upsertAttachment(attachment: AttachmentRecord, context: Transaction): Promise; +} + +// @alpha (undocumented) +export type AttachmentData = ArrayBuffer | string; + +// @alpha +export interface AttachmentErrorHandler { + onDeleteError(attachment: AttachmentRecord, error: unknown): Promise; + onDownloadError(attachment: AttachmentRecord, error: unknown): Promise; + onUploadError(attachment: AttachmentRecord, error: unknown): Promise; +} + +// @alpha +export function attachmentFromSql(row: any): AttachmentRecord; + +// @alpha +export class AttachmentQueue implements AttachmentQueue { + constructor(input: { + db: AbstractPowerSyncDatabase; + remoteStorage: RemoteStorageAdapter; + localStorage: LocalStorageAdapter; + watchAttachments: (onUpdate: (attachment: WatchedAttachmentItem[]) => Promise, signal: AbortSignal) => void; + tableName?: string; + logger?: ILogger; + syncIntervalMs?: number; + syncThrottleDuration?: number; + downloadAttachments?: boolean; + archivedCacheLimit?: number; + errorHandler?: AttachmentErrorHandler; + }); + readonly archivedCacheLimit: number; + // (undocumented) + clearQueue(): Promise; + // (undocumented) + deleteFile(input: { + id: string; + updateHook?: (transaction: Transaction, attachment: AttachmentRecord) => Promise; + }): Promise; + readonly downloadAttachments: boolean; + // (undocumented) + expireCache(): Promise; + generateAttachmentId(): Promise; + readonly localStorage: LocalStorageAdapter; + readonly logger: ILogger; + readonly remoteStorage: RemoteStorageAdapter; + saveFile(input: { + data: AttachmentData; + fileExtension: string; + mediaType?: string; + metaData?: string; + id?: string; + updateHook?: (transaction: Transaction, attachment: AttachmentRecord) => Promise; + }): Promise; + startSync(): Promise; + stopSync(): Promise; + readonly syncIntervalMs: number; + syncStorage(): Promise; + readonly syncThrottleDuration: number; + readonly tableName: string; + verifyAttachments(): Promise; +} + +// @alpha +export interface AttachmentRecord { + // (undocumented) + filename: string; + // (undocumented) + hasSynced?: boolean; + // (undocumented) + id: string; + // (undocumented) + localUri?: string; + // (undocumented) + mediaType?: string; + // (undocumented) + metaData?: string; + // (undocumented) + size?: number; + // (undocumented) + state: AttachmentState; + // (undocumented) + timestamp?: number; +} + +// Warning: (ae-internal-missing-underscore) The name "AttachmentService" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class AttachmentService { + constructor(db: AbstractPowerSyncDatabase, logger: ILogger, tableName?: string, archivedCacheLimit?: number); + watchActiveAttachments(input?: { + throttleMs?: number; + }): DifferentialWatchedQuery; + withContext(callback: (context: AttachmentContext) => Promise): Promise; +} + +// @alpha +export enum AttachmentState { + // (undocumented) + ARCHIVED = 4,// Attachment to be uploaded + // (undocumented) + QUEUED_DELETE = 2,// Attachment to be downloaded + // (undocumented) + QUEUED_DOWNLOAD = 1,// Attachment to be deleted + // (undocumented) + QUEUED_UPLOAD = 0,// Attachment has been synced + // (undocumented) + SYNCED = 3 +} + +// @alpha +export class AttachmentTable extends Table { + constructor(options?: AttachmentTableOptions); +} + +// @alpha (undocumented) +export interface AttachmentTableOptions extends Omit { +} + +// @public (undocumented) +export type BaseColumnType = { + type: ColumnType; +}; + +// @public (undocumented) +export interface BaseConnectionOptions { + appMetadata?: Record; + // @deprecated (undocumented) + clientImplementation?: SyncClientImplementation; + connectionMethod?: SyncStreamConnectionMethod; + fetchStrategy?: FetchStrategy; + includeDefaultStreams?: boolean; + params?: Record; + serializedSchema?: any; +} + +// @public (undocumented) +export type BaseListener = Record any) | undefined>; + +// Warning: (ae-internal-missing-underscore) The name "BaseObserver" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export class BaseObserver implements BaseObserverInterface { + constructor(); + // (undocumented) + dispose(): void; + // (undocumented) + iterateAsyncListeners(cb: (listener: Partial) => Promise): Promise; + // (undocumented) + iterateListeners(cb: (listener: Partial) => any): void; + // (undocumented) + protected listeners: Set>; + registerListener(listener: Partial): () => void; +} + +// @public (undocumented) +export interface BaseObserverInterface { + // (undocumented) + registerListener(listener: Partial): () => void; +} + +// Warning: (ae-incompatible-release-tags) The symbol "BasePowerSyncDatabaseOptions" is marked as @public, but its signature references "AdditionalConnectionOptions" which is marked as @internal +// +// @public (undocumented) +export interface BasePowerSyncDatabaseOptions extends AdditionalConnectionOptions { + // (undocumented) + logger?: ILogger; + // @deprecated (undocumented) + retryDelay?: number; + schema: Schema; +} + +// @alpha +export interface BaseTriggerDiffRecord { + id: string; + operation: DiffTriggerOperation; + operation_id: TOperationId; + timestamp: string; +} + +// @public (undocumented) +export interface BatchedUpdateNotification { + // (undocumented) + groupedUpdates: Record; + // (undocumented) + rawUpdates: UpdateNotification[]; + // (undocumented) + tables: string[]; +} + +// Warning: (ae-internal-missing-underscore) The name "BucketStorageAdapter" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface BucketStorageAdapter extends BaseObserverInterface, Disposable_2 { + control(op: PowerSyncControlCommand, payload: string | Uint8Array | null): Promise; + getClientId(): Promise; + // (undocumented) + getCrudBatch(limit?: number): Promise; + // (undocumented) + getMaxOpId(): string; + // (undocumented) + hasCrud(): Promise; + // (undocumented) + hasMigratedSubkeys(): Promise; + // (undocumented) + init(): Promise; + // (undocumented) + migrateToFixedSubkeys(): Promise; + // (undocumented) + nextCrudItem(): Promise; + // (undocumented) + updateLocalTarget(cb: () => Promise): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "BucketStorageListener" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface BucketStorageListener extends BaseListener { + // (undocumented) + crudUpdate: () => void; +} + +// @public (undocumented) +export class Column { + constructor(options: ColumnOptions); + // (undocumented) + get name(): string; + // (undocumented) + protected options: ColumnOptions; + // (undocumented) + toJSON(): { + name: string; + type: ColumnType | undefined; + }; + // (undocumented) + get type(): ColumnType | undefined; +} + +// @public (undocumented) +export const column: { + text: BaseColumnType; + integer: BaseColumnType; + real: BaseColumnType; +}; + +// @public (undocumented) +export interface ColumnOptions { + // (undocumented) + name: string; + // (undocumented) + type?: ColumnType; +} + +// @public (undocumented) +export type ColumnsType = Record>; + +// @public (undocumented) +export enum ColumnType { + // (undocumented) + INTEGER = "INTEGER", + // (undocumented) + REAL = "REAL", + // (undocumented) + TEXT = "TEXT" +} + +// @public (undocumented) +export interface CompilableQuery { + // (undocumented) + compile(): CompiledQuery; + // (undocumented) + execute(): Promise; +} + +// @public (undocumented) +export function compilableQueryWatch(db: AbstractPowerSyncDatabase, query: CompilableQuery, handler: CompilableQueryWatchHandler, options?: SQLWatchOptions): void; + +// @public (undocumented) +export interface CompilableQueryWatchHandler { + // (undocumented) + onError?: (error: Error) => void; + // (undocumented) + onResult: (results: T[]) => void; +} + +// @public (undocumented) +export interface CompiledQuery { + // (undocumented) + readonly parameters: ReadonlyArray; + // (undocumented) + readonly sql: string; +} + +// Warning: (ae-internal-missing-underscore) The name "ConnectionClosedError" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class ConnectionClosedError extends Error { + constructor(message: string); + // (undocumented) + static MATCHES(input: any): boolean; + // (undocumented) + static NAME: string; +} + +// Warning: (ae-internal-missing-underscore) The name "ConnectionManager" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export class ConnectionManager extends BaseObserver { + constructor(options: ConnectionManagerOptions); + get activeStreams(): { + name: string; + params: Record | null; + }[]; + // (undocumented) + close(): Promise; + // (undocumented) + connect(connector: PowerSyncBackendConnector, options: InternalConnectionOptions): Promise; + protected connectingPromise: Promise | null; + // (undocumented) + protected connectInternal(): Promise; + // (undocumented) + get connectionOptions(): InternalConnectionOptions | null; + // (undocumented) + get connector(): PowerSyncBackendConnector | null; + disconnect(): Promise; + protected disconnectingPromise: Promise | null; + // (undocumented) + protected disconnectInternal(): Promise; + // (undocumented) + get logger(): ILogger; + // (undocumented) + protected options: ConnectionManagerOptions; + // Warning: (ae-forgotten-export) The symbol "StoredConnectionOptions" needs to be exported by the entry point index.d.ts + protected pendingConnectionOptions: StoredConnectionOptions | null; + // (undocumented) + protected performDisconnect(): Promise; + // (undocumented) + stream(adapter: InternalSubscriptionAdapter, name: string, parameters: Record | null): SyncStream; + protected syncDisposer: (() => Promise | void) | null; + // (undocumented) + syncStreamImplementation: StreamingSyncImplementation | null; + protected syncStreamInitPromise: Promise | null; +} + +// Warning: (ae-internal-missing-underscore) The name "ConnectionManagerListener" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface ConnectionManagerListener extends BaseListener { + // (undocumented) + syncStreamCreated: (sync: StreamingSyncImplementation) => void; +} + +// Warning: (ae-internal-missing-underscore) The name "ConnectionManagerOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface ConnectionManagerOptions { + // (undocumented) + createSyncImplementation(connector: PowerSyncBackendConnector, options: CreateSyncImplementationOptions): Promise; + // (undocumented) + logger: ILogger; +} + +// Warning: (ae-internal-missing-underscore) The name "ConnectionManagerSyncImplementationResult" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface ConnectionManagerSyncImplementationResult { + onDispose: () => Promise | void; + // (undocumented) + sync: StreamingSyncImplementation; +} + +// @public (undocumented) +export interface ConnectionPool extends BaseObserverInterface { + // (undocumented) + close: () => void | Promise; + // (undocumented) + name: string; + // (undocumented) + readLock: (fn: (tx: LockContext) => Promise, options?: DBLockOptions) => Promise; + refreshSchema: () => Promise; + // (undocumented) + writeLock: (fn: (tx: LockContext) => Promise, options?: DBLockOptions) => Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "ControlledExecutor" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export class ControlledExecutor { + constructor(task: (param: T) => Promise | void, options?: ControlledExecutorOptions); + // (undocumented) + dispose(): void; + // (undocumented) + schedule(param: T): void; +} + +// Warning: (ae-internal-missing-underscore) The name "ControlledExecutorOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface ControlledExecutorOptions { + throttleEnabled?: boolean; +} + +// @public +export function createBaseLogger(): typeof Logger; + +// Warning: (ae-forgotten-export) The symbol "BaseCreateDiffTriggerOptions" needs to be exported by the entry point index.d.ts +// +// @alpha +export interface CreateDiffTriggerOptions extends BaseCreateDiffTriggerOptions { + destination: string; + setupContext?: LockContext; +} + +// @public +export function createLogger(name: string, options?: CreateLoggerOptions): ILogger; + +// @public (undocumented) +export interface CreateLoggerOptions { + // (undocumented) + logLevel?: ILogLevel; +} + +// Warning: (ae-internal-missing-underscore) The name "CreateSyncImplementationOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export interface CreateSyncImplementationOptions extends AdditionalConnectionOptions { + // (undocumented) + subscriptions: SubscribedStream[]; +} + +// @public +export class CrudBatch { + constructor( + crud: CrudEntry[], + haveMore: boolean, + complete: (writeCheckpoint?: string) => Promise); + complete: (writeCheckpoint?: string) => Promise; + crud: CrudEntry[]; + haveMore: boolean; +} + +// @public +export class CrudEntry { + constructor(clientId: number, op: UpdateType, table: string, id: string, transactionId?: number, opData?: Record, previousValues?: Record, metadata?: string); + clientId: number; + // (undocumented) + equals(entry: CrudEntry): boolean; + // Warning: (ae-forgotten-export) The symbol "CrudEntryJSON" needs to be exported by the entry point index.d.ts + // + // (undocumented) + static fromRow(dbRow: CrudEntryJSON): CrudEntry; + // @deprecated + hashCode(): string; + id: string; + metadata?: string; + op: UpdateType; + opData?: Record; + previousValues?: Record; + table: string; + toComparisonArray(): (string | number | Record | undefined)[]; + // Warning: (ae-forgotten-export) The symbol "CrudEntryOutputJSON" needs to be exported by the entry point index.d.ts + toJSON(): CrudEntryOutputJSON; + transactionId?: number; +} + +// @public (undocumented) +export class CrudTransaction extends CrudBatch { + constructor( + crud: CrudEntry[], + complete: (checkpoint?: string) => Promise, + transactionId?: number | undefined); + complete: (checkpoint?: string) => Promise; + crud: CrudEntry[]; + transactionId?: number | undefined; +} + +// @public (undocumented) +export interface DBAdapter extends ConnectionPool, SqlExecutor, DBGetUtils { + // (undocumented) + readTransaction: (fn: (tx: Transaction) => Promise, options?: DBLockOptions) => Promise; + // (undocumented) + writeTransaction: (fn: (tx: Transaction) => Promise, options?: DBLockOptions) => Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "DBAdapterDefaultMixin" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export function DBAdapterDefaultMixin ConnectionPool>(Base: TBase): { + new (...args: any[]): { + readTransaction(fn: (tx: Transaction) => Promise, options?: DBLockOptions): Promise; + writeTransaction(fn: (tx: Transaction) => Promise, options?: DBLockOptions): Promise; + getAll(sql: string, parameters?: any[]): Promise; + getOptional(sql: string, parameters?: any[]): Promise; + get(sql: string, parameters?: any[]): Promise; + execute(query: string, params?: any[]): Promise; + executeRaw(query: string, params?: any[]): Promise; + executeBatch(query: string, params?: any[][]): Promise; + name: string; + close: () => void | Promise; + readLock: (fn: (tx: LockContext) => Promise, options?: DBLockOptions) => Promise; + writeLock: (fn: (tx: LockContext) => Promise, options?: DBLockOptions) => Promise; + refreshSchema: () => Promise; + registerListener(listener: Partial): () => void; + }; +} & TBase; + +// @public (undocumented) +export interface DBAdapterListener extends BaseListener { + tablesUpdated: (updateNotification: BatchedUpdateNotification | UpdateNotification) => void; +} + +// @public (undocumented) +export interface DBGetUtils { + get(sql: string, parameters?: any[]): Promise; + getAll(sql: string, parameters?: any[]): Promise; + getOptional(sql: string, parameters?: any[]): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "DBGetUtilsDefaultMixin" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export function DBGetUtilsDefaultMixin Omit>(Base: TBase): { + new (...args: any[]): { + getAll(sql: string, parameters?: any[]): Promise; + getOptional(sql: string, parameters?: any[]): Promise; + get(sql: string, parameters?: any[]): Promise; + executeBatch(query: string, params?: any[][]): Promise; + execute: (query: string, params?: any[] | undefined) => Promise; + executeRaw: (query: string, params?: any[] | undefined) => Promise; + }; +} & TBase; + +// @public (undocumented) +export interface DBLockOptions { + // (undocumented) + timeoutMs?: number; +} + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_CRUD_BATCH_LIMIT" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_CRUD_BATCH_LIMIT = 100; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_CRUD_UPLOAD_THROTTLE_MS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_CRUD_UPLOAD_THROTTLE_MS = 1000; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_INDEX_COLUMN_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_INDEX_COLUMN_OPTIONS: Partial; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_INDEX_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_INDEX_OPTIONS: Partial; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_LOCK_TIMEOUT_MS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const DEFAULT_LOCK_TIMEOUT_MS = 120000; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_POWERSYNC_CLOSE_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_POWERSYNC_CLOSE_OPTIONS: PowerSyncCloseOptions; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_POWERSYNC_DB_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_POWERSYNC_DB_OPTIONS: { + retryDelayMs: number; + crudUploadThrottleMs: number; +}; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_REMOTE_LOGGER" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_REMOTE_LOGGER: Logger.ILogger; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_REMOTE_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_REMOTE_OPTIONS: AbstractRemoteOptions; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_RETRY_DELAY_MS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_RETRY_DELAY_MS = 5000; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_ROW_COMPARATOR" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const DEFAULT_ROW_COMPARATOR: DifferentialWatchedQueryComparator; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_STREAM_CONNECTION_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_STREAM_CONNECTION_OPTIONS: RequiredPowerSyncConnectionOptions; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_STREAMING_SYNC_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_STREAMING_SYNC_OPTIONS: { + retryDelayMs: number; + crudUploadThrottleMs: number; +}; + +// @public @deprecated +export const DEFAULT_SYNC_CLIENT_IMPLEMENTATION = SyncClientImplementation.RUST; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_TABLE_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_TABLE_OPTIONS: { + indexes: never[]; + insertOnly: boolean; + localOnly: boolean; + trackPrevious: boolean; + trackMetadata: boolean; + ignoreEmptyUpdates: boolean; +}; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_WATCH_QUERY_OPTIONS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_WATCH_QUERY_OPTIONS: WatchedQueryOptions; + +// Warning: (ae-internal-missing-underscore) The name "DEFAULT_WATCH_THROTTLE_MS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const DEFAULT_WATCH_THROTTLE_MS = 30; + +// Warning: (ae-internal-missing-underscore) The name "DifferentialQueryProcessor" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class DifferentialQueryProcessor extends AbstractQueryProcessor>, DifferentialWatchedQuerySettings> implements DifferentialWatchedQuery { + constructor(options: DifferentialQueryProcessorOptions); + // (undocumented) + protected comparator: DifferentialWatchedQueryComparator; + // Warning: (ae-forgotten-export) The symbol "DataHashMap" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected differentiate(current: RowType[], previousMap: DataHashMap): { + diff: WatchedQueryDifferential; + map: DataHashMap; + hasChanged: boolean; + }; + // (undocumented) + protected linkQuery(options: LinkQueryOptions>): Promise; + // (undocumented) + protected options: DifferentialQueryProcessorOptions; +} + +// Warning: (ae-internal-missing-underscore) The name "DifferentialQueryProcessorOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface DifferentialQueryProcessorOptions extends AbstractQueryProcessorOptions> { + // (undocumented) + rowComparator?: DifferentialWatchedQueryComparator; +} + +// @public (undocumented) +export type DifferentialWatchedQuery = WatchedQuery>, DifferentialWatchedQuerySettings, DifferentialWatchedQueryListener>; + +// @public +export interface DifferentialWatchedQueryComparator { + compareBy: (item: RowType) => string; + keyBy: (item: RowType) => string; +} + +// @public (undocumented) +export interface DifferentialWatchedQueryListener extends WatchedQueryListener>> { + // (undocumented) + onDiff?: (diff: WatchedQueryDifferential) => void | Promise; +} + +// @public +export interface DifferentialWatchedQueryOptions extends WatchedQueryOptions { + placeholderData?: RowType[]; + rowComparator?: DifferentialWatchedQueryComparator; +} + +// @public +export interface DifferentialWatchedQuerySettings extends DifferentialWatchedQueryOptions { + query: WatchCompatibleQuery; +} + +// @alpha +export enum DiffTriggerOperation { + // (undocumented) + DELETE = "DELETE", + // (undocumented) + INSERT = "INSERT", + // (undocumented) + UPDATE = "UPDATE" +} + +// @public (undocumented) +export interface DisconnectAndClearOptions { + clearLocal?: boolean; +} + +// @public (undocumented) +interface Disposable_2 { + // (undocumented) + dispose: () => Promise | void; +} +export { Disposable_2 as Disposable } + +// Warning: (ae-internal-missing-underscore) The name "EMPTY_DIFFERENTIAL" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const EMPTY_DIFFERENTIAL: { + added: never[]; + all: never[]; + removed: never[]; + updated: never[]; + unchanged: never[]; +}; + +// @alpha (undocumented) +export enum EncodingType { + // (undocumented) + Base64 = "base64", + // (undocumented) + UTF8 = "utf8" +} + +// @public (undocumented) +export type ExtractColumnValueType> = T extends BaseColumnType ? R : unknown; + +// @alpha +export type ExtractedTriggerDiffRecord = T & { + [K in keyof Omit, 'id'> as `__${string & K}`]: TriggerDiffRecord[K]; +} & { + __previous_value?: string; +}; + +// Warning: (ae-internal-missing-underscore) The name "extractTableUpdates" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export function extractTableUpdates(update: BatchedUpdateNotification | UpdateNotification): string[]; + +// @public +export const FalsyComparator: WatchedQueryComparator; + +// Warning: (ae-internal-missing-underscore) The name "FetchImplementation" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type FetchImplementation = typeof fetch_2; + +// Warning: (ae-internal-missing-underscore) The name "FetchImplementationProvider" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class FetchImplementationProvider { + // (undocumented) + getFetch(): FetchImplementation; +} + +// @public (undocumented) +export enum FetchStrategy { + Buffered = "buffered", + Sequential = "sequential" +} + +// @public +export class GetAllQuery implements WatchCompatibleQuery { + constructor(options: GetAllQueryOptions); + // (undocumented) + compile(): CompiledQuery; + // (undocumented) + execute(options: { + db: AbstractPowerSyncDatabase; + }): Promise; + // (undocumented) + protected options: GetAllQueryOptions; +} + +// @public +export type GetAllQueryOptions = { + sql: string; + parameters?: ReadonlyArray; + mapper?: (rawRow: Record) => RowType; +}; + +export { GlobalLogger } + +export { ILogger } + +export { ILoggerOpts } + +export { ILogHandler } + +export { ILogLevel } + +// @public (undocumented) +export class Index { + constructor(options: IndexOptions); + // (undocumented) + get columns(): IndexedColumn[]; + // (undocumented) + static createAscending(options: IndexOptions, columnNames: string[]): Index; + // (undocumented) + get name(): string; + // (undocumented) + protected options: IndexOptions; + // (undocumented) + toJSON(table: Table): { + name: string; + columns: { + name: string; + ascending: boolean | undefined; + type: ColumnType; + }[]; + }; +} + +// @public (undocumented) +export interface IndexColumnOptions { + // (undocumented) + ascending?: boolean; + // (undocumented) + name: string; +} + +// @public (undocumented) +export class IndexedColumn { + constructor(options: IndexColumnOptions); + // (undocumented) + get ascending(): boolean | undefined; + // (undocumented) + static createAscending(column: string): IndexedColumn; + // (undocumented) + get name(): string; + // (undocumented) + protected options: IndexColumnOptions; + // (undocumented) + toJSON(table: Table): { + name: string; + ascending: boolean | undefined; + type: ColumnType; + }; +} + +// @public (undocumented) +export interface IndexOptions { + // (undocumented) + columns?: IndexedColumn[]; + // (undocumented) + name: string; +} + +// @public (undocumented) +export type IndexShorthand = Record; + +// Warning: (ae-internal-missing-underscore) The name "InternalConnectionOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface InternalConnectionOptions extends BaseConnectionOptions, AdditionalConnectionOptions { +} + +// Warning: (ae-internal-missing-underscore) The name "InternalSubscriptionAdapter" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface InternalSubscriptionAdapter { + // (undocumented) + firstStatusMatching(predicate: (status: SyncStatus) => any, abort?: AbortSignal): Promise; + // (undocumented) + resolveOfflineSyncStatus(): Promise; + // (undocumented) + rustSubscriptionsCommand(payload: any): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "InvalidSQLCharacters" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const InvalidSQLCharacters: RegExp; + +// Warning: (ae-internal-missing-underscore) The name "isBatchedUpdateNotification" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export function isBatchedUpdateNotification(update: BatchedUpdateNotification | UpdateNotification): update is BatchedUpdateNotification; + +// Warning: (ae-internal-missing-underscore) The name "isDBAdapter" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const isDBAdapter: (test: any) => test is DBAdapter; + +// Warning: (ae-internal-missing-underscore) The name "isPowerSyncDatabaseOptionsWithSettings" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const isPowerSyncDatabaseOptionsWithSettings: (test: any) => test is PowerSyncDatabaseOptionsWithSettings; + +// Warning: (ae-internal-missing-underscore) The name "isSQLOpenFactory" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const isSQLOpenFactory: (test: any) => test is SQLOpenFactory; + +// Warning: (ae-internal-missing-underscore) The name "isSQLOpenOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const isSQLOpenOptions: (test: any) => test is SQLOpenOptions; + +// Warning: (ae-internal-missing-underscore) The name "LinkQueryOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface LinkQueryOptions { + // (undocumented) + abortSignal: AbortSignal; + // (undocumented) + settings: Settings; +} + +// @alpha +export interface LocalStorageAdapter { + clear(): Promise; + deleteFile(filePath: string): Promise; + fileExists(filePath: string): Promise; + getLocalUri(filename: string): string; + initialize(): Promise; + makeDir(path: string): Promise; + readFile(filePath: string): Promise; + rmDir(path: string): Promise; + saveFile(filePath: string, data: AttachmentData): Promise; +} + +// @public (undocumented) +export interface LockContext extends SqlExecutor, DBGetUtils { + connectionType?: 'writer' | 'queryOnly' | 'readOnly'; +} + +// @internal +interface LockOptions_2 { + // (undocumented) + callback: () => Promise; + // (undocumented) + signal?: AbortSignal; + // (undocumented) + type: LockType; +} + +// Warning: (ae-internal-missing-underscore) The name "LockOptions" should be prefixed with an underscore because the declaration is marked as @internal +export { LockOptions_2 as LockOptions } + +// Warning: (ae-internal-missing-underscore) The name "LockType" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export enum LockType { + // (undocumented) + CRUD = "crud", + // (undocumented) + SYNC = "sync" +} + +// @public (undocumented) +export const LogLevel: { + TRACE: Logger.ILogLevel; + DEBUG: Logger.ILogLevel; + INFO: Logger.ILogLevel; + TIME: Logger.ILogLevel; + WARN: Logger.ILogLevel; + ERROR: Logger.ILogLevel; + OFF: Logger.ILogLevel; +}; + +// Warning: (ae-internal-missing-underscore) The name "MAX_AMOUNT_OF_COLUMNS" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export const MAX_AMOUNT_OF_COLUMNS = 1999; + +// Warning: (ae-internal-missing-underscore) The name "MAX_OP_ID" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const MAX_OP_ID = "9223372036854775807"; + +// Warning: (ae-internal-missing-underscore) The name "MEMORY_TRIGGER_CLAIM_MANAGER" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const MEMORY_TRIGGER_CLAIM_MANAGER: TriggerClaimManager; + +// Warning: (ae-forgotten-export) The symbol "MutableDeep" needs to be exported by the entry point index.d.ts +// Warning: (ae-internal-missing-underscore) The name "MutableWatchedQueryState" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export type MutableWatchedQueryState = { + -readonly [P in keyof WatchedQueryState]: MutableDeep[P]>; +}; + +// Warning: (ae-internal-missing-underscore) The name "Mutex" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class Mutex { + // (undocumented) + acquire(abort?: AbortSignal): Promise; + // (undocumented) + runExclusive(fn: () => PromiseLike | T, abort?: AbortSignal): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "OnChangeQueryProcessor" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class OnChangeQueryProcessor extends AbstractQueryProcessor> { + constructor(options: OnChangeQueryProcessorOptions); + // (undocumented) + protected checkEquality(current: Data, previous: Data): boolean; + // (undocumented) + protected linkQuery(options: LinkQueryOptions): Promise; + // (undocumented) + protected options: OnChangeQueryProcessorOptions; +} + +// Warning: (ae-internal-missing-underscore) The name "OnChangeQueryProcessorOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface OnChangeQueryProcessorOptions extends AbstractQueryProcessorOptions> { + // (undocumented) + comparator?: WatchedQueryComparator; +} + +// @public +export type OpId = string; + +// Warning: (ae-internal-missing-underscore) The name "ParsedQuery" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface ParsedQuery { + // (undocumented) + parameters: any[]; + // (undocumented) + sqlStatement: string; +} + +// Warning: (ae-internal-missing-underscore) The name "parseQuery" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export const parseQuery: (query: string | CompilableQuery, parameters: any[]) => ParsedQuery; + +// @public +export type PendingStatement = { + sql: string; + params: PendingStatementParameter[]; +}; + +// @public +export type PendingStatementParameter = 'Id' | { + Column: string; +} | 'Rest'; + +// @public (undocumented) +export interface PowerSyncBackendConnector { + fetchCredentials: () => Promise; + uploadData: (database: AbstractPowerSyncDatabase) => Promise; +} + +// @public (undocumented) +export interface PowerSyncCloseOptions { + disconnect?: boolean; +} + +// Warning: (ae-incompatible-release-tags) The symbol "PowerSyncConnectionOptions" is marked as @public, but its signature references "InternalConnectionOptions" which is marked as @internal +// +// @public +export type PowerSyncConnectionOptions = Omit; + +// Warning: (ae-internal-missing-underscore) The name "PowerSyncControlCommand" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export enum PowerSyncControlCommand { + CONNECTION_STATE = "connection", + // (undocumented) + NOTIFY_CRUD_UPLOAD_COMPLETED = "completed_upload", + // (undocumented) + NOTIFY_TOKEN_REFRESHED = "refreshed_token", + // (undocumented) + PROCESS_BSON_LINE = "line_binary", + // (undocumented) + PROCESS_TEXT_LINE = "line_text", + // (undocumented) + START = "start", + // (undocumented) + STOP = "stop", + // (undocumented) + UPDATE_SUBSCRIPTIONS = "update_subscriptions" +} + +// @public (undocumented) +export interface PowerSyncCredentials { + // (undocumented) + endpoint: string; + // (undocumented) + expiresAt?: Date; + // (undocumented) + token: string; +} + +// @public (undocumented) +export interface PowerSyncDatabaseOptions extends BasePowerSyncDatabaseOptions { + database: DBAdapter | SQLOpenFactory | SQLOpenOptions; +} + +// @public (undocumented) +export interface PowerSyncDatabaseOptionsWithDBAdapter extends BasePowerSyncDatabaseOptions { + // (undocumented) + database: DBAdapter; +} + +// @public (undocumented) +export interface PowerSyncDatabaseOptionsWithOpenFactory extends BasePowerSyncDatabaseOptions { + // (undocumented) + database: SQLOpenFactory; +} + +// @public (undocumented) +export interface PowerSyncDatabaseOptionsWithSettings extends BasePowerSyncDatabaseOptions { + // (undocumented) + database: SQLOpenOptions; +} + +// Warning: (ae-incompatible-release-tags) The symbol "PowerSyncDBListener" is marked as @public, but its signature references "StreamingSyncImplementationListener" which is marked as @internal +// +// @public (undocumented) +export interface PowerSyncDBListener extends StreamingSyncImplementationListener { + // (undocumented) + closed: () => Promise | void; + // (undocumented) + closing: () => Promise | void; + // (undocumented) + initialized: () => void; + // (undocumented) + schemaChanged: (schema: Schema) => void; +} + +// Warning: (ae-internal-missing-underscore) The name "PowerSyncOpenFactoryOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface PowerSyncOpenFactoryOptions extends Partial, SQLOpenOptions { + schema: Schema; +} + +// @public +export interface ProgressWithOperations { + downloadedFraction: number; + downloadedOperations: number; + totalOperations: number; +} + +// Warning: (ae-internal-missing-underscore) The name "PSInternalTable" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export enum PSInternalTable { + // (undocumented) + BUCKETS = "ps_buckets", + // (undocumented) + CRUD = "ps_crud", + // (undocumented) + DATA = "ps_data", + // (undocumented) + OPLOG = "ps_oplog", + // (undocumented) + UNTYPED = "ps_untyped" +} + +// @public (undocumented) +export interface Query { + differentialWatch(options?: DifferentialWatchedQueryOptions): DifferentialWatchedQuery; + watch(options?: StandardWatchedQueryOptions): StandardWatchedQuery>>; +} + +// @public +export type QueryParam = string | number | boolean | null | undefined | bigint | Uint8Array; + +// @public +export type QueryResult = { + insertId?: number; + rowsAffected: number; + rows?: { + _array: any[]; + length: number; + item: (idx: number) => any; + }; +}; + +// Warning: (ae-forgotten-export) The symbol "RawTableTypeWithStatements" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "InferredRawTableType" needs to be exported by the entry point index.d.ts +// +// @public +export type RawTableType = RawTableTypeWithStatements | InferredRawTableType; + +// Warning: (ae-internal-missing-underscore) The name "RemoteConnector" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type RemoteConnector = { + fetchCredentials: () => Promise; + invalidateCredentials?: () => void; +}; + +// @alpha +export interface RemoteStorageAdapter { + deleteFile(attachment: AttachmentRecord): Promise; + downloadFile(attachment: AttachmentRecord): Promise; + uploadFile(fileData: ArrayBuffer, attachment: AttachmentRecord): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "RequiredAdditionalConnectionOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface RequiredAdditionalConnectionOptions extends Required { + // (undocumented) + subscriptions: SubscribedStream[]; +} + +// Warning: (ae-internal-missing-underscore) The name "RequiredPowerSyncConnectionOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type RequiredPowerSyncConnectionOptions = Required; + +// @public (undocumented) +export type RowType> = { + [K in keyof T['columnMap']]: ExtractColumnValueType; +} & { + id: string; +}; + +// @public +export enum RowUpdateType { + // (undocumented) + SQLITE_DELETE = 9, + // (undocumented) + SQLITE_INSERT = 18, + // (undocumented) + SQLITE_UPDATE = 23 +} + +// Warning: (ae-internal-missing-underscore) The name "runOnSchemaChange" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export function runOnSchemaChange(callback: (signal: AbortSignal) => void, db: AbstractPowerSyncDatabase, options?: SQLWatchOptions): void; + +// @alpha +export function sanitizeSQL(strings: TemplateStringsArray, ...values: any[]): string; + +// @alpha +export function sanitizeUUID(uuid: string): string; + +// Warning: (ae-forgotten-export) The symbol "SchemaType" needs to be exported by the entry point index.d.ts +// +// @public +export class Schema { + constructor(tables: Table[] | S); + // (undocumented) + readonly props: S; + // Warning: (ae-forgotten-export) The symbol "RawTable" needs to be exported by the entry point index.d.ts + // + // (undocumented) + readonly rawTables: RawTable[]; + static rawTableToJson(table: RawTable): unknown; + // (undocumented) + readonly tables: Table[]; + // (undocumented) + toJSON(): { + tables: { + local_only: boolean | undefined; + insert_only: boolean | undefined; + include_old: any; + include_old_only_when_changed: boolean; + include_metadata: boolean | undefined; + ignore_empty_update: boolean | undefined; + name: string; + view_name: string; + columns: { + name: string; + type: ColumnType | undefined; + }[]; + indexes: { + name: string; + columns: { + name: string; + ascending: boolean | undefined; + type: ColumnType; + }[]; + }[]; + }[]; + raw_tables: unknown[]; + }; + // (undocumented) + readonly types: SchemaTableType; + // (undocumented) + validate(): void; + withRawTables(tables: Record): void; +} + +// @public (undocumented) +export type SchemaTableType = { + [K in keyof S]: RowType; +}; + +// Warning: (ae-internal-missing-underscore) The name "Semaphore" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class Semaphore { + constructor(elements: Iterable); + requestAll(abort?: AbortSignal): Promise<{ + items: T[]; + release: UnlockFn; + }>; + requestOne(abort?: AbortSignal): Promise<{ + item: T; + release: UnlockFn; + }>; + // (undocumented) + readonly size: number; +} + +// Warning: (ae-internal-missing-underscore) The name "SimpleAsyncIterator" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export type SimpleAsyncIterator = Pick, 'next'>; + +// Warning: (ae-internal-missing-underscore) The name "SocketSyncStreamOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type SocketSyncStreamOptions = SyncStreamOptions & { + fetchStrategy: FetchStrategy; +}; + +// @public (undocumented) +export interface SqlExecutor { + execute: (query: string, params?: any[] | undefined) => Promise; + // (undocumented) + executeBatch: (query: string, params?: any[][]) => Promise; + executeRaw: (query: string, params?: any[] | undefined) => Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "SqliteBucketStorage" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export class SqliteBucketStorage extends BaseObserver implements BucketStorageAdapter { + constructor(db: DBAdapter, logger?: ILogger); + // (undocumented) + control(op: PowerSyncControlCommand, payload: string | Uint8Array | ArrayBuffer | null): Promise; + // (undocumented) + dispose(): Promise; + // (undocumented) + getClientId(): Promise; + // (undocumented) + _getClientId(): Promise; + getCrudBatch(limit?: number): Promise; + // (undocumented) + getMaxOpId(): string; + // (undocumented) + hasCrud(): Promise; + // (undocumented) + hasMigratedSubkeys(): Promise; + // (undocumented) + init(): Promise; + // (undocumented) + migrateToFixedSubkeys(): Promise; + // (undocumented) + nextCrudItem(): Promise; + // (undocumented) + static _subkeyMigrationKey: string; + // (undocumented) + tableNames: Set; + // (undocumented) + updateLocalTarget(cb: () => Promise): Promise; + // (undocumented) + writeTransaction(callback: (tx: Transaction) => Promise, options?: { + timeoutMs: number; + }): Promise; +} + +// @public (undocumented) +export interface SQLOnChangeOptions { + // @deprecated (undocumented) + rawTableNames?: boolean; + // (undocumented) + signal?: AbortSignal; + // (undocumented) + tables?: string[]; + throttleMs?: number; + triggerImmediate?: boolean; +} + +// @public (undocumented) +export interface SQLOpenFactory { + openDB(): DBAdapter; +} + +// @public (undocumented) +export interface SQLOpenOptions { + dbFilename: string; + dbLocation?: string; + debugMode?: boolean; +} + +// @public (undocumented) +export interface SQLWatchOptions extends SQLOnChangeOptions { + comparator?: WatchedQueryComparator; +} + +// @public +export type StandardWatchedQuery = WatchedQuery>; + +// @public +export interface StandardWatchedQueryOptions extends WatchedQueryOptions { + comparator?: WatchedQueryComparator; + placeholderData?: RowType[]; +} + +// Warning: (ae-internal-missing-underscore) The name "StreamingSyncImplementation" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface StreamingSyncImplementation extends BaseObserverInterface, Disposable_2 { + connect(options?: InternalConnectionOptions): Promise; + disconnect(): Promise; + // (undocumented) + getWriteCheckpoint: () => Promise; + // (undocumented) + isConnected: boolean; + // (undocumented) + markConnectionMayHaveChanged(): void; + // (undocumented) + syncStatus: SyncStatus; + // (undocumented) + triggerCrudUpload: () => void; + // (undocumented) + updateSubscriptions(subscriptions: SubscribedStream[]): void; + // (undocumented) + waitForReady(): Promise; + // (undocumented) + waitForStatus(status: SyncStatusOptions): Promise; + // (undocumented) + waitUntilStatusMatches(predicate: (status: SyncStatus) => boolean): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "StreamingSyncImplementationListener" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface StreamingSyncImplementationListener extends BaseListener { + statusChanged?: ((status: SyncStatus) => void) | undefined; + statusUpdated?: ((statusUpdate: SyncStatusOptions) => void) | undefined; +} + +// Warning: (ae-forgotten-export) The symbol "JSONValue" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export type StreamingSyncRequestParameterType = JSONValue; + +// Warning: (ae-internal-missing-underscore) The name "SubscribedStream" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type SubscribedStream = { + name: string; + params: Record | null; +}; + +// @public @deprecated (undocumented) +export enum SyncClientImplementation { + RUST = "rust" +} + +// @public (undocumented) +export type SyncDataFlowStatus = Partial<{ + downloading: boolean; + uploading: boolean; + downloadError?: Error; + uploadError?: Error; + downloadProgress: InternalProgressInformation | null; + internalStreamSubscriptions: CoreStreamSubscription[] | null; +}>; + +// Warning: (ae-internal-missing-underscore) The name "SyncingService" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export class SyncingService { + constructor(attachmentService: AttachmentService, localStorage: LocalStorageAdapter, remoteStorage: RemoteStorageAdapter, logger: ILogger, errorHandler?: AttachmentErrorHandler); + deleteArchivedAttachments(context: AttachmentContext): Promise; + deleteAttachment(attachment: AttachmentRecord, context: AttachmentContext): Promise; + downloadAttachment(attachment: AttachmentRecord): Promise; + processAttachments(attachments: AttachmentRecord[], context: AttachmentContext): Promise; + uploadAttachment(attachment: AttachmentRecord): Promise; +} + +// @public (undocumented) +export interface SyncPriorityStatus { + // (undocumented) + hasSynced?: boolean; + // (undocumented) + lastSyncedAt?: Date; + // (undocumented) + priority: number; +} + +// @public +export class SyncProgress implements ProgressWithOperations { + constructor(internal: InternalProgressInformation); + // (undocumented) + downloadedFraction: number; + // (undocumented) + downloadedOperations: number; + // (undocumented) + protected internal: InternalProgressInformation; + // (undocumented) + totalOperations: number; + untilPriority(priority: number): ProgressWithOperations; +} + +// @public (undocumented) +export class SyncStatus { + // Warning: (ae-incompatible-release-tags) The symbol "__constructor" is marked as @public, but its signature references "SyncStatusOptions" which is marked as @internal + constructor(options: SyncStatusOptions); + // @deprecated + get clientImplementation(): SyncClientImplementation | undefined; + get connected(): boolean; + get connecting(): boolean; + get dataFlowStatus(): SyncDataFlowStatus; + get downloadProgress(): SyncProgress | null; + forStream(stream: SyncStreamDescription): SyncStreamStatus | undefined; + getMessage(): string; + get hasSynced(): boolean | undefined; + isEqual(status: SyncStatus): boolean; + get lastSyncedAt(): Date | undefined; + // Warning: (ae-incompatible-release-tags) The symbol "options" is marked as @public, but its signature references "SyncStatusOptions" which is marked as @internal + // + // (undocumented) + protected options: SyncStatusOptions; + get priorityStatusEntries(): SyncPriorityStatus[]; + protected serializeError(error?: Error): { + name: string; + message: string; + stack: string | undefined; + } | undefined; + statusForPriority(priority: number): SyncPriorityStatus; + get syncStreams(): SyncStreamStatus[] | undefined; + // Warning: (ae-incompatible-release-tags) The symbol "toJSON" is marked as @public, but its signature references "SyncStatusOptions" which is marked as @internal + toJSON(): SyncStatusOptions; +} + +// Warning: (ae-internal-missing-underscore) The name "SyncStatusOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type SyncStatusOptions = { + connected?: boolean; + connecting?: boolean; + dataFlow?: SyncDataFlowStatus; + lastSyncedAt?: Date; + hasSynced?: boolean; + priorityStatusEntries?: SyncPriorityStatus[]; + clientImplementation?: SyncClientImplementation; +}; + +// @public +export interface SyncStream extends SyncStreamDescription { + subscribe(options?: SyncStreamSubscribeOptions): Promise; + unsubscribeAll(): Promise; +} + +// @public (undocumented) +export enum SyncStreamConnectionMethod { + // (undocumented) + HTTP = "http", + // (undocumented) + WEB_SOCKET = "web-socket" +} + +// @public +export interface SyncStreamDescription { + name: string; + parameters: Record | null; +} + +// Warning: (ae-internal-missing-underscore) The name "SyncStreamOptions" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type SyncStreamOptions = { + path: string; + data: unknown; + headers?: Record; + abortSignal: AbortSignal; + fetchOptions?: Request; +}; + +// @public +export interface SyncStreamStatus { + // (undocumented) + priority: number | null; + // (undocumented) + progress: ProgressWithOperations | null; + // (undocumented) + subscription: SyncSubscriptionDescription; +} + +// @public (undocumented) +export interface SyncStreamSubscribeOptions { + priority?: 0 | 1 | 2 | 3; + ttl?: number; +} + +// @public (undocumented) +export interface SyncStreamSubscription extends SyncStreamDescription { + unsubscribe(): void; + waitForFirstSync(abort?: AbortSignal): Promise; +} + +// @public +export interface SyncSubscriptionDescription extends SyncStreamDescription { + // (undocumented) + active: boolean; + expiresAt: Date | null; + hasExplicitSubscription: boolean; + hasSynced: boolean; + isDefault: boolean; + lastSyncedAt: Date | null; +} + +// @public (undocumented) +export class Table { + constructor(columns: Columns, options?: TableV2Options); + // @deprecated + constructor(options: TableOptions); + // (undocumented) + get columnMap(): Columns; + // (undocumented) + get columns(): Column[]; + // (undocumented) + copyWithName(name: string): Table; + // (undocumented) + static createInsertOnly(options: TableOptions): Table; + // (undocumented) + static createLocalOnly(options: TableOptions): Table; + // @deprecated + static createTable(name: string, table: Table): Table; + // (undocumented) + get ignoreEmptyUpdates(): boolean; + // (undocumented) + get indexes(): Index[]; + // (undocumented) + get insertOnly(): boolean; + // (undocumented) + get internalName(): string; + // (undocumented) + get localOnly(): boolean; + // (undocumented) + protected _mappedColumns: Columns; + // (undocumented) + get name(): string; + // (undocumented) + protected options: TableOptions; + // (undocumented) + toJSON(): { + local_only: boolean | undefined; + insert_only: boolean | undefined; + include_old: any; + include_old_only_when_changed: boolean; + include_metadata: boolean | undefined; + ignore_empty_update: boolean | undefined; + name: string; + view_name: string; + columns: { + name: string; + type: ColumnType | undefined; + }[]; + indexes: { + name: string; + columns: { + name: string; + ascending: boolean | undefined; + type: ColumnType; + }[]; + }[]; + }; + // (undocumented) + get trackMetadata(): boolean; + // (undocumented) + get trackPrevious(): boolean | TrackPreviousOptions; + // (undocumented) + validate(): void; + // (undocumented) + get validName(): boolean; + // (undocumented) + get viewName(): string; + // (undocumented) + get viewNameOverride(): string | undefined; +} + +// Warning: (ae-forgotten-export) The symbol "SharedTableOptions" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export interface TableOptions extends SharedTableOptions { + // (undocumented) + columns: Column[]; + // (undocumented) + indexes?: Index[]; + name: string; +} + +// @public +export interface TableOrRawTableOptions { + // (undocumented) + ignoreEmptyUpdates?: boolean; + // (undocumented) + insertOnly?: boolean; + // (undocumented) + localOnly?: boolean; + // (undocumented) + trackMetadata?: boolean; + // (undocumented) + trackPrevious?: boolean | TrackPreviousOptions; +} + +// @public (undocumented) +export interface TableUpdateOperation { + // (undocumented) + opType: RowUpdateType; + // (undocumented) + rowId: number; +} + +// @public @deprecated +export class TableV2 extends Table { +} + +// @public (undocumented) +export interface TableV2Options extends SharedTableOptions { + // (undocumented) + indexes?: IndexShorthand; +} + +// Warning: (ae-internal-missing-underscore) The name "timeoutSignal" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export function timeoutSignal(timeout: number): AbortSignal; + +// @internal (undocumented) +export function timeoutSignal(timeout?: number): AbortSignal | undefined; + +// @alpha +export interface TrackDiffOptions extends BaseCreateDiffTriggerOptions { + onChange: (context: TriggerDiffHandlerContext) => Promise; + throttleMs?: number; +} + +// @public +export interface TrackPreviousOptions { + columns?: string[]; + onlyWhenChanged?: boolean; +} + +// @public (undocumented) +export interface Transaction extends LockContext { + commit: () => Promise; + rollback: () => Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "TriggerClaimManager" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal +export interface TriggerClaimManager { + checkClaim: (identifier: string) => Promise; + obtainClaim: (identifier: string) => Promise<() => Promise>; +} + +// @alpha +export interface TriggerCreationHooks { + beforeCreate?: (context: LockContext) => Promise; +} + +// @alpha +export interface TriggerDiffDeleteRecord extends BaseTriggerDiffRecord { + // (undocumented) + operation: DiffTriggerOperation.DELETE; + value: string; +} + +// @alpha +export interface TriggerDiffHandlerContext extends LockContext { + destinationTable: string; + withDiff: (query: string, params?: ReadonlyArray>, options?: WithDiffOptions) => Promise; + withExtractedDiff: (query: string, params?: ReadonlyArray>) => Promise; +} + +// @alpha +export interface TriggerDiffInsertRecord extends BaseTriggerDiffRecord { + // (undocumented) + operation: DiffTriggerOperation.INSERT; + value: string; +} + +// @alpha +export type TriggerDiffRecord = TriggerDiffUpdateRecord | TriggerDiffInsertRecord | TriggerDiffDeleteRecord; + +// @alpha +export interface TriggerDiffUpdateRecord extends BaseTriggerDiffRecord { + // (undocumented) + operation: DiffTriggerOperation.UPDATE; + previous_value: string; + value: string; +} + +// @alpha (undocumented) +export interface TriggerManager { + createDiffTrigger(options: CreateDiffTriggerOptions): Promise; + trackTableDiff(options: TrackDiffOptions): Promise; +} + +// Warning: (ae-internal-missing-underscore) The name "TriggerManagerConfig" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export interface TriggerManagerConfig { + // (undocumented) + claimManager: TriggerClaimManager; +} + +// Warning: (ae-internal-missing-underscore) The name "TriggerManagerImpl" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export class TriggerManagerImpl implements TriggerManager { + constructor(options: TriggerManagerImplOptions); + cleanupResources(): Promise; + // (undocumented) + protected cleanupTimeout: ReturnType | null; + // (undocumented) + createDiffTrigger(options: CreateDiffTriggerOptions): Promise<(options?: TriggerRemoveCallbackOptions) => Promise>; + // (undocumented) + protected get db(): AbstractPowerSyncDatabase; + // Warning: (ae-forgotten-export) The symbol "TriggerManagerImplConfiguration" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected defaultConfig: TriggerManagerImplConfiguration; + // (undocumented) + dispose(): void; + // (undocumented) + protected generateTriggerName(operation: DiffTriggerOperation, destinationTable: string, triggerId: string): string; + // (undocumented) + protected getUUID(): Promise; + // (undocumented) + protected isDisposed: boolean; + // Warning: (ae-forgotten-export) The symbol "TriggerManagerImplOptions" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected options: TriggerManagerImplOptions; + // (undocumented) + protected removeTriggers(tx: LockContext, triggerIds: string[]): Promise; + // (undocumented) + protected schema: Schema; + // (undocumented) + trackTableDiff(options: TrackDiffOptions): Promise; + updateDefaults(config: TriggerManagerImplConfiguration): void; +} + +// @alpha +export type TriggerRemoveCallback = (options?: TriggerRemoveCallbackOptions) => Promise; + +// @alpha +export interface TriggerRemoveCallbackOptions { + // (undocumented) + context?: LockContext; +} + +// Warning: (ae-internal-missing-underscore) The name "UnlockFn" should be prefixed with an underscore because the declaration is marked as @internal +// +// @internal (undocumented) +export type UnlockFn = () => void; + +// @public +export interface UpdateNotification extends TableUpdateOperation { + // (undocumented) + table: string; +} + +// @public +export enum UpdateType { + DELETE = "DELETE", + PATCH = "PATCH", + PUT = "PUT" +} + +// @public (undocumented) +export class UploadQueueStats { + constructor( + count: number, + size?: number | null); + count: number; + size: number | null; + // (undocumented) + toString(): string; +} + +// @public (undocumented) +export interface WatchCompatibleQuery { + // (undocumented) + compile(): CompiledQuery; + // (undocumented) + execute(options: WatchExecuteOptions): Promise; +} + +// @alpha +export type WatchedAttachmentItem = { + id: string; + filename: string; + fileExtension?: never; + metaData?: string; +} | { + id: string; + fileExtension: string; + filename?: never; + metaData?: string; +}; + +// Warning: (ae-forgotten-export) The symbol "MetaBaseObserverInterface" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export interface WatchedQuery = WatchedQueryListener> extends MetaBaseObserverInterface { + close(): Promise; + // (undocumented) + readonly closed: boolean; + registerListener(listener: Listener): () => void; + readonly state: WatchedQueryState; + updateSettings(options: Settings): Promise; +} + +// @public +export interface WatchedQueryComparator { + // (undocumented) + checkEquality: (current: Data, previous: Data) => boolean; +} + +// @public +export interface WatchedQueryDifferential { + // (undocumented) + readonly added: ReadonlyArray>; + readonly all: ReadonlyArray>; + // (undocumented) + readonly removed: ReadonlyArray>; + // (undocumented) + readonly unchanged: ReadonlyArray>; + // (undocumented) + readonly updated: ReadonlyArray>>; +} + +// @public (undocumented) +export interface WatchedQueryListener extends BaseListener { + // (undocumented) + [WatchedQueryListenerEvent.CLOSED]?: () => void | Promise; + // (undocumented) + [WatchedQueryListenerEvent.ON_DATA]?: (data: Data) => void | Promise; + // (undocumented) + [WatchedQueryListenerEvent.ON_ERROR]?: (error: Error) => void | Promise; + // (undocumented) + [WatchedQueryListenerEvent.ON_STATE_CHANGE]?: (state: WatchedQueryState) => void | Promise; + // (undocumented) + [WatchedQueryListenerEvent.SETTINGS_WILL_UPDATE]?: () => void; +} + +// @public (undocumented) +export enum WatchedQueryListenerEvent { + // (undocumented) + CLOSED = "closed", + // (undocumented) + ON_DATA = "onData", + // (undocumented) + ON_ERROR = "onError", + // (undocumented) + ON_STATE_CHANGE = "onStateChange", + // (undocumented) + SETTINGS_WILL_UPDATE = "settingsWillUpdate" +} + +// @public (undocumented) +export interface WatchedQueryOptions { + reportFetching?: boolean; + throttleMs?: number; + triggerOnTables?: string[]; +} + +// @public +export interface WatchedQueryRowDifferential { + // (undocumented) + readonly current: RowType; + // (undocumented) + readonly previous: RowType; +} + +// @public +export interface WatchedQuerySettings extends WatchedQueryOptions { + // (undocumented) + query: WatchCompatibleQuery; +} + +// @public +export interface WatchedQueryState { + readonly data: Data; + readonly error: Error | null; + readonly isFetching: boolean; + readonly isLoading: boolean; + readonly lastUpdated: Date | null; +} + +// @public +export interface WatchExecuteOptions { + // (undocumented) + db: AbstractPowerSyncDatabase; + // (undocumented) + parameters: any[]; + // (undocumented) + sql: string; +} + +// @public (undocumented) +export interface WatchHandler { + // (undocumented) + onError?: (error: Error) => void; + // (undocumented) + onResult: (results: QueryResult) => void; +} + +// @public (undocumented) +export interface WatchOnChangeEvent { + // (undocumented) + changedTables: string[]; +} + +// @public (undocumented) +export interface WatchOnChangeHandler { + // (undocumented) + onChange: (event: WatchOnChangeEvent) => Promise | void; + // (undocumented) + onError?: (error: Error) => void; +} + +// @alpha +export interface WithDiffOptions { + castOperationIdAsText?: boolean; +} + +// Warnings were encountered during analysis: +// +// src/db/crud/SyncStatus.ts:28:3 - (ae-forgotten-export) The symbol "InternalProgressInformation" needs to be exported by the entry point index.d.ts +// src/db/crud/SyncStatus.ts:29:3 - (ae-forgotten-export) The symbol "CoreStreamSubscription" needs to be exported by the entry point index.d.ts + +// (No @packageDocumentation comment for this package) + +``` diff --git a/packages/common/package.json b/packages/common/package.json index ea56c2150..ff8e33a1d 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -76,6 +76,7 @@ "rollup": "catalog:", "rollup-plugin-dts": "catalog:", "rsocket-core": "1.0.0-alpha.3", - "rsocket-websocket-client": "1.0.0-alpha.3" + "rsocket-websocket-client": "1.0.0-alpha.3", + "@microsoft/api-extractor": "catalog:" } } diff --git a/packages/common/src/attachments/AttachmentErrorHandler.ts b/packages/common/src/attachments/AttachmentErrorHandler.ts index dba02d0d0..d2bb6bf76 100644 --- a/packages/common/src/attachments/AttachmentErrorHandler.ts +++ b/packages/common/src/attachments/AttachmentErrorHandler.ts @@ -10,24 +10,24 @@ import { AttachmentRecord } from './Schema.js'; export interface AttachmentErrorHandler { /** * Handles a download error for a specific attachment. - * @param attachment The attachment that failed to download - * @param error The error encountered during the download + * @param attachment - The attachment that failed to download + * @param error - The error encountered during the download * @returns `true` to retry the operation, `false` to archive the attachment */ onDownloadError(attachment: AttachmentRecord, error: unknown): Promise; /** * Handles an upload error for a specific attachment. - * @param attachment The attachment that failed to upload - * @param error The error encountered during the upload + * @param attachment - The attachment that failed to upload + * @param error - The error encountered during the upload * @returns `true` to retry the operation, `false` to archive the attachment */ onUploadError(attachment: AttachmentRecord, error: unknown): Promise; /** * Handles a delete error for a specific attachment. - * @param attachment The attachment that failed to delete - * @param error The error encountered during the delete + * @param attachment - The attachment that failed to delete + * @param error - The error encountered during the delete * @returns `true` to retry the operation, `false` to archive the attachment */ onDeleteError(attachment: AttachmentRecord, error: unknown): Promise; diff --git a/packages/common/src/attachments/AttachmentQueue.ts b/packages/common/src/attachments/AttachmentQueue.ts index 7ec79dd0e..a3ed4f991 100644 --- a/packages/common/src/attachments/AttachmentQueue.ts +++ b/packages/common/src/attachments/AttachmentQueue.ts @@ -20,7 +20,7 @@ import { AttachmentErrorHandler } from './AttachmentErrorHandler.js'; * @experimental * @alpha This is currently experimental and may change without a major version bump. */ -export class AttachmentQueue { +export class AttachmentQueue implements AttachmentQueue { /** Timer for periodic synchronization operations */ private periodicSyncTimer?: ReturnType; @@ -86,16 +86,6 @@ export class AttachmentQueue { * Creates a new AttachmentQueue instance. * * @param options - Configuration options - * @param options.db - PowerSync database instance - * @param options.remoteStorage - Remote storage adapter for upload/download operations - * @param options.localStorage - Local storage adapter for file persistence - * @param options.watchAttachments - Callback for monitoring attachment changes in your data model - * @param options.tableName - Name of the table to store attachment records. Default: 'ps_attachment_queue' - * @param options.logger - Logger instance. Defaults to db.logger - * @param options.syncIntervalMs - Periodic polling interval in milliseconds for retrying failed uploads/downloads. Default: 30000 - * @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 - * @param options.downloadAttachments - Whether to automatically download remote attachments. Default: true - * @param options.archivedCacheLimit - Maximum archived attachments before cleanup. Default: 100 */ constructor({ db, @@ -110,15 +100,45 @@ export class AttachmentQueue { archivedCacheLimit = 100, errorHandler }: { + /** + * PowerSync database instance + */ db: AbstractPowerSyncDatabase; + /** + * Remote storage adapter for upload/download operations + */ remoteStorage: RemoteStorageAdapter; + /** + * Local storage adapter for file persistence + */ localStorage: LocalStorageAdapter; + /** + * Callback for monitoring attachment changes in your data model + */ watchAttachments: (onUpdate: (attachment: WatchedAttachmentItem[]) => Promise, signal: AbortSignal) => void; + /** + * Name of the table to store attachment records. Default: 'ps_attachment_queue' + */ tableName?: string; + /** + * Logger instance. Defaults to db.logger + */ logger?: ILogger; + /** + * Periodic polling interval in milliseconds for retrying failed uploads/downloads. Default: 30000 + */ syncIntervalMs?: number; + /** + * Throttle duration in milliseconds for the reactive watch query that detects attachment changes. Prevents rapid-fire syncs during bulk changes. Default: 30 + */ syncThrottleDuration?: number; + /** + * Whether to automatically download remote attachments. Default: true + */ downloadAttachments?: boolean; + /** + * Maximum archived attachments before cleanup. Default: 100 + */ archivedCacheLimit?: number; errorHandler?: AttachmentErrorHandler; }) { @@ -326,13 +346,6 @@ export class AttachmentQueue { * Saves a file to local storage and queues it for upload to remote storage. * * @param options - File save options - * @param options.data - The file data as ArrayBuffer, Blob, or base64 string - * @param options.fileExtension - File extension (e.g., 'jpg', 'pdf') - * @param options.mediaType - MIME type of the file (e.g., 'image/jpeg') - * @param options.metaData - Optional metadata to associate with the attachment - * @param options.id - Optional custom ID. If not provided, a UUID will be generated - * @param options.updateHook - Optional callback to execute additional database operations - * within the same transaction as the attachment creation * @returns Promise resolving to the created attachment record */ async saveFile({ @@ -343,11 +356,30 @@ export class AttachmentQueue { id, updateHook }: { + /** + * The file data as ArrayBuffer, Blob, or base64 string + */ data: AttachmentData; + /** + * File extension (e.g., 'jpg', 'pdf') + */ fileExtension: string; + /** + * MIME type of the file (e.g., 'image/jpeg') + */ mediaType?: string; + /** + * Optional metadata to associate with the attachment + */ metaData?: string; + /** + * Optional custom ID. If not provided, a UUID will be generated + */ id?: string; + /** + * Optional callback to execute additional database operations within the same transaction as the attachment + * creation. + */ updateHook?: (transaction: Transaction, attachment: AttachmentRecord) => Promise; }): Promise { const resolvedId = id ?? (await this.generateAttachmentId()); diff --git a/packages/common/src/attachments/LocalStorageAdapter.ts b/packages/common/src/attachments/LocalStorageAdapter.ts index 198e9a8a9..bd7713415 100644 --- a/packages/common/src/attachments/LocalStorageAdapter.ts +++ b/packages/common/src/attachments/LocalStorageAdapter.ts @@ -1,5 +1,11 @@ +/** + * @alpha + */ export type AttachmentData = ArrayBuffer | string; +/** + * @alpha + */ export enum EncodingType { UTF8 = 'utf8', Base64 = 'base64' @@ -15,41 +21,41 @@ export enum EncodingType { export interface LocalStorageAdapter { /** * Saves data to a local file. - * @param filePath Path where the file will be stored - * @param data Data to store (ArrayBuffer, Blob, or string) + * @param filePath - Path where the file will be stored + * @param data - Data to store (ArrayBuffer, Blob, or string) * @returns Number of bytes written */ saveFile(filePath: string, data: AttachmentData): Promise; /** * Retrieves file data as an ArrayBuffer. - * @param filePath Path where the file is stored + * @param filePath - Path where the file is stored * @returns ArrayBuffer containing the file data */ readFile(filePath: string): Promise; /** * Deletes the file at the given path. - * @param filePath Path where the file is stored + * @param filePath - Path where the file is stored */ deleteFile(filePath: string): Promise; /** * Checks if a file exists at the given path. - * @param filePath Path where the file is stored + * @param filePath - Path where the file is stored * @returns True if the file exists, false otherwise */ fileExists(filePath: string): Promise; /** * Creates a directory at the specified path. - * @param path The full path to the directory + * @param path - The full path to the directory */ makeDir(path: string): Promise; /** * Removes a directory at the specified path. - * @param path The full path to the directory + * @param path - The full path to the directory */ rmDir(path: string): Promise; @@ -65,7 +71,7 @@ export interface LocalStorageAdapter { /** * Returns the file path for the provided filename in the storage directory. - * @param filename The filename to get the path for + * @param filename - The filename to get the path for * @returns The full file path */ getLocalUri(filename: string): string; diff --git a/packages/common/src/attachments/RemoteStorageAdapter.ts b/packages/common/src/attachments/RemoteStorageAdapter.ts index bbf6ea70a..dca9e8162 100644 --- a/packages/common/src/attachments/RemoteStorageAdapter.ts +++ b/packages/common/src/attachments/RemoteStorageAdapter.ts @@ -10,21 +10,21 @@ import { AttachmentRecord } from './Schema.js'; export interface RemoteStorageAdapter { /** * Uploads a file to remote storage. - * @param fileData The binary content of the file to upload - * @param attachment The associated attachment metadata + * @param fileData - The binary content of the file to upload + * @param attachment - The associated attachment metadata */ uploadFile(fileData: ArrayBuffer, attachment: AttachmentRecord): Promise; /** * Downloads a file from remote storage. - * @param attachment The attachment describing the file to download + * @param attachment - The attachment describing the file to download * @returns The binary data of the downloaded file */ downloadFile(attachment: AttachmentRecord): Promise; /** * Deletes a file from remote storage. - * @param attachment The attachment describing the file to delete + * @param attachment - The attachment describing the file to delete */ deleteFile(attachment: AttachmentRecord): Promise; } diff --git a/packages/common/src/attachments/Schema.ts b/packages/common/src/attachments/Schema.ts index 6c4750b4e..1714e1d75 100644 --- a/packages/common/src/attachments/Schema.ts +++ b/packages/common/src/attachments/Schema.ts @@ -2,12 +2,17 @@ import { column } from '../db/schema/Column.js'; import { Table } from '../db/schema/Table.js'; import { TableV2Options } from '../db/schema/Table.js'; +/** + * The default name of the local table storing attachment data. + * + * @alpha + */ export const ATTACHMENT_TABLE = 'attachments'; /** * AttachmentRecord represents an attachment in the local database. * - * @experimental + * @alpha */ export interface AttachmentRecord { id: string; @@ -27,7 +32,7 @@ export interface AttachmentRecord { * @param row - The database row object * @returns The corresponding AttachmentRecord * - * @experimental + * @alpha */ export function attachmentFromSql(row: any): AttachmentRecord { return { @@ -46,7 +51,7 @@ export function attachmentFromSql(row: any): AttachmentRecord { /** * AttachmentState represents the current synchronization state of an attachment. * - * @experimental + * @alpha */ export enum AttachmentState { QUEUED_UPLOAD = 0, // Attachment to be uploaded @@ -56,12 +61,15 @@ export enum AttachmentState { ARCHIVED = 4 // Attachment has been orphaned, i.e. the associated record has been deleted } +/** + * @alpha + */ export interface AttachmentTableOptions extends Omit {} /** * AttachmentTable defines the schema for the attachment queue table. * - * @internal + * @alpha */ export class AttachmentTable extends Table { constructor(options?: AttachmentTableOptions) { diff --git a/packages/common/src/attachments/WatchedAttachmentItem.ts b/packages/common/src/attachments/WatchedAttachmentItem.ts index cc0263058..e6888358e 100644 --- a/packages/common/src/attachments/WatchedAttachmentItem.ts +++ b/packages/common/src/attachments/WatchedAttachmentItem.ts @@ -2,7 +2,7 @@ * WatchedAttachmentItem represents an attachment reference in your application's data model. * Use either filename OR fileExtension (not both). * - * @experimental + * @alpha */ export type WatchedAttachmentItem = | { diff --git a/packages/common/src/client/AbstractPowerSyncDatabase.ts b/packages/common/src/client/AbstractPowerSyncDatabase.ts index 4af5a25f1..79309e761 100644 --- a/packages/common/src/client/AbstractPowerSyncDatabase.ts +++ b/packages/common/src/client/AbstractPowerSyncDatabase.ts @@ -48,21 +48,31 @@ import { OnChangeQueryProcessor } from './watched/processors/OnChangeQueryProces import { WatchedQueryComparator } from './watched/processors/comparators.js'; import { Mutex } from '../utils/mutex.js'; +/** + * @public + */ export interface DisconnectAndClearOptions { /** When set to false, data in local-only tables is preserved. */ clearLocal?: boolean; } +/** + * @public + */ export interface BasePowerSyncDatabaseOptions extends AdditionalConnectionOptions { /** Schema used for the local database. */ schema: Schema; /** - * @deprecated Use {@link retryDelayMs} instead as this will be removed in future releases. + * @deprecated Use {@link AdditionalConnectionOptions.retryDelayMs} instead as this will be removed in future + * releases. */ retryDelay?: number; logger?: ILogger; } +/** + * @public + */ export interface PowerSyncDatabaseOptions extends BasePowerSyncDatabaseOptions { /** * Source for a SQLite database connection. @@ -74,23 +84,38 @@ export interface PowerSyncDatabaseOptions extends BasePowerSyncDatabaseOptions { database: DBAdapter | SQLOpenFactory | SQLOpenOptions; } +/** + * @public + */ export interface PowerSyncDatabaseOptionsWithDBAdapter extends BasePowerSyncDatabaseOptions { database: DBAdapter; } + +/** + * @public + */ export interface PowerSyncDatabaseOptionsWithOpenFactory extends BasePowerSyncDatabaseOptions { database: SQLOpenFactory; } + +/** + * @public + */ export interface PowerSyncDatabaseOptionsWithSettings extends BasePowerSyncDatabaseOptions { database: SQLOpenOptions; } +/** + * @public + */ export interface SQLOnChangeOptions { signal?: AbortSignal; tables?: string[]; /** The minimum interval between queries. */ throttleMs?: number; /** - * @deprecated All tables specified in {@link tables} will be watched, including PowerSync tables with prefixes. + * @deprecated All tables specified in {@link SQLOnChangeOptions.tables} will be watched, including PowerSync tables + * with prefixes. * * Allows for watching any SQL table * by not removing PowerSync table name prefixes @@ -102,6 +127,9 @@ export interface SQLOnChangeOptions { triggerImmediate?: boolean; } +/** + * @public + */ export interface SQLWatchOptions extends SQLOnChangeOptions { /** * Optional comparator which will be used to compare the results of the query. @@ -110,20 +138,32 @@ export interface SQLWatchOptions extends SQLOnChangeOptions { comparator?: WatchedQueryComparator; } +/** + * @public + */ export interface WatchOnChangeEvent { changedTables: string[]; } +/** + * @public + */ export interface WatchHandler { onResult: (results: QueryResult) => void; onError?: (error: Error) => void; } +/** + * @public + */ export interface WatchOnChangeHandler { onChange: (event: WatchOnChangeEvent) => Promise | void; onError?: (error: Error) => void; } +/** + * @public + */ export interface PowerSyncDBListener extends StreamingSyncImplementationListener { initialized: () => void; schemaChanged: (schema: Schema) => void; @@ -131,6 +171,9 @@ export interface PowerSyncDBListener extends StreamingSyncImplementationListener closed: () => Promise | void; } +/** + * @public + */ export interface PowerSyncCloseOptions { /** * Disconnect the sync stream client if connected. @@ -146,21 +189,32 @@ const DEFAULT_DISCONNECT_CLEAR_OPTIONS: DisconnectAndClearOptions = { clearLocal: true }; +/** + * @internal + */ export const DEFAULT_POWERSYNC_CLOSE_OPTIONS: PowerSyncCloseOptions = { disconnect: true }; +/** + * @internal + */ export const DEFAULT_POWERSYNC_DB_OPTIONS = { retryDelayMs: 5000, crudUploadThrottleMs: DEFAULT_CRUD_UPLOAD_THROTTLE_MS }; +/** + * @internal + */ export const DEFAULT_CRUD_BATCH_LIMIT = 100; /** * Requesting nested or recursive locks can block the application in some circumstances. * This default lock timeout will act as a failsafe to throw an error if a lock cannot * be obtained. + * + * @internal */ export const DEFAULT_LOCK_TIMEOUT_MS = 120_000; // 2 mins @@ -172,6 +226,9 @@ export const isPowerSyncDatabaseOptionsWithSettings = (test: any): test is Power return typeof test == 'object' && isSQLOpenOptions(test.database); }; +/** + * @public + */ export abstract class AbstractPowerSyncDatabase extends BaseObserver { /** * Returns true if the connection is closed. @@ -369,7 +426,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver { @@ -699,7 +756,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver(sql: string, parameters?: any[]): Promise { @@ -869,8 +926,8 @@ SELECT * FROM crud_entries; /** * Execute a read-only query and return the first result, or null if the ResultSet is empty. * - * @param sql The SQL query to execute - * @param parameters Optional array of parameters to bind to the query + * @param sql - The SQL query to execute + * @param parameters - Optional array of parameters to bind to the query * @returns The first result if found, or null if no results are returned */ async getOptional(sql: string, parameters?: any[]): Promise { @@ -881,8 +938,8 @@ SELECT * FROM crud_entries; /** * Execute a read-only query and return the first result, error if the ResultSet is empty. * - * @param sql The SQL query to execute - * @param parameters Optional array of parameters to bind to the query + * @param sql - The SQL query to execute + * @param parameters - Optional array of parameters to bind to the query * @returns The first result matching the query * @throws Error if no rows are returned */ @@ -893,7 +950,7 @@ SELECT * FROM crud_entries; /** * Takes a read lock, without starting a transaction. - * In most cases, {@link readTransaction} should be used instead. + * In most cases, {@link AbstractPowerSyncDatabase.readTransaction} should be used instead. */ async readLock(callback: (db: LockContext) => Promise) { await this.waitForReady(); @@ -902,7 +959,7 @@ SELECT * FROM crud_entries; /** * Takes a global lock, without starting a transaction. - * In most cases, {@link writeTransaction} should be used instead. + * In most cases, {@link AbstractPowerSyncDatabase.writeTransaction} should be used instead. */ async writeLock(callback: (db: LockContext) => Promise) { await this.waitForReady(); @@ -914,8 +971,8 @@ SELECT * FROM crud_entries; * Read transactions can run concurrently to a write transaction. * Changes from any write transaction are not visible to read transactions started before it. * - * @param callback Function to execute within the transaction - * @param lockTimeout Time in milliseconds to wait for a lock before throwing an error + * @param callback - Function to execute within the transaction + * @param lockTimeout - Time in milliseconds to wait for a lock before throwing an error * @returns The result of the callback * @throws Error if the lock cannot be obtained within the timeout period */ @@ -939,8 +996,8 @@ SELECT * FROM crud_entries; * This takes a global lock - only one write transaction can execute against the database at a time. * Statements within the transaction must be done on the provided {@link Transaction} interface. * - * @param callback Function to execute within the transaction - * @param lockTimeout Time in milliseconds to wait for a lock before throwing an error + * @param callback - Function to execute within the transaction + * @param lockTimeout - Time in milliseconds to wait for a lock before throwing an error * @returns The result of the callback * @throws Error if the lock cannot be obtained within the timeout period */ @@ -960,8 +1017,8 @@ SELECT * FROM crud_entries; } /** - * This version of `watch` uses {@link AsyncGenerator}, for documentation see {@link watchWithAsyncGenerator}. - * Can be overloaded to use a callback handler instead, for documentation see {@link watchWithCallback}. + * This version of `watch` uses `AsyncGenerator`, for documentation see {@link AbstractPowerSyncDatabase.watchWithAsyncGenerator}. + * Can be overloaded to use a callback handler instead, for documentation see {@link AbstractPowerSyncDatabase.watchWithCallback}. * * @example * ```javascript @@ -977,7 +1034,7 @@ SELECT * FROM crud_entries; */ watch(sql: string, parameters?: any[], options?: SQLWatchOptions): AsyncIterable; /** - * See {@link watchWithCallback}. + * See {@link AbstractPowerSyncDatabase.watchWithCallback}. * * @example * ```javascript @@ -1069,15 +1126,15 @@ SELECT * FROM crud_entries; /** * Execute a read query every time the source tables are modified. - * Use {@link SQLWatchOptions.throttleMs} to specify the minimum interval between queries. + * Use {@link SQLOnChangeOptions.throttleMs} to specify the minimum interval between queries. * Source tables are automatically detected using `EXPLAIN QUERY PLAN`. * * Note that the `onChange` callback member of the handler is required. * - * @param sql The SQL query to execute - * @param parameters Optional array of parameters to bind to the query - * @param handler Callbacks for handling results and errors - * @param options Options for configuring watch behavior + * @param sql - The SQL query to execute + * @param parameters - Optional array of parameters to bind to the query + * @param handler - Callbacks for handling results and errors + * @param options - Options for configuring watch behavior */ watchWithCallback(sql: string, parameters?: any[], handler?: WatchHandler, options?: SQLWatchOptions): void { const { onResult, onError = (e: Error) => this.logger.error(e) } = handler ?? {}; @@ -1127,12 +1184,12 @@ SELECT * FROM crud_entries; /** * Execute a read query every time the source tables are modified. - * Use {@link SQLWatchOptions.throttleMs} to specify the minimum interval between queries. + * Use {@link SQLOnChangeOptions.throttleMs} to specify the minimum interval between queries. * Source tables are automatically detected using `EXPLAIN QUERY PLAN`. * - * @param sql The SQL query to execute - * @param parameters Optional array of parameters to bind to the query - * @param options Options for configuring watch behavior + * @param sql - The SQL query to execute + * @param parameters - Optional array of parameters to bind to the query + * @param options - Options for configuring watch behavior * @returns An AsyncIterable that yields QueryResults whenever the data changes */ watchWithAsyncGenerator(sql: string, parameters?: any[], options?: SQLWatchOptions): AsyncIterable { @@ -1159,9 +1216,9 @@ SELECT * FROM crud_entries; * If tables are specified in the options, those are used directly. * Otherwise, analyzes the query using EXPLAIN to determine which tables are accessed. * - * @param sql The SQL query to analyze - * @param parameters Optional parameters for the SQL query - * @param options Optional watch options that may contain explicit table list + * @param sql - The SQL query to analyze + * @param parameters - Optional parameters for the SQL query + * @param options - Optional watch options that may contain explicit table list * @returns Array of table names that the query depends on */ async resolveTables(sql: string, parameters?: any[], options?: SQLWatchOptions): Promise { @@ -1184,8 +1241,8 @@ SELECT * FROM crud_entries; } /** - * This version of `onChange` uses {@link AsyncGenerator}, for documentation see {@link onChangeWithAsyncGenerator}. - * Can be overloaded to use a callback handler instead, for documentation see {@link onChangeWithCallback}. + * This version of `onChange` uses `AsyncGenerator`, for documentation see {@link AbstractPowerSyncDatabase.onChangeWithAsyncGenerator}. + * Can be overloaded to use a callback handler instead, for documentation see {@link AbstractPowerSyncDatabase.onChangeWithCallback}. * * @example * ```javascript @@ -1198,7 +1255,7 @@ SELECT * FROM crud_entries; */ onChange(options?: SQLOnChangeOptions): AsyncIterable; /** - * See {@link onChangeWithCallback}. + * See {@link AbstractPowerSyncDatabase.onChangeWithCallback}. * * @example * ```javascript @@ -1231,13 +1288,13 @@ SELECT * FROM crud_entries; /** * Invoke the provided callback on any changes to any of the specified tables. * - * This is preferred over {@link watchWithCallback} when multiple queries need to be performed + * This is preferred over {@link AbstractPowerSyncDatabase.watchWithCallback} when multiple queries need to be performed * together when data is changed. * * Note that the `onChange` callback member of the handler is required. * - * @param handler Callbacks for handling change events and errors - * @param options Options for configuring watch behavior + * @param handler - Callbacks for handling change events and errors + * @param options - Options for configuring watch behavior * @returns A dispose function to stop watching for changes */ onChangeWithCallback(handler?: WatchOnChangeHandler, options?: SQLOnChangeOptions): () => void { @@ -1293,12 +1350,12 @@ SELECT * FROM crud_entries; /** * Create a Stream of changes to any of the specified tables. * - * This is preferred over {@link watchWithAsyncGenerator} when multiple queries need to be performed - * together when data is changed. + * This is preferred over {@link AbstractPowerSyncDatabase.watchWithAsyncGenerator} when multiple queries need to be + * performed together when data is changed. * * Note: do not declare this as `async *onChange` as it will not work in React Native. * - * @param options Options for configuring watch behavior + * @param options - Options for configuring watch behavior * @returns An AsyncIterable that yields change events whenever the specified tables change */ onChangeWithAsyncGenerator(options?: SQLWatchOptions): AsyncIterable { @@ -1353,9 +1410,6 @@ SELECT * FROM crud_entries; } } - /** - * @ignore - */ private async executeReadOnly(sql: string, params?: any[]) { await this.waitForReady(); return this.database.readLock((tx) => tx.execute(sql, params)); diff --git a/packages/common/src/client/AbstractPowerSyncOpenFactory.ts b/packages/common/src/client/AbstractPowerSyncOpenFactory.ts index 68f6dced5..3aff89681 100644 --- a/packages/common/src/client/AbstractPowerSyncOpenFactory.ts +++ b/packages/common/src/client/AbstractPowerSyncOpenFactory.ts @@ -4,11 +4,17 @@ import { Schema } from '../db/schema/Schema.js'; import { AbstractPowerSyncDatabase, PowerSyncDatabaseOptions } from './AbstractPowerSyncDatabase.js'; import { SQLOpenOptions } from './SQLOpenFactory.js'; +/** + * @internal + */ export interface PowerSyncOpenFactoryOptions extends Partial, SQLOpenOptions { /** Schema used for the local database. */ schema: Schema; } +/** + * @internal + */ export abstract class AbstractPowerSyncDatabaseOpenFactory { constructor(protected options: PowerSyncOpenFactoryOptions) { options.logger = options.logger ?? Logger.get(`PowerSync ${this.options.dbFilename}`); diff --git a/packages/common/src/client/ConnectionManager.ts b/packages/common/src/client/ConnectionManager.ts index 8897e6a80..72e868acc 100644 --- a/packages/common/src/client/ConnectionManager.ts +++ b/packages/common/src/client/ConnectionManager.ts @@ -36,6 +36,9 @@ export interface CreateSyncImplementationOptions extends AdditionalConnectionOpt subscriptions: SubscribedStream[]; } +/** + * @internal + */ export interface InternalSubscriptionAdapter { firstStatusMatching(predicate: (status: SyncStatus) => any, abort?: AbortSignal): Promise; resolveOfflineSyncStatus(): Promise; @@ -243,7 +246,7 @@ export class ConnectionManager extends BaseObserver { /** * Close the sync connection. * - * Use {@link connect} to connect again. + * Use {@link ConnectionManager.connect} to connect again. */ async disconnect() { // This will help abort pending connects diff --git a/packages/common/src/client/Query.ts b/packages/common/src/client/Query.ts index 22ddc3278..ac1adb700 100644 --- a/packages/common/src/client/Query.ts +++ b/packages/common/src/client/Query.ts @@ -8,12 +8,16 @@ import { WatchedQueryOptions } from './watched/WatchedQuery.js'; /** * Query parameters for {@link ArrayQueryDefinition#parameters} + * + * @public */ export type QueryParam = string | number | boolean | null | undefined | bigint | Uint8Array; /** * Options for building a query with {@link AbstractPowerSyncDatabase#query}. * This query will be executed with {@link AbstractPowerSyncDatabase#getAll}. + * + * @public */ export interface ArrayQueryDefinition { sql: string; @@ -33,6 +37,8 @@ export interface ArrayQueryDefinition { /** * Options for {@link Query#watch}. + * + * @public */ export interface StandardWatchedQueryOptions extends WatchedQueryOptions { /** @@ -59,6 +65,9 @@ export interface StandardWatchedQueryOptions extends WatchedQueryOption placeholderData?: RowType[]; } +/** + * @public + */ export interface Query { /** * Creates a {@link WatchedQuery} which watches and emits results of the linked query. diff --git a/packages/common/src/client/SQLOpenFactory.ts b/packages/common/src/client/SQLOpenFactory.ts index 44d5b21e4..b7232cd2b 100644 --- a/packages/common/src/client/SQLOpenFactory.ts +++ b/packages/common/src/client/SQLOpenFactory.ts @@ -1,5 +1,8 @@ import { DBAdapter } from '../db/DBAdapter.js'; +/** + * @public + */ export interface SQLOpenOptions { /** * Filename for the database. @@ -25,6 +28,9 @@ export interface SQLOpenOptions { debugMode?: boolean; } +/** + * @public + */ export interface SQLOpenFactory { /** * Opens a connection adapter to a SQLite DB @@ -34,6 +40,8 @@ export interface SQLOpenFactory { /** * Tests if the input is a {@link SQLOpenOptions} + * + * @internal */ export const isSQLOpenOptions = (test: any): test is SQLOpenOptions => { // typeof null is `object`, but you cannot use the `in` operator on `null. @@ -42,6 +50,8 @@ export const isSQLOpenOptions = (test: any): test is SQLOpenOptions => { /** * Tests if input is a {@link SQLOpenFactory} + * + * @internal */ export const isSQLOpenFactory = (test: any): test is SQLOpenFactory => { return typeof test?.openDB == 'function'; @@ -49,6 +59,8 @@ export const isSQLOpenFactory = (test: any): test is SQLOpenFactory => { /** * Tests if input is a {@link DBAdapter} + * + * @internal */ export const isDBAdapter = (test: any): test is DBAdapter => { return typeof test?.writeTransaction == 'function'; diff --git a/packages/common/src/client/compilableQueryWatch.ts b/packages/common/src/client/compilableQueryWatch.ts index 0b9735675..a7371eddd 100644 --- a/packages/common/src/client/compilableQueryWatch.ts +++ b/packages/common/src/client/compilableQueryWatch.ts @@ -2,11 +2,17 @@ import { CompilableQuery } from './../types/types.js'; import { AbstractPowerSyncDatabase, SQLWatchOptions } from './AbstractPowerSyncDatabase.js'; import { runOnSchemaChange } from './runOnSchemaChange.js'; +/** + * @public + */ export interface CompilableQueryWatchHandler { onResult: (results: T[]) => void; onError?: (error: Error) => void; } +/** + * @public + */ export function compilableQueryWatch( db: AbstractPowerSyncDatabase, query: CompilableQuery, diff --git a/packages/common/src/client/connection/PowerSyncBackendConnector.ts b/packages/common/src/client/connection/PowerSyncBackendConnector.ts index 640a85396..65b462bda 100644 --- a/packages/common/src/client/connection/PowerSyncBackendConnector.ts +++ b/packages/common/src/client/connection/PowerSyncBackendConnector.ts @@ -1,6 +1,9 @@ import { PowerSyncCredentials } from './PowerSyncCredentials.js'; import type { AbstractPowerSyncDatabase } from '../AbstractPowerSyncDatabase.js'; +/** + * @public + */ export interface PowerSyncBackendConnector { /** Allows the PowerSync client to retrieve an authentication token from your backend * which is used to authenticate against the PowerSync service. diff --git a/packages/common/src/client/connection/PowerSyncCredentials.ts b/packages/common/src/client/connection/PowerSyncCredentials.ts index 0b9142d3a..9bf390b11 100644 --- a/packages/common/src/client/connection/PowerSyncCredentials.ts +++ b/packages/common/src/client/connection/PowerSyncCredentials.ts @@ -1,3 +1,6 @@ +/** + * @public + */ export interface PowerSyncCredentials { endpoint: string; token: string; diff --git a/packages/common/src/client/constants.ts b/packages/common/src/client/constants.ts index e5569b9c0..319320da0 100644 --- a/packages/common/src/client/constants.ts +++ b/packages/common/src/client/constants.ts @@ -1 +1,4 @@ +/** + * @internal + */ export const MAX_OP_ID = '9223372036854775807'; diff --git a/packages/common/src/client/runOnSchemaChange.ts b/packages/common/src/client/runOnSchemaChange.ts index 7151849a6..73dd09a18 100644 --- a/packages/common/src/client/runOnSchemaChange.ts +++ b/packages/common/src/client/runOnSchemaChange.ts @@ -1,5 +1,8 @@ import { AbstractPowerSyncDatabase, SQLWatchOptions } from './AbstractPowerSyncDatabase.js'; +/** + * @internal + */ export function runOnSchemaChange( callback: (signal: AbortSignal) => void, db: AbstractPowerSyncDatabase, diff --git a/packages/common/src/client/sync/bucket/BucketStorageAdapter.ts b/packages/common/src/client/sync/bucket/BucketStorageAdapter.ts index d5a499b4d..0b957a58a 100644 --- a/packages/common/src/client/sync/bucket/BucketStorageAdapter.ts +++ b/packages/common/src/client/sync/bucket/BucketStorageAdapter.ts @@ -2,6 +2,9 @@ import { BaseListener, BaseObserverInterface, Disposable } from '../../../utils/ import { CrudBatch } from './CrudBatch.js'; import { CrudEntry } from './CrudEntry.js'; +/** + * @internal + */ export enum PSInternalTable { DATA = 'ps_data', CRUD = 'ps_crud', @@ -10,6 +13,9 @@ export enum PSInternalTable { UNTYPED = 'ps_untyped' } +/** + * @internal + */ export enum PowerSyncControlCommand { PROCESS_TEXT_LINE = 'line_text', PROCESS_BSON_LINE = 'line_binary', @@ -24,10 +30,16 @@ export enum PowerSyncControlCommand { CONNECTION_STATE = 'connection' } +/** + * @internal + */ export interface BucketStorageListener extends BaseListener { crudUpdate: () => void; } +/** + * @internal + */ export interface BucketStorageAdapter extends BaseObserverInterface, Disposable { init(): Promise; diff --git a/packages/common/src/client/sync/bucket/CrudBatch.ts b/packages/common/src/client/sync/bucket/CrudBatch.ts index 7f2e93674..eb543b50e 100644 --- a/packages/common/src/client/sync/bucket/CrudBatch.ts +++ b/packages/common/src/client/sync/bucket/CrudBatch.ts @@ -2,6 +2,8 @@ import { CrudEntry } from './CrudEntry.js'; /** * A batch of client-side changes. + * + * @public */ export class CrudBatch { constructor( diff --git a/packages/common/src/client/sync/bucket/CrudEntry.ts b/packages/common/src/client/sync/bucket/CrudEntry.ts index 54af6e6b7..82686e540 100644 --- a/packages/common/src/client/sync/bucket/CrudEntry.ts +++ b/packages/common/src/client/sync/bucket/CrudEntry.ts @@ -2,11 +2,15 @@ * 64-bit unsigned integer stored as a string in base-10. * * Not sortable as a string. + * + * @public */ export type OpId = string; /** * Type of local change. + * + * @public */ export enum UpdateType { /** Insert or replace existing row. All non-null columns are included in the data. Generated by INSERT statements. */ @@ -17,6 +21,9 @@ export enum UpdateType { DELETE = 'DELETE' } +/** + * @internal + */ export type CrudEntryJSON = { id: string; data: string; @@ -48,6 +55,8 @@ type CrudEntryOutputJSON = { /** * A single client-side change. + * + * @public */ export class CrudEntry { /** diff --git a/packages/common/src/client/sync/bucket/CrudTransaction.ts b/packages/common/src/client/sync/bucket/CrudTransaction.ts index e31629c3a..ca095b4ae 100644 --- a/packages/common/src/client/sync/bucket/CrudTransaction.ts +++ b/packages/common/src/client/sync/bucket/CrudTransaction.ts @@ -1,6 +1,9 @@ import { CrudBatch } from './CrudBatch.js'; import { CrudEntry } from './CrudEntry.js'; +/** + * @public + */ export class CrudTransaction extends CrudBatch { constructor( /** diff --git a/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts b/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts index a146a9930..948ad8dd3 100644 --- a/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts +++ b/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts @@ -11,6 +11,9 @@ import { import { CrudBatch } from './CrudBatch.js'; import { CrudEntry, CrudEntryJSON } from './CrudEntry.js'; +/** + * @internal + */ export class SqliteBucketStorage extends BaseObserver implements BucketStorageAdapter { public tableNames: Set; private updateListener: () => void; diff --git a/packages/common/src/client/sync/stream/AbstractRemote.ts b/packages/common/src/client/sync/stream/AbstractRemote.ts index 44c358b2a..0b688e24d 100644 --- a/packages/common/src/client/sync/stream/AbstractRemote.ts +++ b/packages/common/src/client/sync/stream/AbstractRemote.ts @@ -14,6 +14,9 @@ import { import { EventIterator } from 'event-iterator'; import type { Queue } from 'event-iterator/lib/event-iterator.js'; +/** + * @internal + */ export type RemoteConnector = { fetchCredentials: () => Promise; invalidateCredentials?: () => void; @@ -36,8 +39,14 @@ const SOCKET_TIMEOUT_MS = 30_000; // significantly. Therefore this is longer than the socket timeout. const KEEP_ALIVE_LIFETIME_MS = 90_000; +/** + * @internal + */ export const DEFAULT_REMOTE_LOGGER = Logger.get('PowerSyncRemote'); +/** + * @internal + */ export type SyncStreamOptions = { path: string; data: unknown; @@ -46,6 +55,9 @@ export type SyncStreamOptions = { fetchOptions?: Request; }; +/** + * @public + */ export enum FetchStrategy { /** * Queues multiple sync events before processing, reducing round-trips. @@ -60,10 +72,16 @@ export enum FetchStrategy { Sequential = 'sequential' } +/** + * @internal + */ export type SocketSyncStreamOptions = SyncStreamOptions & { fetchStrategy: FetchStrategy; }; +/** + * @internal + */ export type FetchImplementation = typeof fetch; /** @@ -71,6 +89,8 @@ export type FetchImplementation = typeof fetch; * The class wrapper is used to distinguish the fetchImplementation * option in [AbstractRemoteOptions] from the general fetch method * which is typeof "function" + * + * @internal */ export class FetchImplementationProvider { getFetch(): FetchImplementation { @@ -78,6 +98,9 @@ export class FetchImplementationProvider { } } +/** + * @internal + */ export type AbstractRemoteOptions = { /** * Transforms the PowerSync base URL which might contain @@ -102,6 +125,9 @@ export type AbstractRemoteOptions = { fetchOptions?: {}; }; +/** + * @internal + */ export const DEFAULT_REMOTE_OPTIONS: AbstractRemoteOptions = { socketUrlTransformer: (url) => url.replace(/^https?:\/\//, function (match) { @@ -111,6 +137,9 @@ export const DEFAULT_REMOTE_OPTIONS: AbstractRemoteOptions = { fetchOptions: {} }; +/** + * @internal + */ export abstract class AbstractRemote { protected credentials: PowerSyncCredentials | null = null; protected options: AbstractRemoteOptions; @@ -589,7 +618,7 @@ export abstract class AbstractRemote { * Posts a `/sync/stream` request. * * Depending on the `Content-Type` of the response, this returns strings for sync lines or encoded BSON documents as - * {@link Uint8Array}s. + * `Uint8Array`s. */ async fetchStream(options: SyncStreamOptions): Promise> { const { isBson, stream } = await this.fetchStreamRaw(options); diff --git a/packages/common/src/client/sync/stream/AbstractStreamingSyncImplementation.ts b/packages/common/src/client/sync/stream/AbstractStreamingSyncImplementation.ts index 14c0e2a0f..1c5d23415 100644 --- a/packages/common/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +++ b/packages/common/src/client/sync/stream/AbstractStreamingSyncImplementation.ts @@ -22,16 +22,26 @@ import { import { asyncNotifier } from '../../../utils/async.js'; import { StreamingSyncRequestParameterType } from './JsonValue.js'; +/** + * @internal + */ export enum LockType { CRUD = 'crud', SYNC = 'sync' } +/** + * @public + */ export enum SyncStreamConnectionMethod { HTTP = 'http', WEB_SOCKET = 'web-socket' } +/** + * @deprecated Deprecated since {@link SyncClientImplementation.RUST} is the only option. + * @public + */ export enum SyncClientImplementation { /** * This implementation offloads the sync line decoding and handling into the PowerSync @@ -42,8 +52,8 @@ export enum SyncClientImplementation { * ## Compatibility warning * * The Rust sync client stores sync data in a format that is slightly different than the one used - * by the old JavaScript client. When adopting the {@link RUST} client on existing databases, the PowerSync SDK will - * migrate the format automatically. + * by the old JavaScript client. When adopting the {@link SyncClientImplementation.RUST} client on existing databases, + * the PowerSync SDK will migrate the format automatically. * * SDK versions supporting both the JavaScript and the Rust client support both formats with the JavaScript client * implementaiton. However, downgrading to an SDK version that only supports the JavaScript client would not be @@ -54,11 +64,16 @@ export enum SyncClientImplementation { /** * The default {@link SyncClientImplementation} to use, {@link SyncClientImplementation.RUST}. + * + * @deprecated Deprecated since {@link SyncClientImplementation.RUST} is the only option. + * @public */ export const DEFAULT_SYNC_CLIENT_IMPLEMENTATION = SyncClientImplementation.RUST; /** * Abstract Lock to be implemented by various JS environments + * + * @internal */ export interface LockOptions { callback: () => Promise; @@ -66,6 +81,9 @@ export interface LockOptions { signal?: AbortSignal; } +/** + * @internal + */ export interface AbstractStreamingSyncImplementationOptions extends RequiredAdditionalConnectionOptions { adapter: BucketStorageAdapter; subscriptions: SubscribedStream[]; @@ -79,6 +97,9 @@ export interface AbstractStreamingSyncImplementationOptions extends RequiredAddi remote: AbstractRemote; } +/** + * @internal + */ export interface StreamingSyncImplementationListener extends BaseListener { /** * Triggered whenever a status update has been attempted to be made or @@ -94,12 +115,17 @@ export interface StreamingSyncImplementationListener extends BaseListener { /** * Configurable options to be used when connecting to the PowerSync * backend instance. + * + * @public */ export type PowerSyncConnectionOptions = Omit; +/** + * @internal + */ export interface InternalConnectionOptions extends BaseConnectionOptions, AdditionalConnectionOptions {} -/** @internal */ +/** @public */ export interface BaseConnectionOptions { /** * A set of metadata to be included in service logs. @@ -161,6 +187,9 @@ export interface RequiredAdditionalConnectionOptions extends Required, Disposable { /** @@ -183,16 +212,31 @@ export interface StreamingSyncImplementation markConnectionMayHaveChanged(): void; } +/** + * @internal + */ export const DEFAULT_CRUD_UPLOAD_THROTTLE_MS = 1000; +/** + * @internal + */ export const DEFAULT_RETRY_DELAY_MS = 5000; +/** + * @internal + */ export const DEFAULT_STREAMING_SYNC_OPTIONS = { retryDelayMs: DEFAULT_RETRY_DELAY_MS, crudUploadThrottleMs: DEFAULT_CRUD_UPLOAD_THROTTLE_MS }; +/** + * @internal + */ export type RequiredPowerSyncConnectionOptions = Required; +/** + * @internal + */ export const DEFAULT_STREAM_CONNECTION_OPTIONS: RequiredPowerSyncConnectionOptions = { appMetadata: {}, connectionMethod: SyncStreamConnectionMethod.WEB_SOCKET, @@ -203,11 +247,17 @@ export const DEFAULT_STREAM_CONNECTION_OPTIONS: RequiredPowerSyncConnectionOptio includeDefaultStreams: true }; +/** + * @internal + */ export type SubscribedStream = { name: string; params: Record | null; }; +/** + * @internal + */ export abstract class AbstractStreamingSyncImplementation extends BaseObserver implements StreamingSyncImplementation @@ -570,7 +620,7 @@ The next upload iteration will be delayed.`); } /** - * Older versions of the JS SDK used to encode subkeys as JSON in {@link OplogEntry.toJSON}. + * Older versions of the JS SDK used to encode subkeys as JSON in `OplogEntry.toJSON`. * Because subkeys are always strings, this leads to quotes being added around them in `ps_oplog`. * While this is not a problem as long as it's done consistently, it causes issues when a database * created by the JS SDK is used with other SDKs, or (more likely) when the new Rust sync client @@ -580,7 +630,7 @@ The next upload iteration will be delayed.`); * migration is only triggered when necessary (for now). The function returns whether the new format * should be used, so that the JS SDK is able to write to updated databases. * - * @param requireFixedKeyFormat Whether we require the new format or also support the old one. + * @param requireFixedKeyFormat - Whether we require the new format or also support the old one. * The Rust client requires the new subkey format. * @returns Whether the database is now using the new, fixed subkey format. */ diff --git a/packages/common/src/client/sync/stream/JsonValue.ts b/packages/common/src/client/sync/stream/JsonValue.ts index 546c6e232..b3cb74e41 100644 --- a/packages/common/src/client/sync/stream/JsonValue.ts +++ b/packages/common/src/client/sync/stream/JsonValue.ts @@ -5,4 +5,7 @@ interface JSONObject { } type JSONArray = JSONValue[]; +/** + * @public + */ export type StreamingSyncRequestParameterType = JSONValue; diff --git a/packages/common/src/client/sync/sync-streams.ts b/packages/common/src/client/sync/sync-streams.ts index 29ba20226..173a02dc3 100644 --- a/packages/common/src/client/sync/sync-streams.ts +++ b/packages/common/src/client/sync/sync-streams.ts @@ -1,7 +1,8 @@ -import { AbstractPowerSyncDatabase } from '../AbstractPowerSyncDatabase.js'; - /** - * A description of a sync stream, consisting of its {@link name} and the {@link parameters} used when subscribing. + * A description of a sync stream, consisting of its {@link SyncStreamDescription.name} and the + * {@link SyncStreamDescription.parameters} used when subscribing. + * + * @public */ export interface SyncStreamDescription { /** @@ -21,6 +22,8 @@ export interface SyncStreamDescription { * Information about a subscribed sync stream. * * This includes the {@link SyncStreamDescription}, along with information about the current sync status. + * + * @public */ export interface SyncSubscriptionDescription extends SyncStreamDescription { active: boolean; @@ -28,15 +31,17 @@ export interface SyncSubscriptionDescription extends SyncStreamDescription { * Whether this stream subscription is included by default, regardless of whether the stream has explicitly been * subscribed to or not. * - * It's possible for both {@link isDefault} and {@link hasExplicitSubscription} to be true at the same time - this - * happens when a default stream was subscribed explicitly. + * It's possible for both {@link SyncSubscriptionDescription.isDefault} and + * {@link SyncSubscriptionDescription.hasExplicitSubscription} to be true at the same time - this happens when a + * default stream was subscribed explicitly. */ isDefault: boolean; /** * Whether this stream has been subscribed to explicitly. * - * It's possible for both {@link isDefault} and {@link hasExplicitSubscription} to be true at the same time - this - * happens when a default stream was subscribed explicitly. + * It's possible for both {@link SyncSubscriptionDescription.isDefault} and + * {@link SyncSubscriptionDescription.hasExplicitSubscription} to be true at the same time - this happens when a + * default stream was subscribed explicitly. */ hasExplicitSubscription: boolean; /** @@ -49,11 +54,14 @@ export interface SyncSubscriptionDescription extends SyncStreamDescription { */ hasSynced: boolean; /** - * If {@link hasSynced} is true, the last time data from this stream has been synced. + * If {@link SyncSubscriptionDescription.hasSynced} is true, the last time data from this stream has been synced. */ lastSyncedAt: Date | null; } +/** + * @public + */ export interface SyncStreamSubscribeOptions { /** * A "time to live" for this stream subscription, in seconds. @@ -74,6 +82,8 @@ export interface SyncStreamSubscribeOptions { * A handle to a {@link SyncStreamDescription} that allows subscribing to the stream. * * To obtain an instance of {@link SyncStream}, call {@link AbstractPowerSyncDatabase.syncStream}. + * + * @public */ export interface SyncStream extends SyncStreamDescription { /** @@ -82,7 +92,7 @@ export interface SyncStream extends SyncStreamDescription { * You should keep a reference to the returned {@link SyncStreamSubscription} object along as you need data for that * stream. As soon as {@link SyncStreamSubscription.unsubscribe} is called for all subscriptions on this stream * (including subscriptions created on other tabs), the {@link SyncStreamSubscribeOptions.ttl} starts ticking and will - * eventually evict the stream (unless {@link subscribe} is called again). + * eventually evict the stream (unless {@link SyncStream.subscribe} is called again). */ subscribe(options?: SyncStreamSubscribeOptions): Promise; @@ -94,6 +104,9 @@ export interface SyncStream extends SyncStreamDescription { unsubscribeAll(): Promise; } +/** + * @public + */ export interface SyncStreamSubscription extends SyncStreamDescription { /** * A promise that resolves once data from in this sync stream has been synced and applied. diff --git a/packages/common/src/client/triggers/TriggerManager.ts b/packages/common/src/client/triggers/TriggerManager.ts index b5eaa671d..b70234169 100644 --- a/packages/common/src/client/triggers/TriggerManager.ts +++ b/packages/common/src/client/triggers/TriggerManager.ts @@ -2,7 +2,8 @@ import { LockContext } from '../../db/DBAdapter.js'; /** * SQLite operations to track changes for with {@link TriggerManager} - * @experimental + * + * @experimental @alpha */ export enum DiffTriggerOperation { INSERT = 'INSERT', @@ -11,7 +12,7 @@ export enum DiffTriggerOperation { } /** - * @experimental + * @experimental @alpha * Diffs created by {@link TriggerManager#createDiffTrigger} are stored in a temporary table. * This is the base record structure for all diff records. * @@ -42,7 +43,7 @@ export interface BaseTriggerDiffRecord = | TriggerDiffDeleteRecord; /** - * @experimental + * @experimental @alpha * Querying the DIFF table directly with {@link TriggerDiffHandlerContext#withExtractedDiff} will return records * with the tracked columns extracted from the JSON value. * This type represents the structure of such records. @@ -150,7 +151,7 @@ export type ExtractedTriggerDiffRecord Promise; /** - * @experimental + * @experimental @alpha * Options for {@link TriggerDiffHandlerContext#withDiff}. */ export interface WithDiffOptions { @@ -260,7 +261,7 @@ export interface WithDiffOptions { } /** - * @experimental + * @experimental @alpha * Context for the `onChange` handler provided to {@link TriggerManager#trackTableDiff}. */ export interface TriggerDiffHandlerContext extends LockContext { @@ -317,7 +318,7 @@ export interface TriggerDiffHandlerContext extends LockContext { * Allows querying the database with access to the table containing diff records. * The diff table is accessible via the `DIFF` accessor. * - * This is similar to {@link withDiff} but extracts the row columns from the tracked JSON value. The diff operation + * This is similar to {@link TriggerDiffHandlerContext#withDiff} but extracts the row columns from the tracked JSON value. The diff operation * data is aliased as `__` columns to avoid column conflicts. * * For {@link DiffTriggerOperation#DELETE} operations the previous_value columns are extracted for convenience. @@ -349,7 +350,7 @@ export interface TriggerDiffHandlerContext extends LockContext { } /** - * @experimental + * @experimental @alpha * Options for tracking changes to a table with {@link TriggerManager#trackTableDiff}. */ export interface TrackDiffOptions extends BaseCreateDiffTriggerOptions { @@ -361,14 +362,14 @@ export interface TrackDiffOptions extends BaseCreateDiffTriggerOptions { onChange: (context: TriggerDiffHandlerContext) => Promise; /** - * The minimum interval, in milliseconds, between {@link onChange} invocations. + * The minimum interval, in milliseconds, between {@link TrackDiffOptions.onChange} invocations. * @default {@link DEFAULT_WATCH_THROTTLE_MS} */ throttleMs?: number; } /** - * @experimental + * @experimental @alpha */ export interface TriggerManager { /** @@ -417,7 +418,7 @@ export interface TriggerManager { /** * @experimental * Tracks changes for a table. Triggering a provided handler on changes. - * Uses {@link createDiffTrigger} internally to create a temporary destination table. + * Uses {@link TriggerManager.createDiffTrigger} internally to create a temporary destination table. * * @returns A callback to cleanup the trigger and stop tracking changes. * diff --git a/packages/common/src/client/triggers/sanitizeSQL.ts b/packages/common/src/client/triggers/sanitizeSQL.ts index 9990508a3..09777d398 100644 --- a/packages/common/src/client/triggers/sanitizeSQL.ts +++ b/packages/common/src/client/triggers/sanitizeSQL.ts @@ -1,9 +1,12 @@ function sanitizeString(input: string): string { return `'${input.replace(/'/g, "''")}'`; } + /** * Helper function for sanitizing UUID input strings. * Typically used with {@link sanitizeSQL}. + * + * @alpha */ export function sanitizeUUID(uuid: string): string { 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; @@ -41,6 +44,8 @@ export function sanitizeUUID(uuid: string): string { * // Incorrect: * sanitizeSQL`New.id = '${myID}'` // Produces double quotes: New.id = ''O''Reilly'' * ``` + * + * @alpha */ export function sanitizeSQL(strings: TemplateStringsArray, ...values: any[]): string { let result = ''; diff --git a/packages/common/src/client/watched/GetAllQuery.ts b/packages/common/src/client/watched/GetAllQuery.ts index 0d9ff7331..9d0b8fb6b 100644 --- a/packages/common/src/client/watched/GetAllQuery.ts +++ b/packages/common/src/client/watched/GetAllQuery.ts @@ -4,6 +4,8 @@ import { WatchCompatibleQuery } from './WatchedQuery.js'; /** * Options for {@link GetAllQuery}. + * + * @public */ export type GetAllQueryOptions = { sql: string; @@ -23,6 +25,8 @@ export type GetAllQueryOptions = { /** * Performs a {@link AbstractPowerSyncDatabase.getAll} operation for a watched query. + * + * @public */ export class GetAllQuery implements WatchCompatibleQuery { constructor(protected options: GetAllQueryOptions) {} diff --git a/packages/common/src/client/watched/WatchedQuery.ts b/packages/common/src/client/watched/WatchedQuery.ts index 08d38986c..472d62d3b 100644 --- a/packages/common/src/client/watched/WatchedQuery.ts +++ b/packages/common/src/client/watched/WatchedQuery.ts @@ -5,6 +5,8 @@ import { AbstractPowerSyncDatabase } from '../AbstractPowerSyncDatabase.js'; /** * State for {@link WatchedQuery} instances. + * + * @public */ export interface WatchedQueryState { /** @@ -33,6 +35,8 @@ export interface WatchedQueryState { /** * Options provided to the `execute` method of a {@link WatchCompatibleQuery}. + * + * @public */ export interface WatchExecuteOptions { sql: string; @@ -41,14 +45,17 @@ export interface WatchExecuteOptions { } /** - * Similar to {@link CompatibleQuery}, except the `execute` method - * does not enforce an Array result type. + * + * @public */ export interface WatchCompatibleQuery { execute(options: WatchExecuteOptions): Promise; compile(): CompiledQuery; } +/** + * @public + */ export interface WatchedQueryOptions { /** The minimum interval between queries. */ throttleMs?: number; @@ -67,6 +74,9 @@ export interface WatchedQueryOptions { triggerOnTables?: string[]; } +/** + * @public + */ export enum WatchedQueryListenerEvent { ON_DATA = 'onData', ON_ERROR = 'onError', @@ -75,6 +85,9 @@ export enum WatchedQueryListenerEvent { CLOSED = 'closed' } +/** + * @public + */ export interface WatchedQueryListener extends BaseListener { [WatchedQueryListenerEvent.ON_DATA]?: (data: Data) => void | Promise; [WatchedQueryListenerEvent.ON_ERROR]?: (error: Error) => void | Promise; @@ -83,13 +96,22 @@ export interface WatchedQueryListener extends BaseListener { [WatchedQueryListenerEvent.CLOSED]?: () => void | Promise; } +/** + * @internal + */ export const DEFAULT_WATCH_THROTTLE_MS = 30; +/** + * @internal + */ export const DEFAULT_WATCH_QUERY_OPTIONS: WatchedQueryOptions = { throttleMs: DEFAULT_WATCH_THROTTLE_MS, reportFetching: true }; +/** + * @public + */ export interface WatchedQuery< Data = unknown, Settings extends WatchedQueryOptions = WatchedQueryOptions, diff --git a/packages/common/src/client/watched/processors/AbstractQueryProcessor.ts b/packages/common/src/client/watched/processors/AbstractQueryProcessor.ts index 18c165ee5..97cb625e2 100644 --- a/packages/common/src/client/watched/processors/AbstractQueryProcessor.ts +++ b/packages/common/src/client/watched/processors/AbstractQueryProcessor.ts @@ -127,7 +127,7 @@ export abstract class AbstractQueryProcessor< /** * This method is used to link a query to the subscribers of this listener class. - * This method should perform actual query watching and report results via {@link updateState} method. + * This method should perform actual query watching and report results via {@link AbstractQueryProcessor.updateState} method. */ protected abstract linkQuery(options: LinkQueryOptions): Promise; diff --git a/packages/common/src/client/watched/processors/DifferentialQueryProcessor.ts b/packages/common/src/client/watched/processors/DifferentialQueryProcessor.ts index 51fdd3e8b..ac68cd90a 100644 --- a/packages/common/src/client/watched/processors/DifferentialQueryProcessor.ts +++ b/packages/common/src/client/watched/processors/DifferentialQueryProcessor.ts @@ -9,6 +9,8 @@ import { /** * Represents an updated row in a differential watched query. * It contains both the current and previous state of the row. + * + * @public */ export interface WatchedQueryRowDifferential { readonly current: RowType; @@ -18,6 +20,8 @@ export interface WatchedQueryRowDifferential { /** * Represents the result of a watched query that has been diffed. * {@link DifferentialWatchedQueryState#diff} is of the {@link WatchedQueryDifferential} form. + * + * @public */ export interface WatchedQueryDifferential { readonly added: ReadonlyArray>; @@ -43,6 +47,8 @@ export interface WatchedQueryDifferential { /** * Row comparator for differentially watched queries which keys and compares items in the result set. + * + * @public */ export interface DifferentialWatchedQueryComparator { /** @@ -57,6 +63,8 @@ export interface DifferentialWatchedQueryComparator { /** * Options for building a differential watched query with the {@link Query} builder. + * + * @public */ export interface DifferentialWatchedQueryOptions extends WatchedQueryOptions { /** @@ -75,6 +83,8 @@ export interface DifferentialWatchedQueryOptions extends WatchedQueryOp /** * Settings for differential incremental watched queries using. + * + * @public */ export interface DifferentialWatchedQuerySettings extends DifferentialWatchedQueryOptions { /** @@ -83,12 +93,18 @@ export interface DifferentialWatchedQuerySettings extends DifferentialW query: WatchCompatibleQuery; } +/** + * @public + */ export interface DifferentialWatchedQueryListener extends WatchedQueryListener< ReadonlyArray> > { onDiff?: (diff: WatchedQueryDifferential) => void | Promise; } +/** + * @public + */ export type DifferentialWatchedQuery = WatchedQuery< ReadonlyArray>, DifferentialWatchedQuerySettings, @@ -110,6 +126,8 @@ type DataHashMap = Map; /** * An empty differential result set. * This is used as the initial state for differential incrementally watched queries. + * + * @internal */ export const EMPTY_DIFFERENTIAL = { added: [], @@ -123,6 +141,8 @@ export const EMPTY_DIFFERENTIAL = { * Default implementation of the {@link DifferentialWatchedQueryComparator} for watched queries. * It keys items by their `id` property if available, alternatively it uses JSON stringification * of the entire item for the key and comparison. + * + * @internal */ export const DEFAULT_ROW_COMPARATOR: DifferentialWatchedQueryComparator = { keyBy: (item) => { diff --git a/packages/common/src/client/watched/processors/OnChangeQueryProcessor.ts b/packages/common/src/client/watched/processors/OnChangeQueryProcessor.ts index 85e9725ff..5e6f2b500 100644 --- a/packages/common/src/client/watched/processors/OnChangeQueryProcessor.ts +++ b/packages/common/src/client/watched/processors/OnChangeQueryProcessor.ts @@ -9,6 +9,8 @@ import { WatchedQueryComparator } from './comparators.js'; /** * Settings for {@link WatchedQuery} instances created via {@link Query#watch}. + * + * @public */ export interface WatchedQuerySettings extends WatchedQueryOptions { query: WatchCompatibleQuery; @@ -16,6 +18,8 @@ export interface WatchedQuerySettings extends WatchedQueryOptions { /** * {@link WatchedQuery} returned from {@link Query#watch}. + * + * @public */ export type StandardWatchedQuery = WatchedQuery>; diff --git a/packages/common/src/client/watched/processors/comparators.ts b/packages/common/src/client/watched/processors/comparators.ts index 038129d08..8979d8b55 100644 --- a/packages/common/src/client/watched/processors/comparators.ts +++ b/packages/common/src/client/watched/processors/comparators.ts @@ -2,6 +2,8 @@ * A basic comparator for incrementally watched queries. This performs a single comparison which * determines if the result set has changed. The {@link WatchedQuery} will only emit the new result * if a change has been detected. + * + * @public */ export interface WatchedQueryComparator { checkEquality: (current: Data, previous: Data) => boolean; @@ -9,6 +11,8 @@ export interface WatchedQueryComparator { /** * Options for {@link ArrayComparator} + * + * @public */ export type ArrayComparatorOptions = { /** @@ -20,6 +24,8 @@ export type ArrayComparatorOptions = { /** * An efficient comparator for {@link WatchedQuery} created with {@link Query#watch}. This has the ability to determine if a query * result has changes without necessarily processing all items in the result. + * + * @public */ export class ArrayComparator implements WatchedQueryComparator { constructor(protected options: ArrayComparatorOptions) {} @@ -51,6 +57,8 @@ export class ArrayComparator implements WatchedQueryComparator = { checkEquality: () => false // Default comparator that always returns false diff --git a/packages/common/src/db/ConnectionClosedError.ts b/packages/common/src/db/ConnectionClosedError.ts index 067ce9965..363fc7b3d 100644 --- a/packages/common/src/db/ConnectionClosedError.ts +++ b/packages/common/src/db/ConnectionClosedError.ts @@ -2,6 +2,8 @@ * Thrown when an underlying database connection is closed. * This is particularly relevant when worker connections are marked as closed while * operations are still in progress. + * + * @internal */ export class ConnectionClosedError extends Error { static NAME = 'ConnectionClosedError'; diff --git a/packages/common/src/db/DBAdapter.ts b/packages/common/src/db/DBAdapter.ts index 6567a4c0c..a37894c57 100644 --- a/packages/common/src/db/DBAdapter.ts +++ b/packages/common/src/db/DBAdapter.ts @@ -12,6 +12,8 @@ import { BaseListener, BaseObserverInterface } from '../utils/BaseObserver.js'; /** * Object returned by SQL Query executions. + * + * @public */ export type QueryResult = { /** Represents the auto-generated row id if applicable. */ @@ -31,13 +33,16 @@ export type QueryResult = { /** The length of the dataset */ length: number; /** A convenience function to acess the index based the row object - * @param idx the row index + * @param idx - the row index * @returns the row structure identified by column names */ item: (idx: number) => any; }; }; +/** + * @public + */ export interface DBGetUtils { /** Execute a read-only query and return results. */ getAll(sql: string, parameters?: any[]): Promise; @@ -47,6 +52,9 @@ export interface DBGetUtils { get(sql: string, parameters?: any[]): Promise; } +/** + * @public + */ export interface SqlExecutor { /** Execute a single write statement. */ execute: (query: string, params?: any[] | undefined) => Promise; @@ -58,17 +66,24 @@ export interface SqlExecutor { * * Example result: * - * ```[ [ '1', 'list 1', '33', 'Post content', '1' ] ]``` + * ```JavaScript + * [ [ '1', 'list 1', '33', 'Post content', '1' ] ] + * ``` * * Where as `execute`'s `rows._array` would have been: * - * ```[ { id: '33', name: 'list 1', content: 'Post content', list_id: '1' } ]``` + * ```JavaScript + * [ { id: '33', name: 'list 1', content: 'Post content', list_id: '1' } ] + * ``` */ executeRaw: (query: string, params?: any[] | undefined) => Promise; executeBatch: (query: string, params?: any[][]) => Promise; } +/** + * @public + */ export interface LockContext extends SqlExecutor, DBGetUtils { /** * How the connection has been opened. @@ -82,7 +97,9 @@ export interface LockContext extends SqlExecutor, DBGetUtils { } /** - * Implements {@link DBGetUtils} on a {@link SqlRunner}. + * Implements {@link DBGetUtils} on a {@link SqlExecutor}. + * + * @internal */ export function DBGetUtilsDefaultMixin Omit>( Base: TBase @@ -132,6 +149,9 @@ export function DBGetUtilsDefaultMixin Omi }; } +/** + * @public + */ export interface Transaction extends LockContext { /** Commit multiple changes to the local DB using the Transaction context. */ commit: () => Promise; @@ -141,29 +161,44 @@ export interface Transaction extends LockContext { /** * Update table operation numbers from SQLite + * + * @public */ export enum RowUpdateType { SQLITE_INSERT = 18, SQLITE_DELETE = 9, SQLITE_UPDATE = 23 } + +/** + * @public + */ export interface TableUpdateOperation { opType: RowUpdateType; rowId: number; } /** * Notification of an update to one or more tables, for the purpose of realtime change notifications. + * + * @public */ export interface UpdateNotification extends TableUpdateOperation { table: string; } +/** + * @public + */ export interface BatchedUpdateNotification { + // TODO (breaking change): Normalize to only including tables rawUpdates: UpdateNotification[]; tables: string[]; groupedUpdates: Record; } +/** + * @public + */ export interface DBAdapterListener extends BaseListener { /** * Listener for table updates. @@ -174,10 +209,16 @@ export interface DBAdapterListener extends BaseListener { tablesUpdated: (updateNotification: BatchedUpdateNotification | UpdateNotification) => void; } +/** + * @public + */ export interface DBLockOptions { timeoutMs?: number; } +/** + * @public + */ export interface ConnectionPool extends BaseObserverInterface { name: string; close: () => void | Promise; @@ -190,6 +231,9 @@ export interface ConnectionPool extends BaseObserverInterface refreshSchema: () => Promise; } +/** + * @public + */ export interface DBAdapter extends ConnectionPool, SqlExecutor, DBGetUtils { readTransaction: (fn: (tx: Transaction) => Promise, options?: DBLockOptions) => Promise; writeTransaction: (fn: (tx: Transaction) => Promise, options?: DBLockOptions) => Promise; @@ -198,6 +242,8 @@ export interface DBAdapter extends ConnectionPool, SqlExecutor, DBGetUtils { /** * A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool#readLock} and * {@link ConnectionPool#writeLock}. + * + * @internal */ export function DBAdapterDefaultMixin ConnectionPool>(Base: TBase) { return class extends Base implements DBAdapter { @@ -299,12 +345,18 @@ class TransactionImplementation extends DBGetUtilsDefaultMixin(BaseTransaction) } } +/** + * @internal + */ export function isBatchedUpdateNotification( update: BatchedUpdateNotification | UpdateNotification ): update is BatchedUpdateNotification { return 'tables' in update; } +/** + * @internal + */ export function extractTableUpdates(update: BatchedUpdateNotification | UpdateNotification) { return isBatchedUpdateNotification(update) ? update.tables : [update.table]; } diff --git a/packages/common/src/db/crud/SyncProgress.ts b/packages/common/src/db/crud/SyncProgress.ts index 5d55bf0b7..2d266a534 100644 --- a/packages/common/src/db/crud/SyncProgress.ts +++ b/packages/common/src/db/crud/SyncProgress.ts @@ -15,6 +15,8 @@ export const FULL_SYNC_PRIORITY = 2147483647; * * To obtain these values, use {@link SyncProgress}, available through * {@link SyncStatus#downloadProgress}. + * + * @public */ export interface ProgressWithOperations { /** @@ -28,7 +30,8 @@ export interface ProgressWithOperations { downloadedOperations: number; /** - * Relative progress, as {@link downloadedOperations} of {@link totalOperations}. + * Relative progress, as {@link ProgressWithOperations.downloadedOperations} of + * {@link ProgressWithOperations.totalOperations}. * * This will be a number between `0.0` and `1.0` (inclusive). * @@ -58,6 +61,8 @@ export interface ProgressWithOperations { * * Also note that data is downloaded in bulk, which means that individual counters are unlikely * to be updated one-by-one. + * + * @public */ export class SyncProgress implements ProgressWithOperations { totalOperations: number; diff --git a/packages/common/src/db/crud/SyncStatus.ts b/packages/common/src/db/crud/SyncStatus.ts index 45c13bbdd..69eab5657 100644 --- a/packages/common/src/db/crud/SyncStatus.ts +++ b/packages/common/src/db/crud/SyncStatus.ts @@ -3,6 +3,9 @@ import { CoreStreamSubscription } from '../../client/sync/stream/core-instructio import { SyncStreamDescription, SyncSubscriptionDescription } from '../../client/sync/sync-streams.js'; import { InternalProgressInformation, ProgressWithOperations, SyncProgress } from './SyncProgress.js'; +/** + * @public + */ export type SyncDataFlowStatus = Partial<{ downloading: boolean; uploading: boolean; @@ -26,12 +29,18 @@ export type SyncDataFlowStatus = Partial<{ internalStreamSubscriptions: CoreStreamSubscription[] | null; }>; +/** + * @public + */ export interface SyncPriorityStatus { priority: number; lastSyncedAt?: Date; hasSynced?: boolean; } +/** + * @internal + */ export type SyncStatusOptions = { connected?: boolean; connecting?: boolean; @@ -45,6 +54,9 @@ export type SyncStatusOptions = { clientImplementation?: SyncClientImplementation; }; +/** + * @public + */ export class SyncStatus { constructor(protected options: SyncStatusOptions) {} @@ -53,6 +65,8 @@ export class SyncStatus { * implementation). * * This information is only available after a connection has been requested. + * + * @deprecated This always returns the Rust client (the only option). */ get clientImplementation() { return this.options.clientImplementation; @@ -61,18 +75,18 @@ export class SyncStatus { /** * Indicates if the client is currently connected to the PowerSync service. * - * @returns {boolean} True if connected, false otherwise. Defaults to false if not specified. + * @returns True if connected, false otherwise. Defaults to false if not specified. */ - get connected() { + get connected(): boolean { return this.options.connected ?? false; } /** * Indicates if the client is in the process of establishing a connection to the PowerSync service. * - * @returns {boolean} True if connecting, false otherwise. Defaults to false if not specified. + * @returns True if connecting, false otherwise. Defaults to false if not specified. */ - get connecting() { + get connecting(): boolean { return this.options.connecting ?? false; } @@ -80,31 +94,31 @@ export class SyncStatus { * Time that a last sync has fully completed, if any. * This timestamp is reset to null after a restart of the PowerSync service. * - * @returns {Date | undefined} The timestamp of the last successful sync, or undefined if no sync has completed. + * @returns The timestamp of the last successful sync, or undefined if no sync has completed. */ - get lastSyncedAt() { + get lastSyncedAt(): Date | undefined { return this.options.lastSyncedAt; } /** * Indicates whether there has been at least one full sync completed since initialization. * - * @returns {boolean | undefined} True if at least one sync has completed, false if no sync has completed, + * @returns True if at least one sync has completed, false if no sync has completed, * or undefined when the state is still being loaded from the database. */ - get hasSynced() { + get hasSynced(): boolean | undefined { return this.options.hasSynced; } /** * Provides the current data flow status regarding uploads and downloads. * - * @returns {SyncDataFlowStatus} An object containing: + * @returns An object containing: * - downloading: True if actively downloading changes (only when connected is also true) * - uploading: True if actively uploading changes - * Defaults to {downloading: false, uploading: false} if not specified. + * Defaults to `{downloading: false, uploading: false}` if not specified. */ - get dataFlowStatus() { + get dataFlowStatus(): SyncDataFlowStatus { return ( this.options.dataFlow ?? { /** @@ -131,7 +145,7 @@ export class SyncStatus { } /** - * If the `stream` appears in {@link syncStreams}, returns the current status for that stream. + * If the `stream` appears in {@link SyncStatus.syncStreams}, returns the current status for that stream. */ forStream(stream: SyncStreamDescription): SyncStreamStatus | undefined { const asJson = JSON.stringify(stream.parameters); @@ -145,10 +159,10 @@ export class SyncStatus { /** * Provides sync status information for all bucket priorities, sorted by priority (highest first). * - * @returns {SyncPriorityStatus[]} An array of status entries for different sync priority levels, + * @returns An array of status entries for different sync priority levels, * sorted with highest priorities (lower numbers) first. */ - get priorityStatusEntries() { + get priorityStatusEntries(): SyncPriorityStatus[] { return (this.options.priorityStatusEntries ?? []).slice().sort(SyncStatus.comparePriorities); } @@ -183,8 +197,8 @@ export class SyncStatus { * For example, if PowerSync just finished synchronizing buckets in priority level 3, calling this method * with a priority of 1 may return information for priority level 3. * - * @param {number} priority The bucket priority for which the status should be reported - * @returns {SyncPriorityStatus} Status information for the requested priority level or the next higher level with available status + * @param priority - The bucket priority for which the status should be reported + * @returns Status information for the requested priority level or the next higher level with available status */ statusForPriority(priority: number): SyncPriorityStatus { // priorityStatusEntries are sorted by ascending priorities (so higher numbers to lower numbers). @@ -207,8 +221,8 @@ export class SyncStatus { * Compares this SyncStatus instance with another to determine if they are equal. * Equality is determined by comparing the serialized JSON representation of both instances. * - * @param {SyncStatus} status The SyncStatus instance to compare against - * @returns {boolean} True if the instances are considered equal, false otherwise + * @param status - The SyncStatus instance to compare against + * @returns True if the instances are considered equal, false otherwise */ isEqual(status: SyncStatus) { /** @@ -233,7 +247,7 @@ export class SyncStatus { * Creates a human-readable string representation of the current sync status. * Includes information about connection state, sync completion, and data flow. * - * @returns {string} A string representation of the sync status + * @returns A string representation of the sync status */ getMessage() { const dataFlow = this.dataFlowStatus; @@ -243,7 +257,7 @@ export class SyncStatus { /** * Serializes the SyncStatus instance to a plain object. * - * @returns {SyncStatusOptions} A plain object representation of the sync status + * @returns A plain object representation of the sync status */ toJSON(): SyncStatusOptions { return { @@ -282,6 +296,8 @@ export class SyncStatus { /** * Information about a sync stream subscription. + * + * @public */ export interface SyncStreamStatus { progress: ProgressWithOperations | null; diff --git a/packages/common/src/db/crud/UploadQueueStatus.ts b/packages/common/src/db/crud/UploadQueueStatus.ts index b440f0393..6b93596f3 100644 --- a/packages/common/src/db/crud/UploadQueueStatus.ts +++ b/packages/common/src/db/crud/UploadQueueStatus.ts @@ -1,3 +1,6 @@ +/** + * @public + */ export class UploadQueueStats { constructor( /** diff --git a/packages/common/src/db/schema/Column.ts b/packages/common/src/db/schema/Column.ts index 0690b8198..cb41a6ec4 100644 --- a/packages/common/src/db/schema/Column.ts +++ b/packages/common/src/db/schema/Column.ts @@ -1,21 +1,36 @@ -// https://www.sqlite.org/lang_expr.html#castexpr +/** + * @see https://www.sqlite.org/lang_expr.html#castexpr + * @public + */ export enum ColumnType { TEXT = 'TEXT', INTEGER = 'INTEGER', REAL = 'REAL' } +/** + * @public + */ export interface ColumnOptions { name: string; type?: ColumnType; } +/** + * @public + */ export type BaseColumnType = { type: ColumnType; }; +/** + * @public + */ export type ColumnsType = Record>; +/** + * @public + */ export type ExtractColumnValueType> = T extends BaseColumnType ? R : unknown; const text: BaseColumnType = { @@ -30,16 +45,26 @@ const real: BaseColumnType = { type: ColumnType.REAL }; -// powersync-sqlite-core limits the number of column per table to 1999, due to internal SQLite limits. -// In earlier versions this was limited to 63. +/** + * powersync-sqlite-core limits the number of column per table to 1999, due to internal SQLite limits. + * In earlier versions this was limited to 63. + * + * @internal + */ export const MAX_AMOUNT_OF_COLUMNS = 1999; +/** + * @public + */ export const column = { text, integer, real }; +/** + * @public + */ export class Column { constructor(protected options: ColumnOptions) {} diff --git a/packages/common/src/db/schema/Index.ts b/packages/common/src/db/schema/Index.ts index 2fb070115..8b662182a 100644 --- a/packages/common/src/db/schema/Index.ts +++ b/packages/common/src/db/schema/Index.ts @@ -1,15 +1,24 @@ import { IndexedColumn } from './IndexedColumn.js'; import { Table } from './Table.js'; +/** + * @public + */ export interface IndexOptions { name: string; columns?: IndexedColumn[]; } +/** + * @internal + */ export const DEFAULT_INDEX_OPTIONS: Partial = { columns: [] }; +/** + * @public + */ export class Index { static createAscending(options: IndexOptions, columnNames: string[]) { return new Index({ diff --git a/packages/common/src/db/schema/IndexedColumn.ts b/packages/common/src/db/schema/IndexedColumn.ts index 8e385d30f..1203dddfd 100644 --- a/packages/common/src/db/schema/IndexedColumn.ts +++ b/packages/common/src/db/schema/IndexedColumn.ts @@ -1,15 +1,24 @@ import { ColumnType } from './Column.js'; import { Table } from './Table.js'; +/** + * @public + */ export interface IndexColumnOptions { name: string; ascending?: boolean; } +/** + * @internal + */ export const DEFAULT_INDEX_COLUMN_OPTIONS: Partial = { ascending: true }; +/** + * @public + */ export class IndexedColumn { protected options: IndexColumnOptions; diff --git a/packages/common/src/db/schema/RawTable.ts b/packages/common/src/db/schema/RawTable.ts index c95ed3e7b..6850dc0fb 100644 --- a/packages/common/src/db/schema/RawTable.ts +++ b/packages/common/src/db/schema/RawTable.ts @@ -7,8 +7,10 @@ import { TableOrRawTableOptions } from './Table.js'; * using client-side table and column constraints. * * To collect local writes to raw tables with PowerSync, custom triggers are required. See - * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on + * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables} for details and an example on * using raw tables. + * + * @public */ export type RawTableType = RawTableTypeWithStatements | InferredRawTableType; @@ -70,11 +72,15 @@ interface InferredRawTableType extends Partial { * `{Column: 'name'}`. * The `"Rest"` parameter gets resolved to a JSON object covering all values from the synced row that haven't been * covered by a `Column` parameter. + * + * @public */ export type PendingStatementParameter = 'Id' | { Column: string } | 'Rest'; /** * A statement that the PowerSync client should use to insert or delete data into a table managed by the user. + * + * @public */ export type PendingStatement = { sql: string; diff --git a/packages/common/src/db/schema/Schema.ts b/packages/common/src/db/schema/Schema.ts index 2308519bb..91173b0c7 100644 --- a/packages/common/src/db/schema/Schema.ts +++ b/packages/common/src/db/schema/Schema.ts @@ -4,12 +4,17 @@ import { RowType, Table } from './Table.js'; type SchemaType = Record>; +/** + * @public + */ export type SchemaTableType = { [K in keyof S]: RowType; }; /** * A schema is a collection of tables. It is used to define the structure of a database. + * + * @public */ export class Schema { /* @@ -52,7 +57,7 @@ export class Schema { * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow * using client-side table and column constraints. * - * @param tables An object of (table name, raw table definition) entries. + * @param tables - An object of (table name, raw table definition) entries. */ withRawTables(tables: Record) { for (const [name, rawTableDefinition] of Object.entries(tables)) { diff --git a/packages/common/src/db/schema/Table.ts b/packages/common/src/db/schema/Table.ts index ab336af89..422b0c5f0 100644 --- a/packages/common/src/db/schema/Table.ts +++ b/packages/common/src/db/schema/Table.ts @@ -13,6 +13,8 @@ import { TableV2 } from './TableV2.js'; /** * Options that apply both to JSON-based tables and raw tables. + * + * @public */ export interface TableOrRawTableOptions { localOnly?: boolean; @@ -30,6 +32,8 @@ interface SharedTableOptions extends TableOrRawTableOptions { * * Including old values may be helpful for some backend connector implementations, which is * why it can be enabled on per-table or per-columm basis. + * + * @public */ export interface TrackPreviousOptions { /** When defined, a list of column names for which old values should be tracked. */ @@ -38,6 +42,9 @@ export interface TrackPreviousOptions { onlyWhenChanged?: boolean; } +/** + * @public + */ export interface TableOptions extends SharedTableOptions { /** * The synced table name, matching sync rules @@ -47,18 +54,31 @@ export interface TableOptions extends SharedTableOptions { indexes?: Index[]; } +/** + * @public + */ export type RowType> = { [K in keyof T['columnMap']]: ExtractColumnValueType; } & { id: string; }; +/** + * @public + */ export type IndexShorthand = Record; +/** + * @public + */ + export interface TableV2Options extends SharedTableOptions { indexes?: IndexShorthand; } +/** + * @internal + */ export const DEFAULT_TABLE_OPTIONS = { indexes: [], insertOnly: false, @@ -68,8 +88,14 @@ export const DEFAULT_TABLE_OPTIONS = { ignoreEmptyUpdates: false }; +/** + * @internal + */ export const InvalidSQLCharacters = /["'%,.#\s[\]]/; +/** + * @public + */ export class Table { protected options!: TableOptions; @@ -108,9 +134,8 @@ export class Table { * 1. New constructor: Using a Columns object and an optional TableV2Options object * 2. Deprecated constructor: Using a TableOptions object (will be removed in the next major release) * - * @constructor - * @param {Columns | TableOptions} optionsOrColumns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax) - * @param {TableV2Options} [v2Options] - Optional configuration options for V2 syntax + * @param columns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax) + * @param options - Optional configuration options for V2 syntax * * @example * ```javascript diff --git a/packages/common/src/db/schema/TableV2.ts b/packages/common/src/db/schema/TableV2.ts index a863888e6..6c456154b 100644 --- a/packages/common/src/db/schema/TableV2.ts +++ b/packages/common/src/db/schema/TableV2.ts @@ -5,5 +5,7 @@ import { Table } from './Table.js'; Generate a new table from the columns and indexes @deprecated You should use {@link Table} instead as it now allows TableV2 syntax. This will be removed in the next major release. + + @public */ export class TableV2 extends Table {} diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 272c27add..d2364d5a4 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1,4 +1,4 @@ -export * from './attachments/AttachmentContext.js'; +export * from './attachments/AttachmentContext.js'; // TODO: Remove (internal) export * from './attachments/AttachmentErrorHandler.js'; export * from './attachments/AttachmentQueue.js'; export * from './attachments/AttachmentService.js'; diff --git a/packages/common/src/types/types.ts b/packages/common/src/types/types.ts index b7f48db56..4723a277e 100644 --- a/packages/common/src/types/types.ts +++ b/packages/common/src/types/types.ts @@ -1,8 +1,14 @@ +/** + * @public + */ export interface CompilableQuery { execute(): Promise; compile(): CompiledQuery; } +/** + * @public + */ export interface CompiledQuery { readonly sql: string; readonly parameters: ReadonlyArray; diff --git a/packages/common/src/utils/AbortOperation.ts b/packages/common/src/utils/AbortOperation.ts index fbb3c1111..5680af152 100644 --- a/packages/common/src/utils/AbortOperation.ts +++ b/packages/common/src/utils/AbortOperation.ts @@ -2,6 +2,8 @@ * Calls to Abortcontroller.abort(reason: any) will result in the * `reason` being thrown. This is not necessarily an error, * but extends error for better logging purposes. + * + * @internal */ export class AbortOperation extends Error { constructor(protected reason: string) { diff --git a/packages/common/src/utils/BaseObserver.ts b/packages/common/src/utils/BaseObserver.ts index fa8067226..ed5500b85 100644 --- a/packages/common/src/utils/BaseObserver.ts +++ b/packages/common/src/utils/BaseObserver.ts @@ -1,13 +1,25 @@ +/** + * @public + */ export interface Disposable { dispose: () => Promise | void; } +/** + * @public + */ export type BaseListener = Record any) | undefined>; +/** + * @public + */ export interface BaseObserverInterface { registerListener(listener: Partial): () => void; } +/** + * @internal + */ export class BaseObserver implements BaseObserverInterface { protected listeners = new Set>(); diff --git a/packages/common/src/utils/ControlledExecutor.ts b/packages/common/src/utils/ControlledExecutor.ts index 078197c41..28929c536 100644 --- a/packages/common/src/utils/ControlledExecutor.ts +++ b/packages/common/src/utils/ControlledExecutor.ts @@ -1,3 +1,6 @@ +/** + * @internal + */ export interface ControlledExecutorOptions { /** * If throttling is enabled, it ensures only one task runs at a time, @@ -7,6 +10,9 @@ export interface ControlledExecutorOptions { throttleEnabled?: boolean; } +/** + * @internal + */ export class ControlledExecutor { private task: (param: T) => Promise | void; diff --git a/packages/common/src/utils/Logger.ts b/packages/common/src/utils/Logger.ts index f954622ef..f19db63a9 100644 --- a/packages/common/src/utils/Logger.ts +++ b/packages/common/src/utils/Logger.ts @@ -4,6 +4,9 @@ export { GlobalLogger, ILogger, ILoggerOpts, ILogHandler, ILogLevel } from 'js-l const TypedLogger: ILogger = Logger as any; +/** + * @public + */ export const LogLevel = { TRACE: TypedLogger.TRACE, DEBUG: TypedLogger.DEBUG, @@ -14,6 +17,9 @@ export const LogLevel = { OFF: TypedLogger.OFF }; +/** + * @public + */ export interface CreateLoggerOptions { logLevel?: ILogLevel; } @@ -25,6 +31,7 @@ export interface CreateLoggerOptions { * across all loggers created with `createLogger`. Adjusting settings on this * base logger affects all loggers derived from it unless explicitly overridden. * + * @public */ export function createBaseLogger() { return Logger; @@ -36,6 +43,8 @@ export function createBaseLogger() { * Named loggers allow specific modules or areas of your application to have * their own logging levels and behaviors. These loggers inherit configuration * from the base logger by default but can override settings independently. + * + * @public */ export function createLogger(name: string, options: CreateLoggerOptions = {}): ILogger { const logger = Logger.get(name); diff --git a/packages/common/src/utils/mutex.ts b/packages/common/src/utils/mutex.ts index 646f97eeb..503a68659 100644 --- a/packages/common/src/utils/mutex.ts +++ b/packages/common/src/utils/mutex.ts @@ -1,5 +1,8 @@ import { Queue } from './queue.js'; +/** + * @internal + */ export type UnlockFn = () => void; /** @@ -178,10 +181,19 @@ export class Mutex { /** * Creates a signal aborting after the set timeout. + * + * @internal */ export function timeoutSignal(timeout: number): AbortSignal; + +/** + * @internal + */ export function timeoutSignal(timeout?: number): AbortSignal | undefined; +/** + * @internal + */ export function timeoutSignal(timeout?: number): AbortSignal | undefined { if (timeout == null) return; if ('timeout' in AbortSignal) return AbortSignal.timeout(timeout); diff --git a/packages/common/src/utils/parseQuery.ts b/packages/common/src/utils/parseQuery.ts index fee2996cc..99654d012 100644 --- a/packages/common/src/utils/parseQuery.ts +++ b/packages/common/src/utils/parseQuery.ts @@ -1,10 +1,16 @@ import type { CompilableQuery } from '../types/types.js'; +/** + * @internal + */ export interface ParsedQuery { sqlStatement: string; parameters: any[]; } +/** + * @internal + */ export const parseQuery = (query: string | CompilableQuery, parameters: any[]): ParsedQuery => { let sqlStatement: string; diff --git a/packages/common/src/utils/stream_transform.ts b/packages/common/src/utils/stream_transform.ts index 213b9b301..c40de00a0 100644 --- a/packages/common/src/utils/stream_transform.ts +++ b/packages/common/src/utils/stream_transform.ts @@ -2,9 +2,11 @@ * An async iterator that can't be cancelled. * * To keep data flow simple, we always pass an explicit cancellation token when subscribing to async streams. Once the - * {@link AbortSignal} aborts, iterators are supposed to clean up and then emit a final `{done: true}` event. This means + * `AbortSignal` aborts, iterators are supposed to clean up and then emit a final `{done: true}` event. This means * that there's no way to distinguish between streams that have completed normally and streams that have been cancelled, * but that is acceptable for our uses of this. + * + * @internal */ export type SimpleAsyncIterator = Pick, 'next'>; diff --git a/packages/common/tsdoc.json b/packages/common/tsdoc.json new file mode 100644 index 000000000..02bf847aa --- /dev/null +++ b/packages/common/tsdoc.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": [ "@microsoft/api-extractor/extends/tsdoc-base.json" ], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@template", + "syntaxKind": "block", + "allowMultiple": true + } + ], + "supportForTags": { + "@default": true, + "@template": true + } +} diff --git a/packages/drizzle-driver/src/utils/compilableQuery.ts b/packages/drizzle-driver/src/utils/compilableQuery.ts index badb6345a..101fce208 100644 --- a/packages/drizzle-driver/src/utils/compilableQuery.ts +++ b/packages/drizzle-driver/src/utils/compilableQuery.ts @@ -19,6 +19,8 @@ import { Query } from 'drizzle-orm'; * ))} * * ); + * + * @public */ export function toCompilableQuery(query: { execute: () => Promise; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 43c39411a..dbeeab605 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,6 +9,9 @@ catalogs: '@journeyapps/wa-sqlite': specifier: ^1.5.0 version: 1.7.0 + '@microsoft/api-extractor': + specifier: ^7.58.7 + version: 7.58.7 '@nuxt/devtools-kit': specifier: ^3.2.3 version: 3.2.3 @@ -410,6 +413,9 @@ importers: specifier: 'catalog:' version: 1.6.1 devDependencies: + '@microsoft/api-extractor': + specifier: 'catalog:' + version: 7.58.7(@types/node@24.10.13) '@rollup/plugin-commonjs': specifier: 'catalog:' version: 29.0.2(rollup@4.59.0) @@ -672,7 +678,7 @@ importers: devDependencies: '@op-engineering/op-sqlite': specifier: 'catalog:' - version: 15.2.7(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + version: 15.2.7(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) '@react-native/eslint-config': specifier: ^0.83.1 version: 0.83.1(eslint@8.57.1)(jest@29.7.0(@types/node@24.10.13))(prettier@3.8.1)(typescript@6.0.3) @@ -699,7 +705,7 @@ importers: version: 19.2.4 react-native: specifier: 'catalog:' - version: 0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) + version: 0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4) react-native-builder-bob: specifier: ^0.40.17 version: 0.40.18 @@ -760,10 +766,10 @@ importers: devDependencies: '@craftzdog/react-native-buffer': specifier: ^6.0.5 - version: 6.1.1(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + version: 6.1.1(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) '@journeyapps/react-native-quick-sqlite': specifier: ^2.5.2 - version: 2.5.2(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + version: 2.5.2(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) '@rollup/plugin-alias': specifier: 'catalog:' version: 5.1.1(rollup@4.59.0) @@ -793,7 +799,7 @@ importers: version: 19.2.4 react-native: specifier: 0.83.1 - version: 0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) + version: 0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4) react-native-fetch-api: specifier: ^3.0.0 version: 3.0.0 @@ -2784,18 +2790,12 @@ packages: '@chevrotain/utils@11.0.3': resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - '@clack/core@1.0.0': - resolution: {integrity: sha512-Orf9Ltr5NeiEuVJS8Rk2XTw3IxNC2Bic3ash7GgYeA8LJ/zmSNpSQ/m5UAhe03lA6KFgklzZ5KTHs4OAMA/SAQ==} - '@clack/core@1.1.0': resolution: {integrity: sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==} '@clack/core@1.2.0': resolution: {integrity: sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==} - '@clack/prompts@1.0.0': - resolution: {integrity: sha512-rWPXg9UaCFqErJVQ+MecOaWsozjaxol4yjnmYcGNipAWzdaWa2x+VJmKfGq7L0APwBohQOYdHC+9RO4qRXej+A==} - '@clack/prompts@1.1.0': resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==} @@ -4350,6 +4350,19 @@ packages: '@types/react': '>=16' react: '>=16' + '@microsoft/api-extractor-model@7.33.8': + resolution: {integrity: sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w==} + + '@microsoft/api-extractor@7.58.7': + resolution: {integrity: sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw==} + hasBin: true + + '@microsoft/tsdoc-config@0.18.1': + resolution: {integrity: sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==} + + '@microsoft/tsdoc@0.16.0': + resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} + '@module-federation/error-codes@0.22.0': resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} @@ -4453,10 +4466,6 @@ packages: '@vitejs/devtools': optional: true - '@nuxt/kit@3.21.1': - resolution: {integrity: sha512-QORZRjcuTKgo++XP1Pc2c2gqwRydkaExrIRfRI9vFsPA3AzuHVn5Gfmbv1ic8y34e78mr5DMBvJlelUaeOuajg==} - engines: {node: '>=18.12.0'} - '@nuxt/kit@3.21.6': resolution: {integrity: sha512-5VOwxUcoM/z6w4c75hQrikHpY+TzjTLZQ+QnuO7KajyGx0IJBLVy1lw25oy79leF+GgyjJJO1cHfUfWeuEDCzA==} engines: {node: '>=18.12.0'} @@ -4490,42 +4499,6 @@ packages: peerDependencies: '@nuxt/kit': '>=3.0.0' - '@nuxt/test-utils@4.0.0': - resolution: {integrity: sha512-QJfyCiqYxflUKA5xlEGuXdDApTBhJxoPXxYePIDtA90hkmKbhYs/mrMM+Bi9LiUrI/cCJOPRyIx9jOzhMvTIgg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - '@cucumber/cucumber': '>=11.0.0' - '@jest/globals': '>=30.0.0' - '@playwright/test': ^1.43.1 - '@testing-library/vue': ^8.0.1 - '@vitest/ui': '*' - '@vue/test-utils': ^2.4.2 - happy-dom: '>=20.0.11' - jsdom: '>=27.4.0' - playwright-core: ^1.43.1 - vitest: ^4.0.2 - peerDependenciesMeta: - '@cucumber/cucumber': - optional: true - '@jest/globals': - optional: true - '@playwright/test': - optional: true - '@testing-library/vue': - optional: true - '@vitest/ui': - optional: true - '@vue/test-utils': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright-core: - optional: true - vitest: - optional: true - '@nuxt/test-utils@4.0.3': resolution: {integrity: sha512-HwF3B+GIwzWeIioskhHIjq+TQttP7+g0GUO39hpivGWFZzYXD3lIspzfmliJkgwwA3m5Xl2Z8XXqX1zAolKX6w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -6475,15 +6448,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-node-resolve@16.0.3': resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} engines: {node: '>=14.0.0'} @@ -6924,6 +6888,36 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@rushstack/node-core-library@5.23.1': + resolution: {integrity: sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/problem-matcher@0.2.1': + resolution: {integrity: sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.7.3': + resolution: {integrity: sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==} + + '@rushstack/terminal@0.24.0': + resolution: {integrity: sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@5.3.9': + resolution: {integrity: sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ==} + '@rushstack/worker-pool@0.4.9': resolution: {integrity: sha512-ibAOeQCuz3g0c88GGawAPO2LVOTZE3uPh4DCEJILZS9SEv9opEUObsovC18EHPgeIuFy4HkoJT+t7l8LURZjIw==} peerDependencies: @@ -7561,6 +7555,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -8523,6 +8520,14 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -8531,6 +8536,14 @@ packages: ajv: optional: true + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -11463,15 +11476,6 @@ packages: h3@1.15.6: resolution: {integrity: sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==} - h3@2.0.1-rc.11: - resolution: {integrity: sha512-2myzjCqy32c1As9TjZW9fNZXtLqNedjFSrdFy2AjFBQQ3LzrnGoDdFDYfC0tV2e4vcyfJ2Sfo/F6NQhO2Ly/Mw==} - engines: {node: '>=20.11.1'} - peerDependencies: - crossws: ^0.4.1 - peerDependenciesMeta: - crossws: - optional: true - h3@2.0.1-rc.20: resolution: {integrity: sha512-28ljodXuUp0fZovdiSRq4G9OgrxCztrJe5VdYzXAB7ueRvI7pIUqLU14Xi3XqdYJ/khXjfpUOOD2EQa6CmBgsg==} engines: {node: '>=20.11.1'} @@ -12451,6 +12455,9 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -13510,6 +13517,10 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@10.2.3: + resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} + engines: {node: 18 || 20 || >=22} + minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} @@ -16248,11 +16259,6 @@ packages: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} - srvx@0.10.1: - resolution: {integrity: sha512-A//xtfak4eESMWWydSRFUVvCTQbSwivnGCEf8YGPe2eHU0+Z6znfUTCPF0a7oV3sObSOcrXHlL6Bs9vVctfXdg==} - engines: {node: '>=20.16.0'} - hasBin: true - srvx@0.11.16: resolution: {integrity: sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw==} engines: {node: '>=20.16.0'} @@ -16308,9 +16314,6 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - std-env@4.0.0: - resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} - std-env@4.1.0: resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} @@ -16627,11 +16630,6 @@ packages: engines: {node: '>=10'} hasBin: true - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} - engines: {node: '>=10'} - hasBin: true - terser@5.48.0: resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} @@ -16692,10 +16690,6 @@ packages: resolution: {integrity: sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==} engines: {node: ^16.14.0 || >= 17.3.0} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} - tinyexec@1.2.4: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} @@ -17016,6 +17010,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -17609,9 +17608,6 @@ packages: yaml: optional: true - vitest-environment-nuxt@1.0.1: - resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==} - vitest-environment-nuxt@2.0.0: resolution: {integrity: sha512-zEGFRiCAaRR3fHnqISHKMNTRvCzkQEI1XyFeqNgR2IBD0oYkfZ1rUHwi7C+h3Cns3KPykfB0av1B3MtLEbChDw==} @@ -18364,7 +18360,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 - tinyexec: 1.0.2 + tinyexec: 1.2.4 '@apideck/better-ajv-errors@0.3.7(ajv@8.20.0)': dependencies: @@ -18477,6 +18473,14 @@ snapshots: eslint-visitor-keys: 2.1.0 semver: 6.3.1 + '@babel/eslint-parser@7.28.6(@babel/core@7.29.7)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.29.7 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.2 @@ -18585,7 +18589,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.11 + resolve: 1.22.12 transitivePeerDependencies: - supports-color @@ -18596,7 +18600,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.11 + resolve: 1.22.12 transitivePeerDependencies: - supports-color @@ -20722,11 +20726,6 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@clack/core@1.0.0': - dependencies: - picocolors: 1.1.1 - sisteransi: 1.0.5 - '@clack/core@1.1.0': dependencies: sisteransi: 1.0.5 @@ -20736,12 +20735,6 @@ snapshots: fast-wrap-ansi: 0.1.6 sisteransi: 1.0.5 - '@clack/prompts@1.0.0': - dependencies: - '@clack/core': 1.0.0 - picocolors: 1.1.1 - sisteransi: 1.0.5 - '@clack/prompts@1.1.0': dependencies: '@clack/core': 1.1.0 @@ -20761,10 +20754,10 @@ snapshots: '@colors/colors@1.6.0': {} - '@craftzdog/react-native-buffer@6.1.1(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': + '@craftzdog/react-native-buffer@6.1.1(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: ieee754: 1.2.1 - react-native-quick-base64: 2.2.2(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + react-native-quick-base64: 2.2.2(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) transitivePeerDependencies: - react - react-native @@ -21251,9 +21244,9 @@ snapshots: '@docusaurus/cssnano-preset@3.9.2': dependencies: - cssnano-preset-advanced: 6.1.2(postcss@8.5.8) - postcss: 8.5.8 - postcss-sort-media-queries: 5.2.0(postcss@8.5.8) + cssnano-preset-advanced: 6.1.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-sort-media-queries: 5.2.0(postcss@8.5.15) tslib: 2.8.1 '@docusaurus/faster@3.9.2(@docusaurus/types@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.19))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.19)': @@ -21919,7 +21912,7 @@ snapshots: '@nuxt/kit': 4.3.1(magicast@0.5.2) chokidar: 5.0.0 pathe: 2.0.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 transitivePeerDependencies: - magicast @@ -22868,10 +22861,10 @@ snapshots: '@types/yargs': 17.0.35 chalk: 4.1.2 - '@journeyapps/react-native-quick-sqlite@2.5.2(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': + '@journeyapps/react-native-quick-sqlite@2.5.2(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: react: 19.2.4 - react-native: 0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) + react-native: 0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4) '@journeyapps/wa-sqlite@1.7.0': {} @@ -23065,7 +23058,7 @@ snapshots: https-proxy-agent: 7.0.6 node-fetch: 2.7.0(encoding@0.1.13) nopt: 8.1.0 - semver: 7.7.4 + semver: 7.8.1 tar: 7.5.11 transitivePeerDependencies: - encoding @@ -23107,6 +23100,41 @@ snapshots: '@types/react': 19.2.14 react: 18.3.1 + '@microsoft/api-extractor-model@7.33.8(@types/node@24.10.13)': + dependencies: + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.1(@types/node@24.10.13) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.58.7(@types/node@24.10.13)': + dependencies: + '@microsoft/api-extractor-model': 7.33.8(@types/node@24.10.13) + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.1(@types/node@24.10.13) + '@rushstack/rig-package': 0.7.3 + '@rushstack/terminal': 0.24.0(@types/node@24.10.13) + '@rushstack/ts-command-line': 5.3.9(@types/node@24.10.13) + diff: 8.0.3 + minimatch: 10.2.3 + resolve: 1.22.12 + semver: 7.7.4 + source-map: 0.6.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.18.1': + dependencies: + '@microsoft/tsdoc': 0.16.0 + ajv: 8.18.0 + jju: 1.4.0 + resolve: 1.22.12 + + '@microsoft/tsdoc@0.16.0': {} + '@module-federation/error-codes@0.22.0': {} '@module-federation/runtime-core@0.22.0': @@ -23187,7 +23215,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.4 + semver: 7.8.1 '@nuxt/cli@3.34.0(@nuxt/schema@4.3.1)(cac@6.7.14)(commander@13.1.0)(magicast@0.5.2)': dependencies: @@ -23216,7 +23244,7 @@ snapshots: srvx: 0.11.9 std-env: 3.10.0 tinyclip: 0.1.12 - tinyexec: 1.0.2 + tinyexec: 1.2.4 ufo: 1.6.3 youch: 4.1.0 optionalDependencies: @@ -23231,7 +23259,7 @@ snapshots: '@nuxt/devtools-kit@2.7.0(magicast@0.5.2)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))': dependencies: - '@nuxt/kit': 3.21.1(magicast@0.5.2) + '@nuxt/kit': 3.21.6(magicast@0.5.2) execa: 8.0.1 vite: 7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: @@ -23263,7 +23291,7 @@ snapshots: '@vueuse/core': 14.2.1(vue@3.5.30(typescript@6.0.3)) '@vueuse/integrations': 14.2.1(focus-trap@8.0.0)(fuse.js@7.1.0)(nprogress@0.2.0)(vue@3.5.30(typescript@6.0.3)) '@vueuse/nuxt': 14.2.1(magicast@0.5.2)(nuxt@4.3.1(b42e0915a804f8048a0c960d367b4928))(vue@3.5.30(typescript@6.0.3)) - defu: 6.1.4 + defu: 6.1.7 focus-trap: 8.0.0 splitpanes: 4.0.4(vue@3.5.30(typescript@6.0.3)) unocss: 66.6.6(@unocss/webpack@66.6.6(webpack@5.105.2(esbuild@0.27.3)))(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) @@ -23292,14 +23320,14 @@ snapshots: '@nuxt/devtools-wizard@3.2.3': dependencies: - '@clack/prompts': 1.1.0 + '@clack/prompts': 1.2.0 consola: 3.4.2 diff: 8.0.3 execa: 8.0.1 magicast: 0.5.2 pathe: 2.0.3 pkg-types: 2.3.0 - semver: 7.7.4 + semver: 7.8.1 '@nuxt/devtools@3.2.3(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.30(typescript@6.0.3))': dependencies: @@ -23330,7 +23358,7 @@ snapshots: simple-git: 3.33.0 sirv: 3.0.2 structured-clone-es: 1.0.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 vite: 7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) vite-plugin-inspect: 11.3.3(@nuxt/kit@4.3.1(magicast@0.5.2))(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) vite-plugin-vue-tracer: 1.2.0(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.30(typescript@6.0.3)) @@ -23342,32 +23370,6 @@ snapshots: - utf-8-validate - vue - '@nuxt/kit@3.21.1(magicast@0.5.2)': - dependencies: - c12: 3.3.3(magicast@0.5.2) - consola: 3.4.2 - defu: 6.1.4 - destr: 2.0.5 - errx: 0.1.0 - exsolve: 1.0.8 - ignore: 7.0.5 - jiti: 2.6.1 - klona: 2.0.6 - knitwork: 1.3.0 - mlly: 1.8.1 - ohash: 2.0.11 - pathe: 2.0.3 - pkg-types: 2.3.0 - rc9: 3.0.0 - scule: 1.3.0 - semver: 7.7.4 - tinyglobby: 0.2.15 - ufo: 1.6.3 - unctx: 2.5.0 - untyped: 2.0.0 - transitivePeerDependencies: - - magicast - '@nuxt/kit@3.21.6(magicast@0.5.2)': dependencies: c12: 3.3.4(magicast@0.5.2) @@ -23525,47 +23527,6 @@ snapshots: rc9: 3.0.0 std-env: 3.10.0 - '@nuxt/test-utils@4.0.0(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8)': - dependencies: - '@clack/prompts': 1.0.0 - '@nuxt/devtools-kit': 2.7.0(magicast@0.5.2)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) - '@nuxt/kit': 3.21.1(magicast@0.5.2) - c12: 3.3.3(magicast@0.5.2) - consola: 3.4.2 - defu: 6.1.4 - destr: 2.0.5 - estree-walker: 3.0.3 - exsolve: 1.0.8 - fake-indexeddb: 6.2.5 - get-port-please: 3.2.0 - h3: 1.15.6 - h3-next: h3@2.0.1-rc.11 - local-pkg: 1.1.2 - magic-string: 0.30.21 - node-fetch-native: 1.6.7 - node-mock-http: 1.0.4 - nypm: 0.6.5 - ofetch: 1.5.1 - pathe: 2.0.3 - perfect-debounce: 2.1.0 - radix3: 1.1.2 - scule: 1.3.0 - std-env: 3.10.0 - tinyexec: 1.0.2 - ufo: 1.6.3 - unplugin: 3.0.0 - vitest-environment-nuxt: 1.0.1(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8) - vue: 3.5.30(typescript@6.0.3) - optionalDependencies: - jsdom: 24.1.3 - playwright-core: 1.58.2 - vitest: 4.1.8(@types/node@25.9.1)(@vitest/browser-playwright@4.1.8)(@vitest/browser-preview@4.1.8)(jsdom@24.1.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) - transitivePeerDependencies: - - crossws - - magicast - - typescript - - vite - '@nuxt/test-utils@4.0.3(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8)': dependencies: '@clack/prompts': 1.2.0 @@ -23593,7 +23554,7 @@ snapshots: scule: 1.3.0 std-env: 4.1.0 tinyexec: 1.2.4 - ufo: 1.6.3 + ufo: 1.6.4 unplugin: 3.0.0 vitest-environment-nuxt: 2.0.0(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8) vue: 3.5.35(typescript@6.0.3) @@ -23613,9 +23574,9 @@ snapshots: '@rollup/plugin-replace': 6.0.3(rollup@4.59.0) '@vitejs/plugin-vue': 6.0.4(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.30(typescript@6.0.3)) '@vitejs/plugin-vue-jsx': 5.1.4(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vue@3.5.30(typescript@6.0.3)) - autoprefixer: 10.4.27(postcss@8.5.8) + autoprefixer: 10.4.27(postcss@8.5.15) consola: 3.4.2 - cssnano: 7.1.3(postcss@8.5.8) + cssnano: 7.1.3(postcss@8.5.15) defu: 6.1.4 esbuild: 0.27.3 escape-string-regexp: 5.0.0 @@ -23629,7 +23590,7 @@ snapshots: nuxt: 4.3.1(b42e0915a804f8048a0c960d367b4928) pathe: 2.0.3 pkg-types: 2.3.0 - postcss: 8.5.8 + postcss: 8.5.15 rollup-plugin-visualizer: 6.0.11(rollup@4.59.0) seroval: 1.5.1 std-env: 3.10.0 @@ -23665,10 +23626,10 @@ snapshots: - vue-tsc - yaml - '@op-engineering/op-sqlite@15.2.7(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': + '@op-engineering/op-sqlite@15.2.7(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: react: 19.2.4 - react-native: 0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) + react-native: 0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4) '@op-engineering/op-sqlite@15.2.7(react-native@0.84.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: @@ -23972,7 +23933,7 @@ snapshots: '@parcel/watcher-wasm@2.5.6': dependencies: is-glob: 4.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 '@parcel/watcher-win32-arm64@2.5.6': optional: true @@ -23988,7 +23949,7 @@ snapshots: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.6 '@parcel/watcher-darwin-arm64': 2.5.6 @@ -24290,7 +24251,7 @@ snapshots: pretty-ms: 7.0.1 ramda: '@pnpm/ramda@0.28.1' rxjs: 7.8.2 - semver: 7.7.4 + semver: 7.8.1 stacktracey: 2.1.8 string-length: 4.0.2 @@ -24317,7 +24278,7 @@ snapshots: dependencies: '@pnpm/crypto.hash': 1000.2.2 '@pnpm/types': 1001.3.0 - semver: 7.7.4 + semver: 7.8.1 '@pnpm/directory-fetcher@1000.1.23(@pnpm/logger@1001.0.1)': dependencies: @@ -24389,7 +24350,7 @@ snapshots: '@pnpm/types': 1001.3.0 '@pnpm/util.lex-comparator': 3.0.2 p-filter: 2.1.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 transitivePeerDependencies: - '@pnpm/logger' @@ -24440,7 +24401,7 @@ snapshots: '@pnpm/resolver-base': 1005.4.1 graceful-git: 4.0.0 hosted-git-info: '@pnpm/hosted-git-info@1.0.0' - semver: 7.7.4 + semver: 7.8.1 transitivePeerDependencies: - '@pnpm/logger' - domexception @@ -24500,7 +24461,7 @@ snapshots: is-windows: 1.0.2 normalize-path: 3.0.0 ramda: '@pnpm/ramda@0.28.1' - semver: 7.7.4 + semver: 7.8.1 symlink-dir: 6.0.5 '@pnpm/local-resolver@1002.1.12(@pnpm/logger@1001.0.1)': @@ -24531,7 +24492,7 @@ snapshots: '@pnpm/logger': 1001.0.1 '@pnpm/semver.peer-range': 1000.0.0 '@pnpm/types': 1001.3.0 - semver: 7.7.4 + semver: 7.8.1 '@pnpm/matcher@1000.1.0': dependencies: @@ -24602,7 +24563,7 @@ snapshots: '@pnpm/fetching-types': 1000.2.1 '@pnpm/resolver-base': 1005.4.1 '@pnpm/types': 1001.3.0 - semver: 7.7.4 + semver: 7.8.1 version-selector-type: 3.0.0 transitivePeerDependencies: - '@pnpm/logger' @@ -24658,7 +24619,7 @@ snapshots: path-temp: 2.1.1 ramda: '@pnpm/ramda@0.28.1' rename-overwrite: 6.0.6 - semver: 7.7.4 + semver: 7.8.1 semver-utils: 1.1.4 ssri: 10.0.5 version-selector-type: 3.0.0 @@ -24674,7 +24635,7 @@ snapshots: dependencies: '@pnpm/types': 1001.3.0 is-subdir: 1.2.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 '@pnpm/package-is-installable@1000.0.20(@pnpm/logger@1001.0.1)': dependencies: @@ -24687,7 +24648,7 @@ snapshots: detect-libc: 2.1.2 execa: safe-execa@0.1.2 mem: 8.1.1 - semver: 7.7.4 + semver: 7.8.1 '@pnpm/package-requester@1011.2.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@24.10.13))': dependencies: @@ -24711,7 +24672,7 @@ snapshots: p-queue: 6.6.2 promise-share: 1.0.0 ramda: '@pnpm/ramda@0.28.1' - semver: 7.7.4 + semver: 7.8.1 ssri: 10.0.5 '@pnpm/package-store@1007.1.4(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@24.10.13))': @@ -24808,7 +24769,7 @@ snapshots: dependencies: '@pnpm/logger': 1001.0.1 '@pnpm/registry.types': 1000.1.4 - semver: 7.7.4 + semver: 7.8.1 '@pnpm/registry.types@1000.1.4': dependencies: @@ -24824,7 +24785,7 @@ snapshots: '@pnpm/resolve-workspace-range@1000.1.0': dependencies: - semver: 7.7.4 + semver: 7.8.1 '@pnpm/resolver-base@1005.4.1': dependencies: @@ -24844,7 +24805,7 @@ snapshots: '@pnpm/types': 1001.3.0 '@pnpm/util.lex-comparator': 3.0.2 '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@24.10.13) - semver: 7.7.4 + semver: 7.8.1 transitivePeerDependencies: - '@pnpm/logger' - domexception @@ -24865,7 +24826,7 @@ snapshots: '@pnpm/types': 1001.3.0 '@pnpm/util.lex-comparator': 3.0.2 '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@24.10.13) - semver: 7.7.4 + semver: 7.8.1 transitivePeerDependencies: - '@pnpm/logger' - domexception @@ -24878,7 +24839,7 @@ snapshots: '@pnpm/semver.peer-range@1000.0.0': dependencies: - semver: 7.7.4 + semver: 7.8.1 '@pnpm/server@1001.0.20(@pnpm/logger@1001.0.1)': dependencies: @@ -25453,7 +25414,7 @@ snapshots: execa: 5.1.1 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.7.4 + semver: 7.8.1 wcwidth: 1.0.1 yaml: 2.8.2 transitivePeerDependencies: @@ -25507,7 +25468,7 @@ snapshots: mime: 2.6.0 ora: 5.4.1 prompts: 2.4.2 - semver: 7.7.4 + semver: 7.8.1 '@react-native-community/cli-types@20.0.0': dependencies: @@ -25769,7 +25730,6 @@ snapshots: invariant: 2.2.4 nullthrows: 1.1.1 yargs: 17.7.2 - optional: true '@react-native/codegen@0.84.1(@babel/core@7.29.0)': dependencies: @@ -25778,7 +25738,7 @@ snapshots: hermes-parser: 0.32.0 invariant: 2.2.4 nullthrows: 1.1.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 yargs: 17.7.2 '@react-native/codegen@0.84.1(@babel/core@7.29.7)': @@ -25788,10 +25748,10 @@ snapshots: hermes-parser: 0.32.0 invariant: 2.2.4 nullthrows: 1.1.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 yargs: 17.7.2 - '@react-native/community-cli-plugin@0.83.1(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))': + '@react-native/community-cli-plugin@0.83.1(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))': dependencies: '@react-native/dev-middleware': 0.83.1 debug: 4.4.3(supports-color@8.1.1) @@ -25802,7 +25762,7 @@ snapshots: semver: 7.7.4 optionalDependencies: '@react-native-community/cli': 20.0.0(typescript@6.0.3) - '@react-native/metro-config': 0.83.1(@babel/core@7.29.0) + '@react-native/metro-config': 0.83.1(@babel/core@7.29.7) transitivePeerDependencies: - bufferutil - supports-color @@ -25816,7 +25776,7 @@ snapshots: metro: 0.83.5 metro-config: 0.83.5 metro-core: 0.83.5 - semver: 7.7.4 + semver: 7.8.1 optionalDependencies: '@react-native-community/cli': 20.0.0(typescript@6.0.3) '@react-native/metro-config': 0.83.1(@babel/core@7.29.0) @@ -25833,7 +25793,7 @@ snapshots: metro: 0.83.5 metro-config: 0.83.5 metro-core: 0.83.5 - semver: 7.7.4 + semver: 7.8.1 optionalDependencies: '@react-native-community/cli': 20.0.0(typescript@6.0.3) '@react-native/metro-config': 0.83.1(@babel/core@7.29.7) @@ -25892,7 +25852,7 @@ snapshots: nullthrows: 1.1.1 open: 7.4.2 serve-static: 1.16.3 - ws: 7.5.10 + ws: 7.5.11 transitivePeerDependencies: - bufferutil - supports-color @@ -25911,7 +25871,7 @@ snapshots: nullthrows: 1.1.1 open: 7.4.2 serve-static: 1.16.3 - ws: 7.5.10 + ws: 7.5.11 transitivePeerDependencies: - bufferutil - supports-color @@ -25941,7 +25901,7 @@ snapshots: '@react-native/eslint-config@0.83.1(eslint@8.57.1)(jest@29.7.0(@types/node@24.10.13))(prettier@3.8.1)(typescript@6.0.3)': dependencies: '@babel/core': 7.29.0 - '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1) + '@babel/eslint-parser': 7.28.6(@babel/core@7.29.7)(eslint@8.57.1) '@react-native/eslint-plugin': 0.83.1 '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@8.57.1)(typescript@6.0.3))(eslint@8.57.1)(typescript@6.0.3) '@typescript-eslint/parser': 8.57.1(eslint@8.57.1)(typescript@6.0.3) @@ -26021,12 +25981,12 @@ snapshots: '@react-native/typescript-config@0.83.1': {} - '@react-native/virtualized-lists@0.83.1(@types/react@19.2.14)(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': + '@react-native/virtualized-lists@0.83.1(@types/react@19.2.14)(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.4 - react-native: 0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) + react-native: 0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 @@ -26131,31 +26091,31 @@ snapshots: '@rollup/plugin-commonjs@28.0.9(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.59.0 '@rollup/plugin-commonjs@29.0.2(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.59.0 '@rollup/plugin-inject@5.0.5(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: @@ -26163,38 +26123,39 @@ snapshots: '@rollup/plugin-json@6.1.0(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) optionalDependencies: rollup: 4.59.0 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.14.3)': + '@rollup/plugin-node-resolve@15.2.3(rollup@2.80.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.14.3) + '@rollup/pluginutils': 5.3.0(rollup@2.80.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.14.3 + rollup: 2.80.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@2.80.0)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.14.3)': dependencies: - '@rollup/pluginutils': 5.4.0(rollup@2.80.0) + '@rollup/pluginutils': 5.3.0(rollup@4.14.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 + is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.12 + resolve: 1.22.11 optionalDependencies: - rollup: 2.80.0 + rollup: 4.14.3 '@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.11 + resolve: 1.22.12 optionalDependencies: rollup: 4.59.0 @@ -26206,14 +26167,14 @@ snapshots: '@rollup/plugin-replace@5.0.7(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) magic-string: 0.30.21 optionalDependencies: rollup: 4.59.0 '@rollup/plugin-replace@6.0.3(rollup@4.59.0)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) magic-string: 0.30.21 optionalDependencies: rollup: 4.59.0 @@ -26222,7 +26183,7 @@ snapshots: dependencies: serialize-javascript: 6.0.2 smob: 1.6.1 - terser: 5.46.1 + terser: 5.48.0 optionalDependencies: rollup: 2.80.0 @@ -26230,7 +26191,7 @@ snapshots: dependencies: serialize-javascript: 6.0.2 smob: 1.6.1 - terser: 5.46.1 + terser: 5.48.0 optionalDependencies: rollup: 4.59.0 @@ -26245,8 +26206,8 @@ snapshots: '@rollup/plugin-typescript@12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) - resolve: 1.22.11 + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) + resolve: 1.22.12 typescript: 6.0.3 optionalDependencies: rollup: 4.59.0 @@ -26263,6 +26224,14 @@ snapshots: picomatch: 2.3.2 rollup: 2.80.0 + '@rollup/pluginutils@5.3.0(rollup@2.80.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 2.80.0 + '@rollup/pluginutils@5.3.0(rollup@4.14.3)': dependencies: '@types/estree': 1.0.8 @@ -26279,13 +26248,13 @@ snapshots: optionalDependencies: rollup: 4.59.0 - '@rollup/pluginutils@5.4.0(rollup@2.80.0)': + '@rollup/pluginutils@5.4.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 picomatch: 4.0.4 optionalDependencies: - rollup: 2.80.0 + rollup: 4.59.0 '@rollup/rollup-android-arm-eabi@4.14.3': optional: true @@ -26491,6 +26460,45 @@ snapshots: '@rtsao/scc@1.1.0': {} + '@rushstack/node-core-library@5.23.1(@types/node@24.10.13)': + dependencies: + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + ajv-formats: 3.0.1(ajv@8.18.0) + fs-extra: 11.3.4 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.12 + semver: 7.7.4 + optionalDependencies: + '@types/node': 24.10.13 + + '@rushstack/problem-matcher@0.2.1(@types/node@24.10.13)': + optionalDependencies: + '@types/node': 24.10.13 + + '@rushstack/rig-package@0.7.3': + dependencies: + jju: 1.4.0 + resolve: 1.22.12 + + '@rushstack/terminal@0.24.0(@types/node@24.10.13)': + dependencies: + '@rushstack/node-core-library': 5.23.1(@types/node@24.10.13) + '@rushstack/problem-matcher': 0.2.1(@types/node@24.10.13) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 24.10.13 + + '@rushstack/ts-command-line@5.3.9(@types/node@24.10.13)': + dependencies: + '@rushstack/terminal': 0.24.0(@types/node@24.10.13) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + '@rushstack/worker-pool@0.4.9(@types/node@24.10.13)': optionalDependencies: '@types/node': 24.10.13 @@ -27013,7 +27021,7 @@ snapshots: babel-dead-code-elimination: 1.0.12 diff: 8.0.3 pathe: 2.0.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 transitivePeerDependencies: - supports-color @@ -27039,8 +27047,8 @@ snapshots: '@testing-library/dom@10.4.1': dependencies: - '@babel/code-frame': 7.29.0 - '@babel/runtime': 7.29.2 + '@babel/code-frame': 7.29.7 + '@babel/runtime': 7.29.7 '@types/aria-query': 5.0.4 aria-query: 5.3.0 dom-accessibility-api: 0.5.16 @@ -27079,6 +27087,8 @@ snapshots: tslib: 2.8.1 optional: true + '@types/argparse@1.0.38': {} + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -27150,7 +27160,7 @@ snapshots: '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@types/estree-jsx@1.0.5': @@ -27495,7 +27505,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.4 + semver: 7.8.1 tsutils: 3.21.0(typescript@6.0.3) optionalDependencies: typescript: 6.0.3 @@ -27510,8 +27520,8 @@ snapshots: '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.4 - semver: 7.7.4 - tinyglobby: 0.2.15 + semver: 7.8.1 + tinyglobby: 0.2.17 ts-api-utils: 2.4.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -27527,7 +27537,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@6.0.3) eslint: 8.57.1 eslint-scope: 5.1.1 - semver: 7.7.4 + semver: 7.8.1 transitivePeerDependencies: - supports-color - typescript @@ -27578,7 +27588,7 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 perfect-debounce: 2.1.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 unplugin-utils: 0.3.1 '@unocss/config@66.6.6': @@ -27713,7 +27723,7 @@ snapshots: chokidar: 5.0.0 magic-string: 0.30.21 pathe: 2.0.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 unplugin-utils: 0.3.1 vite: 7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) @@ -27725,7 +27735,7 @@ snapshots: chokidar: 5.0.0 magic-string: 0.30.21 pathe: 2.0.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 unplugin: 2.3.11 unplugin-utils: 0.3.1 webpack: 5.105.2(esbuild@0.27.3) @@ -27746,7 +27756,7 @@ snapshots: '@vercel/nft@1.3.2(encoding@0.1.13)(rollup@4.59.0)': dependencies: '@mapbox/node-pre-gyp': 2.0.3(encoding@0.1.13) - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.4.0(rollup@4.59.0) acorn: 8.16.0 acorn-import-attributes: 1.9.5(acorn@8.16.0) async-sema: 3.1.1 @@ -27755,7 +27765,7 @@ snapshots: glob: 13.0.6 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.3 + picomatch: 4.0.4 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -27881,7 +27891,7 @@ snapshots: sirv: 3.0.2 tinyrainbow: 3.1.0 vitest: 4.1.8(@types/node@24.10.13)(@vitest/browser-playwright@4.1.8)(@vitest/browser-preview@4.1.8)(jsdom@24.1.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - msw @@ -27898,7 +27908,7 @@ snapshots: sirv: 3.0.2 tinyrainbow: 3.1.0 vitest: 4.1.8(@types/node@25.9.1)(@vitest/browser-playwright@4.1.8)(@vitest/browser-preview@4.1.8)(jsdom@24.1.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - msw @@ -27916,7 +27926,7 @@ snapshots: sirv: 3.0.2 tinyrainbow: 3.1.0 vitest: 4.1.8(@types/node@25.9.1)(@vitest/browser-playwright@4.1.8)(@vitest/browser-preview@4.1.8)(jsdom@24.1.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - msw @@ -28016,7 +28026,7 @@ snapshots: '@babel/types': 7.29.0 '@vue/babel-helper-vue-transform-on': 2.0.1 '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0) - '@vue/shared': 3.5.30 + '@vue/shared': 3.5.35 optionalDependencies: '@babel/core': 7.29.0 transitivePeerDependencies: @@ -28024,12 +28034,12 @@ snapshots: '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.0)': dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/parser': 7.29.2 - '@vue/compiler-sfc': 3.5.30 + '@babel/parser': 7.29.7 + '@vue/compiler-sfc': 3.5.35 transitivePeerDependencies: - supports-color @@ -28081,7 +28091,7 @@ snapshots: '@vue/shared': 3.4.21 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.8 + postcss: 8.5.15 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.30': @@ -28093,7 +28103,7 @@ snapshots: '@vue/shared': 3.5.30 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.8 + postcss: 8.5.15 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.35': @@ -28148,7 +28158,7 @@ snapshots: alien-signals: 3.1.2 muggle-string: 0.4.1 path-browserify: 1.0.1 - picomatch: 4.0.3 + picomatch: 4.0.4 '@vue/reactivity@3.4.21': dependencies: @@ -28472,10 +28482,18 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 + ajv-draft-04@1.0.0(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + ajv-formats@2.1.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 + ajv-formats@3.0.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + ajv-keywords@3.5.2(ajv@6.14.0): dependencies: ajv: 6.14.0 @@ -28590,7 +28608,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 appdirsjs@1.2.7: {} @@ -28772,6 +28790,15 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + autoprefixer@10.4.27(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001777 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + autoprefixer@10.4.27(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -29259,7 +29286,7 @@ snapshots: builtins@5.1.0: dependencies: - semver: 7.7.4 + semver: 7.8.1 bundle-name@4.1.0: dependencies: @@ -29333,11 +29360,11 @@ snapshots: dotenv: 17.3.1 exsolve: 1.0.8 giget: 3.2.0 - jiti: 2.6.1 + jiti: 2.7.0 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 2.1.0 - pkg-types: 2.3.0 + pkg-types: 2.3.1 rc9: 3.0.1 optionalDependencies: magicast: 0.5.2 @@ -29356,7 +29383,7 @@ snapshots: minipass-pipeline: 1.2.4 p-map: 7.0.4 ssri: 12.0.0 - tar: 7.5.11 + tar: 7.5.15 unique-filename: 4.0.0 cacheable-lookup@7.0.0: {} @@ -29870,7 +29897,7 @@ snapshots: cosmiconfig@8.3.6(typescript@6.0.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.2.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -29889,7 +29916,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.2.0 parse-json: 5.2.0 optionalDependencies: typescript: 6.0.3 @@ -29957,6 +29984,10 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 + css-declaration-sorter@7.3.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + css-declaration-sorter@7.3.1(postcss@8.5.8): dependencies: postcss: 8.5.8 @@ -29970,14 +30001,14 @@ snapshots: css-loader@6.11.0(@rspack/core@1.7.6(@swc/helpers@0.5.19))(webpack@5.105.2(@swc/core@1.15.13(@swc/helpers@0.5.19))): dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.8) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.8) - postcss-modules-scope: 3.2.1(postcss@8.5.8) - postcss-modules-values: 4.0.0(postcss@8.5.8) + icss-utils: 5.1.0(postcss@8.5.15) + postcss: 8.5.15 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.15) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.15) + postcss-modules-scope: 3.2.1(postcss@8.5.15) + postcss-modules-values: 4.0.0(postcss@8.5.15) postcss-value-parser: 4.2.0 - semver: 7.7.4 + semver: 7.8.1 optionalDependencies: '@rspack/core': 1.7.6(@swc/helpers@0.5.19) webpack: 5.105.2(@swc/core@1.15.13(@swc/helpers@0.5.19)) @@ -29985,9 +30016,9 @@ snapshots: css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(lightningcss@1.32.0)(webpack@5.105.2(@swc/core@1.15.13(@swc/helpers@0.5.19))): dependencies: '@jridgewell/trace-mapping': 0.3.31 - cssnano: 6.1.2(postcss@8.5.8) + cssnano: 6.1.2(postcss@8.5.15) jest-worker: 29.7.0 - postcss: 8.5.8 + postcss: 8.5.15 schema-utils: 4.3.3 serialize-javascript: 6.0.2 webpack: 5.105.2(@swc/core@1.15.13(@swc/helpers@0.5.19)) @@ -30036,16 +30067,50 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-advanced@6.1.2(postcss@8.5.8): + cssnano-preset-advanced@6.1.2(postcss@8.5.15): dependencies: - autoprefixer: 10.4.27(postcss@8.5.8) + autoprefixer: 10.4.27(postcss@8.5.15) browserslist: 4.28.1 - cssnano-preset-default: 6.1.2(postcss@8.5.8) - postcss: 8.5.8 - postcss-discard-unused: 6.0.5(postcss@8.5.8) - postcss-merge-idents: 6.0.3(postcss@8.5.8) - postcss-reduce-idents: 6.0.3(postcss@8.5.8) - postcss-zindex: 6.0.2(postcss@8.5.8) + cssnano-preset-default: 6.1.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-discard-unused: 6.0.5(postcss@8.5.15) + postcss-merge-idents: 6.0.3(postcss@8.5.15) + postcss-reduce-idents: 6.0.3(postcss@8.5.15) + postcss-zindex: 6.0.2(postcss@8.5.15) + + cssnano-preset-default@6.1.2(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + css-declaration-sorter: 7.3.1(postcss@8.5.15) + cssnano-utils: 4.0.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-calc: 9.0.1(postcss@8.5.15) + postcss-colormin: 6.1.0(postcss@8.5.15) + postcss-convert-values: 6.1.0(postcss@8.5.15) + postcss-discard-comments: 6.0.2(postcss@8.5.15) + postcss-discard-duplicates: 6.0.3(postcss@8.5.15) + postcss-discard-empty: 6.0.3(postcss@8.5.15) + postcss-discard-overridden: 6.0.2(postcss@8.5.15) + postcss-merge-longhand: 6.0.5(postcss@8.5.15) + postcss-merge-rules: 6.1.1(postcss@8.5.15) + postcss-minify-font-values: 6.1.0(postcss@8.5.15) + postcss-minify-gradients: 6.0.3(postcss@8.5.15) + postcss-minify-params: 6.1.0(postcss@8.5.15) + postcss-minify-selectors: 6.0.4(postcss@8.5.15) + postcss-normalize-charset: 6.0.2(postcss@8.5.15) + postcss-normalize-display-values: 6.0.2(postcss@8.5.15) + postcss-normalize-positions: 6.0.2(postcss@8.5.15) + postcss-normalize-repeat-style: 6.0.2(postcss@8.5.15) + postcss-normalize-string: 6.0.2(postcss@8.5.15) + postcss-normalize-timing-functions: 6.0.2(postcss@8.5.15) + postcss-normalize-unicode: 6.1.0(postcss@8.5.15) + postcss-normalize-url: 6.0.2(postcss@8.5.15) + postcss-normalize-whitespace: 6.0.2(postcss@8.5.15) + postcss-ordered-values: 6.0.2(postcss@8.5.15) + postcss-reduce-initial: 6.1.0(postcss@8.5.15) + postcss-reduce-transforms: 6.0.2(postcss@8.5.15) + postcss-svgo: 6.0.3(postcss@8.5.15) + postcss-unique-selectors: 6.0.4(postcss@8.5.15) cssnano-preset-default@6.1.2(postcss@8.5.8): dependencies: @@ -30081,6 +30146,40 @@ snapshots: postcss-svgo: 6.0.3(postcss@8.5.8) postcss-unique-selectors: 6.0.4(postcss@8.5.8) + cssnano-preset-default@7.0.11(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + css-declaration-sorter: 7.3.1(postcss@8.5.15) + cssnano-utils: 5.0.1(postcss@8.5.15) + postcss: 8.5.15 + postcss-calc: 10.1.1(postcss@8.5.15) + postcss-colormin: 7.0.6(postcss@8.5.15) + postcss-convert-values: 7.0.9(postcss@8.5.15) + postcss-discard-comments: 7.0.6(postcss@8.5.15) + postcss-discard-duplicates: 7.0.2(postcss@8.5.15) + postcss-discard-empty: 7.0.1(postcss@8.5.15) + postcss-discard-overridden: 7.0.1(postcss@8.5.15) + postcss-merge-longhand: 7.0.5(postcss@8.5.15) + postcss-merge-rules: 7.0.8(postcss@8.5.15) + postcss-minify-font-values: 7.0.1(postcss@8.5.15) + postcss-minify-gradients: 7.0.1(postcss@8.5.15) + postcss-minify-params: 7.0.6(postcss@8.5.15) + postcss-minify-selectors: 7.0.6(postcss@8.5.15) + postcss-normalize-charset: 7.0.1(postcss@8.5.15) + postcss-normalize-display-values: 7.0.1(postcss@8.5.15) + postcss-normalize-positions: 7.0.1(postcss@8.5.15) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.15) + postcss-normalize-string: 7.0.1(postcss@8.5.15) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.15) + postcss-normalize-unicode: 7.0.6(postcss@8.5.15) + postcss-normalize-url: 7.0.1(postcss@8.5.15) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.15) + postcss-ordered-values: 7.0.2(postcss@8.5.15) + postcss-reduce-initial: 7.0.6(postcss@8.5.15) + postcss-reduce-transforms: 7.0.1(postcss@8.5.15) + postcss-svgo: 7.1.1(postcss@8.5.15) + postcss-unique-selectors: 7.0.5(postcss@8.5.15) + cssnano-preset-default@7.0.11(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -30115,20 +30214,40 @@ snapshots: postcss-svgo: 7.1.1(postcss@8.5.8) postcss-unique-selectors: 7.0.5(postcss@8.5.8) + cssnano-utils@4.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + cssnano-utils@4.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 + cssnano-utils@5.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + cssnano-utils@5.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 + cssnano@6.1.2(postcss@8.5.15): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.5.15) + lilconfig: 3.1.3 + postcss: 8.5.15 + cssnano@6.1.2(postcss@8.5.8): dependencies: cssnano-preset-default: 6.1.2(postcss@8.5.8) lilconfig: 3.1.3 postcss: 8.5.8 + cssnano@7.1.3(postcss@8.5.15): + dependencies: + cssnano-preset-default: 7.0.11(postcss@8.5.15) + lilconfig: 3.1.3 + postcss: 8.5.15 + cssnano@7.1.3(postcss@8.5.8): dependencies: cssnano-preset-default: 7.0.11(postcss@8.5.8) @@ -30488,7 +30607,7 @@ snapshots: dotenv-expand@11.0.7: dependencies: - dotenv: 16.4.7 + dotenv: 16.6.1 dotenv@16.4.7: {} @@ -30657,7 +30776,7 @@ snapshots: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 @@ -30725,11 +30844,11 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 es-to-primitive@1.3.0: dependencies: @@ -30861,7 +30980,7 @@ snapshots: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.11 + resolve: 1.22.12 transitivePeerDependencies: - supports-color @@ -30883,7 +31002,7 @@ snapshots: eslint-plugin-ft-flow@2.0.3(@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: - '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1) + '@babel/eslint-parser': 7.28.6(@babel/core@7.29.7)(eslint@8.57.1) eslint: 8.57.1 lodash: 4.17.23 string-natural-compare: 3.0.1 @@ -31059,7 +31178,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-build-jsx@3.0.1: dependencies: @@ -31395,10 +31514,6 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -31549,7 +31664,7 @@ snapshots: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.2 + hasown: 2.0.4 mime-types: 2.1.35 format@0.2.2: {} @@ -31643,7 +31758,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.2 + hasown: 2.0.4 is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -31672,7 +31787,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-nonce@1.0.1: {} @@ -31719,9 +31834,9 @@ snapshots: dependencies: citty: 0.1.6 consola: 3.4.2 - defu: 6.1.4 + defu: 6.1.7 node-fetch-native: 1.6.7 - nypm: 0.6.5 + nypm: 0.6.6 pathe: 2.0.3 giget@3.1.2: {} @@ -31901,7 +32016,7 @@ snapshots: iron-webcrypto: 1.2.1 node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.3 + ufo: 1.6.4 uncrypto: 0.1.3 h3@1.15.6: @@ -31916,11 +32031,6 @@ snapshots: ufo: 1.6.3 uncrypto: 0.1.3 - h3@2.0.1-rc.11: - dependencies: - rou3: 0.7.12 - srvx: 0.10.1 - h3@2.0.1-rc.20: dependencies: rou3: 0.8.1 @@ -32002,7 +32112,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -32163,7 +32273,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.1 + terser: 5.48.0 html-minifier-terser@7.2.0: dependencies: @@ -32173,7 +32283,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.1 + terser: 5.48.0 html-tags@3.3.1: {} @@ -32299,9 +32409,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.8): + icss-utils@5.1.0(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 idb@7.1.1: {} @@ -32393,7 +32503,7 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.2 + hasown: 2.0.4 side-channel: 1.1.0 interpret@3.1.1: {} @@ -32614,14 +32724,14 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 is-regex@1.2.1: dependencies: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 is-regexp@1.0.0: {} @@ -32727,7 +32837,7 @@ snapshots: '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.4 + semver: 7.8.1 transitivePeerDependencies: - supports-color @@ -32978,7 +33088,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -33015,7 +33125,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.11 + resolve: 1.22.12 resolve.exports: 2.0.3 slash: 3.0.0 @@ -33093,7 +33203,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.4 + semver: 7.8.1 transitivePeerDependencies: - supports-color @@ -33104,7 +33214,7 @@ snapshots: chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 - picomatch: 2.3.1 + picomatch: 2.3.2 jest-validate@29.7.0: dependencies: @@ -33159,6 +33269,8 @@ snapshots: jiti@2.7.0: {} + jju@1.4.0: {} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -33215,7 +33327,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.19.0 + ws: 8.21.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -33454,16 +33566,16 @@ snapshots: clipboardy: 4.0.0 consola: 3.4.2 crossws: 0.3.5 - defu: 6.1.4 + defu: 6.1.7 get-port-please: 3.2.0 - h3: 1.15.6 + h3: 1.15.11 http-shutdown: 1.2.2 jiti: 2.6.1 mlly: 1.8.1 node-forge: 1.3.3 pathe: 1.1.2 std-env: 3.10.0 - ufo: 1.6.3 + ufo: 1.6.4 untun: 0.1.3 uqr: 0.1.2 @@ -33500,8 +33612,8 @@ snapshots: local-pkg@1.1.2: dependencies: - mlly: 1.8.1 - pkg-types: 2.3.0 + mlly: 1.8.2 + pkg-types: 2.3.1 quansync: 0.2.11 localforage@1.10.0: @@ -33658,7 +33770,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.4 + semver: 7.8.1 make-empty-dir@3.0.2: dependencies: @@ -34160,12 +34272,12 @@ snapshots: metro-minify-terser@0.83.4: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.46.1 + terser: 5.48.0 metro-minify-terser@0.83.5: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.46.1 + terser: 5.48.0 metro-resolver@0.83.3: dependencies: @@ -34450,7 +34562,7 @@ snapshots: serialize-error: 2.1.0 source-map: 0.5.7 throat: 5.0.0 - ws: 7.5.10 + ws: 7.5.11 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -34459,7 +34571,7 @@ snapshots: metro@0.83.5: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/core': 7.29.0 '@babel/generator': 7.29.1 '@babel/parser': 7.29.2 @@ -34497,7 +34609,7 @@ snapshots: serialize-error: 2.1.0 source-map: 0.5.7 throat: 5.0.0 - ws: 7.5.10 + ws: 7.5.11 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -34602,7 +34714,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -34613,7 +34725,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -34630,7 +34742,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -34666,7 +34778,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -34740,7 +34852,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -34854,6 +34966,10 @@ snapshots: minimalistic-assert@1.0.1: {} + minimatch@10.2.3: + dependencies: + brace-expansion: 5.0.3 + minimatch@10.2.4: dependencies: brace-expansion: 5.0.3 @@ -34966,7 +35082,7 @@ snapshots: acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.3 + ufo: 1.6.4 mocha@10.8.2: dependencies: @@ -35087,7 +35203,7 @@ snapshots: '@rollup/plugin-terser': 0.4.4(rollup@4.59.0) '@vercel/nft': 1.3.2(encoding@0.1.13)(rollup@4.59.0) archiver: 7.0.1 - c12: 3.3.3(magicast@0.5.2) + c12: 3.3.4(magicast@0.5.2) chokidar: 5.0.0 citty: 0.1.6 compatx: 0.2.0 @@ -35097,7 +35213,7 @@ snapshots: croner: 9.1.0 crossws: 0.3.5 db0: 0.3.4(better-sqlite3@12.10.0)(drizzle-orm@0.44.7(@op-engineering/op-sqlite@15.2.7(react-native@0.84.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(@types/better-sqlite3@7.6.13)(@types/sql.js@1.4.9)(better-sqlite3@12.10.0)(kysely@0.28.11)(sql.js@1.14.0)) - defu: 6.1.4 + defu: 6.1.7 destr: 2.0.5 dot-prop: 10.1.0 esbuild: 0.27.3 @@ -35106,7 +35222,7 @@ snapshots: exsolve: 1.0.8 globby: 16.1.1 gzip-size: 7.0.0 - h3: 1.15.6 + h3: 1.15.11 hookable: 5.5.3 httpxy: 0.1.7 ioredis: 5.10.0 @@ -35130,12 +35246,12 @@ snapshots: rollup: 4.59.0 rollup-plugin-visualizer: 6.0.11(rollup@4.59.0) scule: 1.3.0 - semver: 7.7.4 + semver: 7.8.1 serve-placeholder: 2.0.2 serve-static: 2.2.1 source-map: 0.7.6 std-env: 3.10.0 - ufo: 1.6.3 + ufo: 1.6.4 ultrahtml: 1.6.0 uncrypto: 0.1.3 unctx: 2.5.0 @@ -35187,7 +35303,7 @@ snapshots: node-abi@3.87.0: dependencies: - semver: 7.7.4 + semver: 7.8.1 node-addon-api@7.1.1: {} @@ -35227,9 +35343,9 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.4 - tar: 7.5.11 - tinyglobby: 0.2.15 + semver: 7.8.1 + tar: 7.5.15 + tinyglobby: 0.2.17 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -35265,14 +35381,14 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.11 + resolve: 1.22.12 semver: 5.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@7.0.1: dependencies: hosted-git-info: 8.1.0 - semver: 7.7.4 + semver: 7.8.1 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -35460,7 +35576,7 @@ snapshots: dependencies: citty: 0.2.1 pathe: 2.0.3 - tinyexec: 1.0.2 + tinyexec: 1.2.4 nypm@0.6.6: dependencies: @@ -35833,7 +35949,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.1.1 registry-url: 6.0.1 - semver: 7.7.4 + semver: 7.8.1 package-manager-detector@1.6.0: {} @@ -35873,7 +35989,7 @@ snapshots: parse-npm-tarball-url@4.0.0: dependencies: - semver: 7.7.4 + semver: 7.8.1 parse-numeric-range@1.3.0: {} @@ -36055,12 +36171,24 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 + postcss-calc@10.1.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + postcss-calc@10.1.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 + postcss-calc@9.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + postcss-calc@9.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 @@ -36093,6 +36221,14 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-colormin@6.1.0(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-colormin@6.1.0(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36101,6 +36237,14 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-colormin@7.0.6(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-colormin@7.0.6(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36109,12 +36253,24 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-convert-values@6.1.0(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-convert-values@6.1.0(postcss@8.5.8): dependencies: browserslist: 4.28.1 postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-convert-values@7.0.9(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-convert-values@7.0.9(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36151,42 +36307,75 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 + postcss-discard-comments@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-comments@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-discard-comments@7.0.6(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 7.1.1 + postcss-discard-comments@7.0.6(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-selector-parser: 7.1.1 + postcss-discard-duplicates@6.0.3(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-duplicates@6.0.3(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-discard-duplicates@7.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-duplicates@7.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-discard-empty@6.0.3(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-empty@6.0.3(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-discard-empty@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-empty@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-discard-overridden@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-overridden@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-discard-overridden@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-discard-overridden@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 - postcss-discard-unused@6.0.5(postcss@8.5.8): + postcss-discard-unused@6.0.5(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 postcss-selector-parser: 6.1.2 postcss-double-position-gradients@6.0.4(postcss@8.5.8): @@ -36234,7 +36423,7 @@ snapshots: cosmiconfig: 8.3.6(typescript@6.0.3) jiti: 1.21.7 postcss: 8.5.8 - semver: 7.7.4 + semver: 7.8.1 webpack: 5.105.2(@swc/core@1.15.13(@swc/helpers@0.5.19)) transitivePeerDependencies: - typescript @@ -36244,11 +36433,17 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 - postcss-merge-idents@6.0.3(postcss@8.5.8): + postcss-merge-idents@6.0.3(postcss@8.5.15): dependencies: - cssnano-utils: 4.0.2(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 4.0.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + + postcss-merge-longhand@6.0.5(postcss@8.5.15): + dependencies: + postcss: 8.5.15 postcss-value-parser: 4.2.0 + stylehacks: 6.1.1(postcss@8.5.15) postcss-merge-longhand@6.0.5(postcss@8.5.8): dependencies: @@ -36256,12 +36451,26 @@ snapshots: postcss-value-parser: 4.2.0 stylehacks: 6.1.1(postcss@8.5.8) + postcss-merge-longhand@7.0.5(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.8(postcss@8.5.15) + postcss-merge-longhand@7.0.5(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 stylehacks: 7.0.8(postcss@8.5.8) + postcss-merge-rules@6.1.1(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-selector-parser: 6.1.2 + postcss-merge-rules@6.1.1(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36270,6 +36479,14 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 6.1.2 + postcss-merge-rules@7.0.8(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.1(postcss@8.5.15) + postcss: 8.5.15 + postcss-selector-parser: 7.1.1 + postcss-merge-rules@7.0.8(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36278,16 +36495,33 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 + postcss-minify-font-values@6.1.0(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-minify-font-values@6.1.0(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-minify-font-values@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-minify-font-values@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-minify-gradients@6.0.3(postcss@8.5.15): + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-minify-gradients@6.0.3(postcss@8.5.8): dependencies: colord: 2.9.3 @@ -36295,6 +36529,13 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-minify-gradients@7.0.1(postcss@8.5.15): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.1(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-minify-gradients@7.0.1(postcss@8.5.8): dependencies: colord: 2.9.3 @@ -36302,6 +36543,13 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-minify-params@6.1.0(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + cssnano-utils: 4.0.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-minify-params@6.1.0(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36309,6 +36557,13 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-minify-params@7.0.6(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + cssnano-utils: 5.0.1(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-minify-params@7.0.6(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -36316,37 +36571,48 @@ snapshots: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-minify-selectors@6.0.4(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 6.1.2 + postcss-minify-selectors@6.0.4(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-selector-parser: 6.1.2 + postcss-minify-selectors@7.0.6(postcss@8.5.15): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.15 + postcss-selector-parser: 7.1.1 + postcss-minify-selectors@7.0.6(postcss@8.5.8): dependencies: cssesc: 3.0.0 postcss: 8.5.8 postcss-selector-parser: 7.1.1 - postcss-modules-extract-imports@3.1.0(postcss@8.5.8): + postcss-modules-extract-imports@3.1.0(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 - postcss-modules-local-by-default@4.2.0(postcss@8.5.8): + postcss-modules-local-by-default@4.2.0(postcss@8.5.15): dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 + icss-utils: 5.1.0(postcss@8.5.15) + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.8): + postcss-modules-scope@3.2.1(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 - postcss-modules-values@4.0.0(postcss@8.5.8): + postcss-modules-values@4.0.0(postcss@8.5.15): dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 + icss-utils: 5.1.0(postcss@8.5.15) + postcss: 8.5.15 postcss-nested@7.0.2(postcss@8.5.8): dependencies: @@ -36360,91 +36626,181 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 + postcss-normalize-charset@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-normalize-charset@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-normalize-charset@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-normalize-charset@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 + postcss-normalize-display-values@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-display-values@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-display-values@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-display-values@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-positions@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-positions@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-positions@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-positions@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-repeat-style@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-string@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-string@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-string@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-string@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-timing-functions@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-unicode@6.1.0(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-unicode@6.1.0(postcss@8.5.8): dependencies: browserslist: 4.28.1 postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-unicode@7.0.6(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-unicode@7.0.6(postcss@8.5.8): dependencies: browserslist: 4.28.1 postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-url@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-url@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-url@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-url@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-normalize-whitespace@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 @@ -36454,12 +36810,24 @@ snapshots: dependencies: postcss: 8.5.8 + postcss-ordered-values@6.0.2(postcss@8.5.15): + dependencies: + cssnano-utils: 4.0.2(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-ordered-values@6.0.2(postcss@8.5.8): dependencies: cssnano-utils: 4.0.2(postcss@8.5.8) postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-ordered-values@7.0.2(postcss@8.5.15): + dependencies: + cssnano-utils: 5.0.1(postcss@8.5.15) + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-ordered-values@7.0.2(postcss@8.5.8): dependencies: cssnano-utils: 5.0.1(postcss@8.5.8) @@ -36560,28 +36928,50 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 7.1.1 - postcss-reduce-idents@6.0.3(postcss@8.5.8): + postcss-reduce-idents@6.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 postcss-value-parser: 4.2.0 + postcss-reduce-initial@6.1.0(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.5.15 + postcss-reduce-initial@6.1.0(postcss@8.5.8): dependencies: browserslist: 4.28.1 caniuse-api: 3.0.0 postcss: 8.5.8 + postcss-reduce-initial@7.0.6(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + caniuse-api: 3.0.0 + postcss: 8.5.15 + postcss-reduce-initial@7.0.6(postcss@8.5.8): dependencies: browserslist: 4.28.1 caniuse-api: 3.0.0 postcss: 8.5.8 + postcss-reduce-transforms@6.0.2(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-reduce-transforms@6.0.2(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 + postcss-reduce-transforms@7.0.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + postcss-reduce-transforms@7.0.1(postcss@8.5.8): dependencies: postcss: 8.5.8 @@ -36606,28 +36996,50 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sort-media-queries@5.2.0(postcss@8.5.8): + postcss-sort-media-queries@5.2.0(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 sort-css-media-queries: 2.2.0 + postcss-svgo@6.0.3(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + postcss-svgo@6.0.3(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 svgo: 3.3.2 + postcss-svgo@7.1.1(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + svgo: 4.0.1 + postcss-svgo@7.1.1(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-value-parser: 4.2.0 svgo: 4.0.1 + postcss-unique-selectors@6.0.4(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 6.1.2 + postcss-unique-selectors@6.0.4(postcss@8.5.8): dependencies: postcss: 8.5.8 postcss-selector-parser: 6.1.2 + postcss-unique-selectors@7.0.5(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 7.1.1 + postcss-unique-selectors@7.0.5(postcss@8.5.8): dependencies: postcss: 8.5.8 @@ -36635,9 +37047,9 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss-zindex@6.0.2(postcss@8.5.8): + postcss-zindex@6.0.2(postcss@8.5.15): dependencies: - postcss: 8.5.8 + postcss: 8.5.15 postcss@8.4.49: dependencies: @@ -36888,7 +37300,7 @@ snapshots: rc9@2.1.2: dependencies: - defu: 6.1.4 + defu: 6.1.7 destr: 2.0.5 rc9@3.0.0: @@ -37004,10 +37416,10 @@ snapshots: react-native-safe-area-context: 5.7.0(react-native@0.84.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) use-latest-callback: 0.2.6(react@19.2.4) - react-native-quick-base64@2.2.2(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4): + react-native-quick-base64@2.2.2(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4): dependencies: react: 19.2.4 - react-native: 0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) + react-native: 0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4) react-native-quick-base64@2.2.2(react-native@0.84.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4): dependencies: @@ -37019,20 +37431,20 @@ snapshots: react: 19.2.4 react-native: 0.84.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4) - react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4): + react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.83.1 - '@react-native/codegen': 0.83.1(@babel/core@7.29.0) - '@react-native/community-cli-plugin': 0.83.1(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0)) + '@react-native/codegen': 0.83.1(@babel/core@7.29.7) + '@react-native/community-cli-plugin': 0.83.1(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7)) '@react-native/gradle-plugin': 0.83.1 '@react-native/js-polyfills': 0.83.1 '@react-native/normalize-colors': 0.83.1 - '@react-native/virtualized-lists': 0.83.1(@types/react@19.2.14)(react-native@0.83.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + '@react-native/virtualized-lists': 0.83.1(@types/react@19.2.14)(react-native@0.83.1(@babel/core@7.29.7)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.7))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.29.0) + babel-jest: 29.7.0(@babel/core@7.29.7) babel-plugin-syntax-hermes-parser: 0.32.0 base64-js: 1.5.1 commander: 12.1.0 @@ -37314,7 +37726,7 @@ snapshots: read-yaml-file@2.1.0: dependencies: - js-yaml: 4.1.1 + js-yaml: 4.2.0 strip-bom: 4.0.0 readable-stream@2.3.8: @@ -37347,7 +37759,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 readdirp@4.1.2: {} @@ -37365,7 +37777,7 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.11 + resolve: 1.22.12 recma-build-jsx@1.0.0: dependencies: @@ -37384,7 +37796,7 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 @@ -37642,7 +38054,7 @@ snapshots: resolve@2.0.0-next.6: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.1 + is-core-module: 2.16.2 node-exports-info: 1.6.0 object-keys: 1.1.1 path-parse: 1.0.7 @@ -37710,7 +38122,7 @@ snapshots: rollup-plugin-visualizer@6.0.11(rollup@4.59.0): dependencies: open: 8.4.2 - picomatch: 4.0.3 + picomatch: 4.0.4 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: @@ -37913,7 +38325,7 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.7.4 + semver: 7.8.1 semver-utils@1.1.4: {} @@ -38001,7 +38413,7 @@ snapshots: serve-placeholder@2.0.2: dependencies: - defu: 6.1.4 + defu: 6.1.7 serve-static@1.16.3: dependencies: @@ -38346,8 +38758,6 @@ snapshots: srcset@4.0.0: {} - srvx@0.10.1: {} - srvx@0.11.16: {} srvx@0.11.9: {} @@ -38389,8 +38799,6 @@ snapshots: std-env@3.10.0: {} - std-env@4.0.0: {} - std-env@4.1.0: {} stop-iteration-iterator@1.1.0: @@ -38566,12 +38974,24 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + stylehacks@6.1.1(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.15 + postcss-selector-parser: 6.1.2 + stylehacks@6.1.1(postcss@8.5.8): dependencies: browserslist: 4.28.1 postcss: 8.5.8 postcss-selector-parser: 6.1.2 + stylehacks@7.0.8(postcss@8.5.15): + dependencies: + browserslist: 4.28.1 + postcss: 8.5.15 + postcss-selector-parser: 7.1.1 + stylehacks@7.0.8(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -38801,13 +39221,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - terser@5.46.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 - commander: 2.20.3 - source-map-support: 0.5.21 - terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -38861,14 +39274,12 @@ snapshots: tinyclip@0.1.12: {} - tinyexec@1.0.2: {} - tinyexec@1.2.4: {} tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyglobby@0.2.17: dependencies: @@ -39137,6 +39548,8 @@ snapshots: typescript@5.6.1-rc: {} + typescript@5.9.3: {} + typescript@6.0.3: {} uc.micro@2.1.0: {} @@ -39205,8 +39618,8 @@ snapshots: unconfig@7.5.0: dependencies: '@quansync/fs': 1.0.0 - defu: 6.1.4 - jiti: 2.6.1 + defu: 6.1.7 + jiti: 2.7.0 quansync: 1.0.0 unconfig-core: 7.5.0 @@ -39277,11 +39690,11 @@ snapshots: magic-string: 0.30.21 mlly: 1.8.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 pkg-types: 2.3.0 scule: 1.3.0 strip-literal: 3.1.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 unplugin: 2.3.11 unplugin-utils: 0.3.1 @@ -39363,7 +39776,7 @@ snapshots: unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 unplugin-vue-router@0.19.2(@vue/compiler-sfc@3.5.35)(vue-router@4.6.4(vue@3.5.30(typescript@6.0.3)))(vue@3.5.30(typescript@6.0.3)): dependencies: @@ -39379,9 +39792,9 @@ snapshots: mlly: 1.8.1 muggle-string: 0.4.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 scule: 1.3.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 unplugin: 2.3.11 unplugin-utils: 0.3.1 yaml: 2.8.2 @@ -39394,13 +39807,13 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unplugin@3.0.0: dependencies: '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 unstorage@1.17.4(db0@0.3.4(better-sqlite3@12.10.0)(drizzle-orm@0.44.7(@op-engineering/op-sqlite@15.2.7(react-native@0.84.1(@babel/core@7.29.0)(@react-native-community/cli@20.0.0(typescript@6.0.3))(@react-native/metro-config@0.83.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(@types/better-sqlite3@7.6.13)(@types/sql.js@1.4.9)(better-sqlite3@12.10.0)(kysely@0.28.11)(sql.js@1.14.0)))(ioredis@5.10.0): @@ -39438,9 +39851,9 @@ snapshots: exsolve: 1.0.8 knitwork: 1.3.0 magic-string: 0.30.21 - mlly: 1.8.1 + mlly: 1.8.2 pathe: 2.0.3 - pkg-types: 2.3.0 + pkg-types: 2.3.1 upath@1.2.0: {} @@ -39571,7 +39984,7 @@ snapshots: version-selector-type@3.0.0: dependencies: - semver: 7.7.4 + semver: 7.8.1 vfile-location@5.0.3: dependencies: @@ -39624,9 +40037,9 @@ snapshots: chokidar: 4.0.3 npm-run-path: 6.0.0 picocolors: 1.1.1 - picomatch: 4.0.3 + picomatch: 4.0.4 tiny-invariant: 1.3.3 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 vite: 7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) vscode-uri: 3.1.0 optionalDependencies: @@ -39701,11 +40114,11 @@ snapshots: vite@7.3.1(@types/node@24.10.13)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0): dependencies: esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.8 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 rollup: 4.59.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.10.13 fsevents: 2.3.3 @@ -39718,11 +40131,11 @@ snapshots: vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0): dependencies: esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.8 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 rollup: 4.59.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.1 fsevents: 2.3.3 @@ -39735,11 +40148,11 @@ snapshots: vite@7.3.1(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0): dependencies: esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.8 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 rollup: 4.59.0 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.9.1 fsevents: 2.3.3 @@ -39749,28 +40162,9 @@ snapshots: tsx: 4.21.0 yaml: 2.9.0 - vitest-environment-nuxt@1.0.1(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8): - dependencies: - '@nuxt/test-utils': 4.0.0(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8) - transitivePeerDependencies: - - '@cucumber/cucumber' - - '@jest/globals' - - '@playwright/test' - - '@testing-library/vue' - - '@vitest/ui' - - '@vue/test-utils' - - crossws - - happy-dom - - jsdom - - magicast - - playwright-core - - typescript - - vite - - vitest - vitest-environment-nuxt@2.0.0(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8): dependencies: - '@nuxt/test-utils': 4.0.0(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8) + '@nuxt/test-utils': 4.0.3(jsdom@24.1.3)(magicast@0.5.2)(playwright-core@1.58.2)(typescript@6.0.3)(vite@7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.8) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -39801,11 +40195,11 @@ snapshots: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 4.0.0 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 7.3.1(@types/node@24.10.13)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) why-is-node-running: 2.3.0 @@ -39831,11 +40225,11 @@ snapshots: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 4.0.0 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 7.3.1(@types/node@25.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) why-is-node-running: 2.3.0 @@ -39861,11 +40255,11 @@ snapshots: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 4.0.0 + picomatch: 4.0.4 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 7.3.1(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) why-is-node-running: 2.3.0 @@ -39883,7 +40277,7 @@ snapshots: vue-bundle-renderer@2.2.0: dependencies: - ufo: 1.6.3 + ufo: 1.6.4 vue-demi@0.14.10(vue@3.5.30(typescript@6.0.3)): dependencies: @@ -40379,7 +40773,7 @@ snapshots: '@babel/preset-env': 7.29.7(@babel/core@7.29.7) '@babel/runtime': 7.29.7 '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.7)(@types/babel__core@7.20.5)(rollup@2.80.0) - '@rollup/plugin-node-resolve': 15.3.1(rollup@2.80.0) + '@rollup/plugin-node-resolve': 15.2.3(rollup@2.80.0) '@rollup/plugin-replace': 2.4.2(rollup@2.80.0) '@rollup/plugin-terser': 0.4.4(rollup@2.80.0) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -40523,7 +40917,7 @@ snapshots: write-yaml-file@5.0.0: dependencies: - js-yaml: 4.1.1 + js-yaml: 4.2.0 write-file-atomic: 5.0.1 ws@6.2.3: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 21c9d97e6..bbc3d5b04 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,6 +11,7 @@ overrides: catalog: '@journeyapps/wa-sqlite': ^1.5.0 + '@microsoft/api-extractor': ^7.58.7 '@nuxt/devtools-kit': ^3.2.3 '@nuxt/devtools-ui-kit': ^3.2.3 '@nuxt/test-utils': ^4.0.3 From 3fbc499d94a66c5feb476e89d4c0da41ff286ade Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Tue, 2 Jun 2026 12:05:30 +0200 Subject: [PATCH 2/3] Update warnings --- packages/common/etc/common.api.md | 2 +- packages/common/src/db/crud/SyncStatus.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/common/etc/common.api.md b/packages/common/etc/common.api.md index 1f16e563e..661c20019 100644 --- a/packages/common/etc/common.api.md +++ b/packages/common/etc/common.api.md @@ -2433,7 +2433,7 @@ export interface WithDiffOptions { // Warnings were encountered during analysis: // // src/db/crud/SyncStatus.ts:28:3 - (ae-forgotten-export) The symbol "InternalProgressInformation" needs to be exported by the entry point index.d.ts -// src/db/crud/SyncStatus.ts:29:3 - (ae-forgotten-export) The symbol "CoreStreamSubscription" needs to be exported by the entry point index.d.ts +// src/db/crud/SyncStatus.ts:32:1 - (ae-forgotten-export) The symbol "CoreStreamSubscription" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/packages/common/src/db/crud/SyncStatus.ts b/packages/common/src/db/crud/SyncStatus.ts index 69eab5657..77ee7d1de 100644 --- a/packages/common/src/db/crud/SyncStatus.ts +++ b/packages/common/src/db/crud/SyncStatus.ts @@ -23,9 +23,12 @@ export type SyncDataFlowStatus = Partial<{ /** * Internal information about how far we are downloading operations in buckets. * - * Please use the {@link SyncStatus#downloadProgress} property to track sync progress. + * @internal Please use the {@link SyncStatus#downloadProgress} property to track sync progress. */ downloadProgress: InternalProgressInformation | null; + /** + * @internal + */ internalStreamSubscriptions: CoreStreamSubscription[] | null; }>; From 8a0aa31e4e7759520ac2778eddc4453ad31fcd44 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Fri, 5 Jun 2026 10:17:11 +0200 Subject: [PATCH 3/3] Re-generate --- packages/common/etc/common.api.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/common/etc/common.api.md b/packages/common/etc/common.api.md index 661c20019..4d34fd885 100644 --- a/packages/common/etc/common.api.md +++ b/packages/common/etc/common.api.md @@ -2297,11 +2297,13 @@ export type WatchedAttachmentItem = { filename: string; fileExtension?: never; metaData?: string; + mediaType?: string; } | { id: string; fileExtension: string; filename?: never; metaData?: string; + mediaType?: string; }; // Warning: (ae-forgotten-export) The symbol "MetaBaseObserverInterface" needs to be exported by the entry point index.d.ts @@ -2432,8 +2434,8 @@ export interface WithDiffOptions { // Warnings were encountered during analysis: // -// src/db/crud/SyncStatus.ts:28:3 - (ae-forgotten-export) The symbol "InternalProgressInformation" needs to be exported by the entry point index.d.ts -// src/db/crud/SyncStatus.ts:32:1 - (ae-forgotten-export) The symbol "CoreStreamSubscription" needs to be exported by the entry point index.d.ts +// lib/db/crud/SyncStatus.d.ts:27:5 - (ae-forgotten-export) The symbol "InternalProgressInformation" needs to be exported by the entry point index.d.ts +// lib/db/crud/SyncStatus.d.ts:31:5 - (ae-forgotten-export) The symbol "CoreStreamSubscription" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package)