From 272a16bcaff8697d717f2b1b6356e83de664ad6a Mon Sep 17 00:00:00 2001 From: Vadym Parakonnyi Date: Thu, 21 Mar 2024 16:52:55 +0100 Subject: [PATCH] Feat: introduce streamlit integration (#68) * Streamlit Integration: Introduces RxDB integration within Streamlit environments, e.g. managing RxDB collection as dataframe in Streamlit * Project Structure Refactoring: Refactors tokens names, import statements and project structure to conform to framework-agnostic approach (import & compile service(s) under non-Angular environment) --- .eslintignore | 1 + .vscode/launch.json | 50 +- .vscode/settings.json | 6 +- README.md | 22 +- examples/demo/src/app/app.module.ts | 2 + examples/demo/src/app/todos/todos.module.ts | 6 +- examples/demo/src/app/todos/todos.pipe.ts | 2 +- examples/demo/src/app/todos/todos.service.ts | 8 +- examples/shared/index.ts | 2 +- examples/shared/todos.schema.ts | 41 + examples/standalone/src/app/app.config.ts | 2 + nx.json | 60 +- package-lock.json | 9194 ++++++++++++++--- package.json | 34 +- packages/rxdb/README.md | 31 +- packages/rxdb/collection/src/index.ts | 1 - .../collection/src/lib/collection.module.ts | 19 - .../src/lib/collection.service.spec.ts | 24 +- .../collection/src/lib/collection.service.ts | 39 +- packages/rxdb/collection/src/lib/helpers.ts | 32 +- packages/rxdb/config/src/lib/config.ts | 15 +- packages/rxdb/core/src/index.ts | 1 - packages/rxdb/core/src/lib/plugin.loader.ts | 14 +- packages/rxdb/core/src/lib/service.spec.ts | 14 +- packages/rxdb/core/src/lib/service.ts | 21 +- packages/rxdb/prepare/README.md | 3 + packages/rxdb/prepare/ng-package.json | 5 + packages/rxdb/prepare/src/index.ts | 1 + .../src/lib/prepare.plugin.spec.ts | 0 .../src/lib/prepare.plugin.ts | 2 +- packages/rxdb/query-params/src/index.ts | 1 - packages/rxdb/query-params/src/tokens.ts | 39 - .../src/with-collection-service.spec.ts | 18 +- .../signals/src/with-collection-service.ts | 9 +- .../rxdb/sonar-project.properties | 0 packages/rxdb/src/lib/rxdb.module.puml | 10 +- packages/rxdb/src/lib/rxdb.module.spec.ts | 30 +- packages/rxdb/src/lib/rxdb.module.ts | 31 +- .../lib/rxdb.providers.spec.ts} | 4 +- packages/rxdb/src/lib/rxdb.providers.ts | 106 +- packages/rxdb/testing/src/lib/mocks.ts | 7 +- packages/rxdb/utils/src/lib/utils.ts | 73 +- .../.streamlit/config.toml | 12 + packages/streamlit-rxdb-dataframe/LICENSE | 19 + packages/streamlit-rxdb-dataframe/MANIFEST.in | 1 + packages/streamlit-rxdb-dataframe/README.md | 183 + .../streamlit-rxdb-dataframe/e2e/e2e_utils.py | 172 + .../e2e/test_rxdb_dataframe.py | 36 + packages/streamlit-rxdb-dataframe/example.py | 115 + packages/streamlit-rxdb-dataframe/poetry.lock | 1551 +++ .../streamlit-rxdb-dataframe/pyproject.toml | 84 + .../rxdb_dataframe/__init__.py | 264 + .../rxdb_dataframe/frontend/.eslintignore | 1 + .../rxdb_dataframe/frontend/.eslintrc.json | 18 + .../frontend/build/assets/data/col.dump.json | 27 + .../frontend/build/assets/data/db.dump.json | 33 + .../build/assets/data/todo.schema.json | 44 + .../rxdb_dataframe/frontend/build/index.html | 13 + .../rxdb_dataframe/frontend/build/index.js | 92 + .../frontend/build/index.js.map | 1 + .../rxdb_dataframe/frontend/index.html | 13 + .../rxdb_dataframe/frontend/project.json | 8 + .../frontend/public/assets/data/col.dump.json | 27 + .../frontend/public/assets/data/db.dump.json | 33 + .../public/assets/data/todo.schema.json | 44 + .../frontend/src/lib/RxDBDataframe.tsx | 109 + .../frontend/src/lib/RxDBDataframeArgs.ts | 23 + .../frontend/src/lib/useEditingState.ts | 75 + .../frontend/src/lib/useNullableRenderData.ts | 34 + .../rxdb_dataframe/frontend/src/main.tsx | 7 + .../rxdb_dataframe/frontend/tsconfig.app.json | 24 + .../rxdb_dataframe/frontend/tsconfig.json | 23 + .../frontend/tsconfig.spec.json | 28 + .../rxdb_dataframe/frontend/vite.config.ts | 54 + .../rxdb_dataframe/test___init__.py | 74 + .../streamlit-rxdb-dataframe/screencast.gif | Bin 0 -> 540827 bytes .../streamlit-rxdb-dataframe/screenshot.png | Bin 0 -> 76390 bytes packages/streamlit-rxdb-dataframe/setup.py | 33 + .../sonar-project.properties | 1 + .../tests/test_rxdb_dataframe.py | 70 + tools/scripts/utils.ts | 2 +- tools/tsconfig.json | 3 + tsconfig.base.json | 6 + 83 files changed, 11618 insertions(+), 1719 deletions(-) create mode 100644 examples/shared/todos.schema.ts delete mode 100644 packages/rxdb/collection/src/lib/collection.module.ts create mode 100644 packages/rxdb/prepare/README.md create mode 100644 packages/rxdb/prepare/ng-package.json create mode 100644 packages/rxdb/prepare/src/index.ts rename packages/rxdb/{core => prepare}/src/lib/prepare.plugin.spec.ts (100%) rename packages/rxdb/{core => prepare}/src/lib/prepare.plugin.ts (99%) delete mode 100644 packages/rxdb/query-params/src/tokens.ts rename tools/scripts/.gitkeep => packages/rxdb/sonar-project.properties (100%) rename packages/rxdb/{query-params/src/tokens.spec.ts => src/lib/rxdb.providers.spec.ts} (92%) create mode 100644 packages/streamlit-rxdb-dataframe/.streamlit/config.toml create mode 100644 packages/streamlit-rxdb-dataframe/LICENSE create mode 100644 packages/streamlit-rxdb-dataframe/MANIFEST.in create mode 100644 packages/streamlit-rxdb-dataframe/README.md create mode 100644 packages/streamlit-rxdb-dataframe/e2e/e2e_utils.py create mode 100644 packages/streamlit-rxdb-dataframe/e2e/test_rxdb_dataframe.py create mode 100644 packages/streamlit-rxdb-dataframe/example.py create mode 100644 packages/streamlit-rxdb-dataframe/poetry.lock create mode 100644 packages/streamlit-rxdb-dataframe/pyproject.toml create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/__init__.py create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintignore create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintrc.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/col.dump.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/db.dump.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/todo.schema.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.html create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js.map create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/index.html create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/project.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/col.dump.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/db.dump.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/todo.schema.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframe.tsx create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframeArgs.ts create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useEditingState.ts create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useNullableRenderData.ts create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/main.tsx create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.app.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.spec.json create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/vite.config.ts create mode 100644 packages/streamlit-rxdb-dataframe/rxdb_dataframe/test___init__.py create mode 100644 packages/streamlit-rxdb-dataframe/screencast.gif create mode 100644 packages/streamlit-rxdb-dataframe/screenshot.png create mode 100644 packages/streamlit-rxdb-dataframe/setup.py create mode 100644 packages/streamlit-rxdb-dataframe/sonar-project.properties create mode 100644 packages/streamlit-rxdb-dataframe/tests/test_rxdb_dataframe.py create mode 100644 tools/tsconfig.json diff --git a/.eslintignore b/.eslintignore index dfd816c..dd3004c 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,4 @@ node_modules !.commitlintrc.json **/package.json +tools/scripts diff --git a/.vscode/launch.json b/.vscode/launch.json index b9e65b1..8c93e38 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -71,12 +71,21 @@ "type": "node", "request": "launch", "runtimeExecutable": "node", - "runtimeArgs": ["--nolazy", "-r", "ts-node/register"], - "args": ["${relativeFile}"], + "runtimeArgs": [ + "--nolazy", + "-r", + "ts-node/register" + ], + "args": [ + "${relativeFile}" + ], "sourceMaps": true, "cwd": "${workspaceRoot}", "protocol": "inspector", - "skipFiles": ["/**", "node_modules/**"], + "skipFiles": [ + "/**", + "node_modules/**" + ], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "env": { @@ -84,11 +93,44 @@ "TS_NODE_TRANSPILE_ONLY": "true" }, "disableOptimisticBPs": true + }, + // + { + "name": "Python: Debug Test", + "type": "debugpy", + "request": "launch", + "module": "pytest", + "args": [ + "${file}" + ], + "env": { + "PYTHONPATH": "${workspaceFolder}" + }, + "console": "integratedTerminal" + }, + { + "name": "Python: Debug Streamlit", + "type": "debugpy", + "request": "launch", + "module": "streamlit", + "args": [ + "run", + "${file}", + "--server.headless=true", + "--browser.gatherUsageStats=false" + ], + "env": { + "PYTHONPATH": "${workspaceFolder}" + }, + "console": "integratedTerminal" } ], "inputs": [ { - "options": ["rxdb", "kinto"], + "options": [ + "rxdb", + "kinto" + ], "id": "libName", "type": "pickString", "default": "rxdb", diff --git a/.vscode/settings.json b/.vscode/settings.json index 93beb94..7a28736 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,5 +9,9 @@ "statusBarItem.remoteBackground": "#8d2089", "statusBarItem.remoteForeground": "#e7e7e7" }, - "peacock.color": "#8d2089" + "peacock.color": "#8d2089", + "python.defaultInterpreterPath": "/home/voznik/.cache/pypoetry/virtualenvs/streamlit-rxdb-dataframe-zuiqvGqO-py3.10", + "flake8.args": ["--max-line-length=100"], + "flake8.importStrategy": "fromEnvironment", + "black-formatter.args": ["--line-length=100"] } diff --git a/README.md b/README.md index 8c03f87..36981a9 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,12 @@ import { getRxDatabaseCreator } from '@ngx-odm/rxdb/config'; multiInstance: true, // <- multiInstance (optional, default: true) ignoreDuplicate: false, options: { + plugins: [ + // will be loaded by together with core plugins + RxDBDevModePlugin, // <- add only for development + RxDBAttachmentsPlugin, + RxDBLeaderElectionPlugin, + ], storageType: 'dexie|memory', // <- storageType (optional, use if you want defaults provided automatically) dumpPath: 'assets/dump.json', // path to datbase dump file (optional) }, @@ -106,7 +112,7 @@ const todoCollectionConfig: RxCollectionCreatorExtended = { }) export class TodosModule { constructor( - @Inject(NgxRxdbCollectionService) private collectionService: NgxRxdbCollection + @Inject(RXDB_COLLECTION) private collectionService: RxDBCollectionService ) { this.collectionService.sync(); // INFO: collection is ready } @@ -116,11 +122,13 @@ export class TodosModule { ### In your `FeatureService` ```typescript +import { RXDB_COLLECTION } from '@ngx-odm/rxdb'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; + @Injectable() export class TodosService { - private collectionService: NgxRxdbCollection = inject>( - NgxRxdbCollectionService - ); + private collectionService: RxDBCollectionService = + inject>(RXDB_COLLECTION); // store & get filter as property of a `local` document filter$ = this.collectionService .getLocal('local', 'filterValue') @@ -177,6 +185,12 @@ export const appConfig: ApplicationConfig = { multiInstance: true, ignoreDuplicate: false, storage: getRxStorageDexie(), + plugins: [ + // will be loaded by together with core plugins + RxDBDevModePlugin, // <- add only for development + RxDBAttachmentsPlugin, + RxDBLeaderElectionPlugin, + ], }) ), ], diff --git a/examples/demo/src/app/app.module.ts b/examples/demo/src/app/app.module.ts index 18b157c..f6b8d06 100644 --- a/examples/demo/src/app/app.module.ts +++ b/examples/demo/src/app/app.module.ts @@ -5,6 +5,7 @@ import { RouterModule, Routes } from '@angular/router'; import { NgxRxdbModule } from '@ngx-odm/rxdb'; import { getRxDatabaseCreator } from '@ngx-odm/rxdb/config'; import { RxDBAttachmentsPlugin } from 'rxdb/plugins/attachments'; +import { RxDBDevModePlugin } from 'rxdb/plugins/dev-mode'; import { RxDBLeaderElectionPlugin } from 'rxdb/plugins/leader-election'; import { AppComponent } from './app.component'; @@ -35,6 +36,7 @@ const routes: Routes = [ options: { plugins: [ // will be loaded by together with core plugins + RxDBDevModePlugin, RxDBAttachmentsPlugin, RxDBLeaderElectionPlugin, ], diff --git a/examples/demo/src/app/todos/todos.module.ts b/examples/demo/src/app/todos/todos.module.ts index 533afe7..d46bc60 100644 --- a/examples/demo/src/app/todos/todos.module.ts +++ b/examples/demo/src/app/todos/todos.module.ts @@ -3,8 +3,8 @@ import { Inject, NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { LetDirective, PushPipe } from '@ngrx/component'; -import { NgxRxdbModule } from '@ngx-odm/rxdb'; -import { NgxRxdbCollection, NgxRxdbCollectionService } from '@ngx-odm/rxdb/collection'; +import { NgxRxdbModule, RXDB_COLLECTION } from '@ngx-odm/rxdb'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; import { TODOS_COLLECTION_CONFIG, Todo } from '@shared'; import { TodosComponent } from './todos.component'; import { TodosPipe } from './todos.pipe'; @@ -24,7 +24,7 @@ import { TodosService } from './todos.service'; }) export class TodosModule { constructor( - @Inject(NgxRxdbCollectionService) private collectionService: NgxRxdbCollection + @Inject(RXDB_COLLECTION) private collectionService: RxDBCollectionService ) { this.collectionService.sync(); } diff --git a/examples/demo/src/app/todos/todos.pipe.ts b/examples/demo/src/app/todos/todos.pipe.ts index 0f65e88..30e79a0 100644 --- a/examples/demo/src/app/todos/todos.pipe.ts +++ b/examples/demo/src/app/todos/todos.pipe.ts @@ -1,5 +1,5 @@ import { Pipe, PipeTransform, inject } from '@angular/core'; -import { RXDB_CONFIG_COLLECTION } from '@ngx-odm/rxdb/config'; +import { RXDB_CONFIG_COLLECTION } from '@ngx-odm/rxdb'; import { Todo, TodosFilter } from '@shared'; @Pipe({ name: 'byStatus' }) diff --git a/examples/demo/src/app/todos/todos.service.ts b/examples/demo/src/app/todos/todos.service.ts index a099357..57380bd 100755 --- a/examples/demo/src/app/todos/todos.service.ts +++ b/examples/demo/src/app/todos/todos.service.ts @@ -1,6 +1,7 @@ /* eslint-disable no-console */ import { Injectable, inject } from '@angular/core'; -import { NgxRxdbCollection, NgxRxdbCollectionService } from '@ngx-odm/rxdb/collection'; +import { RXDB_COLLECTION } from '@ngx-odm/rxdb'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; import { DEFAULT_LOCAL_DOCUMENT_ID } from '@ngx-odm/rxdb/config'; import { Todo, TodosFilter, TodosLocalState } from '@shared'; import { Observable, distinctUntilChanged, startWith } from 'rxjs'; @@ -10,9 +11,8 @@ const withAttachments = true; @Injectable() export class TodosService { - private collectionService: NgxRxdbCollection = inject>( - NgxRxdbCollectionService - ); + private collectionService: RxDBCollectionService = + inject>(RXDB_COLLECTION); newTodo = ''; current: Todo = undefined; diff --git a/examples/shared/index.ts b/examples/shared/index.ts index 21a291a..aaadc15 100644 --- a/examples/shared/index.ts +++ b/examples/shared/index.ts @@ -2,8 +2,8 @@ export * from './todos.animation'; export * from './todos.config'; export * from './todos.model'; +export * from './todos.schema'; export * from './todos.replication'; export * from './todos.migration'; export * from './environment'; // end:ng42.barrel - diff --git a/examples/shared/todos.schema.ts b/examples/shared/todos.schema.ts new file mode 100644 index 0000000..4666033 --- /dev/null +++ b/examples/shared/todos.schema.ts @@ -0,0 +1,41 @@ +export const TODO_SCHEMA = { + definitions: {}, + type: 'object', + title: 'Todo', + description: 'Todo Schema', + required: ['id', 'title', 'createdAt'], + version: 3, + properties: { + id: { + type: 'string', + title: 'Id', + pattern: '^(.*)$', + maxLength: 36, + readOnly: true, + }, + title: { + type: 'string', + title: 'Title', + }, + completed: { + type: 'boolean', + title: 'Done', + }, + createdAt: { + type: 'string', + title: 'Created Date', + format: 'date-time', + readOnly: true, + }, + last_modified: { + type: 'number', + title: 'Last Modified Date', + multipleOf: 1, + }, + }, + __indexes: ['createdAt'], + primaryKey: 'id', + attachments: { + encrypted: false, + }, +}; diff --git a/examples/standalone/src/app/app.config.ts b/examples/standalone/src/app/app.config.ts index f0a9470..0889762 100644 --- a/examples/standalone/src/app/app.config.ts +++ b/examples/standalone/src/app/app.config.ts @@ -6,6 +6,7 @@ import { provideRouter, withRouterConfig } from '@angular/router'; import { provideRxDatabase } from '@ngx-odm/rxdb'; import { getRxDatabaseCreator } from '@ngx-odm/rxdb/config'; import { RxDBAttachmentsPlugin } from 'rxdb/plugins/attachments'; +import { RxDBDevModePlugin } from 'rxdb/plugins/dev-mode'; import { RxDBLeaderElectionPlugin } from 'rxdb/plugins/leader-election'; import { appRoutes } from './app.routes'; @@ -26,6 +27,7 @@ export const appConfig: ApplicationConfig = { options: { plugins: [ // will be loaded by together with core plugins + RxDBDevModePlugin, RxDBAttachmentsPlugin, RxDBLeaderElectionPlugin, ], diff --git a/nx.json b/nx.json index f1332fe..d5745b9 100644 --- a/nx.json +++ b/nx.json @@ -9,9 +9,7 @@ "defaultBase": "origin/master" }, "release": { - "projects": [ - "packages/*" - ], + "projects": ["packages/*"], "projectChangelogs": { "createRelease": "github" }, @@ -23,13 +21,8 @@ }, "targetDefaults": { "build": { - "dependsOn": [ - "^build" - ], - "inputs": [ - "production", - "^production" - ], + "dependsOn": ["^build"], + "inputs": ["production", "^production"], "cache": true }, "lint": { @@ -42,11 +35,7 @@ "cache": true }, "@nx/jest:jest": { - "inputs": [ - "default", - "^production", - "{workspaceRoot}/jest.preset.js" - ], + "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"], "cache": true, "options": { "passWithNoTests": true @@ -60,10 +49,7 @@ } }, "namedInputs": { - "default": [ - "{projectRoot}/**/*", - "sharedGlobals" - ], + "default": ["{projectRoot}/**/*", "sharedGlobals"], "production": [ "default", "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", @@ -89,6 +75,40 @@ }, "@nx/angular:component": { "style": "css" + }, + "@nx/react": { + "library": { + "style": "css", + "linter": "eslint", + "unitTestRunner": "jest" + }, + "application": { + "babel": true, + "style": "css", + "linter": "eslint", + "bundler": "vite" + }, + "component": { + "style": "css" + } + } + }, + "plugins": [ + { + "plugin": "@nx/eslint/plugin", + "options": { + "targetName": "lint" + } + }, + { + "plugin": "@nx/vite/plugin", + "options": { + "buildTargetName": "build", + "previewTargetName": "preview", + "testTargetName": "test", + "serveTargetName": "serve", + "serveStaticTargetName": "serve-static" + } } - } + ] } diff --git a/package-lock.json b/package-lock.json index df9b2e3..38c9998 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,16 +19,21 @@ "@angular/platform-browser-dynamic": "17.0.8", "@angular/router": "17.0.8", "@angular/service-worker": "17.0.8", + "@emotion-icons/material-outlined": "^3.14.0", "@ngrx/component": "^17.0.1", "@ngrx/operators": "^17.0.1", "@ngrx/signals": "^17.0.1", "compare-versions": "^6.1.0", + "fast-deep-equal": "^3.1.3", "ngxtension": "^1.12.0", "normalize.css": "8.0.1", "query-string": "^8.1.0", + "react": "18.2.0", + "react-dom": "18.2.0", "reflect-metadata": "0.1.13", "rxdb": "^15.9.1", "rxjs": "7.8.1", + "streamlit-component-lib": "^2.0.0", "todomvc-app-css": "2.4.3", "todomvc-common": "1.0.5", "tslib": "^2.6.2", @@ -58,25 +63,41 @@ "@nx/eslint": "17.2.7", "@nx/eslint-plugin": "17.2.7", "@nx/jest": "17.2.7", - "@nx/js": "^17.2.7", + "@nx/js": "17.3.2", + "@nx/react": "17.3.2", + "@nx/vite": "17.2.7", + "@nx/web": "17.2.7", "@nx/workspace": "17.2.7", "@schematics/angular": "17.0.8", - "@swc-node/register": "~1.6.7", + "@swc-node/register": "~1.8.0", + "@swc/cli": "~0.1.62", "@swc/core": "~1.3.85", + "@swc/helpers": "~0.5.2", + "@swc/jest": "0.2.20", + "@testing-library/react": "14.0.0", "@twittwer/compodoc": "1.12.0", "@types/fs-extra": "^11.0.2", "@types/jest": "^29.4.0", "@types/node": "18.16.9", + "@types/react": "18.2.33", + "@types/react-dom": "18.2.14", "@types/webpack": "4.41.25", "@typescript-eslint/eslint-plugin": "6.15.0", "@typescript-eslint/parser": "6.15.0", + "@vitejs/plugin-react": "^4.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "@vitest/coverage-v8": "~0.34.6", + "@vitest/ui": "~0.34.6", "conventional-changelog-cli": "^4.1.0", "document-register-element": "1.14.10", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-prettier": "5.1.2", + "eslint-plugin-react": "7.32.2", + "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-rxjs": "=5.0.3", "eslint-plugin-rxjs-angular": "=2.0.1", "fs-extra": "^9.1.0", @@ -87,6 +108,7 @@ "jest-localstorage-mock": "2.4.26", "jest-marbles": "^3.0.6", "jest-preset-angular": "~13.1.4", + "jsdom": "~22.1.0", "jsonc-eslint-parser": "^2.1.0", "lcov-result-merger": "^3.1.0", "lint-staged": "^15.2.0", @@ -106,7 +128,10 @@ "ts-jest": "^29.1.0", "ts-node": "10.9.1", "type-fest": "^4.3.1", - "typescript": "5.2.2" + "typescript": "5.2.2", + "vite": "~5.0.0", + "vite-plugin-dts": "~2.3.0", + "vitest": "~0.34.6" }, "engines": { "node": ">=16" @@ -297,6 +322,358 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/agent-base": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", @@ -334,6 +711,22 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/@angular-devkit/build-angular/node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/undici": { "version": "5.27.2", "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", @@ -346,6 +739,98 @@ "node": ">=14.0" } }, + "node_modules/@angular-devkit/build-angular/node_modules/vite": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", + "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1700.8", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1700.8.tgz", @@ -722,7 +1207,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -973,7 +1457,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -1095,7 +1578,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1104,7 +1586,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1133,14 +1614,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1150,7 +1631,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -1161,9 +1641,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2163,6 +2643,116 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", + "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", @@ -2497,6 +3087,26 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/preset-typescript": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", @@ -2526,7 +3136,6 @@ "version": "7.23.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2537,27 +3146,26 @@ "node_modules/@babel/runtime/node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", @@ -2566,8 +3174,8 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2591,10 +3199,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", - "dev": true, + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -4023,6 +4630,239 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion-icons/emotion-icon": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@emotion-icons/emotion-icon/-/emotion-icon-4.1.0.tgz", + "integrity": "sha512-bOUbWj8DPjUK5MtRx2ApMudOnh/tasqJwa+sdRbqsZD0g0hYf0jCsTDNs/57VvGOJH2PfWDKD1jbLjwajAYT9A==", + "dependencies": { + "@babel/runtime": "^7.14.0" + }, + "funding": { + "type": "GitHub", + "url": "https://github.com/sponsors/jacobwgillespie" + }, + "peerDependencies": { + "@emotion/react": ">=11.0.0 <12", + "@emotion/styled": ">=11.0.0 <12", + "react": "*" + } + }, + "node_modules/@emotion-icons/material-outlined": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@emotion-icons/material-outlined/-/material-outlined-3.14.0.tgz", + "integrity": "sha512-Y4YS4OLPbu5ytN9XjB+7duM5pkkofUhr6YqBlta1Fer6dMHTMKy9GnnDyqGPJ/jYxS+6keVmL8WcTzWYHzQktA==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "@emotion-icons/emotion-icon": "4.1.0" + }, + "funding": { + "type": "GitHub", + "url": "https://github.com/sponsors/jacobwgillespie" + }, + "peerDependencies": { + "@emotion/react": ">=11.0.0 <12", + "@emotion/styled": ">=11.0.0 <12", + "react": "*" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "peer": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "peer": true, + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "peer": true + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "peer": true, + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "peer": true + }, + "node_modules/@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", + "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "peer": true, + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "peer": true + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "peer": true + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peer": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "peer": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "peer": true + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.40.1", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", @@ -5531,6 +6371,113 @@ "node": ">=8" } }, + "node_modules/@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/create-cache-key-function/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -6261,6 +7208,303 @@ "node": ">= 0.4" } }, + "node_modules/@microsoft/api-extractor": { + "version": "7.42.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.42.3.tgz", + "integrity": "sha512-JNLJFpGHz6ekjS6bvYXxUBeRGnSHeCMFNvRbCQ+7XXB/ZFrgLSMPwWtEq40AiWAy+oyG5a4RSNwdJTp0B2USvQ==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.28.13", + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "4.0.2", + "@rushstack/rig-package": "0.5.2", + "@rushstack/terminal": "0.10.0", + "@rushstack/ts-command-line": "4.19.1", + "lodash": "~4.17.15", + "minimatch": "~3.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.3.3" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.28.13", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.13.tgz", + "integrity": "sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "4.0.2" + } + }, + "node_modules/@microsoft/api-extractor-model/node_modules/@rushstack/node-core-library": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", + "integrity": "sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==", + "dev": true, + "dependencies": { + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@microsoft/api-extractor-model/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@microsoft/api-extractor-model/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@microsoft/api-extractor-model/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@microsoft/api-extractor-model/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@microsoft/api-extractor-model/node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", + "integrity": "sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==", + "dev": true, + "dependencies": { + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@microsoft/api-extractor/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", + "dev": true + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@mole-inc/bin-wrapper": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", + "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", + "dev": true, + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^5.0.0", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^17.1.6", + "filenamify": "^5.0.2", + "got": "^11.8.5", + "os-filter-obj": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", @@ -6619,12 +7863,21 @@ } }, "node_modules/@nrwl/js": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", - "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.3.2.tgz", + "integrity": "sha512-WuIeSErulJuMeSpeK41RfiWI3jLjDD0S+tLnYdOLaWdjaIPqjknClM2BAJKlq472NnkkNWvtwtOS8jm518OjOQ==", "dev": true, "dependencies": { - "@nx/js": "17.2.7" + "@nx/js": "17.3.2" + } + }, + "node_modules/@nrwl/react": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nrwl/react/-/react-17.3.2.tgz", + "integrity": "sha512-LjH/odvCwCEqlqy4dqy4jnlyTCHLb13W3DoTb7vEy9g+i1vaCXfV061zmFvbweIXV2416sU6TcUCIVYwBVWH6g==", + "dev": true, + "dependencies": { + "@nx/react": "17.3.2" } }, "node_modules/@nrwl/tao": { @@ -6639,6 +7892,15 @@ "tao": "index.js" } }, + "node_modules/@nrwl/vite": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/vite/-/vite-17.2.7.tgz", + "integrity": "sha512-Fe1ILe5QJb5wxFtupxODpcvGS/vsoLRglwPLEz8eSPeiersXAOaV7kBPtYmZVIF2Qw1Fei8mMwDjQnaihJv82A==", + "dev": true, + "dependencies": { + "@nx/vite": "17.2.7" + } + }, "node_modules/@nrwl/web": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-17.2.7.tgz", @@ -6716,6 +7978,15 @@ "@nx/devkit": "17.2.7" } }, + "node_modules/@nx/angular/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, "node_modules/@nx/angular/node_modules/@nx/devkit": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", @@ -6734,6 +8005,52 @@ "nx": ">= 16 <= 18" } }, + "node_modules/@nx/angular/node_modules/@nx/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/workspace": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, "node_modules/@nx/angular/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6783,6 +8100,22 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/@nx/angular/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@nx/angular/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -6813,6 +8146,20 @@ "node": ">=8" } }, + "node_modules/@nx/angular/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@nx/angular/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6870,6 +8217,28 @@ "semver": "bin/semver.js" } }, + "node_modules/@nx/angular/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@nx/angular/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -6924,6 +8293,25 @@ "node": ">=10" } }, + "node_modules/@nx/angular/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/angular/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/@nx/angular/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6975,6 +8363,15 @@ "@nx/devkit": "17.2.7" } }, + "node_modules/@nx/cypress/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, "node_modules/@nx/cypress/node_modules/@nx/devkit": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", @@ -6993,6 +8390,140 @@ "nx": ">= 16 <= 18" } }, + "node_modules/@nx/cypress/node_modules/@nx/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/workspace": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/cypress/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/cypress/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/cypress/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/cypress/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/cypress/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@nx/cypress/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@nx/cypress/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7005,6 +8536,28 @@ "node": ">=10" } }, + "node_modules/@nx/cypress/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@nx/cypress/node_modules/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", @@ -7020,6 +8573,37 @@ "node": ">=10" } }, + "node_modules/@nx/cypress/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/cypress/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/cypress/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@nx/cypress/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -7105,6 +8689,15 @@ "@nx/devkit": "17.2.7" } }, + "node_modules/@nx/eslint-plugin/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, "node_modules/@nx/eslint-plugin/node_modules/@nx/devkit": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", @@ -7123,6 +8716,52 @@ "nx": ">= 16 <= 18" } }, + "node_modules/@nx/eslint-plugin/node_modules/@nx/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/workspace": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, "node_modules/@nx/eslint-plugin/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7172,6 +8811,36 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/@nx/eslint-plugin/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@nx/eslint-plugin/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -7193,6 +8862,28 @@ "node": ">=10" } }, + "node_modules/@nx/eslint-plugin/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@nx/eslint-plugin/node_modules/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", @@ -7208,6 +8899,25 @@ "node": ">=10" } }, + "node_modules/@nx/eslint-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/@nx/eslint-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7235,6 +8945,15 @@ "@nx/devkit": "17.2.7" } }, + "node_modules/@nx/eslint/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, "node_modules/@nx/eslint/node_modules/@nx/devkit": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", @@ -7253,88 +8972,53 @@ "nx": ">= 16 <= 18" } }, - "node_modules/@nx/eslint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/eslint/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@nx/jest": { + "node_modules/@nx/eslint/node_modules/@nx/js": { "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-17.2.7.tgz", - "integrity": "sha512-lfUBZ1eCdO2ML2AdPiuXkMcQvuHaevYHB4wrRoUEQp/jui8m8ZQtIaihEy+8nmnSQTSGpCxlILRLpaNQ8gqCoQ==", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", "dev": true, "dependencies": { - "@jest/reporters": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@nrwl/jest": "17.2.7", + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", "@nx/devkit": "17.2.7", - "@nx/js": "17.2.7", + "@nx/workspace": "17.2.7", "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", "chalk": "^4.1.0", - "identity-obj-proxy": "3.0.0", - "jest-config": "^29.4.1", - "jest-resolve": "^29.4.1", - "jest-util": "^29.4.1", - "resolve.exports": "1.1.0", - "tslib": "^2.3.0" - } - }, - "node_modules/@nx/jest/node_modules/@nrwl/devkit": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.7.tgz", - "integrity": "sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==", - "dev": true, - "dependencies": { - "@nx/devkit": "17.2.7" - } - }, - "node_modules/@nx/jest/node_modules/@nx/devkit": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", - "integrity": "sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==", - "dev": true, - "dependencies": { - "@nrwl/devkit": "17.2.7", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", "semver": "7.5.3", - "tmp": "~0.2.1", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", "tslib": "^2.3.0" }, "peerDependencies": { - "nx": ">= 16 <= 18" + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } } }, - "node_modules/@nx/jest/node_modules/ansi-styles": { + "node_modules/@nx/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7349,7 +9033,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nx/jest/node_modules/chalk": { + "node_modules/@nx/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7365,7 +9049,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nx/jest/node_modules/color-convert": { + "node_modules/@nx/eslint/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7377,13 +9061,43 @@ "node": ">=7.0.0" } }, - "node_modules/@nx/jest/node_modules/color-name": { + "node_modules/@nx/eslint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@nx/jest/node_modules/has-flag": { + "node_modules/@nx/eslint/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/eslint/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@nx/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7392,7 +9106,7 @@ "node": ">=8" } }, - "node_modules/@nx/jest/node_modules/lru-cache": { + "node_modules/@nx/eslint/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", @@ -7404,13 +9118,35 @@ "node": ">=10" } }, - "node_modules/@nx/jest/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "node_modules/@nx/eslint/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/eslint/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" @@ -7419,7 +9155,26 @@ "node": ">=10" } }, - "node_modules/@nx/jest/node_modules/supports-color": { + "node_modules/@nx/eslint/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/eslint/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7431,13 +9186,70 @@ "node": ">=8" } }, - "node_modules/@nx/jest/node_modules/yallist": { + "node_modules/@nx/eslint/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/@nx/js": { + "node_modules/@nx/jest": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-17.2.7.tgz", + "integrity": "sha512-lfUBZ1eCdO2ML2AdPiuXkMcQvuHaevYHB4wrRoUEQp/jui8m8ZQtIaihEy+8nmnSQTSGpCxlILRLpaNQ8gqCoQ==", + "dev": true, + "dependencies": { + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@nrwl/jest": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/js": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "chalk": "^4.1.0", + "identity-obj-proxy": "3.0.0", + "jest-config": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-util": "^29.4.1", + "resolve.exports": "1.1.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/jest/node_modules/@nrwl/devkit": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.7.tgz", + "integrity": "sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "17.2.7" + } + }, + "node_modules/@nx/jest/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, + "node_modules/@nx/jest/node_modules/@nx/devkit": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", + "integrity": "sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "17.2.7", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 16 <= 18" + } + }, + "node_modules/@nx/jest/node_modules/@nx/js": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", @@ -7483,34 +9295,7 @@ } } }, - "node_modules/@nx/js/node_modules/@nrwl/devkit": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.7.tgz", - "integrity": "sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==", - "dev": true, - "dependencies": { - "@nx/devkit": "17.2.7" - } - }, - "node_modules/@nx/js/node_modules/@nx/devkit": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", - "integrity": "sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==", - "dev": true, - "dependencies": { - "@nrwl/devkit": "17.2.7", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "semver": "7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "nx": ">= 16 <= 18" - } - }, - "node_modules/@nx/js/node_modules/ansi-styles": { + "node_modules/@nx/jest/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7525,7 +9310,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nx/js/node_modules/chalk": { + "node_modules/@nx/jest/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7541,7 +9326,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nx/js/node_modules/color-convert": { + "node_modules/@nx/jest/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7553,13 +9338,13 @@ "node": ">=7.0.0" } }, - "node_modules/@nx/js/node_modules/color-name": { + "node_modules/@nx/jest/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@nx/js/node_modules/fast-glob": { + "node_modules/@nx/jest/node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", @@ -7575,7 +9360,7 @@ "node": ">=8" } }, - "node_modules/@nx/js/node_modules/fs-extra": { + "node_modules/@nx/jest/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", @@ -7589,7 +9374,7 @@ "node": ">=14.14" } }, - "node_modules/@nx/js/node_modules/has-flag": { + "node_modules/@nx/jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7598,7 +9383,19 @@ "node": ">=8" } }, - "node_modules/@nx/js/node_modules/ora": { + "node_modules/@nx/jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/jest/node_modules/ora": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", @@ -7620,7 +9417,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/js/node_modules/semver": { + "node_modules/@nx/jest/node_modules/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", @@ -7635,19 +9432,7 @@ "node": ">=10" } }, - "node_modules/@nx/js/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/js/node_modules/source-map": { + "node_modules/@nx/jest/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", @@ -7656,7 +9441,7 @@ "node": ">=0.10.0" } }, - "node_modules/@nx/js/node_modules/source-map-support": { + "node_modules/@nx/jest/node_modules/source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", @@ -7666,7 +9451,7 @@ "source-map": "^0.6.0" } }, - "node_modules/@nx/js/node_modules/supports-color": { + "node_modules/@nx/jest/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7678,28 +9463,88 @@ "node": ">=8" } }, - "node_modules/@nx/js/node_modules/yallist": { + "node_modules/@nx/jest/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/@nx/linter": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-17.2.7.tgz", - "integrity": "sha512-t85R1r+fiEV8wwU6mAD9kKq+YqAxwzBDp3Dx42cX5uokp2jsUKcTHYsibTJ7SVgViJicDLoVDonlJc8SxA0cfQ==", + "node_modules/@nx/js": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.3.2.tgz", + "integrity": "sha512-37E3OILyu/7rCj6Z7tvC6PktHYa51UQBU+wWPdVWSZ64xu1SUsg9B9dfiyD1LXR9/rhjg4+0+g4cou0aqDK1Wg==", "dev": true, "dependencies": { - "@nx/eslint": "17.2.7" + "@babel/core": "^7.23.2", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.3.2", + "@nx/devkit": "17.3.2", + "@nx/workspace": "17.3.2", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "9.0.3", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "^7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } } }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.2.7.tgz", - "integrity": "sha512-d534L13VUlnSW61rabBl3TTuSpzHxtqy8eF5vsYkFSMonBDjqqNR6+vFfQEa7PW/3Qfeuw4MpmojtamCYLd/TA==", + "node_modules/@nx/js/node_modules/@nrwl/tao": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-17.3.2.tgz", + "integrity": "sha512-5uvpSmij0J9tteFV/0M/024K+H/o3XAlqtSdU8j03Auj1IleclSLF2yCTuIo7pYXhG3cgx1+nR+3nMs1QVAdUA==", + "dev": true, + "dependencies": { + "nx": "17.3.2", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nx/js/node_modules/@nrwl/workspace": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-17.3.2.tgz", + "integrity": "sha512-7xE/dujPjOIxsCV6TB0C4768voQaQSxmEUAbVz0mywBGrVpjpvAIx1GvdB6wwgWqtpZTz34hKFkUSJFPweUvbg==", + "dev": true, + "dependencies": { + "@nx/workspace": "17.3.2" + } + }, + "node_modules/@nx/js/node_modules/@nx/nx-darwin-arm64": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.3.2.tgz", + "integrity": "sha512-hn12o/tt26Pf4wG+8rIBgNIEZq5BFlHLv3scNrgKbd5SancHlTbY4RveRGct737UQ/78GCMCgMDRgNdagbCr6w==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -7708,13 +9553,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-darwin-x64": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-17.2.7.tgz", - "integrity": "sha512-K1pHWiSiYTJqk//ZJylvuQcNZR9HUKvOxuh2540+6X9ThQ7kzkC1abXJ4c9wwH3fYDwL29m7glh3AueJvyaXJA==", + "node_modules/@nx/js/node_modules/@nx/nx-darwin-x64": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-17.3.2.tgz", + "integrity": "sha512-5F28wrfE7yU60MzEXGjndy1sPJmNMIaV2W/g82kTXzxAbGHgSjwrGFmrJsrexzLp9oDlWkbc6YmInKV8gmmIaQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -7723,13 +9569,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.2.7.tgz", - "integrity": "sha512-VyouszZjV7Ew4qNrNfG8JApm7/UcreRuC+W/YZ2ORGzM0KUnB/D4rXGmeTp1Ff+L5WUhoomwEnaBkbgqu+2wjA==", + "node_modules/@nx/js/node_modules/@nx/nx-freebsd-x64": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.3.2.tgz", + "integrity": "sha512-07MMTfsJooONqL1Vrm5L6qk/gzmSrYLazjkiTmJz+9mrAM61RdfSYfO3mSyAoyfgWuQ5yEvfI56P036mK8aoPg==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -7738,13 +9585,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.2.7.tgz", - "integrity": "sha512-YfwW8NYi33Li1Q7BDUusNlfpJNWfXOnHt6JKvQGc8fy8StmWq13zNnU0IxPQyqCDK5Ymx95IoctFrMLpeXPAwQ==", + "node_modules/@nx/js/node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.3.2.tgz", + "integrity": "sha512-gQxMF6U/h18Rz+FZu50DZCtfOdk27hHghNh3d3YTeVsrJTd1SmUQbYublmwU/ia1HhFS8RVI8GvkaKt5ph0HoA==", "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -7753,13 +9601,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.2.7.tgz", - "integrity": "sha512-oJyEf2q+5jj6ci6WEXvRUoU2Sj0Mo+J/0NwtPY6sRIhqgPwpmxc6Pja4zmB16iQ5ap48zstB9glfJ6qtr3iU0Q==", + "node_modules/@nx/js/node_modules/@nx/nx-linux-arm64-gnu": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.3.2.tgz", + "integrity": "sha512-X20wiXtXmKlC01bpVEREsRls1uVOM22xDTpqILvVty6+P+ytEYFR3Vs5EjDtzBKF51wjrwf03rEoToZbmgM8MA==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -7768,13 +9617,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.2.7.tgz", - "integrity": "sha512-IzsCJgJCM61THBMDghz+EY5aCeO7wBWOWq2sTDek1ve67qZtu/E/Z5qBp93JRAvNYgQT7KbC40WhaXuE/NpWEA==", + "node_modules/@nx/js/node_modules/@nx/nx-linux-arm64-musl": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.3.2.tgz", + "integrity": "sha512-yko3Xsezkn4tjeudZYLjxFl07X/YB84K+DLK7EFyh9elRWV/8VjFcQmBAKUS2r9LfaEMNXq8/vhWMOWYyWBrIA==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -7783,13 +9633,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.2.7.tgz", - "integrity": "sha512-CCY3o9zs9ypsT40GyRGQMfl63Wy3Spu21ULcteoLTI2/py601XIdhv6zclzBqeYIWPVxMoGGlIq10m2rdEeAOA==", + "node_modules/@nx/js/node_modules/@nx/nx-linux-x64-gnu": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.3.2.tgz", + "integrity": "sha512-RiPvvQMmlZmDu9HdT6n6sV0+fEkyAqR5VocrD5ZAzEzFIlh4dyVLripFR3+MD+QhIhXyPt/hpri1kq9sgs4wnw==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -7798,13 +9649,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.2.7.tgz", - "integrity": "sha512-hBzrXpoDg1OJBl/Ja5nU3oYTBk/FW6J+jTJM1zmXJOJ8Z7NR26I783qlVLQFDYkMynwGBE3kI4a7L87p633BRw==", + "node_modules/@nx/js/node_modules/@nx/nx-linux-x64-musl": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.3.2.tgz", + "integrity": "sha512-PWfVGmFsFJi+N1Nljg/jTKLHdufpGuHlxyfHqhDso/o4Qc0exZKSeZ1C63WkD7eTcT5kInifTQ/PffLiIDE3MA==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -7813,13 +9665,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.2.7.tgz", - "integrity": "sha512-imLrVpeBXQwcYDUujBZRE9YG9lqM7F8Qw51JxmCxG2twijlVeofGWw0uVHM16t95cuizt/Ho+bTfNukV7Oza3g==", + "node_modules/@nx/js/node_modules/@nx/nx-win32-arm64-msvc": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.3.2.tgz", + "integrity": "sha512-O+4FFPbQz1mqaIj+SVE02ppe7T9ELj7Z5soQct5TbRRhwjGaw5n5xaPPBW7jUuQe2L5htid1E82LJyq3JpVc8A==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -7828,13 +9681,14 @@ "node": ">= 10" } }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.2.7.tgz", - "integrity": "sha512-MBQxvEE1sz47prRCid+axKwb6zqcbR4XBKj+l9V5NA7/0Rw5PHjrEfWv5Lr5TckYAdIZ1PVgPHlril6hX89evw==", + "node_modules/@nx/js/node_modules/@nx/nx-win32-x64-msvc": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.3.2.tgz", + "integrity": "sha512-4hQm+7coy+hBqGY9J709hz/tUPijhf/WS7eML2r2xBmqBew3PMHfeZuaAAYWN690nIsu0WX3wyDsNjulR8HGPQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -7843,49 +9697,22 @@ "node": ">= 10" } }, - "node_modules/@nx/web": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-17.2.7.tgz", - "integrity": "sha512-UhLD84jCLNwY/dC32v3Q5gAkBuj1p6a0h1ihcXqZdMUYbV6sjJhDAnjnfHyPJWgjaoI5t6VNSTJOaMZM9EMfzg==", + "node_modules/@nx/js/node_modules/@nx/workspace": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-17.3.2.tgz", + "integrity": "sha512-2y952OmJx+0Rj+LQIxat8SLADjIkgB6NvjtgYZt8uRQ94jRS/JsRvGTw0V8DsY9mvsNbYoIRdJP25T3pGnI3gQ==", "dev": true, "dependencies": { - "@nrwl/web": "17.2.7", - "@nx/devkit": "17.2.7", - "@nx/js": "17.2.7", + "@nrwl/workspace": "17.3.2", + "@nx/devkit": "17.3.2", "chalk": "^4.1.0", - "detect-port": "^1.5.1", - "http-server": "^14.1.0", - "tslib": "^2.3.0" - } - }, - "node_modules/@nx/web/node_modules/@nrwl/devkit": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.7.tgz", - "integrity": "sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==", - "dev": true, - "dependencies": { - "@nx/devkit": "17.2.7" - } - }, - "node_modules/@nx/web/node_modules/@nx/devkit": { - "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", - "integrity": "sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==", - "dev": true, - "dependencies": { - "@nrwl/devkit": "17.2.7", - "ejs": "^3.1.7", "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "semver": "7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "nx": ">= 16 <= 18" + "nx": "17.3.2", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" } }, - "node_modules/@nx/web/node_modules/ansi-styles": { + "node_modules/@nx/js/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -7900,7 +9727,27 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nx/web/node_modules/chalk": { + "node_modules/@nx/js/node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@nx/js/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@nx/js/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -7916,7 +9763,21 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nx/web/node_modules/color-convert": { + "node_modules/@nx/js/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nx/js/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -7928,13 +9789,43 @@ "node": ">=7.0.0" } }, - "node_modules/@nx/web/node_modules/color-name": { + "node_modules/@nx/js/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@nx/web/node_modules/has-flag": { + "node_modules/@nx/js/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@nx/js/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -7943,34 +9834,134 @@ "node": ">=8" } }, - "node_modules/@nx/web/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@nx/js/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nx/web/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "node_modules/@nx/js/node_modules/nx": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/nx/-/nx-17.3.2.tgz", + "integrity": "sha512-QjF1gnwKebQISvATrSbW7dsmIcLbA0fcyDyxLo5wVHx/MIlcaIb/lLYaPTld73ZZ6svHEZ6n2gOkhMitmkIPQA==", "dev": true, + "hasInstallScript": true, "dependencies": { - "lru-cache": "^6.0.0" + "@nrwl/tao": "17.3.2", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.6.0", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.3.1", + "dotenv-expand": "~10.0.0", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" }, "bin": { - "semver": "bin/semver.js" + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "17.3.2", + "@nx/nx-darwin-x64": "17.3.2", + "@nx/nx-freebsd-x64": "17.3.2", + "@nx/nx-linux-arm-gnueabihf": "17.3.2", + "@nx/nx-linux-arm64-gnu": "17.3.2", + "@nx/nx-linux-arm64-musl": "17.3.2", + "@nx/nx-linux-x64-gnu": "17.3.2", + "@nx/nx-linux-x64-musl": "17.3.2", + "@nx/nx-win32-arm64-msvc": "17.3.2", + "@nx/nx-win32-x64-msvc": "17.3.2" + }, + "peerDependencies": { + "@swc-node/register": "^1.6.7", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nx/js/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/web/node_modules/supports-color": { + "node_modules/@nx/js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/js/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/js/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -7982,32 +9973,912 @@ "node": ">=8" } }, - "node_modules/@nx/web/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@nx/webpack": { + "node_modules/@nx/linter": { "version": "17.2.7", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-17.2.7.tgz", - "integrity": "sha512-OUxUNxgzEyrn36V4+1T3oQNKyukJphgb+DBNc6NWA9dEWf3U48KdfJuALeKoRZ5J+/lS95L8b/2ygSyu0EdpLw==", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-17.2.7.tgz", + "integrity": "sha512-t85R1r+fiEV8wwU6mAD9kKq+YqAxwzBDp3Dx42cX5uokp2jsUKcTHYsibTJ7SVgViJicDLoVDonlJc8SxA0cfQ==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", - "@nrwl/webpack": "17.2.7", - "@nx/devkit": "17.2.7", - "@nx/js": "17.2.7", - "autoprefixer": "^10.4.9", - "babel-loader": "^9.1.2", - "browserslist": "^4.21.4", - "chalk": "^4.1.0", - "copy-webpack-plugin": "^10.2.4", - "css-loader": "^6.4.0", - "css-minimizer-webpack-plugin": "^5.0.0", - "fork-ts-checker-webpack-plugin": "7.2.13", - "less": "4.1.3", - "less-loader": "11.1.0", + "@nx/eslint": "17.2.7" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.2.7.tgz", + "integrity": "sha512-d534L13VUlnSW61rabBl3TTuSpzHxtqy8eF5vsYkFSMonBDjqqNR6+vFfQEa7PW/3Qfeuw4MpmojtamCYLd/TA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-17.2.7.tgz", + "integrity": "sha512-K1pHWiSiYTJqk//ZJylvuQcNZR9HUKvOxuh2540+6X9ThQ7kzkC1abXJ4c9wwH3fYDwL29m7glh3AueJvyaXJA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.2.7.tgz", + "integrity": "sha512-VyouszZjV7Ew4qNrNfG8JApm7/UcreRuC+W/YZ2ORGzM0KUnB/D4rXGmeTp1Ff+L5WUhoomwEnaBkbgqu+2wjA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.2.7.tgz", + "integrity": "sha512-YfwW8NYi33Li1Q7BDUusNlfpJNWfXOnHt6JKvQGc8fy8StmWq13zNnU0IxPQyqCDK5Ymx95IoctFrMLpeXPAwQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.2.7.tgz", + "integrity": "sha512-oJyEf2q+5jj6ci6WEXvRUoU2Sj0Mo+J/0NwtPY6sRIhqgPwpmxc6Pja4zmB16iQ5ap48zstB9glfJ6qtr3iU0Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.2.7.tgz", + "integrity": "sha512-IzsCJgJCM61THBMDghz+EY5aCeO7wBWOWq2sTDek1ve67qZtu/E/Z5qBp93JRAvNYgQT7KbC40WhaXuE/NpWEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.2.7.tgz", + "integrity": "sha512-CCY3o9zs9ypsT40GyRGQMfl63Wy3Spu21ULcteoLTI2/py601XIdhv6zclzBqeYIWPVxMoGGlIq10m2rdEeAOA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.2.7.tgz", + "integrity": "sha512-hBzrXpoDg1OJBl/Ja5nU3oYTBk/FW6J+jTJM1zmXJOJ8Z7NR26I783qlVLQFDYkMynwGBE3kI4a7L87p633BRw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.2.7.tgz", + "integrity": "sha512-imLrVpeBXQwcYDUujBZRE9YG9lqM7F8Qw51JxmCxG2twijlVeofGWw0uVHM16t95cuizt/Ho+bTfNukV7Oza3g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.2.7.tgz", + "integrity": "sha512-MBQxvEE1sz47prRCid+axKwb6zqcbR4XBKj+l9V5NA7/0Rw5PHjrEfWv5Lr5TckYAdIZ1PVgPHlril6hX89evw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/react": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/react/-/react-17.3.2.tgz", + "integrity": "sha512-QVfC0hDJJn3QOV6zX376f2PoHMw9svvnNMlBp/SLy/fmWCPbrvPOGZUMyyJ6DZ921OO9wP46J9/3llJCWIGGbA==", + "dev": true, + "dependencies": { + "@nrwl/react": "17.3.2", + "@nx/devkit": "17.3.2", + "@nx/eslint": "17.3.2", + "@nx/js": "17.3.2", + "@nx/web": "17.3.2", + "@phenomnomnominal/tsquery": "~5.0.1", + "@svgr/webpack": "^8.0.1", + "chalk": "^4.1.0", + "file-loader": "^6.2.0", + "minimatch": "9.0.3", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/react/node_modules/@nrwl/web": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-17.3.2.tgz", + "integrity": "sha512-h8cpbr242ORQ829EygBoQ9AnGk2QSoS/tvO0TIPbzTa4zQhRq5M0+X/M86nUbktKTfElWbAF54ZWCk4sx1Fs2g==", + "dev": true, + "dependencies": { + "@nx/web": "17.3.2" + } + }, + "node_modules/@nx/react/node_modules/@nx/eslint": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-17.3.2.tgz", + "integrity": "sha512-KArvmi9Y4Qcf0bIRXGC1/FZsjL6XtT7wzhJ5uGsJIvXAJUiMMlw/KqIR31pY4nu2cBbphCa0/P1Jp2C/IFXG8w==", + "dev": true, + "dependencies": { + "@nx/devkit": "17.3.2", + "@nx/js": "17.3.2", + "@nx/linter": "17.3.2", + "eslint": "^8.0.0", + "tslib": "^2.3.0", + "typescript": "~5.3.2" + }, + "peerDependencies": { + "js-yaml": "4.1.0" + }, + "peerDependenciesMeta": { + "js-yaml": { + "optional": true + } + } + }, + "node_modules/@nx/react/node_modules/@nx/linter": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-17.3.2.tgz", + "integrity": "sha512-ruB72ODekAlqGI65IeO37vqgJIY+ROcx2Gyf12H3tZGUYeC1IwpPltbU63vD5Qkgj2znrD6aNkpYPV7C0b0scQ==", + "dev": true, + "dependencies": { + "@nx/eslint": "17.3.2" + } + }, + "node_modules/@nx/react/node_modules/@nx/web": { + "version": "17.3.2", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-17.3.2.tgz", + "integrity": "sha512-+FxqiAy3AdJ7nV83dBcWmylHGth/c31xtz3dJinnnUtOaECGWKXkx8hLjWsvM+V+EFMqeD+q1t7q/7CkLPrtXw==", + "dev": true, + "dependencies": { + "@nrwl/web": "17.3.2", + "@nx/devkit": "17.3.2", + "@nx/js": "17.3.2", + "chalk": "^4.1.0", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/react/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/react/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@nx/react/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/react/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/react/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/react/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/react/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/react/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/react/node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@nx/vite": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-17.2.7.tgz", + "integrity": "sha512-F/LGc7RXEabFctsoYmx65QcKdowBvPgyw3x9WtKOC2tQA524IWtAivRaO0zFgAUWZSS6mpGsrr8adla1eAxttA==", + "dev": true, + "dependencies": { + "@nrwl/vite": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/js": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "@swc/helpers": "~0.5.0", + "enquirer": "~2.3.6", + "tsconfig-paths": "^4.1.2" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vitest": ">=0.34.6" + } + }, + "node_modules/@nx/vite/node_modules/@nrwl/devkit": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.7.tgz", + "integrity": "sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "17.2.7" + } + }, + "node_modules/@nx/vite/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, + "node_modules/@nx/vite/node_modules/@nx/devkit": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", + "integrity": "sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "17.2.7", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 16 <= 18" + } + }, + "node_modules/@nx/vite/node_modules/@nx/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/workspace": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/vite/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/vite/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/vite/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/vite/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/vite/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/vite/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@nx/vite/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/vite/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/vite/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/vite/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/vite/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/vite/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/vite/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/vite/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@nx/web": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-17.2.7.tgz", + "integrity": "sha512-UhLD84jCLNwY/dC32v3Q5gAkBuj1p6a0h1ihcXqZdMUYbV6sjJhDAnjnfHyPJWgjaoI5t6VNSTJOaMZM9EMfzg==", + "dev": true, + "dependencies": { + "@nrwl/web": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/js": "17.2.7", + "chalk": "^4.1.0", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/web/node_modules/@nrwl/devkit": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.7.tgz", + "integrity": "sha512-TISLlIH3xSWre2NLg0aMUBmTvMus+xUicaMeg8DWvwSXJJIMC5QFlB1hjw0VkyLsSraHpd5PWtyDqldHWRfKUQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "17.2.7" + } + }, + "node_modules/@nx/web/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, + "node_modules/@nx/web/node_modules/@nx/devkit": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", + "integrity": "sha512-RyJyFO5PkNhMrebpv93Bci6pRkrw6guyfX7Esl/5+O6UfN0ytnmaRIrbiVwftTQ6m/T08OWrJQHZMuByP0WWHQ==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "17.2.7", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 16 <= 18" + } + }, + "node_modules/@nx/web/node_modules/@nx/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/workspace": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/web/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/web/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/web/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/web/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/web/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/web/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@nx/web/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/web/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/web/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/web/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/web/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/web/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/web/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/web/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@nx/webpack": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-17.2.7.tgz", + "integrity": "sha512-OUxUNxgzEyrn36V4+1T3oQNKyukJphgb+DBNc6NWA9dEWf3U48KdfJuALeKoRZ5J+/lS95L8b/2ygSyu0EdpLw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@nrwl/webpack": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/js": "17.2.7", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.21.4", + "chalk": "^4.1.0", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "fork-ts-checker-webpack-plugin": "7.2.13", + "less": "4.1.3", + "less-loader": "11.1.0", "license-webpack-plugin": "^4.0.2", "loader-utils": "^2.0.3", "mini-css-extract-plugin": "~2.4.7", @@ -8041,6 +10912,15 @@ "@nx/devkit": "17.2.7" } }, + "node_modules/@nx/webpack/node_modules/@nrwl/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-17.2.7.tgz", + "integrity": "sha512-8AAUmqESQ89Cbark8DlkElINMmDpEJLivan6RPksUUEK6lrZQwVnHf4eWLQzN2/C4i5XkfdxavzluuDPCqHQSQ==", + "dev": true, + "dependencies": { + "@nx/js": "17.2.7" + } + }, "node_modules/@nx/webpack/node_modules/@nx/devkit": { "version": "17.2.7", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.7.tgz", @@ -8059,6 +10939,52 @@ "nx": ">= 16 <= 18" } }, + "node_modules/@nx/webpack/node_modules/@nx/js": { + "version": "17.2.7", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-17.2.7.tgz", + "integrity": "sha512-IghIrp26b9TprxDzJlqH1ZLer+dNmnSDjoT1jviQWcjNY/8wUxe3avd7niMCpfYD6+r7sSGPZ+KVQSRwT3L09g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "17.2.7", + "@nx/devkit": "17.2.7", + "@nx/workspace": "17.2.7", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, "node_modules/@nx/webpack/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8160,6 +11086,48 @@ "node": ">=10" } }, + "node_modules/@nx/webpack/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack/node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@nx/webpack/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@nx/webpack/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -8308,6 +11276,28 @@ "webpack": "^5.0.0" } }, + "node_modules/@nx/webpack/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@nx/webpack/node_modules/parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -8416,7 +11406,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } @@ -8442,6 +11431,16 @@ "webpack": "^5.0.0" } }, + "node_modules/@nx/webpack/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/@nx/webpack/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8657,6 +11656,12 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -8934,33 +11939,284 @@ "win32" ] }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", - "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", - "cpu": [ - "x64" - ], + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", + "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/wasm-node": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.9.1.tgz", + "integrity": "sha512-awrdTJgcUC0IA5X7Zi2HJlCcdhxaSDZHaBhoNuKt+TgDPdLatbw8GKKcLpqKVEAIOwfajNCQP+taQ/EgM+090A==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@rushstack/node-core-library": { + "version": "3.66.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.66.1.tgz", + "integrity": "sha512-ker69cVKAoar7MMtDFZC4CzcDxjwqIhFzqEnYI5NRN/8M3om6saWCVx/A7vL2t/jFCJsnzQplRDqA7c78pytng==", + "dev": true, + "dependencies": { + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.2.tgz", + "integrity": "sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==", + "dev": true, + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.10.0.tgz", + "integrity": "sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==", + "dev": true, + "dependencies": { + "@rushstack/node-core-library": "4.0.2", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/@rushstack/node-core-library": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", + "integrity": "sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==", + "dev": true, + "dependencies": { + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@rushstack/terminal/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@rushstack/terminal/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@rushstack/terminal/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@rushstack/terminal/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">= 4.0.0" + } }, - "node_modules/@rollup/wasm-node": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.9.1.tgz", - "integrity": "sha512-awrdTJgcUC0IA5X7Zi2HJlCcdhxaSDZHaBhoNuKt+TgDPdLatbw8GKKcLpqKVEAIOwfajNCQP+taQ/EgM+090A==", + "node_modules/@rushstack/terminal/node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, "bin": { - "rollup": "dist/bin/rollup" + "z-schema": "bin/z-schema" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": ">=8.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "commander": "^9.4.1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.19.1.tgz", + "integrity": "sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==", + "dev": true, + "dependencies": { + "@rushstack/terminal": "0.10.0", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" } }, "node_modules/@schematics/angular": { @@ -9032,6 +12288,18 @@ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", @@ -9056,10 +12324,331 @@ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, "node_modules/@swc-node/core": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.10.6.tgz", - "integrity": "sha512-lDIi/rPosmKIknWzvs2/Fi9zWRtbkx8OJ9pQaevhsoGzJSal8Pd315k1W5AIrnknfdAB4HqRN12fk6AhqnrEEw==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.13.0.tgz", + "integrity": "sha512-lFPD4nmy4ifAOVMChFjwlpXN5KQXvegqeyuzz1KQz42q1lf+cL3Qux1/GteGuZjh8HC+Rj1RdNrHpE/MCfJSTw==", "devOptional": true, "engines": { "node": ">= 10" @@ -9069,21 +12658,22 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@swc/core": ">= 1.3" + "@swc/core": ">= 1.3", + "@swc/types": ">= 0.1" } }, "node_modules/@swc-node/register": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.6.8.tgz", - "integrity": "sha512-74ijy7J9CWr1Z88yO+ykXphV29giCrSpANQPQRooE0bObpkTO1g4RzQovIfbIaniBiGDDVsYwDoQ3FIrCE8HcQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.8.0.tgz", + "integrity": "sha512-8K3589HoBSmVmrEVrtr4K5sWEithpGDzcFGic81OW0A9sZY38IV5EGRODQWCk0SBDyLhaF+pid120vJAtsHo1A==", "devOptional": true, "dependencies": { - "@swc-node/core": "^1.10.6", - "@swc-node/sourcemap-support": "^0.3.0", - "colorette": "^2.0.19", + "@swc-node/core": "^1.12.0", + "@swc-node/sourcemap-support": "^0.4.0", + "colorette": "^2.0.20", "debug": "^4.3.4", - "pirates": "^4.0.5", - "tslib": "^2.5.0" + "pirates": "^4.0.6", + "tslib": "^2.6.2" }, "funding": { "type": "github", @@ -9095,13 +12685,78 @@ } }, "node_modules/@swc-node/sourcemap-support": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.3.0.tgz", - "integrity": "sha512-gqBJSmJMWomZFxlppaKea7NeAqFrDrrS0RMt24No92M3nJWcyI9YKGEQKl+EyJqZ5gh6w1s0cTklMHMzRwA1NA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.4.0.tgz", + "integrity": "sha512-weuRmYTO+4yOtHtPZHXlPdA1dJJJp3QOoZAFZ6uZidu992F2X5v1fQdnb26xs1o3Ex/e2sYhRyY5R6NGNuoATQ==", "devOptional": true, "dependencies": { "source-map-support": "^0.5.21", - "tslib": "^2.5.0" + "tslib": "^2.6.2" + } + }, + "node_modules/@swc/cli": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.65.tgz", + "integrity": "sha512-4NcgsvJVHhA7trDnMmkGLLvWMHu2kSy+qHx6QwRhhJhdiYdNUrhdp+ERxen73sYtaeEOYeLJcWrQ60nzKi6rpg==", + "dev": true, + "dependencies": { + "@mole-inc/bin-wrapper": "^8.0.1", + "commander": "^7.1.0", + "fast-glob": "^3.2.5", + "minimatch": "^9.0.3", + "semver": "^7.3.8", + "slash": "3.0.0", + "source-map": "^0.7.3" + }, + "bin": { + "spack": "bin/spack.js", + "swc": "bin/swc.js", + "swcx": "bin/swcx.js" + }, + "engines": { + "node": ">= 12.13" + }, + "peerDependencies": { + "@swc/core": "^1.2.66", + "chokidar": "^3.5.1" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@swc/cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@swc/cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@swc/cli/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@swc/core": { @@ -9308,12 +12963,228 @@ "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", "devOptional": true }, + "node_modules/@swc/helpers": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", + "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@swc/jest": { + "version": "0.2.20", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.20.tgz", + "integrity": "sha512-5qSUBYY1wyIMn7p0Vl9qqV4hMI69oJwZCIPUpBsTFWN2wlwn6RDugzdgCn+bLXVYh+Cxi8bJcZ1uumDgsoL+FA==", + "dev": true, + "dependencies": { + "@jest/create-cache-key-function": "^27.4.2" + }, + "engines": { + "npm": ">= 7.0.0" + }, + "peerDependencies": { + "@swc/core": "*" + } + }, "node_modules/@swc/types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", "devOptional": true }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@testing-library/dom": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", + "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@thednp/event-listener": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@thednp/event-listener/-/event-listener-2.0.4.tgz", @@ -9334,6 +13205,21 @@ "pnpm": ">=8.6.0" } }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -9752,18 +13638,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@twittwer/compodoc/node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/@twittwer/compodoc/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -9931,10 +13805,22 @@ "anymatch": "*" } }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -9990,11 +13876,48 @@ "@types/node": "*" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/chai": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", + "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", + "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, "node_modules/@types/clone": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.4.tgz", "integrity": "sha512-NKRWaEGaVGVLnGLB2GazvDaZnyweW9FJLLFL5LhywGJB3aqGMT9R/EUoJoSRP4nzofYnZysuDmrEJtJdAqUOtQ==" }, + "node_modules/@types/command-line-args": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.0.tgz", + "integrity": "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA==" + }, + "node_modules/@types/command-line-usage": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.2.tgz", + "integrity": "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==" + }, "node_modules/@types/common-tags": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.1.tgz", @@ -10080,6 +14003,11 @@ "@types/send": "*" } }, + "node_modules/@types/flatbuffers": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@types/flatbuffers/-/flatbuffers-1.10.3.tgz", + "integrity": "sha512-kwJQsAROanCiMXSLjcTLmYVBIJ9Qyuqs92SaDIcj2EII2KnDgZbiU7it1Z/JfZd1gmxw/lAahMysQ6ZM+j3Ryw==" + }, "node_modules/@types/fs-extra": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz", @@ -10099,6 +14027,12 @@ "@types/node": "*" } }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, "node_modules/@types/http-errors": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", @@ -10179,6 +14113,15 @@ "@types/node": "*" } }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -10201,10 +14144,20 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "node_modules/@types/pad-left": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/pad-left/-/pad-left-2.1.1.tgz", + "integrity": "sha512-Xd22WCRBydkGSApl5Bw0PhAOHKSVjNL3E3AwzKaps96IMraPqy5BvZIsBVK6JLwdybUzjHnuWVwpDd0JjTfHXA==" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", "dev": true }, "node_modules/@types/qs": { @@ -10217,18 +14170,53 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, + "node_modules/@types/react": { + "version": "18.2.33", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.33.tgz", + "integrity": "sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.14", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz", + "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "dev": true }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, "node_modules/@types/semver": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", @@ -10713,306 +14701,780 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.15.0", - "eslint-visitor-keys": "^3.4.1" - }, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz", + "integrity": "sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.10.0", + "@typescript-eslint/utils": "6.10.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", + "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", + "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.10.0.tgz", + "integrity": "sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/typescript-estree": "6.10.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz", + "integrity": "sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", + "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", + "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.10.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@use-gesture/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.0.tgz", + "integrity": "sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==", + "peer": true + }, + "node_modules/@use-gesture/vanilla": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@use-gesture/vanilla/-/vanilla-10.3.0.tgz", + "integrity": "sha512-hehZWLaNyNc+TWAbhJpj84yumD8ZBp/eet6HGg3xztPcchuNNTGEu5LEEdSg69SXHzS7exWE6j5VnsZ3VXVFxQ==", + "peer": true, + "dependencies": { + "@use-gesture/core": "10.3.0" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", + "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.107" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.6.tgz", + "integrity": "sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.4.6", + "@swc/core-darwin-x64": "1.4.6", + "@swc/core-linux-arm-gnueabihf": "1.4.6", + "@swc/core-linux-arm64-gnu": "1.4.6", + "@swc/core-linux-arm64-musl": "1.4.6", + "@swc/core-linux-x64-gnu": "1.4.6", + "@swc/core-linux-x64-musl": "1.4.6", + "@swc/core-win32-arm64-msvc": "1.4.6", + "@swc/core-win32-ia32-msvc": "1.4.6", + "@swc/core-win32-x64-msvc": "1.4.6" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-darwin-arm64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.6.tgz", + "integrity": "sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-darwin-x64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.6.tgz", + "integrity": "sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.6.tgz", + "integrity": "sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.6.tgz", + "integrity": "sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-arm64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.6.tgz", + "integrity": "sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-x64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.6.tgz", + "integrity": "sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-linux-x64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.6.tgz", + "integrity": "sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.6.tgz", + "integrity": "sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.6.tgz", + "integrity": "sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core-win32-x64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.6.tgz", + "integrity": "sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@vitejs/plugin-react/node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/babel" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz", - "integrity": "sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==", + "node_modules/@vitejs/plugin-react/node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.10.0", - "@typescript-eslint/utils": "6.10.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", - "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", + "node_modules/@vitejs/plugin-react/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@vitejs/plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", - "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", + "node_modules/@vitest/coverage-v8": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz", + "integrity": "sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "magic-string": "^0.30.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/vitest" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "vitest": ">=0.32.0 <1" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", - "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", + "node_modules/@vitest/expect": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.10.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/@vitest/expect/node_modules/@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/@vitest/runner": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/utils": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.10.0.tgz", - "integrity": "sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==", + "node_modules/@vitest/runner/node_modules/@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.10.0", - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/typescript-estree": "6.10.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz", - "integrity": "sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==", + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", - "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", - "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", + "node_modules/@vitest/snapshot": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.10.0", - "@typescript-eslint/visitor-keys": "6.10.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", - "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", + "node_modules/@vitest/spy": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.10.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "tinyspy": "^2.1.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/@vitest/ui": { + "version": "0.34.7", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.34.7.tgz", + "integrity": "sha512-iizUu9R5Rsvsq8FtdJ0suMqEfIsIIzziqnasMHe4VH8vG+FnZSA3UAtCHx6rLeRupIFVAVg7bptMmuvMcsn8WQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@vitest/utils": "0.34.7", + "fast-glob": "^3.3.0", + "fflate": "^0.8.0", + "flatted": "^3.2.7", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "sirv": "^2.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.30.1 <1" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@use-gesture/core": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.0.tgz", - "integrity": "sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==", - "peer": true - }, - "node_modules/@use-gesture/vanilla": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@use-gesture/vanilla/-/vanilla-10.3.0.tgz", - "integrity": "sha512-hehZWLaNyNc+TWAbhJpj84yumD8ZBp/eet6HGg3xztPcchuNNTGEu5LEEdSg69SXHzS7exWE6j5VnsZ3VXVFxQ==", - "peer": true, + "node_modules/@vitest/ui/node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "dependencies": { - "@use-gesture/core": "10.3.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", - "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "node_modules/@vitest/utils": { + "version": "0.34.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.7.tgz", + "integrity": "sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==", "dev": true, - "engines": { - "node": ">=14.6.0" + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/@webassemblyjs/ast": { @@ -11250,9 +15712,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -11491,7 +15953,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -11512,6 +15973,32 @@ "node": ">= 8" } }, + "node_modules/apache-arrow": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-11.0.0.tgz", + "integrity": "sha512-M8J4y+DimIyS44w2KOmVfzNHbTroR1oDpBKK6BYnlu8xVB41lxTz0yLmapo8/WJVAt5XcinAxMm14M771dm/rA==", + "dependencies": { + "@types/command-line-args": "5.2.0", + "@types/command-line-usage": "5.0.2", + "@types/flatbuffers": "*", + "@types/node": "18.7.23", + "@types/pad-left": "2.1.1", + "command-line-args": "5.2.1", + "command-line-usage": "6.1.3", + "flatbuffers": "2.0.4", + "json-bignum": "^0.0.3", + "pad-left": "^2.1.0", + "tslib": "^2.4.0" + }, + "bin": { + "arrow2csv": "bin/arrow2csv.js" + } + }, + "node_modules/apache-arrow/node_modules/@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + }, "node_modules/apache-crypt": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.6.tgz", @@ -11557,6 +16044,26 @@ "node": ">=8" } }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -11592,14 +16099,25 @@ "dequal": "^2.0.3" } }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11711,18 +16229,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -11746,6 +16278,15 @@ "resolved": "https://registry.npmjs.org/as-typed/-/as-typed-1.3.2.tgz", "integrity": "sha512-94ezeKlKB97OJUyMaU7dQUAB+Cmjlgr4T9/cxCoKaLM4F2HAmuIHm3Q5ClGCsX5PvRwCQehCzAa/6foRFXRbqA==" }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/ast-transform": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", @@ -11831,6 +16372,12 @@ "node": ">= 0.6" } }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -11897,9 +16444,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -11907,6 +16457,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axe-core": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.4.tgz", + "integrity": "sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -12335,6 +16894,169 @@ "node": "*" } }, + "node_modules/bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "dependencies": { + "execa": "^0.7.0", + "executable": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/bin-check/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/bin-check/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-check/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/bin-version": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", + "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "find-versions": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version-check": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", + "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", + "dev": true, + "dependencies": { + "bin-version": "^6.0.0", + "semver": "^7.5.3", + "semver-truncate": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/binary-decision-diagram": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/binary-decision-diagram/-/binary-decision-diagram-3.2.0.tgz", @@ -12362,6 +17084,72 @@ "readable-stream": "^3.4.0" } }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bonjour-service": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", @@ -13105,6 +17893,15 @@ "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", "dev": true }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/cacache": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.0.tgz", @@ -13211,6 +18008,58 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -13263,12 +18112,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13287,7 +18142,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -13356,11 +18210,28 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -13385,6 +18256,18 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -13638,6 +18521,18 @@ "node": ">=6" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", @@ -13710,7 +18605,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -13718,8 +18612,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-support": { "version": "1.1.3", @@ -13775,6 +18668,50 @@ "node": ">= 0.8" } }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -13977,6 +18914,38 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", @@ -14650,8 +19619,7 @@ "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { "version": "0.4.2", @@ -15353,6 +20321,11 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, "node_modules/cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", @@ -15385,6 +20358,12 @@ "type": "^1.0.1" } }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -15400,6 +20379,20 @@ "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", "dev": true }, + "node_modules/data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -15485,6 +20478,45 @@ "node": ">=14.16" } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/deep-equal": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", @@ -15505,6 +20537,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -15573,18 +20613,29 @@ "resolved": "https://registry.npmjs.org/defekt/-/defekt-9.3.0.tgz", "integrity": "sha512-AWfM0vhFmESRZawEJfLhRJMsAR5IOhwyxGxIDOh9RXGKcdV65cWtkFB31MNjUfFvAlfbk3c2ooX0rr1pWIXshw==" }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -15784,6 +20835,12 @@ "deprecated": "V0 is gone and the best V1 polyfill is now @ungap/custom-elements", "dev": true }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -15810,6 +20867,19 @@ } ] }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -15845,6 +20915,16 @@ "integrity": "sha512-kxM7fSnNQTXOmaeGuBSXM8O3fEsBb7XSDBllkGbRwa0lJSJTxxDE/4eSNGLKZUmlFw0f1vJ5qSV2BljrgQtgIA==", "dev": true }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -15857,6 +20937,17 @@ "node": ">=8" } }, + "node_modules/dotenv": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", + "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/dotenv-expand": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", @@ -16263,56 +21354,57 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.8", "string.prototype.trimend": "^1.0.7", "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -16321,6 +21413,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", @@ -16328,26 +21459,26 @@ "dev": true }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -16459,7 +21590,6 @@ "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", "dev": true, "hasInstallScript": true, - "optional": true, "bin": { "esbuild": "bin/esbuild" }, @@ -16825,6 +21955,72 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-prettier": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz", @@ -16855,6 +22051,97 @@ } } }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-rxjs": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/eslint-plugin-rxjs/-/eslint-plugin-rxjs-5.0.3.tgz", @@ -17269,6 +22556,18 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -17300,6 +22599,161 @@ "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", "dev": true }, + "node_modules/express": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", + "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/express/node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -17309,6 +22763,31 @@ "type": "^2.7.2" } }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ext/node_modules/type": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", @@ -17426,6 +22905,12 @@ "bser": "2.1.1" } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -17452,6 +22937,106 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/file-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/file-type": { + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.9", + "token-types": "^5.0.0-alpha.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -17479,6 +23064,35 @@ "node": ">=10" } }, + "node_modules/filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/filenamify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", + "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^3.0.0", + "strip-outer": "^2.0.0", + "trim-repeated": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -17550,6 +23164,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "peer": true + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -17566,6 +23197,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/firebase": { "version": "10.8.0", "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.8.0.tgz", @@ -17636,6 +23282,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/flatbuffers": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-2.0.4.tgz", + "integrity": "sha512-4rUFVDPjSoP0tOII34oQf+72NKU7E088U5oX7kwICahft0UB2kOQ9wUzzCp+OHxByERIfxRDCgX5mP8Pjkfl0g==" + }, "node_modules/flatted": { "version": "3.2.9", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", @@ -17683,9 +23334,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -18176,6 +23827,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-graphql-from-jsonschema": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/get-graphql-from-jsonschema/-/get-graphql-from-jsonschema-8.1.0.tgz", @@ -18193,14 +23853,18 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18228,13 +23892,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -18483,6 +24148,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -18592,6 +24282,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -18612,27 +24303,25 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -18652,11 +24341,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -18691,10 +24380,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -18728,6 +24416,19 @@ "he": "bin/he" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -19100,6 +24801,31 @@ "node": ">=8" } }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -19290,7 +25016,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -19306,11 +25031,19 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -19597,13 +25330,13 @@ } }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -19654,14 +25387,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19670,8 +25405,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-bigint": { "version": "1.0.4", @@ -19749,7 +25483,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -19851,6 +25584,18 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -19884,9 +25629,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -20005,13 +25750,28 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20072,11 +25832,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -20130,6 +25890,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -20142,6 +25914,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", @@ -21079,15 +26867,6 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/jest-environment-jsdom/node_modules/acorn-globals": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", @@ -21127,18 +26906,6 @@ "node": ">=12" } }, - "node_modules/jest-environment-jsdom/node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -21198,18 +26965,6 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/jest-environment-jsdom/node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", @@ -21222,36 +26977,6 @@ "node": ">=12" } }, - "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jest-environment-jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", @@ -21286,15 +27011,6 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -22406,6 +28122,12 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, "node_modules/js-base64": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", @@ -22414,8 +28136,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -22437,6 +28158,95 @@ "node": ">=12.0.0" } }, + "node_modules/jsdom": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", + "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -22449,6 +28259,14 @@ "node": ">=4" } }, + "node_modules/json-bignum": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", + "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -22458,8 +28276,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "1.0.0", @@ -22561,6 +28378,21 @@ "node": "*" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", @@ -22612,6 +28444,27 @@ "node": ">= 8" } }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, "node_modules/launch-editor": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", @@ -23224,6 +29077,18 @@ "node": ">= 12.13.0" } }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/localtunnel": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", @@ -23702,6 +29567,44 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -23717,6 +29620,15 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/macos-release": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", @@ -23999,6 +29911,15 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -24294,6 +30215,18 @@ "node": ">=10" } }, + "node_modules/mlly": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } + }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", @@ -24357,25 +30290,6 @@ "whatwg-url": "^13.0.0" } }, - "node_modules/mongodb-connection-string-url/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", @@ -24453,9 +30367,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -24828,6 +30742,16 @@ "node": ">=10.0.0" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", @@ -25059,6 +30983,18 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -25357,17 +31293,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/nx/node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/nx/node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -25746,15 +31671,14 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -25786,13 +31710,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -25803,6 +31727,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.fromentries": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", @@ -25832,6 +31770,19 @@ "get-intrinsic": "^1.2.1" } }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object.values": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", @@ -26121,6 +32072,18 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "dev": true, + "dependencies": { + "arch": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/os-name": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", @@ -26146,6 +32109,15 @@ "node": ">=0.10.0" } }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -26303,6 +32275,17 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/pad-left": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", + "integrity": "sha512-HJxs9K9AztdIQIAIa/OIazRAUW/L6B9hbQDxO4X07roW3eo9XqZc2ur9bn1StH9CnbbI9EgvejHQX7CBpCF1QA==", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -26313,7 +32296,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -26325,7 +32307,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -26342,8 +32323,7 @@ "node_modules/parse-json/node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/parse-node-version": { "version": "1.0.1", @@ -26453,8 +32433,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", @@ -26491,11 +32470,25 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -26546,6 +32539,19 @@ "node": ">=0.10.0" } }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -26704,6 +32710,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "node_modules/png-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", @@ -26777,6 +32794,14 @@ "lodash": "^4.17.14" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -28079,6 +34104,21 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/propagating-hammerjs": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-1.5.0.tgz", @@ -28145,6 +34185,12 @@ "dev": true, "optional": true }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -28356,11 +34402,43 @@ "node": ">= 0.8" } }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -28668,6 +34746,22 @@ "node": ">= 6" } }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dev": true, + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -28698,6 +34792,14 @@ "node": ">=8" } }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "engines": { + "node": ">=6" + } + }, "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -28742,14 +34844,15 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -28881,6 +34984,14 @@ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/replace-ext": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", @@ -28931,7 +35042,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -28944,6 +35054,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -29065,6 +35181,18 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -29198,7 +35326,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", "dev": true, - "optional": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -29223,6 +35350,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -29441,13 +35574,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -29464,15 +35597,18 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -29549,6 +35685,26 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -29621,6 +35777,33 @@ "node": ">=10" } }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-truncate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz", + "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -29907,6 +36090,22 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -29995,6 +36194,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -30071,6 +36276,29 @@ "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sirv/node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -30136,6 +36364,16 @@ "npm": ">= 3.0.0" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/socket.io": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", @@ -30251,6 +36489,30 @@ "node": ">= 14" } }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -30664,6 +36926,12 @@ "node": ">=8" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, "node_modules/static-eval": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", @@ -30845,6 +37113,24 @@ "node": ">= 0.6" } }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-combiner": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", @@ -30883,6 +37169,53 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/streamlit-component-lib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/streamlit-component-lib/-/streamlit-component-lib-2.0.0.tgz", + "integrity": "sha512-ekLjskU4Cz+zSLkTC9jpppv2hb8jlA3z2h+TtwGUGuwMKrGLrvTpzLJI1ibPuI+bZ60mLHVI1GP/OyNb7K7UjA==", + "dependencies": { + "apache-arrow": "^11.0.0", + "hoist-non-react-statics": "^3.3.2", + "react": "^16.14.0", + "react-dom": "^16.14.0" + } + }, + "node_modules/streamlit-component-lib/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamlit-component-lib/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/streamlit-component-lib/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -30960,6 +37293,26 @@ "node": ">=8" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", @@ -31038,6 +37391,15 @@ "node": ">=8" } }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -31071,6 +37433,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-outer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", + "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strong-log-transformer": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", @@ -31087,6 +37473,23 @@ "node": ">=4" } }, + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/style-loader": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", @@ -31119,6 +37522,12 @@ "postcss": "^8.4.31" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "peer": true + }, "node_modules/stylus": { "version": "0.59.0", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", @@ -31166,7 +37575,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -31178,7 +37586,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -31192,6 +37599,12 @@ "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==", "dev": true }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, "node_modules/svgo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.1.0.tgz", @@ -31257,6 +37670,36 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/tablesort": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/tablesort/-/tablesort-5.3.0.tgz", @@ -31654,6 +38097,30 @@ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "dev": true }, + "node_modules/tinybench": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz", + "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -31702,7 +38169,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -31792,6 +38258,32 @@ "node": ">=0.6" } }, + "node_modules/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -31816,6 +38308,17 @@ "node": ">= 4.0.0" } }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/traverse": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", @@ -31843,6 +38346,30 @@ "node": ">=8" } }, + "node_modules/trim-repeated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", + "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ts-api-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", @@ -32271,29 +38798,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -32303,16 +38831,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -32322,14 +38851,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -32369,6 +38904,14 @@ "node": ">=14.17" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } + }, "node_modules/ua-parser-js": { "version": "1.0.37", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", @@ -32392,6 +38935,12 @@ "node": "*" } }, + "node_modules/ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "dev": true + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -32879,29 +39428,29 @@ } }, "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", + "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", @@ -32930,412 +39479,281 @@ }, "terser": { "optional": true - } - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + } } }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], + "node_modules/vite-node": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, "engines": { - "node": ">=12" + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], + "node_modules/vite-plugin-dts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-2.3.0.tgz", + "integrity": "sha512-WbJgGtsStgQhdm3EosYmIdTGbag5YQpZ3HXWUAPCDyoXI5qN6EY0V7NXq0lAmnv9hVQsvh0htbYcg0Or5Db9JQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/parser": "^7.21.4", + "@microsoft/api-extractor": "^7.34.4", + "@rollup/pluginutils": "^5.0.2", + "@rushstack/node-core-library": "^3.55.2", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "kolorist": "^1.7.0", + "magic-string": "^0.29.0", + "ts-morph": "18.0.0" + }, "engines": { - "node": ">=12" + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": ">=2.9.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], + "node_modules/vite-plugin-dts/node_modules/@ts-morph/common": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.19.0.tgz", + "integrity": "sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "fast-glob": "^3.2.12", + "minimatch": "^7.4.3", + "mkdirp": "^2.1.6", + "path-browserify": "^1.0.1" } }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], + "node_modules/vite-plugin-dts/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], + "node_modules/vite-plugin-dts/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], + "node_modules/vite-plugin-dts/node_modules/magic-string": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", + "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, "engines": { "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], + "node_modules/vite-plugin-dts/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], + "node_modules/vite-plugin-dts/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], + "node_modules/vite-plugin-dts/node_modules/ts-morph": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-18.0.0.tgz", + "integrity": "sha512-Kg5u0mk19PIIe4islUI/HWRvm9bC1lHejK4S0oh1zaZ77TMZAEmQC0sHQYiu2RgCQFZKXz1fMVi/7nOOeirznA==", "dev": true, - "optional": true, - "os": [ - "win32" + "dependencies": { + "@ts-morph/common": "~0.19.0", + "code-block-writer": "^12.0.0" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, "engines": { - "node": ">=12" + "node": "^10 || ^12 || >=14" } }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "node_modules/vitest": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", "dev": true, - "hasInstallScript": true, + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + }, "bin": { - "esbuild": "bin/esbuild" + "vitest": "vitest.mjs" }, "engines": { - "node": ">=12" + "node": ">=v14.18.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } } }, - "node_modules/vite/node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "node_modules/vitest/node_modules/@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest/node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=0.4.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "engines": { + "node": ">=14" } }, "node_modules/walker": { @@ -33378,6 +39796,14 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, "node_modules/webpack": { "version": "5.89.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", @@ -33512,120 +39938,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/webpack-dev-server/node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", @@ -33635,54 +39947,6 @@ "node": ">= 10" } }, - "node_modules/webpack-dev-server/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/webpack-dev-server/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -33698,50 +39962,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack-dev-server/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/webpack-dev-server/node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/webpack-dev-server/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", @@ -33955,6 +40175,28 @@ "node": ">=0.10.0" } }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -33986,6 +40228,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", @@ -33993,15 +40253,15 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -34010,6 +40270,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -34103,6 +40379,26 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -34244,6 +40540,15 @@ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -34303,7 +40608,6 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, "engines": { "node": ">= 6" } diff --git a/package.json b/package.json index 0c3a1cd..429b56a 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "build:standalone:sourcemaps": "nx run standalone:build --configuration=production --sourceMap=true --statsJson", "test": "nx run rxdb:test --ci --run-in-band --parallel --pass-with-no-tests --collectCoverage && npm run test:merge", "test:merge": "./node_modules/.bin/lcov-result-merger 'coverage/packages/*.lcov' coverage/lcov.info", - "lint:all": "nx affected --base=master --head=HEAD -t lint --parallel --verbose", + "lint:all": "nx affected --base=master --head=HEAD -t lint --parallel --verbose --exclude tools", "lint:fix": "node --max_old_space_size=8000 ./node_modules/.bin/eslint -- . --fix", "e2e": "ng e2e", "affected": "nx affected", @@ -59,6 +59,7 @@ "dep-graph": "nx dep-graph", "analyze:demo": "node --max_old_space_size=8000 ./node_modules/.bin/source-map-explorer dist/demo/{vendor,main}.*.js{,.map} -m --no-border-checks", "analyze:standalone": "node --max_old_space_size=8000 ./node_modules/.bin/source-map-explorer dist/standalone/browser/{chunk,main}-*.js{,.map} -m --no-border-checks", + "analyze:streamlit": "node --max_old_space_size=8000 ./node_modules/.bin/source-map-explorer packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js{,.map} -m --no-border-checks", "analyze:file": "node --max_old_space_size=8000 ./node_modules/.bin/source-map-explorer dist/demo/{vendor,main}.*.js{,.map} -m --no-border-checks --html dist/out/result.html", "changelog:write": "conventional-changelog -p angular -i CHANGELOG.md -s --config=tools/scripts/conventional-changelog-config.js --skip-unstable", "compodoc": "nx run tools:compodoc" @@ -74,16 +75,21 @@ "@angular/platform-browser-dynamic": "17.0.8", "@angular/router": "17.0.8", "@angular/service-worker": "17.0.8", + "@emotion-icons/material-outlined": "^3.14.0", "@ngrx/component": "^17.0.1", "@ngrx/operators": "^17.0.1", "@ngrx/signals": "^17.0.1", "compare-versions": "^6.1.0", + "fast-deep-equal": "^3.1.3", "ngxtension": "^1.12.0", "normalize.css": "8.0.1", "query-string": "^8.1.0", + "react": "18.2.0", + "react-dom": "18.2.0", "reflect-metadata": "0.1.13", "rxdb": "^15.9.1", "rxjs": "7.8.1", + "streamlit-component-lib": "^2.0.0", "todomvc-app-css": "2.4.3", "todomvc-common": "1.0.5", "tslib": "^2.6.2", @@ -113,25 +119,41 @@ "@nx/eslint": "17.2.7", "@nx/eslint-plugin": "17.2.7", "@nx/jest": "17.2.7", - "@nx/js": "^17.2.7", + "@nx/js": "17.3.2", + "@nx/react": "17.3.2", + "@nx/vite": "17.2.7", + "@nx/web": "17.2.7", "@nx/workspace": "17.2.7", "@schematics/angular": "17.0.8", - "@swc-node/register": "~1.6.7", + "@swc-node/register": "~1.8.0", + "@swc/cli": "~0.1.62", "@swc/core": "~1.3.85", + "@swc/helpers": "~0.5.2", + "@swc/jest": "0.2.20", + "@testing-library/react": "14.0.0", "@twittwer/compodoc": "1.12.0", "@types/fs-extra": "^11.0.2", "@types/jest": "^29.4.0", "@types/node": "18.16.9", + "@types/react": "18.2.33", + "@types/react-dom": "18.2.14", "@types/webpack": "4.41.25", "@typescript-eslint/eslint-plugin": "6.15.0", "@typescript-eslint/parser": "6.15.0", + "@vitejs/plugin-react": "^4.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "@vitest/coverage-v8": "~0.34.6", + "@vitest/ui": "~0.34.6", "conventional-changelog-cli": "^4.1.0", "document-register-element": "1.14.10", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-prettier": "5.1.2", + "eslint-plugin-react": "7.32.2", + "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-rxjs": "=5.0.3", "eslint-plugin-rxjs-angular": "=2.0.1", "fs-extra": "^9.1.0", @@ -142,6 +164,7 @@ "jest-localstorage-mock": "2.4.26", "jest-marbles": "^3.0.6", "jest-preset-angular": "~13.1.4", + "jsdom": "~22.1.0", "jsonc-eslint-parser": "^2.1.0", "lcov-result-merger": "^3.1.0", "lint-staged": "^15.2.0", @@ -161,7 +184,10 @@ "ts-jest": "^29.1.0", "ts-node": "10.9.1", "type-fest": "^4.3.1", - "typescript": "5.2.2" + "typescript": "5.2.2", + "vite": "~5.0.0", + "vite-plugin-dts": "~2.3.0", + "vitest": "~0.34.6" }, "engines": { "node": ">=16" diff --git a/packages/rxdb/README.md b/packages/rxdb/README.md index 2317583..36981a9 100644 --- a/packages/rxdb/README.md +++ b/packages/rxdb/README.md @@ -4,7 +4,7 @@ ## Demo -![Example Screencast](https://github.com/voznik/ngx-odm/blob/master/examples/screencast.gif?raw=true) +![Example Screencast](examples/screencast.gif) [demo](https://voznik.github.io/ngx-odm/) - based on TodoMVC @@ -63,6 +63,12 @@ import { getRxDatabaseCreator } from '@ngx-odm/rxdb/config'; multiInstance: true, // <- multiInstance (optional, default: true) ignoreDuplicate: false, options: { + plugins: [ + // will be loaded by together with core plugins + RxDBDevModePlugin, // <- add only for development + RxDBAttachmentsPlugin, + RxDBLeaderElectionPlugin, + ], storageType: 'dexie|memory', // <- storageType (optional, use if you want defaults provided automatically) dumpPath: 'assets/dump.json', // path to datbase dump file (optional) }, @@ -106,7 +112,7 @@ const todoCollectionConfig: RxCollectionCreatorExtended = { }) export class TodosModule { constructor( - @Inject(NgxRxdbCollectionService) private collectionService: NgxRxdbCollection + @Inject(RXDB_COLLECTION) private collectionService: RxDBCollectionService ) { this.collectionService.sync(); // INFO: collection is ready } @@ -116,11 +122,13 @@ export class TodosModule { ### In your `FeatureService` ```typescript +import { RXDB_COLLECTION } from '@ngx-odm/rxdb'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; + @Injectable() export class TodosService { - private collectionService: NgxRxdbCollection = inject>( - NgxRxdbCollectionService - ); + private collectionService: RxDBCollectionService = + inject>(RXDB_COLLECTION); // store & get filter as property of a `local` document filter$ = this.collectionService .getLocal('local', 'filterValue') @@ -177,6 +185,12 @@ export const appConfig: ApplicationConfig = { multiInstance: true, ignoreDuplicate: false, storage: getRxStorageDexie(), + plugins: [ + // will be loaded by together with core plugins + RxDBDevModePlugin, // <- add only for development + RxDBAttachmentsPlugin, + RxDBLeaderElectionPlugin, + ], }) ), ], @@ -247,7 +261,14 @@ By using this module you can simplify your work with RxDB in Angular application - optionally provide syncronization with remote db (CouchDB, Kinto etc.) as DB options - Automatically initialize RxCollection for each _lazy-loaded Feature module / standalone component_ with config - Work with documents via _NgxRxdbCollectionService_ with unified methods instead of using _RxCollection_ directly (though you still have access to _RxCollection_ and _RxDatabase_ instance) + - simple methods to work database & documents (with queries) + - simple methods to work with local documents + - simple methods to work with attachments + - simple replication sync initialization - Work with signals and entities with `@ngrx/signals` and `@ngrx/entity` (optionally _zoneless_) (see [example](examples/standalone/src/app/todos/todos.store.ts)) +- Persist collection query ([mango-query-syntax](https://github.com/cloudant/mango)) in URL with new plugin `query-params-plugin` (in demo, set localStorage `_ngx_rxdb_queryparams` ) + - provide Observable of current URL (automatically for Angular) + - simple methods to set or patch filter, sort, limit, skip NgxRxdbCollectionService: Provide NgxRxdbService -NgxRxdbCollectionService -> RXDB_CONFIG: Use RXDB_CONFIG +User -> RXDB_COLLECTION: Use RXDB_COLLECTION +RXDB_COLLECTION -> NgxRxdbService: Use NgxRxdbService +NgxRxdbService --> RXDB_COLLECTION: Provide NgxRxdbService +RXDB_COLLECTION -> RXDB_CONFIG: Use RXDB_CONFIG NgxRxdbService --> RXDB_CONFIG: Provide RXDB_CONFIG @enduml diff --git a/packages/rxdb/src/lib/rxdb.module.spec.ts b/packages/rxdb/src/lib/rxdb.module.spec.ts index bc71070..0cda01f 100644 --- a/packages/rxdb/src/lib/rxdb.module.spec.ts +++ b/packages/rxdb/src/lib/rxdb.module.spec.ts @@ -1,16 +1,16 @@ /* eslint-disable @typescript-eslint/no-var-requires */ import { ApplicationInitStatus } from '@angular/core'; import { TestBed, inject } from '@angular/core/testing'; -import { NgxRxdbCollection, NgxRxdbCollectionService } from '@ngx-odm/rxdb/collection'; -import { RXDB_CONFIG } from '@ngx-odm/rxdb/config'; -import { NgxRxdbService } from '@ngx-odm/rxdb/core'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; +import { RxDBService } from '@ngx-odm/rxdb/core'; import { - setupNavigationWarnStub, - getMockRxdbService, TEST_DB_CONFIG_1, TEST_FEATURE_CONFIG_1, + getMockRxdbService, + setupNavigationWarnStub, } from '@ngx-odm/rxdb/testing'; import { NgxRxdbModule } from './rxdb.module'; +import { RXDB, RXDB_COLLECTION, RXDB_CONFIG } from './rxdb.providers'; describe('NgxRxdbModule', () => { beforeAll(() => { @@ -31,7 +31,7 @@ describe('NgxRxdbModule', () => { expect(() => TestBed.inject(RXDB_CONFIG)).toThrowError( /InjectionToken RxDatabaseCreator is not provided. Make sure you call the 'forRoot'/ ); - expect(() => TestBed.inject(NgxRxdbService)).toThrowError( + expect(() => TestBed.inject(RXDB)).toThrowError( // /No provider for/ /InjectionToken RxDatabaseCreator is not provided. Make sure you call the 'forRoot'/ ); @@ -46,7 +46,7 @@ describe('NgxRxdbModule', () => { }); it(`should provide db service`, () => { - expect(TestBed.inject(NgxRxdbService)).toBeDefined(); + expect(TestBed.inject(RXDB)).toBeDefined(); }); it(`should provide db config`, () => { @@ -55,12 +55,12 @@ describe('NgxRxdbModule', () => { }); describe(`NgxRxdbModule :: init w/o forFeature`, () => { - let dbService: NgxRxdbService; + let dbService: RxDBService; beforeEach(async () => { dbService = await getMockRxdbService(); TestBed.configureTestingModule({ imports: [NgxRxdbModule.forRoot(TEST_DB_CONFIG_1)], - providers: [{ provide: NgxRxdbService, useValue: dbService }], + providers: [{ provide: RXDB, useValue: dbService }], }); }); @@ -69,14 +69,12 @@ describe('NgxRxdbModule', () => { }); it(`should not provide feature config token & collection service`, () => { expect(dbService.initCollections).not.toHaveBeenCalled(); - expect(() => TestBed.inject(NgxRxdbCollectionService)).toThrowError( - /No provider for/ - ); + expect(() => TestBed.inject(RXDB_COLLECTION)).toThrowError(/No provider for/); }); }); describe(`NgxRxdbModule :: forFeature`, () => { - let dbService: NgxRxdbService; + let dbService: RxDBService; beforeEach(async () => { dbService = await getMockRxdbService(); @@ -85,15 +83,15 @@ describe('NgxRxdbModule', () => { NgxRxdbModule.forRoot(TEST_DB_CONFIG_1), NgxRxdbModule.forFeature(TEST_FEATURE_CONFIG_1), ], - providers: [{ provide: NgxRxdbService, useValue: dbService }], + providers: [{ provide: RXDB, useValue: dbService }], }); const appInitStatus = TestBed.inject(ApplicationInitStatus); await appInitStatus.donePromise; }); it(`should init db via dbService`, inject( - [NgxRxdbCollectionService], - async (colService: NgxRxdbCollection) => { + [RXDB_COLLECTION], + async (colService: RxDBCollectionService) => { expect(dbService.initDb).toHaveBeenCalledWith(TEST_DB_CONFIG_1); expect(dbService.initCollections).toHaveBeenCalledWith({ [TEST_FEATURE_CONFIG_1.name]: TEST_FEATURE_CONFIG_1, diff --git a/packages/rxdb/src/lib/rxdb.module.ts b/packages/rxdb/src/lib/rxdb.module.ts index 8a1d1c2..bbed794 100644 --- a/packages/rxdb/src/lib/rxdb.module.ts +++ b/packages/rxdb/src/lib/rxdb.module.ts @@ -8,12 +8,18 @@ import { Self, SkipSelf, } from '@angular/core'; -import { NgxRxdbFeatureModule } from '@ngx-odm/rxdb/collection'; -import { RXDB_CONFIG, RxCollectionCreatorExtended } from '@ngx-odm/rxdb/config'; -import { NgxRxdbService } from '@ngx-odm/rxdb/core'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; +import type { RxCollectionCreatorExtended } from '@ngx-odm/rxdb/config'; +import { RxDBService } from '@ngx-odm/rxdb/core'; import { NgxRxdbUtils } from '@ngx-odm/rxdb/utils'; import type { RxDatabaseCreator } from 'rxdb'; -import { provideRxCollection, provideRxDatabase } from './rxdb.providers'; +import { + RXDB, + RXDB_COLLECTION, + RXDB_CONFIG, + provideRxCollection, + provideRxDatabase, +} from './rxdb.providers'; /** * Main module which should be imported once in app module, will init RxDbDatabase with given configuration @@ -118,7 +124,7 @@ export class NgxRxdbModule { if (trueNgxRxdbConfig && !ngxRxdbConfig) { appInitStatus.donePromise.then(() => { - const ngxRxdbService = injector.get(NgxRxdbService); + const ngxRxdbService = injector.get(RXDB); if (ngxRxdbService.db.startupErrors.length) { NgxRxdbUtils.logger.log(ngxRxdbService.db.startupErrors); } @@ -129,3 +135,18 @@ export class NgxRxdbModule { } } } + +/** + * (Fake) Feature module for NgxRxdbModule + * + * By being provided with `forChild` method of *root* NgxRxdbModule, + * and by injecting `RXDB_COLLECTION` in its constructor, + * this module actually creates a collection with collectionService and provided config + */ +@NgModule() +export class NgxRxdbFeatureModule { + constructor( + @Inject(RXDB) private dbService: RxDBService, + @Inject(RXDB_COLLECTION) private collectionService: RxDBCollectionService + ) {} +} diff --git a/packages/rxdb/query-params/src/tokens.spec.ts b/packages/rxdb/src/lib/rxdb.providers.spec.ts similarity index 92% rename from packages/rxdb/query-params/src/tokens.spec.ts rename to packages/rxdb/src/lib/rxdb.providers.spec.ts index 0990c9a..14df3f9 100644 --- a/packages/rxdb/query-params/src/tokens.spec.ts +++ b/packages/rxdb/src/lib/rxdb.providers.spec.ts @@ -2,9 +2,9 @@ import { Location } from '@angular/common'; import { SpyLocation } from '@angular/common/testing'; import { TestBed } from '@angular/core/testing'; import { Router } from '@angular/router'; -import { MangoQueryParams } from '@ngx-odm/rxdb/config'; +import type { MangoQueryParams } from '@ngx-odm/rxdb/config'; import { Observable, take } from 'rxjs'; -import { CURRENT_URL, updateQueryParams } from './tokens'; +import { CURRENT_URL, updateQueryParams } from './rxdb.providers'; describe('query-params injection tokens', () => { describe('CURRENT_URL should emit stream', () => { diff --git a/packages/rxdb/src/lib/rxdb.providers.ts b/packages/rxdb/src/lib/rxdb.providers.ts index 173a4ef..b6fb38a 100644 --- a/packages/rxdb/src/lib/rxdb.providers.ts +++ b/packages/rxdb/src/lib/rxdb.providers.ts @@ -1,15 +1,39 @@ -import { APP_INITIALIZER, Provider } from '@angular/core'; -import { - NgxRxdbCollectionService, - collectionServiceFactory, -} from '@ngx-odm/rxdb/collection'; -import { - RXDB_CONFIG, - RXDB_CONFIG_COLLECTION, - RxCollectionCreatorExtended, -} from '@ngx-odm/rxdb/config'; -import { NgxRxdbService } from '@ngx-odm/rxdb/core'; +import { Location } from '@angular/common'; +import { APP_INITIALIZER, InjectionToken, NgZone, Provider, inject } from '@angular/core'; +import { Router } from '@angular/router'; +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; +import type { RxCollectionCreatorExtended } from '@ngx-odm/rxdb/config'; +import { MangoQueryParams } from '@ngx-odm/rxdb/config'; +import { RxDBService } from '@ngx-odm/rxdb/core'; import { RxDatabaseCreator } from 'rxdb'; +import { BehaviorSubject, Observable, defer, distinctUntilChanged } from 'rxjs'; + +/** + * Instance of RxDB service + */ +export const RXDB = new InjectionToken('RxDBService Instance', { + providedIn: 'root', + factory: () => new RxDBService(), +}); + +/** + * Instance of RxDatabaseCreator + */ +export const RXDB_CONFIG = new InjectionToken('RxDatabaseCreator'); + +/** + * Instance of RxCollectionCreator + */ +/* prettier-ignore */ +export const RXDB_CONFIG_COLLECTION = new InjectionToken('RxCollectionCreator'); + +/** + * Injection token for Service for interacting with a RxCollection. + * This token is used to inject an instance of RxDBCollectionService into a component or service. + */ +export const RXDB_COLLECTION = new InjectionToken( + 'RxDBCollectionService' +); /** * Initializes DB at `APP_INITIALIZER` cycle @@ -17,7 +41,7 @@ import { RxDatabaseCreator } from 'rxdb'; * @param dbConfig */ function dbInitializerFactory( - dbService: NgxRxdbService, + dbService: RxDBService, dbConfig: RxDatabaseCreator ): () => Promise { return async () => { @@ -50,7 +74,7 @@ export function provideRxDatabase(config: RxDatabaseCreator): Provider[] { { provide: APP_INITIALIZER, useFactory: dbInitializerFactory, - deps: [NgxRxdbService, RXDB_CONFIG], + deps: [RXDB, RXDB_CONFIG], multi: true, }, ]; @@ -82,9 +106,59 @@ export function provideRxCollection( return [ { provide: RXDB_CONFIG_COLLECTION, useValue: collectionConfig }, { - provide: NgxRxdbCollectionService, - useFactory: collectionServiceFactory(collectionConfig), - deps: [], + provide: RXDB_COLLECTION, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore // INFO: no need for typings here, nothing's exposed, but ts complains // NOSONAR + useFactory: (config, dbService, ngZone, currentUrl, updateQueryParamsFn) => + new RxDBCollectionService( + config, + dbService, + ngZone, + currentUrl, + updateQueryParamsFn + ), + deps: [ + // + RXDB_CONFIG_COLLECTION, + RXDB, + NgZone, + CURRENT_URL, + updateQueryParams, + ], }, ]; } + +/** + * The current URL as an observable + */ +export const CURRENT_URL = new InjectionToken>('CURRENT_URL', { + providedIn: 'root', + factory: () => { + const location = inject(Location); + const subject = new BehaviorSubject(window.location.href); + + location.onUrlChange(url => { + subject.next(url); + }); + return defer(() => subject).pipe(distinctUntilChanged()); + }, +}); + +/** + * Updates query params in the URL via {@link Router.navigate } + */ +export const updateQueryParams = new InjectionToken< + (queryParams: MangoQueryParams) => Promise +>('UPDATE_QUERY_PARAMS', { + providedIn: 'root', + factory: () => { + const router = inject(Router); + return (queryParams: MangoQueryParams) => { + return router.navigate([], { + queryParams, + queryParamsHandling: 'merge', + }); + }; + }, +}); diff --git a/packages/rxdb/testing/src/lib/mocks.ts b/packages/rxdb/testing/src/lib/mocks.ts index bb92c39..75797c2 100644 --- a/packages/rxdb/testing/src/lib/mocks.ts +++ b/packages/rxdb/testing/src/lib/mocks.ts @@ -2,7 +2,7 @@ /// import { RxCollectionCreatorExtended } from '@ngx-odm/rxdb/config'; -import { NgxRxdbService, loadRxDBPlugins } from '@ngx-odm/rxdb/core'; +import { RxDBService, loadRxDBPlugins } from '@ngx-odm/rxdb/core'; import { RxCollectionCreator, RxDatabaseCreator, @@ -110,6 +110,7 @@ export const getMockRxCollection = async ( randomName = false ) => { await loadRxDBPlugins(); + const database = await createRxDatabase({ name: randomName ? randomCouchString(6) : 'test', storage: getRxStorageMemory(), @@ -153,6 +154,6 @@ export const getMockRxdbService = async ( service.collections[colConfig.name] = collection; return Promise.resolve(service.collections); }); - Object.setPrototypeOf(service, NgxRxdbService.prototype); - return service as unknown as NgxRxdbService; + Object.setPrototypeOf(service, RxDBService.prototype); + return service as unknown as RxDBService; }; diff --git a/packages/rxdb/utils/src/lib/utils.ts b/packages/rxdb/utils/src/lib/utils.ts index 0740b44..7a3025e 100644 --- a/packages/rxdb/utils/src/lib/utils.ts +++ b/packages/rxdb/utils/src/lib/utils.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-unused-vars, @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any, no-console */ -import { NgZone, isDevMode } from '@angular/core'; import type { FilledMangoQuery, PreparedQuery, RxDocument, RxJsonSchema } from 'rxdb'; import { prepareQuery } from 'rxdb'; import { RxReplicationState } from 'rxdb/plugins/replication'; @@ -214,8 +213,11 @@ export namespace NgxRxdbUtils { export const isObject = (x: any): x is object => Object.prototype.toString.call(x) === '[object Object]'; - export function isNgZone(zone: unknown): zone is NgZone { - return zone instanceof NgZone; + export const isEmptyObject = (x: any): x is object => + isNullOrUndefined(x) || (isObject(x) && isEmpty(x)); + + export function isDevMode(): boolean { + return typeof globalThis['ngDevMode'] === 'undefined' || !!globalThis['ngDevMode']; } export function isValidNumber(value: any): value is number { @@ -230,6 +232,55 @@ export namespace NgxRxdbUtils { return value; } + /** + * Invokes the iteratee `n` times, returning an array of the results of each invocation. + * + * Differences from lodash: + * - has undefined behavior when given a non natural number for `n` + * - does not provide a default for `iteratee` + * + * Contribution to minified bundle size, when it is the only function imported: + * - Lodash: 1,497 bytes + * - Micro-dash: 51 bytes + * @param n + * @param iteratee + */ + export function times(n: number, iteratee: (index: number) => T): T[] { + const result: T[] = []; + for (let i = 0; i < n; ++i) { + result[i] = iteratee(i); + } + return result; + } + + /** + * Creates an array of numbers _(positive and/or negative)_ progressing from `start` up to, but not including, `end`. A `step` of `-1` is used if a negative `start` is specified without an `end` or `step`. If `end` is not specified, it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving floating-point values which can produce unexpected results. + * + * Differences from lodash: + * - does not work as an iteratee for methods like `map` + * + * Contribution to minified bundle size, when it is the only function imported: + * - Lodash: 2,020 bytes + * - Micro-dash: 181 bytes + */ + + export function range(end: number): number[]; + // tslint:disable-next-line:unified-signatures + export function range(start: number, end: number, step?: number): number[]; + + export function range(start: number, end?: number, step?: number): number[] { + if (isUndefined(end)) { + end = start; + start = 0; + } + if (isUndefined(step)) { + step = end < start ? -1 : 1; + } + return times(Math.abs((end - start) / (step || 1)), i => start + step! * i); + } + export function getMaybeId(entityOrId: object | string): string { if (isObject(entityOrId)) { return entityOrId['_id']; @@ -330,22 +381,6 @@ export namespace NgxRxdbUtils { }; } - /** - * Moves observable execution in and out of Angular zone. - * @param zone - */ - export function runInZone(zone: NgZone): OperatorFunction { - return source => { - return new Observable(subscriber => { - return source.subscribe( - (value: T) => zone.run(() => subscriber.next(value)), - (e: any) => zone.run(() => subscriber.error(e)), - () => zone.run(() => subscriber.complete()) - ); - }); - }; - } - /** * Simple rxjs exponential backoff retry operator * @param count diff --git a/packages/streamlit-rxdb-dataframe/.streamlit/config.toml b/packages/streamlit-rxdb-dataframe/.streamlit/config.toml new file mode 100644 index 0000000..6b77658 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/.streamlit/config.toml @@ -0,0 +1,12 @@ +[server] +headless = true +runOnSave = true +allowRunOnSave = true +# fastReruns = true +fileWatcherType = "auto" + +[browser] +gatherUsageStats = false + +[logger] +level = "info" diff --git a/packages/streamlit-rxdb-dataframe/LICENSE b/packages/streamlit-rxdb-dataframe/LICENSE new file mode 100644 index 0000000..d7e8cff --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018-2021 Streamlit Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/streamlit-rxdb-dataframe/MANIFEST.in b/packages/streamlit-rxdb-dataframe/MANIFEST.in new file mode 100644 index 0000000..96612fe --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/MANIFEST.in @@ -0,0 +1 @@ +recursive-include rxdb_dataframe/frontend/build * diff --git a/packages/streamlit-rxdb-dataframe/README.md b/packages/streamlit-rxdb-dataframe/README.md new file mode 100644 index 0000000..144d271 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/README.md @@ -0,0 +1,183 @@ +# streamlit-rxdb-dataframe + +Custom `streamlit` component connecting local browser `indexedDB` database as `RxDB` collection as `dataframe` + +## Demo + +[demo](https://st-rxdb-dataframe.streamlit.app/) - based on TodoMVC + +![Example Screencast](https://github.com/voznik/ngx-odm/blob/master/packages/streamlit-rxdb-dataframe/screencast.gif?raw=true) + +## Usage + +### Provide JSONSchema + +
+JSONSchema + +```json +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Todo", + "description": "Todo Schema", + "required": ["id", "title", "createdAt"], + "version": 0, + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id", + "pattern": "^(.*)$", + "maxLength": 36, + "readOnly": true + }, + "title": { + "type": "string", + "title": "Title", + "minLength": 3 + }, + "completed": { + "type": "boolean", + "title": "Done" + }, + "createdAt": { + "type": "string", + "title": "Created Date", + "format": "date-time", + "readOnly": true + }, + "last_modified": { + "type": "integer", + "format": "time", + "title": "Last Modified Date" + } + }, + "__indexes": ["createdAt"], + "primaryKey": "id", + "attachments": { + "encrypted": false + } +} +``` + +
+ +### Provide Collection Config and use streamlit dataframe, data_editor or table + +```python + +todoSchema: Dict = json.load(open(os.path.join(data_dir, "todo.schema.json"))) +# initial_docs: List = json.load(open(os.path.join(data_dir, "col.dump.json")))["docs"] +collection_config = { + "name": "todo", + "schema": todoSchema, # to auto load schema from remote url pass None + "localDocuments": True, + "options": { + # 'schemaUrl': 'assets/data/todo.schema.json', + # "initialDocs": initial_docs, + }, +} + +def on_change_dataframe(rxdb_state: RxDBSessionState): + print("RxDBDataframe component on_change call") + print("collection.info()", rxdb_state.info) + print("dataframe.head()", rxdb_state.dataframe.head()) + +df = rxdb_dataframe( + collection_config, + query=None, + with_rev=False, + on_change=on_change_dataframe, +) +st.dataframe( + df, + use_container_width=True, + hide_index=True, + column_config=st.session_state["rxdb"]["column_config"], + column_order=["title", "completed", "createdAt"], +) +``` + +## Run & Build + +### Run + +```bash +cd packages/streamlit-rxdb-dataframe/ +poetry run streamlit run example.py +``` + +### Build + +```bash +poetry build -o ../../dist/packages/streamlit-rxdb-dataframe +``` + +### Publish + +```bash +poetry publish -r test-pypi --dist-dir ../../dist/packages/streamlit-rx +db-dataframe +``` + + diff --git a/packages/streamlit-rxdb-dataframe/e2e/e2e_utils.py b/packages/streamlit-rxdb-dataframe/e2e/e2e_utils.py new file mode 100644 index 0000000..85fb4b5 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/e2e/e2e_utils.py @@ -0,0 +1,172 @@ +import contextlib +import logging +import os +import shlex +import socket +import subprocess +import sys +import time +import typing +from contextlib import closing +from tempfile import TemporaryFile + +import requests + + +LOGGER = logging.getLogger(__file__) + + +def _find_free_port(): + """Find and return a free port on the local machine.""" + with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s: + s.bind(("", 0)) # 0 means that the OS chooses a random port + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + return int(s.getsockname()[1]) # [1] contains the randomly selected port number + + +class AsyncSubprocess: + """A context manager. Wraps subprocess. Popen to capture output safely.""" + + def __init__(self, args: typing.List[str], cwd: typing.Optional[str] = None, + env: typing.Optional[typing.Dict[str, str]] = None): + """Initialize an AsyncSubprocess instance. + + Args: + args (List[str]): List of command-line arguments. + cwd (str, optional): Current working directory. Defaults to None. + env (dict, optional): Environment variables. Defaults to None. + """ + self.args = args + self.cwd = cwd + self.env = env + self._proc = None + self._stdout_file = None + + def terminate(self) -> typing.Optional[str]: + """Terminate the process and return its stdout/stderr in a string.""" + if self._proc is not None: + self._proc.terminate() + self._proc.wait() + self._proc = None + + # Read the stdout file and close it + stdout = None + if self._stdout_file is not None: + self._stdout_file.seek(0) + stdout = self._stdout_file.read() + self._stdout_file.close() + self._stdout_file = None + + return stdout + + def __enter__(self) -> "AsyncSubprocess": + """Start the subprocess when entering the context.""" + self.start() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + """Stop the subprocess and close resources when exiting the context.""" + self.stop() + + def start(self): + # Start the process and capture its stdout/stderr output to a temp + # file. We do this instead of using subprocess.PIPE (which causes the + # Popen object to capture the output to its own internal buffer), + # because large amounts of output can cause it to deadlock. + self._stdout_file = TemporaryFile("w+") + LOGGER.info("Running command: %s", shlex.join(self.args)) + self._proc = subprocess.Popen( + self.args, + cwd=self.cwd, + stdout=self._stdout_file, + stderr=subprocess.STDOUT, + text=True, + env={**os.environ.copy(), **self.env} if self.env else None, + ) + + def stop(self): + """Terminate the subprocess and close resources.""" + if self._proc is not None: + self._proc.terminate() + self._proc = None + if self._stdout_file is not None: + self._stdout_file.close() + self._stdout_file = None + + +class StreamlitRunner: + """A context manager for running Streamlit scripts.""" + + def __init__( + self, script_path: os.PathLike, server_port: typing.Optional[int] = None + ): + """Initialize a StreamlitRunner instance. + + Args: + script_path (os.PathLike): Path to the Streamlit script to run. + server_port (int, optional): Port for the Streamlit server. Defaults to None. + """ + self._process = None + self.server_port = server_port + self.script_path = script_path + + def __enter__(self) -> "StreamlitRunner": + """Start the Streamlit server when entering the context.""" + self.start() + return self + + def __exit__(self, type, value, traceback): + """Stop the Streamlit server and close resources when exiting the context.""" + self.stop() + + def start(self): + """Start the Streamlit server using the specified script and options.""" + self.server_port = self.server_port or _find_free_port() + self._process = AsyncSubprocess( + [ + sys.executable, + "-m", + "streamlit", + "run", + str(self.script_path), + f"--server.port={self.server_port}", + "--server.headless=true", + "--browser.gatherUsageStats=false", + "--global.developmentMode=false", + ] + ) + self._process.start() + if not self.is_server_running(): + self._process.stop() + raise RuntimeError("Application failed to start") + + def stop(self): + """Stop the Streamlit server and close resources.""" + self._process.stop() + + def is_server_running(self, timeout: int = 30) -> bool: + """Check if the Streamlit server is running. + + Args: + timeout (int, optional): Maximum time to wait for the server to start. Defaults to 30. + + Returns: + bool: True if the server is running, False otherwise. + """ + with requests.Session() as http_session: + start_time = time.time() + while True: + with contextlib.suppress(requests.RequestException): + response = http_session.get(self.server_url + "/_stcore/health") + if response.text == "ok": + return True + time.sleep(3) + if time.time() - start_time > 60 * timeout: + return False + + @property + def server_url(self) -> str: + """Get the URL of the Streamlit server.""" + if not self.server_port: + raise RuntimeError("Unknown server port") + return f"http://localhost:{self.server_port}" diff --git a/packages/streamlit-rxdb-dataframe/e2e/test_rxdb_dataframe.py b/packages/streamlit-rxdb-dataframe/e2e/test_rxdb_dataframe.py new file mode 100644 index 0000000..16d31e0 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/e2e/test_rxdb_dataframe.py @@ -0,0 +1,36 @@ +from pathlib import Path + +import pytest + +from playwright.sync_api import Page, expect + +from e2e_utils import StreamlitRunner + +ROOT_DIRECTORY = Path(__file__).parent.parent.absolute() +BASIC_EXAMPLE_FILE = ROOT_DIRECTORY / "rxdb_dataframe" / "example.py" + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(BASIC_EXAMPLE_FILE) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_dataframe(page: Page): + frame = page.frame_locator( + 'iframe[title="rxdb_dataframe\\.rxdb_dataframe"]' + ) + cell_in_frame = frame.get_by_role("cell", name="Jason") + expect(cell_in_frame).to_be_visible() + + st_table = page.get_by_test_id('stTable') + + frame.get_by_role("button", name="Return dataframe").click() + cell_generated = st_table.get_by_role("cell", name="Jason") + expect(cell_generated).to_be_visible() diff --git a/packages/streamlit-rxdb-dataframe/example.py b/packages/streamlit-rxdb-dataframe/example.py new file mode 100644 index 0000000..1082a84 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/example.py @@ -0,0 +1,115 @@ +import json +import os +from typing import Dict, List +import streamlit as st +from streamlit.runtime.caching import cache_data +from rxdb_dataframe import ( + RXDB_COLLECTION_EDITOR_KEY, + RxCollectionCreator, + RxDBSessionState, + rxdb_dataframe, +) + +# from pandas.api.types import ( is_bool_dtype, is_categorical_dtype, is_datetime64_any_dtype, is_numeric_dtype, is_object_dtype, ) # noqa: E501 + +current_dir = os.path.dirname(os.path.abspath(__file__)) +data_dir = os.path.join(current_dir, "rxdb_dataframe/frontend/public/assets/data") + +collection_name = "todo" +todoSchema: Dict = json.load(open(os.path.join(data_dir, "todo.schema.json"))) +initial_docs: List = json.load(open(os.path.join(data_dir, "col.dump.json")))["docs"] +collection_config: RxCollectionCreator = { + "name": collection_name, + "schema": todoSchema, # to auto load schema from remote url pass None + "localDocuments": True, + "options": { + # 'schemaUrl': 'assets/data/todo.schema.json', + "initialDocs": initial_docs, + "recreate": False, + }, +} + + +state = RxDBSessionState() +column_config = state.column_config +query = state.query + + +def on_change_dataframe(rxdb_state: RxDBSessionState): + print("RxDBDataframe component on_change call") + print("collection.info()", rxdb_state.info) + + +@cache_data +def apply_row_style(row): + return ( + ["color:green"] * len(row) if row.completed else ["color:grey"] * len(row) # default color + ) # noqa: E501 + + +display = st.radio( + "Display RxDB collection as:", + options=["dataframe", "data_editor", "table"], + horizontal=True, +) +filter = st.radio( + label="Filter data using RxDB **RxQuery**", + help="MangoQuery syntax", + label_visibility="visible", + options=["all", "active", "completed"], + horizontal=True, +) + +if filter == "active": + query = {"selector": {"completed": {"$eq": False}}} +elif filter == "completed": + query = {"selector": {"completed": {"$eq": True}}} +else: + query = {"selector": {}} + +df = rxdb_dataframe( + collection_config, + query=query, + with_rev=False, + on_change=on_change_dataframe, +) + +if display == "data_editor": + try: + st.data_editor( + df.copy().style.apply(apply_row_style, axis=1), + use_container_width=True, + hide_index=True, + column_config=column_config, + column_order=["title", "completed", "createdAt"], + num_rows="dynamic", + key=RXDB_COLLECTION_EDITOR_KEY, + ) + except Exception as e: + st.error(f"An error occurred: {str(e)}") +elif display == "dataframe": + try: + st.dataframe( + df.style.apply(apply_row_style, axis=1), + use_container_width=True, + hide_index=True, + column_config=column_config, + column_order=["title", "completed", "createdAt"], + ) + except Exception as e: + st.error(f"An error occurred: {str(e)}") +else: + try: + st.table( + df.style.apply(apply_row_style, axis=1), + ) + except Exception as e: + st.error(f"An error occurred: {str(e)}") + + +with st.sidebar: + st.write("RxDB Collection Config") + st.json(collection_config, expanded=False) + + st.write("RsDB Session State:") + st.json(st.session_state, expanded=False) diff --git a/packages/streamlit-rxdb-dataframe/poetry.lock b/packages/streamlit-rxdb-dataframe/poetry.lock new file mode 100644 index 0000000..1db27f6 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/poetry.lock @@ -0,0 +1,1551 @@ +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. + +[[package]] +name = "altair" +version = "5.2.0" +description = "Vega-Altair: A declarative statistical visualization library for Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "altair-5.2.0-py3-none-any.whl", hash = "sha256:8c4888ad11db7c39f3f17aa7f4ea985775da389d79ac30a6c22856ab238df399"}, + {file = "altair-5.2.0.tar.gz", hash = "sha256:2ad7f0c8010ebbc46319cc30febfb8e59ccf84969a201541c207bc3a4fa6cf81"}, +] + +[package.dependencies] +jinja2 = "*" +jsonschema = ">=3.0" +numpy = "*" +packaging = "*" +pandas = ">=0.25" +toolz = "*" +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["anywidget", "geopandas", "hatch", "ipython", "m2r", "mypy", "pandas-stubs", "pyarrow (>=11)", "pytest", "pytest-cov", "ruff (>=0.1.3)", "types-jsonschema", "types-setuptools", "vega-datasets", "vegafusion[embed] (>=1.4.0)", "vl-convert-python (>=1.1.0)"] +doc = ["docutils", "jinja2", "myst-parser", "numpydoc", "pillow (>=9,<10)", "pydata-sphinx-theme (>=0.14.1)", "scipy", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinxext-altair"] + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "black" +version = "23.12.1" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.8" +files = [ + {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, + {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, + {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, + {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, + {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, + {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, + {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, + {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, + {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, + {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, + {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, + {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, + {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, + {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, + {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, + {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, + {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, + {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, + {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, + {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, + {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, + {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "blinker" +version = "1.7.0" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.8" +files = [ + {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"}, + {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"}, +] + +[[package]] +name = "cachetools" +version = "5.3.3" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, + {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, +] + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "flake8" +version = "7.0.0" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, + {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.11.0,<2.12.0" +pyflakes = ">=3.2.0,<3.3.0" + +[[package]] +name = "flake8-annotations-complexity" +version = "0.0.8" +description = "A flake8 extension that checks for type annotations complexity" +optional = false +python-versions = ">=3.7" +files = [ + {file = "flake8_annotations_complexity-0.0.8-py3-none-any.whl", hash = "sha256:44e299dac0ab64f3af4b478fac7feb635c113a606036de8b39dadab3531da7ed"}, + {file = "flake8_annotations_complexity-0.0.8.tar.gz", hash = "sha256:8914e76e31672c4063c928b0a250db6b935a16d1799de10457958a71d11bb665"}, +] + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.42" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.42-py3-none-any.whl", hash = "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd"}, + {file = "GitPython-3.1.42.tar.gz", hash = "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar"] + +[[package]] +name = "greenlet" +version = "3.0.3" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "idna" +version = "3.6" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "jinja2" +version = "3.1.3" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jsonschema" +version = "4.21.1" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "mypy" +version = "1.9.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, + {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, + {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, + {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, + {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, + {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, + {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, + {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, + {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, + {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, + {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, + {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, + {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, + {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, + {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, + {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, + {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, + {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pandas" +version = "2.2.1" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, + {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, + {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, + {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, + {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, + {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, + {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "pillow" +version = "10.2.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "platformdirs" +version = "4.2.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] + +[[package]] +name = "playwright" +version = "1.42.0" +description = "A high-level API to automate web browsers" +optional = false +python-versions = ">=3.8" +files = [ + {file = "playwright-1.42.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:e2b293f077efeaa45253fde31cea4bc6b0ae8be6b5e65e8ce8b4aa3b9f0d55b6"}, + {file = "playwright-1.42.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:283887f0bdd0039c3d720e32fbc73a045c24fa800599a6ad60fb199c29580534"}, + {file = "playwright-1.42.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:4e1fc1c049a0af64626ddd50814d14a01f316bcbb4d1aa83c3416fe420add558"}, + {file = "playwright-1.42.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:313f2551a772f57c9ccca017c4dd4661f2277166f9e1d84bbf5a2e316f0f892c"}, + {file = "playwright-1.42.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2a46a24641e5d468046cde567c98fdb8d85e32df901630b14dfb288cbd1ed4f"}, + {file = "playwright-1.42.0-py3-none-win32.whl", hash = "sha256:dbf473496808d4c2c816902c1dee2aabc029648e56ce8514b643f5a1a6fc8e22"}, + {file = "playwright-1.42.0-py3-none-win_amd64.whl", hash = "sha256:e092c6cfbf797bff03fbdfc53c3e6a9e29fbcf6b82f9e43113d37494aee0561b"}, +] + +[package.dependencies] +greenlet = "3.0.3" +pyee = "11.0.1" + +[[package]] +name = "pluggy" +version = "1.4.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "protobuf" +version = "4.25.3" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, +] + +[[package]] +name = "pyarrow" +version = "15.0.2" +description = "Python library for Apache Arrow" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyarrow-15.0.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:88b340f0a1d05b5ccc3d2d986279045655b1fe8e41aba6ca44ea28da0d1455d8"}, + {file = "pyarrow-15.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eaa8f96cecf32da508e6c7f69bb8401f03745c050c1dd42ec2596f2e98deecac"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23c6753ed4f6adb8461e7c383e418391b8d8453c5d67e17f416c3a5d5709afbd"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f639c059035011db8c0497e541a8a45d98a58dbe34dc8fadd0ef128f2cee46e5"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:290e36a59a0993e9a5224ed2fb3e53375770f07379a0ea03ee2fce2e6d30b423"}, + {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:06c2bb2a98bc792f040bef31ad3e9be6a63d0cb39189227c08a7d955db96816e"}, + {file = "pyarrow-15.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:f7a197f3670606a960ddc12adbe8075cea5f707ad7bf0dffa09637fdbb89f76c"}, + {file = "pyarrow-15.0.2-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5f8bc839ea36b1f99984c78e06e7a06054693dc2af8920f6fb416b5bca9944e4"}, + {file = "pyarrow-15.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f5e81dfb4e519baa6b4c80410421528c214427e77ca0ea9461eb4097c328fa33"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4f240852b302a7af4646c8bfe9950c4691a419847001178662a98915fd7ee7"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e7d9cfb5a1e648e172428c7a42b744610956f3b70f524aa3a6c02a448ba853e"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2d4f905209de70c0eb5b2de6763104d5a9a37430f137678edfb9a675bac9cd98"}, + {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90adb99e8ce5f36fbecbbc422e7dcbcbed07d985eed6062e459e23f9e71fd197"}, + {file = "pyarrow-15.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:b116e7fd7889294cbd24eb90cd9bdd3850be3738d61297855a71ac3b8124ee38"}, + {file = "pyarrow-15.0.2-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:25335e6f1f07fdaa026a61c758ee7d19ce824a866b27bba744348fa73bb5a440"}, + {file = "pyarrow-15.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:90f19e976d9c3d8e73c80be84ddbe2f830b6304e4c576349d9360e335cd627fc"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a22366249bf5fd40ddacc4f03cd3160f2d7c247692945afb1899bab8a140ddfb"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2a335198f886b07e4b5ea16d08ee06557e07db54a8400cc0d03c7f6a22f785f"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e6d459c0c22f0b9c810a3917a1de3ee704b021a5fb8b3bacf968eece6df098f"}, + {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:033b7cad32198754d93465dcfb71d0ba7cb7cd5c9afd7052cab7214676eec38b"}, + {file = "pyarrow-15.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:29850d050379d6e8b5a693098f4de7fd6a2bea4365bfd073d7c57c57b95041ee"}, + {file = "pyarrow-15.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:7167107d7fb6dcadb375b4b691b7e316f4368f39f6f45405a05535d7ad5e5058"}, + {file = "pyarrow-15.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e85241b44cc3d365ef950432a1b3bd44ac54626f37b2e3a0cc89c20e45dfd8bf"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:248723e4ed3255fcd73edcecc209744d58a9ca852e4cf3d2577811b6d4b59818"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff3bdfe6f1b81ca5b73b70a8d482d37a766433823e0c21e22d1d7dde76ca33f"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:f3d77463dee7e9f284ef42d341689b459a63ff2e75cee2b9302058d0d98fe142"}, + {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:8c1faf2482fb89766e79745670cbca04e7018497d85be9242d5350cba21357e1"}, + {file = "pyarrow-15.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:28f3016958a8e45a1069303a4a4f6a7d4910643fc08adb1e2e4a7ff056272ad3"}, + {file = "pyarrow-15.0.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:89722cb64286ab3d4daf168386f6968c126057b8c7ec3ef96302e81d8cdb8ae4"}, + {file = "pyarrow-15.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd0ba387705044b3ac77b1b317165c0498299b08261d8122c96051024f953cd5"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad2459bf1f22b6a5cdcc27ebfd99307d5526b62d217b984b9f5c974651398832"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58922e4bfece8b02abf7159f1f53a8f4d9f8e08f2d988109126c17c3bb261f22"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:adccc81d3dc0478ea0b498807b39a8d41628fa9210729b2f718b78cb997c7c91"}, + {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:8bd2baa5fe531571847983f36a30ddbf65261ef23e496862ece83bdceb70420d"}, + {file = "pyarrow-15.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6669799a1d4ca9da9c7e06ef48368320f5856f36f9a4dd31a11839dda3f6cc8c"}, + {file = "pyarrow-15.0.2.tar.gz", hash = "sha256:9c9bc803cb3b7bfacc1e96ffbfd923601065d9d3f911179d81e72d99fd74a3d9"}, +] + +[package.dependencies] +numpy = ">=1.16.6,<2" + +[[package]] +name = "pycodestyle" +version = "2.11.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, + {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, +] + +[[package]] +name = "pydeck" +version = "0.8.0" +description = "Widget for deck.gl maps" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydeck-0.8.0-py2.py3-none-any.whl", hash = "sha256:a8fa7757c6f24bba033af39db3147cb020eef44012ba7e60d954de187f9ed4d5"}, + {file = "pydeck-0.8.0.tar.gz", hash = "sha256:07edde833f7cfcef6749124351195aa7dcd24663d4909fd7898dbd0b6fbc01ec"}, +] + +[package.dependencies] +jinja2 = ">=2.10.1" +numpy = ">=1.16.4" + +[package.extras] +carto = ["pydeck-carto"] +jupyter = ["ipykernel (>=5.1.2)", "ipython (>=5.8.0)", "ipywidgets (>=7,<8)", "traitlets (>=4.3.2)"] + +[[package]] +name = "pyee" +version = "11.0.1" +description = "A rough port of Node.js's EventEmitter to Python with a few tricks of its own" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyee-11.0.1-py3-none-any.whl", hash = "sha256:9bcc9647822234f42c228d88de63d0f9ffa881e87a87f9d36ddf5211f6ac977d"}, + {file = "pyee-11.0.1.tar.gz", hash = "sha256:a642c51e3885a33ead087286e35212783a4e9b8d6514a10a5db4e57ac57b2b29"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +dev = ["black", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio", "pytest-trio", "toml", "tox", "trio", "trio", "trio-typing", "twine", "twisted", "validate-pyproject[all]"] + +[[package]] +name = "pyflakes" +version = "3.2.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, +] + +[[package]] +name = "pygments" +version = "2.17.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, +] + +[package.extras] +plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-base-url" +version = "2.1.0" +description = "pytest plugin for URL based testing" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_base_url-2.1.0-py3-none-any.whl", hash = "sha256:3ad15611778764d451927b2a53240c1a7a591b521ea44cebfe45849d2d2812e6"}, + {file = "pytest_base_url-2.1.0.tar.gz", hash = "sha256:02748589a54f9e63fcbe62301d6b0496da0d10231b753e950c63e03aee745d45"}, +] + +[package.dependencies] +pytest = ">=7.0.0" +requests = ">=2.9" + +[package.extras] +test = ["black (>=22.1.0)", "flake8 (>=4.0.1)", "pre-commit (>=2.17.0)", "pytest-localserver (>=0.7.1)", "tox (>=3.24.5)"] + +[[package]] +name = "pytest-playwright" +version = "0.4.4" +description = "A pytest wrapper with fixtures for Playwright to automate web browsers" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-playwright-0.4.4.tar.gz", hash = "sha256:5488db4cc49028491c5130af0a2bb6b1d0b222a202217f6d14491d4c9aa67ff9"}, + {file = "pytest_playwright-0.4.4-py3-none-any.whl", hash = "sha256:df306f3a60a8631a3cfde1b95a2ed5a89203a3408dfa1154de049ca7de87c90b"}, +] + +[package.dependencies] +playwright = ">=1.18" +pytest = ">=6.2.4,<9.0.0" +pytest-base-url = ">=1.0.0,<3.0.0" +python-slugify = ">=6.0.0,<9.0.0" + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-slugify" +version = "8.0.4" +description = "A Python slugify application that also handles Unicode" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"}, + {file = "python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8"}, +] + +[package.dependencies] +text-unidecode = ">=1.3" + +[package.extras] +unidecode = ["Unidecode (>=1.1.1)"] + +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + +[[package]] +name = "referencing" +version = "0.34.0" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"}, + {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rich" +version = "13.7.1" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "rpds-py" +version = "0.18.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, +] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "streamlit" +version = "1.32.2" +description = "A faster way to build and share data apps" +optional = false +python-versions = ">=3.8, !=3.9.7" +files = [ + {file = "streamlit-1.32.2-py2.py3-none-any.whl", hash = "sha256:a0b8044e76fec364b07be145f8b40dbd8d083e20ebbb189ceb1fa9423f3dedea"}, + {file = "streamlit-1.32.2.tar.gz", hash = "sha256:1258b9cbc3ff957bf7d09b1bfc85cedc308f1065b30748545295a9af8d5577ab"}, +] + +[package.dependencies] +altair = ">=4.0,<6" +blinker = ">=1.0.0,<2" +cachetools = ">=4.0,<6" +click = ">=7.0,<9" +gitpython = ">=3.0.7,<3.1.19 || >3.1.19,<4" +numpy = ">=1.19.3,<2" +packaging = ">=16.8,<24" +pandas = ">=1.3.0,<3" +pillow = ">=7.1.0,<11" +protobuf = ">=3.20,<5" +pyarrow = ">=7.0" +pydeck = ">=0.8.0b4,<1" +requests = ">=2.27,<3" +rich = ">=10.14.0,<14" +tenacity = ">=8.1.0,<9" +toml = ">=0.10.1,<2" +tornado = ">=6.0.3,<7" +typing-extensions = ">=4.3.0,<5" +watchdog = {version = ">=2.1.5", markers = "platform_system != \"Darwin\""} + +[package.extras] +snowflake = ["snowflake-connector-python (>=2.8.0)", "snowflake-snowpark-python (>=0.9.0)"] + +[[package]] +name = "tenacity" +version = "8.2.3" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + +[[package]] +name = "text-unidecode" +version = "1.3" +description = "The most basic Text::Unidecode port" +optional = false +python-versions = "*" +files = [ + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, +] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "toolz" +version = "0.12.1" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, +] + +[[package]] +name = "tornado" +version = "6.4" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">= 3.8" +files = [ + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, +] + +[[package]] +name = "typing-extensions" +version = "4.10.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, +] + +[[package]] +name = "tzdata" +version = "2024.1" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, +] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "watchdog" +version = "4.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, + {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, + {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, + {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, + {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, + {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, + {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, + {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.10" +content-hash = "84aea7fa420c79670167c9bac937fad70e889a60ac30418e05406f4ea396bda0" diff --git a/packages/streamlit-rxdb-dataframe/pyproject.toml b/packages/streamlit-rxdb-dataframe/pyproject.toml new file mode 100644 index 0000000..b812a12 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/pyproject.toml @@ -0,0 +1,84 @@ +[tool.poetry] +name = "streamlit-rxdb-dataframe" +version = "0.1.0" +description = "Custom streamlit component connecting local browser indexedDB database as RxDB collection as dataframe" +authors = ["voznik "] +readme = "README.md" +license = "MIT" +homepage = "https://github.com/voznik/ngx-odm" +repository = "https://github.com/voznik/ngx-odm" +keywords = ["streamlit", "indexedDB", "RxDB", "browser", "connection", "dataframe"] +packages = [{ include = "rxdb_dataframe" }] + +[tool.poetry.dependencies] +python = "^3.10" +pytest-playwright = "^0.4.4" +streamlit = "^1.31.0" +playwright = "^1.41.2" +pandas = "^2.2.1" +jsonschema = "^4.21.1" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.group.dev.dependencies] +pytest = "^7.1.3" +black = "^23.1.0" +isort = "^5.12.0" +mypy = "^1.0.0" +flake8 = "^7.0.0" +flake8-annotations-complexity = "^0.0.8" + +[tool.isort] +profile = "black" +line_length = 100 +skip = ["./.venv", "./direnv", ".env"] + +[tool.black] +exclude = ''' +( + /( + \.vscode + | \.git + | \.pytest_cache + | \.mypy_cache + | \.venv + | \.env + | \.direnv + )/ +) +''' +include = '\.pyi?$' +line-length = 100 + +[tool.flake8] +max-line-length = 100 +ignore = ["E501"] + +[tool.mypy] +files = ["**/*.py"] +follow_imports = "silent" +ignore_missing_imports = true +scripts_are_modules = true +python_version = "3.9" + + +[tool.ruff] +exclude = [ + ".git", + ".vscode", + ".pytest_cache", + ".mypy_cache", + ".venv", + ".env", + ".direnv", + "streamlit_patches.py", +] +target-version = "py310" +ignore = ["E501"] +line-length = 100 +select = ["B", "E", "F", "W", "I"] + +[tool.ruff.per-file-ignores] diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/__init__.py b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/__init__.py new file mode 100644 index 0000000..b98c236 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/__init__.py @@ -0,0 +1,264 @@ +import os +from typing import Any, Callable, Dict, List, Optional, Union + +import pandas as pd +import streamlit as st +import streamlit.components.v1 as components +from streamlit import session_state as ss +from streamlit.elements.lib.column_config_utils import ( + ColumnConfig, + ColumnConfigMappingInput as ColumnConfigMap, + ColumnDataKind, +) +from streamlit.runtime.caching import cache_data + + +class RxJsonSchema: + def __init__( + self, + version: int, + primaryKey: Any, + type: Union["object", str], + properties: Dict[str, Dict[str, Any]], + required: Optional[List[str]] = None, + indexes: Optional[List[Union[str, List[str]]]] = None, # noqa: TAE002 + internalIndexes: Optional[List[List[str]]] = None, # noqa: TAE002 + encrypted: Optional[List[str]] = None, + keyCompression: Optional[bool] = None, + additionalProperties: Optional[bool] = None, + title: Optional[str] = None, + description: Optional[str] = None, + # attachments: Optional[Dict[str, Any]] = None, + # crdt: Optional["CRDTSchemaOptions"] = None, + ): + self.title = title + self.description = description + self.version = version + self.primaryKey = primaryKey + self.type = type + self.properties = properties + self.required = required + self.indexes = indexes + self.internalIndexes = internalIndexes + self.encrypted = encrypted + self.keyCompression = keyCompression + self.additionalProperties = additionalProperties + # self.attachments = attachments + # self.crdt = crdt + + +class RxCollectionCreator: + def __init__( + self, + schema: RxJsonSchema, + instanceCreationOptions: Optional[Any] = None, + autoMigrate: Optional[bool] = None, + attachments: Optional[Dict[str, Callable]] = None, + options: Optional[Any] = None, + localDocuments: Optional[bool] = None, + # migrationStrategies: Optional['MigrationStrategies'] = None, + # cacheReplacementPolicy: Optional['RxCacheReplacementPolicy'] = None, + # conflictHandler: Optional['RxConflictHandler'] = None + ): + self.schema = schema + self.instanceCreationOptions = instanceCreationOptions + self.autoMigrate = autoMigrate + self.attachments = attachments + self.options = options + self.localDocuments = localDocuments + # self.migrationStrategies = migrationStrategies + # self.cacheReplacementPolicy = cacheReplacementPolicy + # self.conflictHandler = conflictHandler + + +class RxDBSessionState: + """ + Represents the `session_state` wrapper object for RxDBDataframe component + """ + + def __init__(self): + if RXDB_STATE_KEY not in ss: + ss[RXDB_STATE_KEY] = { + "info": {}, # collection info + "with_rev": False, # include revision in the result + "query": {"selector": {}, "sort": []}, # collection query + "column_config": None, # ColumnConfig + "docs": [], # collection documents + } + if RXDB_COLLECTION_EDITOR_KEY not in st.session_state: + pass + ss[RXDB_COLLECTION_EDITOR_KEY] = {} + + def __getattr__(self, key): + if key not in ss[RXDB_STATE_KEY]: + ss[RXDB_STATE_KEY][key] = {} + return ss[RXDB_STATE_KEY][key] + + def __getitem__(self, key): + if key not in ss[RXDB_STATE_KEY]: + ss[RXDB_STATE_KEY][key] = {} + return ss[RXDB_STATE_KEY][key] + + def __setattr__(self, key, value): + ss[RXDB_STATE_KEY][key] = value + + def __setitem__(self, key, value): + ss[RXDB_STATE_KEY][key] = value + + +# Create a _RELEASE constant. We'll set this to False while we're developing +# the component, and True when we're ready to package and distribute it. +_RELEASE = True + +if not _RELEASE: # NOSONAR + _rxdb_dataframe = components.declare_component( + "rxdb_dataframe", + url="http://localhost:4201", + ) +else: + parent_dir = os.path.dirname(os.path.abspath(__file__)) + dist = os.path.join(parent_dir, "frontend/build") + index_js_path = os.path.join(dist, "index.js") + + if os.path.exists(index_js_path): + print("index.js exists") + else: + print("index.js does not exist") + + _rxdb_dataframe = components.declare_component("rxdb_dataframe", path=dist) + + +RXDB_STATE_KEY = "rxdb" +RXDB_COLLECTION_KEY = "rxdb_collection" +RXDB_COLLECTION_EDITOR_KEY = "rxdb_collection_editor" +DEFAULT_DB_CONFIG = { + "name": "streamlit-rxdb", + "options": {"storageType": "dexie"}, + "multiInstance": False, + "ignoreDuplicate": True, +} + +# blueprint_df: pd.DataFrame = None + + +@cache_data +def get_dataframe_by_schema(schema: dict) -> pd: + """ + Create a `pandas.DataFrame` based on the given JSONSchema. + """ + df = pd.DataFrame() + properties = schema.get("properties", {}) + for column, prop in properties.items(): + if prop["type"] == "string" and prop.get("format") == "date-time": + df[column] = pd.Series(dtype="datetime64[ns]") + elif prop["type"] == "string": + df[column] = pd.Series(dtype="object") + elif prop["type"] == "boolean": + df[column] = pd.Series(dtype="bool") + elif prop["type"] == "object": + df[column] = pd.Series(dtype="category") + elif prop.get("enum") and len(prop["enum"]) > 0: + df[column] = pd.Series(dtype="category") + elif prop["type"] == "integer" and prop.get("format") == "time": + df[column] = pd.Series(dtype="int") # pd.Timestamp.now() + elif prop["type"] == "integer": + df[column] = pd.Series(dtype="int") + elif prop["type"] == "number": + df[column] = pd.Series(dtype="float") + return df + + +@cache_data +def get_column_config(schema: dict) -> ColumnConfigMap: + """ + Generates a (default) column configuration dictionary based on the given schema, + which can be used to configure streamlit dataframe or data_editor widgets. + Use own column config if default one is not suitable for your use case. + + INFO: https://docs.streamlit.io/library/api-reference/data/st.column_config + """ + properties = schema.get("properties", {}) + column_config: ColumnConfigMap = {} + for key, prop in properties.items(): + if prop.get("enum") and len(prop["enum"]) > 0: + column_config[key] = st.column_config.SelectboxColumn(options=prop["enum"]) + elif prop["type"] == ColumnDataKind.STRING and prop.get("format") == "date-time": + column_config[key] = st.column_config.DatetimeColumn( + format="YYYY-MM-DD HH:mm", + ) + elif prop["type"] == ColumnDataKind.STRING: + column_config[key] = st.column_config.TextColumn(max_chars=prop.get("maxLength", None)) + elif prop["type"] == ColumnDataKind.BOOLEAN: + column_config[key] = st.column_config.CheckboxColumn() + elif prop["type"] == "object": + column_config[key] = st.column_config.Column() + elif prop["type"] == ColumnDataKind.INTEGER and prop.get("format", None) == "time": + column_config[key] = st.column_config.NumberColumn() + elif prop["type"] == ColumnDataKind.INTEGER: + column_config[key] = st.column_config.NumberColumn( + max_value=prop.get("max", None), + min_value=prop.get("min", None), + step=prop.get("multipleOf", None), + ) + elif prop["type"] == "number": + st.column_config.NumberColumn( + max_value=prop.get("max", None), min_value=prop.get("min", None) + ) + try: + column: ColumnConfig = column_config[key] + column["label"] = prop.get("title", "") + column["help"] = "format: " + prop.get("format", column["type_config"]["type"]) + # column["disabled"] = prop.get("readOnly", False) + column["required"] = key in schema.get("required", []) + except Exception as e: + print(f"An error occurred: {str(e)}") + + return column_config + + +def rxdb_dataframe( + collection_config, + db_config: RxCollectionCreator = DEFAULT_DB_CONFIG, + query: Optional[Dict[str, Any]] = None, + with_rev: Optional[bool] = False, + on_change: Optional[Callable] = None, +) -> pd.DataFrame: + state = RxDBSessionState() + blueprint_df = get_dataframe_by_schema(collection_config["schema"]) + result_df = blueprint_df.copy() + + if state.column_config is None: + state.column_config = get_column_config(collection_config["schema"]) + + result = _rxdb_dataframe( + collection_config=collection_config, + db_config=db_config, + query=query, + with_rev=with_rev, + key=(RXDB_COLLECTION_KEY), + editing_state=ss[RXDB_COLLECTION_EDITOR_KEY], + ) + + try: + if result: + result_df = pd.DataFrame(result["docs"], columns=blueprint_df.columns) + for col in blueprint_df.columns: + if blueprint_df[col].dtype == "datetime64[ns]": + result_df[col] = pd.to_datetime(result_df[col]) + state.docs = result["docs"] + state.info = result["info"] + state.query = result["query"] # store query here from response, to prevent re-rendering + on_change(state) + except Exception as e: + print(f"An error occurred: {str(e)}") + + return result_df + + +__title__ = "RxDB Dataframe" +__desc__ = "Make Dataframe from [RxDB](https://rxdb.info/) collection" +__icon__ = "🏦" +# __examples__ = [example] +__author__ = "voznik" +__streamlit_cloud_url__ = "https://st-rxdb-dataframe.streamlitapp.com/" +__github_repo__ = "voznik/ngx-odm" diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintignore b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintignore @@ -0,0 +1 @@ +build diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintrc.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintrc.json new file mode 100644 index 0000000..772a43d --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nx/react", "../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/col.dump.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/col.dump.json new file mode 100644 index 0000000..16de3ee --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/col.dump.json @@ -0,0 +1,27 @@ +{ + "name": "todo", + "schemaHash": "9b18d72e95209a29cdc5f4849e21dc3c7c399f7d0fa070f159820e80ec2dee29", + "docs": [ + { + "id": "a4c6a479-7cca-4d3b-ab90-45d3eaa957f3", + "title": "Check other examples", + "completed": false, + "createdAt": 1548979200000, + "last_modified": 1548979200000 + }, + { + "id": "a4c6a479-7cca-4d3b-bc10-45d3eaa957r5", + "title": "Use \"@ngx-odm/rxdb\" in your project", + "completed": false, + "createdAt": 1698404710931, + "last_modified": 1698404710931 + }, + { + "id": "ac3ef2c6-c98b-43e1-9047-71d68b1f92f4", + "title": "Open Todo list example", + "completed": true, + "createdAt": 1546300800000, + "last_modified": 1546300800000 + } + ] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/db.dump.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/db.dump.json new file mode 100644 index 0000000..f6a9e1c --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/db.dump.json @@ -0,0 +1,33 @@ +{ + "name": "demo", + "instanceToken": "vhngmgjupw", + "collections": [ + { + "name": "todo", + "schemaHash": "9b18d72e95209a29cdc5f4849e21dc3c7c399f7d0fa070f159820e80ec2dee29", + "docs": [ + { + "id": "a4c6a479-7cca-4d3b-ab90-45d3eaa957f3", + "title": "Check other examples", + "completed": false, + "createdAt": 1548979200000, + "last_modified": 1548979200000 + }, + { + "id": "a4c6a479-7cca-4d3b-bc10-45d3eaa957r5", + "title": "Use \"@ngx-odm/rxdb\" in your project", + "completed": false, + "createdAt": 1698404710931, + "last_modified": 1698404710931 + }, + { + "id": "ac3ef2c6-c98b-43e1-9047-71d68b1f92f4", + "title": "Open Todo list example", + "completed": true, + "createdAt": 1546300800000, + "last_modified": 1546300800000 + } + ] + } + ] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/todo.schema.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/todo.schema.json new file mode 100644 index 0000000..653ec10 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/assets/data/todo.schema.json @@ -0,0 +1,44 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Todo", + "description": "Todo Schema", + "required": ["id", "title", "createdAt"], + "version": 0, + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id", + "pattern": "^(.*)$", + "maxLength": 36, + "readOnly": true + }, + "title": { + "type": "string", + "title": "Title", + "minLength": 3 + }, + "completed": { + "type": "boolean", + "title": "Done" + }, + "createdAt": { + "type": "string", + "title": "Created Date", + "format": "date-time", + "readOnly": true + }, + "last_modified": { + "type": "integer", + "format": "time", + "title": "Last Modified Date" + } + }, + "__indexes": ["createdAt"], + "primaryKey": "id", + "attachments": { + "encrypted": false + } +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.html b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.html new file mode 100644 index 0000000..f8d5fcd --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.html @@ -0,0 +1,13 @@ + + + + + RxdbDataframe + + + + + +
+ + diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js new file mode 100644 index 0000000..d19901e --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js @@ -0,0 +1,92 @@ +var eC=Object.defineProperty;var tC=(t,e,n)=>e in t?eC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var jc=(t,e,n)=>(tC(t,typeof e!="symbol"?e+"":e,n),n);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var gw=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function rh(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var B1={exports:{}},ih={},F1={exports:{}},Me={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var zl=Symbol.for("react.element"),nC=Symbol.for("react.portal"),rC=Symbol.for("react.fragment"),iC=Symbol.for("react.strict_mode"),sC=Symbol.for("react.profiler"),oC=Symbol.for("react.provider"),aC=Symbol.for("react.context"),uC=Symbol.for("react.forward_ref"),lC=Symbol.for("react.suspense"),cC=Symbol.for("react.memo"),fC=Symbol.for("react.lazy"),ww=Symbol.iterator;function dC(t){return t===null||typeof t!="object"?null:(t=ww&&t[ww]||t["@@iterator"],typeof t=="function"?t:null)}var L1={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},$1=Object.assign,j1={};function tu(t,e,n){this.props=t,this.context=e,this.refs=j1,this.updater=n||L1}tu.prototype.isReactComponent={};tu.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};tu.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function U1(){}U1.prototype=tu.prototype;function bv(t,e,n){this.props=t,this.context=e,this.refs=j1,this.updater=n||L1}var Sv=bv.prototype=new U1;Sv.constructor=bv;$1(Sv,tu.prototype);Sv.isPureReactComponent=!0;var _w=Array.isArray,z1=Object.prototype.hasOwnProperty,Iv={current:null},V1={key:!0,ref:!0,__self:!0,__source:!0};function K1(t,e,n){var r,i={},s=null,o=null;if(e!=null)for(r in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)z1.call(e,r)&&!V1.hasOwnProperty(r)&&(i[r]=e[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,xt=G[Re];if(0>>1;Rei(Vn,ue))tni(Xi,Vn)?(G[Re]=Xi,G[tn]=ue,Re=tn):(G[Re]=Vn,G[Ct]=ue,Re=Ct);else if(tni(Xi,ue))G[Re]=Xi,G[tn]=ue,Re=tn;else break e}}return oe}function i(G,oe){var ue=G.sortIndex-oe.sortIndex;return ue!==0?ue:G.id-oe.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();t.unstable_now=function(){return o.now()-a}}var l=[],f=[],h=1,p=null,y=3,w=!1,I=!1,E=!1,$=typeof setTimeout=="function"?setTimeout:null,S=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function k(G){for(var oe=n(f);oe!==null;){if(oe.callback===null)r(f);else if(oe.startTime<=G)r(f),oe.sortIndex=oe.expirationTime,e(l,oe);else break;oe=n(f)}}function z(G){if(E=!1,k(G),!I)if(n(l)!==null)I=!0,Te(W);else{var oe=n(f);oe!==null&&Dt(z,oe.startTime-G)}}function W(G,oe){I=!1,E&&(E=!1,S(X),X=-1),w=!0;var ue=y;try{for(k(oe),p=n(l);p!==null&&(!(p.expirationTime>oe)||G&&!ce());){var Re=p.callback;if(typeof Re=="function"){p.callback=null,y=p.priorityLevel;var xt=Re(p.expirationTime<=oe);oe=t.unstable_now(),typeof xt=="function"?p.callback=xt:p===n(l)&&r(l),k(oe)}else r(l);p=n(l)}if(p!==null)var ft=!0;else{var Ct=n(f);Ct!==null&&Dt(z,Ct.startTime-oe),ft=!1}return ft}finally{p=null,y=ue,w=!1}}var Q=!1,H=null,X=-1,U=5,ee=-1;function ce(){return!(t.unstable_now()-eeG||125Re?(G.sortIndex=ue,e(f,G),n(l)===null&&G===n(f)&&(E?(S(X),X=-1):E=!0,Dt(z,ue-Re))):(G.sortIndex=xt,e(l,G),I||w||(I=!0,Te(W))),G},t.unstable_shouldYield=ce,t.unstable_wrapCallback=function(G){var oe=y;return function(){var ue=y;y=oe;try{return G.apply(this,arguments)}finally{y=ue}}}})(Q1);H1.exports=Q1;var EC=H1.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Y1=pn,tr=EC;function Z(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Pm=Object.prototype.hasOwnProperty,OC=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Sw={},Iw={};function kC(t){return Pm.call(Iw,t)?!0:Pm.call(Sw,t)?!1:OC.test(t)?Iw[t]=!0:(Sw[t]=!0,!1)}function DC(t,e,n,r){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function xC(t,e,n,r){if(e===null||typeof e>"u"||DC(t,e,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function bn(t,e,n,r,i,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var en={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){en[t]=new bn(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];en[e]=new bn(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){en[t]=new bn(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){en[t]=new bn(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){en[t]=new bn(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){en[t]=new bn(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){en[t]=new bn(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){en[t]=new bn(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){en[t]=new bn(t,5,!1,t.toLowerCase(),null,!1,!1)});var Ov=/[\-:]([a-z])/g;function kv(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(Ov,kv);en[e]=new bn(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(Ov,kv);en[e]=new bn(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(Ov,kv);en[e]=new bn(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){en[t]=new bn(t,1,!1,t.toLowerCase(),null,!1,!1)});en.xlinkHref=new bn("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){en[t]=new bn(t,1,!1,t.toLowerCase(),null,!0,!0)});function Dv(t,e,n,r){var i=en.hasOwnProperty(e)?en[e]:null;(i!==null?i.type!==0:r||!(2a||i[o]!==s[a]){var l=` +`+i[o].replace(" at new "," at ");return t.displayName&&l.includes("")&&(l=l.replace("",t.displayName)),l}while(1<=o&&0<=a);break}}}finally{xp=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?Lu(t):""}function CC(t){switch(t.tag){case 5:return Lu(t.type);case 16:return Lu("Lazy");case 13:return Lu("Suspense");case 19:return Lu("SuspenseList");case 0:case 2:case 15:return t=Cp(t.type,!1),t;case 11:return t=Cp(t.type.render,!1),t;case 1:return t=Cp(t.type,!0),t;default:return""}}function Nm(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case la:return"Fragment";case ua:return"Portal";case Rm:return"Profiler";case xv:return"StrictMode";case Tm:return"Suspense";case Mm:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case X1:return(t.displayName||"Context")+".Consumer";case J1:return(t._context.displayName||"Context")+".Provider";case Cv:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Av:return e=t.displayName||null,e!==null?e:Nm(t.type)||"Memo";case us:e=t._payload,t=t._init;try{return Nm(t(e))}catch{}}return null}function AC(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Nm(e);case 8:return e===xv?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Ps(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function eS(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function PC(t){var e=eS(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),r=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,s.call(this,o)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Vc(t){t._valueTracker||(t._valueTracker=PC(t))}function tS(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),r="";return t&&(r=eS(t)?t.checked?"true":"false":t.value),t=r,t!==n?(e.setValue(t),!0):!1}function Uf(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function Bm(t,e){var n=e.checked;return Et({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Ow(t,e){var n=e.defaultValue==null?"":e.defaultValue,r=e.checked!=null?e.checked:e.defaultChecked;n=Ps(e.value!=null?e.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function nS(t,e){e=e.checked,e!=null&&Dv(t,"checked",e,!1)}function Fm(t,e){nS(t,e);var n=Ps(e.value),r=e.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?Lm(t,e.type,n):e.hasOwnProperty("defaultValue")&&Lm(t,e.type,Ps(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function kw(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var r=e.type;if(!(r!=="submit"&&r!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function Lm(t,e,n){(e!=="number"||Uf(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var $u=Array.isArray;function ba(t,e,n,r){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=Kc.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function cl(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var Wu={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},RC=["Webkit","ms","Moz","O"];Object.keys(Wu).forEach(function(t){RC.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Wu[e]=Wu[t]})});function oS(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||Wu.hasOwnProperty(t)&&Wu[t]?(""+e).trim():e+"px"}function aS(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=oS(n,e[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,i):t[n]=i}}var TC=Et({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Um(t,e){if(e){if(TC[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(Z(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(Z(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(Z(61))}if(e.style!=null&&typeof e.style!="object")throw Error(Z(62))}}function zm(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Vm=null;function Pv(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Km=null,Sa=null,Ia=null;function Cw(t){if(t=Wl(t)){if(typeof Km!="function")throw Error(Z(280));var e=t.stateNode;e&&(e=lh(e),Km(t.stateNode,t.type,e))}}function uS(t){Sa?Ia?Ia.push(t):Ia=[t]:Sa=t}function lS(){if(Sa){var t=Sa,e=Ia;if(Ia=Sa=null,Cw(t),e)for(t=0;t>>=0,t===0?32:31-(KC(t)/WC|0)|0}var Wc=64,qc=4194304;function ju(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Wf(t,e){var n=t.pendingLanes;if(n===0)return 0;var r=0,i=t.suspendedLanes,s=t.pingedLanes,o=n&268435455;if(o!==0){var a=o&~i;a!==0?r=ju(a):(s&=o,s!==0&&(r=ju(s)))}else o=n&~i,o!==0?r=ju(o):s!==0&&(r=ju(s));if(r===0)return 0;if(e!==0&&e!==r&&!(e&i)&&(i=r&-r,s=e&-e,i>=s||i===16&&(s&4194240)!==0))return e;if(r&4&&(r|=n&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=r;0n;n++)e.push(t);return e}function Vl(t,e,n){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-Pr(e),t[e]=n}function YC(t,e){var n=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var r=t.eventTimes;for(t=t.expirationTimes;0=Hu),Lw=String.fromCharCode(32),$w=!1;function CS(t,e){switch(t){case"keyup":return IA.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function AS(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ca=!1;function OA(t,e){switch(t){case"compositionend":return AS(e);case"keypress":return e.which!==32?null:($w=!0,Lw);case"textInput":return t=e.data,t===Lw&&$w?null:t;default:return null}}function kA(t,e){if(ca)return t==="compositionend"||!$v&&CS(t,e)?(t=DS(),gf=Bv=ms=null,ca=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Vw(n)}}function MS(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?MS(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function NS(){for(var t=window,e=Uf();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=Uf(t.document)}return e}function jv(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function NA(t){var e=NS(),n=t.focusedElem,r=t.selectionRange;if(e!==n&&n&&n.ownerDocument&&MS(n.ownerDocument.documentElement,n)){if(r!==null&&jv(n)){if(e=r.start,t=r.end,t===void 0&&(t=e),"selectionStart"in n)n.selectionStart=e,n.selectionEnd=Math.min(t,n.value.length);else if(t=(e=n.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!t.extend&&s>r&&(i=r,r=s,s=i),i=Kw(n,s);var o=Kw(n,r);i&&o&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==o.node||t.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),s>r?(t.addRange(e),t.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,fa=null,Gm=null,Yu=null,Jm=!1;function Ww(t,e,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Jm||fa==null||fa!==Uf(r)||(r=fa,"selectionStart"in r&&jv(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Yu&&yl(Yu,r)||(Yu=r,r=Qf(Gm,"onSelect"),0pa||(t.current=ry[pa],ry[pa]=null,pa--)}function ut(t,e){pa++,ry[pa]=t.current,t.current=e}var Rs={},ln=zs(Rs),An=zs(!1),Po=Rs;function Ta(t,e){var n=t.type.contextTypes;if(!n)return Rs;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===e)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=e[s];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function Pn(t){return t=t.childContextTypes,t!=null}function Gf(){mt(An),mt(ln)}function Xw(t,e,n){if(ln.current!==Rs)throw Error(Z(168));ut(ln,e),ut(An,n)}function KS(t,e,n){var r=t.stateNode;if(e=e.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in e))throw Error(Z(108,AC(t)||"Unknown",i));return Et({},n,r)}function Jf(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Rs,Po=ln.current,ut(ln,t),ut(An,An.current),!0}function Zw(t,e,n){var r=t.stateNode;if(!r)throw Error(Z(169));n?(t=KS(t,e,Po),r.__reactInternalMemoizedMergedChildContext=t,mt(An),mt(ln),ut(ln,t)):mt(An),ut(An,n)}var Ei=null,ch=!1,Vp=!1;function WS(t){Ei===null?Ei=[t]:Ei.push(t)}function HA(t){ch=!0,WS(t)}function Vs(){if(!Vp&&Ei!==null){Vp=!0;var t=0,e=Ge;try{var n=Ei;for(Ge=1;t>=o,i-=o,xi=1<<32-Pr(e)+i|n<X?(U=H,H=null):U=H.sibling;var ee=y(S,H,k[X],z);if(ee===null){H===null&&(H=U);break}t&&H&&ee.alternate===null&&e(S,H),_=s(ee,_,X),Q===null?W=ee:Q.sibling=ee,Q=ee,H=U}if(X===k.length)return n(S,H),gt&&co(S,X),W;if(H===null){for(;XX?(U=H,H=null):U=H.sibling;var ce=y(S,H,ee.value,z);if(ce===null){H===null&&(H=U);break}t&&H&&ce.alternate===null&&e(S,H),_=s(ce,_,X),Q===null?W=ce:Q.sibling=ce,Q=ce,H=U}if(ee.done)return n(S,H),gt&&co(S,X),W;if(H===null){for(;!ee.done;X++,ee=k.next())ee=p(S,ee.value,z),ee!==null&&(_=s(ee,_,X),Q===null?W=ee:Q.sibling=ee,Q=ee);return gt&&co(S,X),W}for(H=r(S,H);!ee.done;X++,ee=k.next())ee=w(H,S,X,ee.value,z),ee!==null&&(t&&ee.alternate!==null&&H.delete(ee.key===null?X:ee.key),_=s(ee,_,X),Q===null?W=ee:Q.sibling=ee,Q=ee);return t&&H.forEach(function(de){return e(S,de)}),gt&&co(S,X),W}function $(S,_,k,z){if(typeof k=="object"&&k!==null&&k.type===la&&k.key===null&&(k=k.props.children),typeof k=="object"&&k!==null){switch(k.$$typeof){case zc:e:{for(var W=k.key,Q=_;Q!==null;){if(Q.key===W){if(W=k.type,W===la){if(Q.tag===7){n(S,Q.sibling),_=i(Q,k.props.children),_.return=S,S=_;break e}}else if(Q.elementType===W||typeof W=="object"&&W!==null&&W.$$typeof===us&&o_(W)===Q.type){n(S,Q.sibling),_=i(Q,k.props),_.ref=Ru(S,Q,k),_.return=S,S=_;break e}n(S,Q);break}else e(S,Q);Q=Q.sibling}k.type===la?(_=Oo(k.props.children,S.mode,z,k.key),_.return=S,S=_):(z=kf(k.type,k.key,k.props,null,S.mode,z),z.ref=Ru(S,_,k),z.return=S,S=z)}return o(S);case ua:e:{for(Q=k.key;_!==null;){if(_.key===Q)if(_.tag===4&&_.stateNode.containerInfo===k.containerInfo&&_.stateNode.implementation===k.implementation){n(S,_.sibling),_=i(_,k.children||[]),_.return=S,S=_;break e}else{n(S,_);break}else e(S,_);_=_.sibling}_=Jp(k,S.mode,z),_.return=S,S=_}return o(S);case us:return Q=k._init,$(S,_,Q(k._payload),z)}if($u(k))return I(S,_,k,z);if(Du(k))return E(S,_,k,z);Zc(S,k)}return typeof k=="string"&&k!==""||typeof k=="number"?(k=""+k,_!==null&&_.tag===6?(n(S,_.sibling),_=i(_,k),_.return=S,S=_):(n(S,_),_=Gp(k,S.mode,z),_.return=S,S=_),o(S)):n(S,_)}return $}var Na=ZS(!0),eI=ZS(!1),ql={},li=zs(ql),_l=zs(ql),bl=zs(ql);function yo(t){if(t===ql)throw Error(Z(174));return t}function Yv(t,e){switch(ut(bl,e),ut(_l,t),ut(li,ql),t=e.nodeType,t){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:jm(null,"");break;default:t=t===8?e.parentNode:e,e=t.namespaceURI||null,t=t.tagName,e=jm(e,t)}mt(li),ut(li,e)}function Ba(){mt(li),mt(_l),mt(bl)}function tI(t){yo(bl.current);var e=yo(li.current),n=jm(e,t.type);e!==n&&(ut(_l,t),ut(li,n))}function Gv(t){_l.current===t&&(mt(li),mt(_l))}var bt=zs(0);function rd(t){for(var e=t;e!==null;){if(e.tag===13){var n=e.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&128)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var Kp=[];function Jv(){for(var t=0;tn?n:4,t(!0);var r=Wp.transition;Wp.transition={};try{t(!1),e()}finally{Ge=n,Wp.transition=r}}function vI(){return _r().memoizedState}function JA(t,e,n){var r=Os(t);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},gI(t))wI(e,n);else if(n=YS(t,e,n,r),n!==null){var i=wn();Rr(n,t,r,i),_I(n,e,r)}}function XA(t,e,n){var r=Os(t),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(gI(t))wI(e,i);else{var s=t.alternate;if(t.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,n);if(i.hasEagerState=!0,i.eagerState=a,Nr(a,o)){var l=e.interleaved;l===null?(i.next=i,Hv(e)):(i.next=l.next,l.next=i),e.interleaved=i;return}}catch{}finally{}n=YS(t,e,i,r),n!==null&&(i=wn(),Rr(n,t,r,i),_I(n,e,r))}}function gI(t){var e=t.alternate;return t===It||e!==null&&e===It}function wI(t,e){Gu=id=!0;var n=t.pending;n===null?e.next=e:(e.next=n.next,n.next=e),t.pending=e}function _I(t,e,n){if(n&4194240){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,Tv(t,n)}}var sd={readContext:wr,useCallback:sn,useContext:sn,useEffect:sn,useImperativeHandle:sn,useInsertionEffect:sn,useLayoutEffect:sn,useMemo:sn,useReducer:sn,useRef:sn,useState:sn,useDebugValue:sn,useDeferredValue:sn,useTransition:sn,useMutableSource:sn,useSyncExternalStore:sn,useId:sn,unstable_isNewReconciler:!1},ZA={readContext:wr,useCallback:function(t,e){return Qr().memoizedState=[t,e===void 0?null:e],t},useContext:wr,useEffect:u_,useImperativeHandle:function(t,e,n){return n=n!=null?n.concat([t]):null,Sf(4194308,4,dI.bind(null,e,t),n)},useLayoutEffect:function(t,e){return Sf(4194308,4,t,e)},useInsertionEffect:function(t,e){return Sf(4,2,t,e)},useMemo:function(t,e){var n=Qr();return e=e===void 0?null:e,t=t(),n.memoizedState=[t,e],t},useReducer:function(t,e,n){var r=Qr();return e=n!==void 0?n(e):e,r.memoizedState=r.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},r.queue=t,t=t.dispatch=JA.bind(null,It,t),[r.memoizedState,t]},useRef:function(t){var e=Qr();return t={current:t},e.memoizedState=t},useState:a_,useDebugValue:ng,useDeferredValue:function(t){return Qr().memoizedState=t},useTransition:function(){var t=a_(!1),e=t[0];return t=GA.bind(null,t[1]),Qr().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,n){var r=It,i=Qr();if(gt){if(n===void 0)throw Error(Z(407));n=n()}else{if(n=e(),Qt===null)throw Error(Z(349));To&30||iI(r,e,n)}i.memoizedState=n;var s={value:n,getSnapshot:e};return i.queue=s,u_(oI.bind(null,r,s,t),[t]),r.flags|=2048,El(9,sI.bind(null,r,s,n,e),void 0,null),n},useId:function(){var t=Qr(),e=Qt.identifierPrefix;if(gt){var n=Ci,r=xi;n=(r&~(1<<32-Pr(r)-1)).toString(32)+n,e=":"+e+"R"+n,n=Sl++,0<\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=o.createElement(n,{is:r.is}):(t=o.createElement(n),n==="select"&&(o=t,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):t=o.createElementNS(t,n),t[Xr]=e,t[wl]=r,CI(t,e,!1,!1),e.stateNode=t;e:{switch(o=zm(n,r),n){case"dialog":ht("cancel",t),ht("close",t),i=r;break;case"iframe":case"object":case"embed":ht("load",t),i=r;break;case"video":case"audio":for(i=0;iLa&&(e.flags|=128,r=!0,Tu(s,!1),e.lanes=4194304)}else{if(!r)if(t=rd(o),t!==null){if(e.flags|=128,r=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),Tu(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!gt)return on(e),null}else 2*Tt()-s.renderingStartTime>La&&n!==1073741824&&(e.flags|=128,r=!0,Tu(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(n=s.last,n!==null?n.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=Tt(),e.sibling=null,n=bt.current,ut(bt,r?n&1|2:n&1),e):(on(e),null);case 22:case 23:return ug(),r=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==r&&(e.flags|=8192),r&&e.mode&1?Hn&1073741824&&(on(e),e.subtreeFlags&6&&(e.flags|=8192)):on(e),null;case 24:return null;case 25:return null}throw Error(Z(156,e.tag))}function aP(t,e){switch(zv(e),e.tag){case 1:return Pn(e.type)&&Gf(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Ba(),mt(An),mt(ln),Jv(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return Gv(e),null;case 13:if(mt(bt),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(Z(340));Ma()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return mt(bt),null;case 4:return Ba(),null;case 10:return qv(e.type._context),null;case 22:case 23:return ug(),null;case 24:return null;default:return null}}var tf=!1,an=!1,uP=typeof WeakSet=="function"?WeakSet:Set,ae=null;function ga(t,e){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){At(t,e,r)}else n.current=null}function my(t,e,n){try{n()}catch(r){At(t,e,r)}}var v_=!1;function lP(t,e){if(Xm=qf,t=NS(),jv(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var o=0,a=-1,l=-1,f=0,h=0,p=t,y=null;t:for(;;){for(var w;p!==n||i!==0&&p.nodeType!==3||(a=o+i),p!==s||r!==0&&p.nodeType!==3||(l=o+r),p.nodeType===3&&(o+=p.nodeValue.length),(w=p.firstChild)!==null;)y=p,p=w;for(;;){if(p===t)break t;if(y===n&&++f===i&&(a=o),y===s&&++h===r&&(l=o),(w=p.nextSibling)!==null)break;p=y,y=p.parentNode}p=w}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Zm={focusedElem:t,selectionRange:n},qf=!1,ae=e;ae!==null;)if(e=ae,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,ae=t;else for(;ae!==null;){e=ae;try{var I=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(I!==null){var E=I.memoizedProps,$=I.memoizedState,S=e.stateNode,_=S.getSnapshotBeforeUpdate(e.elementType===e.type?E:Or(e.type,E),$);S.__reactInternalSnapshotBeforeUpdate=_}break;case 3:var k=e.stateNode.containerInfo;k.nodeType===1?k.textContent="":k.nodeType===9&&k.documentElement&&k.removeChild(k.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Z(163))}}catch(z){At(e,e.return,z)}if(t=e.sibling,t!==null){t.return=e.return,ae=t;break}ae=e.return}return I=v_,v_=!1,I}function Ju(t,e,n){var r=e.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&t)===t){var s=i.destroy;i.destroy=void 0,s!==void 0&&my(e,n,s)}i=i.next}while(i!==r)}}function hh(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var n=e=e.next;do{if((n.tag&t)===t){var r=n.create;n.destroy=r()}n=n.next}while(n!==e)}}function yy(t){var e=t.ref;if(e!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof e=="function"?e(t):e.current=t}}function RI(t){var e=t.alternate;e!==null&&(t.alternate=null,RI(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[Xr],delete e[wl],delete e[ny],delete e[WA],delete e[qA])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function TI(t){return t.tag===5||t.tag===3||t.tag===4}function g_(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||TI(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function vy(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=Yf));else if(r!==4&&(t=t.child,t!==null))for(vy(t,e,n),t=t.sibling;t!==null;)vy(t,e,n),t=t.sibling}function gy(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.insertBefore(t,e):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(gy(t,e,n),t=t.sibling;t!==null;)gy(t,e,n),t=t.sibling}var Xt=null,kr=!1;function os(t,e,n){for(n=n.child;n!==null;)MI(t,e,n),n=n.sibling}function MI(t,e,n){if(ui&&typeof ui.onCommitFiberUnmount=="function")try{ui.onCommitFiberUnmount(sh,n)}catch{}switch(n.tag){case 5:an||ga(n,e);case 6:var r=Xt,i=kr;Xt=null,os(t,e,n),Xt=r,kr=i,Xt!==null&&(kr?(t=Xt,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Xt.removeChild(n.stateNode));break;case 18:Xt!==null&&(kr?(t=Xt,n=n.stateNode,t.nodeType===8?zp(t.parentNode,n):t.nodeType===1&&zp(t,n),pl(t)):zp(Xt,n.stateNode));break;case 4:r=Xt,i=kr,Xt=n.stateNode.containerInfo,kr=!0,os(t,e,n),Xt=r,kr=i;break;case 0:case 11:case 14:case 15:if(!an&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&my(n,e,o),i=i.next}while(i!==r)}os(t,e,n);break;case 1:if(!an&&(ga(n,e),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){At(n,e,a)}os(t,e,n);break;case 21:os(t,e,n);break;case 22:n.mode&1?(an=(r=an)||n.memoizedState!==null,os(t,e,n),an=r):os(t,e,n);break;default:os(t,e,n)}}function w_(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new uP),e.forEach(function(r){var i=gP.bind(null,t,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Ir(t,e){var n=e.deletions;if(n!==null)for(var r=0;ri&&(i=o),r&=~s}if(r=i,r=Tt()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*fP(r/1960))-r,10t?16:t,ys===null)var r=!1;else{if(t=ys,ys=null,ud=0,Fe&6)throw Error(Z(331));var i=Fe;for(Fe|=4,ae=t.current;ae!==null;){var s=ae,o=s.child;if(ae.flags&16){var a=s.deletions;if(a!==null){for(var l=0;lTt()-og?Eo(t,0):sg|=n),Rn(t,e)}function zI(t,e){e===0&&(t.mode&1?(e=qc,qc<<=1,!(qc&130023424)&&(qc=4194304)):e=1);var n=wn();t=$i(t,e),t!==null&&(Vl(t,e,n),Rn(t,n))}function vP(t){var e=t.memoizedState,n=0;e!==null&&(n=e.retryLane),zI(t,n)}function gP(t,e){var n=0;switch(t.tag){case 13:var r=t.stateNode,i=t.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=t.stateNode;break;default:throw Error(Z(314))}r!==null&&r.delete(e),zI(t,n)}var VI;VI=function(t,e,n){if(t!==null)if(t.memoizedProps!==e.pendingProps||An.current)Cn=!0;else{if(!(t.lanes&n)&&!(e.flags&128))return Cn=!1,sP(t,e,n);Cn=!!(t.flags&131072)}else Cn=!1,gt&&e.flags&1048576&&qS(e,Zf,e.index);switch(e.lanes=0,e.tag){case 2:var r=e.type;If(t,e),t=e.pendingProps;var i=Ta(e,ln.current);Oa(e,n),i=Zv(null,e,r,t,i,n);var s=eg();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Pn(r)?(s=!0,Jf(e)):s=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Qv(e),i.updater=fh,e.stateNode=i,i._reactInternals=e,uy(e,r,t,n),e=fy(null,e,r,!0,s,n)):(e.tag=0,gt&&s&&Uv(e),hn(null,e,i,n),e=e.child),e;case 16:r=e.elementType;e:{switch(If(t,e),t=e.pendingProps,i=r._init,r=i(r._payload),e.type=r,i=e.tag=_P(r),t=Or(r,t),i){case 0:e=cy(null,e,r,t,n);break e;case 1:e=p_(null,e,r,t,n);break e;case 11:e=d_(null,e,r,t,n);break e;case 14:e=h_(null,e,r,Or(r.type,t),n);break e}throw Error(Z(306,r,""))}return e;case 0:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Or(r,i),cy(t,e,r,i,n);case 1:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Or(r,i),p_(t,e,r,i,n);case 3:e:{if(kI(e),t===null)throw Error(Z(387));r=e.pendingProps,s=e.memoizedState,i=s.element,GS(t,e),nd(e,r,null,n);var o=e.memoizedState;if(r=o.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){i=Fa(Error(Z(423)),e),e=m_(t,e,r,n,i);break e}else if(r!==i){i=Fa(Error(Z(424)),e),e=m_(t,e,r,n,i);break e}else for(Jn=Ss(e.stateNode.containerInfo.firstChild),Zn=e,gt=!0,xr=null,n=eI(e,null,r,n),e.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ma(),r===i){e=ji(t,e,n);break e}hn(t,e,r,n)}e=e.child}return e;case 5:return tI(e),t===null&&sy(e),r=e.type,i=e.pendingProps,s=t!==null?t.memoizedProps:null,o=i.children,ey(r,i)?o=null:s!==null&&ey(r,s)&&(e.flags|=32),OI(t,e),hn(t,e,o,n),e.child;case 6:return t===null&&sy(e),null;case 13:return DI(t,e,n);case 4:return Yv(e,e.stateNode.containerInfo),r=e.pendingProps,t===null?e.child=Na(e,null,r,n):hn(t,e,r,n),e.child;case 11:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Or(r,i),d_(t,e,r,i,n);case 7:return hn(t,e,e.pendingProps,n),e.child;case 8:return hn(t,e,e.pendingProps.children,n),e.child;case 12:return hn(t,e,e.pendingProps.children,n),e.child;case 10:e:{if(r=e.type._context,i=e.pendingProps,s=e.memoizedProps,o=i.value,ut(ed,r._currentValue),r._currentValue=o,s!==null)if(Nr(s.value,o)){if(s.children===i.children&&!An.current){e=ji(t,e,n);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(s.tag===1){l=Ri(-1,n&-n),l.tag=2;var f=s.updateQueue;if(f!==null){f=f.shared;var h=f.pending;h===null?l.next=l:(l.next=h.next,h.next=l),f.pending=l}}s.lanes|=n,l=s.alternate,l!==null&&(l.lanes|=n),oy(s.return,n,e),a.lanes|=n;break}l=l.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(Z(341));o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),oy(o,n,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}hn(t,e,i.children,n),e=e.child}return e;case 9:return i=e.type,r=e.pendingProps.children,Oa(e,n),i=wr(i),r=r(i),e.flags|=1,hn(t,e,r,n),e.child;case 14:return r=e.type,i=Or(r,e.pendingProps),i=Or(r.type,i),h_(t,e,r,i,n);case 15:return II(t,e,e.type,e.pendingProps,n);case 17:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Or(r,i),If(t,e),e.tag=1,Pn(r)?(t=!0,Jf(e)):t=!1,Oa(e,n),XS(e,r,i),uy(e,r,i,n),fy(null,e,r,!0,t,n);case 19:return xI(t,e,n);case 22:return EI(t,e,n)}throw Error(Z(156,e.tag))};function KI(t,e){return yS(t,e)}function wP(t,e,n,r){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function vr(t,e,n,r){return new wP(t,e,n,r)}function cg(t){return t=t.prototype,!(!t||!t.isReactComponent)}function _P(t){if(typeof t=="function")return cg(t)?1:0;if(t!=null){if(t=t.$$typeof,t===Cv)return 11;if(t===Av)return 14}return 2}function ks(t,e){var n=t.alternate;return n===null?(n=vr(t.tag,e,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=e,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,e=t.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function kf(t,e,n,r,i,s){var o=2;if(r=t,typeof t=="function")cg(t)&&(o=1);else if(typeof t=="string")o=5;else e:switch(t){case la:return Oo(n.children,i,s,e);case xv:o=8,i|=8;break;case Rm:return t=vr(12,n,e,i|2),t.elementType=Rm,t.lanes=s,t;case Tm:return t=vr(13,n,e,i),t.elementType=Tm,t.lanes=s,t;case Mm:return t=vr(19,n,e,i),t.elementType=Mm,t.lanes=s,t;case Z1:return mh(n,i,s,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case J1:o=10;break e;case X1:o=9;break e;case Cv:o=11;break e;case Av:o=14;break e;case us:o=16,r=null;break e}throw Error(Z(130,t==null?t:typeof t,""))}return e=vr(o,n,e,i),e.elementType=t,e.type=r,e.lanes=s,e}function Oo(t,e,n,r){return t=vr(7,t,r,e),t.lanes=n,t}function mh(t,e,n,r){return t=vr(22,t,r,e),t.elementType=Z1,t.lanes=n,t.stateNode={isHidden:!1},t}function Gp(t,e,n){return t=vr(6,t,null,e),t.lanes=n,t}function Jp(t,e,n){return e=vr(4,t.children!==null?t.children:[],t.key,e),e.lanes=n,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function bP(t,e,n,r,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Pp(0),this.expirationTimes=Pp(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Pp(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function fg(t,e,n,r,i,s,o,a,l){return t=new bP(t,e,n,a,l),e===1?(e=1,s===!0&&(e|=8)):e=0,s=vr(3,null,null,e),t.current=s,s.stateNode=t,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Qv(s),t}function SP(t,e,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(QI)}catch(t){console.error(t)}}QI(),q1.exports=sr;var DP=q1.exports,YI,D_=DP;YI=D_.createRoot,D_.hydrateRoot;var Iy=function(t,e){return Iy=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},Iy(t,e)};function pi(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Iy(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}function tt(t,e,n,r){var i=arguments.length,s=i<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,n):r,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(t,e,n,r);else for(var a=t.length-1;a>=0;a--)(o=t[a])&&(s=(i<3?o(s):i>3?o(e,n,s):o(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}function re(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function ve(t,e,n,r){function i(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(h){try{f(r.next(h))}catch(p){o(p)}}function l(h){try{f(r.throw(h))}catch(p){o(p)}}function f(h){h.done?s(h.value):i(h.value).then(a,l)}f((r=r.apply(t,e||[])).next())})}function GI(t,e){var n={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,i,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(f){return function(h){return l([f,h])}}function l(f){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,f[0]&&(n=0)),n;)try{if(r=1,i&&(s=f[0]&2?i.return:f[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,f[1])).done)return s;switch(i=0,s&&(f=[f[0]&2,s.value]),f[0]){case 0:case 1:s=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,i=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(s=n.trys,!(s=s.length>0&&s[s.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!s||f[1]>s[0]&&f[1]=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function nr(t,e){var n=typeof Symbol=="function"&&t[Symbol.iterator];if(!n)return t;var r=n.call(t),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=r.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return s}function br(t,e,n){if(n||arguments.length===2)for(var r=0,i=e.length,s;r1||a(y,w)})})}function a(y,w){try{l(r[y](w))}catch(I){p(s[0][3],I)}}function l(y){y.value instanceof ge?Promise.resolve(y.value.v).then(f,h):p(s[0][2],y)}function f(y){a("next",y)}function h(y){a("throw",y)}function p(y,w){y(w),s.shift(),s.length&&a(s[0][0],s[0][1])}}function Df(t){var e,n;return e={},r("next"),r("throw",function(i){throw i}),r("return"),e[Symbol.iterator]=function(){return this},e;function r(i,s){e[i]=t[i]?function(o){return(n=!n)?{value:ge(t[i](o)),done:!1}:s?s(o):o}:s}}function Ds(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof $a=="function"?$a(t):t[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(s){n[s]=t[s]&&function(o){return new Promise(function(a,l){o=t[s](o),i(a,l,o.done,o.value)})}}function i(s,o,a,l){Promise.resolve(l).then(function(f){s({value:f,done:a})},o)}}function kl(t){"@babel/helpers - typeof";return kl=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kl(t)}function xP(t,e){if(kl(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(kl(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function CP(t){var e=xP(t,"string");return kl(e)=="symbol"?e:String(e)}function x_(t,e){for(var n=0;nr[t]:r=>{for(var i=r,s=0;s"u")return i}return i}}function $e(t){return Object.assign({},t)}function TP(t){return Object.keys(t)[0]}function fd(t,e=!1){if(!t)return t;if(!e&&Array.isArray(t))return t.sort((r,i)=>typeof r=="string"&&typeof i=="string"?r.localeCompare(i):typeof r=="object"?1:-1).map(r=>fd(r,e));if(typeof t=="object"&&!Array.isArray(t)){var n={};return Object.keys(t).sort((r,i)=>r.localeCompare(i)).forEach(r=>{n[r]=fd(t[r],e)}),n}return t}function Ey(t){if(!t||t===null||typeof t!="object")return t;if(Array.isArray(t)){for(var e=new Array(t.length),n=e.length;n--;)e[n]=Ey(t[n]);return e}var r={};for(var i in t)r[i]=Ey(t[i]);return r}var Mn=Ey;function xs(t,e,n){return Object.defineProperty(t,e,{get:function(){return n}}),n}var yg=1;function Ws(){return{lwt:yg}}function Nn(){return""}function MP(t){return Object.assign({},t,{_meta:void 0,_deleted:void 0,_rev:void 0})}function NP(t,e,n){if(e.length!==n.length)return!1;for(var r=0,i=e.length;r>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=e.words[n>>>2];return this.sigBytes+=e.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new Cs([...this.words])}}const BP={stringify(t){const e=[];for(let n=0;n>>2]>>>24-n%4*8&255;e.push((r>>>4).toString(16),(r&15).toString(16))}return e.join("")}},FP={parse(t){const e=t.length,n=[];for(let r=0;r>>2]|=(t.charCodeAt(r)&255)<<24-r%4*8;return new Cs(n,e)}},LP={parse(t){return FP.parse(unescape(encodeURIComponent(t)))}};class $P{constructor(){this._data=new Cs,this._nDataBytes=0,this._minBufferSize=0,this.blockSize=512/32}reset(){this._data=new Cs,this._nDataBytes=0}_append(e){typeof e=="string"&&(e=LP.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_doProcessBlock(e,n){}_process(e){let n,r=this._data.sigBytes/(this.blockSize*4);e?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const i=r*this.blockSize,s=Math.min(i*4,this._data.sigBytes);if(i){for(let o=0;o>>7)^(k<<14|k>>>18)^k>>>3,W=ao[y-2],Q=(W<<15|W>>>17)^(W<<13|W>>>19)^W>>>10;ao[y]=z+ao[y-7]+Q+ao[y-16]}const w=l&f^~l&h,I=i&s^i&o^s&o,E=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),$=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),S=p+$+w+UP[y]+ao[y],_=E+I;p=h,h=f,f=l,l=a+S|0,a=o,o=s,s=i,i=S+_|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+f|0,r[6]=r[6]+h|0,r[7]=r[7]+p|0}finalize(e){super.finalize(e);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function VP(t){return new zP().finalize(t).toString()}function KP(t){return Promise.resolve(VP(t))}async function WP(t){var e=new TextEncoder().encode(t),n=await crypto.subtle.digest("SHA-256",e),r=Array.prototype.map.call(new Uint8Array(n),i=>("00"+i.toString(16)).slice(-2)).join("");return r}var qP=typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof crypto.subtle.digest=="function",HP=qP?WP:KP;function QP(){return new Promise(t=>setTimeout(t,0))}function YP(t=0){return new Promise(e=>setTimeout(e,t))}function ZI(t){return t&&typeof t.then=="function"?t:Promise.resolve(t)}var dd=Promise.resolve(!0),Xn=Promise.resolve(!1),vg=Promise.resolve(null),un=Promise.resolve();function gg(t=1e4){return typeof requestIdleCallback=="function"?new Promise(e=>{requestIdleCallback(()=>e(),{timeout:t})}):YP(0)}var Zp=un;function GP(t=void 0){return Zp=Zp.then(()=>gg(t)),Zp}function JP(t,e){return t.reduce((n,r)=>n.then(r),Promise.resolve(e))}var XP=/\./g,P_="abcdefghijklmnopqrstuvwxyz";function iu(t=10){for(var e="",n=0;n{var e=typeof t;return t!==null&&(e==="object"||e==="function")},em=new Set(["__proto__","prototype","constructor"]),ZP=new Set("0123456789");function tE(t){var e=[],n="",r="start",i=!1;for(var s of t)switch(s){case"\\":{if(r==="index")throw new Error("Invalid character in an index");if(r==="indexEnd")throw new Error("Invalid character after an index");i&&(n+=s),r="property",i=!i;break}case".":{if(r==="index")throw new Error("Invalid character in an index");if(r==="indexEnd"){r="property";break}if(i){i=!1,n+=s;break}if(em.has(n))return[];e.push(n),n="",r="property";break}case"[":{if(r==="index")throw new Error("Invalid character in an index");if(r==="indexEnd"){r="index";break}if(i){i=!1,n+=s;break}if(r==="property"){if(em.has(n))return[];e.push(n),n=""}r="index";break}case"]":{if(r==="index"){e.push(Number.parseInt(n,10)),n="",r="indexEnd";break}if(r==="indexEnd")throw new Error("Invalid character after an index")}default:{if(r==="index"&&!ZP.has(s))throw new Error("Invalid character in an index");if(r==="indexEnd")throw new Error("Invalid character after an index");r==="start"&&(r="property"),i&&(i=!1,n+="\\"),n+=s}}switch(i&&(n+="\\"),r){case"property":{if(em.has(n))return[];e.push(n);break}case"index":throw new Error("Index was not closed");case"start":{e.push("");break}}return e}function nE(t,e){if(typeof e!="number"&&Array.isArray(t)){var n=Number.parseInt(e,10);return Number.isInteger(n)&&t[n]===t[e]}return!1}function eR(t,e){if(nE(t,e))throw new Error("Cannot use string index")}function Ts(t,e,n){if(Array.isArray(e)&&(e=e.join(".")),!e.includes(".")&&!e.includes("["))return t[e];if(!Oy(t)||typeof e!="string")return n===void 0?t:n;var r=tE(e);if(r.length===0)return n;for(var i=0;i"u")throw new Error("missing value from map "+e);return n}function Br(t,e,n,r){var i=t.get(e);return typeof i>"u"?(i=n(),t.set(e,i)):r&&r(i),i}function pt(t){var e=t.split("-"),n="RxDB";return e.forEach(r=>{n+=eE(r)}),n+="Plugin",new Error(`You are using a function which must be overwritten by a plugin. + You should either prevent the usage of this function or add the plugin via: + import { `+n+" } from 'rxdb/plugins/"+t+`'; + addRxPlugin(`+n+`); + `)}function ky(t){var e={name:t.name,message:t.message,rxdb:t.rxdb,parameters:t.parameters,code:t.code,stack:t.stack?t.stack.replace(/\n/g,` + `):void 0};return e}var tm=0;function Ft(){var t=Date.now();t=t+.01,t<=tm&&(t=tm+.01);var e=parseFloat(t.toFixed(2));return tm=e,e}function ye(t,e){if(!t)throw e||(e=""),new Error("ensureNotFalsy() is falsy: "+e);return t}var Ai={bufferSize:1,refCount:!0},wg="15.9.1";function Dl(t,e){return Dl=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},Dl(t,e)}function _g(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,Dl(t,e)}function Dy(t){return Dy=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},Dy(t)}function tR(t){try{return Function.toString.call(t).indexOf("[native code]")!==-1}catch{return typeof t=="function"}}function iE(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(iE=function(){return!!t})()}function nR(t,e,n){if(iE())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&Dl(i,n.prototype),i}function hd(t){var e=typeof Map=="function"?new Map:void 0;return hd=function(r){if(r===null||!tR(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(r))return e.get(r);e.set(r,i)}function i(){return nR(r,arguments,Dy(this).constructor)}return i.prototype=Object.create(r.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Dl(i,r)},hd(t)}var it={isDevMode(){return!1},deepFreezeWhenDevMode(t){return t},tunnelErrorMessage(t){return"RxDB Error-Code "+t+`. + Error messages are not included in RxDB core to reduce build size. + - To find out what this error means, either use the dev-mode-plugin https://rxdb.info/dev-mode.html + - or search for the error code here: https://github.com/pubkey/rxdb/search?q=`+t+` + `}};function rR(t){var e="";return Object.keys(t).length===0||(e+=`Given parameters: { +`,e+=Object.keys(t).map(n=>{var r="[object Object]";try{n==="errors"?r=t[n].map(i=>JSON.stringify(i,Object.getOwnPropertyNames(i))):r=JSON.stringify(t[n],function(i,s){return s===void 0?null:s},2)}catch{}return n+":"+r}).join(` +`),e+="}"),e}function sE(t,e,n){return"RxError ("+e+`): +`+t+` +`+rR(n)}var iR=function(t){_g(e,t);function e(r,i,s={}){var o,a=sE(i,r,s);return o=t.call(this,a)||this,o.code=r,o.message=a,o.parameters=s,o.rxdb=!0,o}var n=e.prototype;return n.toString=function(){return this.message},Ks(e,[{key:"name",get:function(){return"RxError ("+this.code+")"}},{key:"typeError",get:function(){return!1}}]),e}(hd(Error)),sR=function(t){_g(e,t);function e(r,i,s={}){var o,a=sE(i,r,s);return o=t.call(this,a)||this,o.code=r,o.message=a,o.parameters=s,o.rxdb=!0,o}var n=e.prototype;return n.toString=function(){return this.message},Ks(e,[{key:"name",get:function(){return"RxTypeError ("+this.code+")"}},{key:"typeError",get:function(){return!0}}]),e}(hd(TypeError));function le(t,e){return new iR(t,it.tunnelErrorMessage(t),e)}function el(t,e){return new sR(t,it.tunnelErrorMessage(t),e)}function _h(t){return t&&t.status===409?t:!1}var oR={409:"document write conflict",422:"schema validation error",510:"attachment data missing"};function aR(t){return le("COL20",{name:oR[t.status],document:t.documentId,writeError:t})}var xl={preAddRxPlugin:[],preCreateRxDatabase:[],createRxDatabase:[],preCreateRxCollection:[],createRxCollection:[],postDestroyRxCollection:[],postRemoveRxCollection:[],preCreateRxSchema:[],createRxSchema:[],preCreateRxQuery:[],prePrepareQuery:[],createRxDocument:[],postCreateRxDocument:[],preCreateRxStorageInstance:[],preMigrateDocument:[],postMigrateDocument:[],preDestroyRxDatabase:[],postRemoveRxDatabase:[],preReplicationMasterWrite:[],preReplicationMasterWriteDocumentsHandle:[]};function Fr(t,e){xl[t]&&xl[t].forEach(n=>n(e))}function Fo(t,e){return Promise.all(xl[t].map(n=>n(e)))}function zi(t,e){var n=e;n=n.replace(XP,".properties."),n="properties."+n,n=zu(n);var r=Ts(t,n);return r}function oE(t,e,n){if(typeof e.primaryKey=="string")return n;var r=qs(e,n),i=n[t];if(i&&i!==r)throw le("DOC19",{args:{documentData:n,existingPrimary:i,newPrimary:r},schema:e});return n[t]=r,n}function $n(t){return typeof t=="string"?t:t.key}function uR(t){var e=$n(t.primaryKey),n=zi(t,e);return ye(n.maxLength)}function qs(t,e){if(typeof t.primaryKey=="string")return e[t.primaryKey];var n=t.primaryKey;return n.fields.map(r=>{var i=Ts(e,r);if(typeof i>"u")throw le("DOC18",{args:{field:r,documentData:e}});return i}).join(n.separator)}function lR(t){var e=fd(t,!0);return e}function cR(t){return["_deleted",t]}function bh(t){t=$e(t);var e=$n(t.primaryKey);t.properties=$e(t.properties),t.additionalProperties=!1,Object.prototype.hasOwnProperty.call(t,"keyCompression")||(t.keyCompression=!1),t.indexes=t.indexes?t.indexes.slice(0):[],t.required=t.required?t.required.slice(0):[],t.encrypted=t.encrypted?t.encrypted.slice(0):[],t.properties._rev={type:"string",minLength:1},t.properties._attachments={type:"object"},t.properties._deleted={type:"boolean"},t.properties._meta=fR,t.required=t.required?t.required.slice(0):[],t.required.push("_deleted"),t.required.push("_rev"),t.required.push("_meta"),t.required.push("_attachments");var n=aE(t);Ua(t.required,n),t.required=t.required.filter(s=>!s.includes(".")).filter((s,o,a)=>a.indexOf(s)===o),t.version=t.version||0;var r=t.indexes.map(s=>{var o=mg(s)?s.slice(0):[s];return o.includes(e)||o.push(e),o[0]!=="_deleted"&&o.unshift("_deleted"),o});r.length===0&&r.push(cR(e)),r.push(["_meta.lwt",e]),t.internalIndexes&&t.internalIndexes.map(s=>{r.push(s)});var i=new Set;return r.filter(s=>{var o=s.join(",");return i.has(o)?!1:(i.add(o),!0)}),t.indexes=r,t}var fR={type:"object",properties:{lwt:{type:"number",minimum:yg,maximum:1e15,multipleOf:.01}},additionalProperties:!0,required:["lwt"]};function aE(t){var e=Object.keys(t.properties).filter(r=>t.properties[r].final),n=$n(t.primaryKey);return e.push(n),typeof t.primaryKey!="string"&&t.primaryKey.fields.forEach(r=>e.push(r)),e}function dR(t,e){for(var n=Object.keys(t.defaultValues),r=0;r"u")&&(e[i]=t.defaultValues[i])}return e}var uE=function(){function t(n,r){this.jsonSchema=n,this.hashFunction=r,this.indexes=hR(this.jsonSchema),this.primaryPath=$n(this.jsonSchema.primaryKey),this.finalFields=aE(this.jsonSchema)}var e=t.prototype;return e.validateChange=function(r,i){this.finalFields.forEach(s=>{if(!Va(r[s],i[s]))throw le("DOC9",{dataBefore:r,dataAfter:i,fieldName:s,schema:this.jsonSchema})})},e.getDocumentPrototype=function(){var r={},i=zi(this.jsonSchema,"");return Object.keys(i).forEach(s=>{var o=s;r.__defineGetter__(s,function(){if(!(!this.get||typeof this.get!="function")){var a=this.get(o);return a}}),Object.defineProperty(r,s+"$",{get:function(){return this.get$(o)},enumerable:!1,configurable:!1}),Object.defineProperty(r,s+"$$",{get:function(){return this.get$$(o)},enumerable:!1,configurable:!1}),Object.defineProperty(r,s+"_",{get:function(){return this.populate(o)},enumerable:!1,configurable:!1})}),xs(this,"getDocumentPrototype",()=>r),r},e.getPrimaryOfDocumentData=function(r){return qs(this.jsonSchema,r)},Ks(t,[{key:"version",get:function(){return this.jsonSchema.version}},{key:"defaultValues",get:function(){var n={};return Object.entries(this.jsonSchema.properties).filter(([,r])=>Object.prototype.hasOwnProperty.call(r,"default")).forEach(([r,i])=>n[r]=i.default),xs(this,"defaultValues",n)}},{key:"hash",get:function(){return xs(this,"hash",this.hashFunction(JSON.stringify(this.jsonSchema)))}}]),t}();function hR(t){return(t.indexes||[]).map(e=>mg(e)?e:[e])}function pR(t){var e=t.version?t.version:0,n=0;return new Array(e).fill(0).map(()=>n++)}function mR(t,e,n=!0){n&&Fr("preCreateRxSchema",t);var r=bh(t);r=lR(r),it.deepFreezeWhenDevMode(r);var i=new uE(r,e);return Fr("createRxSchema",i),i}function qe(t){return typeof t=="function"}function yR(t){return qe(t==null?void 0:t.lift)}function Sn(t){return function(e){if(yR(e))return e.lift(function(n){try{return t(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}var bg=function(t){return t&&typeof t.length=="number"&&typeof t!="function"};function lE(t){return qe(t==null?void 0:t.then)}function Sg(t){var e=function(r){Error.call(r),r.stack=new Error().stack},n=t(e);return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var nm=Sg(function(t){return function(n){t(this),this.message=n?n.length+` errors occurred during unsubscription: +`+n.map(function(r,i){return i+1+") "+r.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=n}});function pd(t,e){if(t){var n=t.indexOf(e);0<=n&&t.splice(n,1)}}var su=function(){function t(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return t.prototype.unsubscribe=function(){var e,n,r,i,s;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=$a(o),l=a.next();!l.done;l=a.next()){var f=l.value;f.remove(this)}}catch(E){e={error:E}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}else o.remove(this);var h=this.initialTeardown;if(qe(h))try{h()}catch(E){s=E instanceof nm?E.errors:[E]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var y=$a(p),w=y.next();!w.done;w=y.next()){var I=w.value;try{R_(I)}catch(E){s=s??[],E instanceof nm?s=br(br([],nr(s)),nr(E.errors)):s.push(E)}}}catch(E){r={error:E}}finally{try{w&&!w.done&&(i=y.return)&&i.call(y)}finally{if(r)throw r.error}}}if(s)throw new nm(s)}},t.prototype.add=function(e){var n;if(e&&e!==this)if(this.closed)R_(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(e)}},t.prototype._hasParent=function(e){var n=this._parentage;return n===e||Array.isArray(n)&&n.includes(e)},t.prototype._addParent=function(e){var n=this._parentage;this._parentage=Array.isArray(n)?(n.push(e),n):n?[n,e]:e},t.prototype._removeParent=function(e){var n=this._parentage;n===e?this._parentage=null:Array.isArray(n)&&pd(n,e)},t.prototype.remove=function(e){var n=this._finalizers;n&&pd(n,e),e instanceof t&&e._removeParent(this)},t.EMPTY=function(){var e=new t;return e.closed=!0,e}(),t}(),cE=su.EMPTY;function fE(t){return t instanceof su||t&&"closed"in t&&qe(t.remove)&&qe(t.add)&&qe(t.unsubscribe)}function R_(t){qe(t)?t():t.unsubscribe()}var dE={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},xy={setTimeout:function(t,e){for(var n=[],r=2;r0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(n){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,n)},e.prototype._subscribe=function(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)},e.prototype._innerSubscribe=function(n){var r=this,i=this,s=i.hasError,o=i.isStopped,a=i.observers;return s||o?cE:(this.currentObservers=null,a.push(n),new su(function(){r.currentObservers=null,pd(a,n)}))},e.prototype._checkFinalizedStatuses=function(n){var r=this,i=r.hasError,s=r.thrownError,o=r.isStopped;i?n.error(s):o&&n.complete()},e.prototype.asObservable=function(){var n=new Ot;return n.source=this,n},e.create=function(n,r){return new B_(n,r)},e}(Ot),B_=function(t){pi(e,t);function e(n,r){var i=t.call(this)||this;return i.destination=n,i.source=r,i}return e.prototype.next=function(n){var r,i;(i=(r=this.destination)===null||r===void 0?void 0:r.next)===null||i===void 0||i.call(r,n)},e.prototype.error=function(n){var r,i;(i=(r=this.destination)===null||r===void 0?void 0:r.error)===null||i===void 0||i.call(r,n)},e.prototype.complete=function(){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.complete)===null||r===void 0||r.call(n)},e.prototype._subscribe=function(n){var r,i;return(i=(r=this.source)===null||r===void 0?void 0:r.subscribe(n))!==null&&i!==void 0?i:cE},e}(Kt);function F_(){for(var t=[],e=0;e0&&(h=new Ka({next:function(Q){return W.next(Q)},error:function(Q){E=!0,$(),p=sm(S,i,Q),W.error(Q)},complete:function(){I=!0,$(),p=sm(S,o),W.complete()}}),jn(k).subscribe(h))})(f)}}function sm(t,e){for(var n=[],r=2;r!!t.queryParams.limit,IT=t=>t.queryParams.limit===1,ET=t=>!!(t.queryParams.skip&&t.queryParams.skip>0),OT=t=>t.changeEvent.operation==="DELETE",kT=t=>t.changeEvent.operation==="INSERT",DT=t=>t.changeEvent.operation==="UPDATE",xT=t=>BE(t)&&t.previousResults.length>=t.queryParams.limit,CT=t=>{const e=t.queryParams.sortFields,n=t.changeEvent.previous,r=t.changeEvent.doc;if(!r)return!1;if(!n)return!0;for(let i=0;i{const e=t.changeEvent.id;if(t.keyDocumentMap)return t.keyDocumentMap.has(e);{const n=t.queryParams.primaryKey,r=t.previousResults;for(let i=0;i{const e=t.previousResults[0];return!!(e&&e[t.queryParams.primaryKey]===t.changeEvent.id)},RT=t=>{const e=Cg(t.previousResults);return!!(e&&e[t.queryParams.primaryKey]===t.changeEvent.id)},TT=t=>{const e=t.changeEvent.previous;if(!e)return!1;const n=t.previousResults[0];return n?n[t.queryParams.primaryKey]===t.changeEvent.id?!0:t.queryParams.sortComparator(e,n)<0:!1},MT=t=>{const e=t.changeEvent.previous;if(!e)return!1;const n=Cg(t.previousResults);return n?n[t.queryParams.primaryKey]===t.changeEvent.id?!0:t.queryParams.sortComparator(e,n)>0:!1},NT=t=>{const e=t.changeEvent.doc;if(!e)return!1;const n=t.previousResults[0];return n?n[t.queryParams.primaryKey]===t.changeEvent.id?!0:t.queryParams.sortComparator(e,n)<0:!1},BT=t=>{const e=t.changeEvent.doc;if(!e)return!1;const n=Cg(t.previousResults);return n?n[t.queryParams.primaryKey]===t.changeEvent.id?!0:t.queryParams.sortComparator(e,n)>0:!1},FT=t=>{const e=t.changeEvent.previous;return e?t.queryParams.queryMatcher(e):!1},LT=t=>{const e=t.changeEvent.doc;return e?t.queryParams.queryMatcher(e):!1},$T=t=>t.previousResults.length===0,jT={0:kT,1:DT,2:OT,3:BE,4:IT,5:ET,6:$T,7:xT,8:PT,9:RT,10:CT,11:AT,12:TT,13:MT,14:NT,15:BT,16:FT,17:LT};function FE(t,e,n,r){var i=t.length,s=i-1,o=0;if(i===0)return t.push(e),0;for(var a;r<=s;)o=r+(s-r>>1),a=t[o],n(a,e)<=0?r=o+1:s=o-1;return n(a,e)<=0&&o++,t.splice(o,0,e),o}const UT=t=>{},Ag=t=>{t.previousResults.unshift(t.changeEvent.doc),t.keyDocumentMap&&t.keyDocumentMap.set(t.changeEvent.id,t.changeEvent.doc)},Pg=t=>{t.previousResults.push(t.changeEvent.doc),t.keyDocumentMap&&t.keyDocumentMap.set(t.changeEvent.id,t.changeEvent.doc)},Rg=t=>{const e=t.previousResults.shift();t.keyDocumentMap&&e&&t.keyDocumentMap.delete(e[t.queryParams.primaryKey])},Tg=t=>{const e=t.previousResults.pop();t.keyDocumentMap&&e&&t.keyDocumentMap.delete(e[t.queryParams.primaryKey])},zT=t=>{Rg(t),Pg(t)},VT=t=>{Tg(t),Ag(t)},KT=t=>{Rg(t),Ag(t)},WT=t=>{Tg(t),Pg(t)},LE=t=>{t.keyDocumentMap&&t.keyDocumentMap.delete(t.changeEvent.id);const e=t.queryParams.primaryKey,n=t.previousResults;for(let r=0;r{const e=t.changeEvent.doc,n=t.queryParams.primaryKey,r=t.previousResults;for(let i=0;i{const e={_id:"wrongHuman"+new Date().getTime()};t.previousResults.length=0,t.previousResults.push(e),t.keyDocumentMap&&(t.keyDocumentMap.clear(),t.keyDocumentMap.set(e._id,e))},$E=t=>{const e=t.changeEvent.id,n=t.changeEvent.doc;if(t.keyDocumentMap){if(t.keyDocumentMap.has(e))return;t.keyDocumentMap.set(e,n)}else if(t.previousResults.find(i=>i[t.queryParams.primaryKey]===e))return;FE(t.previousResults,n,t.queryParams.sortComparator,0)},QT=t=>{LE(t),$E(t)},YT=t=>{throw new Error("Action runFullQueryAgain must be implemented by yourself")},GT=t=>{throw new Error("Action unknownAction should never be called")},JT=["doNothing","insertFirst","insertLast","removeFirstItem","removeLastItem","removeFirstInsertLast","removeLastInsertFirst","removeFirstInsertFirst","removeLastInsertLast","removeExisting","replaceExisting","alwaysWrong","insertAtSortPosition","removeExistingAndInsertAtSortPosition","runFullQueryAgain","unknownAction"],XT={doNothing:UT,insertFirst:Ag,insertLast:Pg,removeFirstItem:Rg,removeLastItem:Tg,removeFirstInsertLast:zT,removeLastInsertFirst:VT,removeFirstInsertFirst:KT,removeLastInsertLast:WT,removeExisting:LE,replaceExisting:qT,alwaysWrong:HT,insertAtSortPosition:$E,removeExistingAndInsertAtSortPosition:QT,runFullQueryAgain:YT,unknownAction:GT},ZT=40;function om(t){return t.charCodeAt(0)-ZT}function eM(t){return t?"1":"0"}function j_(t,e){const n=[];for(let r=0,i=t.length;rnM(iM(),jT,t);function oM(t){const e=sM(t);return JT[e]}function aM(t,e,n,r,i){const s=XT[t];return s({queryParams:e,changeEvent:n,previousResults:r,keyDocumentMap:i}),r}var Tr=String.fromCharCode(65535),ci=Number.MIN_SAFE_INTEGER;function uM(t,e){var n=e.selector,r=t.indexes?t.indexes.slice(0):[];e.index&&(r=[e.index]);var i=!!e.sort.find(h=>Object.values(h)[0]==="desc"),s=new Set;Object.keys(n).forEach(h=>{var p=zi(t,h);p&&p.type==="boolean"&&Object.prototype.hasOwnProperty.call(n[h],"$eq")&&s.add(h)});var o=e.sort.map(h=>Object.keys(h)[0]),a=o.filter(h=>!s.has(h)).join(","),l=-1,f;if(r.forEach(h=>{var p=!0,y=!0,w=h.map(_=>{var k=n[_],z=k?Object.keys(k):[],W={};if(!k||!z.length){var Q=y?ci:Tr;W={startKey:Q,endKey:p?Tr:ci,inclusiveStart:!0,inclusiveEnd:!0}}else z.forEach(H=>{if(Mg.has(H)){var X=k[H],U=dM(H,X);W=Object.assign(W,U)}});return typeof W.startKey>"u"&&(W.startKey=ci),typeof W.endKey>"u"&&(W.endKey=Tr),typeof W.inclusiveStart>"u"&&(W.inclusiveStart=!0),typeof W.inclusiveEnd>"u"&&(W.inclusiveEnd=!0),y&&!W.inclusiveStart&&(y=!1),p&&!W.inclusiveEnd&&(p=!1),W}),I=w.map(_=>_.startKey),E=w.map(_=>_.endKey),$={index:h,startKeys:I,endKeys:E,inclusiveEnd:p,inclusiveStart:y,sortSatisfiedByIndex:!i&&a===h.filter(_=>!s.has(_)).join(","),selectorSatisfiedByIndex:fM(h,e.selector,I,E)},S=hM(t,e,$);(S>=l||e.index)&&(l=S,f=$)}),!f)throw le("SNH",{query:e});return f}var Mg=new Set(["$eq","$gt","$gte","$lt","$lte"]),lM=new Set(["$eq","$gt","$gte"]),cM=new Set(["$eq","$lt","$lte"]);function fM(t,e,n,r){var i=Object.entries(e),s=i.find(([H,X])=>{if(!t.includes(H))return!0;var U=Object.entries(X).find(([ee,ce])=>!Mg.has(ee));return U});if(s||e.$and||e.$or)return!1;var o=[],a=new Set;for(var[l,f]of Object.entries(e)){if(!t.includes(l))return!1;var h=Object.keys(f).filter(H=>lM.has(H));if(h.length>1)return!1;var p=h[0];if(p&&a.add(l),p!=="$eq"){if(o.length>0)return!1;o.push(p)}}var y=[],w=new Set;for(var[I,E]of Object.entries(e)){if(!t.includes(I))return!1;var $=Object.keys(E).filter(H=>cM.has(H));if($.length>1)return!1;var S=$[0];if(S&&w.add(I),S!=="$eq"){if(y.length>0)return!1;y.push(S)}}var _=0;for(var k of t){for(var z of[a,w]){if(!z.has(k)&&z.size>0)return!1;z.delete(k)}var W=n[_],Q=r[_];if(W!==Q&&a.size>0&&w.size>0)return!1;_++}return!0}function dM(t,e){switch(t){case"$eq":return{startKey:e,endKey:e,inclusiveEnd:!0,inclusiveStart:!0};case"$lte":return{endKey:e,inclusiveEnd:!0};case"$gte":return{startKey:e,inclusiveStart:!0};case"$lt":return{endKey:e,inclusiveEnd:!1};case"$gt":return{startKey:e,inclusiveStart:!1};default:throw new Error("SNH")}}function hM(t,e,n){var r=0,i=h=>{h>0&&(r=r+h)},s=10,o=Xp(n.startKeys,h=>h!==ci&&h!==Tr);i(o*s);var a=Xp(n.startKeys,h=>h!==Tr&&h!==ci);i(a*s);var l=Xp(n.startKeys,(h,p)=>h===n.endKeys[p]);i(l*s*1.5);var f=n.sortSatisfiedByIndex?5:0;return i(f),r}const pM=2147483647,mM=-2147483648,yM=Number.MAX_SAFE_INTEGER,vM=Number.MIN_SAFE_INTEGER,Vi=Symbol("missing"),jE=Object.freeze(new Error("mingo: cycle detected while processing object/array")),gM=Object.getPrototypeOf([]),UE=Object.getPrototypeOf({}),wM="[object Object]",_M=/^\[object ([a-zA-Z0-9]+)\]$/;let Ng=class{};class Bg{}const Lo=t=>t===null?Ng:t===void 0?Bg:t.constructor,Ql=t=>{const e=DM(t);let n=0,r=e.length;for(;r;)n=(n<<5)-n^e.charCodeAt(--r);return n>>>0},zE=new Set(["null","undefined","boolean","number","string","date","regexp"]),U_=new Set([Bg,Ng,Boolean,String,Number]),Nu=t=>t.toString(),Er=t=>`${Lo(t).name}[${t.toString()}]`,$o=new Map([[Number,Nu],[Boolean,Nu],[RegExp,Nu],[Function,Nu],[Symbol,Nu],[Date,t=>t.toISOString()],[String,JSON.stringify],[Ng,t=>"null"],[Bg,t=>"undefined"],[Int8Array,Er],[Uint8Array,Er],[Uint8ClampedArray,Er],[Int16Array,Er],[Uint16Array,Er],[Int32Array,Er],[Uint32Array,Er],[Float32Array,Er],[Float64Array,Er]]);typeof BigInt<"u"&&$o.set(BigInt,t=>"0x"+t.toString(16));typeof BigInt64Array<"u"&&$o.set(BigInt64Array,Er);typeof BigUint64Array<"u"&&$o.set(BigUint64Array,Er);const bM={null:0,undefined:0,number:1,string:2,object:3,array:4,boolean:5,date:6,regexp:7,function:8},Bn=(t,e)=>{t===Vi&&(t=void 0),e===Vi&&(e=void 0);const[n,r]=[t,e].map(i=>bM[Al(i).toLowerCase()]);return n!==r?n-r:n===1||n===2||n===6?te?1:0:Wi(t,e)?0:te?1:0};function Yt(t,e){if(!t)throw new Error(e)}const SM=t=>{const e=Object.getPrototypeOf(Lo(t));return e&&e.name==="TypedArray"},Ty=t=>{if(U_.has(Lo(t)))return t;const e=new Set,n=r=>{if(e.has(r))throw jE;const i=Lo(r);if(U_.has(i))return r;try{if(Lt(r))return e.add(r),r.map(n);if(wt(r)){e.add(r);const s={};for(const o in r)s[o]=n(r[o]);return s}}finally{e.delete(r)}return i===Date||i===RegExp||SM(r)?new i(r):r};return n(t)},Al=t=>_M.exec(Object.prototype.toString.call(t))[1],um=t=>typeof t=="boolean",Ki=t=>typeof t=="string",Yn=t=>!isNaN(t)&&typeof t=="number",Lt=Array.isArray,wt=t=>{if(!t)return!1;const e=Object.getPrototypeOf(t);return(e===UE||e===null)&&wM===Object.prototype.toString.call(t)},Sh=t=>t===Object(t),My=t=>t instanceof Date,Cf=t=>t instanceof RegExp,Ih=t=>typeof t=="function",fn=t=>t==null,Wa=(t,e)=>t.includes(e),VE=(t,e)=>!Wa(t,e),IM=(t,e=!0)=>!!t||e&&t==="",uu=t=>fn(t)||Ki(t)&&!t||t instanceof Array&&t.length===0||wt(t)&&Object.keys(t).length===0,z_=t=>t===Vi,Yl=t=>t instanceof Array?t:[t],er=(t,e)=>!!t&&Object.prototype.hasOwnProperty.call(t,e),EM=(t,e)=>wt(t)&&wt(e)||Lt(t)&&Lt(e);function Ny(t,e,n){if(n=n||{flatten:!1},z_(t)||fn(t))return e;if(z_(e)||fn(e))return t;if(!EM(t,e)){if(n.skipValidation)return e||t;throw Error("mismatched types. must both be array or object")}if(n.skipValidation=!0,Lt(t)){const r=t,i=e;if(n.flatten){let s=0,o=0;for(;s{const s=WE(r,e);n.has(s)?n.get(s).some(o=>Wi(t[o],r))||n.get(s).push(i):n.set(s,[i])}),n}function Fg(t,e=Ql){if(t.some(a=>a.length==0))return[];if(t.length===1)return Array.from(t);const n=xM(t.map((a,l)=>[l,a.length]),a=>a[1]),r=t[n[0][0]],i=By(r,e),s=new Map,o=new Array;return i.forEach((a,l)=>{const f=a.map(w=>r[w]),h=f.map(w=>0),p=f.map(w=>[n[0][0],0]);let y=!1;for(let w=1;w$[_]);y=f.map((_,k)=>S.some((z,W)=>{const Q=h[k];return Wi(_,z)&&(h[k]++,Iw===t.length-1?[f[I],p[I]]:Vi).filter(w=>w!==Vi))}),o.sort((a,l)=>{const[f,[h,p]]=a,[y,[w,I]]=l,E=Bn(h,w);return E!==0?E:Bn(p,I)}).map(a=>a[0])}function KE(t,e=0){const n=new Array;function r(i,s){for(let o=0,a=i.length;o0||s<0)?r(i[o],Math.max(-1,s-1)):n.push(i[o])}return r(t,e),n}const OM=t=>{let[e,n]=[Object.getPrototypeOf(t),Object.getOwnPropertyNames(t)],r=e;for(;!n.length&&e!==UE&&e!==gM;)r=e,n=Object.getOwnPropertyNames(e),e=Object.getPrototypeOf(e);const i={};return n.forEach(s=>i[s]=t[s]),[i,r]};function Wi(t,e){const n=[[t,e]];for(;n.length>0;){if([t,e]=n.pop(),t===e)continue;const r=Lo(t);if(r!==Lo(e)||Ih(t))return!1;if($o.has(r)){const i=$o.get(r);if(i(t)!==i(e))return!1;continue}if(r===Array||r===Object){const i=Object.keys(t),s=Object.keys(e);if(i.length!==s.length||new Set(i.concat(s)).size!=i.length)return!1;for(const o of i)n.push([t[o],e[o]]);continue}return!1}return!n.length}function kM(t,e=Ql){const n=t.map(r=>Vi);return By(t,e).forEach((r,i)=>{r.forEach(s=>n[s]=t[s])}),n.filter(r=>r!==Vi)}function DM(t){const e=new Set,n=r=>{const i=Lo(r);if($o.has(i))return $o.get(i)(r);const s=i===Object?"":i.name;if(Ih(r.toJSON))return`${s}(${JSON.stringify(r)})`;if(e.has(r))throw jE;e.add(r);try{if(i===Array)return"["+r.map(n).join(",")+"]";if(i!==Object){const[a,l]=OM(r);if(Lt(r))return`${s}${n([...r,a])}`;r=a}const o=Object.keys(r);return o.sort(),`${s}{`+o.map(a=>`${a}:${n(r[a])}`).join(",")+"}"}finally{e.delete(r)}};return n(t)}function WE(t,e){return e=e||Ql,fn(t)?null:e(t).toString()}function xM(t,e,n=Bn){if(uu(t))return t;const r=new Array,i=new Array;for(let s=0;sn(s[0],o[0])),Gl(i,r.map(s=>s[1]))}function CM(t,e,n=Ql){if(t.length<1)return new Map;const r=new Map,i=new Map;for(let s=0;sWi(h,a)):null;fn(f)?(i.set(a,[o]),r.has(l)?r.get(l).push(a):r.set(l,[a])):i.get(f).push(o)}}return i}const lm=5e4;function Gl(t,...e){return t instanceof Array?e.reduce((n,r)=>{let i=Math.ceil(r.length/lm),s=0;for(;i-- >0;)Array.prototype.push.apply(n,r.slice(s,s+lm)),s+=lm;return n},t):e.filter(Sh).reduce((n,r)=>(Object.assign(n,r),n),t)}function Fy(t,e){return Sh(t)?t[e]:void 0}function AM(t,e){if(e<1)return t;for(;e--&&t.length===1;)t=t[0];return t}function lu(t,e,n){let r=0;function i(o,a){let l=o;for(let f=0;f0)break;r+=1;const y=a.slice(f);l=l.reduce((w,I)=>{const E=i(I,y);return E!==void 0&&w.push(E),w},[]);break}else l=Fy(l,h);if(l===void 0)break}return l}const s=zE.has(Al(t).toLowerCase())?t:i(t,e.split("."));return s instanceof Array&&(n!=null&&n.unwrapArray)?AM(s,r):s}function Af(t,e,n){const r=e.split("."),i=r[0],s=r.slice(1).join("."),o=/^\d+$/.exec(i)!==null,a=r.length>1;let l,f;if(t instanceof Array)if(o)l=Fy(t,Number(i)),a&&(l=Af(l,s,n)),l=[l];else{l=[];for(const h of t)f=Af(h,e,n),n!=null&&n.preserveMissing?(f===void 0&&(f=Vi),l.push(f)):f!==void 0&&l.push(f)}else{if(f=Fy(t,i),a&&(f=Af(f,s,n)),f===void 0)return;l=n!=null&&n.preserveKeys?Object.assign({},t):{},l[i]=f}return l}function Ly(t){if(t instanceof Array)for(let e=t.length-1;e>=0;e--)t[e]===Vi?t.splice(e,1):Ly(t[e]);else if(wt(t))for(const e in t)er(t,e)&&Ly(t[e])}const V_=/^\d+$/;function Pl(t,e,n,r){const i=e.split("."),s=i[0],o=i.slice(1).join(".");if(i.length===1)(wt(t)||Lt(t)&&V_.test(s))&&n(t,s);else{r!=null&&r.buildGraph&&fn(t[s])&&(t[s]={});const a=t[s];if(!a)return;const l=!!(i.length>1&&V_.test(i[1]));a instanceof Array&&(r!=null&&r.descendArray)&&!l?a.forEach(f=>Pl(f,o,n,r)):Pl(a,o,n,r)}}function PM(t,e,n){Pl(t,e,(r,i)=>{r[i]=Ih(n)?n(r[i]):n},{buildGraph:!0})}function K_(t,e,n){Pl(t,e,(r,i)=>{if(r instanceof Array){if(/^\d+$/.test(i))r.splice(parseInt(i),1);else if(n&&n.descendArray)for(const s of r)wt(s)&&delete s[i]}else wt(r)&&delete r[i]},n)}const RM=/^\$[a-zA-Z0-9_]+$/;function Ko(t){return RM.test(t)}function qE(t){if(zE.has(Al(t).toLowerCase()))return Cf(t)?{$regex:t}:{$eq:t};if(Sh(t)){if(!Object.keys(t).some(Ko))return{$eq:t};if(er(t,"$regex")){const n=Object.assign({},t);return n.$regex=new RegExp(t.$regex,t.$options),delete n.$options,n}}return t}var vs;(function(t){t.CLONE_ALL="CLONE_ALL",t.CLONE_INPUT="CLONE_INPUT",t.CLONE_OUTPUT="CLONE_OUTPUT",t.CLONE_OFF="CLONE_OFF"})(vs||(vs={}));class ko{constructor(e,n,r,i=Date.now()){this._opts=e,this._root=n,this._local=r,this.timestamp=i,this.update(n,r)}static init(e,n,r){return e instanceof ko?new ko(e._opts,fn(e.root)?n:e.root,Object.assign({},e.local,r)):new ko(e,n,r)}update(e,n){var r;return this._root=e,this._local=n&&Object.assign({},n,{variables:Object.assign({},(r=this._local)===null||r===void 0?void 0:r.variables,n==null?void 0:n.variables)}),this}getOptions(){return Object.freeze(Object.assign(Object.assign({},this._opts),{context:jo.from(this._opts.context)}))}get root(){return this._root}get local(){return this._local}get idKey(){return this._opts.idKey}get collation(){var e;return(e=this._opts)===null||e===void 0?void 0:e.collation}get processingMode(){var e;return((e=this._opts)===null||e===void 0?void 0:e.processingMode)||vs.CLONE_OFF}get useStrictMode(){var e;return(e=this._opts)===null||e===void 0?void 0:e.useStrictMode}get scriptEnabled(){var e;return(e=this._opts)===null||e===void 0?void 0:e.scriptEnabled}get useGlobalContext(){var e;return(e=this._opts)===null||e===void 0?void 0:e.useGlobalContext}get hashFunction(){var e;return(e=this._opts)===null||e===void 0?void 0:e.hashFunction}get collectionResolver(){var e;return(e=this._opts)===null||e===void 0?void 0:e.collectionResolver}get jsonSchemaValidator(){var e;return(e=this._opts)===null||e===void 0?void 0:e.jsonSchemaValidator}get variables(){var e;return(e=this._opts)===null||e===void 0?void 0:e.variables}get context(){var e;return(e=this._opts)===null||e===void 0?void 0:e.context}}function Lg(t){return t instanceof ko?t.getOptions():Object.freeze(Object.assign(Object.assign({idKey:"_id",scriptEnabled:!0,useStrictMode:!0,useGlobalContext:!0,processingMode:vs.CLONE_OFF},t),{context:t!=null&&t.context?jo.from(t==null?void 0:t.context):jo.init({})}))}var Ye;(function(t){t.ACCUMULATOR="accumulator",t.EXPRESSION="expression",t.PIPELINE="pipeline",t.PROJECTION="projection",t.QUERY="query",t.WINDOW="window"})(Ye||(Ye={}));class jo{constructor(e){this.operators={[Ye.ACCUMULATOR]:{},[Ye.EXPRESSION]:{},[Ye.PIPELINE]:{},[Ye.PROJECTION]:{},[Ye.QUERY]:{},[Ye.WINDOW]:{}};for(const[n,r]of Object.entries(e))this.addOperators(n,r)}static init(e={}){return new jo(e)}static from(e){return new jo(e.operators)}addOperators(e,n){for(const[r,i]of Object.entries(n))this.getOperator(e,r)||(this.operators[e][r]=i);return this}addAccumulatorOps(e){return this.addOperators(Ye.ACCUMULATOR,e)}addExpressionOps(e){return this.addOperators(Ye.EXPRESSION,e)}addQueryOps(e){return this.addOperators(Ye.QUERY,e)}addPipelineOps(e){return this.addOperators(Ye.PIPELINE,e)}addProjectionOps(e){return this.addOperators(Ye.PROJECTION,e)}addWindowOps(e){return this.addOperators(Ye.WINDOW,e)}getOperator(e,n){return e in this.operators&&this.operators[e][n]||null}}const ho=jo.init();function W_(t,e){for(const[n,r]of Object.entries(e)){Yt(Ih(r)&&Ko(n),`'${n}' is not a valid operator`);const i=Do(t,n,null);Yt(!i||r===i,`${n} already exists for '${t}' operators. Cannot change operator function once registered.`)}switch(t){case Ye.ACCUMULATOR:ho.addAccumulatorOps(e);break;case Ye.EXPRESSION:ho.addExpressionOps(e);break;case Ye.PIPELINE:ho.addPipelineOps(e);break;case Ye.PROJECTION:ho.addProjectionOps(e);break;case Ye.QUERY:ho.addQueryOps(e);break;case Ye.WINDOW:ho.addWindowOps(e);break}}function Do(t,e,n){const{context:r,useGlobalContext:i}=n||{},s=r?r.getOperator(t,e):null;return!s&&i?ho.getOperator(t,e):s}const q_={$$ROOT(t,e,n){return n.root},$$CURRENT(t,e,n){return t},$$REMOVE(t,e,n){},$$NOW(t,e,n){return new Date(n.timestamp)}},$y={$$KEEP(t,e,n){return t},$$PRUNE(t,e,n){},$$DESCEND(t,e,n){if(!er(e,"$cond"))return t;let r;for(const[i,s]of Object.entries(t))if(Sh(s)){if(s instanceof Array){const o=[];for(let a of s)wt(a)&&(a=H_(a,e,n.update(a))),fn(a)||o.push(a);r=o}else r=H_(s,e,n.update(s));fn(r)?delete t[i]:t[i]=r}return t}};function Zr(t,e,n,r){var i;const s=ko.init(r,t);if(n=n||"",Ko(n)){const o=Do(Ye.EXPRESSION,n,r);if(o)return o(t,e,s);const a=Do(Ye.ACCUMULATOR,n,r);if(a)return t instanceof Array||(t=Zr(t,e,null,s),e=null),Yt(t instanceof Array,`'${n}' target must be an array.`),a(t,e,s.update(null,s.local));throw new Error(`operator '${n}' is not registered`)}if(Ki(e)&&e.length>0&&e[0]==="$"){if(er($y,e))return e;let o=s.root;const a=e.split(".");if(er(q_,a[0]))o=q_[a[0]](t,null,s),e=e.slice(a[0].length+1);else if(a[0].slice(0,2)==="$$"){o=Object.assign({},s.variables,{this:t},(i=s.local)===null||i===void 0?void 0:i.variables);const l=a[0].slice(2);Yt(er(o,l),`Use of undefined variable: ${l}`),e=e.slice(2)}else e=e.slice(1);return e===""?o:lu(o,e)}if(Lt(e))return e.map(o=>Zr(t,o,null,s));if(wt(e)){const o={};for(const[a,l]of Object.entries(e))if(o[a]=Zr(t,l,a,s),[Ye.EXPRESSION,Ye.ACCUMULATOR].some(f=>!!Do(f,a,r)))return Yt(Object.keys(e).length===1,"Invalid aggregation expression '"+JSON.stringify(e)+"'"),o[a];return o}return e}function H_(t,e,n){const r=Zr(t,e,null,n);return er($y,r)?$y[r](t,e,n):r}function qa(t){return t instanceof Q_?t:new Q_(t)}function TM(...t){let e=0;return qa(()=>{for(;e{const i=r.next();if(i.done)throw jy;return i.value}}else if(e instanceof Array){const r=e,i=r.length;let s=0;n=()=>{if(s0?this.push(oi.TAKE,e):this}drop(e){return e>0?this.push(oi.DROP,e):this}transform(e){const n=this;let r;return qa(()=>(r||(r=qa(e(n.value()))),r.next()))}value(){return this.isDone||(this.isDone=this.getNext(!0).done),this.yieldedValues}each(e){for(;;){const n=this.next();if(n.done)break;if(e(n.value)===!1)return!1}return!0}reduce(e,n){let r=this.next();for(n===void 0&&!r.done&&(n=r.value,r=this.next());!r.done;)n=e(n,r.value),r=this.next();return n}size(){return this.reduce((e,n)=>++e,0)}[Symbol.iterator](){return this}}class FM{constructor(e,n){this.pipeline=e,this.options=Lg(n)}stream(e){let n=qa(e);const r=this.options.processingMode;(r==vs.CLONE_ALL||r==vs.CLONE_INPUT)&&n.map(Ty);const i=new Array;if(!uu(this.pipeline))for(const s of this.pipeline){const o=Object.keys(s),a=o[0],l=Do(Ye.PIPELINE,a,this.options);Yt(o.length===1&&!!l,`invalid pipeline operator ${a}`),i.push(a),n=l(n,s[a],this.options)}return(r==vs.CLONE_OUTPUT||r==vs.CLONE_ALL&&Fg([["$group","$unwind"],i]).length)&&n.map(Ty),n}run(e){return this.stream(e).value()}}class LM{constructor(e,n,r,i){this.source=e,this.predicate=n,this.projection=r,this.options=i,this.operators=[],this.result=null,this.buffer=[]}fetch(){return this.result?this.result:(wt(this.projection)&&this.operators.push({$project:this.projection}),this.result=qa(this.source).filter(this.predicate),this.operators.length>0&&(this.result=new FM(this.operators,this.options).stream(this.result)),this.result)}fetchAll(){const e=qa([...this.buffer]);return this.buffer=[],TM(e,this.fetch())}all(){return this.fetchAll().value()}count(){return this.all().length}skip(e){return this.operators.push({$skip:e}),this}limit(e){return this.operators.push({$limit:e}),this}sort(e){return this.operators.push({$sort:e}),this}collation(e){return this.options=Object.assign(Object.assign({},this.options),{collation:e}),this}next(){if(this.buffer.length>0)return this.buffer.pop();const e=this.fetch().next();if(!e.done)return e.value}hasNext(){if(this.buffer.length>0)return!0;const e=this.fetch().next();return e.done?!1:(this.buffer.push(e.value),!0)}map(e){return this.all().map(e)}forEach(e){this.all().forEach(e)}[Symbol.iterator](){return this.fetchAll()}}class Qs{constructor(e,n){this.condition=e,this.options=Lg(n),this.compiled=[],this.compile()}compile(){Yt(wt(this.condition),`query criteria must be an object: ${JSON.stringify(this.condition)}`);const e={};for(const[n,r]of Object.entries(this.condition)){if(n==="$where")Object.assign(e,{field:n,expr:r});else if(Wa(["$and","$or","$nor","$expr","$jsonSchema"],n))this.processOperator(n,n,r);else{Yt(!Ko(n),`unknown top level operator: ${n}`);for(const[i,s]of Object.entries(qE(r)))this.processOperator(n,i,s)}e.field&&this.processOperator(e.field,e.field,e.expr)}}processOperator(e,n,r){const i=Do(Ye.QUERY,n,this.options);if(!i)throw new Error(`unknown operator ${n}`);const s=i(e,r,this.options);this.compiled.push(s)}test(e){for(let n=0,r=this.compiled.length;nthis.test(r),n||{},this.options)}remove(e){return e.reduce((n,r)=>(this.test(r)||n.push(r),n),[])}}const $M=(t,e,n)=>{if(uu(e)||!wt(e))return t;let r=Bn;const i=n.collation;return wt(i)&&Ki(i.locale)&&(r=UM(i)),t.transform(s=>{const o=Object.keys(e);for(const a of o.reverse()){const l=CM(s,h=>lu(h,a),n.hashFunction),f=Array.from(l.keys()).sort(r);e[a]===-1&&f.reverse(),s=[],f.reduce((h,p)=>Gl(h,l.get(p)),s)}return s})},jM={1:"base",2:"accent",3:"variant"};function UM(t){const e={sensitivity:jM[t.strength||3],caseFirst:t.caseFirst==="off"?"false":t.caseFirst||"false",numeric:t.numericOrdering||!1,ignorePunctuation:t.alternate==="shifted"};(t.caseLevel||!1)===!0&&(e.sensitivity==="base"&&(e.sensitivity="case"),e.sensitivity==="accent"&&(e.sensitivity="variant"));const n=new Intl.Collator(t.locale,e);return(r,i)=>{if(!Ki(r)||!Ki(i))return Bn(r,i);const s=n.compare(r,i);return s<0?-1:s>0?1:0}}function In(t){const e=(n,r,i)=>{const s={unwrapArray:!0},o=Math.max(1,n.split(".").length-1);return a=>{const l=lu(a,n,s);return t(l,r,Object.assign(Object.assign({},i),{depth:o}))}};return e.op="query",e}function HE(t,e,n){if(Wi(t,e)||fn(t)&&fn(e))return!0;if(t instanceof Array){const r=Wi.bind(null,e);return t.some(r)||KE(t,n==null?void 0:n.depth).some(r)}return!1}function zM(t,e,n){return!HE(t,e,n)}function QE(t,e,n){return fn(t)?e.some(r=>r===null):Fg([Yl(t),e],n==null?void 0:n.hashFunction).length>0}function VM(t,e,n){return!QE(t,e,n)}function KM(t,e,n){return Eh(t,e,(r,i)=>Bn(r,i)<0)}function WM(t,e,n){return Eh(t,e,(r,i)=>Bn(r,i)<=0)}function qM(t,e,n){return Eh(t,e,(r,i)=>Bn(r,i)>0)}function HM(t,e,n){return Eh(t,e,(r,i)=>Bn(r,i)>=0)}function QM(t,e,n){return Yl(t).some(r=>e.length===2&&r%e[0]===e[1])}function YM(t,e,n){const r=Yl(t),i=s=>Ki(s)&&IM(e.exec(s),n==null?void 0:n.useStrictMode);return r.some(i)||KE(r,1).some(i)}function GM(t,e,n){return(e===!1||e===0)&&t===void 0||(e===!0||e===1)&&t!==void 0}function JM(t,e,n){if(!Lt(t)||!Lt(e)||!t.length||!e.length)return!1;let r=!0;for(const i of e){if(!r)break;wt(i)&&Wa(Object.keys(i),"$elemMatch")?r=YE(t,i.$elemMatch,n):i instanceof RegExp?r=t.some(s=>typeof s=="string"&&i.test(s)):r=t.some(s=>Wi(i,s))}return r}function XM(t,e,n){return Array.isArray(t)&&t.length===e}function ZM(t){return Ko(t)&&["$and","$or","$nor"].indexOf(t)===-1}function YE(t,e,n){if(Lt(t)&&!uu(t)){let r=o=>o,i=e;Object.keys(e).every(ZM)&&(i={temp:e},r=o=>({temp:o}));const s=new Qs(i,n);for(let o=0,a=t.length;ot===null,G_=t=>Yn(t)&&t>=mM&&t<=pM&&t.toString().indexOf(".")===-1,J_=t=>Yn(t)&&t>=vM&&t<=yM&&t.toString().indexOf(".")===-1,e2={array:Lt,bool:um,boolean:um,date:My,decimal:Yn,double:Yn,int:G_,long:J_,number:Yn,null:Y_,object:wt,regex:Cf,regexp:Cf,string:Ki,undefined:fn,function:t=>{throw new Error("unsupported type key `function`.")},1:Yn,2:Ki,3:wt,4:Lt,6:fn,8:um,9:My,10:Y_,11:Cf,16:G_,18:J_,19:Yn};function X_(t,e,n){const r=e2[e];return r?r(t):!1}function t2(t,e,n){return Array.isArray(e)?e.findIndex(r=>X_(t,r))>=0:X_(t,e)}function Eh(t,e,n){return Yl(t).some(r=>Al(r)===Al(e)&&n(r,e))}const Z_=(t,e)=>{const n={};return t.split("").forEach((r,i)=>n[r]=e*(i+1)),n};Object.assign(Object.assign(Object.assign({},Z_("ABCDEFGHIKLM",1)),Z_("NOPQRSTUVWXY",-1)),{Z:0});const eb={undefined:null,null:null,NaN:NaN,Infinity:new Error,"-Infinity":new Error};function ar(t,e=eb){const n=Object.assign({},eb,e),r=new Set(Object.keys(n));return(i,s,o)=>{const a=Zr(i,s,null,o);if(r.has(`${a}`)){const l=n[`${a}`];if(l instanceof Error)throw new Error(`cannot apply $${t.name} to -inf, value must in (-inf,inf)`);return l}return t(a)}}ar(Math.acos,{Infinity:1/0,0:new Error});ar(Math.acosh,{Infinity:1/0,0:new Error});ar(Math.asin);ar(Math.asinh,{Infinity:1/0,"-Infinity":-1/0});ar(Math.atan);ar(Math.atanh,{1:1/0,"-1":-1/0});ar(Math.cos);ar(Math.cosh,{"-Infinity":1/0,Infinity:1/0});const n2=Math.PI/180;ar(t=>t*n2,{Infinity:1/0,"-Infinity":1/0});const r2=180/Math.PI;ar(t=>t*r2,{Infinity:1/0,"-Infinity":-1/0});ar(Math.sin);ar(Math.sinh,{"-Infinity":-1/0,Infinity:1/0});ar(Math.tan);const i2=(t,e,n)=>{if(uu(e))return t;let r=Object.keys(e),i=!1;GE(e,n);const s=n.idKey;if(Wa(r,s)){const a=e[s];(a===0||a===!1)&&(r=r.filter(VE.bind(null,[s])),i=r.length==0)}else r.push(s);const o=ko.init(n);return t.map(a=>Uy(a,e,o.update(a),r,i))};function Uy(t,e,n,r,i){let s={},o=!1,a=!1;const l=[];i&&l.push(n.idKey);for(const f of r){let h;const p=e[f];if(f!==n.idKey&&Wa([0,!1],p)&&(a=!0),f===n.idKey&&uu(p))h=t[f];else if(Ki(p))h=Zr(t,p,f,n);else if(!Wa([1,!0],p))if(p instanceof Array)h=p.map(w=>{const I=Zr(t,w,null,n);return fn(I)?null:I});else if(wt(p)){const w=p,I=Object.keys(p),E=I.length==1?I[0]:"",$=Do(Ye.PROJECTION,E,n);if($)E==="$slice"?Yl(w[E]).every(Yn)?(h=$(t,w[E],f,n),o=!0):h=Zr(t,w,f,n):h=$(t,w[E],f,n);else if(Ko(E))h=Zr(t,w[E],E,n);else if(er(t,f)){GE(w,n);let S=t[f];S instanceof Array?h=S.map(_=>Uy(_,w,n,I,!1)):(S=wt(S)?S:t,h=Uy(S,w,n,I,!1))}else h=Zr(t,p,null,n)}else{l.push(f);continue}const y=Af(t,f,{preserveMissing:!0});y!==void 0&&Ny(s,y,{flatten:!0}),VE([0,1,!1,!0],p)&&(h===void 0?K_(s,f,{descendArray:!0}):PM(s,f,h))}if(Ly(s),(o||a||i)&&(s=Gl({},t,s),l.length>0))for(const f of l)K_(s,f,{descendArray:!0});return s}function GE(t,e){const n=[!1,!1];for(const[r,i]of Object.entries(t)){if(r===(e==null?void 0:e.idKey))return;i===0||i===!1?n[0]=!0:(i===1||i===!0)&&(n[1]=!0),Yt(!(n[0]&&n[1]),"Projection cannot have a mix of inclusion and exclusion.")}}const s2=(t,e,n)=>{Yt(Lt(e),"Invalid expression: $and expects value to be an Array.");const r=e.map(i=>new Qs(i,n));return i=>r.every(s=>s.test(i))},JE=(t,e,n)=>{Yt(Lt(e),"Invalid expression. $or expects value to be an Array");const r=e.map(i=>new Qs(i,n));return i=>r.some(s=>s.test(i))},o2=(t,e,n)=>{Yt(Lt(e),"Invalid expression. $nor expects value to be an array.");const r=JE("$or",e,n);return i=>!r(i)},a2=(t,e,n)=>{const r={};r[t]=qE(e);const i=new Qs(r,n);return s=>!i.test(s)},u2=In(HE),l2=In(qM),c2=In(HM),f2=In(QE),d2=In(KM),h2=In(WM),p2=In(zM),m2=In(VM),y2=In(QM),v2=In(YM);In(JM);const g2=In(YE),w2=In(XM),_2=In(GM),b2=In(t2);var tb=!1;function S2(t){return tb||(W_(Ye.PIPELINE,{$sort:$M,$project:i2}),W_(Ye.QUERY,{$and:s2,$eq:u2,$elemMatch:g2,$exists:_2,$gt:l2,$gte:c2,$in:f2,$lt:d2,$lte:h2,$ne:p2,$nin:m2,$mod:y2,$nor:o2,$not:a2,$or:JE,$regex:v2,$size:w2,$type:b2}),tb=!0),new Qs(t)}function Rl(t,e){var n=$n(t.primaryKey);e=$e(e);var r=Mn(e);if(typeof r.skip!="number"&&(r.skip=0),r.selector?(r.selector=r.selector,Object.entries(r.selector).forEach(([f,h])=>{(typeof h!="object"||h===null)&&(r.selector[f]={$eq:h})})):r.selector={},r.index){var i=ja(r.index);i.includes(n)||i.push(n),r.index=i}if(r.sort){var l=r.sort.find(f=>TP(f)===n);l||(r.sort=r.sort.slice(0),r.sort.push({[n]:"asc"}))}else if(r.index)r.sort=r.index.map(f=>({[f]:"asc"}));else{if(t.indexes){var s=new Set;Object.entries(r.selector).forEach(([f,h])=>{var p=!1;typeof h=="object"&&h!==null?p=!!Object.keys(h).find(y=>Mg.has(y)):p=!0,p&&s.add(f)});var o=-1,a;t.indexes.forEach(f=>{var h=mg(f)?f:[f],p=h.findIndex(y=>!s.has(y));p>0&&p>o&&(o=p,a=h)}),a&&(r.sort=a.map(f=>({[f]:"asc"})))}r.sort||(r.sort=[{[n]:"asc"}])}return r}function $g(t,e){if(!e.sort)throw le("SNH",{query:e});var n=[];e.sort.forEach(i=>{var s=Object.keys(i)[0],o=Object.values(i)[0];n.push({key:s,direction:o,getValueFn:XI(s)})});var r=(i,s)=>{for(var o=0;on.test(i);return r}function I2(t,e){return!e.sort||e.sort.length===0?[t]:e.sort.map(n=>Object.keys(n)[0])}var E2=new WeakMap;function O2(t){return Br(E2,t,()=>{var e=t.collection,n=Rl(e.storageInstance.schema,Mn(t.mangoQuery)),r=e.schema.primaryPath,i=$g(e.schema.jsonSchema,n),s=(f,h)=>{var p={docA:f,docB:h,rxQuery:t};return i(p.docA,p.docB)},o=Oh(e.schema.jsonSchema,n),a=f=>{var h={doc:f,rxQuery:t};return o(h.doc)},l={primaryKey:t.collection.schema.primaryPath,skip:n.skip,limit:n.limit,sortFields:I2(r,n),sortComparator:s,queryMatcher:a};return l})}function k2(t,e){if(!t.collection.database.eventReduce)return{runFullQueryAgain:!0};var n=O2(t),r=ye(t._result).docsData.slice(0),i=ye(t._result).docsDataMap,s=!1,o=e.map(l=>fT(l)).filter(JI),a=o.find(l=>{var f={queryParams:n,changeEvent:l,previousResults:r,keyDocumentMap:i},h=oM(f);if(h==="runFullQueryAgain")return!0;if(h!=="doNothing")return s=!0,aM(h,n,l,r,i),!1});return a?{runFullQueryAgain:!0}:{runFullQueryAgain:!1,changed:s,newResults:r}}var D2=function(){function t(){this._map=new Map}var e=t.prototype;return e.getByQuery=function(r){var i=r.toString();return Br(this._map,i,()=>r)},t}();function x2(){return new D2}function nb(t,e){e.uncached=!0;var n=e.toString();t._map.delete(n)}function C2(t){return t.refCount$.observers.length}var A2=100,P2=30*1e3,R2=(t,e)=>(n,r)=>{if(!(r._map.size0)){if(a._lastEnsureEqual===0&&a._creationTimep._lastEnsureEqual-y._lastEnsureEqual),h=f.slice(0,l);h.forEach(p=>nb(r,p))}}},XE=R2(A2,P2),cm=new WeakSet;function T2(t){cm.has(t)||(cm.add(t),QP().then(()=>GP(200)).then(()=>{t.destroyed||t.cacheReplacementPolicy(t,t._queryCache),cm.delete(t)}))}var ZE=function(){function t(n,r,i){this.cacheItemByDocId=new Map,this.registry=typeof FinalizationRegistry=="function"?new FinalizationRegistry(s=>{var o=s.docId,a=this.cacheItemByDocId.get(o);a&&(a.byRev.delete(s.revisionHeight),a.byRev.size===0&&this.cacheItemByDocId.delete(o))}):void 0,this.registerIdleTasks=[],this.primaryPath=n,this.changes$=r,this.documentCreator=i,r.subscribe(s=>{var o=s.documentId,a=this.cacheItemByDocId.get(o);if(a){var l=xg(s);a.last=l}})}var e=t.prototype;return e.getLatestDocumentData=function(r){var i=Bo(this.cacheItemByDocId,r);return i.last},e.getLatestDocumentDataIfExists=function(r){var i=this.cacheItemByDocId.get(r);if(i)return i.last},Ks(t,[{key:"getCachedRxDocument",get:function(){var n=M2(this);return xs(this,"getCachedRxDocument",n)}}]),t}();function M2(t){var e=t.primaryPath,n=t.cacheItemByDocId,r=t.registry,i=it.deepFreezeWhenDevMode,s=t.documentCreator,o=a=>{var l=a[e],f=C_(a._rev),h=Br(n,l,()=>N2(a)),p=h.byRev,y=p.get(f),w=y?y.deref():void 0;return w||(a=i(a),w=s(a),p.set(f,F2(w)),r&&(t.registerIdleTasks.push(w),t.registerIdlePromise||(t.registerIdlePromise=gg().then(()=>{t.registerIdlePromise=void 0;var I=t.registerIdleTasks;I.length!==0&&(t.registerIdleTasks=[],I.forEach(E=>{r.register(E,{docId:E.primary,revisionHeight:C_(E.revision)})}))})))),w};return o}function eO(t,e){for(var n=t.getCachedRxDocument,r=[],i=0;ie._data))}},{key:"docsDataMap",get:function(){var e=new Map;return this.documents.forEach(n=>{e.set(n.primary,n._data)}),xs(this,"docsDataMap",e)}},{key:"docsMap",get:function(){for(var e=new Map,n=this.documents,r=0;r{var p=this.collection._docCache.getLatestDocumentDataIfExists(h);if(p){if(!p._deleted){var y=this.collection._docCache.getCachedRxDocument(p);o.set(h,y)}}else a.push(h)}),a.length>0){var l=await this.collection.storageInstance.findDocumentsById(a,!1);l.forEach(h=>{var p=this.collection._docCache.getCachedRxDocument(h);o.set(p.primary,p)})}return o}var f=rO(this);return f.then(h=>(this._lastExecEnd=Ft(),h))},e.exec=function(r){if(r&&this.op!=="findOne")throw le("QU9",{collection:this.collection.name,query:this.mangoQuery,op:this.op});return ib(this).then(()=>As(this.$)).then(i=>{if(!i&&r)throw le("QU10",{collection:this.collection.name,query:this.mangoQuery,op:this.op});return i})},e.toString=function(){var r=fd({op:this.op,query:this.mangoQuery,other:this.other},!0),i=JSON.stringify(r);return this.toString=()=>i,i},e.getPreparedQuery=function(){var r={rxQuery:this,mangoQuery:Rl(this.collection.schema.jsonSchema,this.mangoQuery)};r.mangoQuery.selector._deleted={$eq:!1},r.mangoQuery.index&&r.mangoQuery.index.unshift("_deleted"),Fr("prePrepareQuery",r);var i=Jl(this.collection.schema.jsonSchema,r.mangoQuery);return this.getPreparedQuery=()=>i,i},e.doesDocumentDataMatch=function(r){return r._deleted?!1:this.queryMatcher(r)},e.remove=function(){return this.exec().then(r=>Array.isArray(r)?Promise.all(r.map(i=>i.remove())):r.remove())},e.update=function(r){throw pt("update")},e.where=function(r){throw pt("query-builder")},e.sort=function(r){throw pt("query-builder")},e.skip=function(r){throw pt("query-builder")},e.limit=function(r){throw pt("query-builder")},Ks(t,[{key:"$",get:function(){if(!this._$){var n=this.collection.$.pipe(lt(r=>!r.isLocal),Hl(null),Lr(()=>ib(this)),Mt(()=>this._result),Pi(Ai),Ms((r,i)=>!!(r&&r.time===ye(i).time)),lt(r=>!!r),Mt(r=>{var i=ye(r);return this.op==="count"?i.count:this.op==="findOne"?i.documents.length===0?null:i.documents[0]:this.op==="findByIds"?i.docsMap:i.documents.slice(0)}));this._$=_T(n,this.refCount$.pipe(lt(()=>!1)))}return this._$}},{key:"$$",get:function(){var n=this.collection.database.getReactivityFactory();return n.fromObservable(this.$,void 0)}},{key:"queryMatcher",get:function(){var n=this.collection.schema.jsonSchema,r=Rl(this.collection.schema.jsonSchema,this.mangoQuery);return xs(this,"queryMatcher",Oh(n,r))}},{key:"asRxQuery",get:function(){return this}}]),t}();function tl(){return{selector:{}}}function z2(t){return t.collection._queryCache.getByQuery(t)}function na(t,e,n,r){Fr("preCreateRxQuery",{op:t,queryObj:e,collection:n,other:r});var i=new tO(t,e,n,r);return i=z2(i),T2(n),i}function nO(t){var e=t.asRxQuery.collection._changeEventBuffer.counter;return t._latestChangeEvent>=e}function ib(t){return t.collection.database.destroyed||nO(t)?Xn:(t._ensureEqualQueue=t._ensureEqualQueue.then(()=>V2(t)),t._ensureEqualQueue)}function V2(t){if(t._lastEnsureEqual=Ft(),t.collection.database.destroyed||nO(t))return Xn;var e=!1,n=!1;if(t._latestChangeEvent===-1&&(n=!0),!n){var r=t.asRxQuery.collection._changeEventBuffer.getFrom(t._latestChangeEvent+1);if(r===null)n=!0;else{t._latestChangeEvent=t.asRxQuery.collection._changeEventBuffer.counter;var i=t.asRxQuery.collection._changeEventBuffer.reduceByLastOfDoc(r);if(t.op==="count"){var s=ye(t._result).count,o=s;i.forEach(l=>{var f=l.previousDocumentData&&t.doesDocumentDataMatch(l.previousDocumentData),h=t.doesDocumentDataMatch(l.documentData);!f&&h&&o++,f&&!h&&o--}),o!==s&&(e=!0,t._setResultData(o))}else{var a=k2(t,i);a.runFullQueryAgain?n=!0:a.changed&&(e=!0,t._setResultData(a.newResults))}}}return n?t._execOverDatabase().then(l=>(t._latestChangeEvent=t.collection._changeEventBuffer.counter,typeof l=="number"?((!t._result||l!==t._result.count)&&(e=!0,t._setResultData(l)),e):((!t._result||!NP(t.collection.schema.primaryPath,l,t._result.docsData))&&(e=!0,t._setResultData(l)),e))):Promise.resolve(e)}function Jl(t,e){if(!e.sort)throw le("SNH",{query:e});var n=uM(t,e);return{query:e,queryPlan:n}}async function rO(t){var e=[],n=t.collection;if(t.isFindOneByIdQuery)if(Array.isArray(t.isFindOneByIdQuery)){var r=t.isFindOneByIdQuery;if(r=r.filter(h=>{var p=t.collection._docCache.getLatestDocumentDataIfExists(h);return p?(p._deleted||e.push(p),!1):!0}),r.length>0){var i=await n.storageInstance.findDocumentsById(r,!1);Ua(e,i)}}else{var s=t.isFindOneByIdQuery,o=t.collection._docCache.getLatestDocumentDataIfExists(s);if(!o){var a=await n.storageInstance.findDocumentsById([s],!1);a[0]&&(o=a[0])}o&&!o._deleted&&e.push(o)}else{var l=t.getPreparedQuery(),f=await n.storageInstance.query(l);e=f.documents}return e}function K2(t,e){if(!e.skip&&e.selector&&Object.keys(e.selector).length===1&&e.selector[t]){var n=e.selector[t];if(typeof n=="string")return n;if(Object.keys(n).length===1&&typeof n.$eq=="string"||Object.keys(n).length===1&&Array.isArray(n.$eq)&&!n.$eq.find(r=>typeof r!="string"))return n.$eq}return!1}var W2="_rxdb_internal";async function Xl(t,e){var n=await t.findDocumentsById([e],!1),r=n[0];if(r)return r}async function Tl(t,e,n){var r=await t.bulkWrite([e],n);if(r.error.length>0){var i=r.error[0];throw i}else{var s=r.success[0];return s}}function q2(t,e){var n=Xl(t,e),r=t.changeStream().pipe(Mt(i=>i.events.find(s=>s.documentId===e)),lt(i=>!!i),Mt(i=>Promise.resolve(ye(i).documentData)),Hl(n),Cl(i=>i),lt(i=>!!i));return r}function Ml(t){return Object.assign({},...t)}function iO(t,e,n){var r=e.documentData,i=e.previousDocumentData,s={documentId:e.documentId,collectionName:n?n.name:void 0,isLocal:t,operation:e.operation,documentData:it.deepFreezeWhenDevMode(r),previousDocumentData:it.deepFreezeWhenDevMode(i)};return s}function yd(t,e,n,r){if(r)throw r.status===409?le("CONFLICT",{collection:t.name,id:e,writeError:r,data:n}):r.status===422?le("VD2",{collection:t.name,id:e,writeError:r,data:n}):r}function sO(t,e,n,r,i,s,o){for(var a=!!t.schema.attachments,l=[],f=[],h=[],p=iu(10),y={id:p,events:[],checkpoint:null,context:i,startTime:Ft(),endTime:0},w=y.events,I=[],E=[],$=[],S=n.size>0,_,k=r.length,z=function(){var Q=r[W],H=Q.document,X=Q.previous,U=H[e],ee=H._deleted,ce=X&&X._deleted,de=void 0;S&&(de=n.get(U));var Pe;if(de){var Te=de._rev;if(!X||X&&Te!==X._rev){var Dt={isError:!0,status:409,documentId:U,writeRow:Q,documentInDb:de};return h.push(Dt),1}var G=a?fm(Q):Q;a&&(ee?X&&Object.keys(X._attachments).forEach(ft=>{E.push({documentId:U,attachmentId:ft,digest:ye(X)._attachments[ft].digest})}):(Object.entries(H._attachments).find(([ft,Ct])=>{var Vn=X?X._attachments[ft]:void 0;return!Vn&&!Ct.data&&(Pe={documentId:U,documentInDb:de,isError:!0,status:510,writeRow:Q,attachmentId:ft}),!0}),Pe||Object.entries(H._attachments).forEach(([ft,Ct])=>{var Vn=X?X._attachments[ft]:void 0;if(!Vn)I.push({documentId:U,attachmentId:ft,attachmentData:Ct,digest:Ct.digest});else{var tn=G.document._attachments[ft].digest;Ct.data&&Vn.digest!==tn&&$.push({documentId:U,attachmentId:ft,attachmentData:Ct,digest:Ct.digest})}}))),Pe?h.push(Pe):(a?(f.push(fm(G)),o&&o(H)):(f.push(G),o&&o(H)),_=G);var oe=null,ue=null,Re=null;if(ce&&!ee)Re="INSERT",oe=a?gs(H):H;else if(X&&!ce&&!ee)Re="UPDATE",oe=a?gs(H):H,ue=X;else if(ee)Re="DELETE",oe=ye(H),ue=X;else throw le("SNH",{args:{writeRow:Q}});var xt={documentId:U,documentData:oe,previousDocumentData:ue,operation:Re};w.push(xt)}else{var ot=!!ee;if(a&&Object.entries(H._attachments).forEach(([ft,Ct])=>{Ct.data?I.push({documentId:U,attachmentId:ft,attachmentData:Ct,digest:Ct.digest}):(Pe={documentId:U,isError:!0,status:510,writeRow:Q,attachmentId:ft},h.push(Pe))}),Pe||(a?(l.push(fm(Q)),s&&s(H)):(l.push(Q),s&&s(H)),_=Q),!ot){var ct={documentId:U,operation:"INSERT",documentData:a?gs(H):H,previousDocumentData:a&&X?gs(X):X};w.push(ct)}}},W=0;W{e._attachments[n]=Q2(r)}),e}function jg(t){var e=$e(t);return e._meta=$e(t._meta),e}function Ug(t,e,n){it.deepFreezeWhenDevMode(n);var r=$n(n.primaryKey);function i(o){var a=$e(o.document);if(a._meta=$e(a._meta),it.isDevMode()){a=oE(r,n,a);try{typeof structuredClone=="function"?structuredClone(o):JSON.parse(JSON.stringify(o))}catch{throw le("DOC24",{collection:e.collectionName,document:o.document})}o.previous,o.previous&&Object.keys(o.previous._meta).forEach(l=>{if(!Object.prototype.hasOwnProperty.call(o.document._meta,l))throw le("SNH",{dataBefore:o.previous,dataAfter:o.document})})}return a._meta.lwt=Ft(),a._rev=Ui(t.token,o.previous),{document:a,previous:o.previous}}var s={originalStorageInstance:e,schema:e.schema,internals:e.internals,collectionName:e.collectionName,databaseName:e.databaseName,options:e.options,bulkWrite(o,a){var l=o.map(f=>i(f));return t.lockedRun(()=>e.bulkWrite(l,a)).then(f=>{var h={error:[],success:f.success.slice(0)},p=f.error.filter(w=>w.status===409&&!w.writeRow.previous&&!w.writeRow.document._deleted&&ye(w.documentInDb)._deleted?!0:(h.error.push(w),!1));if(p.length>0){var y=p.map(w=>({previous:w.documentInDb,document:Object.assign({},w.writeRow.document,{_rev:Ui(t.token,w.documentInDb)})}));return t.lockedRun(()=>e.bulkWrite(y,a)).then(w=>(Ua(h.error,w.error),Ua(h.success,w.success),h))}return f})},query(o){return t.lockedRun(()=>e.query(o))},count(o){return t.lockedRun(()=>e.count(o))},findDocumentsById(o,a){return t.lockedRun(()=>e.findDocumentsById(o,a))},getAttachmentData(o,a,l){return t.lockedRun(()=>e.getAttachmentData(o,a,l))},getChangedDocumentsSince:e.getChangedDocumentsSince?(o,a)=>t.lockedRun(()=>e.getChangedDocumentsSince(ye(o),a)):void 0,cleanup(o){return t.lockedRun(()=>e.cleanup(o))},remove(){return t.storageInstances.delete(s),t.lockedRun(()=>e.remove())},close(){return t.storageInstances.delete(s),t.lockedRun(()=>e.close())},changeStream(){return e.changeStream()},conflictResultionTasks(){return e.conflictResultionTasks()},resolveConflictResultionTask(o){if(o.output.isEqual)return e.resolveConflictResultionTask(o);var a=Object.assign({},o.output.documentData,{_meta:Ws(),_rev:Nn(),_attachments:{}}),l=$e(a);return delete l._meta,delete l._rev,delete l._attachments,e.resolveConflictResultionTask({id:o.id,output:{isEqual:!1,documentData:l}})}};return t.storageInstances.add(s),s}function oO(t){if(t.schema.keyCompression)throw le("UT5",{args:{params:t}});if(vd(t.schema))throw le("UT6",{args:{params:t}});if(t.schema.attachments&&t.schema.attachments.compression)throw le("UT7",{args:{params:t}})}function vd(t){return!!(t.encrypted&&t.encrypted.length>0||t.attachments&&t.attachments.encrypted)}function Y2(t,e,n){var r=$n(t.schema.primaryKey),i=n?n.lwt:yg,s=n?n.id:"";return Rl(t.schema,{selector:{$or:[{"_meta.lwt":{$gt:i}},{"_meta.lwt":{$eq:i},[r]:{$gt:n?s:""}}],"_meta.lwt":{$gte:i}},sort:[{"_meta.lwt":"asc"},{[r]:"asc"}],skip:0,limit:e})}async function aO(t,e,n){if(t.getChangedDocumentsSince)return t.getChangedDocumentsSince(e,n);var r=$n(t.schema.primaryKey),i=Jl(t.schema,Y2(t,e,n)),s=await t.query(i),o=s.documents,a=AP(o);return{documents:o,checkpoint:a?{id:a[r],lwt:a._meta.lwt}:n||{id:"",lwt:0}}}var uO=function(){function t(n,r,i,s){this.queueByDocId=new Map,this.isRunning=!1,this.storageInstance=n,this.primaryPath=r,this.preWrite=i,this.postWrite=s}var e=t.prototype;return e.addWrite=function(r,i){var s=r[this.primaryPath],o=Br(this.queueByDocId,s,()=>[]),a=new Promise((l,f)=>{var h={lastKnownDocumentState:r,modifier:i,resolve:l,reject:f};ye(o).push(h),this.triggerRun()});return a},e.triggerRun=async function(){if(!(this.isRunning===!0||this.queueByDocId.size===0)){this.isRunning=!0;var r=[],i=this.queueByDocId;this.queueByDocId=new Map,await Promise.all(Array.from(i.entries()).map(async([o,a])=>{var l=G2(a.map(p=>p.lastKnownDocumentState)),f=l;for(var h of a)try{f=await h.modifier(Mn(f))}catch(p){h.reject(p),h.reject=()=>{},h.resolve=()=>{}}try{await this.preWrite(f,l)}catch(p){a.forEach(y=>y.reject(p));return}r.push({previous:l,document:f})}));var s=r.length>0?await this.storageInstance.bulkWrite(r,"incremental-write"):{error:[],success:[]};return await Promise.all(s.success.map(o=>{var a=o[this.primaryPath];this.postWrite(o);var l=Bo(i,a);l.forEach(f=>f.resolve(o))})),s.error.forEach(o=>{var a=o.documentId,l=Bo(i,a),f=_h(o);if(f){var h=Br(this.queueByDocId,a,()=>[]);l.reverse().forEach(y=>{y.lastKnownDocumentState=ye(f.documentInDb),ye(h).unshift(y)})}else{var p=aR(o);l.forEach(y=>y.reject(p))}}),this.isRunning=!1,this.triggerRun()}},t}();function sb(t){var e=async n=>{var r=MP(n);r._deleted=n._deleted;var i=await t(r),s=Object.assign({},i,{_meta:n._meta,_attachments:n._attachments,_rev:n._rev,_deleted:typeof i._deleted<"u"?i._deleted:n._deleted});return typeof s._deleted>"u"&&(s._deleted=!1),s};return e}function G2(t){var e=t[0],n=za(e._rev).height;return t.forEach(r=>{var i=za(r._rev).height;i>n&&(e=r,n=i)}),e}var kh={get primaryPath(){var t=this;if(t.isInstanceOfRxDocument)return t.collection.schema.primaryPath},get primary(){var t=this;if(t.isInstanceOfRxDocument)return t._data[t.primaryPath]},get revision(){var t=this;if(t.isInstanceOfRxDocument)return t._data._rev},get deleted$(){var t=this;if(t.isInstanceOfRxDocument)return t.$.pipe(Mt(e=>e._data._deleted))},get deleted$$(){var t=this,e=t.collection.database.getReactivityFactory();return e.fromObservable(t.deleted$,t.getLatest().deleted)},get deleted(){var t=this;if(t.isInstanceOfRxDocument)return t._data._deleted},getLatest(){var t=this.collection._docCache.getLatestDocumentData(this.primary);return this.collection._docCache.getCachedRxDocument(t)},get $(){var t=this;return t.collection.$.pipe(lt(e=>!e.isLocal),lt(e=>e.documentId===this.primary),Mt(e=>xg(e)),Hl(t.collection._docCache.getLatestDocumentData(this.primary)),Ms((e,n)=>e._rev===n._rev),Mt(e=>this.collection._docCache.getCachedRxDocument(e)),Pi(Ai))},get $$(){var t=this,e=t.collection.database.getReactivityFactory();return e.fromObservable(t.$,t.getLatest()._data)},get$(t){if(it.isDevMode()){if(t.includes(".item."))throw le("DOC1",{path:t});if(t===this.primaryPath)throw le("DOC2");if(this.collection.schema.finalFields.includes(t))throw le("DOC3",{path:t});var e=zi(this.collection.schema.jsonSchema,t);if(!e)throw le("DOC4",{path:t})}return this.$.pipe(Mt(n=>Ts(n,t)),Ms())},get$$(t){var e=this.get$(t),n=this.collection.database.getReactivityFactory();return n.fromObservable(e,this.getLatest().get(t))},populate(t){var e=zi(this.collection.schema.jsonSchema,t),n=this.get(t);if(!n)return vg;if(!e)throw le("DOC5",{path:t});if(!e.ref)throw le("DOC6",{path:t,schemaObj:e});var r=this.collection.database.collections[e.ref];if(!r)throw le("DOC7",{ref:e.ref,path:t,schemaObj:e});return e.type==="array"?r.findByIds(n).exec().then(i=>{var s=i.values();return Array.from(s)}):r.findOne(n).exec()},get(t){return Br(this._propertyCache,t,()=>{var e=Ts(this._data,t);if(typeof e!="object"||e===null||Array.isArray(e))return it.deepFreezeWhenDevMode(e);var n=this,r=new Proxy($e(e),{get(i,s){if(typeof s!="string")return i[s];var o=s.charAt(s.length-1);if(s.endsWith("$$")){var a=s.slice(0,-2);return n.get$$(zu(t+"."+a))}else if(o==="$"){var l=s.slice(0,-1);return n.get$(zu(t+"."+l))}else if(o==="_"){var f=s.slice(0,-1);return n.populate(zu(t+"."+f))}else return n.get(zu(t+"."+s))}});return r})},toJSON(t=!1){if(t)return it.deepFreezeWhenDevMode(this._data);var e=$e(this._data);return delete e._rev,delete e._attachments,delete e._deleted,delete e._meta,it.deepFreezeWhenDevMode(e)},toMutableJSON(t=!1){return Mn(this.toJSON(t))},update(t){throw pt("update")},incrementalUpdate(t){throw pt("update")},updateCRDT(t){throw pt("crdt")},putAttachment(){throw pt("attachments")},getAttachment(){throw pt("attachments")},allAttachments(){throw pt("attachments")},get allAttachments$(){throw pt("attachments")},async modify(t,e){var n=this._data,r=await sb(t)(n);return this._saveData(r,n)},incrementalModify(t,e){return this.collection.incrementalWriteQueue.addWrite(this._data,sb(t)).then(n=>this.collection._docCache.getCachedRxDocument(n))},patch(t){var e=this._data,n=Mn(e);return Object.entries(t).forEach(([r,i])=>{n[r]=i}),this._saveData(n,e)},incrementalPatch(t){return this.incrementalModify(e=>(Object.entries(t).forEach(([n,r])=>{e[n]=r}),e))},async _saveData(t,e){if(t=$e(t),this._data._deleted)throw le("DOC11",{id:this.primary,document:this});await cO(this.collection,t,e);var n=await this.collection.storageInstance.bulkWrite([{previous:e,document:t}],"rx-document-save-data"),r=n.error[0];return yd(this.collection,this.primary,t,r),await this.collection._runHooks("post","save",t,this),this.collection._docCache.getCachedRxDocument(n.success[0])},remove(){var t=this.collection;if(this.deleted)return Promise.reject(le("DOC13",{document:this,id:this.primary}));var e=$e(this._data),n;return t._runHooks("pre","remove",e,this).then(async()=>{e._deleted=!0;var r=await t.storageInstance.bulkWrite([{previous:this._data,document:e}],"rx-document-remove"),i=r.error[0];return yd(t,this.primary,e,i),r.success[0]}).then(r=>(n=r,this.collection._runHooks("post","remove",e,this))).then(()=>this.collection._docCache.getCachedRxDocument(n))},incrementalRemove(){return this.incrementalModify(async t=>(await this.collection._runHooks("pre","remove",t,this),t._deleted=!0,t)).then(async t=>(await this.collection._runHooks("post","remove",t._data,t),t))},destroy(){throw le("DOC14")}};function lO(t=kh){var e=function(r,i){this.collection=r,this._data=i,this._propertyCache=new Map,this.isInstanceOfRxDocument=!0};return e.prototype=t,e}function J2(t,e,n){var r=new t(e,n);return Fr("createRxDocument",r),r}function cO(t,e,n){return e._meta=Object.assign({},n._meta,e._meta),it.isDevMode()&&t.schema.validateChange(n,e),t._runHooks("pre","save",e,n)}var xo="collection",zg="storage-token",Pf="rx-migration-status",X2="RxInternalDocument",Vg=bh({version:0,title:X2,primaryKey:{key:"id",fields:["context","key"],separator:"|"},type:"object",properties:{id:{type:"string",maxLength:200},key:{type:"string"},context:{type:"string",enum:[xo,zg,Pf,"OTHER"]},data:{type:"object",additionalProperties:!0}},indexes:[],required:["key","context","data"],additionalProperties:!1,sharding:{shards:1,mode:"collection"}});function Ha(t,e){return qs(Vg,{key:t,context:e})}async function Kg(t){var e=Jl(t.schema,{selector:{context:xo,_deleted:{$eq:!1}},sort:[{id:"asc"}],skip:0}),n=await t.query(e),r=n.documents;return r}var fO="storageToken",Z2=Ha(fO,zg);async function eN(t){var e=iu(10),n=t.password?await t.hashFunction(JSON.stringify(t.password)):void 0,r={id:Z2,context:zg,key:fO,data:{rxdbVersion:t.rxdbVersion,token:e,instanceToken:t.token,passwordHash:n},_deleted:!1,_meta:Ws(),_rev:Nn(),_attachments:{}},i=await t.internalStore.bulkWrite([{document:r}],"internal-add-storage-token");if(i.success[0])return i.success[0];var s=ye(i.error[0]);if(s.isError&&_h(s)){var o=s;if(!tN(o.documentInDb.data.rxdbVersion,t.rxdbVersion))throw le("DM5",{args:{database:t.name,databaseStateVersion:o.documentInDb.data.rxdbVersion,codeVersion:t.rxdbVersion}});if(n&&n!==o.documentInDb.data.passwordHash)throw le("DB1",{passwordHash:n,existingPasswordHash:o.documentInDb.data.passwordHash});var a=o.documentInDb;return ye(a)}throw s}function tN(t,e){if(!t||e.includes("beta")&&e!==t)return!1;var n=t.split(".")[0],r=e.split(".")[0];return n===r}async function dO(t,e,n){if(t.schema.version!==n.version)throw le("SNH",{schema:n,version:t.schema.version,name:t.name,collection:t,args:{storageCollectionName:e}});for(var r=zy(t.name,t.schema.jsonSchema),i=Ha(r,xo);;){var s=await Xl(t.database.internalStore,i),o=Mn(ye(s)),a=o.data.connectedStorages.find(l=>l.collectionName===e&&l.schema.version===n.version);if(a)return;o.data.connectedStorages.push({collectionName:e,schema:n});try{await Tl(t.database.internalStore,{previous:ye(s),document:o},"add-connected-storage-to-collection")}catch(l){if(!_h(l))throw l}}}function zy(t,e){return t+"-"+e.version}function dm(t,e){return e=$e(e),e=dR(t,e),e=oE(t.primaryPath,t.jsonSchema,e),e._meta=Ws(),Object.prototype.hasOwnProperty.call(e,"_deleted")||(e._deleted=!1),Object.prototype.hasOwnProperty.call(e,"_attachments")||(e._attachments={}),Object.prototype.hasOwnProperty.call(e,"_rev")||(e._rev=Nn()),e}async function nN(t,e){e.multiInstance=t.multiInstance;var n=await t.storage.createStorageInstance(e);return n}async function hO(t,e,n,r,i,s,o){var a=await Kg(e),l=a.filter(y=>y.data.name===i),f=[];l.forEach(y=>{f.push({collectionName:y.data.name,schema:y.data.schema,isCollection:!0}),y.data.connectedStorages.forEach(w=>f.push({collectionName:w.collectionName,isCollection:!1,schema:w.schema}))});var h=new Set;if(f=f.filter(y=>{var w=y.collectionName+"||"+y.schema.version;return h.has(w)?!1:(h.add(w),!0)}),await Promise.all(f.map(async y=>{var w=await t.createStorageInstance({collectionName:y.collectionName,databaseInstanceToken:n,databaseName:r,multiInstance:!1,options:{},schema:y.schema,password:s,devMode:it.isDevMode()});await w.remove(),y.isCollection&&await Fo("postRemoveRxCollection",{storage:t,databaseName:r,collectionName:i})})),o){var p=l.map(y=>{var w=jg(y);return w._deleted=!0,w._meta.lwt=Ft(),w._rev=Ui(n,y),{previous:y,document:w}});await e.bulkWrite(p,"rx-database-remove-collection-all")}}var rN=function(){function t(n){this.subs=[],this.limit=100,this.counter=0,this.eventCounterMap=new WeakMap,this.buffer=[],this.collection=n,this.subs.push(this.collection.$.pipe(lt(r=>!r.isLocal)).subscribe(r=>this._handleChangeEvent(r)))}var e=t.prototype;return e._handleChangeEvent=function(r){for(this.counter++,this.buffer.push(r),this.eventCounterMap.set(r,this.counter);this.buffer.length>this.limit;)this.buffer.shift()},e.getArrayIndexByPointer=function(r){var i=this.buffer[0],s=this.eventCounterMap.get(i);if(ri(o))},e.reduceByLastOfDoc=function(r){return r.slice(0)},e.destroy=function(){this.subs.forEach(r=>r.unsubscribe())},t}();function iN(t){return new rN(t)}var sN=new WeakMap;function oN(t){var e=t.schema.getDocumentPrototype(),n=lN(t),r=kh,i={};return[e,n,r].forEach(s=>{var o=Object.getOwnPropertyNames(s);o.forEach(a=>{var l=Object.getOwnPropertyDescriptor(s,a),f=!0;(a.startsWith("_")||a.endsWith("_")||a.startsWith("$")||a.endsWith("$"))&&(f=!1),typeof l.value=="function"?Object.defineProperty(i,a,{get(){return l.value.bind(this)},enumerable:f,configurable:!1}):(l.enumerable=f,l.configurable=!1,l.writable&&(l.writable=!1),Object.defineProperty(i,a,l))})}),i}function aN(t){return Br(sN,t,()=>lO(oN(t)))}function uN(t,e){var n=J2(aN(t),t,it.deepFreezeWhenDevMode(e));return t._runHooksSync("post","create",e,n),Fr("postCreateRxDocument",n),n}function lN(t){var e={};return Object.entries(t.methods).forEach(([n,r])=>{e[n]=r}),e}async function gd(t,e){var n=qs(t.input.metaInstance.schema,{isCheckpoint:"1",itemId:e}),r=await t.input.metaInstance.findDocumentsById([n],!1),i=r[0];if(t.lastCheckpointDoc[e]=i,i)return i.checkpointData}async function wd(t,e,n){t.checkpointQueue=t.checkpointQueue.then(async()=>{var r=t.lastCheckpointDoc[e];if(n&&!t.events.canceled.getValue()&&(!r||JSON.stringify(r.checkpointData)!==JSON.stringify(n))){var i={id:"",isCheckpoint:"1",itemId:e,_deleted:!1,_attachments:{},checkpointData:n,_meta:Ws(),_rev:Nn()};for(i.id=qs(t.input.metaInstance.schema,i);!t.events.canceled.getValue();){if(r&&(i.checkpointData=Ml([r.checkpointData,i.checkpointData])),i._meta.lwt=Ft(),i._rev=Ui(await t.checkpointKey,r),t.events.canceled.getValue())return;var s=await t.input.metaInstance.bulkWrite([{previous:r,document:i}],"replication-set-checkpoint"),o=s.success[0];if(o){t.lastCheckpointDoc[e]=o;return}else{var a=s.error[0];if(a.status!==409)throw a;r=ye(a.documentInDb),i._rev=Ui(await t.checkpointKey,r)}}}}),await t.checkpointQueue}async function cN(t){var e=await t.hashFunction([t.identifier,t.forkInstance.databaseName,t.forkInstance.collectionName].join("||"));return"rx_storage_replication_"+e}function ob(t,e,n,r,i){var s=Object.assign({},r,{_attachments:e&&r._attachments?r._attachments:{},_meta:n?r._meta:{lwt:Ft()},_rev:n?r._rev:Nn()});return s._rev||(s._rev=Ui(t,i)),s}function cs(t,e,n){var r=$e(t);return e||delete r._attachments,n||(delete r._meta,delete r._rev),r}function Vy(t,e){return t.hasAttachments?e.map(n=>{var r=Mn(n.document);return r.docData=gs(r.docData),{document:r,previous:n.previous}}):e}function Ky(t){for(;;)if(t.underlyingPersistentStorage)t=t.underlyingPersistentStorage;else return t}var Rf="RxReplicationProtocolMetaData";function Wy(t,e){var n=uR(t),r={title:Rf,primaryKey:{key:"id",fields:["itemId","isCheckpoint"],separator:"|"},type:"object",version:t.version,additionalProperties:!1,properties:{id:{type:"string",minLength:1,maxLength:n+2},isCheckpoint:{type:"string",enum:["0","1"],minLength:1,maxLength:1},itemId:{type:"string",maxLength:n>4?n:4},checkpointData:{type:"object",additionalProperties:!0},docData:{type:"object",properties:t.properties},isResolvedConflict:{type:"string"}},keyCompression:t.keyCompression,required:["id","isCheckpoint","itemId"]};e&&(r.encrypted=["docData"]);var i=bh(r);return i}function pO(t,e){return t.input.metaInstance.findDocumentsById(e.map(n=>{var r=qs(t.input.metaInstance.schema,{itemId:n,isCheckpoint:"0"});return r}),!0).then(n=>{var r={};return Object.values(n).forEach(i=>{r[i.itemId]={docData:i.docData,metaDocument:i}}),r})}async function _d(t,e,n,r){var i=e[t.primaryPath],s=n?jg(n):{id:"",isCheckpoint:"0",itemId:i,docData:e,_attachments:{},_deleted:!1,_rev:Nn(),_meta:{lwt:0}};s.docData=e,r&&(s.isResolvedConflict=r),s._meta.lwt=Ft(),s.id=qs(t.input.metaInstance.schema,s),s._rev=Ui(await t.checkpointKey,n);var o={previous:n,document:s};return o}async function fN(t){if(t.input.initialCheckpoint&&t.input.initialCheckpoint.downstream){var e=await gd(t,"down");e||await wd(t,"down",t.input.initialCheckpoint.downstream)}var n=await t.input.hashFunction(t.input.identifier),r=t.input.replicationHandler,i=0,s=[];function o(I){t.stats.down.addNewTask=t.stats.down.addNewTask+1;var E={time:i++,task:I};s.push(E),t.streamQueue.down=t.streamQueue.down.then(()=>{for(var $=[];s.length>0;){t.events.active.down.next(!0);var S=ye(s.shift());if(!(S.time{t.events.active.down.next(!1),!t.firstSyncDone.down.getValue()&&!t.events.canceled.getValue()&&t.firstSyncDone.down.next(!0)})}if(o("RESYNC"),!t.events.canceled.getValue()){var a=r.masterChangeStream$.pipe(Lr(async I=>(await As(t.events.active.up.pipe(lt(E=>!E))),I))).subscribe(I=>{t.stats.down.masterChangeStreamEmit=t.stats.down.masterChangeStreamEmit+1,o(I)});As(t.events.canceled.pipe(lt(I=>!!I))).then(()=>a.unsubscribe())}var l=-1;async function f(){if(t.stats.down.downstreamResyncOnce=t.stats.down.downstreamResyncOnce+1,!t.events.canceled.getValue()){t.checkpointQueue=t.checkpointQueue.then(()=>gd(t,"down"));for(var I=await t.checkpointQueue,E=[];!t.events.canceled.getValue();){l=i++;var $=await r.masterChangesSince(I,t.input.pullBatchSize);if($.documents.length===0||(I=Ml([I,$.checkpoint]),E.push(w($.documents,I)),$.documents.length{if(S==="RESYNC")throw new Error("SNH");Ua(E,S.documents),$=Ml([$,S.checkpoint])}),w(E,ye($))}var p=un,y={docs:{}};function w(I,E){var $=t.primaryPath;return t.stats.down.persistFromMaster=t.stats.down.persistFromMaster+1,I.forEach(S=>{var _=S[$];y.docs[_]=S}),y.checkpoint=E,p=p.then(()=>{var S=y.docs;y.docs={};var _=y.checkpoint,k=Object.keys(S);if(t.events.canceled.getValue()||k.length===0)return un;var z=[],W={},Q={},H=[];return Promise.all([t.input.forkInstance.findDocumentsById(k,!0),pO(t,k)]).then(([X,U])=>{var ee=new Map;return X.forEach(ce=>ee.set(ce[$],ce)),Promise.all(k.map(async ce=>{var de=ee.get(ce),Pe=de?cs(de,t.hasAttachments,!1):void 0,ot=S[ce],ct=U[ce];if(ct&&de&&ct.metaDocument.isResolvedConflict===de._rev)return un;var Te=!ct||!Pe?!1:await t.input.conflictHandler({realMasterState:ct.docData,newDocumentState:Pe},"downstream-check-if-equal-0").then(Re=>Re.isEqual);if(!Te&&ct&&ct.docData._rev&&de&&de._meta[t.input.identifier]&&za(de._rev).height===de._meta[t.input.identifier]&&(Te=!0),de&&ct&&Te===!1||de&&!ct)return un;var Dt=Pe?await t.input.conflictHandler({realMasterState:ot,newDocumentState:Pe},"downstream-check-if-equal-1").then(Re=>Re.isEqual):!1;if(Pe&&Dt)return(!ct||Te===!1)&&H.push(await _d(t,Pe,ct?ct.metaDocument:void 0)),un;var G=Object.assign({},ot,de?{_meta:$e(de._meta),_attachments:t.hasAttachments&&ot._attachments?ot._attachments:{},_rev:Nn()}:{_meta:{lwt:Ft()},_rev:Nn(),_attachments:t.hasAttachments&&ot._attachments?ot._attachments:{}});if(ot._rev){var oe=de?za(de._rev).height+1:1;G._meta[t.input.identifier]=oe,t.input.keepMeta&&(G._rev=ot._rev)}t.input.keepMeta&&ot._meta&&(G._meta=ot._meta);var ue={previous:de,document:G};ue.document._rev=ue.document._rev?ue.document._rev:Ui(n,ue.previous),z.push(ue),W[ce]=ue,Q[ce]=await _d(t,ot,ct?ct.metaDocument:void 0)}))}).then(async()=>{if(z.length>0)return t.input.forkInstance.bulkWrite(z,await t.downstreamBulkWriteFlag).then(X=>{X.success.forEach(U=>{var ee=U[$];t.events.processed.down.next(W[ee]),H.push(Q[ee])}),X.error.forEach(U=>{U.status!==409&&t.events.error.next(le("RC_PULL",{writeError:U}))})})}).then(()=>{if(H.length>0)return t.input.metaInstance.bulkWrite(Vy(t,H),"replication-down-write-meta").then(X=>{X.error.forEach(U=>{t.events.error.next(le("RC_PULL",{id:U.documentId,writeError:U}))})})}).then(()=>{wd(t,"down",_)})}).catch(S=>t.events.error.next(S)),p}}var bd=function(t,e){var n=gs(t.newDocumentState),r=gs(t.realMasterState);return Va(n,r)?Promise.resolve({isEqual:!0}):Promise.resolve({isEqual:!1,documentData:t.realMasterState})};async function dN(t,e,n){var r=t.input.conflictHandler,i=await r(e,"replication-resolve-conflict");if(!i.isEqual){var s=Object.assign({},i.documentData,{_meta:$e(n._meta),_rev:Nn(),_attachments:$e(n._attachments)});return s._meta.lwt=Ft(),s._rev=Ui(await t.checkpointKey,n),{resolvedDoc:s,output:i}}}async function qy(t,e,n,r){if(!n._attachments||r&&!r._attachments)throw new Error("_attachments missing");var i=n[t],s=new Set(r&&r._attachments?Object.keys(r._attachments):[]);return await Promise.all(Object.entries(n._attachments).map(async([o,a])=>{if((!s.has(o)||r&&ye(r._attachments)[o].digest!==a.digest)&&!a.data){var l=await e.getAttachmentData(i,o,a.digest);a.data=l}})),n}async function hN(t){if(t.input.initialCheckpoint&&t.input.initialCheckpoint.upstream){var e=await gd(t,"up");e||await wd(t,"up",t.input.initialCheckpoint.upstream)}var n=t.input.replicationHandler;t.streamQueue.up=t.streamQueue.up.then(()=>f().then(()=>{h()}));var r=0,i=-1,s=[],o=Xn,a={docs:{}},l=t.input.forkInstance.changeStream().subscribe(async y=>{if(y.context!==await t.downstreamBulkWriteFlag)return t.stats.up.forkChangeStreamEmit=t.stats.up.forkChangeStreamEmit+1,s.push({task:y,time:r++}),t.events.active.up.getValue()||t.events.active.up.next(!0),t.input.waitBeforePersist?t.input.waitBeforePersist().then(()=>h()):h()});As(t.events.canceled.pipe(lt(y=>!!y))).then(()=>l.unsubscribe());async function f(){if(t.stats.up.upstreamInitialSync=t.stats.up.upstreamInitialSync+1,!t.events.canceled.getValue()){t.checkpointQueue=t.checkpointQueue.then(()=>gd(t,"up"));for(var y=await t.checkpointQueue,w=new Set,I=async function(){i=r++,w.size>3&&await Promise.race(Array.from(w));var S=await aO(t.input.forkInstance,t.input.pushBatchSize,y);if(S.documents.length===0)return 1;y=Ml([y,S.checkpoint]);var _=p(S.documents,ye(y));w.add(_),_.catch().then(()=>w.delete(_))};!t.events.canceled.getValue()&&!await I(););var E=await Promise.all(w),$=E.find(S=>!!S);$?await f():!t.firstSyncDone.up.getValue()&&!t.events.canceled.getValue()&&t.firstSyncDone.up.next(!0)}}function h(){if(t.events.canceled.getValue()||s.length===0){t.events.active.up.next(!1);return}t.stats.up.processTasks=t.stats.up.processTasks+1,t.events.active.up.next(!0),t.streamQueue.up=t.streamQueue.up.then(()=>{for(var y=[],w={};s.length>0;){var I=ye(s.shift());I.time$.documentData)),w=Ml([w,I.task.checkpoint]))}var E=y.length===0?Xn:p(y,w);return E.then(()=>{s.length===0?t.events.active.up.next(!1):h()})})}function p(y,w){return t.stats.up.persistToMaster=t.stats.up.persistToMaster+1,y.forEach(I=>{var E=I[t.primaryPath];a.docs[E]=I}),a.checkpoint=w,o=o.then(async()=>{if(t.events.canceled.getValue())return!1;var I=a.docs;a.docs={};var E=a.checkpoint,$=Object.keys(I);if($.length===0)return!1;var S=await pO(t,$),_={},k=[],z={},W={};if(await Promise.all($.map(async Te=>{var Dt=I[Te];W[Te]=Dt;var G=cs(Dt,t.hasAttachments,!!t.input.keepMeta),oe=S[Te];oe&&oe.metaDocument.isResolvedConflict!==Dt._rev&&(await t.input.conflictHandler({realMasterState:oe.docData,newDocumentState:G},"upstream-check-if-equal")).isEqual||oe&&oe.docData._rev&&za(Dt._rev).height===Dt._meta[t.input.identifier]||(k.push(Te),_[Te]={assumedMasterState:oe?oe.docData:void 0,newDocumentState:G},z[Te]=await _d(t,G,oe?oe.metaDocument:void 0))})),k.length===0)return!1;var Q=Object.values(_),H=new Set,X={},U=PP(Q,t.input.pushBatchSize);await Promise.all(U.map(async Te=>{t.hasAttachments&&await Promise.all(Te.map(async G=>{G.newDocumentState=await qy(t.primaryPath,t.input.forkInstance,Mn(G.newDocumentState),G.assumedMasterState)}));var Dt=await n.masterWrite(Te);Dt.forEach(G=>{var oe=G[t.primaryPath];H.add(oe),X[oe]=G})}));var ee=[];if(k.forEach(Te=>{H.has(Te)||(t.events.processed.up.next(_[Te]),ee.push(z[Te]))}),t.events.canceled.getValue())return!1;ee.length>0&&await t.input.metaInstance.bulkWrite(Vy(t,ee),"replication-up-write-meta");var ce=!1;if(H.size>0){t.stats.up.persistToMasterHadConflicts=t.stats.up.persistToMasterHadConflicts+1;var de=[],Pe={};if(await Promise.all(Object.entries(X).map(([Te,Dt])=>{var G=_[Te],oe={newDocumentState:G.newDocumentState,assumedMasterState:G.assumedMasterState,realMasterState:Dt};return dN(t,oe,W[Te]).then(async ue=>{if(ue){t.events.resolvedConflicts.next({input:oe,output:ue.output}),de.push({previous:W[Te],document:ue.resolvedDoc});var Re=S[Te];Pe[Te]=await _d(t,ye(Dt),Re?Re.metaDocument:void 0,ue.resolvedDoc._rev)}})})),de.length>0){ce=!0,t.stats.up.persistToMasterConflictWrites=t.stats.up.persistToMasterConflictWrites+1;var ot=await t.input.forkInstance.bulkWrite(de,"replication-up-write-conflict"),ct=[];ot.success.forEach(Te=>{var Dt=Te[t.primaryPath];ct.push(Pe[Dt])}),ct.length>0&&await t.input.metaInstance.bulkWrite(Vy(t,ct),"replication-up-write-conflict-meta")}}return wd(t,"up",E),ce}).catch(I=>(t.events.error.next(I),!1)),o}}function mO(t){t=$e(t),t.forkInstance=Ky(t.forkInstance),t.metaInstance=Ky(t.metaInstance);var e=cN(t),n={primaryPath:$n(t.forkInstance.schema.primaryKey),hasAttachments:!!t.forkInstance.schema.attachments,input:t,checkpointKey:e,downstreamBulkWriteFlag:e.then(r=>"replication-downstream-"+r),events:{canceled:new Cr(!1),active:{down:new Cr(!0),up:new Cr(!0)},processed:{down:new Kt,up:new Kt},resolvedConflicts:new Kt,error:new Kt},stats:{down:{addNewTask:0,downstreamProcessChanges:0,downstreamResyncOnce:0,masterChangeStreamEmit:0,persistFromMaster:0},up:{forkChangeStreamEmit:0,persistToMaster:0,persistToMasterConflictWrites:0,persistToMasterHadConflicts:0,processTasks:0,upstreamInitialSync:0}},firstSyncDone:{down:new Cr(!1),up:new Cr(!1)},streamQueue:{down:un,up:un},checkpointQueue:un,lastCheckpointDoc:{}};return fN(n),hN(n),n}function Tf(t){return As(PE([t.firstSyncDone.down.pipe(lt(e=>!!e)),t.firstSyncDone.up.pipe(lt(e=>!!e))])).then(()=>{})}function ab(t){return Promise.all([t.streamQueue.up,t.streamQueue.down,t.checkpointQueue])}function pN(t,e,n,r=!1){t=Ky(t);var i=!!t.schema.attachments,s=$n(t.schema.primaryKey),o={masterChangeStream$:t.changeStream().pipe(Lr(async a=>{var l={checkpoint:a.checkpoint,documents:await Promise.all(a.events.map(async f=>{var h=cs(f.documentData,i,r);return i&&(h=await qy(s,t,Mn(h),void 0)),h}))};return l})),masterChangesSince(a,l){return aO(t,l,a).then(async f=>({checkpoint:f.documents.length>0?f.checkpoint:a,documents:await Promise.all(f.documents.map(async h=>{var p=cs(h,i,r);return i&&(p=await qy(s,t,Mn(p),void 0)),p}))}))},async masterWrite(a){var l={};a.forEach(E=>{var $=E.newDocumentState[s];l[$]=E});var f=Object.keys(l),h=await t.findDocumentsById(f,!0),p=new Map;h.forEach(E=>p.set(E[s],E));var y=[],w=[];if(await Promise.all(Object.entries(l).map(async([E,$])=>{var S=p.get(E);S?S&&!$.assumedMasterState?y.push(cs(S,i,r)):(await e({realMasterState:cs(S,i,r),newDocumentState:ye($.assumedMasterState)},"rxStorageInstanceToReplicationHandler-masterWrite")).isEqual===!0?w.push({previous:S,document:ob(n,i,r,$.newDocumentState,S)}):y.push(cs(S,i,r)):w.push({document:ob(n,i,r,$.newDocumentState)})})),w.length>0){var I=await t.bulkWrite(w,"replication-master-write");I.error.forEach(E=>{if(E.status!==409)throw new Error("non conflict error");y.push(cs(ye(E.documentInDb),i,r))})}return y}};return o}async function yO(t){t.events.canceled.next(!0),t.events.active.up.complete(),t.events.active.down.complete(),t.events.processed.up.complete(),t.events.processed.down.complete(),t.events.resolvedConflicts.complete(),t.events.canceled.complete(),await t.checkpointQueue}var vO=["pre","post"],gO=["insert","save","remove","create"],ub=!1,wO=function(){function t(n,r,i,s,o={},a={},l={},f={},h={},p=XE,y={},w=bd){this.storageInstance={},this.timeouts=new Set,this.incrementalWriteQueue={},this._incrementalUpsertQueues=new Map,this.synced=!1,this.hooks={},this._subs=[],this._docCache={},this._queryCache=x2(),this.$={},this.checkpoint$={},this._changeEventBuffer={},this.onDestroy=[],this.destroyed=!1,this.database=n,this.name=r,this.schema=i,this.internalStorageInstance=s,this.instanceCreationOptions=o,this.migrationStrategies=a,this.methods=l,this.attachments=f,this.options=h,this.cacheReplacementPolicy=p,this.statics=y,this.conflictHandler=w,mN(this.asRxCollection)}var e=t.prototype;return e.prepare=async function(){this.storageInstance=Ug(this.database,this.internalStorageInstance,this.schema.jsonSchema),this.incrementalWriteQueue=new uO(this.storageInstance,this.schema.primaryPath,(o,a)=>cO(this,o,a),o=>this._runHooks("post","save",o));var r=this.database.eventBulks$.pipe(lt(o=>o.collectionName===this.name));this.$=r.pipe(Lr(o=>o.events)),this.checkpoint$=r.pipe(Mt(o=>o.checkpoint)),this._changeEventBuffer=iN(this.asRxCollection),this._docCache=new ZE(this.schema.primaryPath,this.$.pipe(lt(o=>!o.isLocal)),o=>uN(this.asRxCollection,o));var i=await this.database.storageToken,s=this.storageInstance.changeStream().subscribe(o=>{var a={id:o.id,internal:!1,collectionName:this.name,storageToken:i,events:o.events.map(l=>iO(!1,l,this)),databaseToken:this.database.token,checkpoint:o.checkpoint,context:o.context,endTime:o.endTime,startTime:o.startTime};this.database.$emit(a)});return this._subs.push(s),this._subs.push(this.storageInstance.conflictResultionTasks().subscribe(o=>{this.conflictHandler(o.input,o.context).then(a=>{this.storageInstance.resolveConflictResultionTask({id:o.id,output:a})})})),un},e.cleanup=function(r){throw pt("cleanup")},e.migrationNeeded=function(){throw pt("migration-schema")},e.getMigrationState=function(){throw pt("migration-schema")},e.startMigration=function(r=10){return this.getMigrationState().startMigration(r)},e.migratePromise=function(r=10){return this.getMigrationState().migratePromise(r)},e.insert=async function(r){var i=await this.bulkInsert([r]),s=i.error[0];yd(this,r[this.schema.primaryPath],r,s);var o=ye(i.success[0]);return o},e.bulkInsert=async function(r){if(r.length===0)return{success:[],error:[]};var i=this.schema.primaryPath,s=r.map(p=>{var y=dm(this.schema,p);return y}),o=this.hasHooks("pre","insert")?await Promise.all(s.map(p=>this._runHooks("pre","insert",p).then(()=>p))):s,a=o.map(p=>{var y={document:p};return y}),l=await this.storageInstance.bulkWrite(a,"rx-collection-bulk-insert"),f=eO(this._docCache,l.success);if(this.hasHooks("post","insert")){var h=new Map;o.forEach(p=>{h.set(p[i],p)}),await Promise.all(f.map(p=>this._runHooks("post","insert",h.get(p.primary),p)))}return{success:f,error:l.error}},e.bulkRemove=async function(r){var i=this.schema.primaryPath;if(r.length===0)return{success:[],error:[]};var s=await this.findByIds(r).exec(),o=[],a=new Map;Array.from(s.values()).forEach(y=>{var w=y.toMutableJSON(!0);o.push(w),a.set(y.primary,w)}),await Promise.all(o.map(y=>{var w=y[this.schema.primaryPath];return this._runHooks("pre","remove",y,s.get(w))}));var l=o.map(y=>{var w=$e(y);return w._deleted=!0,{previous:y,document:w}}),f=await this.storageInstance.bulkWrite(l,"rx-collection-bulk-remove"),h=f.success.map(y=>y[i]);await Promise.all(h.map(y=>this._runHooks("post","remove",a.get(y),s.get(y))));var p=h.map(y=>Bo(s,y));return{success:p,error:f.error}},e.bulkUpsert=async function(r){var i=[],s=new Map;r.forEach(f=>{var h=dm(this.schema,f),p=h[this.schema.primaryPath];if(!p)throw le("COL3",{primaryPath:this.schema.primaryPath,data:h,schema:this.schema.jsonSchema});s.set(p,h),i.push(h)});var o=await this.bulkInsert(i),a=o.success.slice(0),l=[];return await Promise.all(o.error.map(async f=>{if(f.status!==409)l.push(f);else{var h=f.documentId,p=Bo(s,h),y=ye(f.documentInDb),w=this._docCache.getCachedRxDocument(y),I=await w.incrementalModify(()=>p);a.push(I)}})),{error:l,success:a}},e.upsert=async function(r){var i=await this.bulkUpsert([r]);return yd(this.asRxCollection,r[this.schema.primaryPath],r,i.error[0]),i.success[0]},e.incrementalUpsert=function(r){var i=dm(this.schema,r),s=i[this.schema.primaryPath];if(!s)throw le("COL4",{data:r});var o=this._incrementalUpsertQueues.get(s);return o||(o=un),o=o.then(()=>vN(this,s,i)).then(a=>a.inserted?a.doc:yN(a.doc,i)),this._incrementalUpsertQueues.set(s,o),o},e.find=function(r){if(typeof r=="string")throw le("COL5",{queryObj:r});r||(r=tl());var i=na("find",r,this);return i},e.findOne=function(r){if(typeof r=="number"||Array.isArray(r))throw el("COL6",{queryObj:r});var i;if(typeof r=="string")i=na("findOne",{selector:{[this.schema.primaryPath]:r},limit:1},this);else{if(r||(r=tl()),r.limit)throw le("QU6");r=$e(r),r.limit=1,i=na("findOne",r,this)}return i},e.count=function(r){r||(r=tl());var i=na("count",r,this);return i},e.findByIds=function(r){var i={selector:{[this.schema.primaryPath]:{$in:r.slice(0)}}},s=na("findByIds",i,this);return s},e.exportJSON=function(){throw pt("json-dump")},e.importJSON=function(r){throw pt("json-dump")},e.insertCRDT=function(r){throw pt("crdt")},e.addHook=function(r,i,s,o=!1){if(typeof s!="function")throw el("COL7",{key:i,when:r});if(!vO.includes(r))throw el("COL8",{key:i,when:r});if(!gO.includes(i))throw le("COL9",{key:i});if(r==="post"&&i==="create"&&o===!0)throw le("COL10",{when:r,key:i,parallel:o});var a=s.bind(this),l=o?"parallel":"series";this.hooks[i]=this.hooks[i]||{},this.hooks[i][r]=this.hooks[i][r]||{series:[],parallel:[]},this.hooks[i][r][l].push(a)},e.getHooks=function(r,i){return!this.hooks[i]||!this.hooks[i][r]?{series:[],parallel:[]}:this.hooks[i][r]},e.hasHooks=function(r,i){var s=this.getHooks(r,i);return s?s.series.length>0||s.parallel.length>0:!1},e._runHooks=function(r,i,s,o){var a=this.getHooks(r,i);if(!a)return un;var l=a.series.map(f=>()=>f(s,o));return JP(l).then(()=>Promise.all(a.parallel.map(f=>f(s,o))))},e._runHooksSync=function(r,i,s,o){var a=this.getHooks(r,i);a&&a.series.forEach(l=>l(s,o))},e.promiseWait=function(r){var i=new Promise(s=>{var o=setTimeout(()=>{this.timeouts.delete(o),s()},r);this.timeouts.add(o)});return i},e.destroy=function(){return this.destroyed?Xn:(this.destroyed=!0,Array.from(this.timeouts).forEach(r=>clearTimeout(r)),this._changeEventBuffer&&this._changeEventBuffer.destroy(),this.database.requestIdlePromise().then(()=>Promise.all(this.onDestroy.map(r=>r()))).then(()=>this.storageInstance.close()).then(()=>(this._subs.forEach(r=>r.unsubscribe()),delete this.database.collections[this.name],Fo("postDestroyRxCollection",this).then(()=>!0))))},e.remove=async function(){await this.destroy(),await hO(this.database.storage,this.database.internalStore,this.database.token,this.database.name,this.name,this.database.password,this.database.hashFunction)},Ks(t,[{key:"insert$",get:function(){return this.$.pipe(lt(n=>n.operation==="INSERT"))}},{key:"update$",get:function(){return this.$.pipe(lt(n=>n.operation==="UPDATE"))}},{key:"remove$",get:function(){return this.$.pipe(lt(n=>n.operation==="DELETE"))}},{key:"asRxCollection",get:function(){return this}}]),t}();function mN(t){if(!ub){ub=!0;var e=Object.getPrototypeOf(t);gO.forEach(n=>{vO.map(r=>{var i=r+eE(n);e[i]=function(s,o){return this.addHook(r,n,s,o)}})})}}function yN(t,e){return t.incrementalModify(n=>e)}function vN(t,e,n){var r=t._docCache.getLatestDocumentDataIfExists(e);return r?Promise.resolve({doc:t._docCache.getCachedRxDocument(r),inserted:!1}):t.findOne(e).exec().then(i=>i?{doc:i,inserted:!1}:t.insert(n).then(s=>({doc:s,inserted:!0})))}function gN({database:t,name:e,schema:n,instanceCreationOptions:r={},migrationStrategies:i={},autoMigrate:s=!0,statics:o={},methods:a={},attachments:l={},options:f={},localDocuments:h=!1,cacheReplacementPolicy:p=XE,conflictHandler:y=bd}){var w={databaseInstanceToken:t.token,databaseName:t.name,collectionName:e,schema:n.jsonSchema,options:r,multiInstance:t.multiInstance,password:t.password,devMode:it.isDevMode()};return Fr("preCreateRxStorageInstance",w),nN(t,w).then(I=>{var E=new wO(t,e,n,I,r,i,a,l,f,p,o,y);return E.prepare().then(()=>{Object.entries(o).forEach(([S,_])=>{Object.defineProperty(E,S,{get:()=>_.bind(E)})});var $=un;return s&&E.schema.version!==0&&($=E.migratePromise()),$}).then(()=>(Fr("createRxCollection",{collection:E,creator:{name:e,schema:n,storageInstance:I,instanceCreationOptions:r,migrationStrategies:i,methods:a,attachments:l,options:f,cacheReplacementPolicy:p,localDocuments:h,statics:o}}),E)).catch($=>I.close().then(()=>Promise.reject($)))})}var _O=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this._parallels=e||1,this._qC=0,this._iC=new Set,this._lHN=0,this._hPM=new Map,this._pHM=new Map};_O.prototype={isIdle:function(){return this._qC{this._to=!1,_N(this)},0))}clear(){this.map.clear()}}function _N(t){const e=bO()-t.ttl,n=t.map[Symbol.iterator]();for(;;){const r=n.next().value;if(!r)return;const i=r[0];if(r[1]E.events)),this.storageToken=Xn,this.storageTokenDocument=Xn,this.emittedEventBulkIds=new Wg(60*1e3),this.name=n,this.token=r,this.storage=i,this.instanceCreationOptions=s,this.password=o,this.multiInstance=a,this.eventReduce=l,this.options=f,this.internalStore=h,this.hashFunction=p,this.cleanupPolicy=y,this.allowSlowCount=w,this.reactivity=I,this.name!=="pseudoInstance"&&(this.internalStore=Ug(this.asRxDatabase,h,Vg),this.storageTokenDocument=eN(this.asRxDatabase).catch(E=>this.startupErrors.push(E)),this.storageToken=this.storageTokenDocument.then(E=>E.data.token).catch(E=>this.startupErrors.push(E)))}var e=t.prototype;return e.getReactivityFactory=function(){if(!this.reactivity)throw le("DB14",{database:this.name});return this.reactivity},e.$emit=function(r){this.emittedEventBulkIds.has(r.id)||(this.emittedEventBulkIds.add(r.id),this.eventBulks$.next(r))},e.removeCollectionDoc=async function(r,i){var s=await Xl(this.internalStore,Ha(zy(r,i),xo));if(!s)throw le("SNH",{name:r,schema:i});var o=jg(s);o._deleted=!0,await this.internalStore.bulkWrite([{document:o,previous:s}],"rx-database-remove-collection")},e.addCollections=async function(r){var i={},s={},o=[],a={};await Promise.all(Object.entries(r).map(async([h,p])=>{var y=h,w=p.schema;i[y]=w;var I=mR(w,this.hashFunction);if(s[y]=I,this.collections[h])throw le("DB3",{name:h});var E=zy(h,w),$={id:Ha(E,xo),key:E,context:xo,data:{name:y,schemaHash:await I.hash,schema:I.jsonSchema,version:I.version,connectedStorages:[]},_deleted:!1,_meta:Ws(),_rev:Nn(),_attachments:{}};o.push({document:$});var S=Object.assign({},p,{name:y,schema:I,database:this}),_=$e(p);_.database=this,_.name=h,Fr("preCreateRxCollection",_),S.conflictHandler=_.conflictHandler,a[y]=S}));var l=await this.internalStore.bulkWrite(o,"rx-database-add-collection");await EN(this),await Promise.all(l.error.map(async h=>{if(h.status!==409)throw le("DB12",{database:this.name,writeError:h});var p=ye(h.documentInDb),y=p.data.name,w=s[y];if(p.data.schemaHash!==await w.hash)throw le("DB6",{database:this.name,collection:y,previousSchemaHash:p.data.schemaHash,schemaHash:await w.hash,previousSchema:p.data.schema,schema:ye(i[y])})}));var f={};return await Promise.all(Object.keys(r).map(async h=>{var p=a[h],y=await gN(p);f[h]=y,this.collections[h]=y,this[h]||Object.defineProperty(this,h,{get:()=>this.collections[h]})})),f},e.lockedRun=function(r){return this.idleQueue.wrapCall(r)},e.requestIdlePromise=function(){return this.idleQueue.requestIdlePromise()},e.exportJSON=function(r){throw pt("json-dump")},e.importJSON=function(r){throw pt("json-dump")},e.backup=function(r){throw pt("backup")},e.leaderElector=function(){throw pt("leader-election")},e.isLeader=function(){throw pt("leader-election")},e.waitForLeadership=function(){throw pt("leader-election")},e.migrationStates=function(){throw pt("migration-schema")},e.destroy=async function(){return this.destroyed||(this.destroyed=!0,await Fo("preDestroyRxDatabase",this),this.eventBulks$.complete(),this._subs.map(r=>r.unsubscribe()),this.name==="pseudoInstance")?Xn:this.requestIdlePromise().then(()=>Promise.all(this.onDestroy.map(r=>r()))).then(()=>Promise.all(Object.keys(this.collections).map(r=>this.collections[r]).map(r=>r.destroy()))).then(()=>this.internalStore.close()).then(()=>Sd.delete(this.storage.name+"|"+this.name)).then(()=>!0)},e.remove=function(){return this.destroy().then(()=>IO(this.name,this.storage,this.password))},Ks(t,[{key:"$",get:function(){return this.observable$}},{key:"asRxDatabase",get:function(){return this}}]),t}();function bN(t,e){var n=e.name+"|"+t;if(Sd.has(n))throw le("DB8",{name:t,storage:e.name,link:"https://rxdb.info/rx-database.html#ignoreduplicate"})}async function SO(t,e,n,r,i,s){var o=await e.createStorageInstance({databaseInstanceToken:t,databaseName:n,collectionName:W2,schema:Vg,options:r,multiInstance:i,password:s,devMode:it.isDevMode()});return o}function SN({storage:t,instanceCreationOptions:e,name:n,password:r,multiInstance:i=!0,eventReduce:s=!0,ignoreDuplicate:o=!1,options:a={},cleanupPolicy:l,allowSlowCount:f=!1,localDocuments:h=!1,hashFunction:p=HP,reactivity:y}){Fr("preCreateRxDatabase",{storage:t,instanceCreationOptions:e,name:n,password:r,multiInstance:i,eventReduce:s,ignoreDuplicate:o,options:a,localDocuments:h}),o||bN(n,t),Sd.add(t.name+"|"+n);var w=iu(10);return SO(w,t,n,e,i,r).catch(I=>{throw Sd.delete(t.name+"|"+n),I}).then(I=>{var E=new qg(n,w,t,e,r,i,s,a,I,p,l,f,y);return Fo("createRxDatabase",{database:E,creator:{storage:t,instanceCreationOptions:e,name:n,password:r,multiInstance:i,eventReduce:s,ignoreDuplicate:o,options:a,localDocuments:h}}).then(()=>E)})}async function IO(t,e,n){var r=iu(10),i=await SO(r,e,t,{},!1,n),s=await Kg(i),o=new Set;s.forEach(l=>o.add(l.data.name));var a=Array.from(o);return await Promise.all(a.map(l=>hO(e,i,r,t,l,n))),await Fo("postRemoveRxDatabase",{databaseName:t,storage:e}),await i.remove(),a}function IN(t){return t instanceof qg}async function EO(t){var e=await t.storageTokenDocument;return e.data.instanceToken===t.token}async function EN(t){if(await t.storageToken,t.startupErrors[0])throw t.startupErrors[0]}var ON={RxSchema:uE.prototype,RxDocument:kh,RxQuery:tO.prototype,RxCollection:wO.prototype,RxDatabase:qg.prototype},pm=new Set,lb=new Set;function gi(t){if(Fr("preAddRxPlugin",{plugin:t,plugins:pm}),!pm.has(t)){{if(lb.has(t.name))throw le("PL3",{name:t.name,plugin:t});pm.add(t),lb.add(t.name)}if(!t.rxdb)throw el("PL1",{plugin:t});t.init&&t.init(),t.prototypes&&Object.entries(t.prototypes).forEach(([e,n])=>n(ON[e])),t.overwritable&&Object.assign(it,t.overwritable),t.hooks&&Object.entries(t.hooks).forEach(([e,n])=>{n.after&&xl[e].push(n.after),n.before&&xl[e].unshift(n.before)})}}function kN(t){return t&&typeof t.then=="function"}Promise.resolve(!1);var DN=Promise.resolve(!0),Mi=Promise.resolve();function vo(t,e){return t||(t=0),new Promise(function(n){return setTimeout(function(){return n(e)},t)})}function xN(t,e){return Math.floor(Math.random()*(e-t+1)+t)}function Zl(){return Math.random().toString(36).substring(2)}var mm=0;function ec(){var t=Date.now()*1e3;return t<=mm&&(t=mm+1),mm=t,t}function CN(){return typeof navigator<"u"&&typeof navigator.locks<"u"&&typeof navigator.locks.request=="function"}var AN=ec,PN="native";function RN(t){var e={time:ec(),messagesCallback:null,bc:new BroadcastChannel(t),subFns:[]};return e.bc.onmessage=function(n){e.messagesCallback&&e.messagesCallback(n.data)},e}function TN(t){t.bc.close(),t.subFns=[]}function MN(t,e){try{return t.bc.postMessage(e,!1),Mi}catch(n){return Promise.reject(n)}}function NN(t,e){t.messagesCallback=e}function BN(){if(typeof globalThis<"u"&&globalThis.Deno&&globalThis.Deno.args)return!0;if((typeof window<"u"||typeof self<"u")&&typeof BroadcastChannel=="function"){if(BroadcastChannel._pubkey)throw new Error("BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill");return!0}else return!1}function FN(){return 150}var LN={create:RN,close:TN,onMessage:NN,postMessage:MN,canBeUsed:BN,type:PN,averageResponseTime:FN,microSeconds:AN};function Hg(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=JSON.parse(JSON.stringify(t));return typeof e.webWorkerSupport>"u"&&(e.webWorkerSupport=!0),e.idb||(e.idb={}),e.idb.ttl||(e.idb.ttl=1e3*45),e.idb.fallbackInterval||(e.idb.fallbackInterval=150),t.idb&&typeof t.idb.onclose=="function"&&(e.idb.onclose=t.idb.onclose),e.localstorage||(e.localstorage={}),e.localstorage.removeTimeout||(e.localstorage.removeTimeout=1e3*60),t.methods&&(e.methods=t.methods),e.node||(e.node={}),e.node.ttl||(e.node.ttl=1e3*60*2),e.node.maxParallelWrites||(e.node.maxParallelWrites=2048),typeof e.node.useFastPath>"u"&&(e.node.useFastPath=!0),e}var $N=ec,jN="pubkey.broadcast-channel-0-",qi="messages",Dh={durability:"relaxed"},UN="idb";function OO(){if(typeof indexedDB<"u")return indexedDB;if(typeof window<"u"){if(typeof window.mozIndexedDB<"u")return window.mozIndexedDB;if(typeof window.webkitIndexedDB<"u")return window.webkitIndexedDB;if(typeof window.msIndexedDB<"u")return window.msIndexedDB}return!1}function Qg(t){t.commit&&t.commit()}function zN(t){var e=OO(),n=jN+t,r=e.open(n);return r.onupgradeneeded=function(i){var s=i.target.result;s.createObjectStore(qi,{keyPath:"id",autoIncrement:!0})},new Promise(function(i,s){r.onerror=function(o){return s(o)},r.onsuccess=function(){i(r.result)}})}function VN(t,e,n){var r=Date.now(),i={uuid:e,time:r,data:n},s=t.transaction([qi],"readwrite",Dh);return new Promise(function(o,a){s.oncomplete=function(){return o()},s.onerror=function(f){return a(f)};var l=s.objectStore(qi);l.add(i),Qg(s)})}function KN(t,e){var n=t.transaction(qi,"readonly",Dh),r=n.objectStore(qi),i=[],s=IDBKeyRange.bound(e+1,1/0);if(r.getAll){var o=r.getAll(s);return new Promise(function(l,f){o.onerror=function(h){return f(h)},o.onsuccess=function(h){l(h.target.result)}})}function a(){try{return s=IDBKeyRange.bound(e+1,1/0),r.openCursor(s)}catch{return r.openCursor()}}return new Promise(function(l,f){var h=a();h.onerror=function(p){return f(p)},h.onsuccess=function(p){var y=p.target.result;y?y.value.idt.lastCursorId&&(t.lastCursorId=r.id),r}).filter(function(r){return YN(r,t)}).sort(function(r,i){return r.time-i.time});return n.forEach(function(r){t.messagesCallback&&(t.eMIs.add(r.id),t.messagesCallback(r.data))}),Mi})}function GN(t){t.closed=!0,t.db.close()}function JN(t,e){return t.writeBlockPromise=t.writeBlockPromise.then(function(){return VN(t.db,t.uuid,e)}).then(function(){xN(0,10)===0&&HN(t)}),t.writeBlockPromise}function XN(t,e,n){t.messagesCallbackTime=n,t.messagesCallback=e,DO(t)}function ZN(){return!!OO()}function eB(t){return t.idb.fallbackInterval*2}var tB={create:QN,close:GN,onMessage:XN,postMessage:JN,canBeUsed:ZN,type:UN,averageResponseTime:eB,microSeconds:$N},nB=ec,rB="pubkey.broadcastChannel-",iB="localstorage";function xO(){var t;if(typeof window>"u")return null;try{t=window.localStorage,t=window["ie8-eventlistener/storage"]||window.localStorage}catch{}return t}function CO(t){return rB+t}function sB(t,e){return new Promise(function(n){vo().then(function(){var r=CO(t.channelName),i={token:Zl(),time:Date.now(),data:e,uuid:t.uuid},s=JSON.stringify(i);xO().setItem(r,s);var o=document.createEvent("Event");o.initEvent("storage",!0,!0),o.key=r,o.newValue=s,window.dispatchEvent(o),n()})})}function oB(t,e){var n=CO(t),r=function(s){s.key===n&&e(JSON.parse(s.newValue))};return window.addEventListener("storage",r),r}function aB(t){window.removeEventListener("storage",t)}function uB(t,e){if(e=Hg(e),!AO())throw new Error("BroadcastChannel: localstorage cannot be used");var n=Zl(),r=new Wg(e.localstorage.removeTimeout),i={channelName:t,uuid:n,eMIs:r};return i.listener=oB(t,function(s){i.messagesCallback&&s.uuid!==n&&(!s.token||r.has(s.token)||s.data.time&&s.data.time0||t._addEL.internal.length>0}function hb(t,e,n){t._addEL[e].push(n),EB(t)}function pb(t,e,n){t._addEL[e]=t._addEL[e].filter(function(r){return r!==n}),OB(t)}function EB(t){if(!t._iL&&MO(t)){var e=function(i){t._addEL[i.type].forEach(function(s){i.time>=s.time&&s.fn(i.data)})},n=t.method.microSeconds();t._prepP?t._prepP.then(function(){t._iL=!0,t.method.onMessage(t._state,e,n)}):(t._iL=!0,t.method.onMessage(t._state,e,n))}}function OB(t){if(t._iL&&!MO(t)){t._iL=!1;var e=t.method.microSeconds();t.method.onMessage(t._state,null,e)}}function kB(t){if(typeof WorkerGlobalScope=="function"&&self instanceof WorkerGlobalScope){var e=self.close.bind(self);self.close=function(){return t(),e()}}else{if(typeof window.addEventListener!="function")return;window.addEventListener("beforeunload",function(){t()},!0),window.addEventListener("unload",function(){t()},!0)}}function DB(t){process.on("exit",function(){return t()}),process.on("beforeExit",function(){return t().then(function(){return process.exit()})}),process.on("SIGINT",function(){return t().then(function(){return process.exit()})}),process.on("uncaughtException",function(e){return t().then(function(){console.trace(e),process.exit(101)})})}var xB=Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]",CB=xB?DB:kB,nl=new Set,mb=!1;function AB(){mb||(mb=!0,CB(RB))}function PB(t){if(AB(),typeof t!="function")throw new Error("Listener is no function");nl.add(t);var e={remove:function(){return nl.delete(t)},run:function(){return nl.delete(t),t()}};return e}function RB(){var t=[];return nl.forEach(function(e){t.push(e()),nl.delete(e)}),Promise.all(t)}function Co(t,e){var n={context:"leader",action:e,token:t.token};return t.broadcastChannel.postInternal(n)}function NO(t){t.isLeader=!0,t._hasLeader=!0;var e=PB(function(){return t.die()});t._unl.push(e);var n=function(i){i.context==="leader"&&i.action==="apply"&&Co(t,"tell"),i.context==="leader"&&i.action==="tell"&&!t._dpLC&&(t._dpLC=!0,t._dpL(),Co(t,"tell"))};return t.broadcastChannel.addEventListener("internal",n),t._lstns.push(n),Co(t,"tell")}var BO=function(e,n){var r=this;this.broadcastChannel=e,e._befC.push(function(){return r.die()}),this._options=n,this.isLeader=!1,this.isDead=!1,this.token=Zl(),this._lstns=[],this._unl=[],this._dpL=function(){},this._dpLC=!1,this._wKMC={},this.lN="pubkey-bc||"+e.method.type+"||"+e.name};BO.prototype={hasLeader:function(){var e=this;return navigator.locks.query().then(function(n){var r=n.held?n.held.filter(function(i){return i.name===e.lN}):[];return!!(r&&r.length>0)})},awaitLeadership:function(){var e=this;if(!this._wLMP){this._wKMC.c=new AbortController;var n=new Promise(function(r,i){e._wKMC.res=r,e._wKMC.rej=i});this._wLMP=new Promise(function(r){navigator.locks.request(e.lN,{signal:e._wKMC.c.signal},function(){return e._wKMC.c=void 0,NO(e),r(),n}).catch(function(){})})}return this._wLMP},set onduplicate(t){},die:function(){var e=this;return this._lstns.forEach(function(n){return e.broadcastChannel.removeEventListener("internal",n)}),this._lstns=[],this._unl.forEach(function(n){return n.remove()}),this._unl=[],this.isLeader&&(this.isLeader=!1),this.isDead=!0,this._wKMC.res&&this._wKMC.res(),this._wKMC.c&&this._wKMC.c.abort("LeaderElectionWebLock.die() called"),Co(this,"death")}};var FO=function(e,n){var r=this;this.broadcastChannel=e,this._options=n,this.isLeader=!1,this._hasLeader=!1,this.isDead=!1,this.token=Zl(),this._aplQ=Mi,this._aplQC=0,this._unl=[],this._lstns=[],this._dpL=function(){},this._dpLC=!1;var i=function(o){o.context==="leader"&&(o.action==="death"&&(r._hasLeader=!1),o.action==="tell"&&(r._hasLeader=!0))};this.broadcastChannel.addEventListener("internal",i),this._lstns.push(i)};FO.prototype={hasLeader:function(){return Promise.resolve(this._hasLeader)},applyOnce:function(e){var n=this;if(this.isLeader)return vo(0,!0);if(this.isDead)return vo(0,!1);if(this._aplQC>1)return this._aplQ;var r=function(){if(n.isLeader)return DN;var s=!1,o,a=new Promise(function(h){o=function(){s=!0,h()}}),l=function(p){p.context==="leader"&&p.token!=n.token&&(p.action==="apply"&&p.token>n.token&&o(),p.action==="tell"&&(o(),n._hasLeader=!0))};n.broadcastChannel.addEventListener("internal",l);var f=e?n._options.responseTime*4:n._options.responseTime;return Co(n,"apply").then(function(){return Promise.race([vo(f),a.then(function(){return Promise.reject(new Error)})])}).then(function(){return Co(n,"apply")}).then(function(){return Promise.race([vo(f),a.then(function(){return Promise.reject(new Error)})])}).catch(function(){}).then(function(){return n.broadcastChannel.removeEventListener("internal",l),s?!1:NO(n).then(function(){return!0})})};return this._aplQC=this._aplQC+1,this._aplQ=this._aplQ.then(function(){return r()}).then(function(){n._aplQC=n._aplQC-1}),this._aplQ.then(function(){return n.isLeader})},awaitLeadership:function(){return this._aLP||(this._aLP=TB(this)),this._aLP},set onduplicate(t){this._dpL=t},die:function(){var e=this;return this._lstns.forEach(function(n){return e.broadcastChannel.removeEventListener("internal",n)}),this._lstns=[],this._unl.forEach(function(n){return n.remove()}),this._unl=[],this.isLeader&&(this._hasLeader=!1,this.isLeader=!1),this.isDead=!0,Co(this,"death")}};function TB(t){return t.isLeader?Mi:new Promise(function(e){var n=!1;function r(){n||(n=!0,t.broadcastChannel.removeEventListener("internal",s),e(!0))}t.applyOnce().then(function(){t.isLeader&&r()});var i=function o(){return vo(t._options.fallbackInterval).then(function(){if(!(t.isDead||n))if(t.isLeader)r();else return t.applyOnce(!0).then(function(){t.isLeader?r():o()})})};i();var s=function(a){a.context==="leader"&&a.action==="death"&&(t._hasLeader=!1,t.applyOnce().then(function(){t.isLeader&&r()}))};t.broadcastChannel.addEventListener("internal",s),t._lstns.push(s)})}function MB(t,e){return t||(t={}),t=JSON.parse(JSON.stringify(t)),t.fallbackInterval||(t.fallbackInterval=3e3),t.responseTime||(t.responseTime=e.method.averageResponseTime(e.options)),t}function NB(t,e){if(t._leaderElector)throw new Error("BroadcastChannel already has a leader-elector");e=MB(e,t);var n=CN()?new BO(t,e):new FO(t,e);return t._befC.push(function(){return n.die()}),t._leaderElector=n,n}var Id=new Map;function BB(t,e,n,r){var i=Id.get(e);return i||(i={bc:new xh(["RxDB:",t,n].join("|")),refs:new Set},Id.set(e,i)),i.refs.add(r),i.bc}function yb(t,e){var n=Id.get(t);if(n&&(n.refs.delete(e),n.refs.size===0))return Id.delete(t),n.bc.close()}function FB(t,e,n,r){if(e.multiInstance){var i=r||BB(t,e.databaseInstanceToken,n.databaseName,n),s=new Kt,o=y=>{y.storageName===t&&y.databaseName===e.databaseName&&y.collectionName===e.collectionName&&y.version===e.schema.version&&s.next(y.eventBulk)};i.addEventListener("message",o);var a=n.changeStream(),l=!1,f=a.subscribe(y=>{l||i.postMessage({storageName:t,databaseName:e.databaseName,collectionName:e.collectionName,version:e.schema.version,eventBulk:y})});n.changeStream=function(){return s.asObservable().pipe(aT(a))};var h=n.close.bind(n);n.close=async function(){return l=!0,f.unsubscribe(),i.removeEventListener("message",o),r||await yb(e.databaseInstanceToken,n),h()};var p=n.remove.bind(n);n.remove=async function(){return l=!0,f.unsubscribe(),i.removeEventListener("message",o),r||await yb(e.databaseInstanceToken,n),p()}}}function LB(t,e){var n=e.map(r=>{var i=zi(t,r);if(!i)throw new Error("not in schema: "+r);var s=i.type,o;(s==="number"||s==="integer")&&(o=Gg(i));var a=XI(r),l=i.maxLength?i.maxLength:0,f;s==="string"?f=p=>{var y=a(p);return y||(y=""),y.padEnd(l," ")}:s==="boolean"?f=p=>{var y=a(p);return y?"1":"0"}:f=p=>{var y=a(p);return Ed(o,y)};var h={fieldName:r,schemaPart:i,parsedLengths:o,getValue:a,getIndexStringPart:f};return h});return n}function $B(t,e){var n=LB(t,e),r=n.length,i=n.map(o=>o.getIndexStringPart),s=function(o){for(var a="",l=0;l1&&(a=o[1].length),{minimum:e,maximum:n,nonDecimals:s,decimals:a,roundedMinimum:e}}function Ed(t,e){typeof e>"u"&&(e=0),et.maximum&&(e=t.maximum);var n=(Math.floor(e)-t.roundedMinimum).toString(),r=n.padStart(t.nonDecimals,"0");if(t.decimals>0){var i=e.toString().split("."),s=i.length>1?i[1]:"0";r+=s.padEnd(t.decimals,"0")}return r}function vb(t,e,n){var r="";return e.forEach((i,s)=>{var o=zi(t,i),a=n[s],l=o.type;switch(l){case"string":var f=ye(o.maxLength,"maxLength not set");typeof a=="string"?r+=a.padEnd(f," "):r+="".padEnd(f," ");break;case"boolean":if(a===null)r+="0";else if(a===ci)r+="0";else if(a===Tr)r+="1";else{var h=a?"1":"0";r+=h}break;case"number":case"integer":var p=Gg(o);if(a===null||a===ci){var y="0";r+=y.repeat(p.nonDecimals+p.decimals)}else if(a===Tr)r+=Ed(p,p.maximum);else{var w=Ed(p,a);r+=w}break;default:throw new Error("unknown index type "+l)}}),r}function jB(t,e,n){var r="";return e.forEach((i,s)=>{var o=zi(t,i),a=n[s],l=o.type;switch(l){case"string":var f=ye(o.maxLength,"maxLength not set");typeof a=="string"&&a!==Tr?r+=a.padEnd(f," "):a===ci?r+="".padEnd(f," "):r+="".padEnd(f,Tr);break;case"boolean":if(a===null)r+="1";else{var h=a?"1":"0";r+=h}break;case"number":case"integer":var p=Gg(o);if(a===null||a===Tr){var y="9";r+=y.repeat(p.nonDecimals+p.decimals)}else if(a===ci){var w="0";r+=w.repeat(p.nonDecimals+p.decimals)}else r+=Ed(p,a);break;default:throw new Error("unknown index type "+l)}}),r}var gb=t=>Promise.resolve(t);function wb(t,e){if(t==="_deleted")return e;e=$e(e);var n=!!e._deleted;return e[t]=n,delete e._deleted,e}function ym(t,e,n){return n.map(r=>{var i=$e(r);if(e!=="_deleted"){var s=!!i[e];i._deleted=s,delete i[e]}else i._deleted=!!i._deleted;var o=t.schema.primaryPath;return i[o]=qs(t.schema.jsonSchema,i),i})}function _b(t,e){if(typeof window>"u"||typeof window!="object"||typeof window.addEventListener>"u"||navigator.onLine)return t.promiseWait(e);var n,r=new Promise(i=>{n=()=>{window.removeEventListener("online",n),i()},window.addEventListener("online",n)});return Promise.race([r,t.promiseWait(e)]).then(()=>{window.removeEventListener("online",n)})}var LO=new WeakMap,UB=function(){function t(n,r,i,s,o,a,l,f){this.subs=[],this.subjects={received:new Kt,sent:new Kt,error:new Kt,canceled:new Cr(!1),active:new Cr(!1)},this.received$=this.subjects.received.asObservable(),this.sent$=this.subjects.sent.asObservable(),this.error$=this.subjects.error.asObservable(),this.canceled$=this.subjects.canceled.asObservable(),this.active$=this.subjects.active.asObservable(),this.onCancel=[],this.callOnStart=void 0,this.remoteEvents$=new Kt,this.replicationIdentifier=n,this.collection=r,this.deletedField=i,this.pull=s,this.push=o,this.live=a,this.retryTime=l,this.autoStart=f;var h=Br(LO,r,()=>[]);h.push(this),this.collection.onDestroy.push(()=>this.cancel()),Object.keys(this.subjects).forEach(y=>{Object.defineProperty(this,y+"$",{get:function(){return this.subjects[y].asObservable()}})});var p=new Promise(y=>{this.callOnStart=y});this.startPromise=p}var e=t.prototype;return e.start=async function(){if(!this.isStopped()){var r=this.pull&&this.pull.modifier?this.pull.modifier:gb,i=this.push&&this.push.modifier?this.push.modifier:gb,s=this.collection.database,o="rx-replication-meta-"+await s.hashFunction([this.collection.name,this.replicationIdentifier].join("-")),a=Wy(this.collection.schema.jsonSchema,vd(this.collection.schema.jsonSchema)),[l]=await Promise.all([this.collection.database.storage.createStorageInstance({databaseName:s.name,collectionName:o,databaseInstanceToken:s.token,multiInstance:s.multiInstance,options:{},schema:a,password:s.password,devMode:it.isDevMode()}),dO(this.collection,o,a)]);this.metaInstance=l,this.internalReplicationState=mO({pushBatchSize:this.push&&this.push.batchSize?this.push.batchSize:100,pullBatchSize:this.pull&&this.pull.batchSize?this.pull.batchSize:100,initialCheckpoint:{upstream:this.push?this.push.initialCheckpoint:void 0,downstream:this.pull?this.pull.initialCheckpoint:void 0},forkInstance:this.collection.storageInstance,metaInstance:this.metaInstance,hashFunction:s.hashFunction,identifier:"rxdbreplication"+this.replicationIdentifier,conflictHandler:this.collection.conflictHandler,replicationHandler:{masterChangeStream$:this.remoteEvents$.asObservable().pipe(lt(f=>!!this.pull),Lr(async f=>{if(f==="RESYNC")return f;var h=$e(f);return h.documents=ym(this.collection,this.deletedField,h.documents),h.documents=await Promise.all(h.documents.map(p=>r(p))),h})),masterChangesSince:async(f,h)=>{if(!this.pull)return{checkpoint:null,documents:[]};for(var p=!1,y={};!p&&!this.isStopped();)try{y=await this.pull.handler(f,h),p=!0}catch(E){var w=le("RC_PULL",{checkpoint:f,errors:ja(E).map($=>ky($)),direction:"pull"});this.subjects.error.next(w),await _b(this.collection,ye(this.retryTime))}if(this.isStopped())return{checkpoint:null,documents:[]};var I=$e(y);return I.documents=ym(this.collection,this.deletedField,I.documents),I.documents=await Promise.all(I.documents.map(E=>r(E))),I},masterWrite:async f=>{if(!this.push)return[];var h=!1;await Fo("preReplicationMasterWrite",{rows:f,collection:this.collection});var p=await Promise.all(f.map(async $=>($.newDocumentState=await i($.newDocumentState),$.newDocumentState===null?null:($.assumedMasterState&&($.assumedMasterState=await i($.assumedMasterState)),this.deletedField!=="_deleted"&&($.newDocumentState=wb(this.deletedField,$.newDocumentState),$.assumedMasterState&&($.assumedMasterState=wb(this.deletedField,$.assumedMasterState))),$)))),y=p.filter(JI),w=null;for(y.length===0&&(h=!0,w=[]);!h&&!this.isStopped();)try{if(w=await this.push.handler(y),!Array.isArray(w))throw le("RC_PUSH_NO_AR",{pushRows:f,direction:"push",args:{result:w}});h=!0}catch($){var I=$.rxdb?$:le("RC_PUSH",{pushRows:f,errors:ja($).map(S=>ky(S)),direction:"push"});this.subjects.error.next(I),await _b(this.collection,ye(this.retryTime))}if(this.isStopped())return[];await Fo("preReplicationMasterWriteDocumentsHandle",{result:w,collection:this.collection});var E=ym(this.collection,this.deletedField,ye(w));return E}}}),this.subs.push(this.internalReplicationState.events.error.subscribe(f=>{this.subjects.error.next(f)}),this.internalReplicationState.events.processed.down.subscribe(f=>this.subjects.received.next(f.document)),this.internalReplicationState.events.processed.up.subscribe(f=>{this.subjects.sent.next(f.newDocumentState)}),PE([this.internalReplicationState.events.active.down,this.internalReplicationState.events.active.up]).subscribe(([f,h])=>{var p=f||h;this.subjects.active.next(p)})),this.pull&&this.pull.stream$&&this.live&&this.subs.push(this.pull.stream$.subscribe({next:f=>{this.remoteEvents$.next(f)},error:f=>{this.subjects.error.next(f)}})),this.live||(await Tf(this.internalReplicationState),await ab(this.internalReplicationState),await this.cancel()),this.callOnStart()}},e.isStopped=function(){return!!this.subjects.canceled.getValue()},e.awaitInitialReplication=async function(){return await this.startPromise,Tf(ye(this.internalReplicationState))},e.awaitInSync=async function(){await this.startPromise,await Tf(ye(this.internalReplicationState));for(var r=2;r>0;)r--,await this.collection.database.requestIdlePromise(),await ab(ye(this.internalReplicationState));return!0},e.reSync=function(){this.remoteEvents$.next("RESYNC")},e.emitEvent=function(r){this.remoteEvents$.next(r)},e.cancel=async function(){if(this.isStopped())return Xn;var r=this.onCancel.map(i=>ZI(i()));return this.internalReplicationState&&await yO(this.internalReplicationState),this.metaInstance&&r.push(ye(this.internalReplicationState).checkpointQueue.then(()=>ye(this.metaInstance).close())),this.subs.forEach(i=>i.unsubscribe()),this.subjects.canceled.next(!0),this.subjects.active.complete(),this.subjects.canceled.complete(),this.subjects.error.complete(),this.subjects.received.complete(),this.subjects.sent.complete(),Promise.all(r)},t}(),$r;(function(t){function e(U){return Array.isArray(U)?U.slice():t.isObject(U)?{...U}:U}t.clone=e;function n(U){let ee=r(U);return Array.isArray(U)&&(ee=ee.filter(ce=>ce!=="length")),ee}t.keys=n;function r(U){return U?Object.getOwnPropertyNames(U):[]}t.keysOfNonArray=r;function i(U,ee){return a(n(U),ce=>ee(U[ce],ce)),U}t.forOwn=i;function s(U,ee){return a(r(U),ce=>ee(U[ce],ce)),U}t.forOwnOfNonArray=s;function o(U,ee){return Array.isArray(U)?a(U,ee):s(U,ee),U}t.forEach=o;function a(U,ee){for(let ce=0,de=U.length;ce{const ot=U[Pe];ot instanceof Object&&(de=l(e(ot),de)),U[Pe]=de});return U}t.merge=l;function f(U){return Array.isArray(U)||(U=r(U)),U.length===0}t.isEmpty=f,t.isFunction=U=>typeof U=="function",t.isUndefined=U=>U===void 0||U==="undefined";function h(U){return U==null||U==="undefined"||U==="null"}t.isNullOrUndefined=h,t.isObject=U=>Object.prototype.toString.call(U)==="[object Object]",t.isEmptyObject=U=>h(U)||t.isObject(U)&&f(U);function p(){return typeof globalThis.ngDevMode>"u"||!!globalThis.ngDevMode}t.isDevMode=p;function y(U){return typeof U=="number"&&!isNaN(U)}t.isValidNumber=y;function w(){}t.noop=w;function I(U){return U}t.identity=I;function E(U,ee){const ce=[];for(let de=0;deU+ce*de)}t.range=$;function S(U){return t.isObject(U)?U._id:String(U)}t.getMaybeId=S;function _(U){return U.filter(I)}t.compact=_;function k(U){return f(U)?U:Array.isArray(U)?_(U):Object.entries(U).filter(([,ee])=>!h(ee)&&!f(ee)).reduce((ee,[ce,de])=>({...ee,[ce]:de}),{})}t.compactObject=k;function z(){var U;return(U=localStorage.debug)==null?void 0:U.includes("@ngx-odm/rxdb")}t.isDevModeForced=z;function W(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}t.isTestEnvironment=W,t.logger={log:function(){const U="#8d2089";return W()||!p()||!z()?w:console.log.bind(console,"%c[DEBUG::@ngx-odm/rxdb]",`background:${U};color:#fff;padding:2px;font-size:normal;`)}(),table:function(){return W()||!p()||!z()?w:console.table.bind(console)}()};function Q(U="Event"){return function(ce){return p()?ce.pipe(Ay({next(de){t.logger.log(`observable:${U}:next:`,de)},error(de){t.logger.log(`observable:${U}:error:`,de.message)},complete(){t.logger.log(`observable:${U}:complete`)}})):ce}}t.debug=Q;function H(U=3,ee=1e4){return ce=>ce.pipe(uT({count:U,delay:(de,Pe)=>{const ot=Math.pow(2,Pe-1)*ee;return t.logger.log("replication:kinto:longpoll:retry",Pe,ot),IE(ot)}}))}t.retryWithBackoff=H,t.tapOnce=U=>ee=>Py(()=>(U(),ee)),t.deferUntil=U=>ee=>Py(()=>U.pipe(Cl(()=>ee))),t.getDefaultQuery=()=>({selector:{_deleted:{$eq:!1}},skip:0,sort:[{id:"asc"}]});const X={properties:{id:{type:"string"},_deleted:{type:"boolean"}},primaryKey:"id",indexes:[["_deleted","id"]]};t.getDefaultQuery(),t.getDefaultPreparedQuery=()=>Jl(X,t.getDefaultQuery())})($r||($r={}));const $O=()=>typeof window=="object"&&"fetch"in window?window.fetch.bind(window):fetch;function bb(t){return t&&t instanceof UB}function Sb(t=!1){return Mt(e=>(Array.isArray(e)?e:[...e.values()]).map(n=>{const r={...n._data};return t||(delete r._rev,delete r._attachments,delete r._deleted,delete r._meta),r}))}const{debug:zB,isEmptyObject:VB,isFunction:KB}=$r;function WB(t){return!VB(t)&&KB(t.run)}function Bu(t){return WB(t)?e=>new Ot(n=>e.subscribe(r=>t.run(()=>n.next(r)),r=>t.run(()=>n.error(r)),()=>t.run(()=>n.complete()))):e=>e}function tc(){return function(t,e,n){const r=n.value;return n.value=function(...i){return Py(()=>this.initialized$.pipe(Cl(()=>r.apply(this,i)),zB(`collection.${e}`)))},n}}function kt(){return function(t,e,n){const r=n.value;return n.value=async function(...i){return await hT(this.initialized$).catch(()=>{throw new Error(`Collection "${this.config.name}" was not initialized. Please check RxDB errors.`)}),r.apply(this,i)},n}}var Ib,Eb,Ob,kb,Db,xb;const{getMaybeId:qB,logger:vm,debug:HB,noop:QB}=$r;class Je{get initialized$(){return this._init$.asObservable()}get collection(){return this._collection}get db(){return this.dbService.db}get dbOptions(){return this.dbService.dbOptions}get replicationState(){return this._replicationState}get queryParams$(){var e;return(e=this.config.options)!=null&&e.useQueryParams?this.initialized$.pipe(Cl(()=>this.collection.queryParams.$)):im({})}constructor(e,n,r={},i=im(""),s=QB){this.config=e,this.dbService=n,this.ngZone=r,this.currentUrl$=i,this.updateQueryParamsFn=s,this._replicationState=null,this._init$=new ME,this.init(e)}destroy(){var e;(e=this.collection)==null||e.destroy()}setQueryParams(e){var n;(n=this.collection.queryParams)==null||n.set(e)}patchQueryParams(e){var n;(n=this.collection.queryParams)==null||n.patch(e)}async sync(){var e;if(bb(this.replicationState)){this.replicationState.reSync();return}if(typeof((e=this.config.options)==null?void 0:e.replicationStateFactory)=="function"){try{this._replicationState=this.config.options.replicationStateFactory(this.collection)}catch(n){vm.log("replicationState has error, ignore replication"),vm.log(n.message)}if(bb(this.replicationState))return this.replicationState.autoStart||this.replicationState.reSync(),Ry(window,"online").pipe(HB("online"),NE(()=>!this.replicationState.isStopped())).subscribe(()=>{this._replicationState.reSync()}),this.replicationState.startPromise}}async info(){return this.collection.getMetadata()}async import(e){const n=await this.collection.schema.hash,r={name:this.collection.name,schemaHash:n,docs:e};this.collection.importJSON(r)}async export(){return this.collection.exportJSON()}docs(e,n=!1){return(dT(e)?e:im(e)).pipe(Cl(r=>this.collection.find(r).$),Sb(n),Bu(this.ngZone),Pi(Ai))}docsByIds(e,n=!1){return this.collection.findByIds(e).$.pipe(Sb(n),Bu(this.ngZone),Pi(Ai))}count(e){return this.collection.count(e).$.pipe(Bu(this.ngZone),Pi(Ai))}get(e,n=!1){return this.collection.findOne(e).$.pipe(Mt(r=>r?r.toMutableJSON(n):null),Bu(this.ngZone),Pi(Ai))}async insert(e){return this.collection.insert(e)}async insertBulk(e){return this.collection.bulkInsert(e)}async upsert(e){return this.collection.upsert(e)}async upsertBulk(e){return this.collection.bulkUpsert(e)}async set(e,n){return this.collection.findOne(e).update({$set:n})}async updateBulk(e,n){return this.collection.find(e).update({$set:n})}async remove(e){const n=qB(e);return this.collection.findOne(n).remove()}async removeBulk(e){return Array.isArray(e)?this.collection.bulkRemove(e):{success:[...(await this.collection.find(e).remove().catch(()=>new Map)).values()],error:[]}}async clear(){return this.collection.remove()}async getAttachments(e){const n=await this.collection.findOne(e).exec();if(!n)return null;const r=n.allAttachments().map(i=>i.getData());return Promise.all(r)}async getAttachmentById(e,n){const r=await this.collection.findOne(e).exec();if(!r)return null;const i=r.getAttachment(n);return i?i.getData():null}async putAttachment(e,n){const r=await this.collection.findOne(e).exec();r&&await r.putAttachment(n)}async removeAttachment(e,n){const r=await this.collection.findOne(e).exec();if(!r)return;const i=r.getAttachment(n);i&&await i.remove()}async addHook(e,n,r=!1){this.collection[e](n,r)}async getLocal(e,n){const r=await this.collection.getLocal(e);return r?n?r==null?void 0:r.get(n):r==null?void 0:r.toJSON().data:null}getLocal$(e,n){return this.collection.getLocal$(e).pipe(Mt(r=>r?n?r.get(n):r.toJSON().data:null),Ms(),Bu(this.ngZone))}async insertLocal(e,n){await this.collection.insertLocal(e,n)}async upsertLocal(e,n){await this.collection.upsertLocal(e,n)}async setLocal(e,n,r){var s,o;const i=await this.collection.getLocal(e);await this.collection.upsertLocal(e,{...((o=(s=i==null?void 0:i.toJSON)==null?void 0:s.call(i))==null?void 0:o.data)||{},[n]:r})}async removeLocal(e){const n=await this.collection.getLocal(e);await(n==null?void 0:n.remove())}async init(e){var i,s,o,a;const{name:n,options:r}=e;try{await this.dbService.initCollections({[n]:e}),this._collection=this.db.collections[n],r!=null&&r.useQueryParams&&this.collection.queryParamsInit(this.currentUrl$,this.updateQueryParamsFn),this._init$.next(!0),this._init$.complete()}catch(l){if(l.message.includes("DM5")||l.message.includes("DB6")&&((i=l.parameters.previousSchema)==null?void 0:i.version)===((s=l.parameters.schema)==null?void 0:s.version))vm.log("Reload the page to fix the issue. The database is in a state where it can not be used."),await IO(this.db.name,this.db.storage),(a=(o=window==null?void 0:window.location)==null?void 0:o.reload)==null||a.call(o);else throw this._init$.complete(),l}}}tt([kt(),re("design:type",Function),re("design:paramtypes",[]),re("design:returntype",Promise)],Je.prototype,"sync",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[]),re("design:returntype",Promise)],Je.prototype,"info",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Array]),re("design:returntype",Promise)],Je.prototype,"import",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[]),re("design:returntype",Promise)],Je.prototype,"export",null);tt([tc(),re("design:type",Function),re("design:paramtypes",[Object,Object]),re("design:returntype",Ot)],Je.prototype,"docs",null);tt([tc(),re("design:type",Function),re("design:paramtypes",[Array,Object]),re("design:returntype",Ot)],Je.prototype,"docsByIds",null);tt([tc(),re("design:type",Function),re("design:paramtypes",[Object]),re("design:returntype",Ot)],Je.prototype,"count",null);tt([tc(),re("design:type",Function),re("design:paramtypes",[String,Object]),re("design:returntype",Ot)],Je.prototype,"get",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Object]),re("design:returntype",Promise)],Je.prototype,"insert",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Array]),re("design:returntype",Promise)],Je.prototype,"insertBulk",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Object]),re("design:returntype",Promise)],Je.prototype,"upsert",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Array]),re("design:returntype",Promise)],Je.prototype,"upsertBulk",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,Object]),re("design:returntype",Promise)],Je.prototype,"set",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Object,Object]),re("design:returntype",Promise)],Je.prototype,"updateBulk",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Object]),re("design:returntype",Promise)],Je.prototype,"remove",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[Object]),re("design:returntype",Promise)],Je.prototype,"removeBulk",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[]),re("design:returntype",Promise)],Je.prototype,"clear",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String]),re("design:returntype",Promise)],Je.prototype,"getAttachments",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,String]),re("design:returntype",Promise)],Je.prototype,"getAttachmentById",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,Object]),re("design:returntype",Promise)],Je.prototype,"putAttachment",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,String]),re("design:returntype",Promise)],Je.prototype,"removeAttachment",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[typeof(Ib=typeof Hook<"u"&&Hook)=="function"?Ib:Object,Object,Object]),re("design:returntype",Promise)],Je.prototype,"addHook",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,typeof(Eb=typeof K<"u"&&K)=="function"?Eb:Object]),re("design:returntype",Promise)],Je.prototype,"getLocal",null);tt([tc(),re("design:type",Function),re("design:paramtypes",[String,typeof(Ob=typeof K<"u"&&K)=="function"?Ob:Object]),re("design:returntype",Ot)],Je.prototype,"getLocal$",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,typeof(kb=typeof L<"u"&&L)=="function"?kb:Object]),re("design:returntype",Promise)],Je.prototype,"insertLocal",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,typeof(Db=typeof L<"u"&&L)=="function"?Db:Object]),re("design:returntype",Promise)],Je.prototype,"upsertLocal",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String,typeof(xb=typeof K<"u"&&K)=="function"?xb:Object,Object]),re("design:returntype",Promise)],Je.prototype,"setLocal",null);tt([kt(),re("design:type",Function),re("design:paramtypes",[String]),re("design:returntype",Promise)],Je.prototype,"removeLocal",null);var jO={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(gw,function(){var n=function(u,c){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,m){d.__proto__=m}||function(d,m){for(var v in m)Object.prototype.hasOwnProperty.call(m,v)&&(d[v]=m[v])})(u,c)},r=function(){return(r=Object.assign||function(u){for(var c,d=1,m=arguments.length;d"u"||s.Promise||(s.Promise=Promise);var f=Object.getPrototypeOf,h={}.hasOwnProperty;function p(u,c){return h.call(u,c)}function y(u,c){typeof c=="function"&&(c=c(f(u))),(typeof Reflect>"u"?o:Reflect.ownKeys)(c).forEach(function(d){I(u,d,c[d])})}var w=Object.defineProperty;function I(u,c,d,m){w(u,c,l(d&&p(d,"get")&&typeof d.get=="function"?{get:d.get,set:d.set,configurable:!0}:{value:d,configurable:!0,writable:!0},m))}function E(u){return{from:function(c){return u.prototype=Object.create(c.prototype),I(u.prototype,"constructor",u),{extend:y.bind(null,u.prototype)}}}}var $=Object.getOwnPropertyDescriptor,S=[].slice;function _(u,c,d){return S.call(u,c,d)}function k(u,c){return c(u)}function z(u){if(!u)throw new Error("Assertion Failed")}function W(u){s.setImmediate?setImmediate(u):setTimeout(u,0)}function Q(u,c){if(typeof c=="string"&&p(u,c))return u[c];if(!c)return u;if(typeof c!="string"){for(var d=[],m=0,v=c.length;m"u"?[]:function(){var u=Promise.resolve();if(typeof crypto>"u"||!crypto.subtle)return[u,f(u),u];var c=crypto.subtle.digest("SHA-512",new Uint8Array([0]));return[c,f(c),u]}(),mu=Vr[0],cr=Vr[1],Vr=Vr[2],cr=cr&&cr.then,yu=mu&&mu.constructor,Kh=!!Vr,vu=function(u,c){gu.push([u,c]),pc&&(queueMicrotask(Ax),pc=!1)},Wh=!0,pc=!0,Zs=[],mc=[],qh=hu,Zi={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:et,pgp:!1,env:{},finalize:et},fe=Zi,gu=[],eo=0,yc=[];function se(u){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");this._listeners=[],this._lib=!1;var c=this._PSD=fe;if(typeof u!="function"){if(u!==pu)throw new TypeError("Not a function");return this._state=arguments[1],this._value=arguments[2],void(this._state===!1&&Qh(this,this._value))}this._state=null,this._value=null,++c.ref,function d(m,v){try{v(function(g){if(m._state===null){if(g===m)throw new TypeError("A promise cannot be resolved with itself.");var b=m._lib&&qo();g&&typeof g.then=="function"?d(m,function(O,A){g instanceof se?g._then(O,A):g.then(O,A)}):(m._state=!0,m._value=g,K0(m)),b&&Ho()}},Qh.bind(null,m))}catch(g){Qh(m,g)}}(this,u)}var Hh={get:function(){var u=fe,c=_c;function d(m,v){var g=this,b=!u.global&&(u!==fe||c!==_c),O=b&&!ts(),A=new se(function(x,M){Yh(g,new V0(q0(m,u,b,O),q0(v,u,b,O),x,M,u))});return this._consoleTask&&(A._consoleTask=this._consoleTask),A}return d.prototype=pu,d},set:function(u){I(this,"then",u&&u.prototype===pu?Hh:{get:function(){return u},set:Hh.set})}};function V0(u,c,d,m,v){this.onFulfilled=typeof u=="function"?u:null,this.onRejected=typeof c=="function"?c:null,this.resolve=d,this.reject=m,this.psd=v}function Qh(u,c){var d,m;mc.push(c),u._state===null&&(d=u._lib&&qo(),c=qh(c),u._state=!1,u._value=c,m=u,Zs.some(function(v){return v._value===m._value})||Zs.push(m),K0(u),d&&Ho())}function K0(u){var c=u._listeners;u._listeners=[];for(var d=0,m=c.length;d.",H0="String expected.",Yo=[],Sc="__dbnames",Xh="readonly",Zh="readwrite";function ro(u,c){return u?c?function(){return u.apply(this,arguments)&&c.apply(this,arguments)}:u:c}var Q0={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function Ic(u){return typeof u!="string"||/\./.test(u)?function(c){return c}:function(c){return c[u]===void 0&&u in c&&delete(c=Pe(c))[u],c}}function Y0(){throw pe.Type()}function je(u,c){try{var d=G0(u),m=G0(c);if(d!==m)return d==="Array"?1:m==="Array"?-1:d==="binary"?1:m==="binary"?-1:d==="string"?1:m==="string"?-1:d==="Date"?1:m!=="Date"?NaN:-1;switch(d){case"number":case"Date":case"string":return cj+V&&F(j+C)})})}return F(0).then(function(){if(0=C})).length!==0?(M.forEach(function(F){B.push(function(){var j=R,V=F._cfg.dbschema;Pc(D,j,T),Pc(D,V,T),R=D._dbSchema=V;var q=up(j,V);q.add.forEach(function(te){lp(T,te[0],te[1].primKey,te[1].indexes)}),q.change.forEach(function(te){if(te.recreate)throw new pe.Upgrade("Not yet support for changing primary key");var he=T.objectStore(te.name);te.add.forEach(function(me){return Cc(he,me)}),te.change.forEach(function(me){he.deleteIndex(me.name),Cc(he,me)}),te.del.forEach(function(me){return he.deleteIndex(me)})});var Y=F._cfg.contentUpgrade;if(Y&&F._cfg.version>C){Dc(D,T),P._memoizedTables={};var ne=X(V);q.del.forEach(function(te){ne[te]=j[te]}),ap(D,[D.Transaction.prototype]),xc(D,[D.Transaction.prototype],o(ne),ne),P.schema=ne;var J,ie=Re(Y);return ie&&Qo(),q=se.follow(function(){var te;(J=Y(P))&&ie&&(te=ts.bind(null,null),J.then(te,te))}),J&&typeof J.then=="function"?se.resolve(J):q.then(function(){return J})}}),B.push(function(j){var V,q,Y=F._cfg.dbschema;V=Y,q=j,[].slice.call(q.db.objectStoreNames).forEach(function(ne){return V[ne]==null&&q.db.deleteObjectStore(ne)}),ap(D,[D.Transaction.prototype]),xc(D,[D.Transaction.prototype],D._storeNames,D._dbSchema),P.schema=D._dbSchema}),B.push(function(j){D.idbdb.objectStoreNames.contains("$meta")&&(Math.ceil(D.idbdb.version/10)===F._cfg.version?(D.idbdb.deleteObjectStore("$meta"),delete D._dbSchema.$meta,D._storeNames=D._storeNames.filter(function(V){return V!=="$meta"})):j.objectStore("$meta").put(F._cfg.version,"version"))})}),function F(){return B.length?se.resolve(B.shift()(P.idbtrans)).then(F):se.resolve()}().then(function(){sw(R,T)})):se.resolve();var D,C,P,T,B,R}).catch(b)):(o(v).forEach(function(M){lp(d,M,v[M].primKey,v[M].indexes)}),Dc(u,d),void se.follow(function(){return u.on.populate.fire(g)}).catch(b));var A,x})}function Vx(u,c){sw(u._dbSchema,c),c.db.version%10!=0||c.objectStoreNames.contains("$meta")||c.db.createObjectStore("$meta").add(Math.ceil(c.db.version/10-1),"version");var d=Ac(0,u.idbdb,c);Pc(u,u._dbSchema,c);for(var m=0,v=up(d,u._dbSchema).change;mMath.pow(2,62)?0:R.oldVersion,D=R<1,u.idbdb=B.result,g&&Vx(u,M),zx(u,R/10,M,P))},P),B.onsuccess=vt(function(){M=null;var R,F,j,V,q,Y=u.idbdb=B.result,ne=_(Y.objectStoreNames);if(0"u"?se.resolve():!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(C){function P(){return indexedDB.databases().finally(C)}A=setInterval(P,100),P()}).finally(function(){return clearInterval(A)}):Promise.resolve()).then(O)]).then(function(){return b(),c.onReadyBeingFired=[],se.resolve(dp(function(){return u.on.ready.fire(u.vip)})).then(function C(){if(0c.limit?C.length=c.limit:u.length===c.limit&&C.length=F.limit&&(!F.values||Y.req.values)&&Gx(Y.req.query.range,F.query.range)}),!1,j,V];case"count":return q=V.find(function(Y){return mw(Y.req.query.range,F.query.range)}),[q,!!q,j,V]}}(c,d,"query",g),M=x[0],D=x[1],C=x[2],P=x[3];return M&&D?M.obsSet=g.obsSet:(D=m.query(g).then(function(T){var B=T.result;if(M&&(M.res=B),b){for(var R=0,F=B.length;R{var o=(async()=>{var a=$e(n);a.autoOpen=!1;var l=new Yy(i,a),f={[Od]:eF(r),[GB]:"++sequence, id",[Ab]:"id"};return l.version(1).stores(f),await l.open(),{dexieDb:l,dexieTable:l[Od],dexieAttachmentsTable:l[Ab],booleanIndexes:tF(r)}})();return Pb.set(i,s),Mf.set(s,0),o});return s}async function XB(t){var e=await t,n=Mf.get(t),r=n-1;r===0?(e.dexieDb.close(),Mf.delete(t)):Mf.set(t,r)}var Gy="__";function nc(t){var e=t.split(".");if(e.length>1)return e.map(r=>nc(r)).join(".");if(t.startsWith("|")){var n=t.substring(1);return Gy+n}else return t}function zO(t){var e=t.split(".");if(e.length>1)return e.map(r=>zO(r)).join(".");if(t.startsWith(Gy)){var n=t.substring(Gy.length);return"|"+n}else return t}function ZB(t,e){return e&&(e=$e(e),e=Jy(e),t.forEach(n=>{var r=Ts(e,n),i=r?"1":"0";rE(e,n,i)}),e)}function VO(t,e){return e&&(e=$e(e),e=Xy(e),t.forEach(n=>{var r=Ts(e,n),i=r==="1";rE(e,n,i)}),e)}function Jy(t){if(!t||typeof t=="string"||typeof t=="number"||typeof t=="boolean")return t;if(Array.isArray(t))return t.map(n=>Jy(n));if(typeof t=="object"){var e={};return Object.entries(t).forEach(([n,r])=>{typeof r=="object"&&(r=Jy(r)),e[nc(n)]=r}),e}}function Xy(t){if(!t||typeof t=="string"||typeof t=="number"||typeof t=="boolean")return t;if(Array.isArray(t))return t.map(n=>Xy(n));if(typeof t=="object"){var e={};return Object.entries(t).forEach(([n,r])=>{(typeof r=="object"||Array.isArray(t))&&(r=Xy(r)),e[zO(n)]=r}),e}}function eF(t){var e=[],n=$n(t.primaryKey);e.push([n]),e.push(["_deleted",n]),t.indexes&&t.indexes.forEach(s=>{var o=ja(s);e.push(o)}),e.push(["_meta.lwt",n]),e.push(["_meta.lwt"]),e=e.map(s=>s.map(o=>nc(o)));var r=e.map(s=>s.length===1?s[0]:"["+s.join("+")+"]");r=r.filter((s,o,a)=>a.indexOf(s)===o);var i=r.join(", ");return i}async function Rb(t,e){var n=await t,r=await n.dexieTable.bulkGet(e);return r.map(i=>VO(n.booleanIndexes,i))}function of(t,e){return t+"||"+e}function tF(t){var e=new Set,n=[];return t.indexes?(t.indexes.forEach(r=>{var i=ja(r);i.forEach(s=>{if(!e.has(s)){e.add(s);var o=zi(t,s);o.type==="boolean"&&n.push(s)}})}),n.push("_deleted"),RP(n)):n}function Tb(t){return t===ci?-1/0:t}function Mb(t,e,n){if(t.includes(e)){var r=n===Tr||n===!0?"1":"0";return r}else return n}function KO(t,e,n){if(!n){if(typeof window>"u")throw new Error("IDBKeyRange missing");n=window.IDBKeyRange}var r=e.startKeys.map((o,a)=>{var l=e.index[a];return Mb(t,l,o)}).map(Tb),i=e.endKeys.map((o,a)=>{var l=e.index[a];return Mb(t,l,o)}).map(Tb),s=n.bound(r,i,!e.inclusiveStart,!e.inclusiveEnd);return s}async function Nb(t,e){var n=await t.internals,r=e.query,i=r.skip?r.skip:0,s=r.limit?r.limit:1/0,o=i+s,a=e.queryPlan,l=!1;a.selectorSatisfiedByIndex||(l=Oh(t.schema,e.query));var f=KO(n.booleanIndexes,a,n.dexieDb._options.IDBKeyRange),h=a.index,p=[];if(await n.dexieDb.transaction("r",n.dexieTable,async w=>{var I=w.idbtrans,E=I.objectStore(Od),$,S;S="["+h.map(k=>nc(k)).join("+")+"]",$=E.index(S);var _=$.openCursor(f);await new Promise(k=>{_.onsuccess=function(z){var W=z.target.result;if(W){var Q=VO(n.booleanIndexes,W.value);(!l||l(Q))&&p.push(Q),a.sortSatisfiedByIndex&&p.length===o?k():W.continue()}else k()}})}),!a.sortSatisfiedByIndex){var y=$g(t.schema,e.query);p=p.sort(y)}return p=p.slice(i,o),{documents:p}}async function nF(t,e){var n=await t.internals,r=e.queryPlan,i=r.index,s=KO(n.booleanIndexes,r,n.dexieDb._options.IDBKeyRange),o=-1;return await n.dexieDb.transaction("r",n.dexieTable,async a=>{var l=a.idbtrans,f=l.objectStore(Od),h,p;p="["+i.map(w=>nc(w)).join("+")+"]",h=f.index(p);var y=h.count(s);o=await new Promise((w,I)=>{y.onsuccess=function(){w(y.result)},y.onerror=E=>I(E)})}),o}var rF=Ft(),iF=function(){function t(n,r,i,s,o,a,l){this.changes$=new Kt,this.instanceId=rF++,this.storage=n,this.databaseName=r,this.collectionName=i,this.schema=s,this.internals=o,this.options=a,this.settings=l,this.primaryPath=$n(this.schema.primaryKey)}var e=t.prototype;return e.bulkWrite=async function(r,i){uo(this),r.forEach(h=>{if(!h.document._rev||h.previous&&!h.previous._rev)throw le("SNH",{args:{row:h}})});var s=await this.internals,o={success:[],error:[]},a=r.map(h=>h.document[this.primaryPath]),l;if(await s.dexieDb.transaction("rw",s.dexieTable,s.dexieAttachmentsTable,async()=>{var h=new Map,p=await Rb(this.internals,a);p.forEach(I=>{var E=I;return E&&h.set(E[this.primaryPath],E),E}),l=sO(this,this.primaryPath,h,r,i),o.error=l.errors;var y=[];l.bulkInsertDocs.forEach(I=>{o.success.push(I.document),y.push(I.document)}),l.bulkUpdateDocs.forEach(I=>{o.success.push(I.document),y.push(I.document)}),y=y.map(I=>ZB(s.booleanIndexes,I)),y.length>0&&await s.dexieTable.bulkPut(y);var w=[];l.attachmentsAdd.forEach(I=>{w.push({id:of(I.documentId,I.attachmentId),data:I.attachmentData.data})}),l.attachmentsUpdate.forEach(I=>{w.push({id:of(I.documentId,I.attachmentId),data:I.attachmentData.data})}),await s.dexieAttachmentsTable.bulkPut(w),await s.dexieAttachmentsTable.bulkDelete(l.attachmentsRemove.map(I=>of(I.documentId,I.attachmentId)))}),l=ye(l),l.eventBulk.events.length>0){var f=ye(l.newestRow).document;l.eventBulk.checkpoint={id:f[this.primaryPath],lwt:f._meta.lwt},l.eventBulk.endTime=Ft(),this.changes$.next(l.eventBulk)}return o},e.findDocumentsById=async function(r,i){uo(this);var s=await this.internals,o=[];return await s.dexieDb.transaction("r",s.dexieTable,async()=>{var a=await Rb(this.internals,r);a.forEach(l=>{l&&(!l._deleted||i)&&o.push(l)})}),o},e.query=function(r){return uo(this),Nb(this,r)},e.count=async function(r){if(r.queryPlan.selectorSatisfiedByIndex){var i=await nF(this,r);return{count:i,mode:"fast"}}else{var s=await Nb(this,r);return{count:s.documents.length,mode:"slow"}}},e.changeStream=function(){return uo(this),this.changes$.asObservable()},e.cleanup=async function(r){uo(this);var i=await this.internals;return await i.dexieDb.transaction("rw",i.dexieTable,async()=>{var s=Ft()-r,o=await i.dexieTable.where("_meta.lwt").below(s).toArray(),a=[];o.forEach(l=>{l._deleted==="1"&&a.push(l[this.primaryPath])}),await i.dexieTable.bulkDelete(a)}),!0},e.getAttachmentData=async function(r,i,s){uo(this);var o=await this.internals,a=of(r,i);return await o.dexieDb.transaction("r",o.dexieAttachmentsTable,async()=>{var l=await o.dexieAttachmentsTable.get(a);if(l)return l.data;throw new Error("attachment missing documentId: "+r+" attachmentId: "+i)})},e.remove=async function(){uo(this);var r=await this.internals;return await r.dexieTable.clear(),this.close()},e.close=function(){return this.closed?this.closed:(this.closed=(async()=>{this.changes$.complete(),await XB(this.internals)})(),this.closed)},e.conflictResultionTasks=function(){return new Kt},e.resolveConflictResultionTask=async function(r){},t}();async function sF(t,e,n){var r=JB(e.databaseName,e.collectionName,n,e.schema),i=new iF(t,e.databaseName,e.collectionName,e.schema,r,e.options,n);return await FB(UO,e,i),Promise.resolve(i)}function uo(t){if(t.closed)throw new Error("RxStorageInstanceDexie is closed "+t.databaseName+"-"+t.collectionName)}var oF=function(){function t(n){this.name=UO,this.rxdbVersion=wg,this.settings=n}var e=t.prototype;return e.createStorageInstance=function(r){return oO(r),sF(this,r,this.settings)},t}();function aF(t={}){var e=new oF(t);return e}function uF(t,e,n,r,i){for(var s=i+1;r<=i;){var o=r+i>>>1,a=t[o],l=n!==void 0?n(a,e):a-e;l>=0?(s=o,i=o-1):r=o+1}return s}function lF(t,e,n,r,i){for(var s=i+1;r<=i;){var o=r+i>>>1,a=t[o],l=n!==void 0?n(a,e):a-e;l>0?(s=o,i=o-1):r=o+1}return s}function cF(t,e,n,r,i){for(var s=r-1;r<=i;){var o=r+i>>>1,a=t[o],l=n!==void 0?n(a,e):a-e;l<0?(s=o,r=o+1):i=o-1}return s}function fF(t,e,n,r,i){for(var s=r-1;r<=i;){var o=r+i>>>1,a=t[o],l=n!==void 0?n(a,e):a-e;l<=0?(s=o,r=o+1):i=o-1}return s}function dF(t,e,n,r,i){for(;r<=i;){var s=r+i>>>1,o=t[s],a=n!==void 0?n(o,e):o-e;if(a===0)return s;a<=0?r=s+1:i=s-1}return-1}function rc(t,e,n,r,i,s){return typeof n=="function"?s(t,e,n,r===void 0?0:r|0,i===void 0?t.length-1:i|0):s(t,e,void 0,n===void 0?0:n|0,r===void 0?t.length-1:r|0)}function hF(t,e,n,r,i){return rc(t,e,n,r,i,uF)}function Bb(t,e,n,r,i){return rc(t,e,n,r,i,lF)}function pF(t,e,n,r,i){return rc(t,e,n,r,i,cF)}function mF(t,e,n,r,i){return rc(t,e,n,r,i,fF)}function WO(t,e,n,r,i){return rc(t,e,n,r,i,dF)}function qO(t,e,n){return[t,e,n].join("--memory--")}function af(t){if(t.internals.removed)throw new Error("removed")}function uf(t,e){return t+"||"+e}function yF(t,e){return t.indexString{var o=s.docsWithIndex,a=s.getIndexableString(r),l=WO(o,{indexString:a},rl);o.splice(l,1)})}function rl(t,e){var n=t.indexString,r=e.indexString;return nja(i)):[];r.push(["_deleted","_meta.lwt",n]),r.forEach(i=>{t.byIndex[Zy(i)]={index:i,docsWithIndex:[],getIndexableString:$B(e,i)}})}function Zy(t){return t.join(",")}var Lb=new Set,wF=function(){function t(n,r,i,s,o,a,l){this.closed=!1,this.storage=n,this.databaseName=r,this.collectionName=i,this.schema=s,this.internals=o,this.options=a,this.settings=l,Lb.add(this),this.primaryPath=$n(this.schema.primaryKey)}var e=t.prototype;return e.bulkWrite=function(r,i){this.ensurePersistence(),af(this);for(var s=this.internals,o=this.internals.documents,a=this.primaryPath,l=sO(this,a,o,r,i),f=l.errors,h=new Array(l.bulkInsertDocs.length),p=l.bulkInsertDocs,y=0;y{this.internals.ensurePersistenceIdlePromise=void 0,this.ensurePersistence()})),l.eventBulk.events.length>0){var k=ye(l.newestRow).document;l.eventBulk.checkpoint={id:k[a],lwt:k._meta.lwt},l.eventBulk.endTime=Ft(),dd.then(()=>{s.changes$.next(l.eventBulk)})}var z=Promise.resolve({success:h,error:f});return z},e.ensurePersistence=function(){if(this.internals.ensurePersistenceTask){var r=this.internals,i=this.internals.documents,s=this.primaryPath,o=this.internals.ensurePersistenceTask;this.internals.ensurePersistenceTask=void 0;for(var a=Object.values(this.internals.byIndex),l=o.bulkInsertDocs,f=0;f{_.set(uf(k.documentId,k.attachmentId),{writeData:k.attachmentData,digest:k.digest})}),this.schema.attachments&&(o.attachmentsUpdate.forEach(k=>{_.set(uf(k.documentId,k.attachmentId),{writeData:k.attachmentData,digest:k.digest})}),o.attachmentsRemove.forEach(k=>{_.delete(uf(k.documentId,k.attachmentId))}))}}},e.findDocumentsById=function(r,i){this.ensurePersistence();var s=this.internals.documents,o=[];if(s.size===0)return Promise.resolve(o);for(var a=0;az)break;var X=H.doc;(!f||f(X))&&W.push(X),W.length>=l&&!p&&(Q=!0),k++}if(p){var U=$g(this.schema,r.query);W=W.sort(U)}return W=W.slice(o,l),Promise.resolve({documents:W})},e.count=async function(r){this.ensurePersistence();var i=await this.query(r);return{count:i.documents.length,mode:"fast"}},e.cleanup=function(r){this.ensurePersistence();for(var i=Ft()-r,s=["_deleted","_meta.lwt",this.primaryPath],o=Zy(s),a=this.internals.byIndex[o].docsWithIndex,l=vb(this.schema,s,[!0,0,""]),f=Bb(a,{indexString:l},rl),h=!1;!h;){var p=a[f];!p||p.doc._meta.lwt>i?h=!0:(vF(this.primaryPath,this.schema,this.internals,p.doc),f++)}return dd},e.getAttachmentData=function(r,i,s){this.ensurePersistence(),af(this);var o=uf(r,i),a=this.internals.attachments.get(o);if(!s||!a||a.digest!==s)throw new Error("attachment does not exist: "+o);return Promise.resolve(a.writeData.data)},e.changeStream=function(){return af(this),this.internals.changes$.asObservable()},e.remove=async function(){if(this.closed)throw new Error("closed");this.ensurePersistence(),af(this),this.internals.removed=!0,this.storage.collectionStates.delete(qO(this.databaseName,this.collectionName,this.schema.version)),await this.close()},e.close=function(){return Lb.delete(this),this.ensurePersistence(),this.closed||(this.closed=!0,this.internals.refCount=this.internals.refCount-1),un},e.conflictResultionTasks=function(){return this.internals.conflictResultionTasks$.asObservable()},e.resolveConflictResultionTask=function(r){return un},t}();function _F(t,e,n){var r=qO(e.databaseName,e.collectionName,e.schema.version),i=t.collectionStates.get(r);if(!i)i={id:iu(5),schema:e.schema,removed:!1,refCount:1,documents:new Map,attachments:e.schema.attachments?new Map:void 0,byIndex:{},conflictResultionTasks$:new Kt,changes$:new Kt},gF(i,e.schema),t.collectionStates.set(r,i);else{if(e.devMode&&!Va(i.schema,e.schema))throw new Error("storage was already created with a different schema");i.refCount=i.refCount+1}var s=new wF(t,e.databaseName,e.collectionName,e.schema,i,e.options,n);return Promise.resolve(s)}var bF=new Map;function $b(t={}){var e={name:"memory",rxdbVersion:wg,collectionStates:bF,createStorageInstance(n){oO(n);var r=Object.assign({},t,n.options);return _F(this,n,r)}};return e}function SF(t){let{name:e,options:n,storage:r,...i}=t;if(!r)switch(n.storageType){case"dexie":r=aF(n.storageOptions);break;case"memory":r=$b(n.storageOptions);break;default:r=$b(n.storageOptions);break}return{name:e,storage:r,options:n,...i}}const IF=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,jb=t=>{if(typeof t!="string")throw new TypeError("Invalid argument expected string");const e=t.match(IF);if(!e)throw new Error(`Invalid argument not valid semver ('${t}' received)`);return e.shift(),e},Ub=t=>t==="*"||t==="x"||t==="X",zb=t=>{const e=parseInt(t,10);return isNaN(e)?t:e},EF=(t,e)=>typeof t!=typeof e?[String(t),String(e)]:[t,e],OF=(t,e)=>{if(Ub(t)||Ub(e))return 0;const[n,r]=EF(zb(t),zb(e));return n>r?1:n{for(let n=0;n{const n=jb(t),r=jb(e),i=n.pop(),s=r.pop(),o=Vb(n,r);return o!==0?o:i&&s?Vb(i.split("."),s.split(".")):i||s?i?-1:1:0},DF=(t,e,n)=>{xF(n);const r=kF(t,e);return HO[n].includes(r)},HO={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Kb=Object.keys(HO),xF=t=>{if(typeof t!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof t}`);if(Kb.indexOf(t)===-1)throw new Error(`Invalid operator, expected one of ${Kb.join("|")}`)},{logger:Jr,getDefaultPreparedQuery:CF}=$r,Wb="storage-token|storageToken",Jg=async t=>{let e;try{const r=await $O()(t);if(r.ok)e=await r.json();else throw new Error(`Failed to fetch schema from "${t}", status: ${r.status}`)}catch{throw new Error(`Failed to fetch schema from "${t}"`)}return e},AF=async t=>{var e;try{const n={};for(const r in t){const i=t[r];!i.schema&&((e=i.options)!=null&&e.schemaUrl)&&(i.schema=await Jg(i.options.schemaUrl)),n[i.name]=i}return n}catch(n){throw new Error(n.message)}},PF=async(t,e)=>{let n;const i=await $O()(t);if(i.ok)n=await i.json();else throw new Error(`Failed to fetch db dump from "${t}", status: ${i.status}`);if(!e||!Object.keys(e).length)throw new Error("collections must be initialized before importing");for(const s of n.collections){const o=e[s.name];if(o)s.schemaHash=o.schema._hash;else throw new Error("no such collection as provided in dump")}return n},RF=async(t,e,n)=>{var s,o;let r={};if(t.name!=="dexie")return;const i=(s=await e.internals)==null?void 0:s.dexieTable;if(r=(o=await i.get(Wb))==null?void 0:o.data,!(r!=null&&r.rxdbVersion)||DF(n,r.rxdbVersion,">"))try{await i.update(Wb,{data:{...r,rxdbVersion:n}}),Jr.log("prepare-plugin: migrated internal storage to",n)}catch{throw new Error("prepare-plugin: unable to migrate internal storage")}},TF=async({database:t,creator:e})=>{var o;const n=await EO(t);Jr.log("prepare-plugin: hook:createRxDatabase:after");const{storage:r,internalStore:i,rxdbVersion:s}=t;if(await RF(r,i,s),!(!((o=e.options)!=null&&o.dumpPath)||!n))try{const a=await PF(e.options.dumpPath,t.collections);await t.importJSON(a),Jr.log(`prepare-plugin: imported dump for db "${t.name}"`)}catch(a){Jr.log("prepare-plugin: imported dump error",a)}},MF=async t=>{if(typeof t=="string"){const e=await Jg(t);if(!e)throw new Error(`Failed to fetch schema from "${t}"`);t=e}},NF=async({collection:t,creator:e})=>{var l,f,h;Jr.log("prepare-plugin: hook:createRxCollection:before");const n=await t.getMetadata();Jr.log("prepare-plugin: hook:createRxCollection:before",n);const r=((l=e.options)==null?void 0:l.initialDocs)||[],i=await a();if(!r.length)return;if(i||!n.isFirstTimeInstantiated){if(!((f=e.options)!=null&&f.recreate)||(h=e.options)!=null&&h.replication)return;Jr.log(`prepare-plugin: collection "${t.name}" already has ${i} docs (including _deleted), but recreate option is set`)}const s=await t.schema.hash,o={name:t.name,schemaHash:s,docs:r};try{const{success:p,error:y}=await t.importJSON(o),w=await a();Jr.log(`prepare-plugin: imported ${p.length} docs for collection "${t.name}", errors count ${y.length}, current docs count ${w}`),Jr.table(p)}catch(p){Jr.log("prepare-plugin: imported dump error",p)}return;async function a(){const{count:p}=await t.storageInstance.count(CF()).catch(()=>({count:0}));return p}},BF={name:"prepare-plugin",rxdb:!0,prototypes:{RxDatabase:t=>{Object.assign(t,{fetchSchema:Jg})},RxCollection:t=>{Object.assign(t,{getMetadata:async function(){const n=await EO(this.database),r=await Kg(this.database.internalStore),{id:i,data:s,_meta:o,_rev:a}=r.filter(l=>l.data.name===this.name).at(0)||{};return{id:i||this.name,databaseName:this.database.name,collectionName:(s==null?void 0:s.name)||this.name,storageName:this.storageInstance.originalStorageInstance.storage.name,last_modified:o!=null&&o.lwt?Math.floor(o==null?void 0:o.lwt):Date.now(),rev:a?Number(a==null?void 0:a.at(0)):1,isFirstTimeInstantiated:n}}})}},hooks:{createRxDatabase:{after:TF},preCreateRxSchema:{before:MF},createRxCollection:{after:NF}}};function QO(t,e){const n={};if(Array.isArray(e))for(const r of e){const i=Object.getOwnPropertyDescriptor(t,r);i!=null&&i.enumerable&&Object.defineProperty(n,r,i)}else for(const r of Reflect.ownKeys(t)){const i=Object.getOwnPropertyDescriptor(t,r);if(i.enumerable){const s=t[r];e(r,s,t)&&Object.defineProperty(n,r,i)}}return n}const YO="%[a-f0-9]{2}",qb=new RegExp("("+YO+")|([^%]+?)","gi"),Hb=new RegExp("("+YO+")+","gi");function ev(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(t.length===1)return t;e=e||1;const n=t.slice(0,e),r=t.slice(e);return Array.prototype.concat.call([],ev(n),ev(r))}function FF(t){try{return decodeURIComponent(t)}catch{let e=t.match(qb)||[];for(let n=1;nt==null,UF=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),tv=Symbol("encodeFragmentIdentifier");function zF(t){switch(t.arrayFormat){case"index":return e=>(n,r)=>{const i=n.length;return r===void 0||t.skipNull&&r===null||t.skipEmptyString&&r===""?n:r===null?[...n,[Nt(e,t),"[",i,"]"].join("")]:[...n,[Nt(e,t),"[",Nt(i,t),"]=",Nt(r,t)].join("")]};case"bracket":return e=>(n,r)=>r===void 0||t.skipNull&&r===null||t.skipEmptyString&&r===""?n:r===null?[...n,[Nt(e,t),"[]"].join("")]:[...n,[Nt(e,t),"[]=",Nt(r,t)].join("")];case"colon-list-separator":return e=>(n,r)=>r===void 0||t.skipNull&&r===null||t.skipEmptyString&&r===""?n:r===null?[...n,[Nt(e,t),":list="].join("")]:[...n,[Nt(e,t),":list=",Nt(r,t)].join("")];case"comma":case"separator":case"bracket-separator":{const e=t.arrayFormat==="bracket-separator"?"[]=":"=";return n=>(r,i)=>i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:(i=i===null?"":i,r.length===0?[[Nt(n,t),e,Nt(i,t)].join("")]:[[r,Nt(i,t)].join(t.arrayFormatSeparator)])}default:return e=>(n,r)=>r===void 0||t.skipNull&&r===null||t.skipEmptyString&&r===""?n:r===null?[...n,Nt(e,t)]:[...n,[Nt(e,t),"=",Nt(r,t)].join("")]}}function VF(t){let e;switch(t.arrayFormat){case"index":return(n,r,i)=>{if(e=/\[(\d*)]$/.exec(n),n=n.replace(/\[\d*]$/,""),!e){i[n]=r;return}i[n]===void 0&&(i[n]={}),i[n][e[1]]=r};case"bracket":return(n,r,i)=>{if(e=/(\[])$/.exec(n),n=n.replace(/\[]$/,""),!e){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"colon-list-separator":return(n,r,i)=>{if(e=/(:list)$/.exec(n),n=n.replace(/:list$/,""),!e){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"comma":case"separator":return(n,r,i)=>{const s=typeof r=="string"&&r.includes(t.arrayFormatSeparator),o=typeof r=="string"&&!s&&Oi(r,t).includes(t.arrayFormatSeparator);r=o?Oi(r,t):r;const a=s||o?r.split(t.arrayFormatSeparator).map(l=>Oi(l,t)):r===null?r:Oi(r,t);i[n]=a};case"bracket-separator":return(n,r,i)=>{const s=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!s){i[n]=r&&Oi(r,t);return}const o=r===null?[]:r.split(t.arrayFormatSeparator).map(a=>Oi(a,t));if(i[n]===void 0){i[n]=o;return}i[n]=[...i[n],...o]};default:return(n,r,i)=>{if(i[n]===void 0){i[n]=r;return}i[n]=[...[i[n]].flat(),r]}}}function JO(t){if(typeof t!="string"||t.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Nt(t,e){return e.encode?e.strict?UF(t):encodeURIComponent(t):t}function Oi(t,e){return e.decode?$F(t):t}function XO(t){return Array.isArray(t)?t.sort():typeof t=="object"?XO(Object.keys(t)).sort((e,n)=>Number(e)-Number(n)).map(e=>t[e]):t}function ZO(t){const e=t.indexOf("#");return e!==-1&&(t=t.slice(0,e)),t}function KF(t){let e="";const n=t.indexOf("#");return n!==-1&&(e=t.slice(n)),e}function Qb(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&typeof t=="string"&&t.trim()!==""?t=Number(t):e.parseBooleans&&t!==null&&(t.toLowerCase()==="true"||t.toLowerCase()==="false")&&(t=t.toLowerCase()==="true"),t}function Xg(t){t=ZO(t);const e=t.indexOf("?");return e===-1?"":t.slice(e+1)}function Zg(t,e){e={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...e},JO(e.arrayFormatSeparator);const n=VF(e),r=Object.create(null);if(typeof t!="string"||(t=t.trim().replace(/^[?#&]/,""),!t))return r;for(const i of t.split("&")){if(i==="")continue;const s=e.decode?i.replace(/\+/g," "):i;let[o,a]=GO(s,"=");o===void 0&&(o=s),a=a===void 0?null:["comma","separator","bracket-separator"].includes(e.arrayFormat)?a:Oi(a,e),n(Oi(o,e),a,r)}for(const[i,s]of Object.entries(r))if(typeof s=="object"&&s!==null)for(const[o,a]of Object.entries(s))s[o]=Qb(a,e);else r[i]=Qb(s,e);return e.sort===!1?r:(e.sort===!0?Object.keys(r).sort():Object.keys(r).sort(e.sort)).reduce((i,s)=>{const o=r[s];return o&&typeof o=="object"&&!Array.isArray(o)?i[s]=XO(o):i[s]=o,i},Object.create(null))}function ek(t,e){if(!t)return"";e={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...e},JO(e.arrayFormatSeparator);const n=o=>e.skipNull&&jF(t[o])||e.skipEmptyString&&t[o]==="",r=zF(e),i={};for(const[o,a]of Object.entries(t))n(o)||(i[o]=a);const s=Object.keys(i);return e.sort!==!1&&s.sort(e.sort),s.map(o=>{const a=t[o];return a===void 0?"":a===null?Nt(o,e):Array.isArray(a)?a.length===0&&e.arrayFormat==="bracket-separator"?Nt(o,e)+"[]":a.reduce(r(o),[]).join("&"):Nt(o,e)+"="+Nt(a,e)}).filter(o=>o.length>0).join("&")}function tk(t,e){var i;e={decode:!0,...e};let[n,r]=GO(t,"#");return n===void 0&&(n=t),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:Zg(Xg(t),e),...e&&e.parseFragmentIdentifier&&r?{fragmentIdentifier:Oi(r,e)}:{}}}function nk(t,e){e={encode:!0,strict:!0,[tv]:!0,...e};const n=ZO(t.url).split("?")[0]||"",r=Xg(t.url),i={...Zg(r,{sort:!1}),...t.query};let s=ek(i,e);s&&(s=`?${s}`);let o=KF(t.url);if(t.fragmentIdentifier){const a=new URL(n);a.hash=t.fragmentIdentifier,o=e[tv]?a.hash:`#${t.fragmentIdentifier}`}return`${n}${s}${o}`}function rk(t,e,n){n={parseFragmentIdentifier:!0,[tv]:!1,...n};const{url:r,query:i,fragmentIdentifier:s}=tk(t,n);return nk({url:r,query:QO(i,e),fragmentIdentifier:s},n)}function WF(t,e,n){const r=Array.isArray(e)?i=>!e.includes(i):(i,s)=>!e(i,s);return rk(t,r,n)}const gm=Object.freeze(Object.defineProperty({__proto__:null,exclude:WF,extract:Xg,parse:Zg,parseUrl:tk,pick:rk,stringify:ek,stringifyUrl:nk},Symbol.toStringTag,{value:"Module"})),{keys:Yb,isEmpty:Gb,isNullOrUndefined:nv}=$r,qF=({selector:t,sort:e,limit:n,skip:r},i)=>{const s=Yb(i.jsonSchema.properties);return Gb(t)||(t=QO(t,o=>!o.startsWith("$")&&!o.includes(".")&&s.includes(o))),Gb(e)||(e=e==null?void 0:e.filter(o=>s.includes(Yb(o)[0]))),(nv(n)||isNaN(n))&&(n=void 0),(nv(r)||isNaN(r))&&(r=void 0),{selector:t,sort:e,limit:n,skip:r}},Jb=(t,e)=>{t=gm.extract(t);const n=gm.pick(t,["selector","sort","limit","skip"]),r=gm.parse(n,{parseNumbers:!0,parseBooleans:!0}),{selector:i,sort:s,limit:o,skip:a}=r,l=i?JSON.parse(i):void 0,f=s?JSON.parse(s):void 0;return qF({selector:l,sort:f,limit:o,skip:a},e)},lf=t=>nv(t)?"":JSON.stringify(t),{logger:Xb,compactObject:HF}=$r,QF={name:"query-params-plugin",rxdb:!0,prototypes:{RxCollection:t=>{const e=new Cr({});let n=!1,r,i=!1,s="",o=()=>Promise.resolve(!1);function a(h=RE,p){var y;n=!!((y=this.options)!=null&&y.useQueryParams),r=this.schema,!(!n||i)&&(o=p,h.pipe(Ms(),Ay(w=>{s=w}),Mt(w=>Jb(w,r)),kE(w=>(Xb.log("Error in parsing url to mango query",w),e)),Ay(w=>{Xb.log("queryParams",w)}),NE(()=>!this.destroyed)).subscribe(e),i=!0)}function l(h){if(!n)return;const{selector:p,sort:y,limit:w,skip:I}=h,E={limit:w,skip:I};p&&(E.selector=lf(h.selector)),y&&(E.sort=lf(h.sort)),o(E)}function f(h){if(!n)return;const p=Jb(s,r),y={selector:lf(h.selector||p.selector),sort:lf(h.sort||p.sort),limit:h.limit||p.limit,skip:h.skip||p.skip};o(HF(y))}Object.assign(t,{queryParams:{$:e.asObservable(),get:()=>e.getValue(),set:l,patch:f}},{queryParamsInit:a})}},hooks:{createRxCollection:{}}};var ik={minimumDeletedTime:1e3*60*60*24*31,minimumCollectionAge:1e3*60,runEach:1e3*60*5,awaitReplicationsInSync:!0,waitForLeadership:!0},wm=dd;async function YF(t){var e=t.database,n=Object.assign({},ik,e.cleanupPolicy?e.cleanupPolicy:{});await t.promiseWait(n.minimumCollectionAge),!t.destroyed&&(n.waitForLeadership&&await e.waitForLeadership(),!t.destroyed&&(await sk(t,n),await GF(t,n)))}async function sk(t,e){for(var n=t.database,r=t.storageInstance,i=!1;!i&&!t.destroyed;){if(e.awaitReplicationsInSync){var s=LO.get(t);s&&await Promise.all(s.map(o=>{if(!o.isStopped())return o.awaitInSync()}))}if(await n.requestIdlePromise(),t.destroyed)return;wm=wm.then(()=>t.destroyed?!0:r.cleanup(e.minimumDeletedTime)),i=await wm}}async function GF(t,e){for(;!t.destroyed;){if(await t.promiseWait(e.runEach),t.destroyed)return;await sk(t,e)}}var JF={name:"cleanup",rxdb:!0,prototypes:{RxCollection:t=>{t.cleanup=async function(e){var n=Object.assign({},ik,this.database.cleanupPolicy?this.database.cleanupPolicy:{});typeof e>"u"&&(e=n.minimumDeletedTime);for(var r=!1;!r&&!this.destroyed;)r=await this.storageInstance.cleanup(e)}}},hooks:{createRxCollection:{after:t=>{YF(t.collection)}}}};function XF(t){var e={name:this.name,instanceToken:this.token,collections:[]},n=Object.keys(this.collections).filter(r=>!t||t.includes(r)).filter(r=>r.charAt(0)!=="_").map(r=>this.collections[r]);return Promise.all(n.map(r=>r.exportJSON())).then(r=>(e.collections=r,e))}var ZF=function(t){var e=t.collections.filter(n=>!this.collections[n.name]).map(n=>n.name);if(e.length>0)throw le("JD1",{missingCollections:e});return Promise.all(t.collections.map(n=>this.collections[n.name].importJSON(n)))},eL=async function(){var t={name:this.name,schemaHash:await this.schema.hash,docs:[]},e=na("find",tl(),this);return rO(e).then(n=>(t.docs=n.map(r=>(r=$e(r),delete r._rev,delete r._attachments,r)),t))};async function tL(t){if(t.schemaHash!==await this.schema.hash)throw le("JD2",{schemaHash:t.schemaHash,own:this.schema.hash});var e=t.docs;return this.storageInstance.bulkWrite(e.map(n=>{var r=Object.assign({},n,{_meta:{lwt:Ft()},_rev:Nn(),_attachments:{},_deleted:!1});return{document:r}}),"json-dump-import")}var nL={name:"json-dump",rxdb:!0,prototypes:{RxDatabase:t=>{t.exportJSON=XF,t.importJSON=ZF},RxCollection:t=>{t.exportJSON=eL,t.importJSON=tL}},overwritable:{}},rL=lO(),iL=function(t){_g(e,t);function e(n,r,i){var s;return s=t.call(this,null,r)||this,s.id=n,s.parent=i,s}return e}(rL),il={get isLocal(){return!0},get allAttachments$(){throw le("LD1",{document:this})},get primaryPath(){return"id"},get primary(){return this.id},get $(){var t=this,e=Bo(rv,this.parent);return t.parent.$.pipe(lt(n=>n.documentId===this.primary),lt(n=>n.isLocal),Mt(n=>xg(n)),Hl(e.docCache.getLatestDocumentData(this.primary)),Ms((n,r)=>n._rev===r._rev),Mt(n=>e.docCache.getCachedRxDocument(n)),Pi(Ai))},get $$(){var t=this,e=_m(t),n=e.getReactivityFactory();return n.fromObservable(t.$,t.getLatest()._data)},get deleted$$(){var t=this,e=_m(t),n=e.getReactivityFactory();return n.fromObservable(t.deleted$,t.getLatest().deleted)},getLatest(){var t=Bo(rv,this.parent),e=t.docCache.getLatestDocumentData(this.primary);return t.docCache.getCachedRxDocument(e)},get(t){if(t="data."+t,!!this._data){if(typeof t!="string")throw el("LD2",{objPath:t});var e=Ts(this._data,t);return e=it.deepFreezeWhenDevMode(e),e}},get$(t){if(t="data."+t,it.isDevMode()){if(t.includes(".item."))throw le("LD3",{objPath:t});if(t===this.primaryPath)throw le("LD4")}return this.$.pipe(Mt(e=>e._data),Mt(e=>Ts(e,t)),Ms())},get$$(t){var e=_m(this),n=e.getReactivityFactory();return n.fromObservable(this.get$(t),this.getLatest().get(t))},async incrementalModify(t){var e=await sl(this.parent);return e.incrementalWriteQueue.addWrite(this._data,async n=>(n.data=await t(n.data,this),n)).then(n=>e.docCache.getCachedRxDocument(n))},incrementalPatch(t){return this.incrementalModify(e=>(Object.entries(t).forEach(([n,r])=>{e[n]=r}),e))},async _saveData(t){var e=await sl(this.parent),n=this._data;return t.id=this.id,e.storageInstance.bulkWrite([{previous:n,document:t}],"local-document-save-data").then(r=>{var i=r.success[0];if(!i)throw r.error[0];t=$e(t),t._rev=i._rev})},async remove(){var t=await sl(this.parent),e={id:this._data.id,data:{},_deleted:!0,_meta:Ws(),_rev:Nn(),_attachments:{}};return Tl(t.storageInstance,{previous:this._data,document:e},"local-document-remove").then(n=>t.docCache.getCachedRxDocument(n))}},Zb=!1,sL=()=>{if(!Zb){Zb=!0;var t=kh,e=Object.getOwnPropertyNames(t);e.forEach(r=>{var i=Object.getOwnPropertyDescriptor(il,r);if(!i){var s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(il,r,s)}});var n=r=>()=>{throw le("LD6",{functionName:r})};["populate","update","putAttachment","getAttachment","allAttachments"].forEach(r=>il[r]=n(r))}};function oL(t,e){sL();var n=new iL(t.id,t,e);return Object.setPrototypeOf(n,il),n.prototype=il,n}function _m(t){var e=t.parent;return IN(e)?e:e.database}var kd=new WeakMap,rv=new WeakMap;function e1(t){var e=t.database?t.database:t,n=t.database?t.name:"",r=(async()=>{var i=await ok(e.token,e.storage,e.name,n,e.instanceCreationOptions,e.multiInstance);i=Ug(e,i,ak);var s=new ZE("id",t.$.pipe(lt(h=>h.isLocal)),h=>oL(h,t)),o=new uO(i,"id",()=>{},()=>{}),a=await e.storageToken,l=i.changeStream().subscribe(h=>{var p={id:h.id,internal:!1,collectionName:t.database?t.name:void 0,storageToken:a,events:h.events.map(y=>iO(!0,y,t.database?t:void 0)),databaseToken:e.token,checkpoint:h.checkpoint,context:h.context,endTime:h.endTime,startTime:h.startTime};e.$emit(p)});t._subs.push(l);var f={database:e,parent:t,storageInstance:i,docCache:s,incrementalWriteQueue:o};return rv.set(t,f),f})();kd.set(t,r)}function sl(t){var e=kd.get(t);if(!e){var n=t.database?t.database:t,r=t.database?t.name:"";throw le("LD8",{database:n.name,collection:r})}return e}function ok(t,e,n,r,i,s){return e.createStorageInstance({databaseInstanceToken:t,databaseName:n,collectionName:aL(r),schema:ak,options:i,multiInstance:s,devMode:it.isDevMode()})}function t1(t){var e=kd.get(t);if(e)return kd.delete(t),e.then(n=>n.storageInstance.close())}async function n1(t,e,n){var r=iu(10),i=await ok(r,t,e,n,{},!1);await i.remove()}function aL(t){return"plugin-local-documents-"+t}var ak=bh({title:"RxLocalDocument",version:0,primaryKey:"id",type:"object",properties:{id:{type:"string",maxLength:128},data:{type:"object",additionalProperties:!0}},required:["id","data"]});async function r1(t,e){var n=await sl(this),r={id:t,data:e,_deleted:!1,_meta:Ws(),_rev:Nn(),_attachments:{}};return Tl(n.storageInstance,{document:r},"local-document-insert").then(i=>n.docCache.getCachedRxDocument(i))}function i1(t,e){return this.getLocal(t).then(n=>{if(n)return n.incrementalModify(()=>e);var r=this.insertLocal(t,e);return r})}async function s1(t){var e=await sl(this),n=e.docCache,r=n.getLatestDocumentDataIfExists(t);return r?Promise.resolve(n.getCachedRxDocument(r)):Xl(e.storageInstance,t).then(i=>i?e.docCache.getCachedRxDocument(i):null)}function o1(t){return this.$.pipe(Hl(null),Lr(async e=>{if(e)return{changeEvent:e};var n=await this.getLocal(t);return{doc:n}}),Lr(async e=>{if(e.changeEvent){var n=e.changeEvent;if(!n.isLocal||n.documentId!==t)return{use:!1};var r=await this.getLocal(t);return{use:!0,doc:r}}else return{use:!0,doc:e.doc}}),lt(e=>e.use),Mt(e=>e.doc))}var uk={name:"local-documents",rxdb:!0,prototypes:{RxCollection:t=>{t.insertLocal=r1,t.upsertLocal=i1,t.getLocal=s1,t.getLocal$=o1},RxDatabase:t=>{t.insertLocal=r1,t.upsertLocal=i1,t.getLocal=s1,t.getLocal$=o1}},hooks:{createRxDatabase:{before:t=>{t.creator.localDocuments&&e1(t.database)}},createRxCollection:{before:t=>{t.creator.localDocuments&&e1(t.collection)}},preDestroyRxDatabase:{after:t=>t1(t)},postDestroyRxCollection:{after:t=>t1(t)},postRemoveRxDatabase:{after:t=>n1(t.storage,t.databaseName,"")},postRemoveRxCollection:{after:t=>n1(t.storage,t.databaseName,t.collectionName)}},overwritable:{}};async function lk(t){var e=pR(t.collection.schema.jsonSchema).map(r=>t.collection.name+"-"+r),n=await t.database.internalStore.findDocumentsById(e.map(r=>Ha(r,xo)),!1);if(n.length>1)throw new Error("more the one old collection meta found");return n[0]}function uL(t,e,n){var r=$e(n._attachments),i=Mn(n),s=i._meta;delete i._meta,i._attachments=r;for(var o=e+1,a=Promise.resolve(i),l=function(){var f=o;a=a.then(h=>lL(t,f,h)),o++};o<=t.schema.version;)l();return a.then(f=>f===null?vg:(f._meta=s,f))}function lL(t,e,n){if(n===null)return vg;var r=t.migrationStrategies[e](n,t),i=ZI(r);return i}async function ck(t){if(t.collection.schema.version===0)return Xn;var e=await lk(t);return!!e}var cL=200,fk=new WeakMap;function fL(t){var e=dk(t.database),n=e.getValue().slice(0);n.push(t),e.next(n)}function dk(t){return Br(fk,t,()=>new Cr([]))}function dL(t){var e=fk.get(t);e&&e.complete()}var hL=function(){function t(n,r,i=[n.name,"v",n.schema.version].join("-")){this.started=!1,this.updateStatusHandlers=[],this.updateStatusQueue=dd,this.collection=n,this.migrationStrategies=r,this.statusDocKey=i,this.database=n.database,this.oldCollectionMeta=lk(this),this.mustMigrate=ck(this),this.statusDocId=Ha(this.statusDocKey,Pf),fL(this),this.$=q2(this.database.internalStore,this.statusDocId).pipe(lt(s=>!!s),Mt(s=>ye(s).data),Pi(Ai))}var e=t.prototype;return e.getStatus=function(){return As(this.$)},e.startMigration=async function(r=cL){var i=await this.mustMigrate;if(i){if(this.started)throw le("DM1");this.started=!0;var s=void 0;if(this.database.multiInstance){s=new xh(["rx-migration-state",this.database.name,this.collection.name,this.collection.schema.version].join("|"));var o=NB(s);await o.awaitLeadership()}var a=await this.oldCollectionMeta,l=await this.database.storage.createStorageInstance({databaseName:this.database.name,collectionName:this.collection.name,databaseInstanceToken:this.database.token,multiInstance:this.database.multiInstance,options:{},schema:a.data.schema,password:this.database.password,devMode:it.isDevMode()}),f=await this.getConnectedStorageInstances(),h=await this.countAllDoucments([l].concat(f.map(p=>p.oldStorage)));await this.updateStatus(p=>(p.count.total=h,p));try{await Promise.all(f.map(async p=>{await dO(this.collection,p.newStorage.collectionName,p.newStorage.schema),await this.migrateStorage(p.oldStorage,p.newStorage,r),await p.newStorage.close()})),await this.migrateStorage(l,this.collection.storageInstance.originalStorageInstance,r)}catch(p){await l.close(),await this.updateStatus(y=>(y.status="ERROR",y.error=ky(p),y));return}await Tl(this.database.internalStore,{previous:a,document:Object.assign({},a,{_deleted:!0})},"rx-migration-remove-collection-meta"),await this.updateStatus(p=>(p.status="DONE",p)),s&&await s.close()}},e.updateStatus=function(r){return this.updateStatusHandlers.push(r),this.updateStatusQueue=this.updateStatusQueue.then(async()=>{if(this.updateStatusHandlers.length!==0){var i=this.updateStatusHandlers;for(this.updateStatusHandlers=[];;){var s=await Xl(this.database.internalStore,this.statusDocId),o=Mn(s);s||(o={id:this.statusDocId,key:this.statusDocKey,context:Pf,data:{collectionName:this.collection.name,status:"RUNNING",count:{total:0,handled:0,percent:0}},_deleted:!1,_meta:Ws(),_rev:Nn(),_attachments:{}});var a=ye(o).data;for(var l of i)a=l(a);if(a.count.percent=Math.round(a.count.handled/a.count.total*100),o&&s&&Va(o.data,s.data))break;try{await Tl(this.database.internalStore,{previous:s,document:ye(o)},Pf);break}catch(f){if(!_h(f))throw f}}}}),this.updateStatusQueue},e.migrateStorage=async function(r,i,s){var o=await this.database.storage.createStorageInstance({databaseName:this.database.name,collectionName:"rx-migration-state-meta-"+this.collection.name+"-"+this.collection.schema.version,databaseInstanceToken:this.database.token,multiInstance:this.database.multiInstance,options:{},schema:Wy(r.schema,vd(r.schema)),password:this.database.password,devMode:it.isDevMode()}),a=pN(i,bd,this.database.token,!0),l=mO({keepMeta:!0,identifier:["rx-migration-state",this.collection.name,r.schema.version,this.collection.schema.version].join("-"),replicationHandler:{masterChangesSince(){return Promise.resolve({checkpoint:null,documents:[]})},masterWrite:async h=>{h=await Promise.all(h.map(async y=>{var w=y.newDocumentState;if(i.schema.title===Rf&&(w=y.newDocumentState.docData,y.newDocumentState.isCheckpoint==="1"))return{assumedMasterState:void 0,newDocumentState:y.newDocumentState};var I=await uL(this.collection,r.schema.version,w),E={assumedMasterState:void 0,newDocumentState:i.schema.title===Rf?Object.assign({},y.newDocumentState,{docData:I}):I};return E})),h=h.filter(y=>!!y.newDocumentState);var p=await a.masterWrite(h);return p},masterChangeStream$:new Kt().asObservable()},forkInstance:r,metaInstance:o,pushBatchSize:s,pullBatchSize:0,conflictHandler:bd,hashFunction:this.database.hashFunction}),f=!1;if(l.events.error.subscribe(h=>f=h),l.events.processed.up.subscribe(()=>{this.updateStatus(h=>(h.count.handled=h.count.handled+1,h))}),await Tf(l),await yO(l),await this.updateStatusQueue,f)throw await o.close(),f;await Promise.all([r.remove(),o.remove()])},e.countAllDoucments=async function(r){var i=0;return await Promise.all(r.map(async s=>{var o=Jl(s.schema,Rl(s.schema,{selector:{}})),a=await s.count(o);i+=a.count})),i},e.getConnectedStorageInstances=async function(){var r=await this.oldCollectionMeta,i=[];return await Promise.all(await Promise.all(r.data.connectedStorages.map(async s=>{if(s.schema.title!==Rf)throw new Error("unknown migration handling for schema");var o=Wy(Mn(this.collection.schema.jsonSchema),vd(s.schema));o.version=this.collection.schema.version;var[a,l]=await Promise.all([this.database.storage.createStorageInstance({databaseInstanceToken:this.database.token,databaseName:this.database.name,devMode:it.isDevMode(),multiInstance:this.database.multiInstance,options:{},schema:s.schema,password:this.database.password,collectionName:s.collectionName}),this.database.storage.createStorageInstance({databaseInstanceToken:this.database.token,databaseName:this.database.name,devMode:it.isDevMode(),multiInstance:this.database.multiInstance,options:{},schema:o,password:this.database.password,collectionName:s.collectionName})]);i.push({oldStorage:a,newStorage:l})}))),i},e.migratePromise=async function(r){this.startMigration(r);var i=await this.mustMigrate;if(!i)return{status:"DONE",collectionName:this.collection.name,count:{handled:0,percent:0,total:0}};var s=await Promise.race([As(this.$.pipe(lt(o=>o.status==="DONE"))),As(this.$.pipe(lt(o=>o.status==="ERROR")))]);if(s.status==="ERROR")throw le("DM4",{collection:this.collection.name,error:s.error});return s},t}(),pL=new WeakMap,mL={name:"migration-schema",rxdb:!0,init(){gi(uk)},hooks:{preDestroyRxDatabase:{after:dL}},prototypes:{RxDatabase:t=>{t.migrationStates=function(){return dk(this).pipe(Pi(Ai))}},RxCollection:t=>{t.getMigrationState=function(){return Br(pL,this,()=>new hL(this.asRxCollection,this.migrationStrategies))},t.migrationNeeded=function(){return this.schema.version===0?Xn:ck(this.getMigrationState())}}}};const e0=(t,e)=>{switch(t){case"deep":return Ty(e);case"copy":return My(e)?new Date(e):Lt(e)?[...e]:wt(e)?Object.assign({},e):e;default:return e}},yL=/^[a-z]+[a-zA-Z0-9]*$/;function hk(t){if(!t.includes(".$"))return[{parent:t,selector:t},[]];const e=t.indexOf(".$"),n=t.indexOf("]"),r=t.substring(0,e),i=t.substring(e+3,n);Yt(i===""||yL.test(i),"The filter must begin with a lowercase letter and contain only alphanumeric characters.");const s=t.substring(n+2),[o,a]=s?hk(s):[];return[{selector:t,parent:r,child:i||"$",next:o},[i,...a||[]].filter(Boolean)]}const Un=(t,e,n,r,i)=>{const{parent:s,child:o,next:a}=e;if(!o){let f=!1;return Pl(t,s,(p,y)=>f=!!r(p,y)||f,i),f}const l=lu(t,s);return Lt(l)?l.map((f,h)=>n[o]&&!n[o].test({[o]:f})?!1:a?Un(f,a,n,r,i):r(l,h)).some(Boolean):!1};function ur(t,e,n,r){const i=[];for(const[s,o]of Object.entries(t)){const[a,l]=hk(s);if(!l.length)r(o,a,{})&&i.push(a.parent);else{const f={};e.forEach(p=>{Object.keys(p).forEach(y=>{l.forEach(w=>{(y===w||y.startsWith(w+"."))&&(f[w]=f[w]||{},Object.assign(f[w],{[y]:p[y]}))})})});const h={};for(const[p,y]of Object.entries(f))h[p]=new Qs(y,n.queryOptions);r(o,a,h)&&i.push(a.parent)}}return i}const vL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>{const a={$each:[i]};return wt(i)&&er(i,"$each")&&Object.assign(a,i),Un(t,s,o,(l,f)=>{const h=l[f]||(l[f]=[]);return Fg([h,a.$each]).length===a.$each.length?!1:(l[f]=e0(r.cloneMode,kM(h.concat(a.$each))),!0)},{buildGraph:!0})}),gL=new Set(["and","or","xor"]),wL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>{const a=Object.keys(i);return Yt(a.length===1&&gL.has(a[0]),`Invalid bit operator '${a[0]}'. Must be one of 'and', 'or', or 'xor'.`),Un(t,s,o,(l,f)=>{let h=l[f];const p=i[a[0]];if(h!==void 0&&!(Yn(h)&&Yn(p)))return!1;switch(h=h||0,a[0]){case"and":l[f]=h&p;break;case"or":l[f]=h|p;break;case"xor":l[f]=h^p;break}return l[f]!==h},{buildGraph:!0})}),_L=(t,e,n=[],r={})=>{const i=Date.now();return ur(e,n,r,(s,o,a)=>Un(t,o,a,(l,f)=>(l[f]=i,!0),{buildGraph:!0}))},bL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>{if(!s.child){const a=lu(t,s.parent);Yt(a===void 0||Yn(a),"cannot apply $inc to a value of non-numeric type")}return Un(t,s,o,(a,l)=>(a[l]=(a[l]||(a[l]=0))+i,!0),{buildGraph:!0})}),SL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>Un(t,s,o,(a,l)=>a[l]!==void 0&&Bn(a[l],i)>-1?!1:(a[l]=i,!0),{buildGraph:!0})),IL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>Un(t,s,o,(a,l)=>a[l]!==void 0&&Bn(a[l],i)<1?!1:(a[l]=i,!0),{buildGraph:!0})),EL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>Un(t,s,o,(a,l)=>{const f=a[l];return a[l]=a[l]===void 0?0:a[l]*i,a[l]!==f},{buildGraph:!0})),OL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>Un(t,s,o,(a,l)=>{const f=a[l];return Yt(Lt(f),`path '${s.selector}' contains an element of non-array type.`),f.length?(i===-1?f.splice(0,1):f.pop(),!0):!1})),pk=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>{const a=!wt(i)||Object.keys(i).some(Ko),l=new Qs(a?{k:i}:i,r.queryOptions),f=a?h=>l.test({k:h}):h=>l.test(h);return Un(t,s,o,(h,p)=>{const y=h[p],w=new Array;return y.map(E=>{const $=f(E);return $||w.push(E),$}).some(Boolean)?(h[p]=w,!0):!1})}),kL=(t,e,n=[],r={})=>{const i={};return Object.entries(e).forEach(([s,o])=>{i[s]={$in:o}}),pk(t,i,n,r)},DL=Object.freeze(["$each","$slice","$sort","$position"]),xL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>{const a={$each:[i]};return wt(i)&&DL.some(l=>er(i,l))&&Object.assign(a,i),Un(t,s,o,(l,f)=>{const h=l[f]||(l[f]=[]),p=h.slice(0,a.$slice||h.length),y=h.length,w=Yn(a.$position)?a.$position:h.length;if(h.splice(w,0,...e0(r.cloneMode,a.$each)),a.$sort){const I=wt(a.$sort)?Object.keys(a.$sort||{}).pop():"",E=I?a.$sort[I]:a.$sort,$=I?S=>lu(S,I):S=>S;h.sort((S,_)=>E*Bn($(S),$(_)))}return Yn(a.$slice)&&(a.$slice<0?h.splice(0,h.length+a.$slice):h.splice(a.$slice)),y!=h.length||!Wi(p,h)},{descendArray:!0,buildGraph:!0})}),mk=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>Un(t,s,o,(a,l)=>Wi(a[l],i)?!1:(a[l]=e0(r.cloneMode,i),!0),{buildGraph:!0})),CL=(t,e,n=[],r={})=>{const i=[],s=ur(e,n,r,(o,a,l)=>Un(t,a,l,(f,h)=>er(f,h)?(i.push(...mk(t,{[o]:f[h]},n,r)),delete f[h],!0):!1));return Array.from(new Set(s.concat(i)))},AL=(t,e,n=[],r={})=>ur(e,n,r,(i,s,o)=>Un(t,s,o,(a,l)=>er(a,l)?(Lt(a)?a[l]=null:delete a[l],!0):!1)),a1=Object.freeze(Object.defineProperty({__proto__:null,$addToSet:vL,$bit:wL,$currentDate:_L,$inc:bL,$max:SL,$min:IL,$mul:EL,$pop:OL,$pull:pk,$pullAll:kL,$push:xL,$rename:CL,$set:mk,$unset:AL},Symbol.toStringTag,{value:"Module"}));function PL(t){return(e,n,r=[],i={},s={})=>{const o=Object.assign({cloneMode:"copy"},t,s);Object.assign(o,{queryOptions:Lg(Object.assign({useStrictMode:!1},o==null?void 0:o.queryOptions))}),r=r||[],i=i||{};const a=Object.entries(n);Yt(a.length===1,"Update expression must contain only one operator.");const[l,f]=a[0];Yt(er(a1,l),`Update operator '${l}' is not supported.`);const h=a1[l];return Object.keys(i).length&&!new Qs(i,o.queryOptions).test(e)?[]:h(e,f,r,o)}}var bm;function yk(t,e){if(!bm){var n=PL({cloneMode:"none"});bm=(r,i)=>{var s=Mn(r);return n(s,i),s}}return bm(t,e)}function RL(t){return this.incrementalModify(e=>{var n=yk(e,t);return n})}function TL(t){var e=this._data,n=yk(e,t);return this._saveData(n,e)}function ML(t){return this.exec().then(e=>e?Array.isArray(e)?Promise.all(e.map(n=>n.update(t))).then(()=>e):e.update(t).then(()=>e):null)}var NL={name:"update",rxdb:!0,prototypes:{RxDocument:t=>{t.update=TL,t.incrementalUpdate=RL},RxQuery:t=>{t.update=ML}}};const{logger:BL}=$r;async function FL(t=[]){try{gi(uk),gi(nL),gi(mL),gi(NL),gi(JF),gi(BF),gi(QF);for(const e of t)gi(e);BL.log("rxdb plugins loaded")}catch(e){throw new Error(e.message??e)}}const{logger:ea}=$r;class LL{get db(){return this.dbInstance}get dbOptions(){return this.options}get collections(){return this.db.collections}async destroyDb(){try{await this.db.remove(),await this.db.destroy(),this.dbInstance=null,ea.log("database destroy")}catch{ea.log("database destroy error")}}async initDb(e){var n,r;if(!this.dbInstance)try{if(await FL((n=e.options)==null?void 0:n.plugins),this.dbInstance=await SN(e),this.options=e,ea.log(`created database "${this.db.name}" with config "${JSON.stringify(e)}"`),(r=e==null?void 0:e.options)!=null&&r.schemas){const i=await this.initCollections(e.options.schemas);ea.log(`created ${Object.keys(i).length} collections bulk: ${Object.keys(i)}`)}}catch(i){throw ea.log("Error initializing the database:",i),i}}async initCollections(e){try{const n=await AF(e);return await this.db.addCollections(n)}catch(n){throw ea.log("Error initializing collection(s)",n),n}}}var vk={exports:{}},Xe={};/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Gt=typeof Symbol=="function"&&Symbol.for,t0=Gt?Symbol.for("react.element"):60103,n0=Gt?Symbol.for("react.portal"):60106,Ch=Gt?Symbol.for("react.fragment"):60107,Ah=Gt?Symbol.for("react.strict_mode"):60108,Ph=Gt?Symbol.for("react.profiler"):60114,Rh=Gt?Symbol.for("react.provider"):60109,Th=Gt?Symbol.for("react.context"):60110,r0=Gt?Symbol.for("react.async_mode"):60111,Mh=Gt?Symbol.for("react.concurrent_mode"):60111,Nh=Gt?Symbol.for("react.forward_ref"):60112,Bh=Gt?Symbol.for("react.suspense"):60113,$L=Gt?Symbol.for("react.suspense_list"):60120,Fh=Gt?Symbol.for("react.memo"):60115,Lh=Gt?Symbol.for("react.lazy"):60116,jL=Gt?Symbol.for("react.block"):60121,UL=Gt?Symbol.for("react.fundamental"):60117,zL=Gt?Symbol.for("react.responder"):60118,VL=Gt?Symbol.for("react.scope"):60119;function lr(t){if(typeof t=="object"&&t!==null){var e=t.$$typeof;switch(e){case t0:switch(t=t.type,t){case r0:case Mh:case Ch:case Ph:case Ah:case Bh:return t;default:switch(t=t&&t.$$typeof,t){case Th:case Nh:case Lh:case Fh:case Rh:return t;default:return e}}case n0:return e}}}function gk(t){return lr(t)===Mh}Xe.AsyncMode=r0;Xe.ConcurrentMode=Mh;Xe.ContextConsumer=Th;Xe.ContextProvider=Rh;Xe.Element=t0;Xe.ForwardRef=Nh;Xe.Fragment=Ch;Xe.Lazy=Lh;Xe.Memo=Fh;Xe.Portal=n0;Xe.Profiler=Ph;Xe.StrictMode=Ah;Xe.Suspense=Bh;Xe.isAsyncMode=function(t){return gk(t)||lr(t)===r0};Xe.isConcurrentMode=gk;Xe.isContextConsumer=function(t){return lr(t)===Th};Xe.isContextProvider=function(t){return lr(t)===Rh};Xe.isElement=function(t){return typeof t=="object"&&t!==null&&t.$$typeof===t0};Xe.isForwardRef=function(t){return lr(t)===Nh};Xe.isFragment=function(t){return lr(t)===Ch};Xe.isLazy=function(t){return lr(t)===Lh};Xe.isMemo=function(t){return lr(t)===Fh};Xe.isPortal=function(t){return lr(t)===n0};Xe.isProfiler=function(t){return lr(t)===Ph};Xe.isStrictMode=function(t){return lr(t)===Ah};Xe.isSuspense=function(t){return lr(t)===Bh};Xe.isValidElementType=function(t){return typeof t=="string"||typeof t=="function"||t===Ch||t===Mh||t===Ph||t===Ah||t===Bh||t===$L||typeof t=="object"&&t!==null&&(t.$$typeof===Lh||t.$$typeof===Fh||t.$$typeof===Rh||t.$$typeof===Th||t.$$typeof===Nh||t.$$typeof===UL||t.$$typeof===zL||t.$$typeof===VL||t.$$typeof===jL)};Xe.typeOf=lr;vk.exports=Xe;var KL=vk.exports,i0=KL,WL={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},qL={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},HL={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},wk={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s0={};s0[i0.ForwardRef]=HL;s0[i0.Memo]=wk;function u1(t){return i0.isMemo(t)?wk:s0[t.$$typeof]||WL}var QL=Object.defineProperty,YL=Object.getOwnPropertyNames,l1=Object.getOwnPropertySymbols,GL=Object.getOwnPropertyDescriptor,JL=Object.getPrototypeOf,c1=Object.prototype;function _k(t,e,n){if(typeof e!="string"){if(c1){var r=JL(e);r&&r!==c1&&_k(t,r,n)}var i=YL(e);l1&&(i=i.concat(l1(e)));for(var s=u1(t),o=u1(e),a=0;aDd.length&&Dd.push(t)}function iv(t,e,n,r){var i=typeof t;(i==="undefined"||i==="boolean")&&(t=null);var s=!1;if(t===null)s=!0;else switch(i){case"string":case"number":s=!0;break;case"object":switch(t.$$typeof){case ic:case s3:s=!0}}if(s)return n(r,t,e===""?"."+Sm(t,0):e),1;if(s=0,e=e===""?".":e+":",Array.isArray(t))for(var o=0;ob3.decode(t),S3=new TextEncoder,f0=t=>S3.encode(t),[I4,I3]=(()=>{const t=()=>{throw new Error("BigInt is not available in this environment")};function e(){throw t()}return e.asIntN=()=>{throw t()},e.asUintN=()=>{throw t()},typeof BigInt<"u"?[BigInt,!0]:[e,!1]})(),[oc,E4]=(()=>{const t=()=>{throw new Error("BigInt64Array is not available in this environment")};class e{static get BYTES_PER_ELEMENT(){return 8}static of(){throw t()}static from(){throw t()}constructor(){throw t()}}return typeof BigInt64Array<"u"?[BigInt64Array,!0]:[e,!1]})(),[ac,O4]=(()=>{const t=()=>{throw new Error("BigUint64Array is not available in this environment")};class e{static get BYTES_PER_ELEMENT(){return 8}static of(){throw t()}static from(){throw t()}constructor(){throw t()}}return typeof BigUint64Array<"u"?[BigUint64Array,!0]:[e,!1]})(),E3=t=>typeof t=="number",Rk=t=>typeof t=="boolean",Ut=t=>typeof t=="function",Fn=t=>t!=null&&Object(t)===t,Ns=t=>Fn(t)&&Ut(t.then),uc=t=>Fn(t)&&Ut(t[Symbol.iterator]),fu=t=>Fn(t)&&Ut(t[Symbol.asyncIterator]),uv=t=>Fn(t)&&Fn(t.schema),Tk=t=>Fn(t)&&"done"in t&&"value"in t,Mk=t=>Fn(t)&&Ut(t.stat)&&E3(t.fd),Nk=t=>Fn(t)&&d0(t.body),$h=t=>"_getDOMStream"in t&&"_getNodeStream"in t,O3=t=>Fn(t)&&Ut(t.abort)&&Ut(t.getWriter)&&!$h(t),d0=t=>Fn(t)&&Ut(t.cancel)&&Ut(t.getReader)&&!$h(t),k3=t=>Fn(t)&&Ut(t.end)&&Ut(t.write)&&Rk(t.writable)&&!$h(t),Bk=t=>Fn(t)&&Ut(t.read)&&Ut(t.pipe)&&Rk(t.readable)&&!$h(t),D3=t=>Fn(t)&&Ut(t.clear)&&Ut(t.bytes)&&Ut(t.position)&&Ut(t.setPosition)&&Ut(t.capacity)&&Ut(t.getBufferIdentifier)&&Ut(t.createLong),h0=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:ArrayBuffer;function x3(t){const e=t[0]?[t[0]]:[];let n,r,i,s;for(let o,a,l=0,f=0,h=t.length;++lh+p.byteLength,0);let i,s,o,a=0,l=-1;const f=Math.min(e||Number.POSITIVE_INFINITY,r);for(const h=n.length;++lrt(Int32Array,t),Ue=t=>rt(Uint8Array,t),lv=t=>(t.next(),t);function*C3(t,e){const n=function*(i){yield i},r=typeof e=="string"||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof h0?n(e):uc(e)?e:n(e);return yield*lv(function*(i){let s=null;do s=i.next(yield rt(t,s));while(!s.done)}(r[Symbol.iterator]())),new t}const A3=t=>C3(Uint8Array,t);function Fk(t,e){return Ar(this,arguments,function*(){if(Ns(e))return yield ge(yield ge(yield*Df(Ds(Fk(t,yield ge(e))))));const r=function(o){return Ar(this,arguments,function*(){yield yield ge(yield ge(o))})},i=function(o){return Ar(this,arguments,function*(){yield ge(yield*Df(Ds(lv(function*(a){let l=null;do l=a.next(yield l==null?void 0:l.value);while(!l.done)}(o[Symbol.iterator]())))))})},s=typeof e=="string"||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof h0?r(e):uc(e)?i(e):fu(e)?e:r(e);return yield ge(yield*Df(Ds(lv(function(o){return Ar(this,arguments,function*(){let a=null;do a=yield ge(o.next(yield yield ge(rt(t,a))));while(!a.done)})}(s[Symbol.asyncIterator]()))))),yield ge(new t)})}const P3=t=>Fk(Uint8Array,t);function p0(t,e,n){if(t!==0){n=n.slice(0,e+1);for(let r=-1;++r<=e;)n[r]+=t}return n}function R3(t,e){let n=0;const r=t.length;if(r!==e.length)return!1;if(r>0)do if(t[n]!==e[n])return!1;while(++n(t.next(),t);function*T3(t){let e,n=!1,r=[],i,s,o,a=0;function l(){return s==="peek"?fi(r,o)[0]:([i,r,a]=fi(r,o),i)}({cmd:s,size:o}=yield null);const f=A3(t)[Symbol.iterator]();try{do if({done:e,value:i}=Number.isNaN(o-a)?f.next():f.next(o-a),!e&&i.byteLength>0&&(r.push(i),a+=i.byteLength),e||o<=a)do({cmd:s,size:o}=yield l());while(o0&&(i.push(s),l+=s.byteLength),n||a<=l)do({cmd:o,size:a}=yield yield ge(f()));while(a0&&(i.push(Ue(s)),l+=s.byteLength),n||a<=l)do({cmd:o,size:a}=yield yield ge(f()));while(a{})}get closed(){return this.reader?this.reader.closed.catch(()=>{}):Promise.resolve()}releaseLock(){this.reader&&this.reader.releaseLock(),this.reader=null}cancel(e){return ve(this,void 0,void 0,function*(){const{reader:n,source:r}=this;n&&(yield n.cancel(e).catch(()=>{})),r&&r.locked&&this.releaseLock()})}read(e){return ve(this,void 0,void 0,function*(){if(e===0)return{done:this.reader==null,value:new Uint8Array(0)};const n=yield this.reader.read();return!n.done&&(n.value=Ue(n)),n})}}const Im=(t,e)=>{const n=i=>r([e,i]);let r;return[e,n,new Promise(i=>(r=i)&&t.once(e,n))]};function F3(t){return Ar(this,arguments,function*(){const n=[];let r="error",i=!1,s=null,o,a,l=0,f=[],h;function p(){return o==="peek"?fi(f,a)[0]:([h,f,l]=fi(f,a),h)}if({cmd:o,size:a}=yield yield ge(null),t.isTTY)return yield yield ge(new Uint8Array(0)),yield ge(null);try{n[0]=Im(t,"end"),n[1]=Im(t,"error");do{if(n[2]=Im(t,"readable"),[r,s]=yield ge(Promise.race(n.map(w=>w[2]))),r==="error")break;if((i=r==="end")||(Number.isFinite(a-l)?(h=Ue(t.read(a-l)),h.byteLength0&&(f.push(h),l+=h.byteLength)),i||a<=l)do({cmd:o,size:a}=yield yield ge(p()));while(a{for(const[S,_]of w)t.off(S,_);try{const S=t.destroy;S&&S.call(t,I),I=void 0}catch(S){I=S||I}finally{I!=null?$(I):E()}})}})}var Gn;(function(t){t[t.V1=0]="V1",t[t.V2=1]="V2",t[t.V3=2]="V3",t[t.V4=3]="V4",t[t.V5=4]="V5"})(Gn||(Gn={}));var rr;(function(t){t[t.Sparse=0]="Sparse",t[t.Dense=1]="Dense"})(rr||(rr={}));var Tn;(function(t){t[t.HALF=0]="HALF",t[t.SINGLE=1]="SINGLE",t[t.DOUBLE=2]="DOUBLE"})(Tn||(Tn={}));var Hi;(function(t){t[t.DAY=0]="DAY",t[t.MILLISECOND=1]="MILLISECOND"})(Hi||(Hi={}));var ze;(function(t){t[t.SECOND=0]="SECOND",t[t.MILLISECOND=1]="MILLISECOND",t[t.MICROSECOND=2]="MICROSECOND",t[t.NANOSECOND=3]="NANOSECOND"})(ze||(ze={}));var Bs;(function(t){t[t.YEAR_MONTH=0]="YEAR_MONTH",t[t.DAY_TIME=1]="DAY_TIME",t[t.MONTH_DAY_NANO=2]="MONTH_DAY_NANO"})(Bs||(Bs={}));var Ve;(function(t){t[t.NONE=0]="NONE",t[t.Schema=1]="Schema",t[t.DictionaryBatch=2]="DictionaryBatch",t[t.RecordBatch=3]="RecordBatch",t[t.Tensor=4]="Tensor",t[t.SparseTensor=5]="SparseTensor"})(Ve||(Ve={}));var N;(function(t){t[t.NONE=0]="NONE",t[t.Null=1]="Null",t[t.Int=2]="Int",t[t.Float=3]="Float",t[t.Binary=4]="Binary",t[t.Utf8=5]="Utf8",t[t.Bool=6]="Bool",t[t.Decimal=7]="Decimal",t[t.Date=8]="Date",t[t.Time=9]="Time",t[t.Timestamp=10]="Timestamp",t[t.Interval=11]="Interval",t[t.List=12]="List",t[t.Struct=13]="Struct",t[t.Union=14]="Union",t[t.FixedSizeBinary=15]="FixedSizeBinary",t[t.FixedSizeList=16]="FixedSizeList",t[t.Map=17]="Map",t[t.Dictionary=-1]="Dictionary",t[t.Int8=-2]="Int8",t[t.Int16=-3]="Int16",t[t.Int32=-4]="Int32",t[t.Int64=-5]="Int64",t[t.Uint8=-6]="Uint8",t[t.Uint16=-7]="Uint16",t[t.Uint32=-8]="Uint32",t[t.Uint64=-9]="Uint64",t[t.Float16=-10]="Float16",t[t.Float32=-11]="Float32",t[t.Float64=-12]="Float64",t[t.DateDay=-13]="DateDay",t[t.DateMillisecond=-14]="DateMillisecond",t[t.TimestampSecond=-15]="TimestampSecond",t[t.TimestampMillisecond=-16]="TimestampMillisecond",t[t.TimestampMicrosecond=-17]="TimestampMicrosecond",t[t.TimestampNanosecond=-18]="TimestampNanosecond",t[t.TimeSecond=-19]="TimeSecond",t[t.TimeMillisecond=-20]="TimeMillisecond",t[t.TimeMicrosecond=-21]="TimeMicrosecond",t[t.TimeNanosecond=-22]="TimeNanosecond",t[t.DenseUnion=-23]="DenseUnion",t[t.SparseUnion=-24]="SparseUnion",t[t.IntervalDayTime=-25]="IntervalDayTime",t[t.IntervalYearMonth=-26]="IntervalYearMonth"})(N||(N={}));var bi;(function(t){t[t.OFFSET=0]="OFFSET",t[t.DATA=1]="DATA",t[t.VALIDITY=2]="VALIDITY",t[t.TYPE=3]="TYPE"})(bi||(bi={}));const L3=void 0;function Nl(t){if(t===null)return"null";if(t===L3)return"undefined";switch(typeof t){case"number":return`${t}`;case"bigint":return`${t}`;case"string":return`"${t}"`}return typeof t[Symbol.toPrimitive]=="function"?t[Symbol.toPrimitive]("string"):ArrayBuffer.isView(t)?t instanceof oc||t instanceof ac?`[${[...t].map(e=>Nl(e))}]`:`[${t}]`:ArrayBuffer.isView(t)?`[${t}]`:JSON.stringify(t,(e,n)=>typeof n=="bigint"?`${n}`:n)}const $3=Symbol.for("isArrowBigNum");function Ur(t,...e){return e.length===0?Object.setPrototypeOf(rt(this.TypedArray,t),this.constructor.prototype):Object.setPrototypeOf(new this.TypedArray(t,...e),this.constructor.prototype)}Ur.prototype[$3]=!0;Ur.prototype.toJSON=function(){return`"${Ao(this)}"`};Ur.prototype.valueOf=function(){return Lk(this)};Ur.prototype.toString=function(){return Ao(this)};Ur.prototype[Symbol.toPrimitive]=function(t="default"){switch(t){case"number":return Lk(this);case"string":return Ao(this);case"default":return cv(this)}return Ao(this)};function Da(...t){return Ur.apply(this,t)}function xa(...t){return Ur.apply(this,t)}function Bl(...t){return Ur.apply(this,t)}Object.setPrototypeOf(Da.prototype,Object.create(Int32Array.prototype));Object.setPrototypeOf(xa.prototype,Object.create(Uint32Array.prototype));Object.setPrototypeOf(Bl.prototype,Object.create(Uint32Array.prototype));Object.assign(Da.prototype,Ur.prototype,{constructor:Da,signed:!0,TypedArray:Int32Array,BigIntArray:oc});Object.assign(xa.prototype,Ur.prototype,{constructor:xa,signed:!1,TypedArray:Uint32Array,BigIntArray:ac});Object.assign(Bl.prototype,Ur.prototype,{constructor:Bl,signed:!0,TypedArray:Uint32Array,BigIntArray:ac});function Lk(t){const{buffer:e,byteOffset:n,length:r,signed:i}=t,s=new ac(e,n,r),o=i&&s[s.length-1]&BigInt(1)<t.byteLength===8?new t.BigIntArray(t.buffer,t.byteOffset,1)[0]:Em(t),Ao=t=>t.byteLength===8?`${new t.BigIntArray(t.buffer,t.byteOffset,1)[0]}`:Em(t)):(Ao=Em,cv=Ao);function Em(t){let e="";const n=new Uint32Array(2);let r=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);const i=new Uint32Array((r=new Uint16Array(r).reverse()).buffer);let s=-1;const o=r.length-1;do{for(n[0]=r[s=0];s(t.children=null,t.ArrayType=Array,t[Symbol.toStringTag]="DataType"))(we.prototype);let Fs=class extends we{toString(){return"Null"}get typeId(){return N.Null}};jk=Symbol.toStringTag;Fs[jk]=(t=>t[Symbol.toStringTag]="Null")(Fs.prototype);class Ls extends we{constructor(e,n){super(),this.isSigned=e,this.bitWidth=n}get typeId(){return N.Int}get ArrayType(){switch(this.bitWidth){case 8:return this.isSigned?Int8Array:Uint8Array;case 16:return this.isSigned?Int16Array:Uint16Array;case 32:return this.isSigned?Int32Array:Uint32Array;case 64:return this.isSigned?oc:ac}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`${this.isSigned?"I":"Ui"}nt${this.bitWidth}`}}Uk=Symbol.toStringTag;Ls[Uk]=(t=>(t.isSigned=null,t.bitWidth=null,t[Symbol.toStringTag]="Int"))(Ls.prototype);class Fl extends Ls{constructor(){super(!0,32)}get ArrayType(){return Int32Array}}Object.defineProperty(Fl.prototype,"ArrayType",{value:Int32Array});class Ll extends we{constructor(e){super(),this.precision=e}get typeId(){return N.Float}get ArrayType(){switch(this.precision){case Tn.HALF:return Uint16Array;case Tn.SINGLE:return Float32Array;case Tn.DOUBLE:return Float64Array}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}toString(){return`Float${this.precision<<5||16}`}}zk=Symbol.toStringTag;Ll[zk]=(t=>(t.precision=null,t[Symbol.toStringTag]="Float"))(Ll.prototype);let xd=class extends we{constructor(){super()}get typeId(){return N.Binary}toString(){return"Binary"}};Vk=Symbol.toStringTag;xd[Vk]=(t=>(t.ArrayType=Uint8Array,t[Symbol.toStringTag]="Binary"))(xd.prototype);let Cd=class extends we{constructor(){super()}get typeId(){return N.Utf8}toString(){return"Utf8"}};Kk=Symbol.toStringTag;Cd[Kk]=(t=>(t.ArrayType=Uint8Array,t[Symbol.toStringTag]="Utf8"))(Cd.prototype);let Ad=class extends we{constructor(){super()}get typeId(){return N.Bool}toString(){return"Bool"}};Wk=Symbol.toStringTag;Ad[Wk]=(t=>(t.ArrayType=Uint8Array,t[Symbol.toStringTag]="Bool"))(Ad.prototype);let Pd=class extends we{constructor(e,n,r=128){super(),this.scale=e,this.precision=n,this.bitWidth=r}get typeId(){return N.Decimal}toString(){return`Decimal[${this.precision}e${this.scale>0?"+":""}${this.scale}]`}};qk=Symbol.toStringTag;Pd[qk]=(t=>(t.scale=null,t.precision=null,t.ArrayType=Uint32Array,t[Symbol.toStringTag]="Decimal"))(Pd.prototype);class Rd extends we{constructor(e){super(),this.unit=e}get typeId(){return N.Date}toString(){return`Date${(this.unit+1)*32}<${Hi[this.unit]}>`}}Hk=Symbol.toStringTag;Rd[Hk]=(t=>(t.unit=null,t.ArrayType=Int32Array,t[Symbol.toStringTag]="Date"))(Rd.prototype);class $l extends we{constructor(e,n){super(),this.unit=e,this.bitWidth=n}get typeId(){return N.Time}toString(){return`Time${this.bitWidth}<${ze[this.unit]}>`}get ArrayType(){switch(this.bitWidth){case 32:return Int32Array;case 64:return oc}throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`)}}Qk=Symbol.toStringTag;$l[Qk]=(t=>(t.unit=null,t.bitWidth=null,t[Symbol.toStringTag]="Time"))($l.prototype);class Td extends we{constructor(e,n){super(),this.unit=e,this.timezone=n}get typeId(){return N.Timestamp}toString(){return`Timestamp<${ze[this.unit]}${this.timezone?`, ${this.timezone}`:""}>`}}Yk=Symbol.toStringTag;Td[Yk]=(t=>(t.unit=null,t.timezone=null,t.ArrayType=Int32Array,t[Symbol.toStringTag]="Timestamp"))(Td.prototype);class Md extends we{constructor(e){super(),this.unit=e}get typeId(){return N.Interval}toString(){return`Interval<${Bs[this.unit]}>`}}Gk=Symbol.toStringTag;Md[Gk]=(t=>(t.unit=null,t.ArrayType=Int32Array,t[Symbol.toStringTag]="Interval"))(Md.prototype);let Nd=class extends we{constructor(e){super(),this.children=[e]}get typeId(){return N.List}toString(){return`List<${this.valueType}>`}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}};Jk=Symbol.toStringTag;Nd[Jk]=(t=>(t.children=null,t[Symbol.toStringTag]="List"))(Nd.prototype);class vn extends we{constructor(e){super(),this.children=e}get typeId(){return N.Struct}toString(){return`Struct<{${this.children.map(e=>`${e.name}:${e.type}`).join(", ")}}>`}}Xk=Symbol.toStringTag;vn[Xk]=(t=>(t.children=null,t[Symbol.toStringTag]="Struct"))(vn.prototype);class Bd extends we{constructor(e,n,r){super(),this.mode=e,this.children=r,this.typeIds=n=Int32Array.from(n),this.typeIdToChildIndex=n.reduce((i,s,o)=>(i[s]=o)&&i||i,Object.create(null))}get typeId(){return N.Union}toString(){return`${this[Symbol.toStringTag]}<${this.children.map(e=>`${e.type}`).join(" | ")}>`}}Zk=Symbol.toStringTag;Bd[Zk]=(t=>(t.mode=null,t.typeIds=null,t.children=null,t.typeIdToChildIndex=null,t.ArrayType=Int8Array,t[Symbol.toStringTag]="Union"))(Bd.prototype);let Fd=class extends we{constructor(e){super(),this.byteWidth=e}get typeId(){return N.FixedSizeBinary}toString(){return`FixedSizeBinary[${this.byteWidth}]`}};eD=Symbol.toStringTag;Fd[eD]=(t=>(t.byteWidth=null,t.ArrayType=Uint8Array,t[Symbol.toStringTag]="FixedSizeBinary"))(Fd.prototype);let Ld=class extends we{constructor(e,n){super(),this.listSize=e,this.children=[n]}get typeId(){return N.FixedSizeList}get valueType(){return this.children[0].type}get valueField(){return this.children[0]}get ArrayType(){return this.valueType.ArrayType}toString(){return`FixedSizeList[${this.listSize}]<${this.valueType}>`}};tD=Symbol.toStringTag;Ld[tD]=(t=>(t.children=null,t.listSize=null,t[Symbol.toStringTag]="FixedSizeList"))(Ld.prototype);class $d extends we{constructor(e,n=!1){super(),this.children=[e],this.keysSorted=n}get typeId(){return N.Map}get keyType(){return this.children[0].type.children[0].type}get valueType(){return this.children[0].type.children[1].type}get childType(){return this.children[0].type}toString(){return`Map<{${this.children[0].type.children.map(e=>`${e.name}:${e.type}`).join(", ")}}>`}}nD=Symbol.toStringTag;$d[nD]=(t=>(t.children=null,t.keysSorted=null,t[Symbol.toStringTag]="Map_"))($d.prototype);const j3=(t=>()=>++t)(-1);class Qa extends we{constructor(e,n,r,i){super(),this.indices=n,this.dictionary=e,this.isOrdered=i||!1,this.id=r==null?j3():typeof r=="number"?r:r.low}get typeId(){return N.Dictionary}get children(){return this.dictionary.children}get valueType(){return this.dictionary}get ArrayType(){return this.dictionary.ArrayType}toString(){return`Dictionary<${this.indices}, ${this.dictionary}>`}}rD=Symbol.toStringTag;Qa[rD]=(t=>(t.id=null,t.indices=null,t.isOrdered=null,t.dictionary=null,t[Symbol.toStringTag]="Dictionary"))(Qa.prototype);function Si(t){const e=t;switch(t.typeId){case N.Decimal:return t.bitWidth/32;case N.Timestamp:return 2;case N.Date:return 1+e.unit;case N.Interval:return 1+e.unit;case N.FixedSizeList:return e.listSize;case N.FixedSizeBinary:return e.byteWidth;default:return 1}}class Be{visitMany(e,...n){return e.map((r,i)=>this.visit(r,...n.map(s=>s[i])))}visit(...e){return this.getVisitFn(e[0],!1).apply(this,e)}getVisitFn(e,n=!0){return U3(this,e,n)}getVisitFnByTypeId(e,n=!0){return ia(this,e,n)}visitNull(e,...n){return null}visitBool(e,...n){return null}visitInt(e,...n){return null}visitFloat(e,...n){return null}visitUtf8(e,...n){return null}visitBinary(e,...n){return null}visitFixedSizeBinary(e,...n){return null}visitDate(e,...n){return null}visitTimestamp(e,...n){return null}visitTime(e,...n){return null}visitDecimal(e,...n){return null}visitList(e,...n){return null}visitStruct(e,...n){return null}visitUnion(e,...n){return null}visitDictionary(e,...n){return null}visitInterval(e,...n){return null}visitFixedSizeList(e,...n){return null}visitMap(e,...n){return null}}function U3(t,e,n=!0){return typeof e=="number"?ia(t,e,n):typeof e=="string"&&e in N?ia(t,N[e],n):e&&e instanceof we?ia(t,p1(e),n):e!=null&&e.type&&e.type instanceof we?ia(t,p1(e.type),n):ia(t,N.NONE,n)}function ia(t,e,n=!0){let r=null;switch(e){case N.Null:r=t.visitNull;break;case N.Bool:r=t.visitBool;break;case N.Int:r=t.visitInt;break;case N.Int8:r=t.visitInt8||t.visitInt;break;case N.Int16:r=t.visitInt16||t.visitInt;break;case N.Int32:r=t.visitInt32||t.visitInt;break;case N.Int64:r=t.visitInt64||t.visitInt;break;case N.Uint8:r=t.visitUint8||t.visitInt;break;case N.Uint16:r=t.visitUint16||t.visitInt;break;case N.Uint32:r=t.visitUint32||t.visitInt;break;case N.Uint64:r=t.visitUint64||t.visitInt;break;case N.Float:r=t.visitFloat;break;case N.Float16:r=t.visitFloat16||t.visitFloat;break;case N.Float32:r=t.visitFloat32||t.visitFloat;break;case N.Float64:r=t.visitFloat64||t.visitFloat;break;case N.Utf8:r=t.visitUtf8;break;case N.Binary:r=t.visitBinary;break;case N.FixedSizeBinary:r=t.visitFixedSizeBinary;break;case N.Date:r=t.visitDate;break;case N.DateDay:r=t.visitDateDay||t.visitDate;break;case N.DateMillisecond:r=t.visitDateMillisecond||t.visitDate;break;case N.Timestamp:r=t.visitTimestamp;break;case N.TimestampSecond:r=t.visitTimestampSecond||t.visitTimestamp;break;case N.TimestampMillisecond:r=t.visitTimestampMillisecond||t.visitTimestamp;break;case N.TimestampMicrosecond:r=t.visitTimestampMicrosecond||t.visitTimestamp;break;case N.TimestampNanosecond:r=t.visitTimestampNanosecond||t.visitTimestamp;break;case N.Time:r=t.visitTime;break;case N.TimeSecond:r=t.visitTimeSecond||t.visitTime;break;case N.TimeMillisecond:r=t.visitTimeMillisecond||t.visitTime;break;case N.TimeMicrosecond:r=t.visitTimeMicrosecond||t.visitTime;break;case N.TimeNanosecond:r=t.visitTimeNanosecond||t.visitTime;break;case N.Decimal:r=t.visitDecimal;break;case N.List:r=t.visitList;break;case N.Struct:r=t.visitStruct;break;case N.Union:r=t.visitUnion;break;case N.DenseUnion:r=t.visitDenseUnion||t.visitUnion;break;case N.SparseUnion:r=t.visitSparseUnion||t.visitUnion;break;case N.Dictionary:r=t.visitDictionary;break;case N.Interval:r=t.visitInterval;break;case N.IntervalDayTime:r=t.visitIntervalDayTime||t.visitInterval;break;case N.IntervalYearMonth:r=t.visitIntervalYearMonth||t.visitInterval;break;case N.FixedSizeList:r=t.visitFixedSizeList;break;case N.Map:r=t.visitMap;break}if(typeof r=="function")return r;if(!n)return()=>null;throw new Error(`Unrecognized type '${N[e]}'`)}function p1(t){switch(t.typeId){case N.Null:return N.Null;case N.Int:{const{bitWidth:e,isSigned:n}=t;switch(e){case 8:return n?N.Int8:N.Uint8;case 16:return n?N.Int16:N.Uint16;case 32:return n?N.Int32:N.Uint32;case 64:return n?N.Int64:N.Uint64}return N.Int}case N.Float:switch(t.precision){case Tn.HALF:return N.Float16;case Tn.SINGLE:return N.Float32;case Tn.DOUBLE:return N.Float64}return N.Float;case N.Binary:return N.Binary;case N.Utf8:return N.Utf8;case N.Bool:return N.Bool;case N.Decimal:return N.Decimal;case N.Time:switch(t.unit){case ze.SECOND:return N.TimeSecond;case ze.MILLISECOND:return N.TimeMillisecond;case ze.MICROSECOND:return N.TimeMicrosecond;case ze.NANOSECOND:return N.TimeNanosecond}return N.Time;case N.Timestamp:switch(t.unit){case ze.SECOND:return N.TimestampSecond;case ze.MILLISECOND:return N.TimestampMillisecond;case ze.MICROSECOND:return N.TimestampMicrosecond;case ze.NANOSECOND:return N.TimestampNanosecond}return N.Timestamp;case N.Date:switch(t.unit){case Hi.DAY:return N.DateDay;case Hi.MILLISECOND:return N.DateMillisecond}return N.Date;case N.Interval:switch(t.unit){case Bs.DAY_TIME:return N.IntervalDayTime;case Bs.YEAR_MONTH:return N.IntervalYearMonth}return N.Interval;case N.Map:return N.Map;case N.List:return N.List;case N.Struct:return N.Struct;case N.Union:switch(t.mode){case rr.Dense:return N.DenseUnion;case rr.Sparse:return N.SparseUnion}return N.Union;case N.FixedSizeBinary:return N.FixedSizeBinary;case N.FixedSizeList:return N.FixedSizeList;case N.Dictionary:return N.Dictionary}throw new Error(`Unrecognized type '${N[t.typeId]}'`)}Be.prototype.visitInt8=null;Be.prototype.visitInt16=null;Be.prototype.visitInt32=null;Be.prototype.visitInt64=null;Be.prototype.visitUint8=null;Be.prototype.visitUint16=null;Be.prototype.visitUint32=null;Be.prototype.visitUint64=null;Be.prototype.visitFloat16=null;Be.prototype.visitFloat32=null;Be.prototype.visitFloat64=null;Be.prototype.visitDateDay=null;Be.prototype.visitDateMillisecond=null;Be.prototype.visitTimestampSecond=null;Be.prototype.visitTimestampMillisecond=null;Be.prototype.visitTimestampMicrosecond=null;Be.prototype.visitTimestampNanosecond=null;Be.prototype.visitTimeSecond=null;Be.prototype.visitTimeMillisecond=null;Be.prototype.visitTimeMicrosecond=null;Be.prototype.visitTimeNanosecond=null;Be.prototype.visitDenseUnion=null;Be.prototype.visitSparseUnion=null;Be.prototype.visitIntervalDayTime=null;Be.prototype.visitIntervalYearMonth=null;const iD=new Float64Array(1),ta=new Uint32Array(iD.buffer);function sD(t){const e=(t&31744)>>10,n=(t&1023)/1024,r=Math.pow(-1,(t&32768)>>15);switch(e){case 31:return r*(n?Number.NaN:1/0);case 0:return r*(n?6103515625e-14*n:0)}return r*Math.pow(2,e-15)*(1+n)}function z3(t){if(t!==t)return 32256;iD[0]=t;const e=(ta[1]&2147483648)>>16&65535;let n=ta[1]&2146435072,r=0;return n>=1089470464?ta[0]>0?n=31744:(n=(n&2080374784)>>16,r=(ta[1]&1048575)>>10):n<=1056964608?(r=1048576+(ta[1]&1048575),r=1048576+(r<<(n>>20)-998)>>21,n=0):(n=n-1056964608>>10,r=(ta[1]&1048575)+512>>10),e|n|r&65535}class Ee extends Be{}function xe(t){return(e,n,r)=>{if(e.setValid(n,r!=null))return t(e,n,r)}}const V3=(t,e,n)=>{t[e]=Math.trunc(n/864e5)},y0=(t,e,n)=>{t[e]=Math.trunc(n%4294967296),t[e+1]=Math.trunc(n/4294967296)},K3=(t,e,n)=>{t[e]=Math.trunc(n*1e3%4294967296),t[e+1]=Math.trunc(n*1e3/4294967296)},W3=(t,e,n)=>{t[e]=Math.trunc(n*1e6%4294967296),t[e+1]=Math.trunc(n*1e6/4294967296)},oD=(t,e,n,r)=>{if(n+1{const i=t+n;r?e[i>>3]|=1<>3]&=~(1<{t[e]=n},v0=({values:t},e,n)=>{t[e]=n},aD=({values:t},e,n)=>{t[e]=z3(n)},H3=(t,e,n)=>{switch(t.type.precision){case Tn.HALF:return aD(t,e,n);case Tn.SINGLE:case Tn.DOUBLE:return v0(t,e,n)}},uD=({values:t},e,n)=>{V3(t,e,n.valueOf())},lD=({values:t},e,n)=>{y0(t,e*2,n.valueOf())},Q3=({stride:t,values:e},n,r)=>{e.set(r.subarray(0,t),t*n)},Y3=({values:t,valueOffsets:e},n,r)=>oD(t,e,n,r),G3=({values:t,valueOffsets:e},n,r)=>{oD(t,e,n,f0(r))},J3=(t,e,n)=>{t.type.unit===Hi.DAY?uD(t,e,n):lD(t,e,n)},cD=({values:t},e,n)=>y0(t,e*2,n/1e3),fD=({values:t},e,n)=>y0(t,e*2,n),dD=({values:t},e,n)=>K3(t,e*2,n),hD=({values:t},e,n)=>W3(t,e*2,n),X3=(t,e,n)=>{switch(t.type.unit){case ze.SECOND:return cD(t,e,n);case ze.MILLISECOND:return fD(t,e,n);case ze.MICROSECOND:return dD(t,e,n);case ze.NANOSECOND:return hD(t,e,n)}},pD=({values:t},e,n)=>{t[e]=n},mD=({values:t},e,n)=>{t[e]=n},yD=({values:t},e,n)=>{t[e]=n},vD=({values:t},e,n)=>{t[e]=n},Z3=(t,e,n)=>{switch(t.type.unit){case ze.SECOND:return pD(t,e,n);case ze.MILLISECOND:return mD(t,e,n);case ze.MICROSECOND:return yD(t,e,n);case ze.NANOSECOND:return vD(t,e,n)}},e$=({values:t,stride:e},n,r)=>{t.set(r.subarray(0,e),e*n)},t$=(t,e,n)=>{const r=t.children[0],i=t.valueOffsets,s=Sr.getVisitFn(r);if(Array.isArray(n))for(let o=-1,a=i[e],l=i[e+1];a{const r=t.children[0],{valueOffsets:i}=t,s=Sr.getVisitFn(r);let{[e]:o,[e+1]:a}=i;const l=n instanceof Map?n.entries():Object.entries(n);for(const f of l)if(s(r,o,f),++o>=a)break},r$=(t,e)=>(n,r,i,s)=>r&&n(r,t,e[s]),i$=(t,e)=>(n,r,i,s)=>r&&n(r,t,e.get(s)),s$=(t,e)=>(n,r,i,s)=>r&&n(r,t,e.get(i.name)),o$=(t,e)=>(n,r,i,s)=>r&&n(r,t,e[i.name]),a$=(t,e,n)=>{const r=t.type.children.map(s=>Sr.getVisitFn(s.type)),i=n instanceof Map?s$(e,n):n instanceof Ke?i$(e,n):Array.isArray(n)?r$(e,n):o$(e,n);t.type.children.forEach((s,o)=>i(r[o],t.children[o],s,o))},u$=(t,e,n)=>{t.type.mode===rr.Dense?gD(t,e,n):wD(t,e,n)},gD=(t,e,n)=>{const r=t.type.typeIdToChildIndex[t.typeIds[e]],i=t.children[r];Sr.visit(i,t.valueOffsets[e],n)},wD=(t,e,n)=>{const r=t.type.typeIdToChildIndex[t.typeIds[e]],i=t.children[r];Sr.visit(i,e,n)},l$=(t,e,n)=>{var r;(r=t.dictionary)===null||r===void 0||r.set(t.values[e],n)},c$=(t,e,n)=>{t.type.unit===Bs.DAY_TIME?_D(t,e,n):bD(t,e,n)},_D=({values:t},e,n)=>{t.set(n.subarray(0,2),2*e)},bD=({values:t},e,n)=>{t[e]=n[0]*12+n[1]%12},f$=(t,e,n)=>{const{stride:r}=t,i=t.children[0],s=Sr.getVisitFn(i);if(Array.isArray(n))for(let o=-1,a=e*r;++o`${Nl(e)}: ${Nl(n)}`).join(", ")}}`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}[Symbol.iterator](){return new d$(this[Dr],this[Ca])}}class d${constructor(e,n){this.childIndex=0,this.children=e.children,this.rowIndex=n,this.childFields=e.type.children,this.numChildren=this.childFields.length}[Symbol.iterator](){return this}next(){const e=this.childIndex;return en.name)}has(e,n){return e[Dr].type.children.findIndex(r=>r.name===n)!==-1}getOwnPropertyDescriptor(e,n){if(e[Dr].type.children.findIndex(r=>r.name===n)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(e,n){if(Reflect.has(e,n))return e[n];const r=e[Dr].type.children.findIndex(i=>i.name===n);if(r!==-1){const i=Ln.visit(e[Dr].children[r],e[Ca]);return Reflect.set(e,n,i),i}}set(e,n,r){const i=e[Dr].type.children.findIndex(s=>s.name===n);return i!==-1?(Sr.visit(e[Dr].children[i],e[Ca],r),Reflect.set(e,n,r)):Reflect.has(e,n)||typeof n=="symbol"?Reflect.set(e,n,r):!1}}class _e extends Be{}function Oe(t){return(e,n)=>e.getValid(n)?t(e,n):null}const p$=(t,e)=>864e5*t[e],w0=(t,e)=>4294967296*t[e+1]+(t[e]>>>0),m$=(t,e)=>4294967296*(t[e+1]/1e3)+(t[e]>>>0)/1e3,y$=(t,e)=>4294967296*(t[e+1]/1e6)+(t[e]>>>0)/1e6,SD=t=>new Date(t),v$=(t,e)=>SD(p$(t,e)),g$=(t,e)=>SD(w0(t,e)),w$=(t,e)=>null,ID=(t,e,n)=>{if(n+1>=e.length)return null;const r=e[n],i=e[n+1];return t.subarray(r,i)},_$=({offset:t,values:e},n)=>{const r=t+n;return(e[r>>3]&1<v$(t,e),OD=({values:t},e)=>g$(t,e*2),Ys=({stride:t,values:e},n)=>e[t*n],b$=({stride:t,values:e},n)=>sD(e[t*n]),kD=({values:t},e)=>t[e],S$=({stride:t,values:e},n)=>e.subarray(t*n,t*(n+1)),I$=({values:t,valueOffsets:e},n)=>ID(t,e,n),E$=({values:t,valueOffsets:e},n)=>{const r=ID(t,e,n);return r!==null?av(r):null},O$=({values:t},e)=>t[e],k$=({type:t,values:e},n)=>t.precision!==Tn.HALF?e[n]:sD(e[n]),D$=(t,e)=>t.type.unit===Hi.DAY?ED(t,e):OD(t,e),DD=({values:t},e)=>1e3*w0(t,e*2),xD=({values:t},e)=>w0(t,e*2),CD=({values:t},e)=>m$(t,e*2),AD=({values:t},e)=>y$(t,e*2),x$=(t,e)=>{switch(t.type.unit){case ze.SECOND:return DD(t,e);case ze.MILLISECOND:return xD(t,e);case ze.MICROSECOND:return CD(t,e);case ze.NANOSECOND:return AD(t,e)}},PD=({values:t},e)=>t[e],RD=({values:t},e)=>t[e],TD=({values:t},e)=>t[e],MD=({values:t},e)=>t[e],C$=(t,e)=>{switch(t.type.unit){case ze.SECOND:return PD(t,e);case ze.MILLISECOND:return RD(t,e);case ze.MICROSECOND:return TD(t,e);case ze.NANOSECOND:return MD(t,e)}},A$=({values:t,stride:e},n)=>m0.decimal(t.subarray(e*n,e*(n+1))),P$=(t,e)=>{const{valueOffsets:n,stride:r,children:i}=t,{[e*r]:s,[e*r+1]:o}=n,l=i[0].slice(s,o-s);return new Ke([l])},R$=(t,e)=>{const{valueOffsets:n,children:r}=t,{[e]:i,[e+1]:s}=n,o=r[0];return new _0(o.slice(i,s-i))},T$=(t,e)=>new g0(t,e),M$=(t,e)=>t.type.mode===rr.Dense?ND(t,e):BD(t,e),ND=(t,e)=>{const n=t.type.typeIdToChildIndex[t.typeIds[e]],r=t.children[n];return Ln.visit(r,t.valueOffsets[e])},BD=(t,e)=>{const n=t.type.typeIdToChildIndex[t.typeIds[e]],r=t.children[n];return Ln.visit(r,e)},N$=(t,e)=>{var n;return(n=t.dictionary)===null||n===void 0?void 0:n.get(t.values[e])},B$=(t,e)=>t.type.unit===Bs.DAY_TIME?FD(t,e):LD(t,e),FD=({values:t},e)=>t.subarray(2*e,2*(e+1)),LD=({values:t},e)=>{const n=t[e],r=new Int32Array(2);return r[0]=Math.trunc(n/12),r[1]=Math.trunc(n%12),r},F$=(t,e)=>{const{stride:n,children:r}=t,s=r[0].slice(e*n,n);return new Ke([s])};_e.prototype.visitNull=Oe(w$);_e.prototype.visitBool=Oe(_$);_e.prototype.visitInt=Oe(O$);_e.prototype.visitInt8=Oe(Ys);_e.prototype.visitInt16=Oe(Ys);_e.prototype.visitInt32=Oe(Ys);_e.prototype.visitInt64=Oe(kD);_e.prototype.visitUint8=Oe(Ys);_e.prototype.visitUint16=Oe(Ys);_e.prototype.visitUint32=Oe(Ys);_e.prototype.visitUint64=Oe(kD);_e.prototype.visitFloat=Oe(k$);_e.prototype.visitFloat16=Oe(b$);_e.prototype.visitFloat32=Oe(Ys);_e.prototype.visitFloat64=Oe(Ys);_e.prototype.visitUtf8=Oe(E$);_e.prototype.visitBinary=Oe(I$);_e.prototype.visitFixedSizeBinary=Oe(S$);_e.prototype.visitDate=Oe(D$);_e.prototype.visitDateDay=Oe(ED);_e.prototype.visitDateMillisecond=Oe(OD);_e.prototype.visitTimestamp=Oe(x$);_e.prototype.visitTimestampSecond=Oe(DD);_e.prototype.visitTimestampMillisecond=Oe(xD);_e.prototype.visitTimestampMicrosecond=Oe(CD);_e.prototype.visitTimestampNanosecond=Oe(AD);_e.prototype.visitTime=Oe(C$);_e.prototype.visitTimeSecond=Oe(PD);_e.prototype.visitTimeMillisecond=Oe(RD);_e.prototype.visitTimeMicrosecond=Oe(TD);_e.prototype.visitTimeNanosecond=Oe(MD);_e.prototype.visitDecimal=Oe(A$);_e.prototype.visitList=Oe(P$);_e.prototype.visitStruct=Oe(T$);_e.prototype.visitUnion=Oe(M$);_e.prototype.visitDenseUnion=Oe(ND);_e.prototype.visitSparseUnion=Oe(BD);_e.prototype.visitDictionary=Oe(N$);_e.prototype.visitInterval=Oe(B$);_e.prototype.visitIntervalDayTime=Oe(FD);_e.prototype.visitIntervalYearMonth=Oe(LD);_e.prototype.visitFixedSizeList=Oe(F$);_e.prototype.visitMap=Oe(R$);const Ln=new _e,ei=Symbol.for("keys"),Aa=Symbol.for("vals");class _0{constructor(e){return this[ei]=new Ke([e.children[0]]).memoize(),this[Aa]=e.children[1],new Proxy(this,new $$)}[Symbol.iterator](){return new L$(this[ei],this[Aa])}get size(){return this[ei].length}toArray(){return Object.values(this.toJSON())}toJSON(){const e=this[ei],n=this[Aa],r={};for(let i=-1,s=e.length;++i`${Nl(e)}: ${Nl(n)}`).join(", ")}}`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}class L${constructor(e,n){this.keys=e,this.vals=n,this.keyIndex=0,this.numKeys=e.length}[Symbol.iterator](){return this}next(){const e=this.keyIndex;return e===this.numKeys?{done:!0,value:null}:(this.keyIndex++,{done:!1,value:[this.keys.get(e),Ln.visit(this.vals,e)]})}}class $${isExtensible(){return!1}deleteProperty(){return!1}preventExtensions(){return!0}ownKeys(e){return e[ei].toArray().map(String)}has(e,n){return e[ei].includes(n)}getOwnPropertyDescriptor(e,n){if(e[ei].indexOf(n)!==-1)return{writable:!0,enumerable:!0,configurable:!0}}get(e,n){if(Reflect.has(e,n))return e[n];const r=e[ei].indexOf(n);if(r!==-1){const i=Ln.visit(Reflect.get(e,Aa),r);return Reflect.set(e,n,i),i}}set(e,n,r){const i=e[ei].indexOf(n);return i!==-1?(Sr.visit(Reflect.get(e,Aa),i,r),Reflect.set(e,n,r)):Reflect.has(e,n)?Reflect.set(e,n,r):!1}}Object.defineProperties(_0.prototype,{[Symbol.toStringTag]:{enumerable:!1,configurable:!1,value:"Row"},[ei]:{writable:!0,enumerable:!1,configurable:!1,value:null},[Aa]:{writable:!0,enumerable:!1,configurable:!1,value:null}});let m1;function $D(t,e,n,r){const{length:i=0}=t;let s=typeof e!="number"?0:e,o=typeof n!="number"?i:n;return s<0&&(s=(s%i+i)%i),o<0&&(o=(o%i+i)%i),oi&&(o=i),r?r(t,s,o):[s,o]}const y1=t=>t!==t;function du(t){if(typeof t!=="object"||t===null)return y1(t)?y1:n=>n===t;if(t instanceof Date){const n=t.valueOf();return r=>r instanceof Date?r.valueOf()===n:!1}return ArrayBuffer.isView(t)?n=>n?R3(t,n):!1:t instanceof Map?U$(t):Array.isArray(t)?j$(t):t instanceof Ke?z$(t):V$(t,!0)}function j$(t){const e=[];for(let n=-1,r=t.length;++n!1;const r=[];for(let i=-1,s=n.length;++i{if(!n||typeof n!="object")return!1;switch(n.constructor){case Array:return K$(t,n);case Map:return v1(t,n,n.keys());case _0:case g0:case Object:case void 0:return v1(t,n,e||Object.keys(n))}return n instanceof Ke?W$(t,n):!1}}function K$(t,e){const n=t.length;if(e.length!==n)return!1;for(let r=-1;++r>r}function b0(t,e,n){const r=n.byteLength+7&-8;if(t>0||n.byteLength>3):jd(new S0(n,t,e,null,jD)).subarray(0,r)),i}return n}function jd(t){const e=[];let n=0,r=0,i=0;for(const o of t)o&&(i|=1<0)&&(e[n++]=i);const s=new Uint8Array(e.length+7&-8);return s.set(e),s}class S0{constructor(e,n,r,i,s){this.bytes=e,this.length=r,this.context=i,this.get=s,this.bit=n%8,this.byteIndex=n>>3,this.byte=e[this.byteIndex++],this.index=0}next(){return this.index>3<<3,i=e+(e%8===0?0:8-e%8);return fv(t,e,i)+fv(t,r,n)+H$(t,i>>3,r-i>>3)}function H$(t,e,n){let r=0,i=Math.trunc(e);const s=new DataView(t.buffer,t.byteOffset,t.byteLength),o=n===void 0?t.byteLength:i+n;for(;o-i>=4;)r+=Om(s.getUint32(i)),i+=4;for(;o-i>=2;)r+=Om(s.getUint16(i)),i+=2;for(;o-i>=1;)r+=Om(s.getUint8(i)),i+=1;return r}function Om(t){let e=Math.trunc(t);return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24}const Q$=-1;class at{constructor(e,n,r,i,s,o=[],a){this.type=e,this.children=o,this.dictionary=a,this.offset=Math.floor(Math.max(n||0,0)),this.length=Math.floor(Math.max(r||0,0)),this._nullCount=Math.floor(Math.max(i||0,-1));let l;s instanceof at?(this.stride=s.stride,this.values=s.values,this.typeIds=s.typeIds,this.nullBitmap=s.nullBitmap,this.valueOffsets=s.valueOffsets):(this.stride=Si(e),s&&((l=s[0])&&(this.valueOffsets=l),(l=s[1])&&(this.values=l),(l=s[2])&&(this.nullBitmap=l),(l=s[3])&&(this.typeIds=l))),this.nullable=this._nullCount!==0&&this.nullBitmap&&this.nullBitmap.byteLength>0}get typeId(){return this.type.typeId}get ArrayType(){return this.type.ArrayType}get buffers(){return[this.valueOffsets,this.values,this.nullBitmap,this.typeIds]}get byteLength(){let e=0;const{valueOffsets:n,values:r,nullBitmap:i,typeIds:s}=this;return n&&(e+=n.byteLength),r&&(e+=r.byteLength),i&&(e+=i.byteLength),s&&(e+=s.byteLength),this.children.reduce((o,a)=>o+a.byteLength,e)}get nullCount(){let e=this._nullCount,n;return e<=Q$&&(n=this.nullBitmap)&&(this._nullCount=e=this.length-fv(n,this.offset,this.offset+this.length)),e}getValid(e){if(this.nullable&&this.nullCount>0){const n=this.offset+e;return(this.nullBitmap[n>>3]&1<>3){const{nullBitmap:l}=this._changeLengthAndBackfillNullBitmap(this.length);Object.assign(this,{nullBitmap:l,_nullCount:0})}const{nullBitmap:r,offset:i}=this,s=i+e>>3,o=(i+e)%8,a=r[s]>>o&1;return n?a===0&&(r[s]|=1<>3).fill(255,0,n>>3);i[n>>3]=(1<0&&i.set(b0(this.offset,n,this.nullBitmap),0);const s=this.buffers;return s[bi.VALIDITY]=i,this.clone(this.type,0,e,r+(e-n),s)}_sliceBuffers(e,n,r,i){let s;const{buffers:o}=this;return(s=o[bi.TYPE])&&(o[bi.TYPE]=s.subarray(e,e+n)),(s=o[bi.OFFSET])&&(o[bi.OFFSET]=s.subarray(e,e+n+1))||(s=o[bi.DATA])&&(o[bi.DATA]=i===6?s:s.subarray(r*e,r*(e+n))),o}_sliceChildren(e,n,r){return e.map(i=>i.slice(n,r))}}at.prototype.children=Object.freeze([]);class ol extends Be{visit(e){return this.getVisitFn(e.type).call(this,e)}visitNull(e){const{["type"]:n,["offset"]:r=0,["length"]:i=0}=e;return new at(n,r,i,0)}visitBool(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length>>3,["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitInt(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length,["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitFloat(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length,["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitUtf8(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.data),s=Ue(e.nullBitmap),o=Fu(e.valueOffsets),{["length"]:a=o.length-1,["nullCount"]:l=e.nullBitmap?-1:0}=e;return new at(n,r,a,l,[o,i,s])}visitBinary(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.data),s=Ue(e.nullBitmap),o=Fu(e.valueOffsets),{["length"]:a=o.length-1,["nullCount"]:l=e.nullBitmap?-1:0}=e;return new at(n,r,a,l,[o,i,s])}visitFixedSizeBinary(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitDate(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitTimestamp(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitTime(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitDecimal(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitList(e){const{["type"]:n,["offset"]:r=0,["child"]:i}=e,s=Ue(e.nullBitmap),o=Fu(e.valueOffsets),{["length"]:a=o.length-1,["nullCount"]:l=e.nullBitmap?-1:0}=e;return new at(n,r,a,l,[o,void 0,s],[i])}visitStruct(e){const{["type"]:n,["offset"]:r=0,["children"]:i=[]}=e,s=Ue(e.nullBitmap),{length:o=i.reduce((l,{length:f})=>Math.max(l,f),0),nullCount:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,void 0,s],i)}visitUnion(e){const{["type"]:n,["offset"]:r=0,["children"]:i=[]}=e,s=Ue(e.nullBitmap),o=rt(n.ArrayType,e.typeIds),{["length"]:a=o.length,["nullCount"]:l=e.nullBitmap?-1:0}=e;if(we.isSparseUnion(n))return new at(n,r,a,l,[void 0,void 0,s,o],i);const f=Fu(e.valueOffsets);return new at(n,r,a,l,[f,void 0,s,o],i)}visitDictionary(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.indices.ArrayType,e.data),{["dictionary"]:o=new Ke([new ol().visit({type:n.dictionary})])}=e,{["length"]:a=s.length,["nullCount"]:l=e.nullBitmap?-1:0}=e;return new at(n,r,a,l,[void 0,s,i],[],o)}visitInterval(e){const{["type"]:n,["offset"]:r=0}=e,i=Ue(e.nullBitmap),s=rt(n.ArrayType,e.data),{["length"]:o=s.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,s,i])}visitFixedSizeList(e){const{["type"]:n,["offset"]:r=0,["child"]:i=new ol().visit({type:n.valueType})}=e,s=Ue(e.nullBitmap),{["length"]:o=i.length/Si(n),["nullCount"]:a=e.nullBitmap?-1:0}=e;return new at(n,r,o,a,[void 0,void 0,s],[i])}visitMap(e){const{["type"]:n,["offset"]:r=0,["child"]:i=new ol().visit({type:n.childType})}=e,s=Ue(e.nullBitmap),o=Fu(e.valueOffsets),{["length"]:a=o.length-1,["nullCount"]:l=e.nullBitmap?-1:0}=e;return new at(n,r,a,l,[o,void 0,s],[i])}}function Ne(t){return new ol().visit(t)}class g1{constructor(e=0,n){this.numChunks=e,this.getChunkIterator=n,this.chunkIndex=0,this.chunkIterator=this.getChunkIterator(0)}next(){for(;this.chunkIndexe+n.nullCount,0)}function zD(t){return t.reduce((e,n,r)=>(e[r+1]=e[r]+n.length,e),new Uint32Array(t.length+1))}function VD(t,e,n,r){const i=[];for(let s=-1,o=t.length;++s=r)break;if(n>=l+f)continue;if(l>=n&&l+f<=r){i.push(a);continue}const h=Math.max(0,n-l),p=Math.min(r-l,f);i.push(a.slice(h,p-h))}return i.length===0&&i.push(t[0].slice(0,0)),i}function I0(t,e,n,r){let i=0,s=0,o=e.length-1;do{if(i>=o-1)return n0?0:-1}function G$(t,e){const{nullBitmap:n}=t;if(!n||t.nullCount<=0)return-1;let r=0;for(const i of new S0(n,t.offset+(e||0),t.length,n,jD)){if(!i)return r;++r}return-1}function Ae(t,e,n){if(e===void 0)return-1;if(e===null)return G$(t,n);const r=Ln.getVisitFn(t),i=du(e);for(let s=(n||0)-1,o=t.length;++s{const i=t.data[r];return i.values.subarray(0,i.length)[Symbol.iterator]()});let n=0;return new g1(t.data.length,r=>{const s=t.data[r].length,o=t.slice(n,n+s);return n+=s,new J$(o)})}class J${constructor(e){this.vector=e,this.index=0}next(){return this.indext+e;class Gs extends Be{visitNull(e,n){return 0}visitInt(e,n){return e.type.bitWidth/8}visitFloat(e,n){return e.type.ArrayType.BYTES_PER_ELEMENT}visitBool(e,n){return 1/8}visitDecimal(e,n){return e.type.bitWidth/8}visitDate(e,n){return(e.type.unit+1)*4}visitTime(e,n){return e.type.bitWidth/8}visitTimestamp(e,n){return e.type.unit===ze.SECOND?4:8}visitInterval(e,n){return(e.type.unit+1)*4}visitStruct(e,n){return e.children.reduce((r,i)=>r+di.visit(i,n),0)}visitFixedSizeBinary(e,n){return e.type.byteWidth}visitMap(e,n){return 8+e.children.reduce((r,i)=>r+di.visit(i,n),0)}visitDictionary(e,n){var r;return e.type.indices.bitWidth/8+(((r=e.dictionary)===null||r===void 0?void 0:r.getByteLength(e.values[n]))||0)}}const Z$=({valueOffsets:t},e)=>8+(t[e+1]-t[e]),ej=({valueOffsets:t},e)=>8+(t[e+1]-t[e]),tj=({valueOffsets:t,stride:e,children:n},r)=>{const i=n[0],{[r*e]:s}=t,{[r*e+1]:o}=t,a=di.getVisitFn(i.type),l=i.slice(s,o-s);let f=8;for(let h=-1,p=o-s;++h{const r=e[0],i=r.slice(n*t,t),s=di.getVisitFn(r.type);let o=0;for(let a=-1,l=i.length;++at.type.mode===rr.Dense?HD(t,e):QD(t,e),HD=({type:t,children:e,typeIds:n,valueOffsets:r},i)=>{const s=t.typeIdToChildIndex[n[i]];return 8+di.visit(e[s],r[i])},QD=({children:t},e)=>4+di.visitMany(t,t.map(()=>e)).reduce(X$,0);Gs.prototype.visitUtf8=Z$;Gs.prototype.visitBinary=ej;Gs.prototype.visitList=tj;Gs.prototype.visitFixedSizeList=nj;Gs.prototype.visitUnion=rj;Gs.prototype.visitDenseUnion=HD;Gs.prototype.visitSparseUnion=QD;const di=new Gs;var YD;const GD={},JD={};class Ke{constructor(e){var n,r,i;const s=e[0]instanceof Ke?e.flatMap(a=>a.data):e;if(s.length===0||s.some(a=>!(a instanceof at)))throw new TypeError("Vector constructor expects an Array of Data instances.");const o=(n=s[0])===null||n===void 0?void 0:n.type;switch(s.length){case 0:this._offsets=[0];break;case 1:{const{get:a,set:l,indexOf:f,byteLength:h}=GD[o.typeId],p=s[0];this.isValid=y=>E0(p,y),this.get=y=>a(p,y),this.set=(y,w)=>l(p,y,w),this.indexOf=y=>f(p,y),this.getByteLength=y=>h(p,y),this._offsets=[0,p.length];break}default:Object.setPrototypeOf(this,JD[o.typeId]),this._offsets=zD(s);break}this.data=s,this.type=o,this.stride=Si(o),this.numChildren=(i=(r=o.children)===null||r===void 0?void 0:r.length)!==null&&i!==void 0?i:0,this.length=this._offsets[this._offsets.length-1]}get byteLength(){return this._byteLength===-1&&(this._byteLength=this.data.reduce((e,n)=>e+n.byteLength,0)),this._byteLength}get nullCount(){return this._nullCount===-1&&(this._nullCount=UD(this.data)),this._nullCount}get ArrayType(){return this.type.ArrayType}get[Symbol.toStringTag](){return`${this.VectorName}<${this.type[Symbol.toStringTag]}>`}get VectorName(){return`${N[this.type.typeId]}Vector`}isValid(e){return!1}get(e){return null}set(e,n){}indexOf(e,n){return-1}includes(e,n){return this.indexOf(e,n)>0}getByteLength(e){return 0}[Symbol.iterator](){return O0.visit(this)}concat(...e){return new Ke(this.data.concat(e.flatMap(n=>n.data).flat(Number.POSITIVE_INFINITY)))}slice(e,n){return new Ke($D(this,e,n,({data:r,_offsets:i},s,o)=>VD(r,i,s,o)))}toJSON(){return[...this]}toArray(){const{type:e,data:n,length:r,stride:i,ArrayType:s}=this;switch(e.typeId){case N.Int:case N.Float:case N.Decimal:case N.Time:case N.Timestamp:switch(n.length){case 0:return new s;case 1:return n[0].values.subarray(0,r*i);default:return n.reduce((o,{values:a,length:l})=>(o.array.set(a.subarray(0,l*i),o.offset),o.offset+=l*i,o),{array:new s(r*i),offset:0}).array}}return[...this]}toString(){return`[${[...this].join(",")}]`}getChild(e){var n;return this.getChildAt((n=this.type.children)===null||n===void 0?void 0:n.findIndex(r=>r.name===e))}getChildAt(e){return e>-1&&en[e])):null}get isMemoized(){return we.isDictionary(this.type)?this.data[0].dictionary.isMemoized:!1}memoize(){if(we.isDictionary(this.type)){const e=new zd(this.data[0].dictionary),n=this.data.map(r=>{const i=r.clone();return i.dictionary=e,i});return new Ke(n)}return new zd(this)}unmemoize(){if(we.isDictionary(this.type)&&this.isMemoized){const e=this.data[0].dictionary.unmemoize(),n=this.data.map(r=>{const i=r.clone();return i.dictionary=e,i});return new Ke(n)}return this}}YD=Symbol.toStringTag;Ke[YD]=(t=>{t.type=we.prototype,t.data=[],t.length=0,t.stride=1,t.numChildren=0,t._nullCount=-1,t._byteLength=-1,t._offsets=new Uint32Array([0]),t[Symbol.isConcatSpreadable]=!0;const e=Object.keys(N).map(n=>N[n]).filter(n=>typeof n=="number"&&n!==N.NONE);for(const n of e){const r=Ln.getVisitFnByTypeId(n),i=Sr.getVisitFnByTypeId(n),s=Ud.getVisitFnByTypeId(n),o=di.getVisitFnByTypeId(n);GD[n]={get:r,set:i,indexOf:s,byteLength:o},JD[n]=Object.create(t,{isValid:{value:Pa(E0)},get:{value:Pa(Ln.getVisitFnByTypeId(n))},set:{value:KD(Sr.getVisitFnByTypeId(n))},indexOf:{value:WD(Ud.getVisitFnByTypeId(n))},getByteLength:{value:Pa(di.getVisitFnByTypeId(n))}})}return"Vector"})(Ke.prototype);class zd extends Ke{constructor(e){super(e.data);const n=this.get,r=this.set,i=this.slice,s=new Array(this.length);Object.defineProperty(this,"get",{value(o){const a=s[o];if(a!==void 0)return a;const l=n.call(this,o);return s[o]=l,l}}),Object.defineProperty(this,"set",{value(o,a){r.call(this,o,a),s[o]=a}}),Object.defineProperty(this,"slice",{value:(o,a)=>new zd(i.call(this,o,a))}),Object.defineProperty(this,"isMemoized",{value:!0}),Object.defineProperty(this,"unmemoize",{value:()=>new Ke(this.data)}),Object.defineProperty(this,"memoize",{value:()=>this})}}class dv{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}offset(){return this.bb.readInt64(this.bb_pos)}metaDataLength(){return this.bb.readInt32(this.bb_pos+8)}bodyLength(){return this.bb.readInt64(this.bb_pos+16)}static sizeOf(){return 24}static createBlock(e,n,r,i){return e.prep(8,24),e.writeInt64(i),e.pad(4),e.writeInt32(r),e.writeInt64(n),e.offset()}}const km=2,ti=4,ki=4,st=4,fs=new Int32Array(2),w1=new Float32Array(fs.buffer),_1=new Float64Array(fs.buffer),ff=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;let Ni=class hv{constructor(e,n){this.low=e|0,this.high=n|0}static create(e,n){return e==0&&n==0?hv.ZERO:new hv(e,n)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}};Ni.ZERO=new Ni(0,0);var pv;(function(t){t[t.UTF8_BYTES=1]="UTF8_BYTES",t[t.UTF16_STRING=2]="UTF16_STRING"})(pv||(pv={}));let Ya=class XD{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new XD(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Ni(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Ni(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return fs[0]=this.readInt32(e),w1[0]}readFloat64(e){return fs[ff?0:1]=this.readInt32(e),fs[ff?1:0]=this.readInt32(e+4),_1[0]}writeInt8(e,n){this.bytes_[e]=n}writeUint8(e,n){this.bytes_[e]=n}writeInt16(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8}writeUint16(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8}writeInt32(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8,this.bytes_[e+2]=n>>16,this.bytes_[e+3]=n>>24}writeUint32(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8,this.bytes_[e+2]=n>>16,this.bytes_[e+3]=n>>24}writeInt64(e,n){this.writeInt32(e,n.low),this.writeInt32(e+4,n.high)}writeUint64(e,n){this.writeUint32(e,n.low),this.writeUint32(e+4,n.high)}writeFloat32(e,n){w1[0]=n,this.writeInt32(e,fs[0])}writeFloat64(e,n){_1[0]=n,this.writeInt32(e,fs[ff?0:1]),this.writeInt32(e+4,fs[ff?1:0])}getBufferIdentifier(){if(this.bytes_.length>10)+55296,(o&1024-1)+56320))}return i}__union_with_string(e,n){return typeof e=="string"?this.__string(n):this.__union(e,n)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+ti}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=ki)throw new Error("FlatBuffers: file identifier must be length "+ki);for(let n=0;nthis.minalign&&(this.minalign=e);const r=~(this.bb.capacity()-this.space+n)+1&e-1;for(;this.space=0&&this.vtable[n]==0;n--);const r=n+1;for(;n>=0;n--)this.addInt16(this.vtable[n]!=0?e-this.vtable[n]:0);const i=2;this.addInt16(e-this.object_start);const s=(r+i)*km;this.addInt16(s);let o=0;const a=this.space;e:for(n=0;n=0;o--)this.writeInt8(s.charCodeAt(o))}this.prep(this.minalign,ti+i),this.addOffset(e),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,n){this.finish(e,n,!0)}requiredField(e,n){const r=this.bb.capacity()-e,i=r-this.bb.readInt32(r);if(!(this.bb.readInt16(i+n)!=0))throw new Error("FlatBuffers: field "+n+" must be set")}startVector(e,n,r){this.notNested(),this.vector_num_elems=n,this.prep(ti,e*n),this.prep(r,e*n)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);const n=this.createString(e);return this.string_maps.set(e,n),n}createString(e){if(!e)return 0;let n;if(e instanceof Uint8Array)n=e;else{n=[];let r=0;for(;r=56320)i=s;else{const o=e.charCodeAt(r++);i=(s<<10)+o+(65536-56623104-56320)}i<128?n.push(i):(i<2048?n.push(i>>6&31|192):(i<65536?n.push(i>>12&15|224):n.push(i>>18&7|240,i>>12&63|128),n.push(i>>6&63|128)),n.push(i&63|128))}}this.addInt8(0),this.startVector(1,n.length,1),this.bb.setPosition(this.space-=n.length);for(let r=0,i=this.space,s=this.bb.bytes();r=0;r--)e.addInt32(n[r]);return e.endVector()}static startTypeIdsVector(e,n){e.startVector(4,n,4)}static endUnion(e){return e.endObject()}static createUnion(e,n,r){return Dn.startUnion(e),Dn.addMode(e,n),Dn.addTypeIds(e,r),Dn.endUnion(e)}}class Io{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsUtf8(e,n){return(n||new Io).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsUtf8(e,n){return e.setPosition(e.position()+st),(n||new Io).__init(e.readInt32(e.position())+e.position(),e)}static startUtf8(e){e.startObject(0)}static endUtf8(e){return e.endObject()}static createUtf8(e){return Io.startUtf8(e),Io.endUtf8(e)}}var _t;(function(t){t[t.NONE=0]="NONE",t[t.Null=1]="Null",t[t.Int=2]="Int",t[t.FloatingPoint=3]="FloatingPoint",t[t.Binary=4]="Binary",t[t.Utf8=5]="Utf8",t[t.Bool=6]="Bool",t[t.Decimal=7]="Decimal",t[t.Date=8]="Date",t[t.Time=9]="Time",t[t.Timestamp=10]="Timestamp",t[t.Interval=11]="Interval",t[t.List=12]="List",t[t.Struct_=13]="Struct_",t[t.Union=14]="Union",t[t.FixedSizeBinary=15]="FixedSizeBinary",t[t.FixedSizeList=16]="FixedSizeList",t[t.Map=17]="Map",t[t.Duration=18]="Duration",t[t.LargeBinary=19]="LargeBinary",t[t.LargeUtf8=20]="LargeUtf8",t[t.LargeList=21]="LargeList"})(_t||(_t={}));let fr=class Ff{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsField(e,n){return(n||new Ff).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsField(e,n){return e.setPosition(e.position()+st),(n||new Ff).__init(e.readInt32(e.position())+e.position(),e)}name(e){const n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}nullable(){const e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):!1}typeType(){const e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint8(this.bb_pos+e):_t.NONE}type(e){const n=this.bb.__offset(this.bb_pos,10);return n?this.bb.__union(e,this.bb_pos+n):null}dictionary(e){const n=this.bb.__offset(this.bb_pos,12);return n?(e||new Di).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}children(e,n){const r=this.bb.__offset(this.bb_pos,14);return r?(n||new Ff).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}childrenLength(){const e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__vector_len(this.bb_pos+e):0}customMetadata(e,n){const r=this.bb.__offset(this.bb_pos,16);return r?(n||new zt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}customMetadataLength(){const e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}static startField(e){e.startObject(7)}static addName(e,n){e.addFieldOffset(0,n,0)}static addNullable(e,n){e.addFieldInt8(1,+n,0)}static addTypeType(e,n){e.addFieldInt8(2,n,_t.NONE)}static addType(e,n){e.addFieldOffset(3,n,0)}static addDictionary(e,n){e.addFieldOffset(4,n,0)}static addChildren(e,n){e.addFieldOffset(5,n,0)}static createChildrenVector(e,n){e.startVector(4,n.length,4);for(let r=n.length-1;r>=0;r--)e.addOffset(n[r]);return e.endVector()}static startChildrenVector(e,n){e.startVector(4,n,4)}static addCustomMetadata(e,n){e.addFieldOffset(6,n,0)}static createCustomMetadataVector(e,n){e.startVector(4,n.length,4);for(let r=n.length-1;r>=0;r--)e.addOffset(n[r]);return e.endVector()}static startCustomMetadataVector(e,n){e.startVector(4,n,4)}static endField(e){return e.endObject()}},Yr=class wi{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsSchema(e,n){return(n||new wi).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsSchema(e,n){return e.setPosition(e.position()+st),(n||new wi).__init(e.readInt32(e.position())+e.position(),e)}endianness(){const e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt16(this.bb_pos+e):Ja.Little}fields(e,n){const r=this.bb.__offset(this.bb_pos,6);return r?(n||new fr).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}fieldsLength(){const e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__vector_len(this.bb_pos+e):0}customMetadata(e,n){const r=this.bb.__offset(this.bb_pos,8);return r?(n||new zt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}customMetadataLength(){const e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}features(e){const n=this.bb.__offset(this.bb_pos,10);return n?this.bb.readInt64(this.bb.__vector(this.bb_pos+n)+e*8):this.bb.createLong(0,0)}featuresLength(){const e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}static startSchema(e){e.startObject(4)}static addEndianness(e,n){e.addFieldInt16(0,n,Ja.Little)}static addFields(e,n){e.addFieldOffset(1,n,0)}static createFieldsVector(e,n){e.startVector(4,n.length,4);for(let r=n.length-1;r>=0;r--)e.addOffset(n[r]);return e.endVector()}static startFieldsVector(e,n){e.startVector(4,n,4)}static addCustomMetadata(e,n){e.addFieldOffset(2,n,0)}static createCustomMetadataVector(e,n){e.startVector(4,n.length,4);for(let r=n.length-1;r>=0;r--)e.addOffset(n[r]);return e.endVector()}static startCustomMetadataVector(e,n){e.startVector(4,n,4)}static addFeatures(e,n){e.addFieldOffset(3,n,0)}static createFeaturesVector(e,n){e.startVector(8,n.length,8);for(let r=n.length-1;r>=0;r--)e.addInt64(n[r]);return e.endVector()}static startFeaturesVector(e,n){e.startVector(8,n,8)}static endSchema(e){return e.endObject()}static finishSchemaBuffer(e,n){e.finish(n)}static finishSizePrefixedSchemaBuffer(e,n){e.finish(n,void 0,!0)}static createSchema(e,n,r,i,s){return wi.startSchema(e),wi.addEndianness(e,n),wi.addFields(e,r),wi.addCustomMetadata(e,i),wi.addFeatures(e,s),wi.endSchema(e)}};class qn{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsFooter(e,n){return(n||new qn).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsFooter(e,n){return e.setPosition(e.position()+st),(n||new qn).__init(e.readInt32(e.position())+e.position(),e)}version(){const e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt16(this.bb_pos+e):Ga.V1}schema(e){const n=this.bb.__offset(this.bb_pos,6);return n?(e||new Yr).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}dictionaries(e,n){const r=this.bb.__offset(this.bb_pos,8);return r?(n||new dv).__init(this.bb.__vector(this.bb_pos+r)+e*24,this.bb):null}dictionariesLength(){const e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}recordBatches(e,n){const r=this.bb.__offset(this.bb_pos,10);return r?(n||new dv).__init(this.bb.__vector(this.bb_pos+r)+e*24,this.bb):null}recordBatchesLength(){const e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__vector_len(this.bb_pos+e):0}customMetadata(e,n){const r=this.bb.__offset(this.bb_pos,12);return r?(n||new zt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}customMetadataLength(){const e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}static startFooter(e){e.startObject(5)}static addVersion(e,n){e.addFieldInt16(0,n,Ga.V1)}static addSchema(e,n){e.addFieldOffset(1,n,0)}static addDictionaries(e,n){e.addFieldOffset(2,n,0)}static startDictionariesVector(e,n){e.startVector(24,n,8)}static addRecordBatches(e,n){e.addFieldOffset(3,n,0)}static startRecordBatchesVector(e,n){e.startVector(24,n,8)}static addCustomMetadata(e,n){e.addFieldOffset(4,n,0)}static createCustomMetadataVector(e,n){e.startVector(4,n.length,4);for(let r=n.length-1;r>=0;r--)e.addOffset(n[r]);return e.endVector()}static startCustomMetadataVector(e,n){e.startVector(4,n,4)}static endFooter(e){return e.endObject()}static finishFooterBuffer(e,n){e.finish(n)}static finishSizePrefixedFooterBuffer(e,n){e.finish(n,void 0,!0)}}class We{constructor(e=[],n,r){this.fields=e||[],this.metadata=n||new Map,r||(r=mv(e)),this.dictionaries=r}get[Symbol.toStringTag](){return"Schema"}get names(){return this.fields.map(e=>e.name)}toString(){return`Schema<{ ${this.fields.map((e,n)=>`${n}: ${e}`).join(", ")} }>`}select(e){const n=new Set(e),r=this.fields.filter(i=>n.has(i.name));return new We(r,this.metadata)}selectAt(e){const n=e.map(r=>this.fields[r]).filter(Boolean);return new We(n,this.metadata)}assign(...e){const n=e[0]instanceof We?e[0]:Array.isArray(e[0])?new We(e[0]):new We(e),r=[...this.fields],i=df(df(new Map,this.metadata),n.metadata),s=n.fields.filter(a=>{const l=r.findIndex(f=>f.name===a.name);return~l?(r[l]=a.clone({metadata:df(df(new Map,r[l].metadata),a.metadata)}))&&!1:!0}),o=mv(s,new Map);return new We([...r,...s],i,new Map([...this.dictionaries,...o]))}}We.prototype.fields=null;We.prototype.metadata=null;We.prototype.dictionaries=null;class yt{constructor(e,n,r=!1,i){this.name=e,this.type=n,this.nullable=r,this.metadata=i||new Map}static new(...e){let[n,r,i,s]=e;return e[0]&&typeof e[0]=="object"&&({name:n}=e[0],r===void 0&&(r=e[0].type),i===void 0&&(i=e[0].nullable),s===void 0&&(s=e[0].metadata)),new yt(`${n}`,r,i,s)}get typeId(){return this.type.typeId}get[Symbol.toStringTag](){return"Field"}toString(){return`${this.name}: ${this.type}`}clone(...e){let[n,r,i,s]=e;return!e[0]||typeof e[0]!="object"?[n=this.name,r=this.type,i=this.nullable,s=this.metadata]=e:{name:n=this.name,type:r=this.type,nullable:i=this.nullable,metadata:s=this.metadata}=e[0],yt.new(n,r,i,s)}}yt.prototype.type=null;yt.prototype.name=null;yt.prototype.nullable=null;yt.prototype.metadata=null;function df(t,e){return new Map([...t||new Map,...e||new Map])}function mv(t,e=new Map){for(let n=-1,r=t.length;++n0&&mv(s.children,e)}return e}var b1=Ni,ij=ZD,sj=Ya;class jl{constructor(e,n=Gn.V4,r,i){this.schema=e,this.version=n,r&&(this._recordBatches=r),i&&(this._dictionaryBatches=i)}static decode(e){e=new sj(Ue(e));const n=qn.getRootAsFooter(e),r=We.decode(n.schema());return new oj(r,n)}static encode(e){const n=new ij,r=We.encode(n,e.schema);qn.startRecordBatchesVector(n,e.numRecordBatches);for(const o of[...e.recordBatches()].slice().reverse())$s.encode(n,o);const i=n.endVector();qn.startDictionariesVector(n,e.numDictionaries);for(const o of[...e.dictionaryBatches()].slice().reverse())$s.encode(n,o);const s=n.endVector();return qn.startFooter(n),qn.addSchema(n,r),qn.addVersion(n,Gn.V4),qn.addRecordBatches(n,i),qn.addDictionaries(n,s),qn.finishFooterBuffer(n,qn.endFooter(n)),n.asUint8Array()}get numRecordBatches(){return this._recordBatches.length}get numDictionaries(){return this._dictionaryBatches.length}*recordBatches(){for(let e,n=-1,r=this.numRecordBatches;++n=0&&e=0&&e=0&&e=0&&ethis._closedPromiseResolve=e)}get closed(){return this._closedPromise}cancel(e){return ve(this,void 0,void 0,function*(){yield this.return(e)})}write(e){this._ensureOpen()&&(this.resolvers.length<=0?this._values.push(e):this.resolvers.shift().resolve({done:!1,value:e}))}abort(e){this._closedPromiseResolve&&(this.resolvers.length<=0?this._error={error:e}:this.resolvers.shift().reject({done:!0,value:e}))}close(){if(this._closedPromiseResolve){const{resolvers:e}=this;for(;e.length>0;)e.shift().resolve(St);this._closedPromiseResolve(),this._closedPromiseResolve=void 0}}[Symbol.asyncIterator](){return this}toDOMStream(e){return dr.toDOMStream(this._closedPromiseResolve||this._error?this:this._values,e)}toNodeStream(e){return dr.toNodeStream(this._closedPromiseResolve||this._error?this:this._values,e)}throw(e){return ve(this,void 0,void 0,function*(){return yield this.abort(e),St})}return(e){return ve(this,void 0,void 0,function*(){return yield this.close(),St})}read(e){return ve(this,void 0,void 0,function*(){return(yield this.next(e,"read")).value})}peek(e){return ve(this,void 0,void 0,function*(){return(yield this.next(e,"peek")).value})}next(...e){return this._values.length>0?Promise.resolve({done:!1,value:this._values.shift()}):this._error?Promise.reject({done:!0,value:this._error.error}):this._closedPromiseResolve?new Promise((n,r)=>{this.resolvers.push({resolve:n,reject:r})}):Promise.resolve(St)}_ensureOpen(){if(this._closedPromiseResolve)return!0;throw new Error("AsyncQueue is closed")}}class Lf extends aj{write(e){if((e=Ue(e)).byteLength>0)return super.write(e)}toString(e=!1){return e?av(this.toUint8Array(!0)):this.toUint8Array(!1).then(av)}toUint8Array(e=!1){return e?fi(this._values)[0]:(()=>ve(this,void 0,void 0,function*(){var n,r;const i=[];let s=0;try{for(var o=Ds(this),a;a=yield o.next(),!a.done;){const l=a.value;i.push(l),s+=l.byteLength}}catch(l){n={error:l}}finally{try{a&&!a.done&&(r=o.return)&&(yield r.call(o))}finally{if(n)throw n.error}}return fi(i,s)[0]}))()}}class Qd{constructor(e){e&&(this.source=new uj(dr.fromIterable(e)))}[Symbol.iterator](){return this}next(e){return this.source.next(e)}throw(e){return this.source.throw(e)}return(e){return this.source.return(e)}peek(e){return this.source.peek(e)}read(e){return this.source.read(e)}}class Za{constructor(e){e instanceof Za?this.source=e.source:e instanceof Lf?this.source=new lo(dr.fromAsyncIterable(e)):Bk(e)?this.source=new lo(dr.fromNodeStream(e)):d0(e)?this.source=new lo(dr.fromDOMStream(e)):Nk(e)?this.source=new lo(dr.fromDOMStream(e.body)):uc(e)?this.source=new lo(dr.fromIterable(e)):Ns(e)?this.source=new lo(dr.fromAsyncIterable(e)):fu(e)&&(this.source=new lo(dr.fromAsyncIterable(e)))}[Symbol.asyncIterator](){return this}next(e){return this.source.next(e)}throw(e){return this.source.throw(e)}return(e){return this.source.return(e)}get closed(){return this.source.closed}cancel(e){return this.source.cancel(e)}peek(e){return this.source.peek(e)}read(e){return this.source.read(e)}}class uj{constructor(e){this.source=e}cancel(e){this.return(e)}peek(e){return this.next(e,"peek").value}read(e){return this.next(e,"read").value}next(e,n="read"){return this.source.next({cmd:n,size:e})}throw(e){return Object.create(this.source.throw&&this.source.throw(e)||St)}return(e){return Object.create(this.source.return&&this.source.return(e)||St)}}class lo{constructor(e){this.source=e,this._closedPromise=new Promise(n=>this._closedPromiseResolve=n)}cancel(e){return ve(this,void 0,void 0,function*(){yield this.return(e)})}get closed(){return this._closedPromise}read(e){return ve(this,void 0,void 0,function*(){return(yield this.next(e,"read")).value})}peek(e){return ve(this,void 0,void 0,function*(){return(yield this.next(e,"peek")).value})}next(e,n="read"){return ve(this,void 0,void 0,function*(){return yield this.source.next({cmd:n,size:e})})}throw(e){return ve(this,void 0,void 0,function*(){const n=this.source.throw&&(yield this.source.throw(e))||St;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(n)})}return(e){return ve(this,void 0,void 0,function*(){const n=this.source.return&&(yield this.source.return(e))||St;return this._closedPromiseResolve&&this._closedPromiseResolve(),this._closedPromiseResolve=void 0,Object.create(n)})}}class I1 extends Qd{constructor(e,n){super(),this.position=0,this.buffer=Ue(e),this.size=typeof n>"u"?this.buffer.byteLength:n}readInt32(e){const{buffer:n,byteOffset:r}=this.readAt(e,4);return new DataView(n,r).getInt32(0,!0)}seek(e){return this.position=Math.min(e,this.size),eve(this,void 0,void 0,function*(){this.size=(yield e.stat()).size,delete this._pending}))()}readInt32(e){return ve(this,void 0,void 0,function*(){const{buffer:n,byteOffset:r}=yield this.readAt(e,4);return new DataView(n,r).getInt32(0,!0)})}seek(e){return ve(this,void 0,void 0,function*(){return this._pending&&(yield this._pending),this.position=Math.min(e,this.size),e>>16,this.buffer[1]&65535,this.buffer[0]>>>16,this.buffer[0]&65535]),r=new Uint32Array([e.buffer[1]>>>16,e.buffer[1]&65535,e.buffer[0]>>>16,e.buffer[0]&65535]);let i=n[3]*r[3];this.buffer[0]=i&65535;let s=i>>>16;return i=n[2]*r[3],s+=i,i=n[3]*r[2]>>>0,s+=i,this.buffer[0]+=s<<16,this.buffer[1]=s>>>0>>16,this.buffer[1]+=n[1]*r[3]+n[2]*r[2]+n[3]*r[1],this.buffer[1]+=n[0]*r[3]+n[1]*r[2]+n[2]*r[1]+n[3]*r[0]<<16,this}_plus(e){const n=this.buffer[0]+e.buffer[0]>>>0;this.buffer[1]+=e.buffer[1],n>>0&&++this.buffer[1],this.buffer[0]=n}lessThan(e){return this.buffer[1]>>0,n[2]=this.buffer[2]+e.buffer[2]>>>0,n[1]=this.buffer[1]+e.buffer[1]>>>0,n[0]=this.buffer[0]+e.buffer[0]>>>0,n[0]>>0&&++n[1],n[1]>>0&&++n[2],n[2]>>0&&++n[3],this.buffer[3]=n[3],this.buffer[2]=n[2],this.buffer[1]=n[1],this.buffer[0]=n[0],this}hex(){return`${_a(this.buffer[3])} ${_a(this.buffer[2])} ${_a(this.buffer[1])} ${_a(this.buffer[0])}`}static multiply(e,n){return new Gr(new Uint32Array(e.buffer)).times(n)}static add(e,n){return new Gr(new Uint32Array(e.buffer)).plus(n)}static from(e,n=new Uint32Array(4)){return Gr.fromString(typeof e=="string"?e:e.toString(),n)}static fromNumber(e,n=new Uint32Array(4)){return Gr.fromString(e.toString(),n)}static fromString(e,n=new Uint32Array(4)){const r=e.startsWith("-"),i=e.length,s=new Gr(n);for(let o=r?1:0;o0&&this.readData(e,r)||new Uint8Array(0)}readOffsets(e,n){return this.readData(e,n)}readTypeIds(e,n){return this.readData(e,n)}readData(e,{length:n,offset:r}=this.nextBufferRange()){return this.bytes.subarray(r,r+n)}readDictionary(e){return this.dictionaries.get(e.id)}}class cj extends nx{constructor(e,n,r,i){super(new Uint8Array(0),n,r,i),this.sources=e}readNullBitmap(e,n,{offset:r}=this.nextBufferRange()){return n<=0?new Uint8Array(0):jd(this.sources[r])}readOffsets(e,{offset:n}=this.nextBufferRange()){return rt(Uint8Array,rt(Int32Array,this.sources[n]))}readTypeIds(e,{offset:n}=this.nextBufferRange()){return rt(Uint8Array,rt(e.ArrayType,this.sources[n]))}readData(e,{offset:n}=this.nextBufferRange()){const{sources:r}=this;return we.isTimestamp(e)||(we.isInt(e)||we.isTime(e))&&e.bitWidth===64||we.isDate(e)&&e.unit===Hi.MILLISECOND?rt(Uint8Array,En.convertArray(r[n])):we.isDecimal(e)?rt(Uint8Array,Gr.convertArray(r[n])):we.isBinary(e)||we.isFixedSizeBinary(e)?fj(r[n]):we.isBool(e)?jd(r[n]):we.isUtf8(e)?f0(r[n].join("")):rt(Uint8Array,rt(e.ArrayType,r[n].map(i=>+i)))}}function fj(t){const e=t.join(""),n=new Uint8Array(e.length/2);for(let r=0;r>1]=Number.parseInt(e.slice(r,r+2),16);return n}class Ie extends Be{compareSchemas(e,n){return e===n||n instanceof e.constructor&&this.compareManyFields(e.fields,n.fields)}compareManyFields(e,n){return e===n||Array.isArray(e)&&Array.isArray(n)&&e.length===n.length&&e.every((r,i)=>this.compareFields(r,n[i]))}compareFields(e,n){return e===n||n instanceof e.constructor&&e.name===n.name&&e.nullable===n.nullable&&this.visit(e.type,n.type)}}function zn(t,e){return e instanceof t.constructor}function lc(t,e){return t===e||zn(t,e)}function Ji(t,e){return t===e||zn(t,e)&&t.bitWidth===e.bitWidth&&t.isSigned===e.isSigned}function Uh(t,e){return t===e||zn(t,e)&&t.precision===e.precision}function dj(t,e){return t===e||zn(t,e)&&t.byteWidth===e.byteWidth}function x0(t,e){return t===e||zn(t,e)&&t.unit===e.unit}function cc(t,e){return t===e||zn(t,e)&&t.unit===e.unit&&t.timezone===e.timezone}function fc(t,e){return t===e||zn(t,e)&&t.unit===e.unit&&t.bitWidth===e.bitWidth}function hj(t,e){return t===e||zn(t,e)&&t.children.length===e.children.length&&js.compareManyFields(t.children,e.children)}function pj(t,e){return t===e||zn(t,e)&&t.children.length===e.children.length&&js.compareManyFields(t.children,e.children)}function C0(t,e){return t===e||zn(t,e)&&t.mode===e.mode&&t.typeIds.every((n,r)=>n===e.typeIds[r])&&js.compareManyFields(t.children,e.children)}function mj(t,e){return t===e||zn(t,e)&&t.id===e.id&&t.isOrdered===e.isOrdered&&js.visit(t.indices,e.indices)&&js.visit(t.dictionary,e.dictionary)}function A0(t,e){return t===e||zn(t,e)&&t.unit===e.unit}function yj(t,e){return t===e||zn(t,e)&&t.listSize===e.listSize&&t.children.length===e.children.length&&js.compareManyFields(t.children,e.children)}function vj(t,e){return t===e||zn(t,e)&&t.keysSorted===e.keysSorted&&t.children.length===e.children.length&&js.compareManyFields(t.children,e.children)}Ie.prototype.visitNull=lc;Ie.prototype.visitBool=lc;Ie.prototype.visitInt=Ji;Ie.prototype.visitInt8=Ji;Ie.prototype.visitInt16=Ji;Ie.prototype.visitInt32=Ji;Ie.prototype.visitInt64=Ji;Ie.prototype.visitUint8=Ji;Ie.prototype.visitUint16=Ji;Ie.prototype.visitUint32=Ji;Ie.prototype.visitUint64=Ji;Ie.prototype.visitFloat=Uh;Ie.prototype.visitFloat16=Uh;Ie.prototype.visitFloat32=Uh;Ie.prototype.visitFloat64=Uh;Ie.prototype.visitUtf8=lc;Ie.prototype.visitBinary=lc;Ie.prototype.visitFixedSizeBinary=dj;Ie.prototype.visitDate=x0;Ie.prototype.visitDateDay=x0;Ie.prototype.visitDateMillisecond=x0;Ie.prototype.visitTimestamp=cc;Ie.prototype.visitTimestampSecond=cc;Ie.prototype.visitTimestampMillisecond=cc;Ie.prototype.visitTimestampMicrosecond=cc;Ie.prototype.visitTimestampNanosecond=cc;Ie.prototype.visitTime=fc;Ie.prototype.visitTimeSecond=fc;Ie.prototype.visitTimeMillisecond=fc;Ie.prototype.visitTimeMicrosecond=fc;Ie.prototype.visitTimeNanosecond=fc;Ie.prototype.visitDecimal=lc;Ie.prototype.visitList=hj;Ie.prototype.visitStruct=pj;Ie.prototype.visitUnion=C0;Ie.prototype.visitDenseUnion=C0;Ie.prototype.visitSparseUnion=C0;Ie.prototype.visitDictionary=mj;Ie.prototype.visitInterval=A0;Ie.prototype.visitIntervalDayTime=A0;Ie.prototype.visitIntervalYearMonth=A0;Ie.prototype.visitFixedSizeList=yj;Ie.prototype.visitMap=vj;const js=new Ie;function yv(t,e){return js.compareSchemas(t,e)}function Dm(t,e){return gj(t,e.map(n=>n.data.concat()))}function gj(t,e){const n=[...t.fields],r=[],i={numBatches:e.reduce((p,y)=>Math.max(p,y.length),0)};let s=0,o=0,a=-1;const l=e.length;let f,h=[];for(;i.numBatches-- >0;){for(o=Number.POSITIVE_INFINITY,a=-1;++a0&&(r[s++]=Ne({type:new vn(n),length:o,nullCount:0,children:h.slice()})))}return[t=t.assign(n),r.map(p=>new xn(t,p))]}function wj(t,e,n,r,i){var s;const o=(e+63&-64)>>3;for(let a=-1,l=r.length;++a=e)h===e?n[a]=f:(n[a]=f.slice(0,e),i.numBatches=Math.max(i.numBatches,r[a].unshift(f.slice(e,h-e))));else{const p=t[a];t[a]=p.clone({nullable:!0}),n[a]=(s=f==null?void 0:f._changeLengthAndBackfillNullBitmap(e))!==null&&s!==void 0?s:Ne({type:p.type,length:e,nullCount:e,nullBitmap:new Uint8Array(o)})}}return n}var rx;class mn{constructor(...e){var n,r;if(e.length===0)return this.batches=[],this.schema=new We([]),this._offsets=[0],this;let i,s;e[0]instanceof We&&(i=e.shift()),e[e.length-1]instanceof Uint32Array&&(s=e.pop());const o=l=>{if(l){if(l instanceof xn)return[l];if(l instanceof mn)return l.batches;if(l instanceof at){if(l.type instanceof vn)return[new xn(new We(l.type.children),l)]}else{if(Array.isArray(l))return l.flatMap(f=>o(f));if(typeof l[Symbol.iterator]=="function")return[...l].flatMap(f=>o(f));if(typeof l=="object"){const f=Object.keys(l),h=f.map(w=>new Ke([l[w]])),p=new We(f.map((w,I)=>new yt(String(w),h[I].type))),[,y]=Dm(p,h);return y.length===0?[new xn(l)]:y}}}return[]},a=e.flatMap(l=>o(l));if(i=(r=i??((n=a[0])===null||n===void 0?void 0:n.schema))!==null&&r!==void 0?r:new We([]),!(i instanceof We))throw new TypeError("Table constructor expects a [Schema, RecordBatch[]] pair.");for(const l of a){if(!(l instanceof xn))throw new TypeError("Table constructor expects a [Schema, RecordBatch[]] pair.");if(!yv(i,l.schema))throw new TypeError("Table and inner RecordBatch schemas must be equivalent.")}this.schema=i,this.batches=a,this._offsets=s??zD(this.data)}get data(){return this.batches.map(({data:e})=>e)}get numCols(){return this.schema.fields.length}get numRows(){return this.data.reduce((e,n)=>e+n.length,0)}get nullCount(){return this._nullCount===-1&&(this._nullCount=UD(this.data)),this._nullCount}isValid(e){return!1}get(e){return null}set(e,n){}indexOf(e,n){return-1}getByteLength(e){return 0}[Symbol.iterator](){return this.batches.length>0?O0.visit(new Ke(this.data)):new Array(0)[Symbol.iterator]()}toArray(){return[...this]}toString(){return`[ + ${this.toArray().join(`, + `)} +]`}concat(...e){const n=this.schema,r=this.data.concat(e.flatMap(({data:i})=>i));return new mn(n,r.map(i=>new xn(n,i)))}slice(e,n){const r=this.schema;[e,n]=$D({length:this.numRows},e,n);const i=VD(this.data,this._offsets,e,n);return new mn(r,i.map(s=>new xn(r,s)))}getChild(e){return this.getChildAt(this.schema.fields.findIndex(n=>n.name===e))}getChildAt(e){if(e>-1&&er.children[e]);if(n.length===0){const{type:r}=this.schema.fields[e],i=Ne({type:r,length:0,nullCount:0});n.push(i._changeLengthAndBackfillNullBitmap(this.numRows))}return new Ke(n)}return null}setChild(e,n){var r;return this.setChildAt((r=this.schema.fields)===null||r===void 0?void 0:r.findIndex(i=>i.name===e),n)}setChildAt(e,n){let r=this.schema,i=[...this.batches];if(e>-1&&ethis.getChildAt(f));[s[e],a[e]]=[o,n],[r,i]=Dm(r,a)}return new mn(r,i)}select(e){const n=this.schema.fields.reduce((r,i,s)=>r.set(i.name,s),new Map);return this.selectAt(e.map(r=>n.get(r)).filter(r=>r>-1))}selectAt(e){const n=this.schema.selectAt(e),r=this.batches.map(i=>i.selectAt(e));return new mn(n,r)}assign(e){const n=this.schema.fields,[r,i]=e.schema.fields.reduce((a,l,f)=>{const[h,p]=a,y=n.findIndex(w=>w.name===l.name);return~y?p[y]=f:h.push(f),a},[[],[]]),s=this.schema.assign(e.schema),o=[...n.map((a,l)=>[l,i[l]]).map(([a,l])=>l===void 0?this.getChildAt(a):e.getChildAt(l)),...r.map(a=>e.getChildAt(a))].filter(Boolean);return new mn(...Dm(s,o))}}rx=Symbol.toStringTag;mn[rx]=(t=>(t.schema=null,t.batches=[],t._offsets=new Uint32Array([0]),t._nullCount=-1,t[Symbol.isConcatSpreadable]=!0,t.isValid=Pa(E0),t.get=Pa(Ln.getVisitFn(N.Struct)),t.set=KD(Sr.getVisitFn(N.Struct)),t.indexOf=WD(Ud.getVisitFn(N.Struct)),t.getByteLength=Pa(di.getVisitFn(N.Struct)),"Table"))(mn.prototype);var ix;let xn=class Vu{constructor(...e){switch(e.length){case 2:{if([this.schema]=e,!(this.schema instanceof We))throw new TypeError("RecordBatch constructor expects a [Schema, Data] pair.");if([,this.data=Ne({nullCount:0,type:new vn(this.schema.fields),children:this.schema.fields.map(n=>Ne({type:n.type,nullCount:0}))})]=e,!(this.data instanceof at))throw new TypeError("RecordBatch constructor expects a [Schema, Data] pair.");[this.schema,this.data]=E1(this.schema,this.data.children);break}case 1:{const[n]=e,{fields:r,children:i,length:s}=Object.keys(n).reduce((l,f,h)=>(l.children[h]=n[f],l.length=Math.max(l.length,n[f].length),l.fields[h]=yt.new({name:f,type:n[f].type,nullable:!0}),l),{length:0,fields:new Array,children:new Array}),o=new We(r),a=Ne({type:new vn(r),length:s,children:i,nullCount:0});[this.schema,this.data]=E1(o,a.children,s);break}default:throw new TypeError("RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.")}}get dictionaries(){return this._dictionaries||(this._dictionaries=sx(this.schema.fields,this.data.children))}get numCols(){return this.schema.fields.length}get numRows(){return this.data.length}get nullCount(){return this.data.nullCount}isValid(e){return this.data.getValid(e)}get(e){return Ln.visit(this.data,e)}set(e,n){return Sr.visit(this.data,e,n)}indexOf(e,n){return Ud.visit(this.data,e,n)}getByteLength(e){return di.visit(this.data,e)}[Symbol.iterator](){return O0.visit(new Ke([this.data]))}toArray(){return[...this]}concat(...e){return new mn(this.schema,[this,...e])}slice(e,n){const[r]=new Ke([this.data]).slice(e,n).data;return new Vu(this.schema,r)}getChild(e){var n;return this.getChildAt((n=this.schema.fields)===null||n===void 0?void 0:n.findIndex(r=>r.name===e))}getChildAt(e){return e>-1&&ei.name===e),n)}setChildAt(e,n){let r=this.schema,i=this.data;if(e>-1&&ea.name===s);~o&&(i[o]=this.data.children[o])}return new Vu(n,Ne({type:r,length:this.numRows,children:i}))}selectAt(e){const n=this.schema.selectAt(e),r=e.map(s=>this.data.children[s]).filter(Boolean),i=Ne({type:new vn(n.fields),length:this.numRows,children:r});return new Vu(n,i)}};ix=Symbol.toStringTag;xn[ix]=(t=>(t._nullCount=-1,t[Symbol.isConcatSpreadable]=!0,"RecordBatch"))(xn.prototype);function E1(t,e,n=e.reduce((r,i)=>Math.max(r,i.length),0)){var r;const i=[...t.fields],s=[...e],o=(n+63&-64)>>3;for(const[a,l]of t.fields.entries()){const f=e[a];(!f||f.length!==n)&&(i[a]=l.clone({nullable:!0}),s[a]=(r=f==null?void 0:f._changeLengthAndBackfillNullBitmap(n))!==null&&r!==void 0?r:Ne({type:l.type,length:n,nullCount:n,nullBitmap:new Uint8Array(o)}))}return[t.assign(i),Ne({type:new vn(i),length:n,children:s})]}function sx(t,e,n=new Map){for(let r=-1,i=t.length;++r0&&sx(o.children,a.children,n)}return n}class P0 extends xn{constructor(e){const n=e.fields.map(i=>Ne({type:i.type})),r=Ne({type:new vn(e.fields),nullCount:0,children:n});super(e,r)}}var Gd;(function(t){t[t.BUFFER=0]="BUFFER"})(Gd||(Gd={}));var Jd;(function(t){t[t.LZ4_FRAME=0]="LZ4_FRAME",t[t.ZSTD=1]="ZSTD"})(Jd||(Jd={}));class ds{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsBodyCompression(e,n){return(n||new ds).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsBodyCompression(e,n){return e.setPosition(e.position()+st),(n||new ds).__init(e.readInt32(e.position())+e.position(),e)}codec(){const e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):Jd.LZ4_FRAME}method(){const e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readInt8(this.bb_pos+e):Gd.BUFFER}static startBodyCompression(e){e.startObject(2)}static addCodec(e,n){e.addFieldInt8(0,n,Jd.LZ4_FRAME)}static addMethod(e,n){e.addFieldInt8(1,n,Gd.BUFFER)}static endBodyCompression(e){return e.endObject()}static createBodyCompression(e,n,r){return ds.startBodyCompression(e),ds.addCodec(e,n),ds.addMethod(e,r),ds.endBodyCompression(e)}}class ox{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}offset(){return this.bb.readInt64(this.bb_pos)}length(){return this.bb.readInt64(this.bb_pos+8)}static sizeOf(){return 16}static createBuffer(e,n,r){return e.prep(8,16),e.writeInt64(r),e.writeInt64(n),e.offset()}}let ax=class{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}length(){return this.bb.readInt64(this.bb_pos)}nullCount(){return this.bb.readInt64(this.bb_pos+8)}static sizeOf(){return 16}static createFieldNode(e,n,r){return e.prep(8,16),e.writeInt64(r),e.writeInt64(n),e.offset()}},Ii=class vv{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsRecordBatch(e,n){return(n||new vv).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRecordBatch(e,n){return e.setPosition(e.position()+st),(n||new vv).__init(e.readInt32(e.position())+e.position(),e)}length(){const e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt64(this.bb_pos+e):this.bb.createLong(0,0)}nodes(e,n){const r=this.bb.__offset(this.bb_pos,6);return r?(n||new ax).__init(this.bb.__vector(this.bb_pos+r)+e*16,this.bb):null}nodesLength(){const e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__vector_len(this.bb_pos+e):0}buffers(e,n){const r=this.bb.__offset(this.bb_pos,8);return r?(n||new ox).__init(this.bb.__vector(this.bb_pos+r)+e*16,this.bb):null}buffersLength(){const e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__vector_len(this.bb_pos+e):0}compression(e){const n=this.bb.__offset(this.bb_pos,10);return n?(e||new ds).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}static startRecordBatch(e){e.startObject(4)}static addLength(e,n){e.addFieldInt64(0,n,e.createLong(0,0))}static addNodes(e,n){e.addFieldOffset(1,n,0)}static startNodesVector(e,n){e.startVector(16,n,8)}static addBuffers(e,n){e.addFieldOffset(2,n,0)}static startBuffersVector(e,n){e.startVector(16,n,8)}static addCompression(e,n){e.addFieldOffset(3,n,0)}static endRecordBatch(e){return e.endObject()}},aa=class gv{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsDictionaryBatch(e,n){return(n||new gv).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsDictionaryBatch(e,n){return e.setPosition(e.position()+st),(n||new gv).__init(e.readInt32(e.position())+e.position(),e)}id(){const e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt64(this.bb_pos+e):this.bb.createLong(0,0)}data(e){const n=this.bb.__offset(this.bb_pos,6);return n?(e||new Ii).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}isDelta(){const e=this.bb.__offset(this.bb_pos,8);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startDictionaryBatch(e){e.startObject(3)}static addId(e,n){e.addFieldInt64(0,n,e.createLong(0,0))}static addData(e,n){e.addFieldOffset(1,n,0)}static addIsDelta(e,n){e.addFieldInt8(2,+n,0)}static endDictionaryBatch(e){return e.endObject()}};var Xd;(function(t){t[t.NONE=0]="NONE",t[t.Schema=1]="Schema",t[t.DictionaryBatch=2]="DictionaryBatch",t[t.RecordBatch=3]="RecordBatch",t[t.Tensor=4]="Tensor",t[t.SparseTensor=5]="SparseTensor"})(Xd||(Xd={}));let as=class Hr{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsMessage(e,n){return(n||new Hr).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMessage(e,n){return e.setPosition(e.position()+st),(n||new Hr).__init(e.readInt32(e.position())+e.position(),e)}version(){const e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt16(this.bb_pos+e):Ga.V1}headerType(){const e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb_pos+e):Xd.NONE}header(e){const n=this.bb.__offset(this.bb_pos,8);return n?this.bb.__union(e,this.bb_pos+n):null}bodyLength(){const e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readInt64(this.bb_pos+e):this.bb.createLong(0,0)}customMetadata(e,n){const r=this.bb.__offset(this.bb_pos,12);return r?(n||new zt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+e*4),this.bb):null}customMetadataLength(){const e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__vector_len(this.bb_pos+e):0}static startMessage(e){e.startObject(5)}static addVersion(e,n){e.addFieldInt16(0,n,Ga.V1)}static addHeaderType(e,n){e.addFieldInt8(1,n,Xd.NONE)}static addHeader(e,n){e.addFieldOffset(2,n,0)}static addBodyLength(e,n){e.addFieldInt64(3,n,e.createLong(0,0))}static addCustomMetadata(e,n){e.addFieldOffset(4,n,0)}static createCustomMetadataVector(e,n){e.startVector(4,n.length,4);for(let r=n.length-1;r>=0;r--)e.addOffset(n[r]);return e.endVector()}static startCustomMetadataVector(e,n){e.startVector(4,n,4)}static endMessage(e){return e.endObject()}static finishMessageBuffer(e,n){e.finish(n)}static finishSizePrefixedMessageBuffer(e,n){e.finish(n,void 0,!0)}static createMessage(e,n,r,i,s,o){return Hr.startMessage(e),Hr.addVersion(e,n),Hr.addHeaderType(e,r),Hr.addHeader(e,i),Hr.addBodyLength(e,s),Hr.addCustomMetadata(e,o),Hr.endMessage(e)}};var _j=Ni;class bj extends Be{visit(e,n){return e==null||n==null?void 0:super.visit(e,n)}visitNull(e,n){return bo.startNull(n),bo.endNull(n)}visitInt(e,n){return Qn.startInt(n),Qn.addBitWidth(n,e.bitWidth),Qn.addIsSigned(n,e.isSigned),Qn.endInt(n)}visitFloat(e,n){return ii.startFloatingPoint(n),ii.addPrecision(n,e.precision),ii.endFloatingPoint(n)}visitBinary(e,n){return go.startBinary(n),go.endBinary(n)}visitBool(e,n){return wo.startBool(n),wo.endBool(n)}visitUtf8(e,n){return Io.startUtf8(n),Io.endUtf8(n)}visitDecimal(e,n){return On.startDecimal(n),On.addScale(n,e.scale),On.addPrecision(n,e.precision),On.addBitWidth(n,e.bitWidth),On.endDecimal(n)}visitDate(e,n){return Nf.startDate(n),Nf.addUnit(n,e.unit),Nf.endDate(n)}visitTime(e,n){return mr.startTime(n),mr.addUnit(n,e.unit),mr.addBitWidth(n,e.bitWidth),mr.endTime(n)}visitTimestamp(e,n){const r=e.timezone&&n.createString(e.timezone)||void 0;return yr.startTimestamp(n),yr.addUnit(n,e.unit),r!==void 0&&yr.addTimezone(n,r),yr.endTimestamp(n)}visitInterval(e,n){return si.startInterval(n),si.addUnit(n,e.unit),si.endInterval(n)}visitList(e,n){return _o.startList(n),_o.endList(n)}visitStruct(e,n){return So.startStruct_(n),So.endStruct_(n)}visitUnion(e,n){Dn.startTypeIdsVector(n,e.typeIds.length);const r=Dn.createTypeIdsVector(n,e.typeIds);return Dn.startUnion(n),Dn.addMode(n,e.mode),Dn.addTypeIds(n,r),Dn.endUnion(n)}visitDictionary(e,n){const r=this.visit(e.indices,n);return Di.startDictionaryEncoding(n),Di.addId(n,new _j(e.id,0)),Di.addIsOrdered(n,e.isOrdered),r!==void 0&&Di.addIndexType(n,r),Di.endDictionaryEncoding(n)}visitFixedSizeBinary(e,n){return ni.startFixedSizeBinary(n),ni.addByteWidth(n,e.byteWidth),ni.endFixedSizeBinary(n)}visitFixedSizeList(e,n){return ri.startFixedSizeList(n),ri.addListSize(n,e.listSize),ri.endFixedSizeList(n)}visitMap(e,n){return Bf.startMap(n),Bf.addKeysSorted(n,e.keysSorted),Bf.endMap(n)}}const xm=new bj;function Sj(t,e=new Map){return new We(Ej(t,e),$f(t.customMetadata),e)}function ux(t){return new ir(t.count,lx(t.columns),cx(t.columns))}function Ij(t){return new hi(ux(t.data),t.id,t.isDelta)}function Ej(t,e){return(t.fields||[]).filter(Boolean).map(n=>yt.fromJSON(n,e))}function O1(t,e){return(t.children||[]).filter(Boolean).map(n=>yt.fromJSON(n,e))}function lx(t){return(t||[]).reduce((e,n)=>[...e,new Wo(n.count,Oj(n.VALIDITY)),...lx(n.children)],[])}function cx(t,e=[]){for(let n=-1,r=(t||[]).length;++ne+ +(n===0),0)}function kj(t,e){let n,r,i,s,o,a;return!e||!(s=t.dictionary)?(o=D1(t,O1(t,e)),i=new yt(t.name,o,t.nullable,$f(t.customMetadata))):e.has(n=s.id)?(r=(r=s.indexType)?k1(r):new Fl,a=new Qa(e.get(n),r,n,s.isOrdered),i=new yt(t.name,a,t.nullable,$f(t.customMetadata))):(r=(r=s.indexType)?k1(r):new Fl,e.set(n,o=D1(t,O1(t,e))),a=new Qa(o,r,n,s.isOrdered),i=new yt(t.name,a,t.nullable,$f(t.customMetadata))),i||null}function $f(t){return new Map(Object.entries(t||{}))}function k1(t){return new Ls(t.isSigned,t.bitWidth)}function D1(t,e){const n=t.type.name;switch(n){case"NONE":return new Fs;case"null":return new Fs;case"binary":return new xd;case"utf8":return new Cd;case"bool":return new Ad;case"list":return new Nd((e||[])[0]);case"struct":return new vn(e||[]);case"struct_":return new vn(e||[])}switch(n){case"int":{const r=t.type;return new Ls(r.isSigned,r.bitWidth)}case"floatingpoint":{const r=t.type;return new Ll(Tn[r.precision])}case"decimal":{const r=t.type;return new Pd(r.scale,r.precision,r.bitWidth)}case"date":{const r=t.type;return new Rd(Hi[r.unit])}case"time":{const r=t.type;return new $l(ze[r.unit],r.bitWidth)}case"timestamp":{const r=t.type;return new Td(ze[r.unit],r.timezone)}case"interval":{const r=t.type;return new Md(Bs[r.unit])}case"union":{const r=t.type;return new Bd(rr[r.mode],r.typeIds||[],e||[])}case"fixedsizebinary":{const r=t.type;return new Fd(r.byteWidth)}case"fixedsizelist":{const r=t.type;return new Ld(r.listSize,(e||[])[0])}case"map":{const r=t.type;return new $d((e||[])[0],r.keysSorted)}}throw new Error(`Unrecognized type: "${n}"`)}var Uo=Ni,Dj=ZD,xj=Ya;class gn{constructor(e,n,r,i){this._version=n,this._headerType=r,this.body=new Uint8Array(0),i&&(this._createHeader=()=>i),this._bodyLength=typeof e=="number"?e:e.low}static fromJSON(e,n){const r=new gn(0,Gn.V4,n);return r._createHeader=Cj(e,n),r}static decode(e){e=new xj(Ue(e));const n=as.getRootAsMessage(e),r=n.bodyLength(),i=n.version(),s=n.headerType(),o=new gn(r,i,s);return o._createHeader=Aj(n,s),o}static encode(e){const n=new Dj;let r=-1;return e.isSchema()?r=We.encode(n,e.header()):e.isRecordBatch()?r=ir.encode(n,e.header()):e.isDictionaryBatch()&&(r=hi.encode(n,e.header())),as.startMessage(n),as.addVersion(n,Gn.V4),as.addHeader(n,r),as.addHeaderType(n,e.headerType),as.addBodyLength(n,new Uo(e.bodyLength,0)),as.finishMessageBuffer(n,as.endMessage(n)),n.asUint8Array()}static from(e,n=0){if(e instanceof We)return new gn(0,Gn.V4,Ve.Schema,e);if(e instanceof ir)return new gn(n,Gn.V4,Ve.RecordBatch,e);if(e instanceof hi)return new gn(n,Gn.V4,Ve.DictionaryBatch,e);throw new Error(`Unrecognized Message header: ${e}`)}get type(){return this.headerType}get version(){return this._version}get headerType(){return this._headerType}get bodyLength(){return this._bodyLength}header(){return this._createHeader()}isSchema(){return this.headerType===Ve.Schema}isRecordBatch(){return this.headerType===Ve.RecordBatch}isDictionaryBatch(){return this.headerType===Ve.DictionaryBatch}}class ir{constructor(e,n,r){this._nodes=n,this._buffers=r,this._length=typeof e=="number"?e:e.low}get nodes(){return this._nodes}get length(){return this._length}get buffers(){return this._buffers}}class hi{constructor(e,n,r=!1){this._data=e,this._isDelta=r,this._id=typeof n=="number"?n:n.low}get id(){return this._id}get data(){return this._data}get isDelta(){return this._isDelta}get length(){return this.data.length}get nodes(){return this.data.nodes}get buffers(){return this.data.buffers}}class ai{constructor(e,n){this.offset=typeof e=="number"?e:e.low,this.length=typeof n=="number"?n:n.low}}class Wo{constructor(e,n){this.length=typeof e=="number"?e:e.low,this.nullCount=typeof n=="number"?n:n.low}}function Cj(t,e){return()=>{switch(e){case Ve.Schema:return We.fromJSON(t);case Ve.RecordBatch:return ir.fromJSON(t);case Ve.DictionaryBatch:return hi.fromJSON(t)}throw new Error(`Unrecognized Message type: { name: ${Ve[e]}, type: ${e} }`)}}function Aj(t,e){return()=>{switch(e){case Ve.Schema:return We.decode(t.header(new Yr));case Ve.RecordBatch:return ir.decode(t.header(new Ii),t.version());case Ve.DictionaryBatch:return hi.decode(t.header(new aa),t.version())}throw new Error(`Unrecognized Message type: { name: ${Ve[e]}, type: ${e} }`)}}yt.encode=Uj;yt.decode=$j;yt.fromJSON=kj;We.encode=jj;We.decode=Pj;We.fromJSON=Sj;ir.encode=zj;ir.decode=Rj;ir.fromJSON=ux;hi.encode=Vj;hi.decode=Tj;hi.fromJSON=Ij;Wo.encode=Kj;Wo.decode=Nj;ai.encode=Wj;ai.decode=Mj;function Pj(t,e=new Map){const n=Lj(t,e);return new We(n,jf(t),e)}function Rj(t,e=Gn.V4){if(t.compression()!==null)throw new Error("Record batch compression not implemented");return new ir(t.length(),Bj(t),Fj(t,e))}function Tj(t,e=Gn.V4){return new hi(ir.decode(t.data(),e),t.id(),t.isDelta())}function Mj(t){return new ai(t.offset(),t.length())}function Nj(t){return new Wo(t.length(),t.nullCount())}function Bj(t){const e=[];for(let n,r=-1,i=-1,s=t.nodesLength();++ryt.encode(t,s));Yr.startFieldsVector(t,n.length);const r=Yr.createFieldsVector(t,n),i=e.metadata&&e.metadata.size>0?Yr.createCustomMetadataVector(t,[...e.metadata].map(([s,o])=>{const a=t.createString(`${s}`),l=t.createString(`${o}`);return zt.startKeyValue(t),zt.addKey(t,a),zt.addValue(t,l),zt.endKeyValue(t)})):-1;return Yr.startSchema(t),Yr.addFields(t,r),Yr.addEndianness(t,qj?Ja.Little:Ja.Big),i!==-1&&Yr.addCustomMetadata(t,i),Yr.endSchema(t)}function Uj(t,e){let n=-1,r=-1,i=-1;const s=e.type;let o=e.typeId;we.isDictionary(s)?(o=s.dictionary.typeId,i=xm.visit(s,t),r=xm.visit(s.dictionary,t)):r=xm.visit(s,t);const a=(s.children||[]).map(h=>yt.encode(t,h)),l=fr.createChildrenVector(t,a),f=e.metadata&&e.metadata.size>0?fr.createCustomMetadataVector(t,[...e.metadata].map(([h,p])=>{const y=t.createString(`${h}`),w=t.createString(`${p}`);return zt.startKeyValue(t),zt.addKey(t,y),zt.addValue(t,w),zt.endKeyValue(t)})):-1;return e.name&&(n=t.createString(e.name)),fr.startField(t),fr.addType(t,r),fr.addTypeType(t,o),fr.addChildren(t,l),fr.addNullable(t,!!e.nullable),n!==-1&&fr.addName(t,n),i!==-1&&fr.addDictionary(t,i),f!==-1&&fr.addCustomMetadata(t,f),fr.endField(t)}function zj(t,e){const n=e.nodes||[],r=e.buffers||[];Ii.startNodesVector(t,n.length);for(const o of n.slice().reverse())Wo.encode(t,o);const i=t.endVector();Ii.startBuffersVector(t,r.length);for(const o of r.slice().reverse())ai.encode(t,o);const s=t.endVector();return Ii.startRecordBatch(t),Ii.addLength(t,new Uo(e.length,0)),Ii.addNodes(t,i),Ii.addBuffers(t,s),Ii.endRecordBatch(t)}function Vj(t,e){const n=ir.encode(t,e.data);return aa.startDictionaryBatch(t),aa.addId(t,new Uo(e.id,0)),aa.addIsDelta(t,e.isDelta),aa.addData(t,n),aa.endDictionaryBatch(t)}function Kj(t,e){return ax.createFieldNode(t,new Uo(e.length,0),new Uo(e.nullCount,0))}function Wj(t,e){return ox.createBuffer(t,new Uo(e.offset,0),new Uo(e.length,0))}const qj=(()=>{const t=new ArrayBuffer(2);return new DataView(t).setInt16(0,256,!0),new Int16Array(t)[0]===256})(),R0=t=>`Expected ${Ve[t]} Message in stream, but was null or length 0.`,T0=t=>`Header pointer of flatbuffer-encoded ${Ve[t]} Message is null or length 0.`,fx=(t,e)=>`Expected to read ${t} metadata bytes, but only read ${e}.`,dx=(t,e)=>`Expected to read ${t} bytes for message body, but only read ${e}.`;class hx{constructor(e){this.source=e instanceof Qd?e:new Qd(e)}[Symbol.iterator](){return this}next(){let e;return(e=this.readMetadataLength()).done||e.value===-1&&(e=this.readMetadataLength()).done||(e=this.readMetadata(e.value)).done?St:e}throw(e){return this.source.throw(e)}return(e){return this.source.return(e)}readMessage(e){let n;if((n=this.next()).done)return null;if(e!=null&&n.value.headerType!==e)throw new Error(R0(e));return n.value}readMessageBody(e){if(e<=0)return new Uint8Array(0);const n=Ue(this.source.read(e));if(n.byteLength[...i,...s.VALIDITY&&[s.VALIDITY]||[],...s.TYPE&&[s.TYPE]||[],...s.OFFSET&&[s.OFFSET]||[],...s.DATA&&[s.DATA]||[],...n(s.children)],[])}}readMessage(e){let n;if((n=this.next()).done)return null;if(e!=null&&n.value.headerType!==e)throw new Error(R0(e));return n.value}readSchema(){const e=Ve.Schema,n=this.readMessage(e),r=n==null?void 0:n.header();if(!n||!r)throw new Error(T0(e));return r}}const zh=4,wv="ARROW1",Ul=new Uint8Array(wv.length);for(let t=0;tthis):this}readRecordBatch(e){return this._impl.isFile()?this._impl.readRecordBatch(e):null}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}toDOMStream(){return dr.toDOMStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this})}toNodeStream(){return dr.toNodeStream(this.isSync()?{[Symbol.iterator]:()=>this}:{[Symbol.asyncIterator]:()=>this},{objectMode:!0})}static throughNode(e){throw new Error('"throughNode" not available in this environment')}static throughDOM(e,n){throw new Error('"throughDOM" not available in this environment')}static from(e){return e instanceof Bi?e:uv(e)?Zj(e):Mk(e)?n4(e):Ns(e)?(()=>ve(this,void 0,void 0,function*(){return yield Bi.from(yield e)}))():Nk(e)||d0(e)||Bk(e)||fu(e)?t4(new Za(e)):e4(new Qd(e))}static readAll(e){return e instanceof Bi?e.isSync()?P1(e):R1(e):uv(e)||ArrayBuffer.isView(e)||uc(e)||Tk(e)?P1(e):R1(e)}}class Zd extends Bi{constructor(e){super(e),this._impl=e}readAll(){return[...this]}[Symbol.iterator](){return this._impl[Symbol.iterator]()}[Symbol.asyncIterator](){return Ar(this,arguments,function*(){yield ge(yield*Df(Ds(this[Symbol.iterator]())))})}}class eh extends Bi{constructor(e){super(e),this._impl=e}readAll(){var e,n;return ve(this,void 0,void 0,function*(){const r=new Array;try{for(var i=Ds(this),s;s=yield i.next(),!s.done;){const o=s.value;r.push(o)}}catch(o){e={error:o}}finally{try{s&&!s.done&&(n=i.return)&&(yield n.call(i))}finally{if(e)throw e.error}}return r})}[Symbol.iterator](){throw new Error("AsyncRecordBatchStreamReader is not Iterable")}[Symbol.asyncIterator](){return this._impl[Symbol.asyncIterator]()}}class mx extends Zd{constructor(e){super(e),this._impl=e}}class Gj extends eh{constructor(e){super(e),this._impl=e}}class yx{constructor(e=new Map){this.closed=!1,this.autoDestroy=!0,this._dictionaryIndex=0,this._recordBatchIndex=0,this.dictionaries=e}get numDictionaries(){return this._dictionaryIndex}get numRecordBatches(){return this._recordBatchIndex}isSync(){return!1}isAsync(){return!1}isFile(){return!1}isStream(){return!1}reset(e){return this._dictionaryIndex=0,this._recordBatchIndex=0,this.schema=e,this.dictionaries=new Map,this}_loadRecordBatch(e,n){const r=this._loadVectors(e,n,this.schema.fields),i=Ne({type:new vn(this.schema.fields),length:e.length,children:r});return new xn(this.schema,i)}_loadDictionaryBatch(e,n){const{id:r,isDelta:i}=e,{dictionaries:s,schema:o}=this,a=s.get(r);if(i||!a){const l=o.dictionaries.get(r),f=this._loadVectors(e.data,n,[l]);return(a&&i?a.concat(new Ke(f)):new Ke(f)).memoize()}return a.memoize()}_loadVectors(e,n,r){return new nx(n,e.nodes,e.buffers,this.dictionaries).visitMany(r)}}class th extends yx{constructor(e,n){super(n),this._reader=uv(e)?new Qj(this._handle=e):new hx(this._handle=e)}isSync(){return!0}isStream(){return!0}[Symbol.iterator](){return this}cancel(){!this.closed&&(this.closed=!0)&&(this.reset()._reader.return(),this._reader=null,this.dictionaries=null)}open(e){return this.closed||(this.autoDestroy=gx(this,e),this.schema||(this.schema=this._reader.readSchema())||this.cancel()),this}throw(e){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.throw(e):St}return(e){return!this.closed&&this.autoDestroy&&(this.closed=!0)?this.reset()._reader.return(e):St}next(){if(this.closed)return St;let e;const{_reader:n}=this;for(;e=this._readNextMessageAndValidate();)if(e.isSchema())this.reset(e.header());else if(e.isRecordBatch()){this._recordBatchIndex++;const r=e.header(),i=n.readMessageBody(e.bodyLength);return{done:!1,value:this._loadRecordBatch(r,i)}}else if(e.isDictionaryBatch()){this._dictionaryIndex++;const r=e.header(),i=n.readMessageBody(e.bodyLength),s=this._loadDictionaryBatch(r,i);this.dictionaries.set(r.id,s)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new P0(this.schema)}):this.return()}_readNextMessageAndValidate(e){return this._reader.readMessage(e)}}class nh extends yx{constructor(e,n){super(n),this._reader=new Hj(this._handle=e)}isAsync(){return!0}isStream(){return!0}[Symbol.asyncIterator](){return this}cancel(){return ve(this,void 0,void 0,function*(){!this.closed&&(this.closed=!0)&&(yield this.reset()._reader.return(),this._reader=null,this.dictionaries=null)})}open(e){return ve(this,void 0,void 0,function*(){return this.closed||(this.autoDestroy=gx(this,e),this.schema||(this.schema=yield this._reader.readSchema())||(yield this.cancel())),this})}throw(e){return ve(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.throw(e):St})}return(e){return ve(this,void 0,void 0,function*(){return!this.closed&&this.autoDestroy&&(this.closed=!0)?yield this.reset()._reader.return(e):St})}next(){return ve(this,void 0,void 0,function*(){if(this.closed)return St;let e;const{_reader:n}=this;for(;e=yield this._readNextMessageAndValidate();)if(e.isSchema())yield this.reset(e.header());else if(e.isRecordBatch()){this._recordBatchIndex++;const r=e.header(),i=yield n.readMessageBody(e.bodyLength);return{done:!1,value:this._loadRecordBatch(r,i)}}else if(e.isDictionaryBatch()){this._dictionaryIndex++;const r=e.header(),i=yield n.readMessageBody(e.bodyLength),s=this._loadDictionaryBatch(r,i);this.dictionaries.set(r.id,s)}return this.schema&&this._recordBatchIndex===0?(this._recordBatchIndex++,{done:!1,value:new P0(this.schema)}):yield this.return()})}_readNextMessageAndValidate(e){return ve(this,void 0,void 0,function*(){return yield this._reader.readMessage(e)})}}class vx extends th{constructor(e,n){super(e instanceof I1?e:new I1(e),n)}get footer(){return this._footer}get numDictionaries(){return this._footer?this._footer.numDictionaries:0}get numRecordBatches(){return this._footer?this._footer.numRecordBatches:0}isSync(){return!0}isFile(){return!0}open(e){if(!this.closed&&!this._footer){this.schema=(this._footer=this._readFooter()).schema;for(const n of this._footer.dictionaryBatches())n&&this._readDictionaryBatch(this._dictionaryIndex++)}return super.open(e)}readRecordBatch(e){var n;if(this.closed)return null;this._footer||this.open();const r=(n=this._footer)===null||n===void 0?void 0:n.getRecordBatch(e);if(r&&this._handle.seek(r.offset)){const i=this._reader.readMessage(Ve.RecordBatch);if(i!=null&&i.isRecordBatch()){const s=i.header(),o=this._reader.readMessageBody(i.bodyLength);return this._loadRecordBatch(s,o)}}return null}_readDictionaryBatch(e){var n;const r=(n=this._footer)===null||n===void 0?void 0:n.getDictionaryBatch(e);if(r&&this._handle.seek(r.offset)){const i=this._reader.readMessage(Ve.DictionaryBatch);if(i!=null&&i.isDictionaryBatch()){const s=i.header(),o=this._reader.readMessageBody(i.bodyLength),a=this._loadDictionaryBatch(s,o);this.dictionaries.set(s.id,a)}}}_readFooter(){const{_handle:e}=this,n=e.size-px,r=e.readInt32(n),i=e.readAt(n-r,r);return jl.decode(i)}_readNextMessageAndValidate(e){var n;if(this._footer||this.open(),this._footer&&this._recordBatchIndexsuper.open}});return ve(this,void 0,void 0,function*(){if(!this.closed&&!this._footer){this.schema=(this._footer=yield this._readFooter()).schema;for(const r of this._footer.dictionaryBatches())r&&(yield this._readDictionaryBatch(this._dictionaryIndex++))}return yield n.open.call(this,e)})}readRecordBatch(e){var n;return ve(this,void 0,void 0,function*(){if(this.closed)return null;this._footer||(yield this.open());const r=(n=this._footer)===null||n===void 0?void 0:n.getRecordBatch(e);if(r&&(yield this._handle.seek(r.offset))){const i=yield this._reader.readMessage(Ve.RecordBatch);if(i!=null&&i.isRecordBatch()){const s=i.header(),o=yield this._reader.readMessageBody(i.bodyLength);return this._loadRecordBatch(s,o)}}return null})}_readDictionaryBatch(e){var n;return ve(this,void 0,void 0,function*(){const r=(n=this._footer)===null||n===void 0?void 0:n.getDictionaryBatch(e);if(r&&(yield this._handle.seek(r.offset))){const i=yield this._reader.readMessage(Ve.DictionaryBatch);if(i!=null&&i.isDictionaryBatch()){const s=i.header(),o=yield this._reader.readMessageBody(i.bodyLength),a=this._loadDictionaryBatch(s,o);this.dictionaries.set(s.id,a)}}})}_readFooter(){return ve(this,void 0,void 0,function*(){const{_handle:e}=this;e._pending&&(yield e._pending);const n=e.size-px,r=yield e.readInt32(n),i=yield e.readAt(n-r,r);return jl.decode(i)})}_readNextMessageAndValidate(e){return ve(this,void 0,void 0,function*(){if(this._footer||(yield this.open()),this._footer&&this._recordBatchIndex=4?M0(e)?new mx(new vx(t.read())):new Zd(new th(t)):new Zd(new th(function*(){}()))}function t4(t){return ve(this,void 0,void 0,function*(){const e=yield t.peek(dc+7&-8);return e&&e.byteLength>=4?M0(e)?new mx(new vx(yield t.read())):new eh(new nh(t)):new eh(new nh(function(){return Ar(this,arguments,function*(){})}()))})}function n4(t){return ve(this,void 0,void 0,function*(){const{size:e}=yield t.stat(),n=new Yd(t,e);return e>=Yj&&M0(yield n.readAt(0,dc+7&-8))?new Gj(new Jj(n)):new eh(new nh(n))})}class $t extends Be{constructor(){super(),this._byteLength=0,this._nodes=[],this._buffers=[],this._bufferRegions=[]}static assemble(...e){const n=i=>i.flatMap(s=>Array.isArray(s)?n(s):s instanceof xn?s.data.children:s.data),r=new $t;return r.visitMany(n(e)),r}visit(e){if(e instanceof Ke)return this.visitMany(e.data),this;const{type:n}=e;if(!we.isDictionary(n)){const{length:r,nullCount:i}=e;if(r>2147483647)throw new RangeError("Cannot write arrays larger than 2^31 - 1 in length");we.isNull(n)||Mr.call(this,i<=0?new Uint8Array(0):b0(e.offset,r,e.nullBitmap)),this.nodes.push(new Wo(r,i))}return super.visit(e)}visitNull(e){return this}visitDictionary(e){return this.visit(e.clone(e.type.indices))}get nodes(){return this._nodes}get buffers(){return this._buffers}get byteLength(){return this._byteLength}get bufferRegions(){return this._bufferRegions}}function Mr(t){const e=t.byteLength+7&-8;return this.buffers.push(t),this.bufferRegions.push(new ai(this._byteLength,e)),this._byteLength+=e,this}function r4(t){const{type:e,length:n,typeIds:r,valueOffsets:i}=t;if(Mr.call(this,r),e.mode===rr.Sparse)return _v.call(this,t);if(e.mode===rr.Dense){if(t.offset<=0)return Mr.call(this,i),_v.call(this,t);{const s=r.reduce((h,p)=>Math.max(h,p),r[0]),o=new Int32Array(s+1),a=new Int32Array(s+1).fill(-1),l=new Int32Array(n),f=p0(-i[0],n,i);for(let h,p,y=-1;++y=t.length?Mr.call(this,new Uint8Array(0)):(e=t.values)instanceof Uint8Array?Mr.call(this,b0(t.offset,t.length,e)):Mr.call(this,jd(t.values))}function Js(t){return Mr.call(this,t.values.subarray(0,t.length*t.stride))}function wx(t){const{length:e,values:n,valueOffsets:r}=t,i=r[0],s=r[e],o=Math.min(s-i,n.byteLength-i);return Mr.call(this,p0(-r[0],e,r)),Mr.call(this,n.subarray(i,i+o)),this}function N0(t){const{length:e,valueOffsets:n}=t;return n&&Mr.call(this,p0(n[0],e,n)),this.visit(t.children[0])}function _v(t){return this.visitMany(t.type.children.map((e,n)=>t.children[n]).filter(Boolean))[0]}$t.prototype.visitBool=i4;$t.prototype.visitInt=Js;$t.prototype.visitFloat=Js;$t.prototype.visitUtf8=wx;$t.prototype.visitBinary=wx;$t.prototype.visitFixedSizeBinary=Js;$t.prototype.visitDate=Js;$t.prototype.visitTimestamp=Js;$t.prototype.visitTime=Js;$t.prototype.visitDecimal=Js;$t.prototype.visitList=N0;$t.prototype.visitStruct=_v;$t.prototype.visitUnion=r4;$t.prototype.visitInterval=Js;$t.prototype.visitFixedSizeList=N0;$t.prototype.visitMap=N0;class _x extends k0{constructor(e){super(),this._position=0,this._started=!1,this._sink=new Lf,this._schema=null,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,Fn(e)||(e={autoDestroy:!0,writeLegacyIpcFormat:!1}),this._autoDestroy=typeof e.autoDestroy=="boolean"?e.autoDestroy:!0,this._writeLegacyIpcFormat=typeof e.writeLegacyIpcFormat=="boolean"?e.writeLegacyIpcFormat:!1}static throughNode(e){throw new Error('"throughNode" not available in this environment')}static throughDOM(e,n){throw new Error('"throughDOM" not available in this environment')}toString(e=!1){return this._sink.toString(e)}toUint8Array(e=!1){return this._sink.toUint8Array(e)}writeAll(e){return Ns(e)?e.then(n=>this.writeAll(n)):fu(e)?$0(this,e):L0(this,e)}get closed(){return this._sink.closed}[Symbol.asyncIterator](){return this._sink[Symbol.asyncIterator]()}toDOMStream(e){return this._sink.toDOMStream(e)}toNodeStream(e){return this._sink.toNodeStream(e)}close(){return this.reset()._sink.close()}abort(e){return this.reset()._sink.abort(e)}finish(){return this._autoDestroy?this.close():this.reset(this._sink,this._schema),this}reset(e=this._sink,n=null){return e===this._sink||e instanceof Lf?this._sink=e:(this._sink=new Lf,e&&O3(e)?this.toDOMStream({type:"bytes"}).pipeTo(e):e&&k3(e)&&this.toNodeStream({objectMode:!1}).pipe(e)),this._started&&this._schema&&this._writeFooter(this._schema),this._started=!1,this._dictionaryBlocks=[],this._recordBatchBlocks=[],this._dictionaryDeltaOffsets=new Map,(!n||!yv(n,this._schema))&&(n==null?(this._position=0,this._schema=null):(this._started=!0,this._schema=n,this._writeSchema(n))),this}write(e){let n=null;if(this._sink){if(e==null)return this.finish()&&void 0;if(e instanceof mn&&!(n=e.schema))return this.finish()&&void 0;if(e instanceof xn&&!(n=e.schema))return this.finish()&&void 0}else throw new Error("RecordBatchWriter is closed");if(n&&!yv(n,this._schema)){if(this._started&&this._autoDestroy)return this.close();this.reset(this._sink,n)}e instanceof xn?e instanceof P0||this._writeRecordBatch(e):e instanceof mn?this.writeAll(e.batches):uc(e)&&this.writeAll(e)}_writeMessage(e,n=8){const r=n-1,i=gn.encode(e),s=i.byteLength,o=this._writeLegacyIpcFormat?4:8,a=s+o+r&~r,l=a-s-o;return e.headerType===Ve.RecordBatch?this._recordBatchBlocks.push(new $s(a,e.bodyLength,this._position)):e.headerType===Ve.DictionaryBatch&&this._dictionaryBlocks.push(new $s(a,e.bodyLength,this._position)),this._writeLegacyIpcFormat||this._write(Int32Array.of(-1)),this._write(Int32Array.of(a-o)),s>0&&this._write(i),this._writePadding(l)}_write(e){if(this._started){const n=Ue(e);n&&n.byteLength>0&&(this._sink.write(n),this._position+=n.byteLength)}return this}_writeSchema(e){return this._writeMessage(gn.from(e))}_writeFooter(e){return this._writeLegacyIpcFormat?this._write(Int32Array.of(0)):this._write(Int32Array.of(-1,0))}_writeMagic(){return this._write(Ul)}_writePadding(e){return e>0?this._write(new Uint8Array(e)):this}_writeRecordBatch(e){const{byteLength:n,nodes:r,bufferRegions:i,buffers:s}=$t.assemble(e),o=new ir(e.numRows,r,i),a=gn.from(o,n);return this._writeDictionaries(e)._writeMessage(a)._writeBodyBuffers(s)}_writeDictionaryBatch(e,n,r=!1){this._dictionaryDeltaOffsets.set(n,e.length+(this._dictionaryDeltaOffsets.get(n)||0));const{byteLength:i,nodes:s,bufferRegions:o,buffers:a}=$t.assemble(new Ke([e])),l=new ir(e.length,s,o),f=new hi(l,n,r),h=gn.from(f,i);return this._writeMessage(h)._writeBodyBuffers(a)}_writeBodyBuffers(e){let n,r,i;for(let s=-1,o=e.length;++s0&&(this._write(n),(i=(r+7&-8)-r)>0&&this._writePadding(i));return this}_writeDictionaries(e){for(let[n,r]of e.dictionaries){let i=this._dictionaryDeltaOffsets.get(n)||0;if(i===0||(r=r==null?void 0:r.slice(i)).length>0)for(const s of r.data)this._writeDictionaryBatch(s,n,i>0),i+=s.length}return this}}class B0 extends _x{static writeAll(e,n){const r=new B0(n);return Ns(e)?e.then(i=>r.writeAll(i)):fu(e)?$0(r,e):L0(r,e)}}class F0 extends _x{static writeAll(e){const n=new F0;return Ns(e)?e.then(r=>n.writeAll(r)):fu(e)?$0(n,e):L0(n,e)}constructor(){super(),this._autoDestroy=!0}_writeSchema(e){return this._writeMagic()._writePadding(2)}_writeFooter(e){const n=jl.encode(new jl(e,Gn.V4,this._recordBatchBlocks,this._dictionaryBlocks));return super._writeFooter(e)._write(n)._write(Int32Array.of(n.byteLength))._writeMagic()}}function L0(t,e){let n=e;e instanceof mn&&(n=e.batches,t.reset(void 0,e.schema));for(const r of n)t.write(r);return t.finish()}function $0(t,e){var n,r,i,s;return ve(this,void 0,void 0,function*(){try{for(n=Ds(e);r=yield n.next(),!r.done;){const o=r.value;t.write(o)}}catch(o){i={error:o}}finally{try{r&&!r.done&&(s=n.return)&&(yield s.call(n))}finally{if(i)throw i.error}}return t.finish()})}function Ku(t){const e=Bi.from(t);return Ns(e)?e.then(n=>Ku(n)):e.isAsync()?e.readAll().then(n=>new mn(n)):new mn(e.readAll())}function Cm(t,e="stream"){return(e==="stream"?B0:F0).writeAll(t).toUint8Array(!0)}var T1=function(){function t(e,n,r,i){var s=this;this.getCell=function(o,a){var l=o=s.headerRows&&a=s.headerColumns;if(l){var p=["blank"];return a>0&&p.push("level"+o),{type:"blank",classNames:p.join(" "),content:""}}else if(h){var y=a-s.headerColumns,p=["col_heading","level"+o,"col"+y];return{type:"columns",classNames:p.join(" "),content:s.getContent(s.columnsTable,y,o)}}else if(f){var w=o-s.headerRows,p=["row_heading","level"+a,"row"+w];return{type:"index",id:"T_".concat(s.uuid,"level").concat(a,"_row").concat(w),classNames:p.join(" "),content:s.getContent(s.indexTable,w,a)}}else{var w=o-s.headerRows,y=a-s.headerColumns,p=["data","row"+w,"col"+y],I=s.styler?s.getContent(s.styler.displayValuesTable,w,y):s.getContent(s.dataTable,w,y);return{type:"data",id:"T_".concat(s.uuid,"row").concat(w,"_col").concat(y),classNames:p.join(" "),content:I}}},this.getContent=function(o,a,l){var f=o.getChildAt(l);if(f===null)return"";var h=s.getColumnTypeId(o,l);switch(h){case N.Timestamp:return s.nanosToDate(f.get(a));default:return f.get(a)}},this.dataTable=Ku(e),this.indexTable=Ku(n),this.columnsTable=Ku(r),this.styler=i?{caption:i.caption,displayValuesTable:Ku(i.displayValues),styles:i.styles,uuid:i.uuid}:void 0}return Object.defineProperty(t.prototype,"rows",{get:function(){return this.indexTable.numRows+this.columnsTable.numCols},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){return this.indexTable.numCols+this.columnsTable.numRows},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"headerRows",{get:function(){return this.rows-this.dataRows},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"headerColumns",{get:function(){return this.columns-this.dataColumns},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dataRows",{get:function(){return this.dataTable.numRows},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dataColumns",{get:function(){return this.dataTable.numCols},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"uuid",{get:function(){return this.styler&&this.styler.uuid},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"caption",{get:function(){return this.styler&&this.styler.caption},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"styles",{get:function(){return this.styler&&this.styler.styles},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"table",{get:function(){return this.dataTable},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"index",{get:function(){return this.indexTable},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"columnTable",{get:function(){return this.columnsTable},enumerable:!1,configurable:!0}),t.prototype.serialize=function(){return{data:Cm(this.dataTable),index:Cm(this.indexTable),columns:Cm(this.columnsTable)}},t.prototype.getColumnTypeId=function(e,n){return e.schema.fields[n].type.typeId},t.prototype.nanosToDate=function(e){return new Date(e/1e6)},t}(),al=function(){return al=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t.argsDataframeToObject(e.dfs):{};n=al(al({},n),r);var i=!!e.disabled,s=e.theme;s&&s4(s);var o={disabled:i,args:n,theme:s},a=new CustomEvent(t.RENDER_EVENT,{detail:o});t.events.dispatchEvent(a)},t.argsDataframeToObject=function(e){var n=e.map(function(r){var i=r.key,s=r.value;return[i,t.toArrowTable(s)]});return Object.fromEntries(n)},t.toArrowTable=function(e){var n,r=(n=e.data,n.data),i=n.index,s=n.columns,o=n.styler;return new T1(r,i,s,o)},t.sendBackMsg=function(e,n){window.parent.postMessage(al({isStreamlitMessage:!0,type:e},n),"*")},t}(),s4=function(t){var e=document.createElement("style");document.head.appendChild(e),e.innerHTML=` + :root { + --primary-color: `.concat(t.primaryColor,`; + --background-color: `).concat(t.backgroundColor,`; + --secondary-background-color: `).concat(t.secondaryBackgroundColor,`; + --text-color: `).concat(t.textColor,`; + --font: `).concat(t.font,`; + } + + body { + background-color: var(--background-color); + color: var(--text-color); + } + `)};function o4(t){var e=!1;try{e=t instanceof BigInt64Array||t instanceof BigUint64Array}catch{}return t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array||e}var bx=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(r[s]=i[s])},t(e,n)};return function(e,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();(function(t){bx(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.componentDidMount=function(){yn.setFrameHeight()},e.prototype.componentDidUpdate=function(){yn.setFrameHeight()},e})(ra.PureComponent);function a4(t){var e=function(n){bx(r,n);function r(i){var s=n.call(this,i)||this;return s.componentDidMount=function(){yn.events.addEventListener(yn.RENDER_EVENT,s.onRenderEvent),yn.setComponentReady()},s.componentDidUpdate=function(){s.state.componentError!=null&&yn.setFrameHeight()},s.componentWillUnmount=function(){yn.events.removeEventListener(yn.RENDER_EVENT,s.onRenderEvent)},s.onRenderEvent=function(o){s.setState({renderData:o.detail})},s.state={renderData:void 0,componentError:void 0},s}return r.prototype.render=function(){return this.state.componentError!=null?ra.createElement("div",null,ra.createElement("h1",null,"Component Error"),ra.createElement("span",null,this.state.componentError.message)):this.state.renderData==null?null:ra.createElement(t,{width:window.innerWidth,disabled:this.state.renderData.disabled,args:this.state.renderData.args,theme:this.state.renderData.theme})},r.getDerivedStateFromError=function(i){return{componentError:i}},r}(ra.PureComponent);return ZL(e,t)}var u4=function t(e,n){if(e===n)return!0;if(e&&n&&typeof e=="object"&&typeof n=="object"){if(e.constructor!==n.constructor)return!1;var r,i,s;if(Array.isArray(e)){if(r=e.length,r!=n.length)return!1;for(i=r;i--!==0;)if(!t(e[i],n[i]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if(s=Object.keys(e),r=s.length,r!==Object.keys(n).length)return!1;for(i=r;i--!==0;)if(!Object.prototype.hasOwnProperty.call(n,s[i]))return!1;for(i=r;i--!==0;){var o=s[i];if(!t(e[o],n[o]))return!1}return!0}return e!==e&&n!==n};const Sx=rh(u4);let hf;const l4=new Uint8Array(16);function c4(){if(!hf&&(hf=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!hf))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return hf(l4)}const Jt=[];for(let t=0;t<256;++t)Jt.push((t+256).toString(16).slice(1));function f4(t,e=0){return Jt[t[e+0]]+Jt[t[e+1]]+Jt[t[e+2]]+Jt[t[e+3]]+"-"+Jt[t[e+4]]+Jt[t[e+5]]+"-"+Jt[t[e+6]]+Jt[t[e+7]]+"-"+Jt[t[e+8]]+Jt[t[e+9]]+"-"+Jt[t[e+10]]+Jt[t[e+11]]+Jt[t[e+12]]+Jt[t[e+13]]+Jt[t[e+14]]+Jt[t[e+15]]}const d4=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),M1={randomUUID:d4};function h4(t,e,n){if(M1.randomUUID&&!e&&!t)return M1.randomUUID();t=t||{};const r=t.random||(t.rng||c4)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,e){n=n||0;for(let i=0;i<16;++i)e[n+i]=r[i];return e}return f4(r)}const{logger:Am,isEmpty:pf}=$r,p4=(t,e)=>{const[n,r]=pn.useState(),i=pn.useRef(t);return pn.useEffect(()=>{if(!n||pf(t)||Sx(t,i.current))return;i.current=t;const{added_rows:s,edited_rows:o,deleted_rows:a}=t;if(!pf(s)){const l=s.map(f=>({...f,id:h4(),createdAt:new Date().toISOString(),last_modified:Date.now()}));if(!l.length)return;e.upsertBulk(l).catch(f=>Am.log("upsertBulk",f))}if(!pf(a)){const l=[];if(a.forEach(f=>{const h=n.at(f);h&&l.push(h.id)}),!l.length)return;e.removeBulk(l).catch(f=>Am.log("removeBulk",f))}if(!pf(o)){const l=Object.entries(o).map(([f,h])=>({...n.at(+f),...h,last_modified:Date.now()}));if(!l.length)return;e.upsertBulk(l).catch(f=>Am.log("upsertBulk",f))}},[t,n,e]),[n,r]},m4=t=>{const[e,n]=pn.useState();return pn.useEffect(()=>{const r=s=>{n(s.detail)};return yn.events.addEventListener(yn.RENDER_EVENT,r),yn.setComponentReady(),()=>{yn.events.removeEventListener(yn.RENDER_EVENT,r),t.unsubscribe()}},[]),e},{logger:N1,isEmptyObject:y4,tapOnce:v4}=$r,g4=t=>{const[e,n]=pn.useState(),r=pn.useRef(),i=pn.useRef();i.current||(i.current=new su),r.current||(r.current=new Cr({}));const s=m4(i.current),{editing_state:o,collection_config:a,db_config:l,query:f,with_rev:h}=(s==null?void 0:s.args)||{},p=pn.useRef(),y=pn.useRef();p.current||(p.current=new LL);const w=()=>y.current,[,I]=p4(o,w()),E=pn.useCallback(S=>{const _=SF(S);return p.current.initDb(_)},[]),$=pn.useCallback(async S=>{y.current||(y.current=new Je(S,p.current));const _=r.current.pipe(Ms(Sx)),k=w().docs(_,h).pipe(v4(()=>n(!0)),cT(w().info())).subscribe(([z,W])=>{z&&(I(z),yn.setComponentValue({docs:z,info:W,query:r.current.value}),yn.setFrameHeight())});i.current.add(k),N1.log("Collection & docs subscription initialized, with",f,h)},[]);return pn.useEffect(()=>{e&&f&&r.current.next(f)},[e,f]),y4(s)?null:(e||E(l).then(()=>$(a)).catch(N1.log),t.args.element)},w4=a4(g4),_4=YI(document.getElementById("root"));_4.render(IC.jsx(w4,{})); +//# sourceMappingURL=index.js.map diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js.map b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js.map new file mode 100644 index 0000000..49d4f1a --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/build/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../../node_modules/react/cjs/react.production.min.js","../../../../../node_modules/react/index.js","../../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../../node_modules/react/jsx-runtime.js","../../../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../../../node_modules/scheduler/index.js","../../../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../../../node_modules/react-dom/index.js","../../../../../node_modules/react-dom/client.js","../../../../../node_modules/tslib/tslib.es6.mjs","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-array.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-revision.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-object.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-document.js","../../../../../node_modules/ohash/dist/index.mjs","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-hash.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-promise.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-regex.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-string.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-object-deep-equal.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-object-dot-prop.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-map.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-error.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-time.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-other.js","../../../../../node_modules/rxdb/dist/esm/plugins/utils/utils-rxdb-version.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/construct.js","../../../../../node_modules/rxdb/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../../../../../node_modules/rxdb/dist/esm/overwritable.js","../../../../../node_modules/rxdb/dist/esm/rx-error.js","../../../../../node_modules/rxdb/dist/esm/hooks.js","../../../../../node_modules/rxdb/dist/esm/rx-schema-helper.js","../../../../../node_modules/rxdb/dist/esm/rx-schema.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/createObject.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../../node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/of.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/merge.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","../../../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/retry.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../../../../../node_modules/rxdb/dist/esm/rx-change-event.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isObservable.js","../../../../../node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","../../../../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/defer.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../../node_modules/event-reduce-js/dist/esm/src/util.js","../../../../../node_modules/event-reduce-js/dist/esm/src/states/state-resolver.js","../../../../../node_modules/event-reduce-js/dist/esm/src/states/index.js","../../../../../node_modules/array-push-at-sort-position/dist/esm/index.js","../../../../../node_modules/event-reduce-js/dist/esm/src/actions/action-functions.js","../../../../../node_modules/event-reduce-js/dist/esm/src/actions/index.js","../../../../../node_modules/binary-decision-diagram/dist/esm/src/minimal-string/string-format.js","../../../../../node_modules/binary-decision-diagram/dist/esm/src/util.js","../../../../../node_modules/binary-decision-diagram/dist/esm/src/minimal-string/minimal-string-to-simple-bdd.js","../../../../../node_modules/binary-decision-diagram/dist/esm/src/minimal-string/resolve-with-simple-bdd.js","../../../../../node_modules/event-reduce-js/dist/esm/src/bdd/bdd.generated.js","../../../../../node_modules/event-reduce-js/dist/esm/src/index.js","../../../../../node_modules/rxdb/dist/esm/query-planner.js","../../../../../node_modules/mingo/dist/esm/util.js","../../../../../node_modules/mingo/dist/esm/core.js","../../../../../node_modules/mingo/dist/esm/lazy.js","../../../../../node_modules/mingo/dist/esm/aggregator.js","../../../../../node_modules/mingo/dist/esm/cursor.js","../../../../../node_modules/mingo/dist/esm/query.js","../../../../../node_modules/mingo/dist/esm/operators/pipeline/sort.js","../../../../../node_modules/mingo/dist/esm/operators/_predicates.js","../../../../../node_modules/mingo/dist/esm/operators/expression/date/dateFromString.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/_internal.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/acos.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/acosh.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/asin.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/asinh.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/atan.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/atanh.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/cos.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/cosh.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/degreesToRadians.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/radiansToDegrees.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/sin.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/sinh.js","../../../../../node_modules/mingo/dist/esm/operators/expression/trignometry/tan.js","../../../../../node_modules/mingo/dist/esm/operators/pipeline/project.js","../../../../../node_modules/mingo/dist/esm/operators/query/logical/and.js","../../../../../node_modules/mingo/dist/esm/operators/query/logical/or.js","../../../../../node_modules/mingo/dist/esm/operators/query/logical/nor.js","../../../../../node_modules/mingo/dist/esm/operators/query/logical/not.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/eq.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/gt.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/gte.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/in.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/lt.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/lte.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/ne.js","../../../../../node_modules/mingo/dist/esm/operators/query/comparison/nin.js","../../../../../node_modules/mingo/dist/esm/operators/query/evaluation/mod.js","../../../../../node_modules/mingo/dist/esm/operators/query/evaluation/regex.js","../../../../../node_modules/mingo/dist/esm/operators/query/array/all.js","../../../../../node_modules/mingo/dist/esm/operators/query/array/elemMatch.js","../../../../../node_modules/mingo/dist/esm/operators/query/array/size.js","../../../../../node_modules/mingo/dist/esm/operators/query/element/exists.js","../../../../../node_modules/mingo/dist/esm/operators/query/element/type.js","../../../../../node_modules/rxdb/dist/esm/rx-query-mingo.js","../../../../../node_modules/rxdb/dist/esm/rx-query-helper.js","../../../../../node_modules/rxdb/dist/esm/event-reduce.js","../../../../../node_modules/rxdb/dist/esm/query-cache.js","../../../../../node_modules/rxdb/dist/esm/doc-cache.js","../../../../../node_modules/rxdb/dist/esm/rx-query-single-result.js","../../../../../node_modules/rxdb/dist/esm/rx-query.js","../../../../../node_modules/rxdb/dist/esm/rx-storage-helper.js","../../../../../node_modules/rxdb/dist/esm/incremental-write.js","../../../../../node_modules/rxdb/dist/esm/rx-document.js","../../../../../node_modules/rxdb/dist/esm/rx-database-internal-store.js","../../../../../node_modules/rxdb/dist/esm/rx-collection-helper.js","../../../../../node_modules/rxdb/dist/esm/change-event-buffer.js","../../../../../node_modules/rxdb/dist/esm/rx-document-prototype-merge.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/checkpoint.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/helper.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/meta-instance.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/downstream.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/conflicts.js","../../../../../node_modules/rxdb/dist/esm/plugins/attachments/attachments-utils.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/upstream.js","../../../../../node_modules/rxdb/dist/esm/replication-protocol/index.js","../../../../../node_modules/rxdb/dist/esm/rx-collection.js","../../../../../node_modules/custom-idle-queue/dist/es/index.js","../../../../../node_modules/oblivious-set/dist/esm/src/index.js","../../../../../node_modules/rxdb/dist/esm/rx-database.js","../../../../../node_modules/rxdb/dist/esm/plugin.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/util.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/methods/native.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/options.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","../../../../../node_modules/unload/dist/es/browser.js","../../../../../node_modules/unload/dist/es/node.js","../../../../../node_modules/unload/dist/es/index.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/leader-election-util.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/leader-election-web-lock.js","../../../../../node_modules/broadcast-channel/dist/esbrowser/leader-election.js","../../../../../node_modules/rxdb/dist/esm/rx-storage-multiinstance.js","../../../../../node_modules/rxdb/dist/esm/custom-index.js","../../../../../node_modules/rxdb/dist/esm/plugins/replication/replication-helper.js","../../../../../node_modules/rxdb/dist/esm/plugins/replication/index.js","../../../../../dist/packages/rxdb/fesm2022/ngx-odm-rxdb-utils.mjs","../../../../../dist/packages/rxdb/fesm2022/ngx-odm-rxdb-collection.mjs","../../../../../node_modules/dexie/dist/dexie.min.js","../../../../../node_modules/dexie/import-wrapper-prod.mjs","../../../../../node_modules/rxdb/dist/esm/plugins/storage-dexie/dexie-helper.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-dexie/dexie-query.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-dexie/rx-storage-instance-dexie.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-dexie/rx-storage-dexie.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-memory/binary-search-bounds.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-memory/memory-helper.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-memory/memory-indexes.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-memory/rx-storage-instance-memory.js","../../../../../node_modules/rxdb/dist/esm/plugins/storage-memory/index.js","../../../../../dist/packages/rxdb/fesm2022/ngx-odm-rxdb-config.mjs","../../../../../node_modules/compare-versions/lib/esm/utils.js","../../../../../node_modules/compare-versions/lib/esm/compareVersions.js","../../../../../node_modules/compare-versions/lib/esm/compare.js","../../../../../dist/packages/rxdb/fesm2022/ngx-odm-rxdb-prepare.mjs","../../../../../node_modules/filter-obj/index.js","../../../../../node_modules/decode-uri-component/index.js","../../../../../node_modules/split-on-first/index.js","../../../../../node_modules/query-string/base.js","../../../../../dist/packages/rxdb/fesm2022/ngx-odm-rxdb-query-params.mjs","../../../../../node_modules/rxdb/dist/esm/plugins/cleanup/cleanup-helper.js","../../../../../node_modules/rxdb/dist/esm/plugins/cleanup/cleanup.js","../../../../../node_modules/rxdb/dist/esm/plugins/cleanup/index.js","../../../../../node_modules/rxdb/dist/esm/plugins/json-dump/index.js","../../../../../node_modules/rxdb/dist/esm/plugins/local-documents/rx-local-document.js","../../../../../node_modules/rxdb/dist/esm/plugins/local-documents/local-documents-helper.js","../../../../../node_modules/rxdb/dist/esm/plugins/local-documents/local-documents.js","../../../../../node_modules/rxdb/dist/esm/plugins/local-documents/index.js","../../../../../node_modules/rxdb/dist/esm/plugins/migration-schema/migration-helpers.js","../../../../../node_modules/rxdb/dist/esm/plugins/migration-schema/rx-migration-state.js","../../../../../node_modules/rxdb/dist/esm/plugins/migration-schema/index.js","../../../../../node_modules/mingo/dist/esm/operators/update/_internal.js","../../../../../node_modules/mingo/dist/esm/operators/update/addToSet.js","../../../../../node_modules/mingo/dist/esm/operators/update/bit.js","../../../../../node_modules/mingo/dist/esm/operators/update/currentDate.js","../../../../../node_modules/mingo/dist/esm/operators/update/inc.js","../../../../../node_modules/mingo/dist/esm/operators/update/max.js","../../../../../node_modules/mingo/dist/esm/operators/update/min.js","../../../../../node_modules/mingo/dist/esm/operators/update/mul.js","../../../../../node_modules/mingo/dist/esm/operators/update/pop.js","../../../../../node_modules/mingo/dist/esm/operators/update/pull.js","../../../../../node_modules/mingo/dist/esm/operators/update/pullAll.js","../../../../../node_modules/mingo/dist/esm/operators/update/push.js","../../../../../node_modules/mingo/dist/esm/operators/update/set.js","../../../../../node_modules/mingo/dist/esm/operators/update/rename.js","../../../../../node_modules/mingo/dist/esm/operators/update/unset.js","../../../../../node_modules/mingo/dist/esm/updater.js","../../../../../node_modules/rxdb/dist/esm/plugins/update/mingo-updater.js","../../../../../node_modules/rxdb/dist/esm/plugins/update/index.js","../../../../../dist/packages/rxdb/fesm2022/ngx-odm-rxdb-core.mjs","../../../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../../../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../../../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../../../node_modules/object-assign/index.js","../../../../../node_modules/streamlit-component-lib/node_modules/react/cjs/react.production.min.js","../../../../../node_modules/streamlit-component-lib/node_modules/react/index.js","../../../../../node_modules/apache-arrow/util/utf8.mjs","../../../../../node_modules/apache-arrow/util/compat.mjs","../../../../../node_modules/apache-arrow/util/buffer.mjs","../../../../../node_modules/apache-arrow/io/adapters.mjs","../../../../../node_modules/apache-arrow/enum.mjs","../../../../../node_modules/apache-arrow/util/pretty.mjs","../../../../../node_modules/apache-arrow/util/bn.mjs","../../../../../node_modules/apache-arrow/type.mjs","../../../../../node_modules/apache-arrow/visitor.mjs","../../../../../node_modules/apache-arrow/util/math.mjs","../../../../../node_modules/apache-arrow/visitor/set.mjs","../../../../../node_modules/apache-arrow/row/struct.mjs","../../../../../node_modules/apache-arrow/visitor/get.mjs","../../../../../node_modules/apache-arrow/row/map.mjs","../../../../../node_modules/apache-arrow/util/vector.mjs","../../../../../node_modules/apache-arrow/util/bit.mjs","../../../../../node_modules/apache-arrow/data.mjs","../../../../../node_modules/apache-arrow/util/chunk.mjs","../../../../../node_modules/apache-arrow/visitor/indexof.mjs","../../../../../node_modules/apache-arrow/visitor/iterator.mjs","../../../../../node_modules/apache-arrow/visitor/bytelength.mjs","../../../../../node_modules/apache-arrow/vector.mjs","../../../../../node_modules/apache-arrow/fb/block.mjs","../../../../../node_modules/flatbuffers/mjs/constants.js","../../../../../node_modules/flatbuffers/mjs/utils.js","../../../../../node_modules/flatbuffers/mjs/long.js","../../../../../node_modules/flatbuffers/mjs/encoding.js","../../../../../node_modules/flatbuffers/mjs/byte-buffer.js","../../../../../node_modules/flatbuffers/mjs/builder.js","../../../../../node_modules/apache-arrow/fb/key-value.mjs","../../../../../node_modules/apache-arrow/fb/metadata-version.mjs","../../../../../node_modules/apache-arrow/fb/endianness.mjs","../../../../../node_modules/apache-arrow/fb/dictionary-kind.mjs","../../../../../node_modules/apache-arrow/fb/int.mjs","../../../../../node_modules/apache-arrow/fb/dictionary-encoding.mjs","../../../../../node_modules/apache-arrow/fb/binary.mjs","../../../../../node_modules/apache-arrow/fb/bool.mjs","../../../../../node_modules/apache-arrow/fb/date-unit.mjs","../../../../../node_modules/apache-arrow/fb/date.mjs","../../../../../node_modules/apache-arrow/fb/decimal.mjs","../../../../../node_modules/apache-arrow/fb/time-unit.mjs","../../../../../node_modules/apache-arrow/fb/fixed-size-binary.mjs","../../../../../node_modules/apache-arrow/fb/fixed-size-list.mjs","../../../../../node_modules/apache-arrow/fb/precision.mjs","../../../../../node_modules/apache-arrow/fb/floating-point.mjs","../../../../../node_modules/apache-arrow/fb/interval-unit.mjs","../../../../../node_modules/apache-arrow/fb/interval.mjs","../../../../../node_modules/apache-arrow/fb/list.mjs","../../../../../node_modules/apache-arrow/fb/map.mjs","../../../../../node_modules/apache-arrow/fb/null.mjs","../../../../../node_modules/apache-arrow/fb/struct_.mjs","../../../../../node_modules/apache-arrow/fb/time.mjs","../../../../../node_modules/apache-arrow/fb/timestamp.mjs","../../../../../node_modules/apache-arrow/fb/union-mode.mjs","../../../../../node_modules/apache-arrow/fb/union.mjs","../../../../../node_modules/apache-arrow/fb/utf8.mjs","../../../../../node_modules/apache-arrow/fb/type.mjs","../../../../../node_modules/apache-arrow/fb/field.mjs","../../../../../node_modules/apache-arrow/fb/schema.mjs","../../../../../node_modules/apache-arrow/fb/footer.mjs","../../../../../node_modules/apache-arrow/schema.mjs","../../../../../node_modules/apache-arrow/ipc/metadata/file.mjs","../../../../../node_modules/apache-arrow/io/interfaces.mjs","../../../../../node_modules/apache-arrow/io/stream.mjs","../../../../../node_modules/apache-arrow/io/file.mjs","../../../../../node_modules/apache-arrow/util/int.mjs","../../../../../node_modules/apache-arrow/visitor/vectorloader.mjs","../../../../../node_modules/apache-arrow/visitor/typecomparator.mjs","../../../../../node_modules/apache-arrow/util/recordbatch.mjs","../../../../../node_modules/apache-arrow/table.mjs","../../../../../node_modules/apache-arrow/recordbatch.mjs","../../../../../node_modules/apache-arrow/fb/body-compression-method.mjs","../../../../../node_modules/apache-arrow/fb/compression-type.mjs","../../../../../node_modules/apache-arrow/fb/body-compression.mjs","../../../../../node_modules/apache-arrow/fb/buffer.mjs","../../../../../node_modules/apache-arrow/fb/field-node.mjs","../../../../../node_modules/apache-arrow/fb/record-batch.mjs","../../../../../node_modules/apache-arrow/fb/dictionary-batch.mjs","../../../../../node_modules/apache-arrow/fb/message-header.mjs","../../../../../node_modules/apache-arrow/fb/message.mjs","../../../../../node_modules/apache-arrow/visitor/typeassembler.mjs","../../../../../node_modules/apache-arrow/ipc/metadata/json.mjs","../../../../../node_modules/apache-arrow/ipc/metadata/message.mjs","../../../../../node_modules/apache-arrow/ipc/message.mjs","../../../../../node_modules/apache-arrow/ipc/reader.mjs","../../../../../node_modules/apache-arrow/visitor/vectorassembler.mjs","../../../../../node_modules/apache-arrow/ipc/writer.mjs","../../../../../node_modules/apache-arrow/ipc/serialization.mjs","../../../../../node_modules/streamlit-component-lib/dist/ArrowTable.js","../../../../../node_modules/streamlit-component-lib/dist/streamlit.js","../../../../../node_modules/streamlit-component-lib/dist/StreamlitReact.js","../../../../../node_modules/fast-deep-equal/index.js","../../../../../node_modules/uuid/dist/esm-browser/rng.js","../../../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../../../node_modules/uuid/dist/esm-browser/native.js","../../../../../node_modules/uuid/dist/esm-browser/v4.js","../src/lib/useEditingState.ts","../src/lib/useNullableRenderData.ts","../src/lib/RxDBDataframe.tsx","../src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export function lastOfArray(ar) {\n return ar[ar.length - 1];\n}\n\n/**\n * shuffle the given array\n */\nexport function shuffleArray(arr) {\n return arr.slice(0).sort(() => Math.random() - 0.5);\n}\nexport function toArray(input) {\n return Array.isArray(input) ? input.slice(0) : [input];\n}\n\n/**\n * Split array with items into smaller arrays with items\n * @link https://stackoverflow.com/a/7273794/3443137\n */\nexport function batchArray(array, batchSize) {\n array = array.slice(0);\n var ret = [];\n while (array.length) {\n var batch = array.splice(0, batchSize);\n ret.push(batch);\n }\n return ret;\n}\n\n/**\n * @link https://stackoverflow.com/a/15996017\n */\nexport function removeOneFromArrayIfMatches(ar, condition) {\n ar = ar.slice();\n var i = ar.length;\n var done = false;\n while (i-- && !done) {\n if (condition(ar[i])) {\n done = true;\n ar.splice(i, 1);\n }\n }\n return ar;\n}\n\n/**\n * returns true if the supplied argument is either an Array or a Readonly>\n */\nexport function isMaybeReadonlyArray(x) {\n // While this looks strange, it's a workaround for an issue in TypeScript:\n // https://github.com/microsoft/TypeScript/issues/17002\n //\n // The problem is that `Array.isArray` as a type guard returns `false` for a readonly array,\n // but at runtime the object is an array and the runtime call to `Array.isArray` would return `true`.\n // The type predicate here allows for both `Array` and `Readonly>` to pass a type check while\n // still performing runtime type inspection.\n return Array.isArray(x);\n}\nexport function isOneItemOfArrayInOtherArray(ar1, ar2) {\n for (var i = 0; i < ar1.length; i++) {\n var el = ar1[i];\n var has = ar2.includes(el);\n if (has) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Use this in array.filter() to remove all empty slots\n * and have the correct typings afterwards.\n * @link https://stackoverflow.com/a/46700791/3443137\n */\nexport function arrayFilterNotEmpty(value) {\n if (value === null || value === undefined) {\n return false;\n }\n return true;\n}\nexport function countUntilNotMatching(ar, matchingFn) {\n var count = 0;\n var idx = -1;\n for (var _item of ar) {\n idx = idx + 1;\n var matching = matchingFn(_item, idx);\n if (matching) {\n count = count + 1;\n } else {\n break;\n }\n }\n return count;\n}\nexport async function asyncFilter(array, predicate) {\n var filters = await Promise.all(array.map(predicate));\n return array.filter((...[, index]) => filters[index]);\n}\n\n/**\n * @link https://stackoverflow.com/a/3762735\n */\nexport function sumNumberArray(array) {\n var count = 0;\n for (var i = array.length; i--;) {\n count += array[i];\n }\n return count;\n}\nexport function maxOfNumbers(arr) {\n return Math.max(...arr);\n}\n\n/**\n * Appends the given documents to the given array.\n * This will mutate the first given array.\n * Mostly used as faster alternative to Array.concat()\n * because .concat() is so slow.\n * @link https://www.measurethat.net/Benchmarks/Show/4223/0/array-concat-vs-spread-operator-vs-push#latest_results_block\n */\nexport function appendToArray(ar, add) {\n var amount = add.length;\n for (var i = 0; i < amount; ++i) {\n var element = add[i];\n ar.push(element);\n }\n}\n\n/**\n * @link https://gist.github.com/telekosmos/3b62a31a5c43f40849bb\n */\nexport function uniqueArray(arrArg) {\n return arrArg.filter(function (elem, pos, arr) {\n return arr.indexOf(elem) === pos;\n });\n}\n//# sourceMappingURL=utils-array.js.map","export function parseRevision(revision) {\n var split = revision.split('-');\n if (split.length !== 2) {\n throw new Error('malformatted revision: ' + revision);\n }\n return {\n height: parseInt(split[0], 10),\n hash: split[1]\n };\n}\n\n/**\n * @hotPath\n */\nexport function getHeightOfRevision(revision) {\n var ret = parseInt(revision.split('-')[0], 10);\n return ret;\n}\n\n/**\n * Creates the next write revision for a given document.\n */\nexport function createRevision(databaseInstanceToken, previousDocData) {\n var previousRevision = previousDocData ? previousDocData._rev : null;\n var previousRevisionHeight = previousRevision ? parseRevision(previousRevision).height : 0;\n var newRevisionHeight = previousRevisionHeight + 1;\n return newRevisionHeight + '-' + databaseInstanceToken;\n}\n//# sourceMappingURL=utils-revision.js.map","export function deepFreeze(o) {\n Object.freeze(o);\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (Object.prototype.hasOwnProperty.call(o, prop) && o[prop] !== null && (typeof o[prop] === 'object' || typeof o[prop] === 'function') && !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n}\n\n/**\n * To get specific nested path values from objects,\n * RxDB normally uses the 'dot-prop' npm module.\n * But when performance is really relevant, this is not fast enough.\n * Instead we use a monad that can prepare some stuff up front\n * and we can reuse the generated function.\n */\n\nexport function objectPathMonad(objectPath) {\n var split = objectPath.split('.');\n\n // reuse this variable for better performance.\n var splitLength = split.length;\n\n /**\n * Performance shortcut,\n * if no nested path is used,\n * directly return the field of the object.\n */\n if (splitLength === 1) {\n return obj => obj[objectPath];\n }\n return obj => {\n var currentVal = obj;\n for (var i = 0; i < splitLength; ++i) {\n var subPath = split[i];\n currentVal = currentVal[subPath];\n if (typeof currentVal === 'undefined') {\n return currentVal;\n }\n }\n return currentVal;\n };\n}\nexport function getFromObjectOrThrow(obj, key) {\n var val = obj[key];\n if (!val) {\n throw new Error('missing value from object ' + key);\n }\n return val;\n}\n\n/**\n * returns a flattened object\n * @link https://gist.github.com/penguinboy/762197\n */\nexport function flattenObject(ob) {\n var toReturn = {};\n for (var i in ob) {\n if (!Object.prototype.hasOwnProperty.call(ob, i)) continue;\n if (typeof ob[i] === 'object') {\n var flatObject = flattenObject(ob[i]);\n for (var x in flatObject) {\n if (!Object.prototype.hasOwnProperty.call(flatObject, x)) continue;\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n}\n\n/**\n * does a flat copy on the objects,\n * is about 3 times faster then using deepClone\n * @link https://jsperf.com/object-rest-spread-vs-clone/2\n */\nexport function flatClone(obj) {\n return Object.assign({}, obj);\n}\n\n/**\n * @link https://stackoverflow.com/a/11509718/3443137\n */\nexport function firstPropertyNameOfObject(obj) {\n return Object.keys(obj)[0];\n}\nexport function firstPropertyValueOfObject(obj) {\n var key = Object.keys(obj)[0];\n return obj[key];\n}\n\n/**\n * deep-sort an object so its attributes are in lexical order.\n * Also sorts the arrays inside of the object if no-array-sort not set\n */\nexport function sortObject(obj, noArraySort = false) {\n if (!obj) return obj; // do not sort null, false or undefined\n\n // array\n if (!noArraySort && Array.isArray(obj)) {\n return obj.sort((a, b) => {\n if (typeof a === 'string' && typeof b === 'string') return a.localeCompare(b);\n if (typeof a === 'object') return 1;else return -1;\n }).map(i => sortObject(i, noArraySort));\n }\n\n // object\n // array is also of type object\n if (typeof obj === 'object' && !Array.isArray(obj)) {\n var out = {};\n Object.keys(obj).sort((a, b) => a.localeCompare(b)).forEach(key => {\n out[key] = sortObject(obj[key], noArraySort);\n });\n return out;\n }\n\n // everything else\n return obj;\n}\n\n/**\n * Deep clone a plain json object.\n * Does not work with recursive stuff\n * or non-plain-json.\n * IMPORTANT: Performance of this is very important,\n * do not change it without running performance tests!\n *\n * @link https://github.com/zxdong262/deep-copy/blob/master/src/index.ts\n */\nfunction deepClone(src) {\n if (!src) {\n return src;\n }\n if (src === null || typeof src !== 'object') {\n return src;\n }\n if (Array.isArray(src)) {\n var ret = new Array(src.length);\n var i = ret.length;\n while (i--) {\n ret[i] = deepClone(src[i]);\n }\n return ret;\n }\n var dest = {};\n // eslint-disable-next-line guard-for-in\n for (var key in src) {\n dest[key] = deepClone(src[key]);\n }\n return dest;\n}\nexport var clone = deepClone;\n\n/**\n * overwrites the getter with the actual value\n * Mostly used for caching stuff on the first run\n */\nexport function overwriteGetterForCaching(obj, getterName, value) {\n Object.defineProperty(obj, getterName, {\n get: function () {\n return value;\n }\n });\n return value;\n}\nexport function hasDeepProperty(obj, property) {\n if (obj.hasOwnProperty(property)) {\n return true;\n }\n if (Array.isArray(obj)) {\n var has = !!obj.find(item => hasDeepProperty(item, property));\n return has;\n }\n\n // Recursively check for property in nested objects\n for (var key in obj) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n if (hasDeepProperty(obj[key], property)) {\n return true;\n }\n }\n }\n\n // Return false if 'foobar' is not found at any level\n return false;\n}\n//# sourceMappingURL=utils-object.js.map","import { flatClone } from \"./utils-object.js\";\n/**\n * We use 1 as minimum so that the value is never falsy.\n * This const is used in several places because querying\n * with a value lower then the minimum could give false results.\n */\nexport var RX_META_LWT_MINIMUM = 1;\nexport function getDefaultRxDocumentMeta() {\n return {\n /**\n * Set this to 1 to not waste performance\n * while calling new Date()..\n * The storage wrappers will anyway update\n * the lastWrite time while calling transformDocumentDataFromRxDBToRxStorage()\n */\n lwt: RX_META_LWT_MINIMUM\n };\n}\n\n/**\n * Returns a revision that is not valid.\n * Use this to have correct typings\n * while the storage wrapper anyway will overwrite the revision.\n */\nexport function getDefaultRevision() {\n /**\n * Use a non-valid revision format,\n * to ensure that the RxStorage will throw\n * when the revision is not replaced downstream.\n */\n return '';\n}\nexport function stripMetaDataFromDocument(docData) {\n return Object.assign({}, docData, {\n _meta: undefined,\n _deleted: undefined,\n _rev: undefined\n });\n}\n\n/**\n * Faster way to check the equality of document lists\n * compared to doing a deep-equal.\n * Here we only check the ids and revisions.\n */\nexport function areRxDocumentArraysEqual(primaryPath, ar1, ar2) {\n if (ar1.length !== ar2.length) {\n return false;\n }\n var i = 0;\n var len = ar1.length;\n while (i < len) {\n var row1 = ar1[i];\n var row2 = ar2[i];\n i++;\n if (row1._rev !== row2._rev || row1[primaryPath] !== row2[primaryPath]) {\n return false;\n }\n }\n return true;\n}\nexport function getSortDocumentsByLastWriteTimeComparator(primaryPath) {\n return (a, b) => {\n if (a._meta.lwt === b._meta.lwt) {\n if (b[primaryPath] < a[primaryPath]) {\n return 1;\n } else {\n return -1;\n }\n } else {\n return a._meta.lwt - b._meta.lwt;\n }\n };\n}\nexport function sortDocumentsByLastWriteTime(primaryPath, docs) {\n return docs.sort(getSortDocumentsByLastWriteTimeComparator(primaryPath));\n}\nexport function toWithDeleted(docData) {\n docData = flatClone(docData);\n docData._deleted = !!docData._deleted;\n return Object.assign(docData, {\n _attachments: undefined,\n _meta: undefined,\n _rev: undefined\n });\n}\n//# sourceMappingURL=utils-document.js.map","const defaults = Object.freeze({\n ignoreUnknown: false,\n respectType: false,\n respectFunctionNames: false,\n respectFunctionProperties: false,\n unorderedObjects: true,\n unorderedArrays: false,\n unorderedSets: false,\n excludeKeys: void 0,\n excludeValues: void 0,\n replacer: void 0\n});\nfunction objectHash(object, options) {\n if (options) {\n options = { ...defaults, ...options };\n } else {\n options = defaults;\n }\n const hasher = createHasher(options);\n hasher.dispatch(object);\n return hasher.toString();\n}\nconst defaultPrototypesKeys = Object.freeze([\n \"prototype\",\n \"__proto__\",\n \"constructor\"\n]);\nfunction createHasher(options) {\n let buff = \"\";\n let context = /* @__PURE__ */ new Map();\n const write = (str) => {\n buff += str;\n };\n return {\n toString() {\n return buff;\n },\n getContext() {\n return context;\n },\n dispatch(value) {\n if (options.replacer) {\n value = options.replacer(value);\n }\n const type = value === null ? \"null\" : typeof value;\n return this[type](value);\n },\n object(object) {\n if (object && typeof object.toJSON === \"function\") {\n return this.object(object.toJSON());\n }\n const objString = Object.prototype.toString.call(object);\n let objType = \"\";\n const objectLength = objString.length;\n if (objectLength < 10) {\n objType = \"unknown:[\" + objString + \"]\";\n } else {\n objType = objString.slice(8, objectLength - 1);\n }\n objType = objType.toLowerCase();\n let objectNumber = null;\n if ((objectNumber = context.get(object)) === void 0) {\n context.set(object, context.size);\n } else {\n return this.dispatch(\"[CIRCULAR:\" + objectNumber + \"]\");\n }\n if (typeof Buffer !== \"undefined\" && Buffer.isBuffer && Buffer.isBuffer(object)) {\n write(\"buffer:\");\n return write(object.toString(\"utf8\"));\n }\n if (objType !== \"object\" && objType !== \"function\" && objType !== \"asyncfunction\") {\n if (this[objType]) {\n this[objType](object);\n } else if (!options.ignoreUnknown) {\n this.unkown(object, objType);\n }\n } else {\n let keys = Object.keys(object);\n if (options.unorderedObjects) {\n keys = keys.sort();\n }\n let extraKeys = [];\n if (options.respectType !== false && !isNativeFunction(object)) {\n extraKeys = defaultPrototypesKeys;\n }\n if (options.excludeKeys) {\n keys = keys.filter((key) => {\n return !options.excludeKeys(key);\n });\n extraKeys = extraKeys.filter((key) => {\n return !options.excludeKeys(key);\n });\n }\n write(\"object:\" + (keys.length + extraKeys.length) + \":\");\n const dispatchForKey = (key) => {\n this.dispatch(key);\n write(\":\");\n if (!options.excludeValues) {\n this.dispatch(object[key]);\n }\n write(\",\");\n };\n for (const key of keys) {\n dispatchForKey(key);\n }\n for (const key of extraKeys) {\n dispatchForKey(key);\n }\n }\n },\n array(arr, unordered) {\n unordered = unordered === void 0 ? options.unorderedArrays !== false : unordered;\n write(\"array:\" + arr.length + \":\");\n if (!unordered || arr.length <= 1) {\n for (const entry of arr) {\n this.dispatch(entry);\n }\n return;\n }\n const contextAdditions = /* @__PURE__ */ new Map();\n const entries = arr.map((entry) => {\n const hasher = createHasher(options);\n hasher.dispatch(entry);\n for (const [key, value] of hasher.getContext()) {\n contextAdditions.set(key, value);\n }\n return hasher.toString();\n });\n context = contextAdditions;\n entries.sort();\n return this.array(entries, false);\n },\n date(date) {\n return write(\"date:\" + date.toJSON());\n },\n symbol(sym) {\n return write(\"symbol:\" + sym.toString());\n },\n unkown(value, type) {\n write(type);\n if (!value) {\n return;\n }\n write(\":\");\n if (value && typeof value.entries === \"function\") {\n return this.array(\n Array.from(value.entries()),\n true\n /* ordered */\n );\n }\n },\n error(err) {\n return write(\"error:\" + err.toString());\n },\n boolean(bool) {\n return write(\"bool:\" + bool);\n },\n string(string) {\n write(\"string:\" + string.length + \":\");\n write(string);\n },\n function(fn) {\n write(\"fn:\");\n if (isNativeFunction(fn)) {\n this.dispatch(\"[native]\");\n } else {\n this.dispatch(fn.toString());\n }\n if (options.respectFunctionNames !== false) {\n this.dispatch(\"function-name:\" + String(fn.name));\n }\n if (options.respectFunctionProperties) {\n this.object(fn);\n }\n },\n number(number) {\n return write(\"number:\" + number);\n },\n xml(xml) {\n return write(\"xml:\" + xml.toString());\n },\n null() {\n return write(\"Null\");\n },\n undefined() {\n return write(\"Undefined\");\n },\n regexp(regex) {\n return write(\"regex:\" + regex.toString());\n },\n uint8array(arr) {\n write(\"uint8array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n uint8clampedarray(arr) {\n write(\"uint8clampedarray:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n int8array(arr) {\n write(\"int8array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n uint16array(arr) {\n write(\"uint16array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n int16array(arr) {\n write(\"int16array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n uint32array(arr) {\n write(\"uint32array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n int32array(arr) {\n write(\"int32array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n float32array(arr) {\n write(\"float32array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n float64array(arr) {\n write(\"float64array:\");\n return this.dispatch(Array.prototype.slice.call(arr));\n },\n arraybuffer(arr) {\n write(\"arraybuffer:\");\n return this.dispatch(new Uint8Array(arr));\n },\n url(url) {\n return write(\"url:\" + url.toString());\n },\n map(map) {\n write(\"map:\");\n const arr = [...map];\n return this.array(arr, options.unorderedSets !== false);\n },\n set(set) {\n write(\"set:\");\n const arr = [...set];\n return this.array(arr, options.unorderedSets !== false);\n },\n file(file) {\n write(\"file:\");\n return this.dispatch([file.name, file.size, file.type, file.lastModfied]);\n },\n blob() {\n if (options.ignoreUnknown) {\n return write(\"[blob]\");\n }\n throw new Error(\n 'Hashing Blob objects is currently not supported\\nUse \"options.replacer\" or \"options.ignoreUnknown\"\\n'\n );\n },\n domwindow() {\n return write(\"domwindow\");\n },\n bigint(number) {\n return write(\"bigint:\" + number.toString());\n },\n /* Node.js standard native objects */\n process() {\n return write(\"process\");\n },\n timer() {\n return write(\"timer\");\n },\n pipe() {\n return write(\"pipe\");\n },\n tcp() {\n return write(\"tcp\");\n },\n udp() {\n return write(\"udp\");\n },\n tty() {\n return write(\"tty\");\n },\n statwatcher() {\n return write(\"statwatcher\");\n },\n securecontext() {\n return write(\"securecontext\");\n },\n connection() {\n return write(\"connection\");\n },\n zlib() {\n return write(\"zlib\");\n },\n context() {\n return write(\"context\");\n },\n nodescript() {\n return write(\"nodescript\");\n },\n httpparser() {\n return write(\"httpparser\");\n },\n dataview() {\n return write(\"dataview\");\n },\n signal() {\n return write(\"signal\");\n },\n fsevent() {\n return write(\"fsevent\");\n },\n tlswrap() {\n return write(\"tlswrap\");\n }\n };\n}\nconst nativeFunc = \"[native code] }\";\nconst nativeFuncLength = nativeFunc.length;\nfunction isNativeFunction(f) {\n if (typeof f !== \"function\") {\n return false;\n }\n return Function.prototype.toString.call(f).slice(-nativeFuncLength) === nativeFunc;\n}\n\nclass WordArray {\n constructor(words, sigBytes) {\n words = this.words = words || [];\n this.sigBytes = sigBytes === void 0 ? words.length * 4 : sigBytes;\n }\n toString(encoder) {\n return (encoder || Hex).stringify(this);\n }\n concat(wordArray) {\n this.clamp();\n if (this.sigBytes % 4) {\n for (let i = 0; i < wordArray.sigBytes; i++) {\n const thatByte = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;\n this.words[this.sigBytes + i >>> 2] |= thatByte << 24 - (this.sigBytes + i) % 4 * 8;\n }\n } else {\n for (let j = 0; j < wordArray.sigBytes; j += 4) {\n this.words[this.sigBytes + j >>> 2] = wordArray.words[j >>> 2];\n }\n }\n this.sigBytes += wordArray.sigBytes;\n return this;\n }\n clamp() {\n this.words[this.sigBytes >>> 2] &= 4294967295 << 32 - this.sigBytes % 4 * 8;\n this.words.length = Math.ceil(this.sigBytes / 4);\n }\n clone() {\n return new WordArray([...this.words]);\n }\n}\nconst Hex = {\n stringify(wordArray) {\n const hexChars = [];\n for (let i = 0; i < wordArray.sigBytes; i++) {\n const bite = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;\n hexChars.push((bite >>> 4).toString(16), (bite & 15).toString(16));\n }\n return hexChars.join(\"\");\n }\n};\nconst Base64 = {\n stringify(wordArray) {\n const keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const base64Chars = [];\n for (let i = 0; i < wordArray.sigBytes; i += 3) {\n const byte1 = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;\n const byte2 = wordArray.words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;\n const byte3 = wordArray.words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;\n const triplet = byte1 << 16 | byte2 << 8 | byte3;\n for (let j = 0; j < 4 && i * 8 + j * 6 < wordArray.sigBytes * 8; j++) {\n base64Chars.push(keyStr.charAt(triplet >>> 6 * (3 - j) & 63));\n }\n }\n return base64Chars.join(\"\");\n }\n};\nconst Latin1 = {\n parse(latin1Str) {\n const latin1StrLength = latin1Str.length;\n const words = [];\n for (let i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;\n }\n return new WordArray(words, latin1StrLength);\n }\n};\nconst Utf8 = {\n parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n};\nclass BufferedBlockAlgorithm {\n constructor() {\n this._data = new WordArray();\n this._nDataBytes = 0;\n this._minBufferSize = 0;\n this.blockSize = 512 / 32;\n }\n reset() {\n this._data = new WordArray();\n this._nDataBytes = 0;\n }\n _append(data) {\n if (typeof data === \"string\") {\n data = Utf8.parse(data);\n }\n this._data.concat(data);\n this._nDataBytes += data.sigBytes;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _doProcessBlock(_dataWords, _offset) {\n }\n _process(doFlush) {\n let processedWords;\n let nBlocksReady = this._data.sigBytes / (this.blockSize * 4);\n if (doFlush) {\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n }\n const nWordsReady = nBlocksReady * this.blockSize;\n const nBytesReady = Math.min(nWordsReady * 4, this._data.sigBytes);\n if (nWordsReady) {\n for (let offset = 0; offset < nWordsReady; offset += this.blockSize) {\n this._doProcessBlock(this._data.words, offset);\n }\n processedWords = this._data.words.splice(0, nWordsReady);\n this._data.sigBytes -= nBytesReady;\n }\n return new WordArray(processedWords, nBytesReady);\n }\n}\nclass Hasher extends BufferedBlockAlgorithm {\n update(messageUpdate) {\n this._append(messageUpdate);\n this._process();\n return this;\n }\n finalize(messageUpdate) {\n if (messageUpdate) {\n this._append(messageUpdate);\n }\n }\n}\n\nconst H = [\n 1779033703,\n -1150833019,\n 1013904242,\n -1521486534,\n 1359893119,\n -1694144372,\n 528734635,\n 1541459225\n];\nconst K = [\n 1116352408,\n 1899447441,\n -1245643825,\n -373957723,\n 961987163,\n 1508970993,\n -1841331548,\n -1424204075,\n -670586216,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n -2132889090,\n -1680079193,\n -1046744716,\n -459576895,\n -272742522,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n -1740746414,\n -1473132947,\n -1341970488,\n -1084653625,\n -958395405,\n -710438585,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n -2117940946,\n -1838011259,\n -1564481375,\n -1474664885,\n -1035236496,\n -949202525,\n -778901479,\n -694614492,\n -200395387,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n -2067236844,\n -1933114872,\n -1866530822,\n -1538233109,\n -1090935817,\n -965641998\n];\nconst W = [];\nclass SHA256 extends Hasher {\n constructor() {\n super(...arguments);\n this._hash = new WordArray([...H]);\n }\n reset() {\n super.reset();\n this._hash = new WordArray([...H]);\n }\n _doProcessBlock(M, offset) {\n const H2 = this._hash.words;\n let a = H2[0];\n let b = H2[1];\n let c = H2[2];\n let d = H2[3];\n let e = H2[4];\n let f = H2[5];\n let g = H2[6];\n let h = H2[7];\n for (let i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n const gamma0x = W[i - 15];\n const gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;\n const gamma1x = W[i - 2];\n const gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n const ch = e & f ^ ~e & g;\n const maj = a & b ^ a & c ^ b & c;\n const sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);\n const sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);\n const t1 = h + sigma1 + ch + K[i] + W[i];\n const t2 = sigma0 + maj;\n h = g;\n g = f;\n f = e;\n e = d + t1 | 0;\n d = c;\n c = b;\n b = a;\n a = t1 + t2 | 0;\n }\n H2[0] = H2[0] + a | 0;\n H2[1] = H2[1] + b | 0;\n H2[2] = H2[2] + c | 0;\n H2[3] = H2[3] + d | 0;\n H2[4] = H2[4] + e | 0;\n H2[5] = H2[5] + f | 0;\n H2[6] = H2[6] + g | 0;\n H2[7] = H2[7] + h | 0;\n }\n finalize(messageUpdate) {\n super.finalize(messageUpdate);\n const nBitsTotal = this._nDataBytes * 8;\n const nBitsLeft = this._data.sigBytes * 8;\n this._data.words[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;\n this._data.words[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(\n nBitsTotal / 4294967296\n );\n this._data.words[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n this._data.sigBytes = this._data.words.length * 4;\n this._process();\n return this._hash;\n }\n}\nfunction sha256(message) {\n return new SHA256().finalize(message).toString();\n}\nfunction sha256base64(message) {\n return new SHA256().finalize(message).toString(Base64);\n}\n\nfunction hash(object, options = {}) {\n const hashed = typeof object === \"string\" ? object : objectHash(object, options);\n return sha256base64(hashed).slice(0, 10);\n}\n\nfunction murmurHash(key, seed = 0) {\n if (typeof key === \"string\") {\n key = createBuffer(key);\n }\n let i = 0;\n let h1 = seed;\n let k1;\n let h1b;\n const remainder = key.length & 3;\n const bytes = key.length - remainder;\n const c1 = 3432918353;\n const c2 = 461845907;\n while (i < bytes) {\n k1 = key[i] & 255 | (key[++i] & 255) << 8 | (key[++i] & 255) << 16 | (key[++i] & 255) << 24;\n ++i;\n k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1b = (h1 & 65535) * 5 + (((h1 >>> 16) * 5 & 65535) << 16) & 4294967295;\n h1 = (h1b & 65535) + 27492 + (((h1b >>> 16) + 58964 & 65535) << 16);\n }\n k1 = 0;\n switch (remainder) {\n case 3: {\n k1 ^= (key[i + 2] & 255) << 16;\n break;\n }\n case 2: {\n k1 ^= (key[i + 1] & 255) << 8;\n break;\n }\n case 1: {\n k1 ^= key[i] & 255;\n k1 = (k1 & 65535) * c1 + (((k1 >>> 16) * c1 & 65535) << 16) & 4294967295;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = (k1 & 65535) * c2 + (((k1 >>> 16) * c2 & 65535) << 16) & 4294967295;\n h1 ^= k1;\n }\n }\n h1 ^= key.length;\n h1 ^= h1 >>> 16;\n h1 = (h1 & 65535) * 2246822507 + (((h1 >>> 16) * 2246822507 & 65535) << 16) & 4294967295;\n h1 ^= h1 >>> 13;\n h1 = (h1 & 65535) * 3266489909 + (((h1 >>> 16) * 3266489909 & 65535) << 16) & 4294967295;\n h1 ^= h1 >>> 16;\n return h1 >>> 0;\n}\nfunction createBuffer(val) {\n return new TextEncoder().encode(val);\n}\n\nfunction isEqual(object1, object2, hashOptions = {}) {\n if (object1 === object2) {\n return true;\n }\n if (objectHash(object1, hashOptions) === objectHash(object2, hashOptions)) {\n return true;\n }\n return false;\n}\n\nfunction diff(obj1, obj2, opts = {}) {\n const h1 = _toHashedObject(obj1, opts);\n const h2 = _toHashedObject(obj2, opts);\n return _diff(h1, h2, opts);\n}\nfunction _diff(h1, h2, opts = {}) {\n const diffs = [];\n const allProps = /* @__PURE__ */ new Set([\n ...Object.keys(h1.props || {}),\n ...Object.keys(h2.props || {})\n ]);\n if (h1.props && h2.props) {\n for (const prop of allProps) {\n const p1 = h1.props[prop];\n const p2 = h2.props[prop];\n if (p1 && p2) {\n diffs.push(..._diff(h1.props?.[prop], h2.props?.[prop], opts));\n } else if (p1 || p2) {\n diffs.push(\n new DiffEntry((p2 || p1).key, p1 ? \"removed\" : \"added\", p2, p1)\n );\n }\n }\n }\n if (allProps.size === 0 && h1.hash !== h2.hash) {\n diffs.push(new DiffEntry((h2 || h1).key, \"changed\", h2, h1));\n }\n return diffs;\n}\nfunction _toHashedObject(obj, opts, key = \"\") {\n if (obj && typeof obj !== \"object\") {\n return new DiffHashedObject(key, obj, objectHash(obj, opts));\n }\n const props = {};\n const hashes = [];\n for (const _key in obj) {\n props[_key] = _toHashedObject(\n obj[_key],\n opts,\n key ? `${key}.${_key}` : _key\n );\n hashes.push(props[_key].hash);\n }\n return new DiffHashedObject(key, obj, `{${hashes.join(\":\")}}`, props);\n}\nclass DiffEntry {\n // eslint-disable-next-line no-useless-constructor\n constructor(key, type, newValue, oldValue) {\n this.key = key;\n this.type = type;\n this.newValue = newValue;\n this.oldValue = oldValue;\n }\n toString() {\n return this.toJSON();\n }\n toJSON() {\n switch (this.type) {\n case \"added\": {\n return `Added \\`${this.key}\\``;\n }\n case \"removed\": {\n return `Removed \\`${this.key}\\``;\n }\n case \"changed\": {\n return `Changed \\`${this.key}\\` from \\`${this.oldValue?.toString() || \"-\"}\\` to \\`${this.newValue.toString()}\\``;\n }\n }\n }\n}\nclass DiffHashedObject {\n // eslint-disable-next-line no-useless-constructor\n constructor(key, value, hash, props) {\n this.key = key;\n this.value = value;\n this.hash = hash;\n this.props = props;\n }\n toString() {\n if (this.props) {\n return `{${Object.keys(this.props).join(\",\")}}`;\n } else {\n return JSON.stringify(this.value);\n }\n }\n toJSON() {\n const k = this.key || \".\";\n if (this.props) {\n return `${k}({${Object.keys(this.props).join(\",\")}})`;\n }\n return `${k}(${this.value})`;\n }\n}\n\nexport { diff, hash, isEqual, murmurHash, objectHash, sha256, sha256base64 };\n","import { sha256 } from 'ohash';\n/**\n * TODO in the future we should no longer provide a\n * fallback to crypto.subtle.digest.\n * Instead users without crypto.subtle.digest support, should have to provide their own\n * hash function.\n */\nexport function jsSha256(input) {\n return Promise.resolve(sha256(input));\n}\nexport async function nativeSha256(input) {\n var data = new TextEncoder().encode(input);\n var hashBuffer = await crypto.subtle.digest('SHA-256', data);\n /**\n * @link https://jameshfisher.com/2017/10/30/web-cryptography-api-hello-world/\n */\n var hash = Array.prototype.map.call(new Uint8Array(hashBuffer), x => ('00' + x.toString(16)).slice(-2)).join('');\n return hash;\n}\nexport var canUseCryptoSubtle = typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined' && typeof crypto.subtle.digest === 'function';\n\n/**\n * Default hash method used to hash\n * strings and do equal comparisons.\n *\n * IMPORTANT: Changing the default hashing method\n * requires a BREAKING change!\n */\n\nexport var defaultHashSha256 = canUseCryptoSubtle ? nativeSha256 : jsSha256;\n//# sourceMappingURL=utils-hash.js.map","/**\n * returns a promise that resolves on the next tick\n */\nexport function nextTick() {\n return new Promise(res => setTimeout(res, 0));\n}\nexport function promiseWait(ms = 0) {\n return new Promise(res => setTimeout(res, ms));\n}\nexport function toPromise(maybePromise) {\n if (maybePromise && typeof maybePromise.then === 'function') {\n // is promise\n return maybePromise;\n } else {\n return Promise.resolve(maybePromise);\n }\n}\n\n/**\n * returns true if promise is given\n */\nexport function isPromise(value) {\n if (typeof value !== 'undefined' && typeof value.then === 'function') {\n return true;\n }\n return false;\n}\n\n/**\n * Reusing resolved promises has a better\n * performance than creating new ones each time.\n */\nexport var PROMISE_RESOLVE_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVE_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVE_NULL = Promise.resolve(null);\nexport var PROMISE_RESOLVE_VOID = Promise.resolve();\nexport function requestIdlePromiseNoQueue(\n/**\n * We always set a timeout!\n * RxDB might be used on the server side where the\n * server runs 24/4 on 99% CPU. So without a timeout\n * this would never resolve which could cause a memory leak.\n */\ntimeout = 10000) {\n /**\n * Do not use window.requestIdleCallback\n * because some javascript runtimes like react-native,\n * do not have a window object, but still have a global\n * requestIdleCallback function.\n * @link https://github.com/pubkey/rxdb/issues/4804\n */\n if (typeof requestIdleCallback === 'function') {\n return new Promise(res => {\n requestIdleCallback(() => res(), {\n timeout\n });\n });\n } else {\n return promiseWait(0);\n }\n}\n\n/**\n * If multiple operations wait for an requestIdlePromise\n * we do not want them to resolve all at the same time.\n * So we have to queue the calls.\n */\nvar idlePromiseQueue = PROMISE_RESOLVE_VOID;\nexport function requestIdlePromise(timeout = undefined) {\n idlePromiseQueue = idlePromiseQueue.then(() => {\n return requestIdlePromiseNoQueue(timeout);\n });\n return idlePromiseQueue;\n}\n\n/**\n * run the callback if requestIdleCallback available\n * do nothing if not\n * @link https://developer.mozilla.org/de/docs/Web/API/Window/requestIdleCallback\n */\nexport function requestIdleCallbackIfAvailable(fun) {\n /**\n * Do not use window.requestIdleCallback\n * because some javascript runtimes like react-native,\n * do not have a window object, but still have a global\n * requestIdleCallback function.\n * @link https://github.com/pubkey/rxdb/issues/4804\n */\n if (typeof requestIdleCallback === 'function') {\n requestIdleCallback(() => {\n fun();\n });\n }\n}\n\n/**\n * like Promise.all() but runs in series instead of parallel\n * @link https://github.com/egoist/promise.series/blob/master/index.js\n * @param tasks array with functions that return a promise\n */\nexport function promiseSeries(tasks, initial) {\n return tasks.reduce((current, next) => current.then(next), Promise.resolve(initial));\n}\n//# sourceMappingURL=utils-promise.js.map","export var REGEX_ALL_DOTS = /\\./g;\nexport var REGEX_ALL_PIPES = /\\|/g;\n//# sourceMappingURL=utils-regex.js.map","var COUCH_NAME_CHARS = 'abcdefghijklmnopqrstuvwxyz';\n/**\n * get a random string which can be used with couchdb\n * @link http://stackoverflow.com/a/1349426/3443137\n */\nexport function randomCouchString(length = 10) {\n var text = '';\n for (var i = 0; i < length; i++) {\n text += COUCH_NAME_CHARS.charAt(Math.floor(Math.random() * COUCH_NAME_CHARS.length));\n }\n return text;\n}\n\n/**\n * A random string that is never inside of any storage\n */\nexport var RANDOM_STRING = 'Fz7SZXPmYJujkzjY1rpXWvlWBqoGAfAX';\n\n/**\n * uppercase first char\n */\nexport function ucfirst(str) {\n str += '';\n var f = str.charAt(0).toUpperCase();\n return f + str.substr(1);\n}\n\n/**\n * removes trailing and ending dots from the string\n */\nexport function trimDots(str) {\n // start\n while (str.charAt(0) === '.') {\n str = str.substr(1);\n }\n\n // end\n while (str.slice(-1) === '.') {\n str = str.slice(0, -1);\n }\n return str;\n}\n\n/**\n * @link https://stackoverflow.com/a/44950500/3443137\n */\nexport function lastCharOfString(str) {\n return str.charAt(str.length - 1);\n}\n\n/**\n * returns true if the given name is likely a folder path\n */\nexport function isFolderPath(name) {\n // do not check, if foldername is given\n if (name.includes('/') ||\n // unix\n name.includes('\\\\') // windows\n ) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * @link https://gist.github.com/andreburgaud/6f73fd2d690b629346b8\n * @link https://stackoverflow.com/a/76240378/3443137\n */\nexport function arrayBufferToString(arrayBuffer) {\n var chunkSize = 8192;\n var str = '';\n var len = arrayBuffer.byteLength;\n for (var i = 0; i < len; i += chunkSize) {\n var chunk = new Uint8Array(arrayBuffer, i, Math.min(chunkSize, len - i));\n str += String.fromCharCode.apply(null, chunk);\n }\n return str;\n}\nexport function stringToArrayBuffer(str) {\n var buf = new ArrayBuffer(str.length);\n var bufView = new Uint8Array(buf);\n for (var i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n}\n//# sourceMappingURL=utils-string.js.map","/**\n * Copied from the fast-deep-equal package\n * because it does not support es modules and causes optimization bailouts.\n * TODO use the npm package again when this is merged:\n * @link https://github.com/epoberezkin/fast-deep-equal/pull/105\n */\nexport function deepEqual(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length;\n var i;\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) if (!deepEqual(a[i], b[i])) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n}\n//# sourceMappingURL=utils-object-deep-equal.js.map","/**\n * Copied from\n * @link https://github.com/sindresorhus/dot-prop/blob/main/index.js\n * because it is currently an esm only module.\n * TODO use the npm package again when RxDB is also fully esm.\n */\n\nvar isObject = value => {\n var type = typeof value;\n return value !== null && (type === 'object' || type === 'function');\n};\nvar disallowedKeys = new Set(['__proto__', 'prototype', 'constructor']);\nvar digits = new Set('0123456789');\nfunction getPathSegments(path) {\n var parts = [];\n var currentSegment = '';\n var currentPart = 'start';\n var isIgnoring = false;\n for (var character of path) {\n switch (character) {\n case '\\\\':\n {\n if (currentPart === 'index') {\n throw new Error('Invalid character in an index');\n }\n if (currentPart === 'indexEnd') {\n throw new Error('Invalid character after an index');\n }\n if (isIgnoring) {\n currentSegment += character;\n }\n currentPart = 'property';\n isIgnoring = !isIgnoring;\n break;\n }\n case '.':\n {\n if (currentPart === 'index') {\n throw new Error('Invalid character in an index');\n }\n if (currentPart === 'indexEnd') {\n currentPart = 'property';\n break;\n }\n if (isIgnoring) {\n isIgnoring = false;\n currentSegment += character;\n break;\n }\n if (disallowedKeys.has(currentSegment)) {\n return [];\n }\n parts.push(currentSegment);\n currentSegment = '';\n currentPart = 'property';\n break;\n }\n case '[':\n {\n if (currentPart === 'index') {\n throw new Error('Invalid character in an index');\n }\n if (currentPart === 'indexEnd') {\n currentPart = 'index';\n break;\n }\n if (isIgnoring) {\n isIgnoring = false;\n currentSegment += character;\n break;\n }\n if (currentPart === 'property') {\n if (disallowedKeys.has(currentSegment)) {\n return [];\n }\n parts.push(currentSegment);\n currentSegment = '';\n }\n currentPart = 'index';\n break;\n }\n case ']':\n {\n if (currentPart === 'index') {\n parts.push(Number.parseInt(currentSegment, 10));\n currentSegment = '';\n currentPart = 'indexEnd';\n break;\n }\n if (currentPart === 'indexEnd') {\n throw new Error('Invalid character after an index');\n }\n\n // Falls through\n }\n default:\n {\n if (currentPart === 'index' && !digits.has(character)) {\n throw new Error('Invalid character in an index');\n }\n if (currentPart === 'indexEnd') {\n throw new Error('Invalid character after an index');\n }\n if (currentPart === 'start') {\n currentPart = 'property';\n }\n if (isIgnoring) {\n isIgnoring = false;\n currentSegment += '\\\\';\n }\n currentSegment += character;\n }\n }\n }\n if (isIgnoring) {\n currentSegment += '\\\\';\n }\n switch (currentPart) {\n case 'property':\n {\n if (disallowedKeys.has(currentSegment)) {\n return [];\n }\n parts.push(currentSegment);\n break;\n }\n case 'index':\n {\n throw new Error('Index was not closed');\n }\n case 'start':\n {\n parts.push('');\n break;\n }\n // No default\n }\n return parts;\n}\nfunction isStringIndex(object, key) {\n if (typeof key !== 'number' && Array.isArray(object)) {\n var index = Number.parseInt(key, 10);\n return Number.isInteger(index) && object[index] === object[key];\n }\n return false;\n}\nfunction assertNotStringIndex(object, key) {\n if (isStringIndex(object, key)) {\n throw new Error('Cannot use string index');\n }\n}\n\n/**\n * TODO we need some performance tests and improvements here.\n */\nexport function getProperty(object, path, value) {\n if (Array.isArray(path)) {\n path = path.join('.');\n }\n\n /**\n * Performance shortcut.\n * In most cases we just have a simple property name\n * so we can directly return it.\n */\n if (!path.includes('.') && !path.includes('[')) {\n return object[path];\n }\n if (!isObject(object) || typeof path !== 'string') {\n return value === undefined ? object : value;\n }\n var pathArray = getPathSegments(path);\n if (pathArray.length === 0) {\n return value;\n }\n for (var index = 0; index < pathArray.length; index++) {\n var key = pathArray[index];\n if (isStringIndex(object, key)) {\n object = index === pathArray.length - 1 ? undefined : null;\n } else {\n object = object[key];\n }\n if (object === undefined || object === null) {\n // `object` is either `undefined` or `null` so we want to stop the loop, and\n // if this is not the last bit of the path, and\n // if it didn't return `undefined`\n // it would return `null` if `object` is `null`\n // but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n if (index !== pathArray.length - 1) {\n return value;\n }\n break;\n }\n }\n return object === undefined ? value : object;\n}\nexport function setProperty(object, path, value) {\n if (Array.isArray(path)) {\n path = path.join('.');\n }\n if (!isObject(object) || typeof path !== 'string') {\n return object;\n }\n var root = object;\n var pathArray = getPathSegments(path);\n for (var index = 0; index < pathArray.length; index++) {\n var key = pathArray[index];\n assertNotStringIndex(object, key);\n if (index === pathArray.length - 1) {\n object[key] = value;\n } else if (!isObject(object[key])) {\n object[key] = typeof pathArray[index + 1] === 'number' ? [] : {};\n }\n object = object[key];\n }\n return root;\n}\nexport function deleteProperty(object, path) {\n if (!isObject(object) || typeof path !== 'string') {\n return false;\n }\n var pathArray = getPathSegments(path);\n for (var index = 0; index < pathArray.length; index++) {\n var key = pathArray[index];\n assertNotStringIndex(object, key);\n if (index === pathArray.length - 1) {\n delete object[key];\n return true;\n }\n object = object[key];\n if (!isObject(object)) {\n return false;\n }\n }\n}\nexport function hasProperty(object, path) {\n if (!isObject(object) || typeof path !== 'string') {\n return false;\n }\n var pathArray = getPathSegments(path);\n if (pathArray.length === 0) {\n return false;\n }\n for (var key of pathArray) {\n if (!isObject(object) || !(key in object) || isStringIndex(object, key)) {\n return false;\n }\n object = object[key];\n }\n return true;\n}\n\n// TODO: Backslashes with no effect should not be escaped\nfunction escapePath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Expected a string');\n }\n return path.replace(/[\\\\.[]/g, '\\\\$&');\n}\n\n// The keys returned by Object.entries() for arrays are strings\nfunction entries(value) {\n if (Array.isArray(value)) {\n return value.map((v, index) => [index, v]);\n }\n return Object.entries(value);\n}\nfunction stringifyPath(pathSegments) {\n var result = '';\n\n // eslint-disable-next-line prefer-const\n for (var [index, segment] of entries(pathSegments)) {\n if (typeof segment === 'number') {\n result += \"[\" + segment + \"]\";\n } else {\n segment = escapePath(segment);\n result += index === 0 ? segment : \".\" + segment;\n }\n }\n return result;\n}\nfunction* deepKeysIterator(object, currentPath = []) {\n if (!isObject(object)) {\n if (currentPath.length > 0) {\n yield stringifyPath(currentPath);\n }\n return;\n }\n for (var [key, value] of entries(object)) {\n yield* deepKeysIterator(value, [...currentPath, key]);\n }\n}\nexport function deepKeys(object) {\n return [...deepKeysIterator(object)];\n}\n//# sourceMappingURL=utils-object-dot-prop.js.map","export function getFromMapOrThrow(map, key) {\n var val = map.get(key);\n if (typeof val === 'undefined') {\n throw new Error('missing value from map ' + key);\n }\n return val;\n}\nexport function getFromMapOrCreate(map, index, creator, ifWasThere) {\n var value = map.get(index);\n if (typeof value === 'undefined') {\n value = creator();\n map.set(index, value);\n } else if (ifWasThere) {\n ifWasThere(value);\n }\n return value;\n}\n//# sourceMappingURL=utils-map.js.map","import { ucfirst } from \"./utils-string.js\";\n\n/**\n * Returns an error that indicates that a plugin is missing\n * We do not throw a RxError because this should not be handled\n * programmatically but by using the correct import\n */\nexport function pluginMissing(pluginKey) {\n var keyParts = pluginKey.split('-');\n var pluginName = 'RxDB';\n keyParts.forEach(part => {\n pluginName += ucfirst(part);\n });\n pluginName += 'Plugin';\n return new Error(\"You are using a function which must be overwritten by a plugin.\\n You should either prevent the usage of this function or add the plugin via:\\n import { \" + pluginName + \" } from 'rxdb/plugins/\" + pluginKey + \"';\\n addRxPlugin(\" + pluginName + \");\\n \");\n}\nexport function errorToPlainJson(err) {\n var ret = {\n name: err.name,\n message: err.message,\n rxdb: err.rxdb,\n parameters: err.parameters,\n code: err.code,\n /**\n * stack must be last to make it easier to read the json in a console.\n * Also we ensure that each linebreak is spaced so that the chrome devtools\n * shows urls to the source code that can be clicked to inspect\n * the correct place in the code.\n */\n stack: !err.stack ? undefined : err.stack.replace(/\\n/g, ' \\n ')\n };\n return ret;\n}\n//# sourceMappingURL=utils-error.js.map","/**\n * Returns the current unix time in milliseconds (with two decimals!)\n * Because the accuracy of getTime() in javascript is bad,\n * and we cannot rely on performance.now() on all platforms,\n * this method implements a way to never return the same value twice.\n * This ensures that when now() is called often, we do not loose the information\n * about which call came first and which came after.\n *\n * We had to move from having no decimals, to having two decimal\n * because it turned out that some storages are such fast that\n * calling this method too often would return 'the future'.\n */\nvar _lastNow = 0;\n/**\n * Returns the current time in milliseconds,\n * also ensures to not return the same value twice.\n */\nexport function now() {\n var ret = Date.now();\n ret = ret + 0.01;\n if (ret <= _lastNow) {\n ret = _lastNow + 0.01;\n }\n\n /**\n * Strip the returned number to max two decimals.\n * In theory we would not need this but\n * in practice JavaScript has no such good number precision\n * so rounding errors could add another decimal place.\n */\n var twoDecimals = parseFloat(ret.toFixed(2));\n _lastNow = twoDecimals;\n return twoDecimals;\n}\n//# sourceMappingURL=utils-time.js.map","export function runXTimes(xTimes, fn) {\n new Array(xTimes).fill(0).forEach((_v, idx) => fn(idx));\n}\nexport function ensureNotFalsy(obj, message) {\n if (!obj) {\n if (!message) {\n message = '';\n }\n throw new Error('ensureNotFalsy() is falsy: ' + message);\n }\n return obj;\n}\nexport function ensureInteger(obj) {\n if (!Number.isInteger(obj)) {\n throw new Error('ensureInteger() is falsy');\n }\n return obj;\n}\n\n/**\n * Using shareReplay() without settings will not unsubscribe\n * if there are no more subscribers.\n * So we use these defaults.\n * @link https://cartant.medium.com/rxjs-whats-changed-with-sharereplay-65c098843e95\n */\nexport var RXJS_SHARE_REPLAY_DEFAULTS = {\n bufferSize: 1,\n refCount: true\n};\n//# sourceMappingURL=utils-other.js.map","/**\n * This file is replaced in the 'npm run build:version' script.\n */\nexport var RXDB_VERSION = '15.9.1';\n//# sourceMappingURL=utils-rxdb-version.js.map","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeFunction(fn) {\n try {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n } catch (e) {\n return typeof fn === \"function\";\n }\n}","export default function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","/**\n * functions that can or should be overwritten by plugins\n * IMPORTANT: Do not import any big stuff from RxDB here!\n * An 'overwritable' can be used inside WebWorkers for RxStorage only,\n * and we do not want to have the full RxDB lib bundled in them.\n */\n\nexport var overwritable = {\n /**\n * if this method is overwritten with one\n * that returns true, we do additional checks\n * which help the developer but have bad performance\n */\n isDevMode() {\n return false;\n },\n /**\n * Deep freezes and object when in dev-mode.\n * Deep-Freezing has the same performance as deep-cloning, so we only do that in dev-mode.\n * Also, we can ensure the readonly state via typescript\n * @link https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\n deepFreezeWhenDevMode(obj) {\n return obj;\n },\n /**\n * overwritten to map error-codes to text-messages\n */\n tunnelErrorMessage(message) {\n return \"RxDB Error-Code \" + message + \".\\n Error messages are not included in RxDB core to reduce build size.\\n - To find out what this error means, either use the dev-mode-plugin https://rxdb.info/dev-mode.html\\n - or search for the error code here: https://github.com/pubkey/rxdb/search?q=\" + message + \"\\n \";\n }\n};\n//# sourceMappingURL=overwritable.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _wrapNativeSuper from \"@babel/runtime/helpers/wrapNativeSuper\";\n/**\n * here we use custom errors with the additional field 'parameters'\n */\n\nimport { overwritable } from \"./overwritable.js\";\n/**\n * transform an object of parameters to a presentable string\n */\nfunction parametersToString(parameters) {\n var ret = '';\n if (Object.keys(parameters).length === 0) return ret;\n ret += 'Given parameters: {\\n';\n ret += Object.keys(parameters).map(k => {\n var paramStr = '[object Object]';\n try {\n if (k === 'errors') {\n paramStr = parameters[k].map(err => JSON.stringify(err, Object.getOwnPropertyNames(err)));\n } else {\n paramStr = JSON.stringify(parameters[k], function (_k, v) {\n return v === undefined ? null : v;\n }, 2);\n }\n } catch (e) {}\n return k + ':' + paramStr;\n }).join('\\n');\n ret += '}';\n return ret;\n}\nfunction messageForError(message, code, parameters) {\n return 'RxError (' + code + '):' + '\\n' + message + '\\n' + parametersToString(parameters);\n}\nexport var RxError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(RxError, _Error);\n // always true, use this to detect if its an rxdb-error\n\n function RxError(code, message, parameters = {}) {\n var _this;\n var mes = messageForError(message, code, parameters);\n _this = _Error.call(this, mes) || this;\n _this.code = code;\n _this.message = mes;\n _this.parameters = parameters;\n _this.rxdb = true; // tag them as internal\n return _this;\n }\n var _proto = RxError.prototype;\n _proto.toString = function toString() {\n return this.message;\n };\n _createClass(RxError, [{\n key: \"name\",\n get: function () {\n return 'RxError (' + this.code + ')';\n }\n }, {\n key: \"typeError\",\n get: function () {\n return false;\n }\n }]);\n return RxError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nexport var RxTypeError = /*#__PURE__*/function (_TypeError) {\n _inheritsLoose(RxTypeError, _TypeError);\n // always true, use this to detect if its an rxdb-error\n\n function RxTypeError(code, message, parameters = {}) {\n var _this2;\n var mes = messageForError(message, code, parameters);\n _this2 = _TypeError.call(this, mes) || this;\n _this2.code = code;\n _this2.message = mes;\n _this2.parameters = parameters;\n _this2.rxdb = true; // tag them as internal\n return _this2;\n }\n var _proto2 = RxTypeError.prototype;\n _proto2.toString = function toString() {\n return this.message;\n };\n _createClass(RxTypeError, [{\n key: \"name\",\n get: function () {\n return 'RxTypeError (' + this.code + ')';\n }\n }, {\n key: \"typeError\",\n get: function () {\n return true;\n }\n }]);\n return RxTypeError;\n}( /*#__PURE__*/_wrapNativeSuper(TypeError));\nexport function newRxError(code, parameters) {\n return new RxError(code, overwritable.tunnelErrorMessage(code), parameters);\n}\nexport function newRxTypeError(code, parameters) {\n return new RxTypeError(code, overwritable.tunnelErrorMessage(code), parameters);\n}\n\n/**\n * Returns the error if it is a 409 conflict,\n * return false if it is another error.\n */\nexport function isBulkWriteConflictError(err) {\n if (err && err.status === 409) {\n return err;\n } else {\n return false;\n }\n}\nvar STORAGE_WRITE_ERROR_CODE_TO_MESSAGE = {\n 409: 'document write conflict',\n 422: 'schema validation error',\n 510: 'attachment data missing'\n};\nexport function rxStorageWriteErrorToRxError(err) {\n return newRxError('COL20', {\n name: STORAGE_WRITE_ERROR_CODE_TO_MESSAGE[err.status],\n document: err.documentId,\n writeError: err\n });\n}\n//# sourceMappingURL=rx-error.js.map","/**\n * hook-functions that can be extended by the plugin\n */\nexport var HOOKS = {\n /**\n * Runs before a plugin is added.\n * Use this to block the usage of non-compatible plugins.\n */\n preAddRxPlugin: [],\n /**\n * functions that run before the database is created\n */\n preCreateRxDatabase: [],\n /**\n * runs after the database is created and prepared\n * but before the instance is returned to the user\n * @async\n */\n createRxDatabase: [],\n preCreateRxCollection: [],\n createRxCollection: [],\n /**\n * runs at the end of the destroy-process of a collection\n * @async\n */\n postDestroyRxCollection: [],\n /**\n * Runs after a collection is removed.\n * @async\n */\n postRemoveRxCollection: [],\n /**\n * functions that get the json-schema as input\n * to do additionally checks/manipulation\n */\n preCreateRxSchema: [],\n /**\n * functions that run after the RxSchema is created\n * gets RxSchema as attribute\n */\n createRxSchema: [],\n preCreateRxQuery: [],\n /**\n * Runs before a query is send to the\n * prepareQuery function of the storage engine.\n */\n prePrepareQuery: [],\n createRxDocument: [],\n /**\n * runs after a RxDocument is created,\n * cannot be async\n */\n postCreateRxDocument: [],\n /**\n * Runs before a RxStorageInstance is created\n * gets the params of createStorageInstance()\n * as attribute so you can manipulate them.\n * Notice that you have to clone stuff before mutating the inputs.\n */\n preCreateRxStorageInstance: [],\n /**\n * runs on the document-data before the document is migrated\n * {\n * doc: Object, // original doc-data\n * migrated: // migrated doc-data after run through migration-strategies\n * }\n */\n preMigrateDocument: [],\n /**\n * runs after the migration of a document has been done\n */\n postMigrateDocument: [],\n /**\n * runs at the beginning of the destroy-process of a database\n */\n preDestroyRxDatabase: [],\n /**\n * runs after a database has been removed\n * @async\n */\n postRemoveRxDatabase: [],\n /**\n * runs before the replication writes the rows to master\n * but before the rows have been modified\n * @async\n */\n preReplicationMasterWrite: [],\n /**\n * runs after the replication has been sent to the server\n * but before the new documents have been handled\n * @async\n */\n preReplicationMasterWriteDocumentsHandle: []\n};\nexport function runPluginHooks(hookKey, obj) {\n if (HOOKS[hookKey]) {\n HOOKS[hookKey].forEach(fun => fun(obj));\n }\n}\n\n/**\n * TODO\n * we should not run the hooks in parallel\n * this makes stuff unpredictable.\n */\nexport function runAsyncPluginHooks(hookKey, obj) {\n return Promise.all(HOOKS[hookKey].map(fun => fun(obj)));\n}\n\n/**\n * used in tests to remove hooks\n */\nexport function _clearHook(type, fun) {\n HOOKS[type] = HOOKS[type].filter(h => h !== fun);\n}\n//# sourceMappingURL=hooks.js.map","import { newRxError } from \"./rx-error.js\";\nimport { appendToArray, ensureNotFalsy, flatClone, getProperty, isMaybeReadonlyArray, REGEX_ALL_DOTS, RX_META_LWT_MINIMUM, sortObject, trimDots } from \"./plugins/utils/index.js\";\n/**\n * Helper function to create a valid RxJsonSchema\n * with a given version.\n */\nexport function getPseudoSchemaForVersion(version, primaryKey) {\n var pseudoSchema = fillWithDefaultSettings({\n version,\n type: 'object',\n primaryKey: primaryKey,\n properties: {\n [primaryKey]: {\n type: 'string',\n maxLength: 100\n }\n },\n indexes: [[primaryKey]],\n required: [primaryKey]\n });\n return pseudoSchema;\n}\n\n/**\n * Returns the sub-schema for a given path\n */\nexport function getSchemaByObjectPath(rxJsonSchema, path) {\n var usePath = path;\n usePath = usePath.replace(REGEX_ALL_DOTS, '.properties.');\n usePath = 'properties.' + usePath;\n usePath = trimDots(usePath);\n var ret = getProperty(rxJsonSchema, usePath);\n return ret;\n}\nexport function fillPrimaryKey(primaryPath, jsonSchema, documentData) {\n // optimization shortcut.\n if (typeof jsonSchema.primaryKey === 'string') {\n return documentData;\n }\n var newPrimary = getComposedPrimaryKeyOfDocumentData(jsonSchema, documentData);\n var existingPrimary = documentData[primaryPath];\n if (existingPrimary && existingPrimary !== newPrimary) {\n throw newRxError('DOC19', {\n args: {\n documentData,\n existingPrimary,\n newPrimary\n },\n schema: jsonSchema\n });\n }\n documentData[primaryPath] = newPrimary;\n return documentData;\n}\nexport function getPrimaryFieldOfPrimaryKey(primaryKey) {\n if (typeof primaryKey === 'string') {\n return primaryKey;\n } else {\n return primaryKey.key;\n }\n}\nexport function getLengthOfPrimaryKey(schema) {\n var primaryPath = getPrimaryFieldOfPrimaryKey(schema.primaryKey);\n var schemaPart = getSchemaByObjectPath(schema, primaryPath);\n return ensureNotFalsy(schemaPart.maxLength);\n}\n\n/**\n * Returns the composed primaryKey of a document by its data.\n */\nexport function getComposedPrimaryKeyOfDocumentData(jsonSchema, documentData) {\n if (typeof jsonSchema.primaryKey === 'string') {\n return documentData[jsonSchema.primaryKey];\n }\n var compositePrimary = jsonSchema.primaryKey;\n return compositePrimary.fields.map(field => {\n var value = getProperty(documentData, field);\n if (typeof value === 'undefined') {\n throw newRxError('DOC18', {\n args: {\n field,\n documentData\n }\n });\n }\n return value;\n }).join(compositePrimary.separator);\n}\n\n/**\n * Normalize the RxJsonSchema.\n * We need this to ensure everything is set up properly\n * and we have the same hash on schemas that represent the same value but\n * have different json.\n *\n * - Orders the schemas attributes by alphabetical order\n * - Adds the primaryKey to all indexes that do not contain the primaryKey\n * - We need this for deterministic sort order on all queries, which is required for event-reduce to work.\n *\n * @return RxJsonSchema - ordered and filled\n */\nexport function normalizeRxJsonSchema(jsonSchema) {\n var normalizedSchema = sortObject(jsonSchema, true);\n return normalizedSchema;\n}\n\n/**\n * If the schema does not specify any index,\n * we add this index so we at least can run RxQuery()\n * and only select non-deleted fields.\n */\nexport function getDefaultIndex(primaryPath) {\n return ['_deleted', primaryPath];\n}\n\n/**\n * fills the schema-json with default-settings\n * @return cloned schemaObj\n */\nexport function fillWithDefaultSettings(schemaObj) {\n schemaObj = flatClone(schemaObj);\n var primaryPath = getPrimaryFieldOfPrimaryKey(schemaObj.primaryKey);\n schemaObj.properties = flatClone(schemaObj.properties);\n\n // additionalProperties is always false\n schemaObj.additionalProperties = false;\n\n // fill with key-compression-state ()\n if (!Object.prototype.hasOwnProperty.call(schemaObj, 'keyCompression')) {\n schemaObj.keyCompression = false;\n }\n\n // indexes must be array\n schemaObj.indexes = schemaObj.indexes ? schemaObj.indexes.slice(0) : [];\n\n // required must be array\n schemaObj.required = schemaObj.required ? schemaObj.required.slice(0) : [];\n\n // encrypted must be array\n schemaObj.encrypted = schemaObj.encrypted ? schemaObj.encrypted.slice(0) : [];\n\n // add _rev\n schemaObj.properties._rev = {\n type: 'string',\n minLength: 1\n };\n\n // add attachments\n schemaObj.properties._attachments = {\n type: 'object'\n };\n\n // add deleted flag\n schemaObj.properties._deleted = {\n type: 'boolean'\n };\n\n // add meta property\n schemaObj.properties._meta = RX_META_SCHEMA;\n\n /**\n * meta fields are all required\n */\n schemaObj.required = schemaObj.required ? schemaObj.required.slice(0) : [];\n schemaObj.required.push('_deleted');\n schemaObj.required.push('_rev');\n schemaObj.required.push('_meta');\n schemaObj.required.push('_attachments');\n\n // final fields are always required\n var finalFields = getFinalFields(schemaObj);\n appendToArray(schemaObj.required, finalFields);\n schemaObj.required = schemaObj.required.filter(field => !field.includes('.')).filter((elem, pos, arr) => arr.indexOf(elem) === pos); // unique;\n\n // version is 0 by default\n schemaObj.version = schemaObj.version || 0;\n var useIndexes = schemaObj.indexes.map(index => {\n var arIndex = isMaybeReadonlyArray(index) ? index.slice(0) : [index];\n /**\n * Append primary key to indexes that do not contain the primaryKey.\n * All indexes must have the primaryKey to ensure a deterministic sort order.\n */\n if (!arIndex.includes(primaryPath)) {\n arIndex.push(primaryPath);\n }\n\n // add _deleted flag to all indexes so we can query only non-deleted fields\n // in RxDB itself\n if (arIndex[0] !== '_deleted') {\n arIndex.unshift('_deleted');\n }\n return arIndex;\n });\n if (useIndexes.length === 0) {\n useIndexes.push(getDefaultIndex(primaryPath));\n }\n\n // we need this index for the getChangedDocumentsSince() method\n useIndexes.push(['_meta.lwt', primaryPath]);\n\n // also add the internalIndexes\n if (schemaObj.internalIndexes) {\n schemaObj.internalIndexes.map(idx => {\n useIndexes.push(idx);\n });\n }\n\n // make indexes unique\n var hasIndex = new Set();\n useIndexes.filter(index => {\n var indexStr = index.join(',');\n if (hasIndex.has(indexStr)) {\n return false;\n } else {\n hasIndex.add(indexStr);\n return true;\n }\n });\n schemaObj.indexes = useIndexes;\n return schemaObj;\n}\nexport var RX_META_SCHEMA = {\n type: 'object',\n properties: {\n /**\n * The last-write time.\n * Unix time in milliseconds.\n */\n lwt: {\n type: 'number',\n /**\n * We use 1 as minimum so that the value is never falsy.\n */\n minimum: RX_META_LWT_MINIMUM,\n maximum: 1000000000000000,\n multipleOf: 0.01\n }\n },\n /**\n * Additional properties are allowed\n * and can be used by plugins to set various flags.\n */\n additionalProperties: true,\n required: ['lwt']\n};\n\n/**\n * returns the final-fields of the schema\n * @return field-names of the final-fields\n */\nexport function getFinalFields(jsonSchema) {\n var ret = Object.keys(jsonSchema.properties).filter(key => jsonSchema.properties[key].final);\n\n // primary is also final\n var primaryPath = getPrimaryFieldOfPrimaryKey(jsonSchema.primaryKey);\n ret.push(primaryPath);\n\n // fields of composite primary are final\n if (typeof jsonSchema.primaryKey !== 'string') {\n jsonSchema.primaryKey.fields.forEach(field => ret.push(field));\n }\n return ret;\n}\n\n/**\n * fills all unset fields with default-values if set\n * @hotPath\n */\nexport function fillObjectWithDefaults(rxSchema, obj) {\n var defaultKeys = Object.keys(rxSchema.defaultValues);\n for (var i = 0; i < defaultKeys.length; ++i) {\n var key = defaultKeys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key) || typeof obj[key] === 'undefined') {\n obj[key] = rxSchema.defaultValues[key];\n }\n }\n return obj;\n}\nexport var DEFAULT_CHECKPOINT_SCHEMA = {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n },\n lwt: {\n type: 'number'\n }\n },\n required: ['id', 'lwt'],\n additionalProperties: false\n};\n//# sourceMappingURL=rx-schema-helper.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport { overwriteGetterForCaching, isMaybeReadonlyArray, deepEqual } from \"./plugins/utils/index.js\";\nimport { newRxError } from \"./rx-error.js\";\nimport { runPluginHooks } from \"./hooks.js\";\nimport { fillWithDefaultSettings, getComposedPrimaryKeyOfDocumentData, getFinalFields, getPrimaryFieldOfPrimaryKey, getSchemaByObjectPath, normalizeRxJsonSchema } from \"./rx-schema-helper.js\";\nimport { overwritable } from \"./overwritable.js\";\nexport var RxSchema = /*#__PURE__*/function () {\n function RxSchema(jsonSchema, hashFunction) {\n this.jsonSchema = jsonSchema;\n this.hashFunction = hashFunction;\n this.indexes = getIndexes(this.jsonSchema);\n\n // primary is always required\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.jsonSchema.primaryKey);\n this.finalFields = getFinalFields(this.jsonSchema);\n }\n var _proto = RxSchema.prototype;\n /**\n * checks if a given change on a document is allowed\n * Ensures that:\n * - final fields are not modified\n * @throws {Error} if not valid\n */\n _proto.validateChange = function validateChange(dataBefore, dataAfter) {\n this.finalFields.forEach(fieldName => {\n if (!deepEqual(dataBefore[fieldName], dataAfter[fieldName])) {\n throw newRxError('DOC9', {\n dataBefore,\n dataAfter,\n fieldName,\n schema: this.jsonSchema\n });\n }\n });\n }\n\n /**\n * creates the schema-based document-prototype,\n * see RxCollection.getDocumentPrototype()\n */;\n _proto.getDocumentPrototype = function getDocumentPrototype() {\n var proto = {};\n\n /**\n * On the top level, we know all keys\n * and therefore do not have to create a new Proxy object\n * for each document. Instead we define the getter in the prototype once.\n */\n var pathProperties = getSchemaByObjectPath(this.jsonSchema, '');\n Object.keys(pathProperties).forEach(key => {\n var fullPath = key;\n\n // getter - value\n proto.__defineGetter__(key, function () {\n if (!this.get || typeof this.get !== 'function') {\n /**\n * When an object gets added to the state of a vuejs-component,\n * it happens that this getter is called with another scope.\n * To prevent errors, we have to return undefined in this case\n */\n return undefined;\n }\n var ret = this.get(fullPath);\n return ret;\n });\n // getter - observable$\n Object.defineProperty(proto, key + '$', {\n get: function () {\n return this.get$(fullPath);\n },\n enumerable: false,\n configurable: false\n });\n // getter - reactivity$$\n Object.defineProperty(proto, key + '$$', {\n get: function () {\n return this.get$$(fullPath);\n },\n enumerable: false,\n configurable: false\n });\n // getter - populate_\n Object.defineProperty(proto, key + '_', {\n get: function () {\n return this.populate(fullPath);\n },\n enumerable: false,\n configurable: false\n });\n });\n overwriteGetterForCaching(this, 'getDocumentPrototype', () => proto);\n return proto;\n };\n _proto.getPrimaryOfDocumentData = function getPrimaryOfDocumentData(documentData) {\n return getComposedPrimaryKeyOfDocumentData(this.jsonSchema, documentData);\n };\n _createClass(RxSchema, [{\n key: \"version\",\n get: function () {\n return this.jsonSchema.version;\n }\n }, {\n key: \"defaultValues\",\n get: function () {\n var values = {};\n Object.entries(this.jsonSchema.properties).filter(([, v]) => Object.prototype.hasOwnProperty.call(v, 'default')).forEach(([k, v]) => values[k] = v.default);\n return overwriteGetterForCaching(this, 'defaultValues', values);\n }\n\n /**\n * @overrides itself on the first call\n *\n * TODO this should be a pure function that\n * caches the hash in a WeakMap.\n */\n }, {\n key: \"hash\",\n get: function () {\n return overwriteGetterForCaching(this, 'hash', this.hashFunction(JSON.stringify(this.jsonSchema)));\n }\n }]);\n return RxSchema;\n}();\nexport function getIndexes(jsonSchema) {\n return (jsonSchema.indexes || []).map(index => isMaybeReadonlyArray(index) ? index : [index]);\n}\n\n/**\n * array with previous version-numbers\n */\nexport function getPreviousVersions(schema) {\n var version = schema.version ? schema.version : 0;\n var c = 0;\n return new Array(version).fill(0).map(() => c++);\n}\nexport function createRxSchema(jsonSchema, hashFunction, runPreCreateHooks = true) {\n if (runPreCreateHooks) {\n runPluginHooks('preCreateRxSchema', jsonSchema);\n }\n var useJsonSchema = fillWithDefaultSettings(jsonSchema);\n useJsonSchema = normalizeRxJsonSchema(useJsonSchema);\n overwritable.deepFreezeWhenDevMode(useJsonSchema);\n var schema = new RxSchema(useJsonSchema, hashFunction);\n runPluginHooks('createRxSchema', schema);\n return schema;\n}\nexport function isRxSchema(obj) {\n return obj instanceof RxSchema;\n}\n\n/**\n * Used as helper function the generate the document type out of the schema via typescript.\n * @link https://github.com/pubkey/rxdb/discussions/3467\n */\nexport function toTypedRxJsonSchema(schema) {\n return schema;\n}\n//# sourceMappingURL=rx-schema.js.map","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n//# sourceMappingURL=catchError.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { merge } from './merge';\nexport function mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=mergeWith.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\nexport function retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n//# sourceMappingURL=retry.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b, _c;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n//# sourceMappingURL=shareReplay.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","/**\n * RxChangeEvents a emitted when something in the database changes\n * they can be grabbed by the observables of database, collection and document\n */\n\nimport { overwritable } from \"./overwritable.js\";\nimport { appendToArray } from \"./plugins/utils/index.js\";\nexport function getDocumentDataOfRxChangeEvent(rxChangeEvent) {\n if (rxChangeEvent.documentData) {\n return rxChangeEvent.documentData;\n } else {\n return rxChangeEvent.previousDocumentData;\n }\n}\n\n/**\n * Might return null which means an\n * already deleted document got modified but still is deleted.\n * These kind of events are not relevant for the event-reduce algorithm\n * and must be filtered out.\n */\nexport function rxChangeEventToEventReduceChangeEvent(rxChangeEvent) {\n switch (rxChangeEvent.operation) {\n case 'INSERT':\n return {\n operation: rxChangeEvent.operation,\n id: rxChangeEvent.documentId,\n doc: rxChangeEvent.documentData,\n previous: null\n };\n case 'UPDATE':\n return {\n operation: rxChangeEvent.operation,\n id: rxChangeEvent.documentId,\n doc: overwritable.deepFreezeWhenDevMode(rxChangeEvent.documentData),\n previous: rxChangeEvent.previousDocumentData ? rxChangeEvent.previousDocumentData : 'UNKNOWN'\n };\n case 'DELETE':\n return {\n operation: rxChangeEvent.operation,\n id: rxChangeEvent.documentId,\n doc: null,\n previous: rxChangeEvent.previousDocumentData\n };\n }\n}\n\n/**\n * Flattens the given events into a single array of events.\n * Used mostly in tests.\n */\nexport function flattenEvents(input) {\n var output = [];\n if (Array.isArray(input)) {\n input.forEach(inputItem => {\n var add = flattenEvents(inputItem);\n appendToArray(output, add);\n });\n } else {\n if (input.id && input.events) {\n // is bulk\n input.events.forEach(ev => output.push(ev));\n } else {\n output.push(input);\n }\n }\n var usedIds = new Set();\n var nonDuplicate = [];\n function getEventId(ev) {\n return [ev.documentId, ev.documentData ? ev.documentData._rev : '', ev.previousDocumentData ? ev.previousDocumentData._rev : ''].join('|');\n }\n output.forEach(ev => {\n var eventId = getEventId(ev);\n if (!usedIds.has(eventId)) {\n usedIds.add(eventId);\n nonDuplicate.push(ev);\n }\n });\n return nonDuplicate;\n}\n//# sourceMappingURL=rx-change-event.js.map","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n//# sourceMappingURL=isObservable.js.map","import { EmptyError } from './util/EmptyError';\nexport function lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n var _value;\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n//# sourceMappingURL=lastValueFrom.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","export function lastOfArray(ar) {\n return ar[ar.length - 1];\n}\n/**\n * @link https://stackoverflow.com/a/5915122\n */\nexport function randomOfArray(items) {\n return items[Math.floor(Math.random() * items.length)];\n}\nexport function shuffleArray(arr) {\n return arr.slice().sort(() => (Math.random() - 0.5));\n}\n/**\n * normalizes sort-field\n * in: '-age'\n * out: 'age'\n */\nexport function normalizeSortField(field) {\n if (field.startsWith('-')) {\n return field.substr(1);\n }\n else {\n return field;\n }\n}\nexport function getSortFieldsOfQuery(query) {\n if (!query.sort) {\n // if no sort-order is set, use the primary key\n return ['_id'];\n }\n return query.sort.map(maybeArray => {\n if (Array.isArray(maybeArray)) {\n return maybeArray[0].map((field) => normalizeSortField(field));\n }\n else {\n return normalizeSortField(maybeArray);\n }\n });\n}\n/**\n * @link https://stackoverflow.com/a/1431113\n */\nexport function replaceCharAt(str, index, replacement) {\n return str.substr(0, index) + replacement + str.substr(index + replacement.length);\n}\nexport function mapToObject(map) {\n const ret = {};\n map.forEach((value, key) => {\n ret[key] = value;\n });\n return ret;\n}\nexport function objectToMap(object) {\n const ret = new Map();\n Object.entries(object).forEach(([k, v]) => {\n ret.set(k, v);\n });\n return ret;\n}\nexport function cloneMap(map) {\n const ret = new Map();\n map.forEach((value, key) => {\n ret[key] = value;\n });\n return ret;\n}\n/**\n * does a flat copy on the objects,\n * is about 3 times faster then using deepClone\n * @link https://jsperf.com/object-rest-spread-vs-clone/2\n */\nexport function flatClone(obj) {\n return Object.assign({}, obj);\n}\nexport function ensureNotFalsy(obj) {\n if (!obj) {\n throw new Error('ensureNotFalsy() is falsy');\n }\n return obj;\n}\nexport function mergeSets(sets) {\n let ret = new Set();\n sets.forEach(set => {\n ret = new Set([...ret, ...set]);\n });\n return ret;\n}\n/**\n * @link https://stackoverflow.com/a/12830454/3443137\n */\nexport function roundToTwoDecimals(num) {\n return parseFloat(num.toFixed(2));\n}\nexport function isObject(value) {\n const type = typeof value;\n return value !== null && (type === 'object' || type === 'function');\n}\nexport function getProperty(object, path, value) {\n if (Array.isArray(path)) {\n path = path.join('.');\n }\n if (!isObject(object) || typeof path !== 'string') {\n return value === undefined ? object : value;\n }\n const pathArray = path.split('.');\n if (pathArray.length === 0) {\n return value;\n }\n for (let index = 0; index < pathArray.length; index++) {\n const key = pathArray[index];\n if (isStringIndex(object, key)) {\n object = index === pathArray.length - 1 ? undefined : null;\n }\n else {\n object = object[key];\n }\n if (object === undefined || object === null) {\n // `object` is either `undefined` or `null` so we want to stop the loop, and\n // if this is not the last bit of the path, and\n // if it didn't return `undefined`\n // it would return `null` if `object` is `null`\n // but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n if (index !== pathArray.length - 1) {\n return value;\n }\n break;\n }\n }\n return object === undefined ? value : object;\n}\nfunction isStringIndex(object, key) {\n if (typeof key !== 'number' && Array.isArray(object)) {\n const index = Number.parseInt(key, 10);\n return Number.isInteger(index) && object[index] === object[key];\n }\n return false;\n}\n//# sourceMappingURL=util.js.map","import { getProperty, lastOfArray } from '../util.js';\nexport const hasLimit = (input) => {\n return !!input.queryParams.limit;\n};\nexport const isFindOne = (input) => {\n return input.queryParams.limit === 1;\n};\nexport const hasSkip = (input) => {\n if (input.queryParams.skip && input.queryParams.skip > 0) {\n return true;\n }\n else {\n return false;\n }\n};\nexport const isDelete = (input) => {\n return input.changeEvent.operation === 'DELETE';\n};\nexport const isInsert = (input) => {\n return input.changeEvent.operation === 'INSERT';\n};\nexport const isUpdate = (input) => {\n return input.changeEvent.operation === 'UPDATE';\n};\nexport const wasLimitReached = (input) => {\n return hasLimit(input) && input.previousResults.length >= input.queryParams.limit;\n};\nexport const sortParamsChanged = (input) => {\n const sortFields = input.queryParams.sortFields;\n const prev = input.changeEvent.previous;\n const doc = input.changeEvent.doc;\n if (!doc) {\n return false;\n }\n if (!prev) {\n return true;\n }\n for (let i = 0; i < sortFields.length; i++) {\n const field = sortFields[i];\n const beforeData = getProperty(prev, field);\n const afterData = getProperty(doc, field);\n if (beforeData !== afterData) {\n return true;\n }\n }\n return false;\n};\nexport const wasInResult = (input) => {\n const id = input.changeEvent.id;\n if (input.keyDocumentMap) {\n const has = input.keyDocumentMap.has(id);\n return has;\n }\n else {\n const primary = input.queryParams.primaryKey;\n const results = input.previousResults;\n for (let i = 0; i < results.length; i++) {\n const item = results[i];\n if (item[primary] === id) {\n return true;\n }\n }\n return false;\n }\n};\nexport const wasFirst = (input) => {\n const first = input.previousResults[0];\n if (first && first[input.queryParams.primaryKey] === input.changeEvent.id) {\n return true;\n }\n else {\n return false;\n }\n};\nexport const wasLast = (input) => {\n const last = lastOfArray(input.previousResults);\n if (last && last[input.queryParams.primaryKey] === input.changeEvent.id) {\n return true;\n }\n else {\n return false;\n }\n};\nexport const wasSortedBeforeFirst = (input) => {\n const prev = input.changeEvent.previous;\n if (!prev) {\n return false;\n }\n const first = input.previousResults[0];\n if (!first) {\n return false;\n }\n /**\n * If the changed document is the same as the first,\n * we cannot sort-compare them, because it might end in a non-deterministic\n * sort order. Because both document could be equal.\n * So instead we have to return true.\n */\n if (first[input.queryParams.primaryKey] === input.changeEvent.id) {\n return true;\n }\n const comp = input.queryParams.sortComparator(prev, first);\n return comp < 0;\n};\nexport const wasSortedAfterLast = (input) => {\n const prev = input.changeEvent.previous;\n if (!prev) {\n return false;\n }\n const last = lastOfArray(input.previousResults);\n if (!last) {\n return false;\n }\n if (last[input.queryParams.primaryKey] === input.changeEvent.id) {\n return true;\n }\n const comp = input.queryParams.sortComparator(prev, last);\n return comp > 0;\n};\nexport const isSortedBeforeFirst = (input) => {\n const doc = input.changeEvent.doc;\n if (!doc) {\n return false;\n }\n const first = input.previousResults[0];\n if (!first) {\n return false;\n }\n if (first[input.queryParams.primaryKey] === input.changeEvent.id) {\n return true;\n }\n const comp = input.queryParams.sortComparator(doc, first);\n return comp < 0;\n};\nexport const isSortedAfterLast = (input) => {\n const doc = input.changeEvent.doc;\n if (!doc) {\n return false;\n }\n const last = lastOfArray(input.previousResults);\n if (!last) {\n return false;\n }\n if (last[input.queryParams.primaryKey] === input.changeEvent.id) {\n return true;\n }\n const comp = input.queryParams.sortComparator(doc, last);\n return comp > 0;\n};\nexport const wasMatching = (input) => {\n const prev = input.changeEvent.previous;\n if (!prev) {\n return false;\n }\n return input.queryParams.queryMatcher(prev);\n};\nexport const doesMatchNow = (input) => {\n const doc = input.changeEvent.doc;\n if (!doc) {\n return false;\n }\n const ret = input.queryParams.queryMatcher(doc);\n return ret;\n};\nexport const wasResultsEmpty = (input) => {\n return input.previousResults.length === 0;\n};\n//# sourceMappingURL=state-resolver.js.map","import { hasLimit, isFindOne, hasSkip, wasResultsEmpty, isDelete, isInsert, isUpdate, wasLimitReached, sortParamsChanged, wasInResult, wasFirst, wasLast, wasSortedBeforeFirst, wasSortedAfterLast, isSortedBeforeFirst, isSortedAfterLast, wasMatching, doesMatchNow } from './state-resolver.js';\nexport * from './state-resolver.js';\n/**\n * all states ordered by performance-cost\n * cheapest first\n * TODO run tests on which is really the fastest\n */\nexport const orderedStateList = [\n 'isInsert',\n 'isUpdate',\n 'isDelete',\n 'hasLimit',\n 'isFindOne',\n 'hasSkip',\n 'wasResultsEmpty',\n 'wasLimitReached',\n 'wasFirst',\n 'wasLast',\n 'sortParamsChanged',\n 'wasInResult',\n 'wasSortedBeforeFirst',\n 'wasSortedAfterLast',\n 'isSortedBeforeFirst',\n 'isSortedAfterLast',\n 'wasMatching',\n 'doesMatchNow'\n];\nexport const stateResolveFunctions = {\n isInsert,\n isUpdate,\n isDelete,\n hasLimit,\n isFindOne,\n hasSkip,\n wasResultsEmpty,\n wasLimitReached,\n wasFirst,\n wasLast,\n sortParamsChanged,\n wasInResult,\n wasSortedBeforeFirst,\n wasSortedAfterLast,\n isSortedBeforeFirst,\n isSortedAfterLast,\n wasMatching,\n doesMatchNow\n};\nexport const stateResolveFunctionByIndex = {\n 0: isInsert,\n 1: isUpdate,\n 2: isDelete,\n 3: hasLimit,\n 4: isFindOne,\n 5: hasSkip,\n 6: wasResultsEmpty,\n 7: wasLimitReached,\n 8: wasFirst,\n 9: wasLast,\n 10: sortParamsChanged,\n 11: wasInResult,\n 12: wasSortedBeforeFirst,\n 13: wasSortedAfterLast,\n 14: isSortedBeforeFirst,\n 15: isSortedAfterLast,\n 16: wasMatching,\n 17: doesMatchNow\n};\nexport function resolveState(stateName, input) {\n const fn = stateResolveFunctions[stateName];\n if (!fn) {\n throw new Error('resolveState() has no function for ' + stateName);\n }\n return fn(input);\n}\nexport function getStateSet(input) {\n let set = '';\n for (let i = 0; i < orderedStateList.length; i++) {\n const name = orderedStateList[i];\n const value = resolveState(name, input);\n const add = value ? '1' : '0';\n set += add;\n }\n return set;\n}\nexport function logStateSet(stateSet) {\n orderedStateList.forEach((state, index) => {\n console.log('state: ' + state + ' : ' + stateSet[index]);\n });\n}\n//# sourceMappingURL=index.js.map","/**\n * copied and adapted from npm 'binary-search-insert'\n * @link https://www.npmjs.com/package/binary-search-insert\n */\nexport function pushAtSortPosition(array, item, compareFunction, low) {\n var length = array.length;\n var high = length - 1;\n var mid = 0;\n\n /**\n * Optimization shortcut.\n */\n if (length === 0) {\n array.push(item);\n return 0;\n }\n\n /**\n * So we do not have to get the ret[mid] doc again\n * at the last we store it here.\n */\n var lastMidDoc;\n while (low <= high) {\n // https://github.com/darkskyapp/binary-search\n // http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html\n mid = low + (high - low >> 1);\n lastMidDoc = array[mid];\n if (compareFunction(lastMidDoc, item) <= 0.0) {\n // searching too low\n low = mid + 1;\n } else {\n // searching too high\n high = mid - 1;\n }\n }\n if (compareFunction(lastMidDoc, item) <= 0.0) {\n mid++;\n }\n\n /**\n * Insert at correct position\n */\n array.splice(mid, 0, item);\n return mid;\n}","import { pushAtSortPosition } from 'array-push-at-sort-position';\nexport const doNothing = (_input) => { };\nexport const insertFirst = (input) => {\n input.previousResults.unshift(input.changeEvent.doc);\n if (input.keyDocumentMap) {\n input.keyDocumentMap.set(input.changeEvent.id, input.changeEvent.doc);\n }\n};\nexport const insertLast = (input) => {\n input.previousResults.push(input.changeEvent.doc);\n if (input.keyDocumentMap) {\n input.keyDocumentMap.set(input.changeEvent.id, input.changeEvent.doc);\n }\n};\nexport const removeFirstItem = (input) => {\n const first = input.previousResults.shift();\n if (input.keyDocumentMap && first) {\n input.keyDocumentMap.delete(first[input.queryParams.primaryKey]);\n }\n};\nexport const removeLastItem = (input) => {\n const last = input.previousResults.pop();\n if (input.keyDocumentMap && last) {\n input.keyDocumentMap.delete(last[input.queryParams.primaryKey]);\n }\n};\nexport const removeFirstInsertLast = (input) => {\n removeFirstItem(input);\n insertLast(input);\n};\nexport const removeLastInsertFirst = (input) => {\n removeLastItem(input);\n insertFirst(input);\n};\nexport const removeFirstInsertFirst = (input) => {\n removeFirstItem(input);\n insertFirst(input);\n};\nexport const removeLastInsertLast = (input) => {\n removeLastItem(input);\n insertLast(input);\n};\nexport const removeExisting = (input) => {\n if (input.keyDocumentMap) {\n input.keyDocumentMap.delete(input.changeEvent.id);\n }\n // find index of document\n const primary = input.queryParams.primaryKey;\n const results = input.previousResults;\n for (let i = 0; i < results.length; i++) {\n const item = results[i];\n // remove\n if (item[primary] === input.changeEvent.id) {\n results.splice(i, 1);\n break;\n }\n }\n};\nexport const replaceExisting = (input) => {\n // find index of document\n const doc = input.changeEvent.doc;\n const primary = input.queryParams.primaryKey;\n const results = input.previousResults;\n for (let i = 0; i < results.length; i++) {\n const item = results[i];\n // replace\n if (item[primary] === input.changeEvent.id) {\n results[i] = doc;\n if (input.keyDocumentMap) {\n input.keyDocumentMap.set(input.changeEvent.id, doc);\n }\n break;\n }\n }\n};\n/**\n * this function always returns wrong results\n * it must be later optimised out\n * otherwise there is something broken\n */\nexport const alwaysWrong = (input) => {\n const wrongHuman = {\n _id: 'wrongHuman' + new Date().getTime()\n };\n input.previousResults.length = 0; // clear array\n input.previousResults.push(wrongHuman);\n if (input.keyDocumentMap) {\n input.keyDocumentMap.clear();\n input.keyDocumentMap.set(wrongHuman._id, wrongHuman);\n }\n};\nexport const insertAtSortPosition = (input) => {\n const docId = input.changeEvent.id;\n const doc = input.changeEvent.doc;\n if (input.keyDocumentMap) {\n if (input.keyDocumentMap.has(docId)) {\n /**\n * If document is already in results,\n * we cannot add it again because it would throw on non-deterministic ordering.\n */\n return;\n }\n input.keyDocumentMap.set(docId, doc);\n }\n else {\n const isDocInResults = input.previousResults.find((d) => d[input.queryParams.primaryKey] === docId);\n /**\n * If document is already in results,\n * we cannot add it again because it would throw on non-deterministic ordering.\n */\n if (isDocInResults) {\n return;\n }\n }\n pushAtSortPosition(input.previousResults, doc, input.queryParams.sortComparator, 0);\n};\nexport const removeExistingAndInsertAtSortPosition = (input) => {\n removeExisting(input);\n insertAtSortPosition(input);\n};\nexport const runFullQueryAgain = (_input) => {\n throw new Error('Action runFullQueryAgain must be implemented by yourself');\n};\nexport const unknownAction = (_input) => {\n throw new Error('Action unknownAction should never be called');\n};\n//# sourceMappingURL=action-functions.js.map","import { doNothing, insertFirst, insertLast, removeFirstItem, removeLastItem, removeFirstInsertLast, removeLastInsertFirst, removeExisting, replaceExisting, alwaysWrong, insertAtSortPosition, removeExistingAndInsertAtSortPosition, runFullQueryAgain, unknownAction, removeFirstInsertFirst, removeLastInsertLast } from './action-functions.js';\nexport * from './action-functions.js';\n/**\n * all actions ordered by performance-cost\n * cheapest first\n * TODO run tests on which is really the fastest\n */\nexport const orderedActionList = [\n 'doNothing',\n 'insertFirst',\n 'insertLast',\n 'removeFirstItem',\n 'removeLastItem',\n 'removeFirstInsertLast',\n 'removeLastInsertFirst',\n 'removeFirstInsertFirst',\n 'removeLastInsertLast',\n 'removeExisting',\n 'replaceExisting',\n 'alwaysWrong',\n 'insertAtSortPosition',\n 'removeExistingAndInsertAtSortPosition',\n 'runFullQueryAgain',\n 'unknownAction'\n];\nexport const actionFunctions = {\n doNothing,\n insertFirst,\n insertLast,\n removeFirstItem,\n removeLastItem,\n removeFirstInsertLast,\n removeLastInsertFirst,\n removeFirstInsertFirst,\n removeLastInsertLast,\n removeExisting,\n replaceExisting,\n alwaysWrong,\n insertAtSortPosition,\n removeExistingAndInsertAtSortPosition,\n runFullQueryAgain,\n unknownAction\n};\n//# sourceMappingURL=index.js.map","/*\nlet t = 0;\nwhile (t < 10000) {\n const char = String.fromCharCode(t);\n console.log(t + ' : ' + char);\n t++;\n}\n*/\n/*\n\nTo have a really small string representation, we have to hack some stuff\nwhich makes is complicated but effective.\n\nRules for the string:\n- The string starts with a number like '23' that defines how many leaf-nodes we have\n- leaf nodes consist of two chars like 'ab'\n - the first char is the id\n - the second the value is a number you can get via String.charCodeAt()\n- Internal nodes have four chars like 'abcd'\n - the first char is the id\n - the second char is the id of the 0-branch\n - the third char is the id of the 1-branch\n - the last char is the id of the boolean-function (= level)\n- The last 3 chars of the string is the root node like 'abc'\n - it looks like the internal-node but without the id (first char)\n\n*/\n// we use this because 39 is the quotes which causes problems\nexport const CHAR_CODE_OFFSET = 40; // String.fromCharCode(33) === ')'\nexport function getCharOfLevel(level) {\n const charCode = CHAR_CODE_OFFSET + level;\n return String.fromCharCode(charCode);\n}\nexport function getNumberOfChar(char) {\n const charCode = char.charCodeAt(0);\n return charCode - CHAR_CODE_OFFSET;\n}\nexport function getCharOfValue(value) {\n const charCode = CHAR_CODE_OFFSET + value;\n return String.fromCharCode(charCode);\n}\nexport const FIRST_CHAR_CODE_FOR_ID = 97; // String.fromCharCode(97) === 'a'\nexport function getNextCharId(lastCode) {\n // jump these codes because they look strange\n if (lastCode >= 128 && lastCode <= 160) {\n lastCode = 161;\n }\n const char = String.fromCharCode(lastCode);\n return {\n char,\n nextCode: lastCode + 1\n };\n}\n//# sourceMappingURL=string-format.js.map","export function booleanStringToBoolean(str) {\n if (str === '1') {\n return true;\n }\n else {\n return false;\n }\n}\nexport function booleanToBooleanString(b) {\n if (b) {\n return '1';\n }\n else {\n return '0';\n }\n}\nexport function oppositeBoolean(input) {\n if (input === '1') {\n return '0';\n }\n else {\n return '1';\n }\n}\nexport function lastChar(str) {\n return str.slice(-1);\n}\n/**\n * @link https://stackoverflow.com/a/1349426\n */\nfunction makeid(length = 6) {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nconst nodeIdPrefix = makeid(4);\nlet lastIdGen = 0;\nexport function nextNodeId() {\n const ret = 'node_' + nodeIdPrefix + '_' + lastIdGen;\n lastIdGen++;\n return ret;\n}\n/**\n * @link https://stackoverflow.com/a/16155417\n */\nexport function decimalToPaddedBinary(decimal, padding) {\n const binary = (decimal >>> 0).toString(2);\n const padded = binary.padStart(padding, '0');\n return padded;\n}\nexport function oppositeBinary(i) {\n if (i === '1') {\n return '0';\n }\n else if (i === '0') {\n return '1';\n }\n else {\n throw new Error('non-binary given');\n }\n}\nexport function binaryToDecimal(binary) {\n return parseInt(binary, 2);\n}\nexport function minBinaryWithLength(length) {\n return new Array(length).fill(0).map(() => '0').join('');\n}\nexport function maxBinaryWithLength(length) {\n return new Array(length).fill(0).map(() => '1').join('');\n}\nexport function getNextStateSet(stateSet) {\n const decimal = binaryToDecimal(stateSet);\n const increase = decimal + 1;\n const binary = decimalToPaddedBinary(increase, stateSet.length);\n return binary;\n}\nexport function firstKeyOfMap(map) {\n const iterator1 = map.keys();\n return iterator1.next().value;\n}\n/**\n * Shuffles array in place. ES6 version\n * @link https://stackoverflow.com/a/6274381\n */\nexport function shuffleArray(a) {\n for (let i = a.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [a[i], a[j]] = [a[j], a[i]];\n }\n return a;\n}\nexport function lastOfArray(ar) {\n return ar[ar.length - 1];\n}\n/**\n * @link https://stackoverflow.com/a/6259536\n */\nexport function splitStringToChunks(str, chunkSize) {\n const chunks = [];\n for (let i = 0, charsLength = str.length; i < charsLength; i += chunkSize) {\n chunks.push(str.substring(i, i + chunkSize));\n }\n return chunks;\n}\n//# sourceMappingURL=util.js.map","import { splitStringToChunks } from '../util.js';\nimport { getNumberOfChar } from './string-format.js';\nexport function minimalStringToSimpleBdd(str) {\n const nodesById = new Map();\n // parse leaf nodes\n const leafNodeAmount = parseInt(str.charAt(0) + str.charAt(1), 10);\n const lastLeafNodeChar = (2 + leafNodeAmount * 2);\n const leafNodeChars = str.substring(2, lastLeafNodeChar);\n const leafNodeChunks = splitStringToChunks(leafNodeChars, 2);\n for (let i = 0; i < leafNodeChunks.length; i++) {\n const chunk = leafNodeChunks[i];\n const id = chunk.charAt(0);\n const value = getNumberOfChar(chunk.charAt(1));\n nodesById.set(id, value);\n }\n // parse internal nodes\n const internalNodeChars = str.substring(lastLeafNodeChar, str.length - 3);\n const internalNodeChunks = splitStringToChunks(internalNodeChars, 4);\n for (let i = 0; i < internalNodeChunks.length; i++) {\n const chunk = internalNodeChunks[i];\n const id = chunk.charAt(0);\n const idOf0Branch = chunk.charAt(1);\n const idOf1Branch = chunk.charAt(2);\n const level = getNumberOfChar(chunk.charAt(3));\n if (!nodesById.has(idOf0Branch)) {\n throw new Error('missing node with id ' + idOf0Branch);\n }\n if (!nodesById.has(idOf1Branch)) {\n throw new Error('missing node with id ' + idOf1Branch);\n }\n const node0 = nodesById.get(idOf0Branch);\n const node1 = nodesById.get(idOf1Branch);\n const node = {\n l: level, // level is first for prettier json output\n 0: node0,\n 1: node1\n };\n nodesById.set(id, node);\n }\n // parse root node\n const last3 = str.slice(-3);\n const idOf0 = last3.charAt(0);\n const idOf1 = last3.charAt(1);\n const levelOfRoot = getNumberOfChar(last3.charAt(2));\n const nodeOf0 = nodesById.get(idOf0);\n const nodeOf1 = nodesById.get(idOf1);\n const rootNode = {\n l: levelOfRoot,\n 0: nodeOf0,\n 1: nodeOf1,\n };\n return rootNode;\n}\n//# sourceMappingURL=minimal-string-to-simple-bdd.js.map","import { booleanToBooleanString } from '../util.js';\nexport function resolveWithSimpleBdd(simpleBdd, fns, input) {\n let currentNode = simpleBdd;\n let currentLevel = simpleBdd.l;\n while (true) {\n const booleanResult = fns[currentLevel](input);\n const branchKey = booleanToBooleanString(booleanResult);\n currentNode = currentNode[branchKey];\n if (typeof currentNode === 'number' || typeof currentNode === 'string') {\n return currentNode;\n }\n else {\n currentLevel = currentNode.l;\n }\n }\n}\n//# sourceMappingURL=resolve-with-simple-bdd.js.map","import { minimalStringToSimpleBdd, resolveWithSimpleBdd } from 'binary-decision-diagram';\nimport { stateResolveFunctionByIndex } from '../states/index.js';\nexport const minimalBddString = '14a1b,c+d2e5f0g/h.i4j*k-l)m(n6oeh6pnm6qen6ril6snh6tin6ubo9vce9wmh9xns9yne9zmi9{cm9|ad9}cp9~aq9ae9¡bf9¢bq9£cg9¤ck9¥cn9¦nd9§np9¨nq9©nf9ªng9«nm9¬nk9­mr9®ms9¯mt9°mj9±mk9²ml9³mn9´mc8µ³{8¶¯}8·°¤8¸³§8¹mn8º³«8»³m8¼m´4½z²4¾³w4¿zµ4À¯¶4Á°·4³º4ó¸4Äm¹4Åv¤7Æyn7ÇÀÁ7È~7É¥¤7ÊÃÄ7˨n7̺¹7Í­°7ήm7ϯ°7бm7ѳm7Ò¼m5ÓÄm5Ô¹m5Õ½°5Ö¾m5׿°5ØÇÏ5ÙÂm5ÚÊÑ5Û±m5ܺm5ÝÌÑ5ÞÕÍ2ß|2à¡u2á£Å2âÖÎ2ã¦Æ2ä©x2åªÆ2æ×Ø2ç|È2è¡¢2é£É2ꤥ2ëÙÚ2ì¦Ë2í©n2îªn2ïÛÐ2ðÜÝ2ñ¬n2òÒÓ/óan/ôbn/õcn/öÞâ/÷ßã/øàä/ùáå/úæë/ûçì/üèí/ýéî/þÍÎ/ÿÏÑ/ĀòÔ,ācn,Ăöï,ă¤ñ,Ąúð,ąêñ,ĆþÐ,ćÿÑ,Ĉac0ĉbc0Ċóõ0ċôā0Čßá0čà¤0Ďçé0ďèê0Đ÷ù0đøă0Ēûý0ēüą0ĔmÒ-ĕmĀ-ĖÞæ-ėČĎ-Ęčď-ęĂĄ-ĚĐĒ-ěđē-Ĝ²»-ĝÍÏ-ĞĆć-ğ²³-ĠĔĈ3ġĕĊ3ĢĖė3ģęĚ3ĤĢĝ(ĥĜğ(ĦģĞ(ħĠġ+Ĩĉċ+ĩĤĦ+ĪĘě+īħĨ1ĬĩĪ1ĭĬī*Įĥm*ĭĮ.';\nlet simpleBdd;\nexport function getSimpleBdd() {\n if (!simpleBdd) {\n simpleBdd = minimalStringToSimpleBdd(minimalBddString);\n }\n return simpleBdd;\n}\nexport const resolveInput = (input) => {\n return resolveWithSimpleBdd(getSimpleBdd(), stateResolveFunctionByIndex, input);\n};\n//# sourceMappingURL=bdd.generated.js.map","import { getStateSet } from './states/index.js';\nimport { actionFunctions, orderedActionList } from './actions/index.js';\nimport { resolveInput } from './bdd/bdd.generated.js';\nexport * from './states/index.js';\nexport * from './util.js';\nexport * from './actions/index.js';\nexport function calculateActionFromMap(stateSetToActionMap, input) {\n const stateSet = getStateSet(input);\n const actionName = stateSetToActionMap.get(stateSet);\n if (!actionName) {\n return {\n action: 'runFullQueryAgain',\n stateSet\n };\n }\n else {\n return {\n action: actionName,\n stateSet\n };\n }\n}\nexport function calculateActionName(input) {\n const resolvedActionId = resolveInput(input);\n return orderedActionList[resolvedActionId];\n}\nexport function calculateActionFunction(input) {\n const actionName = calculateActionName(input);\n return actionFunctions[actionName];\n}\n/**\n * for performance reasons,\n * @mutates the input\n * @returns the new results\n */\nexport function runAction(action, queryParams, changeEvent, previousResults, keyDocumentMap) {\n const fn = actionFunctions[action];\n fn({\n queryParams,\n changeEvent,\n previousResults,\n keyDocumentMap\n });\n return previousResults;\n}\n//# sourceMappingURL=index.js.map","import { countUntilNotMatching } from \"./plugins/utils/index.js\";\nimport { newRxError } from \"./rx-error.js\";\nimport { getSchemaByObjectPath } from \"./rx-schema-helper.js\";\nexport var INDEX_MAX = String.fromCharCode(65535);\n\n/**\n * Do not use -Infinity here because it would be\n * transformed to null on JSON.stringify() which can break things\n * when the query plan is send to the storage as json.\n * @link https://stackoverflow.com/a/16644751\n * Notice that for IndexedDB IDBKeyRange we have\n * to transform the value back to -Infinity\n * before we can use it in IDBKeyRange.bound.\n */\nexport var INDEX_MIN = Number.MIN_SAFE_INTEGER;\n\n/**\n * Returns the query plan which contains\n * information about how to run the query\n * and which indexes to use.\n *\n * This is used in some storage like Memory, dexie.js and IndexedDB.\n */\nexport function getQueryPlan(schema, query) {\n var selector = query.selector;\n var indexes = schema.indexes ? schema.indexes.slice(0) : [];\n if (query.index) {\n indexes = [query.index];\n }\n\n /**\n * Most storages do not support descending indexes\n * so having a 'desc' in the sorting, means we always have to re-sort the results.\n */\n var hasDescSorting = !!query.sort.find(sortField => Object.values(sortField)[0] === 'desc');\n\n /**\n * Some fields can be part of the selector while not being relevant for sorting\n * because their selector operators specify that in all cases all matching docs\n * would have the same value.\n * For example the boolean field _deleted.\n * TODO similar thing could be done for enums.\n */\n var sortIrrelevevantFields = new Set();\n Object.keys(selector).forEach(fieldName => {\n var schemaPart = getSchemaByObjectPath(schema, fieldName);\n if (schemaPart && schemaPart.type === 'boolean' && Object.prototype.hasOwnProperty.call(selector[fieldName], '$eq')) {\n sortIrrelevevantFields.add(fieldName);\n }\n });\n var optimalSortIndex = query.sort.map(sortField => Object.keys(sortField)[0]);\n var optimalSortIndexCompareString = optimalSortIndex.filter(f => !sortIrrelevevantFields.has(f)).join(',');\n var currentBestQuality = -1;\n var currentBestQueryPlan;\n\n /**\n * Calculate one query plan for each index\n * and then test which of the plans is best.\n */\n indexes.forEach(index => {\n var inclusiveEnd = true;\n var inclusiveStart = true;\n var opts = index.map(indexField => {\n var matcher = selector[indexField];\n var operators = matcher ? Object.keys(matcher) : [];\n var matcherOpts = {};\n if (!matcher || !operators.length) {\n var startKey = inclusiveStart ? INDEX_MIN : INDEX_MAX;\n matcherOpts = {\n startKey,\n endKey: inclusiveEnd ? INDEX_MAX : INDEX_MIN,\n inclusiveStart: true,\n inclusiveEnd: true\n };\n } else {\n operators.forEach(operator => {\n if (LOGICAL_OPERATORS.has(operator)) {\n var operatorValue = matcher[operator];\n var partialOpts = getMatcherQueryOpts(operator, operatorValue);\n matcherOpts = Object.assign(matcherOpts, partialOpts);\n }\n });\n }\n\n // fill missing attributes\n if (typeof matcherOpts.startKey === 'undefined') {\n matcherOpts.startKey = INDEX_MIN;\n }\n if (typeof matcherOpts.endKey === 'undefined') {\n matcherOpts.endKey = INDEX_MAX;\n }\n if (typeof matcherOpts.inclusiveStart === 'undefined') {\n matcherOpts.inclusiveStart = true;\n }\n if (typeof matcherOpts.inclusiveEnd === 'undefined') {\n matcherOpts.inclusiveEnd = true;\n }\n if (inclusiveStart && !matcherOpts.inclusiveStart) {\n inclusiveStart = false;\n }\n if (inclusiveEnd && !matcherOpts.inclusiveEnd) {\n inclusiveEnd = false;\n }\n return matcherOpts;\n });\n var startKeys = opts.map(opt => opt.startKey);\n var endKeys = opts.map(opt => opt.endKey);\n var queryPlan = {\n index,\n startKeys,\n endKeys,\n inclusiveEnd,\n inclusiveStart,\n sortSatisfiedByIndex: !hasDescSorting && optimalSortIndexCompareString === index.filter(f => !sortIrrelevevantFields.has(f)).join(','),\n selectorSatisfiedByIndex: isSelectorSatisfiedByIndex(index, query.selector, startKeys, endKeys)\n };\n var quality = rateQueryPlan(schema, query, queryPlan);\n if (quality >= currentBestQuality || query.index) {\n currentBestQuality = quality;\n currentBestQueryPlan = queryPlan;\n }\n });\n\n /**\n * In all cases and index must be found\n */\n if (!currentBestQueryPlan) {\n throw newRxError('SNH', {\n query\n });\n }\n return currentBestQueryPlan;\n}\nexport var LOGICAL_OPERATORS = new Set(['$eq', '$gt', '$gte', '$lt', '$lte']);\nexport var LOWER_BOUND_LOGICAL_OPERATORS = new Set(['$eq', '$gt', '$gte']);\nexport var UPPER_BOUND_LOGICAL_OPERATORS = new Set(['$eq', '$lt', '$lte']);\nexport function isSelectorSatisfiedByIndex(index, selector, startKeys, endKeys) {\n /**\n * Not satisfied if one or more operators are non-logical\n * operators that can never be satisfied by an index.\n */\n var selectorEntries = Object.entries(selector);\n var hasNonMatchingOperator = selectorEntries.find(([fieldName, operation]) => {\n if (!index.includes(fieldName)) {\n return true;\n }\n var hasNonLogicOperator = Object.entries(operation).find(([op, _value]) => !LOGICAL_OPERATORS.has(op));\n return hasNonLogicOperator;\n });\n if (hasNonMatchingOperator) {\n return false;\n }\n\n /**\n * Not satisfied if contains $and or $or operations.\n */\n if (selector.$and || selector.$or) {\n return false;\n }\n\n // ensure all lower bound in index\n var satisfieldLowerBound = [];\n var lowerOperatorFieldNames = new Set();\n for (var [fieldName, operation] of Object.entries(selector)) {\n if (!index.includes(fieldName)) {\n return false;\n }\n\n // If more then one logic op on the same field, we have to selector-match.\n var lowerLogicOps = Object.keys(operation).filter(key => LOWER_BOUND_LOGICAL_OPERATORS.has(key));\n if (lowerLogicOps.length > 1) {\n return false;\n }\n var hasLowerLogicOp = lowerLogicOps[0];\n if (hasLowerLogicOp) {\n lowerOperatorFieldNames.add(fieldName);\n }\n if (hasLowerLogicOp !== '$eq') {\n if (satisfieldLowerBound.length > 0) {\n return false;\n } else {\n satisfieldLowerBound.push(hasLowerLogicOp);\n }\n }\n }\n\n // ensure all upper bound in index\n var satisfieldUpperBound = [];\n var upperOperatorFieldNames = new Set();\n for (var [_fieldName, _operation] of Object.entries(selector)) {\n if (!index.includes(_fieldName)) {\n return false;\n }\n\n // If more then one logic op on the same field, we have to selector-match.\n var upperLogicOps = Object.keys(_operation).filter(key => UPPER_BOUND_LOGICAL_OPERATORS.has(key));\n if (upperLogicOps.length > 1) {\n return false;\n }\n var hasUperLogicOp = upperLogicOps[0];\n if (hasUperLogicOp) {\n upperOperatorFieldNames.add(_fieldName);\n }\n if (hasUperLogicOp !== '$eq') {\n if (satisfieldUpperBound.length > 0) {\n return false;\n } else {\n satisfieldUpperBound.push(hasUperLogicOp);\n }\n }\n }\n\n /**\n * If the index contains a non-relevant field between\n * the relevant fields, then the index is not satisfying.\n */\n var i = 0;\n for (var _fieldName2 of index) {\n for (var set of [lowerOperatorFieldNames, upperOperatorFieldNames]) {\n if (!set.has(_fieldName2) && set.size > 0) {\n return false;\n }\n set.delete(_fieldName2);\n }\n var startKey = startKeys[i];\n var endKey = endKeys[i];\n if (startKey !== endKey && lowerOperatorFieldNames.size > 0 && upperOperatorFieldNames.size > 0) {\n return false;\n }\n i++;\n }\n return true;\n}\nexport function getMatcherQueryOpts(operator, operatorValue) {\n switch (operator) {\n case '$eq':\n return {\n startKey: operatorValue,\n endKey: operatorValue,\n inclusiveEnd: true,\n inclusiveStart: true\n };\n case '$lte':\n return {\n endKey: operatorValue,\n inclusiveEnd: true\n };\n case '$gte':\n return {\n startKey: operatorValue,\n inclusiveStart: true\n };\n case '$lt':\n return {\n endKey: operatorValue,\n inclusiveEnd: false\n };\n case '$gt':\n return {\n startKey: operatorValue,\n inclusiveStart: false\n };\n default:\n throw new Error('SNH');\n }\n}\n\n/**\n * Returns a number that determines the quality of the query plan.\n * Higher number means better query plan.\n */\nexport function rateQueryPlan(schema, query, queryPlan) {\n var quality = 0;\n var addQuality = value => {\n if (value > 0) {\n quality = quality + value;\n }\n };\n var pointsPerMatchingKey = 10;\n var nonMinKeyCount = countUntilNotMatching(queryPlan.startKeys, keyValue => keyValue !== INDEX_MIN && keyValue !== INDEX_MAX);\n addQuality(nonMinKeyCount * pointsPerMatchingKey);\n var nonMaxKeyCount = countUntilNotMatching(queryPlan.startKeys, keyValue => keyValue !== INDEX_MAX && keyValue !== INDEX_MIN);\n addQuality(nonMaxKeyCount * pointsPerMatchingKey);\n var equalKeyCount = countUntilNotMatching(queryPlan.startKeys, (keyValue, idx) => {\n if (keyValue === queryPlan.endKeys[idx]) {\n return true;\n } else {\n return false;\n }\n });\n addQuality(equalKeyCount * pointsPerMatchingKey * 1.5);\n var pointsIfNoReSortMustBeDone = queryPlan.sortSatisfiedByIndex ? 5 : 0;\n addQuality(pointsIfNoReSortMustBeDone);\n return quality;\n}\n//# sourceMappingURL=query-planner.js.map","/**\n * Utility constants and functions\n */\nexport const MAX_INT = 2147483647;\nexport const MIN_INT = -2147483648;\nexport const MAX_LONG = Number.MAX_SAFE_INTEGER;\nexport const MIN_LONG = Number.MIN_SAFE_INTEGER;\n// special value to identify missing items. treated differently from undefined\nconst MISSING = Symbol(\"missing\");\nconst CYCLE_FOUND_ERROR = Object.freeze(new Error(\"mingo: cycle detected while processing object/array\"));\nconst ARRAY_PROTO = Object.getPrototypeOf([]);\nconst OBJECT_PROTO = Object.getPrototypeOf({});\nconst OBJECT_TAG = \"[object Object]\";\nconst OBJECT_TYPE_RE = /^\\[object ([a-zA-Z0-9]+)\\]$/;\nclass Null {\n}\nclass Undefined {\n}\nconst getConstructor = (v) => {\n if (v === null)\n return Null;\n if (v === undefined)\n return Undefined;\n return v.constructor;\n};\n/**\n * Uses the simple hash method as described in Effective Java.\n * @see https://stackoverflow.com/a/113600/1370481\n * @param value The value to hash\n * @returns {number}\n */\nconst DEFAULT_HASH_FUNCTION = (value) => {\n const s = stringify(value);\n let hash = 0;\n let i = s.length;\n while (i)\n hash = ((hash << 5) - hash) ^ s.charCodeAt(--i);\n return hash >>> 0;\n};\n// no array, object, or function types\nconst JS_SIMPLE_TYPES = new Set([\n \"null\",\n \"undefined\",\n \"boolean\",\n \"number\",\n \"string\",\n \"date\",\n \"regexp\"\n]);\nconst IMMUTABLE_TYPES_SET = new Set([Undefined, Null, Boolean, String, Number]);\n/** Convert simple value to string representation. */\nconst toString = (v) => v.toString(); // eslint-disable-line @typescript-eslint/no-base-to-string\n/** Convert a typed array to string representation. */\nconst typedArrayToString = (v) => `${getConstructor(v).name}[${v.toString()}]`; // eslint-disable-line @typescript-eslint/no-base-to-string\n/** Map of constructors to string converter functions */\nconst STRING_CONVERTERS = new Map([\n [Number, toString],\n [Boolean, toString],\n [RegExp, toString],\n [Function, toString],\n [Symbol, toString],\n [Date, (d) => d.toISOString()],\n [String, JSON.stringify],\n [Null, (_) => \"null\"],\n [Undefined, (_) => \"undefined\"],\n [Int8Array, typedArrayToString],\n [Uint8Array, typedArrayToString],\n [Uint8ClampedArray, typedArrayToString],\n [Int16Array, typedArrayToString],\n [Uint16Array, typedArrayToString],\n [Int32Array, typedArrayToString],\n [Uint32Array, typedArrayToString],\n [Float32Array, typedArrayToString],\n [Float64Array, typedArrayToString]\n]);\n/**\n * Some types like BigInt are not available on more exotic\n * JavaScript runtimes like ReactNative or QuickJS.\n * So we fill them in only if they exist so that it does not throw an error.\n */\nif (typeof BigInt !== \"undefined\") {\n STRING_CONVERTERS.set(BigInt, (n) => \"0x\" + n.toString(16));\n}\nif (typeof BigInt64Array !== \"undefined\") {\n STRING_CONVERTERS.set(BigInt64Array, typedArrayToString);\n}\nif (typeof BigUint64Array !== \"undefined\") {\n STRING_CONVERTERS.set(BigUint64Array, typedArrayToString);\n}\n/** MongoDB sort comparison order. https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order */\nconst SORT_ORDER_BY_TYPE = {\n null: 0,\n undefined: 0,\n number: 1,\n string: 2,\n object: 3,\n array: 4,\n boolean: 5,\n date: 6,\n regexp: 7,\n function: 8\n};\n/**\n * Compare function which adheres to MongoDB comparison order.\n *\n * @param a The first value\n * @param b The second value\n * @returns {Number}\n */\nexport const compare = (a, b) => {\n if (a === MISSING)\n a = undefined;\n if (b === MISSING)\n b = undefined;\n const [u, v] = [a, b].map(n => SORT_ORDER_BY_TYPE[getType(n).toLowerCase()]);\n if (u !== v)\n return u - v;\n // number | string | date\n if (u === 1 || u === 2 || u === 6) {\n if (a < b)\n return -1;\n if (a > b)\n return 1;\n return 0;\n }\n // check for equivalence equality\n if (isEqual(a, b))\n return 0;\n if (a < b)\n return -1;\n if (a > b)\n return 1;\n // if we get here we are comparing a type that does not make sense.\n return 0;\n};\nexport function assert(condition, message) {\n if (!condition)\n throw new Error(message);\n}\nconst isTypedArray = (v) => {\n const proto = Object.getPrototypeOf(getConstructor(v));\n return proto && proto.name === \"TypedArray\";\n};\n/**\n * Deep clone an object. Value types and immutable objects are returned as is.\n */\nexport const cloneDeep = (obj) => {\n if (IMMUTABLE_TYPES_SET.has(getConstructor(obj)))\n return obj;\n const cycle = new Set();\n const clone = (val) => {\n if (cycle.has(val))\n throw CYCLE_FOUND_ERROR;\n const ctor = getConstructor(val);\n if (IMMUTABLE_TYPES_SET.has(ctor))\n return val;\n try {\n // arrays\n if (isArray(val)) {\n cycle.add(val);\n return val.map(clone);\n }\n // object literals\n if (isObject(val)) {\n cycle.add(val);\n const res = {};\n for (const k in val)\n res[k] = clone(val[k]);\n return res;\n }\n }\n finally {\n cycle.delete(val);\n }\n // dates, regex, typed arrays\n if (ctor === Date || ctor === RegExp || isTypedArray(val)) {\n return new ctor(val);\n }\n return val;\n };\n return clone(obj);\n};\n/**\n * Returns the name of type as specified in the tag returned by a call to Object.prototype.toString\n * @param v A value\n */\nexport const getType = (v) => OBJECT_TYPE_RE.exec(Object.prototype.toString.call(v))[1];\nexport const isBoolean = (v) => typeof v === \"boolean\";\nexport const isString = (v) => typeof v === \"string\";\nexport const isSymbol = (v) => typeof v === \"symbol\";\nexport const isNumber = (v) => !isNaN(v) && typeof v === \"number\";\nexport const isBigInt = (v) => !isNaN(v) && typeof v === \"bigint\";\nexport const isNotNaN = (v) => !(isNaN(v) && typeof v === \"number\");\nexport const isArray = Array.isArray;\nexport const isObject = (v) => {\n if (!v)\n return false;\n const proto = Object.getPrototypeOf(v);\n return ((proto === OBJECT_PROTO || proto === null) &&\n OBJECT_TAG === Object.prototype.toString.call(v));\n};\n// objects, arrays, functions, date, custom object\nexport const isObjectLike = (v) => v === Object(v);\nexport const isDate = (v) => v instanceof Date;\nexport const isRegExp = (v) => v instanceof RegExp;\nexport const isFunction = (v) => typeof v === \"function\";\nexport const isNil = (v) => v === null || v === undefined;\nexport const inArray = (arr, item) => arr.includes(item);\nexport const notInArray = (arr, item) => !inArray(arr, item);\nexport const truthy = (arg, strict = true) => !!arg || (strict && arg === \"\");\nexport const isEmpty = (x) => isNil(x) ||\n (isString(x) && !x) ||\n (x instanceof Array && x.length === 0) ||\n (isObject(x) && Object.keys(x).length === 0);\nexport const isMissing = (v) => v === MISSING;\n/** ensure a value is an array or wrapped within one. */\nexport const ensureArray = (x) => x instanceof Array ? x : [x];\nexport const has = (obj, prop) => !!obj && Object.prototype.hasOwnProperty.call(obj, prop);\nconst mergeable = (left, right) => (isObject(left) && isObject(right)) || (isArray(left) && isArray(right));\n/**\n * Deep merge objects or arrays.\n * When the inputs have unmergeable types, the right hand value is returned.\n * If inputs are arrays and options.flatten is set, elements in the same position are merged together. Remaining elements are appended to the target object.\n * If options.flatten is false, the right hand value is just appended to the left-hand value.\n * @param target {Object|Array} the target to merge into\n * @param obj {Object|Array} the source object\n */\nexport function merge(target, obj, options) {\n // default options\n options = options || { flatten: false };\n // take care of missing inputs\n if (isMissing(target) || isNil(target))\n return obj;\n if (isMissing(obj) || isNil(obj))\n return target;\n // fail only on initial input.\n if (!mergeable(target, obj)) {\n if (options.skipValidation)\n return obj || target;\n throw Error(\"mismatched types. must both be array or object\");\n }\n // skip validation after initial input.\n options.skipValidation = true;\n if (isArray(target)) {\n const result = target;\n const input = obj;\n if (options.flatten) {\n let i = 0;\n let j = 0;\n while (i < result.length && j < input.length) {\n result[i] = merge(result[i++], input[j++], options);\n }\n while (j < input.length) {\n result.push(obj[j++]);\n }\n }\n else {\n into(result, input);\n }\n }\n else {\n for (const k in obj) {\n target[k] = merge(target[k], obj[k], options);\n }\n }\n return target;\n}\nfunction buildHashIndex(arr, hashFunction = DEFAULT_HASH_FUNCTION) {\n const map = new Map();\n arr.forEach((o, i) => {\n const h = hashCode(o, hashFunction);\n if (map.has(h)) {\n if (!map.get(h).some(j => isEqual(arr[j], o))) {\n map.get(h).push(i);\n }\n }\n else {\n map.set(h, [i]);\n }\n });\n return map;\n}\n/**\n * Returns the intersection of multiple arrays.\n *\n * @param {Array} input An array of arrays from which to find intersection.\n * @param {Function} hashFunction Custom function to hash values, default the hashCode method\n * @return {Array} Array of intersecting values.\n */\nexport function intersection(input, hashFunction = DEFAULT_HASH_FUNCTION) {\n // if any array is empty, there is no intersection\n if (input.some(arr => arr.length == 0))\n return [];\n if (input.length === 1)\n return Array.from(input);\n // sort input arrays by to get smallest array\n // const sorted = sortBy(input, (a: RawArray) => a.length) as RawArray[];\n const sortedIndex = sortBy(input.map((a, i) => [i, a.length]), (a) => a[1]);\n // get the smallest\n const smallest = input[sortedIndex[0][0]];\n // get hash index of smallest array\n const map = buildHashIndex(smallest, hashFunction);\n // hashIndex for remaining arrays.\n const rmap = new Map();\n // final intersection results and index of first occurrence.\n const results = new Array();\n map.forEach((v, k) => {\n const lhs = v.map(j => smallest[j]);\n const res = lhs.map(_ => 0);\n // used to track first occurence of value in order of the original input array.\n const stable = lhs.map(_ => [sortedIndex[0][0], 0]);\n let found = false;\n for (let i = 1; i < input.length; i++) {\n const [currIndex, _] = sortedIndex[i];\n const arr = input[currIndex];\n if (!rmap.has(i))\n rmap.set(i, buildHashIndex(arr));\n // we found a match. let's confirm.\n if (rmap.get(i).has(k)) {\n const rhs = rmap\n .get(i)\n .get(k)\n .map(j => arr[j]);\n // confirm the intersection with an equivalence check.\n found = lhs\n .map((s, n) => rhs.some((t, m) => {\n // we expect only one to match here since these are just collisions.\n const p = res[n];\n if (isEqual(s, t)) {\n res[n]++;\n // track position of value ordering for stability.\n if (currIndex < stable[n][0]) {\n stable[n] = [currIndex, rmap.get(i).get(k)[m]];\n }\n }\n return p < res[n];\n }))\n .some(Boolean);\n }\n // found nothing, so exclude value. this was just a hash collision.\n if (!found)\n return;\n }\n // extract value into result if we found an intersection.\n // we find an intersection if the frequency counter matches the count of the remaining arrays.\n if (found) {\n into(results, res\n .map((n, i) => {\n return n === input.length - 1 ? [lhs[i], stable[i]] : MISSING;\n })\n .filter(n => n !== MISSING));\n }\n });\n return results\n .sort((a, b) => {\n const [_i, [u, m]] = a;\n const [_j, [v, n]] = b;\n const r = compare(u, v);\n if (r !== 0)\n return r;\n return compare(m, n);\n })\n .map(v => v[0]);\n}\n/**\n * Flatten the array\n *\n * @param {Array} xs The array to flatten\n * @param {Number} depth The number of nested lists to iterate\n */\nexport function flatten(xs, depth = 0) {\n const arr = new Array();\n function flatten2(ys, n) {\n for (let i = 0, len = ys.length; i < len; i++) {\n if (isArray(ys[i]) && (n > 0 || n < 0)) {\n flatten2(ys[i], Math.max(-1, n - 1));\n }\n else {\n arr.push(ys[i]);\n }\n }\n }\n flatten2(xs, depth);\n return arr;\n}\n/** Returns all members of the value in an object literal. */\nconst getMembersOf = (value) => {\n let [proto, names] = [\n Object.getPrototypeOf(value),\n Object.getOwnPropertyNames(value)\n ];\n // save effective prototype\n let activeProto = proto;\n // traverse the prototype hierarchy until we get property names or hit the bottom prototype.\n while (!names.length && proto !== OBJECT_PROTO && proto !== ARRAY_PROTO) {\n activeProto = proto;\n names = Object.getOwnPropertyNames(proto);\n proto = Object.getPrototypeOf(proto);\n }\n const o = {};\n names.forEach(k => (o[k] = value[k]));\n return [o, activeProto];\n};\n/**\n * Determine whether two values are the same or strictly equivalent.\n * Checking whether values are the same only applies to built in objects.\n * For user-defined objects this checks for only referential equality so\n * two different instances with the same values are not equal.\n *\n * @param {*} a The first value\n * @param {*} b The second value\n * @return {Boolean} Result of comparison\n */\nexport function isEqual(a, b) {\n const args = [[a, b]];\n while (args.length > 0) {\n [a, b] = args.pop();\n // strictly equal must be equal. matches referentially equal values.\n if (a === b)\n continue;\n // unequal types and functions (unless referentially equivalent) cannot be equal.\n const ctor = getConstructor(a);\n if (ctor !== getConstructor(b) || isFunction(a))\n return false;\n // string convertable types\n if (STRING_CONVERTERS.has(ctor)) {\n const str = STRING_CONVERTERS.get(ctor);\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (str(a) !== str(b))\n return false;\n // values are equal, so move next\n continue;\n }\n // handle array and object types\n if (ctor === Array || ctor === Object) {\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n if (ka.length !== kb.length)\n return false;\n if (new Set(ka.concat(kb)).size != ka.length)\n return false;\n for (const k of ka)\n args.push([a[k], b[k]]);\n // move next\n continue;\n }\n // user-defined type detected.\n // we don't try to compare user-defined types (even though we could...shhhh).\n return false;\n }\n // nothing left to compare\n return !args.length;\n}\n/**\n * Return a new unique version of the collection\n * @param {Array} input The input collection\n * @return {Array}\n */\nexport function unique(input, hashFunction = DEFAULT_HASH_FUNCTION) {\n const result = input.map(_ => MISSING);\n buildHashIndex(input, hashFunction).forEach((v, _) => {\n v.forEach(i => (result[i] = input[i]));\n });\n return result.filter(v => v !== MISSING);\n}\n/**\n * Encode value to string using a simple non-colliding stable scheme.\n * Handles user-defined types by processing keys on first non-empty prototype.\n * If a user-defined type provides a \"toJSON\" function, it is used.\n *\n * @param value The value to convert to a string representation.\n * @returns {String}\n */\nexport function stringify(value) {\n const cycle = new Set();\n // stringify with cycle check\n const str = (v) => {\n const ctor = getConstructor(v);\n // string convertable types\n if (STRING_CONVERTERS.has(ctor)) {\n return STRING_CONVERTERS.get(ctor)(v);\n }\n const tag = ctor === Object ? \"\" : ctor.name;\n // handle JSONable objects.\n if (isFunction(v[\"toJSON\"])) {\n return `${tag}(${JSON.stringify(v)})`;\n }\n // handle cycles\n if (cycle.has(v))\n throw CYCLE_FOUND_ERROR;\n cycle.add(v);\n try {\n // handle array\n if (ctor === Array) {\n return \"[\" + v.map(str).join(\",\") + \"]\";\n }\n // handle user-defined object\n if (ctor !== Object) {\n // handle user-defined types or object literals.\n const [members, _] = getMembersOf(v);\n // custom type derived from array.\n if (isArray(v)) {\n // include other members as part of array elements.\n return `${tag}${str([...v, members])}`;\n }\n // get members as literal\n v = members;\n }\n const objKeys = Object.keys(v);\n objKeys.sort();\n return (`${tag}{` +\n objKeys.map(k => `${k}:${str(v[k])}`).join(\",\") +\n \"}\");\n }\n finally {\n cycle.delete(v);\n }\n };\n // convert to string\n return str(value);\n}\n/**\n * Generate hash code\n * This selected function is the result of benchmarking various hash functions.\n * This version performs well and can hash 10^6 documents in ~3s with on average 100 collisions.\n *\n * @param value\n * @returns {number|null}\n */\nexport function hashCode(value, hashFunction) {\n hashFunction = hashFunction || DEFAULT_HASH_FUNCTION;\n if (isNil(value))\n return null;\n return hashFunction(value).toString();\n}\n/**\n * Returns a (stably) sorted copy of list, ranked in ascending order by the results of running each value through iteratee\n *\n * This implementation treats null/undefined sort keys as less than every other type\n *\n * @param {Array} collection\n * @param {Function} keyFn The sort key function used to resolve sort keys\n * @param {Function} comparator The comparator function to use for comparing keys. Defaults to standard comparison via `compare(...)`\n * @return {Array} Returns a new sorted array by the given key and comparator function\n */\nexport function sortBy(collection, keyFn, comparator = compare) {\n if (isEmpty(collection))\n return collection;\n const sorted = new Array();\n const result = new Array();\n for (let i = 0; i < collection.length; i++) {\n const obj = collection[i];\n const key = keyFn(obj, i);\n if (isNil(key)) {\n result.push(obj);\n }\n else {\n sorted.push([key, obj]);\n }\n }\n // use native array sorting but enforce stableness\n sorted.sort((a, b) => comparator(a[0], b[0]));\n return into(result, sorted.map((o) => o[1]));\n}\n/**\n * Groups the collection into sets by the returned key\n *\n * @param collection\n * @param keyFn {Function} to compute the group key of an item in the collection\n * @returns {GroupByOutput}\n */\nexport function groupBy(collection, keyFn, hashFunction = DEFAULT_HASH_FUNCTION) {\n if (collection.length < 1)\n return new Map();\n // map of hash to collided values\n const lookup = new Map();\n // map of raw key values to objects.\n const result = new Map();\n for (let i = 0; i < collection.length; i++) {\n const obj = collection[i];\n const key = keyFn(obj, i);\n const hash = hashCode(key, hashFunction);\n if (hash === null) {\n if (result.has(null)) {\n result.get(null).push(obj);\n }\n else {\n result.set(null, [obj]);\n }\n }\n else {\n // find if we can match a hash for which the value is equivalent.\n // this is used to deal with collisions.\n const existingKey = lookup.has(hash)\n ? lookup.get(hash).find(k => isEqual(k, key))\n : null;\n // collision detected or first time seeing key\n if (isNil(existingKey)) {\n // collision detected or first entry so we create a new group.\n result.set(key, [obj]);\n // upload the lookup with the collided key\n if (lookup.has(hash)) {\n lookup.get(hash).push(key);\n }\n else {\n lookup.set(hash, [key]);\n }\n }\n else {\n // key exists\n result.get(existingKey).push(obj);\n }\n }\n }\n return result;\n}\n// max elements to push.\n// See argument limit https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply\nconst MAX_ARRAY_PUSH = 50000;\n/**\n * Merge elements into the dest\n *\n * @param {*} target The target object\n * @param {*} rest The array of elements to merge into dest\n */\nexport function into(target, ...rest) {\n if (target instanceof Array) {\n return rest.reduce(((acc, arr) => {\n // push arrary in batches to handle large inputs\n let i = Math.ceil(arr.length / MAX_ARRAY_PUSH);\n let begin = 0;\n while (i-- > 0) {\n Array.prototype.push.apply(acc, arr.slice(begin, begin + MAX_ARRAY_PUSH));\n begin += MAX_ARRAY_PUSH;\n }\n return acc;\n }), target);\n }\n else {\n // merge objects. same behaviour as Object.assign\n return rest.filter(isObjectLike).reduce((acc, item) => {\n Object.assign(acc, item);\n return acc;\n }, target);\n }\n}\n/**\n * This is a generic memoization function\n *\n * This implementation uses a cache independent of the function being memoized\n * to allow old values to be garbage collected when the memoized function goes out of scope.\n *\n * @param {*} fn The function object to memoize\n */\nexport function memoize(fn, hashFunction = DEFAULT_HASH_FUNCTION) {\n return ((memo) => {\n return (...args) => {\n const key = hashCode(args, hashFunction) || \"\";\n if (!has(memo, key)) {\n memo[key] = fn.apply(this, args);\n }\n return memo[key];\n };\n })({\n /* storage */\n });\n}\n// mingo internal\n/**\n * Retrieve the value of a given key on an object\n * @param obj\n * @param key\n * @returns {*}\n * @private\n */\nfunction getValue(obj, key) {\n return isObjectLike(obj) ? obj[key] : undefined;\n}\n/**\n * Unwrap a single element array to specified depth\n * @param {Array} arr\n * @param {Number} depth\n */\nfunction unwrap(arr, depth) {\n if (depth < 1)\n return arr;\n while (depth-- && arr.length === 1)\n arr = arr[0];\n return arr;\n}\n/**\n * Resolve the value of the field (dot separated) on the given object\n * @param obj {Object} the object context\n * @param selector {String} dot separated path to field\n * @returns {*}\n */\nexport function resolve(obj, selector, options) {\n let depth = 0;\n function resolve2(o, path) {\n let value = o;\n for (let i = 0; i < path.length; i++) {\n const field = path[i];\n const isText = /^\\d+$/.exec(field) === null;\n // using instanceof to aid typescript compiler\n if (isText && value instanceof Array) {\n // On the first iteration, we check if we received a stop flag.\n // If so, we stop to prevent iterating over a nested array value\n // on consecutive object keys in the selector.\n if (i === 0 && depth > 0)\n break;\n depth += 1;\n // only look at the rest of the path\n const subpath = path.slice(i);\n value = value.reduce((acc, item) => {\n const v = resolve2(item, subpath);\n if (v !== undefined)\n acc.push(v);\n return acc;\n }, []);\n break;\n }\n else {\n value = getValue(value, field);\n }\n if (value === undefined)\n break;\n }\n return value;\n }\n const result = JS_SIMPLE_TYPES.has(getType(obj).toLowerCase())\n ? obj\n : resolve2(obj, selector.split(\".\"));\n return result instanceof Array && (options === null || options === void 0 ? void 0 : options.unwrapArray)\n ? unwrap(result, depth)\n : result;\n}\n/**\n * Returns the full object to the resolved value given by the selector.\n * This function excludes empty values as they aren't practically useful.\n *\n * @param obj {Object} the object context\n * @param selector {String} dot separated path to field\n */\nexport function resolveGraph(obj, selector, options) {\n const names = selector.split(\".\");\n const key = names[0];\n // get the next part of the selector\n const next = names.slice(1).join(\".\");\n const isIndex = /^\\d+$/.exec(key) !== null;\n const hasNext = names.length > 1;\n let result;\n let value;\n if (obj instanceof Array) {\n if (isIndex) {\n result = getValue(obj, Number(key));\n if (hasNext) {\n result = resolveGraph(result, next, options);\n }\n result = [result];\n }\n else {\n result = [];\n for (const item of obj) {\n value = resolveGraph(item, selector, options);\n if (options === null || options === void 0 ? void 0 : options.preserveMissing) {\n if (value === undefined) {\n value = MISSING;\n }\n result.push(value);\n }\n else if (value !== undefined) {\n result.push(value);\n }\n }\n }\n }\n else {\n value = getValue(obj, key);\n if (hasNext) {\n value = resolveGraph(value, next, options);\n }\n if (value === undefined)\n return undefined;\n result = (options === null || options === void 0 ? void 0 : options.preserveKeys) ? Object.assign({}, obj) : {};\n result[key] = value;\n }\n return result;\n}\n/**\n * Filter out all MISSING values from the object in-place\n *\n * @param obj The object to filter\n */\nexport function filterMissing(obj) {\n if (obj instanceof Array) {\n for (let i = obj.length - 1; i >= 0; i--) {\n if (obj[i] === MISSING) {\n obj.splice(i, 1);\n }\n else {\n filterMissing(obj[i]);\n }\n }\n }\n else if (isObject(obj)) {\n for (const k in obj) {\n if (has(obj, k)) {\n filterMissing(obj[k]);\n }\n }\n }\n}\nconst NUMBER_RE = /^\\d+$/;\n/**\n * Walk the object graph and execute the given transform function\n *\n * @param {Object|Array} obj The object to traverse.\n * @param {String} selector The selector to navigate.\n * @param {Callback} fn Callback to execute for value at the end the traversal.\n * @param {WalkOptions} options The opetions to use for the function.\n * @return {*}\n */\nexport function walk(obj, selector, fn, options) {\n const names = selector.split(\".\");\n const key = names[0];\n const next = names.slice(1).join(\".\");\n if (names.length === 1) {\n if (isObject(obj) || (isArray(obj) && NUMBER_RE.test(key))) {\n fn(obj, key);\n }\n }\n else {\n // force the rest of the graph while traversing\n if ((options === null || options === void 0 ? void 0 : options.buildGraph) && isNil(obj[key])) {\n obj[key] = {};\n }\n // get the next item\n const item = obj[key];\n // nothing more to do\n if (!item)\n return;\n // we peek to see if next key is an array index.\n const isNextArrayIndex = !!(names.length > 1 && NUMBER_RE.test(names[1]));\n // if we have an array value but the next key is not an index and the 'descendArray' option is set,\n // we walk each item in the array separately. This allows for handling traversing keys for objects\n // nested within an array.\n //\n // Eg: Given { array: [ {k:1}, {k:2}, {k:3} ] }\n // - individual objecs can be traversed with \"array.k\"\n // - a specific object can be traversed with \"array.1\"\n if (item instanceof Array && (options === null || options === void 0 ? void 0 : options.descendArray) && !isNextArrayIndex) {\n item.forEach(((e) => walk(e, next, fn, options)));\n }\n else {\n walk(item, next, fn, options);\n }\n }\n}\n/**\n * Set the value of the given object field\n *\n * @param obj {Object|Array} the object context\n * @param selector {String} path to field\n * @param value {*} the value to set. if it is function, it is invoked with the old value and must return the new value.\n */\nexport function setValue(obj, selector, value) {\n walk(obj, selector, ((item, key) => {\n item[key] = isFunction(value) ? value(item[key]) : value;\n }), { buildGraph: true });\n}\n/**\n * Removes an element from the container.\n * If the selector resolves to an array and the leaf is a non-numeric key,\n * the remove operation will be performed on objects of the array.\n *\n * @param obj {ArrayOrObject} object or array\n * @param selector {String} dot separated path to element to remove\n */\nexport function removeValue(obj, selector, options) {\n walk(obj, selector, ((item, key) => {\n if (item instanceof Array) {\n if (/^\\d+$/.test(key)) {\n item.splice(parseInt(key), 1);\n }\n else if (options && options.descendArray) {\n for (const elem of item) {\n if (isObject(elem)) {\n delete elem[key];\n }\n }\n }\n }\n else if (isObject(item)) {\n delete item[key];\n }\n }), options);\n}\nconst OPERATOR_NAME_PATTERN = /^\\$[a-zA-Z0-9_]+$/;\n/**\n * Check whether the given name passes for an operator. We assume AnyVal field name starting with '$' is an operator.\n * This is cheap and safe to do since keys beginning with '$' should be reserved for internal use.\n * @param {String} name\n */\nexport function isOperator(name) {\n return OPERATOR_NAME_PATTERN.test(name);\n}\n/**\n * Simplify expression for easy evaluation with query operators map\n * @param expr\n * @returns {*}\n */\nexport function normalize(expr) {\n // normalized primitives\n if (JS_SIMPLE_TYPES.has(getType(expr).toLowerCase())) {\n return isRegExp(expr) ? { $regex: expr } : { $eq: expr };\n }\n // normalize object expression. using ObjectLike handles custom types\n if (isObjectLike(expr)) {\n const exprObj = expr;\n // no valid query operator found, so we do simple comparison\n if (!Object.keys(exprObj).some(isOperator)) {\n return { $eq: expr };\n }\n // ensure valid regex\n if (has(expr, \"$regex\")) {\n const newExpr = Object.assign({}, expr);\n newExpr[\"$regex\"] = new RegExp(expr[\"$regex\"], expr[\"$options\"]);\n delete newExpr[\"$options\"];\n return newExpr;\n }\n }\n return expr;\n}\n/**\n * Find the insert index for the given key in a sorted array.\n *\n * @param {*} sorted The sorted array to search\n * @param {*} item The search key\n */\nexport function findInsertIndex(sorted, item) {\n // uses binary search\n let lo = 0;\n let hi = sorted.length - 1;\n while (lo <= hi) {\n const mid = Math.round(lo + (hi - lo) / 2);\n if (compare(item, sorted[mid]) < 0) {\n hi = mid - 1;\n }\n else if (compare(item, sorted[mid]) > 0) {\n lo = mid + 1;\n }\n else {\n return mid;\n }\n }\n return lo;\n}\n","import { assert, has, isArray, isFunction, isNil, isObject, isObjectLike, isOperator, isString, resolve } from \"./util\";\n/**\n * This controls how input and output documents are processed to meet different application needs.\n * Each mode has different trade offs for; immutability, reference sharing, and performance.\n */\nexport var ProcessingMode;\n(function (ProcessingMode) {\n /**\n * Clone inputs prior to processing, and the outputs if some objects graphs may be shared.\n * Use this option to keep input collection immutable and to get distinct output objects.\n *\n * Note: This option is expensive and reduces performance.\n */\n ProcessingMode[\"CLONE_ALL\"] = \"CLONE_ALL\";\n /**\n * Clones inputs prior to processing.\n * This option will return output objects with shared graphs in their path if specific operators are used.\n * Use this option to keep the input collection immutable.\n *\n */\n ProcessingMode[\"CLONE_INPUT\"] = \"CLONE_INPUT\";\n /**\n * Clones the output to return distinct objects with no shared paths.\n * This option modifies the input collection and during processing.\n */\n ProcessingMode[\"CLONE_OUTPUT\"] = \"CLONE_OUTPUT\";\n /**\n * Turn off cloning and modifies the input collection as needed.\n * This option will also return output objects with shared paths in their graph when specific operators are used.\n * This option provides the greatest speedup for the biggest tradeoff.\n * When using the aggregation pipeline, you can use the \"$out\" operator to collect immutable intermediate results.\n *\n * @default\n */\n ProcessingMode[\"CLONE_OFF\"] = \"CLONE_OFF\";\n})(ProcessingMode || (ProcessingMode = {}));\n/** Custom type to facilitate type checking for global options */\nexport class ComputeOptions {\n constructor(_opts, \n /** Reference to the root object when processing subgraphs of the object. */\n _root, _local, \n /** The current time in milliseconds. Remains the same throughout all stages of the aggregation pipeline. */\n timestamp = Date.now()) {\n this._opts = _opts;\n this._root = _root;\n this._local = _local;\n this.timestamp = timestamp;\n this.update(_root, _local);\n }\n /**\n * Initialize new ComputeOptions.\n *\n * @param options\n * @param root\n * @param local\n * @returns {ComputeOptions}\n */\n static init(options, root, local) {\n return options instanceof ComputeOptions\n ? new ComputeOptions(options._opts, isNil(options.root) ? root : options.root, Object.assign({}, options.local, local))\n : new ComputeOptions(options, root, local);\n }\n /** Updates the internal mutable state. */\n update(root, local) {\n var _a;\n // NOTE: this is done for efficiency to avoid creating too many intermediate options objects.\n this._root = root;\n this._local = local\n ? Object.assign({}, local, {\n variables: Object.assign({}, (_a = this._local) === null || _a === void 0 ? void 0 : _a.variables, local === null || local === void 0 ? void 0 : local.variables)\n })\n : local;\n return this;\n }\n getOptions() {\n return Object.freeze(Object.assign(Object.assign({}, this._opts), { context: Context.from(this._opts.context) }));\n }\n get root() {\n return this._root;\n }\n get local() {\n return this._local;\n }\n get idKey() {\n return this._opts.idKey;\n }\n get collation() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.collation;\n }\n get processingMode() {\n var _a;\n return ((_a = this._opts) === null || _a === void 0 ? void 0 : _a.processingMode) || ProcessingMode.CLONE_OFF;\n }\n get useStrictMode() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.useStrictMode;\n }\n get scriptEnabled() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.scriptEnabled;\n }\n get useGlobalContext() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.useGlobalContext;\n }\n get hashFunction() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.hashFunction;\n }\n get collectionResolver() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.collectionResolver;\n }\n get jsonSchemaValidator() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.jsonSchemaValidator;\n }\n get variables() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.variables;\n }\n get context() {\n var _a;\n return (_a = this._opts) === null || _a === void 0 ? void 0 : _a.context;\n }\n}\n/**\n * Creates an Option from another where required keys are initialized.\n * @param options Options\n */\nexport function initOptions(options) {\n return options instanceof ComputeOptions\n ? options.getOptions()\n : Object.freeze(Object.assign(Object.assign({ idKey: \"_id\", scriptEnabled: true, useStrictMode: true, useGlobalContext: true, processingMode: ProcessingMode.CLONE_OFF }, options), { context: (options === null || options === void 0 ? void 0 : options.context)\n ? Context.from(options === null || options === void 0 ? void 0 : options.context)\n : Context.init({}) }));\n}\n/**\n * The different groups of operators\n */\nexport var OperatorType;\n(function (OperatorType) {\n OperatorType[\"ACCUMULATOR\"] = \"accumulator\";\n OperatorType[\"EXPRESSION\"] = \"expression\";\n OperatorType[\"PIPELINE\"] = \"pipeline\";\n OperatorType[\"PROJECTION\"] = \"projection\";\n OperatorType[\"QUERY\"] = \"query\";\n OperatorType[\"WINDOW\"] = \"window\";\n})(OperatorType || (OperatorType = {}));\nexport class Context {\n constructor(ops) {\n this.operators = {\n [OperatorType.ACCUMULATOR]: {},\n [OperatorType.EXPRESSION]: {},\n [OperatorType.PIPELINE]: {},\n [OperatorType.PROJECTION]: {},\n [OperatorType.QUERY]: {},\n [OperatorType.WINDOW]: {}\n };\n for (const [type, operators] of Object.entries(ops)) {\n this.addOperators(type, operators);\n }\n }\n static init(ops = {}) {\n return new Context(ops);\n }\n static from(ctx) {\n return new Context(ctx.operators);\n }\n addOperators(type, ops) {\n for (const [name, fn] of Object.entries(ops)) {\n if (!this.getOperator(type, name)) {\n this.operators[type][name] = fn;\n }\n }\n return this;\n }\n // register\n addAccumulatorOps(ops) {\n return this.addOperators(OperatorType.ACCUMULATOR, ops);\n }\n addExpressionOps(ops) {\n return this.addOperators(OperatorType.EXPRESSION, ops);\n }\n addQueryOps(ops) {\n return this.addOperators(OperatorType.QUERY, ops);\n }\n addPipelineOps(ops) {\n return this.addOperators(OperatorType.PIPELINE, ops);\n }\n addProjectionOps(ops) {\n return this.addOperators(OperatorType.PROJECTION, ops);\n }\n addWindowOps(ops) {\n return this.addOperators(OperatorType.WINDOW, ops);\n }\n // getters\n getOperator(type, name) {\n return type in this.operators ? this.operators[type][name] || null : null;\n }\n}\n// global context\nconst GLOBAL_CONTEXT = Context.init();\n/**\n * Register fully specified operators for the given operator class.\n *\n * @param type The operator type\n * @param operators Map of the operators\n */\nexport function useOperators(type, operators) {\n for (const [name, fn] of Object.entries(operators)) {\n assert(isFunction(fn) && isOperator(name), `'${name}' is not a valid operator`);\n const currentFn = getOperator(type, name, null);\n assert(!currentFn || fn === currentFn, `${name} already exists for '${type}' operators. Cannot change operator function once registered.`);\n }\n // toss the operator salad :)\n switch (type) {\n case OperatorType.ACCUMULATOR:\n GLOBAL_CONTEXT.addAccumulatorOps(operators);\n break;\n case OperatorType.EXPRESSION:\n GLOBAL_CONTEXT.addExpressionOps(operators);\n break;\n case OperatorType.PIPELINE:\n GLOBAL_CONTEXT.addPipelineOps(operators);\n break;\n case OperatorType.PROJECTION:\n GLOBAL_CONTEXT.addProjectionOps(operators);\n break;\n case OperatorType.QUERY:\n GLOBAL_CONTEXT.addQueryOps(operators);\n break;\n case OperatorType.WINDOW:\n GLOBAL_CONTEXT.addWindowOps(operators);\n break;\n }\n}\n/**\n * Overrides the current global context with this new one.\n *\n * @param context The new context to override the global one with.\n */\n// export const setGlobalContext = (context: Context): void => {\n// GLOBAL_CONTEXT = context;\n// };\n/**\n * Returns the operator function or undefined if it is not found\n * @param type Type of operator\n * @param operator Name of the operator\n */\nexport function getOperator(type, operator, options) {\n const { context: ctx, useGlobalContext: fallback } = options || {};\n const fn = ctx ? ctx.getOperator(type, operator) : null;\n return !fn && fallback ? GLOBAL_CONTEXT.getOperator(type, operator) : fn;\n}\n/* eslint-disable unused-imports/no-unused-vars-ts */\n/**\n * Implementation of system variables\n * @type {Object}\n */\nconst systemVariables = {\n $$ROOT(_obj, _expr, options) {\n return options.root;\n },\n $$CURRENT(obj, _expr, _options) {\n return obj;\n },\n $$REMOVE(_obj, _expr, _options) {\n return undefined;\n },\n $$NOW(_obj, _expr, options) {\n return new Date(options.timestamp);\n }\n};\n/**\n * Implementation of $redact variables\n *\n * Each function accepts 3 arguments (obj, expr, options)\n *\n * @type {Object}\n */\nconst redactVariables = {\n $$KEEP(obj, _expr, _options) {\n return obj;\n },\n $$PRUNE(_obj, _expr, _options) {\n return undefined;\n },\n $$DESCEND(obj, expr, options) {\n // traverse nested documents iff there is a $cond\n if (!has(expr, \"$cond\"))\n return obj;\n let result;\n for (const [key, current] of Object.entries(obj)) {\n if (isObjectLike(current)) {\n if (current instanceof Array) {\n const array = [];\n for (let elem of current) {\n if (isObject(elem)) {\n elem = redact(elem, expr, options.update(elem));\n }\n if (!isNil(elem)) {\n array.push(elem);\n }\n }\n result = array;\n }\n else {\n result = redact(current, expr, options.update(current));\n }\n if (isNil(result)) {\n delete obj[key]; // pruned result\n }\n else {\n obj[key] = result;\n }\n }\n }\n return obj;\n }\n};\n/* eslint-enable unused-imports/no-unused-vars-ts */\n/**\n * Computes the value of the expression on the object for the given operator\n *\n * @param obj the current object from the collection\n * @param expr the expression for the given field\n * @param operator the operator to resolve the field with\n * @param options {Object} extra options\n * @returns {*}\n */\nexport function computeValue(obj, expr, operator, options) {\n var _a;\n // ensure valid options exist on first invocation\n const copts = ComputeOptions.init(options, obj);\n operator = operator || \"\";\n if (isOperator(operator)) {\n // if the field of the object is a valid operator\n const callExpression = getOperator(OperatorType.EXPRESSION, operator, options);\n if (callExpression)\n return callExpression(obj, expr, copts);\n // we also handle $group accumulator operators\n const callAccumulator = getOperator(OperatorType.ACCUMULATOR, operator, options);\n if (callAccumulator) {\n // if object is not an array, first try to compute using the expression\n if (!(obj instanceof Array)) {\n obj = computeValue(obj, expr, null, copts);\n expr = null;\n }\n // validate that we have an array\n assert(obj instanceof Array, `'${operator}' target must be an array.`);\n // for accumulators, we use the global options since the root is specific to each element within array.\n return callAccumulator(obj, expr, \n // reset the root object for accumulators.\n copts.update(null, copts.local));\n }\n // operator was not found\n throw new Error(`operator '${operator}' is not registered`);\n }\n // if expr is a string and begins with \"$$\", then we have a variable.\n // this can be one of; redact variable, system variable, user-defined variable.\n // we check and process them in that order.\n //\n // if expr begins only a single \"$\", then it is a path to a field on the object.\n if (isString(expr) && expr.length > 0 && expr[0] === \"$\") {\n // we return redact variables as literals\n if (has(redactVariables, expr)) {\n return expr;\n }\n // default to root for resolving path.\n let context = copts.root;\n // handle selectors with explicit prefix\n const arr = expr.split(\".\");\n if (has(systemVariables, arr[0])) {\n // set 'root' only the first time it is required to be used for all subsequent calls\n // if it already available on the options, it will be used\n context = systemVariables[arr[0]](obj, null, copts);\n expr = expr.slice(arr[0].length + 1); // +1 for '.'\n }\n else if (arr[0].slice(0, 2) === \"$$\") {\n // handle user-defined variables\n context = Object.assign({}, copts.variables, // global vars\n // current item is added before local variables because the binding may be changed.\n { this: obj }, (_a = copts.local) === null || _a === void 0 ? void 0 : _a.variables // local vars\n );\n const prefix = arr[0].slice(2);\n assert(has(context, prefix), `Use of undefined variable: ${prefix}`);\n expr = expr.slice(2);\n }\n else {\n // 'expr' is a path to a field on the object.\n expr = expr.slice(1);\n }\n if (expr === \"\")\n return context;\n return resolve(context, expr);\n }\n // check and return value if already in a resolved state\n if (isArray(expr)) {\n return expr.map((item) => computeValue(obj, item, null, copts));\n }\n else if (isObject(expr)) {\n const result = {};\n for (const [key, val] of Object.entries(expr)) {\n result[key] = computeValue(obj, val, key, copts);\n // must run ONLY one aggregate operator per expression\n // if so, return result of the computed value\n if ([OperatorType.EXPRESSION, OperatorType.ACCUMULATOR].some(t => !!getOperator(t, key, options))) {\n // there should be only one operator\n assert(Object.keys(expr).length === 1, \"Invalid aggregation expression '\" + JSON.stringify(expr) + \"'\");\n return result[key];\n }\n }\n return result;\n }\n return expr;\n}\n/**\n * Redact an object\n * @param {Object} obj The object to redact\n * @param {*} expr The redact expression\n * @param {*} options Options for value\n * @return {*} returns the result of the redacted object\n */\nexport function redact(obj, expr, options) {\n const result = computeValue(obj, expr, null, options);\n return has(redactVariables, result)\n ? redactVariables[result](obj, expr, options)\n : result;\n}\n","/**\n * Returns an iterator\n * @param {*} source An iterable source (Array, Function, Generator, or Iterator)\n */\nexport function Lazy(source) {\n return source instanceof Iterator ? source : new Iterator(source);\n}\nexport function compose(...iterators) {\n let index = 0;\n return Lazy(() => {\n while (index < iterators.length) {\n const o = iterators[index].next();\n if (!o.done)\n return o;\n index++;\n }\n return { done: true };\n });\n}\n/**\n * Checks whether the given object is compatible with a generator i.e Object{next:Function}\n * @param {*} o An object\n */\nfunction isGenerator(o) {\n return (!!o && typeof o === \"object\" && (o === null || o === void 0 ? void 0 : o.next) instanceof Function);\n}\nfunction dropItem(array, i) {\n const rest = array.slice(i + 1);\n array.splice(i);\n Array.prototype.push.apply(array, rest);\n}\n// stop iteration error\nconst DONE = new Error();\n// Lazy function actions\nvar Action;\n(function (Action) {\n Action[Action[\"MAP\"] = 0] = \"MAP\";\n Action[Action[\"FILTER\"] = 1] = \"FILTER\";\n Action[Action[\"TAKE\"] = 2] = \"TAKE\";\n Action[Action[\"DROP\"] = 3] = \"DROP\";\n})(Action || (Action = {}));\nfunction createCallback(nextFn, iteratees, buffer) {\n let done = false;\n let index = -1;\n let bufferIndex = 0; // index for the buffer\n return function (storeResult) {\n // special hack to collect all values into buffer\n try {\n outer: while (!done) {\n let o = nextFn();\n index++;\n let i = -1;\n const size = iteratees.length;\n let innerDone = false;\n while (++i < size) {\n const r = iteratees[i];\n switch (r.action) {\n case Action.MAP:\n o = r.func(o, index);\n break;\n case Action.FILTER:\n if (!r.func(o, index))\n continue outer;\n break;\n case Action.TAKE:\n --r.count;\n if (!r.count)\n innerDone = true;\n break;\n case Action.DROP:\n --r.count;\n if (!r.count)\n dropItem(iteratees, i);\n continue outer;\n default:\n break outer;\n }\n }\n done = innerDone;\n if (storeResult) {\n buffer[bufferIndex++] = o;\n }\n else {\n return { value: o, done: false };\n }\n }\n }\n catch (e) {\n if (e !== DONE)\n throw e;\n }\n done = true;\n return { done };\n };\n}\n/**\n * A lazy collection iterator yields a single value at a time upon request.\n */\nexport class Iterator {\n /**\n * @param {*} source An iterable object or function.\n * Array - return one element per cycle\n * Object{next:Function} - call next() for the next value (this also handles generator functions)\n * Function - call to return the next value\n * @param {Function} fn An optional transformation function\n */\n constructor(source) {\n this.iteratees = [];\n this.yieldedValues = [];\n this.isDone = false;\n let nextVal;\n if (source instanceof Function) {\n // make iterable\n source = { next: source };\n }\n if (isGenerator(source)) {\n const src = source;\n nextVal = () => {\n const o = src.next();\n if (o.done)\n throw DONE;\n return o.value;\n };\n }\n else if (source instanceof Array) {\n const data = source;\n const size = data.length;\n let index = 0;\n nextVal = () => {\n if (index < size)\n return data[index++];\n throw DONE;\n };\n }\n else if (!(source instanceof Function)) {\n throw new Error(`Lazy must be initialized with an array, generator, or function.`);\n }\n // create next function\n this.getNext = createCallback(nextVal, this.iteratees, this.yieldedValues);\n }\n /**\n * Add an iteratee to this lazy sequence\n */\n push(action, value) {\n if (typeof value === \"function\") {\n this.iteratees.push({ action, func: value });\n }\n else if (typeof value === \"number\") {\n this.iteratees.push({ action, count: value });\n }\n return this;\n }\n next() {\n return this.getNext();\n }\n // Iteratees methods\n /**\n * Transform each item in the sequence to a new value\n * @param {Function} f\n */\n map(f) {\n return this.push(Action.MAP, f);\n }\n /**\n * Select only items matching the given predicate\n * @param {Function} pred\n */\n filter(predicate) {\n return this.push(Action.FILTER, predicate);\n }\n /**\n * Take given numbe for values from sequence\n * @param {Number} n A number greater than 0\n */\n take(n) {\n return n > 0 ? this.push(Action.TAKE, n) : this;\n }\n /**\n * Drop a number of values from the sequence\n * @param {Number} n Number of items to drop greater than 0\n */\n drop(n) {\n return n > 0 ? this.push(Action.DROP, n) : this;\n }\n // Transformations\n /**\n * Returns a new lazy object with results of the transformation\n * The entire sequence is realized.\n *\n * @param {Callback} fn Tranform function of type (Array) => (Any)\n */\n transform(fn) {\n const self = this;\n let iter;\n return Lazy(() => {\n if (!iter) {\n iter = Lazy(fn(self.value()));\n }\n return iter.next();\n });\n }\n // Terminal methods\n /**\n * Returns the fully realized values of the iterators.\n * The return value will be an array unless `lazy.first()` was used.\n * The realized values are cached for subsequent calls.\n */\n value() {\n if (!this.isDone) {\n this.isDone = this.getNext(true).done;\n }\n return this.yieldedValues;\n }\n /**\n * Execute the funcion for each value. Will stop when an execution returns false.\n * @param {Function} f\n * @returns {Boolean} false iff `f` return false for AnyVal execution, otherwise true\n */\n each(f) {\n for (;;) {\n const o = this.next();\n if (o.done)\n break;\n if (f(o.value) === false)\n return false;\n }\n return true;\n }\n /**\n * Returns the reduction of sequence according the reducing function\n *\n * @param {*} f a reducing function\n * @param {*} initialValue\n */\n reduce(f, initialValue) {\n let o = this.next();\n if (initialValue === undefined && !o.done) {\n initialValue = o.value;\n o = this.next();\n }\n while (!o.done) {\n initialValue = f(initialValue, o.value);\n o = this.next();\n }\n return initialValue;\n }\n /**\n * Returns the number of matched items in the sequence\n */\n size() {\n return this.reduce(((acc, _) => ++acc), 0);\n }\n [Symbol.iterator]() {\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n return this;\n }\n}\n","import { getOperator, initOptions, OperatorType, ProcessingMode } from \"./core\";\nimport { Lazy } from \"./lazy\";\nimport { assert, cloneDeep, intersection, isEmpty } from \"./util\";\n/**\n * Provides functionality for the mongoDB aggregation pipeline\n *\n * @param pipeline an Array of pipeline operators\n * @param options An optional Options to pass the aggregator\n * @constructor\n */\nexport class Aggregator {\n constructor(pipeline, options) {\n this.pipeline = pipeline;\n this.options = initOptions(options);\n }\n /**\n * Returns an `Lazy` iterator for processing results of pipeline\n *\n * @param {*} collection An array or iterator object\n * @returns {Iterator} an iterator object\n */\n stream(collection) {\n let iterator = Lazy(collection);\n const mode = this.options.processingMode;\n if (mode == ProcessingMode.CLONE_ALL ||\n mode == ProcessingMode.CLONE_INPUT) {\n iterator.map(cloneDeep);\n }\n const pipelineOperators = new Array();\n if (!isEmpty(this.pipeline)) {\n // run aggregation pipeline\n for (const operator of this.pipeline) {\n const operatorKeys = Object.keys(operator);\n const opName = operatorKeys[0];\n const call = getOperator(OperatorType.PIPELINE, opName, this.options);\n assert(operatorKeys.length === 1 && !!call, `invalid pipeline operator ${opName}`);\n pipelineOperators.push(opName);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n iterator = call(iterator, operator[opName], this.options);\n }\n }\n // operators that may share object graphs of inputs.\n // we only need to clone the output for these since the objects will already be distinct for other operators.\n if (mode == ProcessingMode.CLONE_OUTPUT ||\n (mode == ProcessingMode.CLONE_ALL &&\n !!intersection([[\"$group\", \"$unwind\"], pipelineOperators]).length)) {\n iterator.map(cloneDeep);\n }\n return iterator;\n }\n /**\n * Return the results of the aggregation as an array.\n *\n * @param {*} collection\n * @param {*} query\n */\n run(collection) {\n return this.stream(collection).value();\n }\n}\n","import { Aggregator } from \"./aggregator\";\nimport { compose, Lazy } from \"./lazy\";\nimport { isObject } from \"./util\";\n/**\n * Cursor to iterate and perform filtering on matched objects.\n * This object must not be used directly. A cursor may be obtaine from calling `find()` on an instance of `Query`.\n *\n * @param collection The input source of the collection\n * @param predicate A predicate function to test documents\n * @param projection A projection criteria\n * @param options Options\n * @constructor\n */\nexport class Cursor {\n constructor(source, predicate, projection, options) {\n this.source = source;\n this.predicate = predicate;\n this.projection = projection;\n this.options = options;\n this.operators = [];\n this.result = null;\n this.buffer = [];\n }\n /** Returns the iterator from running the query */\n fetch() {\n if (this.result)\n return this.result;\n // add projection operator\n if (isObject(this.projection)) {\n this.operators.push({ $project: this.projection });\n }\n // filter collection\n this.result = Lazy(this.source).filter(this.predicate);\n if (this.operators.length > 0) {\n this.result = new Aggregator(this.operators, this.options).stream(this.result);\n }\n return this.result;\n }\n /** Returns an iterator with the buffered data included */\n fetchAll() {\n const buffered = Lazy([...this.buffer]);\n this.buffer = [];\n return compose(buffered, this.fetch());\n }\n /**\n * Return remaining objects in the cursor as an array. This method exhausts the cursor\n * @returns {Array}\n */\n all() {\n return this.fetchAll().value();\n }\n /**\n * Returns the number of objects return in the cursor. This method exhausts the cursor\n * @returns {Number}\n */\n count() {\n return this.all().length;\n }\n /**\n * Returns a cursor that begins returning results only after passing or skipping a number of documents.\n * @param {Number} n the number of results to skip.\n * @return {Cursor} Returns the cursor, so you can chain this call.\n */\n skip(n) {\n this.operators.push({ $skip: n });\n return this;\n }\n /**\n * Constrains the size of a cursor's result set.\n * @param {Number} n the number of results to limit to.\n * @return {Cursor} Returns the cursor, so you can chain this call.\n */\n limit(n) {\n this.operators.push({ $limit: n });\n return this;\n }\n /**\n * Returns results ordered according to a sort specification.\n * @param {Object} modifier an object of key and values specifying the sort order. 1 for ascending and -1 for descending\n * @return {Cursor} Returns the cursor, so you can chain this call.\n */\n sort(modifier) {\n this.operators.push({ $sort: modifier });\n return this;\n }\n /**\n * Specifies the collation for the cursor returned by the `mingo.Query.find`\n * @param {*} spec\n */\n collation(spec) {\n this.options = Object.assign(Object.assign({}, this.options), { collation: spec });\n return this;\n }\n /**\n * Returns the next document in a cursor.\n * @returns {Object | Boolean}\n */\n next() {\n // yield value obtains in hasNext()\n if (this.buffer.length > 0) {\n return this.buffer.pop();\n }\n const o = this.fetch().next();\n if (o.done)\n return;\n return o.value;\n }\n /**\n * Returns true if the cursor has documents and can be iterated.\n * @returns {boolean}\n */\n hasNext() {\n // there is a value in the buffer\n if (this.buffer.length > 0)\n return true;\n const o = this.fetch().next();\n if (o.done)\n return false;\n this.buffer.push(o.value);\n return true;\n }\n /**\n * Applies a function to each document in a cursor and collects the return values in an array.\n * @param fn\n * @returns {Array}\n */\n map(fn) {\n return this.all().map(fn);\n }\n /**\n * Applies a JavaScript function for every document in a cursor.\n * @param fn\n */\n forEach(fn) {\n this.all().forEach(fn);\n }\n [Symbol.iterator]() {\n return this.fetchAll();\n }\n}\n","import { getOperator, initOptions, OperatorType } from \"./core\";\nimport { Cursor } from \"./cursor\";\nimport { assert, inArray, isObject, isOperator, normalize } from \"./util\";\n/**\n * An object used to filter input documents\n *\n * @param {Object} condition The condition for constructing predicates\n * @param {Options} options Options for use by operators\n * @constructor\n */\nexport class Query {\n constructor(condition, options) {\n this.condition = condition;\n this.options = initOptions(options);\n this.compiled = [];\n this.compile();\n }\n compile() {\n assert(isObject(this.condition), `query criteria must be an object: ${JSON.stringify(this.condition)}`);\n const whereOperator = {};\n for (const [field, expr] of Object.entries(this.condition)) {\n if (\"$where\" === field) {\n Object.assign(whereOperator, { field: field, expr: expr });\n }\n else if (inArray([\"$and\", \"$or\", \"$nor\", \"$expr\", \"$jsonSchema\"], field)) {\n this.processOperator(field, field, expr);\n }\n else {\n // normalize expression\n assert(!isOperator(field), `unknown top level operator: ${field}`);\n for (const [operator, val] of Object.entries(normalize(expr))) {\n this.processOperator(field, operator, val);\n }\n }\n if (whereOperator.field) {\n this.processOperator(whereOperator.field, whereOperator.field, whereOperator.expr);\n }\n }\n }\n processOperator(field, operator, value) {\n const call = getOperator(OperatorType.QUERY, operator, this.options);\n if (!call) {\n throw new Error(`unknown operator ${operator}`);\n }\n const fn = call(field, value, this.options);\n this.compiled.push(fn);\n }\n /**\n * Checks if the object passes the query criteria. Returns true if so, false otherwise.\n *\n * @param obj The object to test\n * @returns {boolean} True or false\n */\n test(obj) {\n for (let i = 0, len = this.compiled.length; i < len; i++) {\n if (!this.compiled[i](obj)) {\n return false;\n }\n }\n return true;\n }\n /**\n * Returns a cursor to select matching documents from the input source.\n *\n * @param source A source providing a sequence of documents\n * @param projection An optional projection criteria\n * @returns {Cursor} A Cursor for iterating over the results\n */\n find(collection, projection) {\n return new Cursor(collection, ((x) => this.test(x)), projection || {}, this.options);\n }\n /**\n * Remove matched documents from the collection returning the remainder\n *\n * @param collection An array of documents\n * @returns {Array} A new array with matching elements removed\n */\n remove(collection) {\n return collection.reduce((acc, obj) => {\n if (!this.test(obj))\n acc.push(obj);\n return acc;\n }, []);\n }\n}\n","import { compare, groupBy, into, isEmpty, isObject, isString, resolve } from \"../../util\";\n/**\n * Takes all input documents and returns them in a stream of sorted documents.\n *\n * @param collection\n * @param sortKeys\n * @param {Object} options\n * @returns {*}\n */\nexport const $sort = (collection, sortKeys, options) => {\n if (isEmpty(sortKeys) || !isObject(sortKeys))\n return collection;\n let cmp = compare;\n // check for collation spec on the options\n const collationSpec = options.collation;\n // use collation comparator if provided\n if (isObject(collationSpec) && isString(collationSpec.locale)) {\n cmp = collationComparator(collationSpec);\n }\n return collection.transform((coll) => {\n const modifiers = Object.keys(sortKeys);\n for (const key of modifiers.reverse()) {\n const groups = groupBy(coll, (obj) => resolve(obj, key), options.hashFunction);\n const sortedKeys = Array.from(groups.keys()).sort(cmp);\n if (sortKeys[key] === -1)\n sortedKeys.reverse();\n // reuse collection so the data is available for the next iteration of the sort modifiers.\n coll = [];\n sortedKeys.reduce((acc, key) => into(acc, groups.get(key)), coll);\n }\n return coll;\n });\n};\n// MongoDB collation strength to JS localeCompare sensitivity mapping.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare\nconst COLLATION_STRENGTH = {\n // Only strings that differ in base letters compare as unequal. Examples: a ≠ b, a = á, a = A.\n 1: \"base\",\n // Only strings that differ in base letters or accents and other diacritic marks compare as unequal.\n // Examples: a ≠ b, a ≠ á, a = A.\n 2: \"accent\",\n // Strings that differ in base letters, accents and other diacritic marks, or case compare as unequal.\n // Other differences may also be taken into consideration. Examples: a ≠ b, a ≠ á, a ≠ A\n 3: \"variant\"\n // case - Only strings that differ in base letters or case compare as unequal. Examples: a ≠ b, a = á, a ≠ A.\n};\n/**\n * Creates a comparator function for the given collation spec. See https://docs.mongodb.com/manual/reference/collation/\n *\n * @param spec {Object} The MongoDB collation spec.\n * {\n * locale: string,\n * caseLevel: boolean,\n * caseFirst: string,\n * strength: int,\n * numericOrdering: boolean,\n * alternate: string,\n * maxVariable: never, // unsupported\n * backwards: never // unsupported\n * }\n */\nfunction collationComparator(spec) {\n const localeOpt = {\n sensitivity: COLLATION_STRENGTH[spec.strength || 3],\n caseFirst: spec.caseFirst === \"off\" ? \"false\" : spec.caseFirst || \"false\",\n numeric: spec.numericOrdering || false,\n ignorePunctuation: spec.alternate === \"shifted\"\n };\n // when caseLevel is true for strength 1:base and 2:accent, bump sensitivity to the nearest that supports case comparison\n if ((spec.caseLevel || false) === true) {\n if (localeOpt.sensitivity === \"base\")\n localeOpt.sensitivity = \"case\";\n if (localeOpt.sensitivity === \"accent\")\n localeOpt.sensitivity = \"variant\";\n }\n const collator = new Intl.Collator(spec.locale, localeOpt);\n return (a, b) => {\n // non strings\n if (!isString(a) || !isString(b))\n return compare(a, b);\n // only for strings\n const i = collator.compare(a, b);\n if (i < 0)\n return -1;\n if (i > 0)\n return 1;\n return 0;\n };\n}\n","/**\n * Predicates used for Query and Expression operators.\n */\nimport { computeValue } from \"../core\";\nimport { Query } from \"../query\";\nimport { compare as mingoCmp, ensureArray, flatten, getType, inArray, intersection, isArray, isBoolean, isDate, isEmpty, isEqual, isNil, isNumber, isObject, isOperator, isRegExp, isString, MAX_INT, MAX_LONG, MIN_INT, MIN_LONG, resolve, truthy } from \"../util\";\n/**\n * Returns a query operator created from the predicate\n *\n * @param predicate Predicate function\n */\nexport function createQueryOperator(predicate) {\n const f = (selector, value, options) => {\n const opts = { unwrapArray: true };\n const depth = Math.max(1, selector.split(\".\").length - 1);\n return (obj) => {\n // value of field must be fully resolved.\n const lhs = resolve(obj, selector, opts);\n return predicate(lhs, value, Object.assign(Object.assign({}, options), { depth }));\n };\n };\n f.op = \"query\";\n return f; // as QueryOperator;\n}\n/**\n * Returns an expression operator created from the predicate\n *\n * @param predicate Predicate function\n */\nexport function createExpressionOperator(predicate) {\n return (obj, expr, options) => {\n const args = computeValue(obj, expr, null, options);\n return predicate(...args);\n };\n}\n/**\n * Checks that two values are equal.\n *\n * @param a The lhs operand as resolved from the object by the given selector\n * @param b The rhs operand provided by the user\n * @returns {*}\n */\nexport function $eq(a, b, options) {\n // start with simple equality check\n if (isEqual(a, b))\n return true;\n // https://docs.mongodb.com/manual/tutorial/query-for-null-fields/\n if (isNil(a) && isNil(b))\n return true;\n // check\n if (a instanceof Array) {\n const eq = isEqual.bind(null, b);\n return a.some(eq) || flatten(a, options === null || options === void 0 ? void 0 : options.depth).some(eq);\n }\n return false;\n}\n/**\n * Matches all values that are not equal to the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $ne(a, b, options) {\n return !$eq(a, b, options);\n}\n/**\n * Matches any of the values that exist in an array specified in the query.\n *\n * @param a\n * @param b\n * @returns {*}\n */\nexport function $in(a, b, options) {\n // queries for null should be able to find undefined fields\n if (isNil(a))\n return b.some(v => v === null);\n return intersection([ensureArray(a), b], options === null || options === void 0 ? void 0 : options.hashFunction).length > 0;\n}\n/**\n * Matches values that do not exist in an array specified to the query.\n *\n * @param a\n * @param b\n * @returns {*|boolean}\n */\nexport function $nin(a, b, options) {\n return !$in(a, b, options);\n}\n/**\n * Matches values that are less than the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $lt(a, b, options) {\n return compare(a, b, (x, y) => mingoCmp(x, y) < 0);\n}\n/**\n * Matches values that are less than or equal to the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $lte(a, b, options) {\n return compare(a, b, (x, y) => mingoCmp(x, y) <= 0);\n}\n/**\n * Matches values that are greater than the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $gt(a, b, options) {\n return compare(a, b, (x, y) => mingoCmp(x, y) > 0);\n}\n/**\n * Matches values that are greater than or equal to the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $gte(a, b, options) {\n return compare(a, b, (x, y) => mingoCmp(x, y) >= 0);\n}\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $mod(a, b, options) {\n return ensureArray(a).some(((x) => b.length === 2 && x % b[0] === b[1]));\n}\n/**\n * Selects documents where values match a specified regular expression.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $regex(a, b, options) {\n const lhs = ensureArray(a);\n const match = (x) => isString(x) && truthy(b.exec(x), options === null || options === void 0 ? void 0 : options.useStrictMode);\n return lhs.some(match) || flatten(lhs, 1).some(match);\n}\n/**\n * Matches documents that have the specified field.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $exists(a, b, options) {\n return (((b === false || b === 0) && a === undefined) ||\n ((b === true || b === 1) && a !== undefined));\n}\n/**\n * Matches arrays that contain all elements specified in the query.\n *\n * @param values\n * @param queries\n * @returns boolean\n */\nexport function $all(values, queries, options) {\n if (!isArray(values) ||\n !isArray(queries) ||\n !values.length ||\n !queries.length) {\n return false;\n }\n let matched = true;\n for (const query of queries) {\n // no need to check all the queries.\n if (!matched)\n break;\n if (isObject(query) && inArray(Object.keys(query), \"$elemMatch\")) {\n matched = $elemMatch(values, query[\"$elemMatch\"], options);\n }\n else if (query instanceof RegExp) {\n matched = values.some(s => typeof s === \"string\" && query.test(s));\n }\n else {\n matched = values.some(v => isEqual(query, v));\n }\n }\n return matched;\n}\n/**\n * Selects documents if the array field is a specified size.\n *\n * @param a\n * @param b\n * @returns {*|boolean}\n */\nexport function $size(a, b, options) {\n return Array.isArray(a) && a.length === b;\n}\nfunction isNonBooleanOperator(name) {\n return isOperator(name) && [\"$and\", \"$or\", \"$nor\"].indexOf(name) === -1;\n}\n/**\n * Selects documents if element in the array field matches all the specified $elemMatch condition.\n *\n * @param a {Array} element to match against\n * @param b {Object} subquery\n */\nexport function $elemMatch(a, b, options) {\n // should return false for non-matching input\n if (isArray(a) && !isEmpty(a)) {\n let format = (x) => x;\n let criteria = b;\n // If we find a boolean operator in the subquery, we fake a field to point to it. This is an\n // attempt to ensure that it is a valid criteria. We cannot make this substitution for operators\n // like $and/$or/$nor; as otherwise, this faking will break our query.\n if (Object.keys(b).every(isNonBooleanOperator)) {\n criteria = { temp: b };\n format = x => ({ temp: x });\n }\n const query = new Query(criteria, options);\n for (let i = 0, len = a.length; i < len; i++) {\n if (query.test(format(a[i]))) {\n return true;\n }\n }\n }\n return false;\n}\n// helper functions\nconst isNull = (a) => a === null;\nconst isInt = (a) => isNumber(a) &&\n a >= MIN_INT &&\n a <= MAX_INT &&\n a.toString().indexOf(\".\") === -1;\nconst isLong = (a) => isNumber(a) &&\n a >= MIN_LONG &&\n a <= MAX_LONG &&\n a.toString().indexOf(\".\") === -1;\n/** Mapping of type to predicate */\nconst compareFuncs = {\n array: isArray,\n bool: isBoolean,\n boolean: isBoolean,\n date: isDate,\n decimal: isNumber,\n double: isNumber,\n int: isInt,\n long: isLong,\n number: isNumber,\n null: isNull,\n object: isObject,\n regex: isRegExp,\n regexp: isRegExp,\n string: isString,\n // added for completeness\n undefined: isNil, // deprecated\n function: (_) => {\n throw new Error(\"unsupported type key `function`.\");\n },\n // Mongo identifiers\n 1: isNumber, //double\n 2: isString,\n 3: isObject,\n 4: isArray,\n 6: isNil, // deprecated\n 8: isBoolean,\n 9: isDate,\n 10: isNull,\n 11: isRegExp,\n 16: isInt,\n 18: isLong,\n 19: isNumber //decimal\n};\n/**\n * Selects documents if a field is of the specified type.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nfunction compareType(a, b, _) {\n const f = compareFuncs[b];\n return f ? f(a) : false;\n}\n/**\n * Selects documents if a field is of the specified type.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\nexport function $type(a, b, options) {\n return Array.isArray(b)\n ? b.findIndex(t => compareType(a, t, options)) >= 0\n : compareType(a, b, options);\n}\nfunction compare(a, b, f) {\n return ensureArray(a).some(x => getType(x) === getType(b) && f(x, b));\n}\n","// Date Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#date-expression-operators\nimport { computeValue } from \"../../../core\";\nimport { assert, isNil, isObject } from \"../../../util\";\nimport { adjustDate, DATE_FORMAT, DATE_SYM_TABLE, MINUTES_PER_HOUR, parseTimezone, regexQuote, regexStrip } from \"./_internal\";\nconst buildMap = (letters, sign) => {\n const h = {};\n letters.split(\"\").forEach((v, i) => (h[v] = sign * (i + 1)));\n return h;\n};\nconst TZ_LETTER_OFFSETS = Object.assign(Object.assign(Object.assign({}, buildMap(\"ABCDEFGHIKLM\", 1)), buildMap(\"NOPQRSTUVWXY\", -1)), { Z: 0 });\n/**\n * Converts a date/time string to a date object.\n * @param obj\n * @param expr\n */\nexport const $dateFromString = (obj, expr, options) => {\n const args = computeValue(obj, expr, null, options);\n args.format = args.format || DATE_FORMAT;\n args.onNull = args.onNull || null;\n let dateString = args.dateString;\n if (isNil(dateString))\n return args.onNull;\n // collect all separators of the format string\n const separators = args.format.split(/%[YGmdHMSLuVzZ]/);\n separators.reverse();\n const matches = args.format.match(/(%%|%Y|%G|%m|%d|%H|%M|%S|%L|%u|%V|%z|%Z)/g);\n const dateParts = {};\n // holds the valid regex of parts that matches input date string\n let expectedPattern = \"\";\n for (let i = 0, len = matches.length; i < len; i++) {\n const formatSpecifier = matches[i];\n const props = DATE_SYM_TABLE[formatSpecifier];\n if (isObject(props)) {\n // get pattern and alias from table\n const m = props.re.exec(dateString);\n // get the next separtor\n const delimiter = separators.pop() || \"\";\n if (m !== null) {\n // store and cut out matched part\n dateParts[props.name] = /^\\d+$/.exec(m[0]) ? parseInt(m[0]) : m[0];\n dateString =\n dateString.substr(0, m.index) +\n dateString.substr(m.index + m[0].length);\n // construct expected pattern\n expectedPattern +=\n regexQuote(delimiter) + regexStrip(props.re.toString());\n }\n else {\n dateParts[props.name] = null;\n }\n }\n }\n // 1. validate all required date parts exists\n // 2. validate original dateString against expected pattern.\n if (isNil(dateParts.year) ||\n isNil(dateParts.month) ||\n isNil(dateParts.day) ||\n !new RegExp(\"^\" + expectedPattern + \"[A-Z]?$\").exec(args.dateString)) {\n return args.onError;\n }\n const m = args.dateString.match(/([A-Z])$/);\n assert(\n // only one of in-date timeone or timezone argument but not both.\n !(m && args.timezone), `$dateFromString: you cannot pass in a date/time string with time zone information ('${m && m[0]}') together with a timezone argument`);\n const minuteOffset = m\n ? TZ_LETTER_OFFSETS[m[0]] * MINUTES_PER_HOUR\n : parseTimezone(args.timezone);\n // create the date. month is 0-based in Date\n const d = new Date(Date.UTC(dateParts.year, dateParts.month - 1, dateParts.day, 0, 0, 0));\n if (!isNil(dateParts.hour))\n d.setUTCHours(dateParts.hour);\n if (!isNil(dateParts.minute))\n d.setUTCMinutes(dateParts.minute);\n if (!isNil(dateParts.second))\n d.setUTCSeconds(dateParts.second);\n if (!isNil(dateParts.millisecond))\n d.setUTCMilliseconds(dateParts.millisecond);\n // adjust to the correct represention for UTC\n adjustDate(d, -minuteOffset);\n return d;\n};\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { computeValue } from \"../../../core\";\nconst FIXED_POINTS = {\n undefined: null,\n null: null,\n NaN: NaN,\n Infinity: new Error(),\n \"-Infinity\": new Error()\n};\n/**\n * Returns an operator for a given trignometric function\n *\n * @param f The trignometric function\n */\nexport function createTrignometryOperator(f, fixedPoints = FIXED_POINTS) {\n const fp = Object.assign({}, FIXED_POINTS, fixedPoints);\n const keySet = new Set(Object.keys(fp));\n return (obj, expr, options) => {\n const n = computeValue(obj, expr, null, options);\n if (keySet.has(`${n}`)) {\n const res = fp[`${n}`];\n if (res instanceof Error) {\n throw new Error(`cannot apply $${f.name} to -inf, value must in (-inf,inf)`);\n }\n return res;\n }\n return f(n);\n };\n}\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the inverse cosine (arc cosine) of a value in radians. */\nexport const $acos = createTrignometryOperator(Math.acos, {\n Infinity: Infinity,\n 0: new Error(),\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians. */\nexport const $acosh = createTrignometryOperator(Math.acosh, {\n Infinity: Infinity,\n 0: new Error(),\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the inverse sin (arc sine) of a value in radians. */\nexport const $asin = createTrignometryOperator(Math.asin);\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians. */\nexport const $asinh = createTrignometryOperator(Math.asinh, {\n Infinity: Infinity,\n \"-Infinity\": -Infinity,\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the inverse tangent (arc tangent) of a value in radians. */\nexport const $atan = createTrignometryOperator(Math.atan);\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians. */\nexport const $atanh = createTrignometryOperator(Math.atanh, {\n 1: Infinity,\n \"-1\": -Infinity,\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the cosine of a value that is measured in radians. */\nexport const $cos = createTrignometryOperator(Math.cos);\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the hyperbolic cosine of a value that is measured in radians. */\nexport const $cosh = createTrignometryOperator(Math.cosh, {\n \"-Infinity\": Infinity,\n Infinity: Infinity,\n // [Math.PI]: -1,\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\nconst RADIANS_FACTOR = Math.PI / 180;\n/** Converts a value from degrees to radians. */\nexport const $degreesToRadians = createTrignometryOperator((n) => n * RADIANS_FACTOR, {\n Infinity: Infinity,\n \"-Infinity\": Infinity,\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\nconst DEGREES_FACTOR = 180 / Math.PI;\n/** Converts a value from radians to degrees. */\nexport const $radiansToDegrees = createTrignometryOperator((n) => n * DEGREES_FACTOR, {\n Infinity: Infinity,\n \"-Infinity\": -Infinity,\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the sine of a value that is measured in radians. */\nexport const $sin = createTrignometryOperator(Math.sin);\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the hyperbolic sine of a value that is measured in radians. */\nexport const $sinh = createTrignometryOperator(Math.sinh, {\n \"-Infinity\": -Infinity,\n Infinity: Infinity,\n});\n","// Trignometry Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#trigonometry-expression-operators\nimport { createTrignometryOperator } from \"./_internal\";\n/** Returns the tangent of a value that is measured in radians. */\nexport const $tan = createTrignometryOperator(Math.tan);\n","import { ComputeOptions, computeValue, getOperator, OperatorType } from \"../../core\";\nimport { assert, ensureArray, filterMissing, has, inArray, into, isEmpty, isNil, isNumber, isObject, isOperator, isString, merge, notInArray, removeValue, resolveGraph, setValue } from \"../../util\";\n/**\n * Reshapes a document stream.\n * $project can rename, add, or remove fields as well as create computed values and sub-documents.\n *\n * @param collection\n * @param expr\n * @param opt\n * @returns {Array}\n */\nexport const $project = (collection, expr, options) => {\n if (isEmpty(expr))\n return collection;\n // result collection\n let expressionKeys = Object.keys(expr);\n let idOnlyExcluded = false;\n // validate inclusion and exclusion\n validateExpression(expr, options);\n const ID_KEY = options.idKey;\n if (inArray(expressionKeys, ID_KEY)) {\n const id = expr[ID_KEY];\n if (id === 0 || id === false) {\n expressionKeys = expressionKeys.filter(notInArray.bind(null, [ID_KEY]));\n idOnlyExcluded = expressionKeys.length == 0;\n }\n }\n else {\n // if not specified the add the ID field\n expressionKeys.push(ID_KEY);\n }\n const copts = ComputeOptions.init(options);\n return collection.map(((obj) => processObject(obj, expr, copts.update(obj), expressionKeys, idOnlyExcluded)));\n};\n/**\n * Process the expression value for $project operators\n *\n * @param {Object} obj The object to use as options\n * @param {Object} expr The experssion object of $project operator\n * @param {Array} expressionKeys The key in the 'expr' object\n * @param {Boolean} idOnlyExcluded Boolean value indicating whether only the ID key is excluded\n */\nfunction processObject(obj, expr, options, expressionKeys, idOnlyExcluded) {\n let newObj = {};\n let foundSlice = false;\n let foundExclusion = false;\n const dropKeys = [];\n if (idOnlyExcluded) {\n dropKeys.push(options.idKey);\n }\n for (const key of expressionKeys) {\n // final computed value of the key\n let value = undefined;\n // expression to associate with key\n const subExpr = expr[key];\n if (key !== options.idKey && inArray([0, false], subExpr)) {\n foundExclusion = true;\n }\n if (key === options.idKey && isEmpty(subExpr)) {\n // tiny optimization here to skip over id\n value = obj[key];\n }\n else if (isString(subExpr)) {\n value = computeValue(obj, subExpr, key, options);\n }\n else if (inArray([1, true], subExpr)) {\n // For direct projections, we use the resolved object value\n }\n else if (subExpr instanceof Array) {\n value = subExpr.map(v => {\n const r = computeValue(obj, v, null, options);\n if (isNil(r))\n return null;\n return r;\n });\n }\n else if (isObject(subExpr)) {\n const subExprObj = subExpr;\n const subExprKeys = Object.keys(subExpr);\n const operator = subExprKeys.length == 1 ? subExprKeys[0] : \"\";\n // first try a projection operator\n const call = getOperator(OperatorType.PROJECTION, operator, options);\n if (call) {\n // apply the projection operator on the operator expression for the key\n if (operator === \"$slice\") {\n // $slice is handled differently for aggregation and projection operations\n if (ensureArray(subExprObj[operator]).every(isNumber)) {\n // $slice for projection operation\n value = call(obj, subExprObj[operator], key, options);\n foundSlice = true;\n }\n else {\n // $slice for aggregation operation\n value = computeValue(obj, subExprObj, key, options);\n }\n }\n else {\n value = call(obj, subExprObj[operator], key, options);\n }\n }\n else if (isOperator(operator)) {\n // compute if operator key\n value = computeValue(obj, subExprObj[operator], operator, options);\n }\n else if (has(obj, key)) {\n // compute the value for the sub expression for the key\n validateExpression(subExprObj, options);\n let target = obj[key];\n if (target instanceof Array) {\n value = target.map((o) => processObject(o, subExprObj, options, subExprKeys, false));\n }\n else {\n target = isObject(target) ? target : obj;\n value = processObject(target, subExprObj, options, subExprKeys, false);\n }\n }\n else {\n // compute the value for the sub expression for the key\n value = computeValue(obj, subExpr, null, options);\n }\n }\n else {\n dropKeys.push(key);\n continue;\n }\n // get value with object graph\n const objPathGraph = resolveGraph(obj, key, {\n preserveMissing: true\n });\n // add the value at the path\n if (objPathGraph !== undefined) {\n merge(newObj, objPathGraph, {\n flatten: true\n });\n }\n // if computed add/or remove accordingly\n if (notInArray([0, 1, false, true], subExpr)) {\n if (value === undefined) {\n removeValue(newObj, key, { descendArray: true });\n }\n else {\n setValue(newObj, key, value);\n }\n }\n }\n // filter out all missing values preserved to support correct merging\n filterMissing(newObj);\n // For the following cases we include all keys on the object that were not explicitly excluded.\n //\n // 1. projection included $slice operator\n // 2. some fields were explicitly excluded\n // 3. only the id field was excluded\n if (foundSlice || foundExclusion || idOnlyExcluded) {\n newObj = into({}, obj, newObj);\n if (dropKeys.length > 0) {\n for (const k of dropKeys) {\n removeValue(newObj, k, { descendArray: true });\n }\n }\n }\n return newObj;\n}\n/**\n * Validate inclusion and exclusion values in expression\n *\n * @param {Object} expr The expression given for the projection\n */\nfunction validateExpression(expr, options) {\n const check = [false, false];\n for (const [k, v] of Object.entries(expr)) {\n if (k === (options === null || options === void 0 ? void 0 : options.idKey))\n return;\n if (v === 0 || v === false) {\n check[0] = true;\n }\n else if (v === 1 || v === true) {\n check[1] = true;\n }\n assert(!(check[0] && check[1]), \"Projection cannot have a mix of inclusion and exclusion.\");\n }\n}\n","// Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\nimport { Query } from \"../../../query\";\nimport { assert, isArray } from \"../../../util\";\n/**\n * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.\n *\n * @param selector\n * @param rhs\n * @returns {Function}\n */\nexport const $and = (_, rhs, options) => {\n assert(isArray(rhs), \"Invalid expression: $and expects value to be an Array.\");\n const queries = rhs.map(expr => new Query(expr, options));\n return (obj) => queries.every(q => q.test(obj));\n};\n","// Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\nimport { Query } from \"../../../query\";\nimport { assert, isArray } from \"../../../util\";\n/**\n * Joins query clauses with a logical OR returns all documents that match the conditions of either clause.\n *\n * @param selector\n * @param rhs\n * @returns {Function}\n */\nexport const $or = (_, rhs, options) => {\n assert(isArray(rhs), \"Invalid expression. $or expects value to be an Array\");\n const queries = rhs.map(expr => new Query(expr, options));\n return (obj) => queries.some(q => q.test(obj));\n};\n","// Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\nimport { assert, isArray } from \"../../../util\";\nimport { $or } from \"./or\";\n/**\n * Joins query clauses with a logical NOR returns all documents that fail to match both clauses.\n *\n * @param selector\n * @param rhs\n * @returns {Function}\n */\nexport const $nor = (_, rhs, options) => {\n assert(isArray(rhs), \"Invalid expression. $nor expects value to be an array.\");\n const f = $or(\"$or\", rhs, options);\n return (obj) => !f(obj);\n};\n","// Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\nimport { Query } from \"../../../query\";\nimport { normalize } from \"../../../util\";\n/**\n * Inverts the effect of a query expression and returns documents that do not match the query expression.\n *\n * @param selector\n * @param rhs\n * @returns {Function}\n */\nexport const $not = (selector, rhs, options) => {\n const criteria = {};\n criteria[selector] = normalize(rhs);\n const query = new Query(criteria, options);\n return (obj) => !query.test(obj);\n};\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $eq as __eq, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches values that are equal to a specified value.\n */\nexport const $eq = createQueryOperator(__eq);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $gt as __gt, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches values that are greater than a specified value.\n */\nexport const $gt = createQueryOperator(__gt);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $gte as __gte, createQueryOperator } from \"../../_predicates\";\n/**\n * \tMatches values that are greater than or equal to a specified value.\n */\nexport const $gte = createQueryOperator(__gte);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $in as __in, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches any of the values that exist in an array specified in the query.\n */\nexport const $in = createQueryOperator(__in);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $lt as __lt, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches values that are less than the value specified in the query.\n */\nexport const $lt = createQueryOperator(__lt);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $lte as __lte, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches values that are less than or equal to the value specified in the query.\n */\nexport const $lte = createQueryOperator(__lte);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $ne as __ne, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches all values that are not equal to the value specified in the query.\n */\nexport const $ne = createQueryOperator(__ne);\n","// Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\nimport { $nin as __nin, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches values that do not exist in an array specified to the query.\n */\nexport const $nin = createQueryOperator(__nin);\n","// Query Evaluation Operators: https://docs.mongodb.com/manual/reference/operator/query-evaluation/\nimport { $mod as __mod, createQueryOperator } from \"../../_predicates\";\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n */\nexport const $mod = createQueryOperator(__mod);\n","// Query Evaluation Operators: https://docs.mongodb.com/manual/reference/operator/query-evaluation/\nimport { $regex as __regex, createQueryOperator } from \"../../_predicates\";\n/**\n * Selects documents where values match a specified regular expression.\n */\nexport const $regex = createQueryOperator(__regex);\n","// Query Array Operators: https://docs.mongodb.com/manual/reference/operator/query-array/\nimport { $all as __all, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches arrays that contain all elements specified in the query.\n */\nexport const $all = createQueryOperator(__all);\n","// Query Array Operators: https://docs.mongodb.com/manual/reference/operator/query-array/\nimport { $elemMatch as __elemMatch, createQueryOperator, } from \"../../_predicates\";\n/**\n * Selects documents if element in the array field matches all the specified $elemMatch conditions.\n */\nexport const $elemMatch = createQueryOperator(__elemMatch);\n","// Query Array Operators: https://docs.mongodb.com/manual/reference/operator/query-array/\nimport { $size as __size, createQueryOperator } from \"../../_predicates\";\n/**\n * Selects documents if the array field is a specified size.\n */\nexport const $size = createQueryOperator(__size);\n","// Query Element Operators: https://docs.mongodb.com/manual/reference/operator/query-element/\nimport { $exists as __exists, createQueryOperator } from \"../../_predicates\";\n/**\n * Matches documents that have the specified field.\n */\nexport const $exists = createQueryOperator(__exists);\n","// Query Element Operators: https://docs.mongodb.com/manual/reference/operator/query-element/\nimport { $type as __type, createQueryOperator } from \"../../_predicates\";\n/**\n * Selects documents if a field is of the specified type.\n */\nexport const $type = createQueryOperator(__type);\n","import { useOperators, OperatorType } from 'mingo/core';\nimport { Query } from 'mingo/query';\nimport { $project, $sort } from 'mingo/operators/pipeline';\nimport { $and, $not, $or, $nor } from 'mingo/operators/query/logical';\nimport { $eq, $ne, $gt, $gte, $lt, $lte, $nin, $in } from 'mingo/operators/query/comparison';\nimport { $regex, $mod } from 'mingo/operators/query/evaluation';\nimport { $elemMatch, $size } from 'mingo/operators/query/array';\nimport { $exists, $type } from 'mingo/operators/query/element';\nvar mingoInitDone = false;\n\n/**\n * The MongoDB query library is huge and we do not need all the operators.\n * If you add an operator here, make sure that you properly add a test in\n * the file /test/unit/rx-storage-query-correctness.test.ts\n *\n * @link https://github.com/kofrasa/mingo#es6\n */\nexport function getMingoQuery(selector) {\n if (!mingoInitDone) {\n useOperators(OperatorType.PIPELINE, {\n $sort,\n $project\n });\n useOperators(OperatorType.QUERY, {\n $and,\n $eq,\n $elemMatch,\n $exists,\n $gt,\n $gte,\n $in,\n $lt,\n $lte,\n $ne,\n $nin,\n $mod,\n $nor,\n $not,\n $or,\n $regex,\n $size,\n $type\n });\n mingoInitDone = true;\n }\n return new Query(selector);\n}\n//# sourceMappingURL=rx-query-mingo.js.map","import { LOGICAL_OPERATORS } from \"./query-planner.js\";\nimport { getPrimaryFieldOfPrimaryKey } from \"./rx-schema-helper.js\";\nimport { clone, firstPropertyNameOfObject, toArray, isMaybeReadonlyArray, flatClone, objectPathMonad } from \"./plugins/utils/index.js\";\nimport { compare as mingoSortComparator } from 'mingo/util';\nimport { newRxError } from \"./rx-error.js\";\nimport { getMingoQuery } from \"./rx-query-mingo.js\";\n\n/**\n * Normalize the query to ensure we have all fields set\n * and queries that represent the same query logic are detected as equal by the caching.\n */\nexport function normalizeMangoQuery(schema, mangoQuery) {\n var primaryKey = getPrimaryFieldOfPrimaryKey(schema.primaryKey);\n mangoQuery = flatClone(mangoQuery);\n var normalizedMangoQuery = clone(mangoQuery);\n if (typeof normalizedMangoQuery.skip !== 'number') {\n normalizedMangoQuery.skip = 0;\n }\n if (!normalizedMangoQuery.selector) {\n normalizedMangoQuery.selector = {};\n } else {\n normalizedMangoQuery.selector = normalizedMangoQuery.selector;\n /**\n * In mango query, it is possible to have an\n * equals comparison by directly assigning a value\n * to a property, without the '$eq' operator.\n * Like:\n * selector: {\n * foo: 'bar'\n * }\n * For normalization, we have to normalize this\n * so our checks can perform properly.\n *\n *\n * TODO this must work recursive with nested queries that\n * contain multiple selectors via $and or $or etc.\n */\n Object.entries(normalizedMangoQuery.selector).forEach(([field, matcher]) => {\n if (typeof matcher !== 'object' || matcher === null) {\n normalizedMangoQuery.selector[field] = {\n $eq: matcher\n };\n }\n });\n }\n\n /**\n * Ensure that if an index is specified,\n * the primaryKey is inside of it.\n */\n if (normalizedMangoQuery.index) {\n var indexAr = toArray(normalizedMangoQuery.index);\n if (!indexAr.includes(primaryKey)) {\n indexAr.push(primaryKey);\n }\n normalizedMangoQuery.index = indexAr;\n }\n\n /**\n * To ensure a deterministic sorting,\n * we have to ensure the primary key is always part\n * of the sort query.\n * Primary sorting is added as last sort parameter,\n * similar to how we add the primary key to indexes that do not have it.\n *\n */\n if (!normalizedMangoQuery.sort) {\n /**\n * If no sort is given at all,\n * we can assume that the user does not care about sort order at al.\n *\n * we cannot just use the primary key as sort parameter\n * because it would likely cause the query to run over the primary key index\n * which has a bad performance in most cases.\n */\n if (normalizedMangoQuery.index) {\n normalizedMangoQuery.sort = normalizedMangoQuery.index.map(field => {\n return {\n [field]: 'asc'\n };\n });\n } else {\n /**\n * Find the index that best matches the fields with the logical operators\n */\n if (schema.indexes) {\n var fieldsWithLogicalOperator = new Set();\n Object.entries(normalizedMangoQuery.selector).forEach(([field, matcher]) => {\n var hasLogical = false;\n if (typeof matcher === 'object' && matcher !== null) {\n hasLogical = !!Object.keys(matcher).find(operator => LOGICAL_OPERATORS.has(operator));\n } else {\n hasLogical = true;\n }\n if (hasLogical) {\n fieldsWithLogicalOperator.add(field);\n }\n });\n var currentFieldsAmount = -1;\n var currentBestIndexForSort;\n schema.indexes.forEach(index => {\n var useIndex = isMaybeReadonlyArray(index) ? index : [index];\n var firstWrongIndex = useIndex.findIndex(indexField => !fieldsWithLogicalOperator.has(indexField));\n if (firstWrongIndex > 0 && firstWrongIndex > currentFieldsAmount) {\n currentFieldsAmount = firstWrongIndex;\n currentBestIndexForSort = useIndex;\n }\n });\n if (currentBestIndexForSort) {\n normalizedMangoQuery.sort = currentBestIndexForSort.map(field => {\n return {\n [field]: 'asc'\n };\n });\n }\n }\n\n /**\n * Fall back to the primary key as sort order\n * if no better one has been found\n */\n if (!normalizedMangoQuery.sort) {\n normalizedMangoQuery.sort = [{\n [primaryKey]: 'asc'\n }];\n }\n }\n } else {\n var isPrimaryInSort = normalizedMangoQuery.sort.find(p => firstPropertyNameOfObject(p) === primaryKey);\n if (!isPrimaryInSort) {\n normalizedMangoQuery.sort = normalizedMangoQuery.sort.slice(0);\n normalizedMangoQuery.sort.push({\n [primaryKey]: 'asc'\n });\n }\n }\n return normalizedMangoQuery;\n}\n\n/**\n * Returns the sort-comparator,\n * which is able to sort documents in the same way\n * a query over the db would do.\n */\nexport function getSortComparator(schema, query) {\n if (!query.sort) {\n throw newRxError('SNH', {\n query\n });\n }\n var sortParts = [];\n query.sort.forEach(sortBlock => {\n var key = Object.keys(sortBlock)[0];\n var direction = Object.values(sortBlock)[0];\n sortParts.push({\n key,\n direction,\n getValueFn: objectPathMonad(key)\n });\n });\n var fun = (a, b) => {\n for (var i = 0; i < sortParts.length; ++i) {\n var sortPart = sortParts[i];\n var valueA = sortPart.getValueFn(a);\n var valueB = sortPart.getValueFn(b);\n if (valueA !== valueB) {\n var ret = sortPart.direction === 'asc' ? mingoSortComparator(valueA, valueB) : mingoSortComparator(valueB, valueA);\n return ret;\n }\n }\n };\n return fun;\n}\n\n/**\n * Returns a function\n * that can be used to check if a document\n * matches the query.\n */\nexport function getQueryMatcher(_schema, query) {\n if (!query.sort) {\n throw newRxError('SNH', {\n query\n });\n }\n var mingoQuery = getMingoQuery(query.selector);\n var fun = doc => {\n return mingoQuery.test(doc);\n };\n return fun;\n}\n//# sourceMappingURL=rx-query-helper.js.map","import { calculateActionName, runAction } from 'event-reduce-js';\nimport { rxChangeEventToEventReduceChangeEvent } from \"./rx-change-event.js\";\nimport { arrayFilterNotEmpty, clone, ensureNotFalsy, getFromMapOrCreate } from \"./plugins/utils/index.js\";\nimport { getQueryMatcher, getSortComparator, normalizeMangoQuery } from \"./rx-query-helper.js\";\nexport function getSortFieldsOfQuery(primaryKey, query) {\n if (!query.sort || query.sort.length === 0) {\n return [primaryKey];\n } else {\n return query.sort.map(part => Object.keys(part)[0]);\n }\n}\nexport var RXQUERY_QUERY_PARAMS_CACHE = new WeakMap();\nexport function getQueryParams(rxQuery) {\n return getFromMapOrCreate(RXQUERY_QUERY_PARAMS_CACHE, rxQuery, () => {\n var collection = rxQuery.collection;\n var normalizedMangoQuery = normalizeMangoQuery(collection.storageInstance.schema, clone(rxQuery.mangoQuery));\n var primaryKey = collection.schema.primaryPath;\n\n /**\n * Create a custom sort comparator\n * that uses the hooks to ensure\n * we send for example compressed documents to be sorted by compressed queries.\n */\n var sortComparator = getSortComparator(collection.schema.jsonSchema, normalizedMangoQuery);\n var useSortComparator = (docA, docB) => {\n var sortComparatorData = {\n docA,\n docB,\n rxQuery\n };\n return sortComparator(sortComparatorData.docA, sortComparatorData.docB);\n };\n\n /**\n * Create a custom query matcher\n * that uses the hooks to ensure\n * we send for example compressed documents to match compressed queries.\n */\n var queryMatcher = getQueryMatcher(collection.schema.jsonSchema, normalizedMangoQuery);\n var useQueryMatcher = doc => {\n var queryMatcherData = {\n doc,\n rxQuery\n };\n return queryMatcher(queryMatcherData.doc);\n };\n var ret = {\n primaryKey: rxQuery.collection.schema.primaryPath,\n skip: normalizedMangoQuery.skip,\n limit: normalizedMangoQuery.limit,\n sortFields: getSortFieldsOfQuery(primaryKey, normalizedMangoQuery),\n sortComparator: useSortComparator,\n queryMatcher: useQueryMatcher\n };\n return ret;\n });\n}\nexport function calculateNewResults(rxQuery, rxChangeEvents) {\n if (!rxQuery.collection.database.eventReduce) {\n return {\n runFullQueryAgain: true\n };\n }\n var queryParams = getQueryParams(rxQuery);\n var previousResults = ensureNotFalsy(rxQuery._result).docsData.slice(0);\n var previousResultsMap = ensureNotFalsy(rxQuery._result).docsDataMap;\n var changed = false;\n var eventReduceEvents = rxChangeEvents.map(cE => rxChangeEventToEventReduceChangeEvent(cE)).filter(arrayFilterNotEmpty);\n var foundNonOptimizeable = eventReduceEvents.find(eventReduceEvent => {\n var stateResolveFunctionInput = {\n queryParams,\n changeEvent: eventReduceEvent,\n previousResults,\n keyDocumentMap: previousResultsMap\n };\n var actionName = calculateActionName(stateResolveFunctionInput);\n if (actionName === 'runFullQueryAgain') {\n return true;\n } else if (actionName !== 'doNothing') {\n changed = true;\n runAction(actionName, queryParams, eventReduceEvent, previousResults, previousResultsMap);\n return false;\n }\n });\n if (foundNonOptimizeable) {\n return {\n runFullQueryAgain: true\n };\n } else {\n return {\n runFullQueryAgain: false,\n changed,\n newResults: previousResults\n };\n }\n}\n//# sourceMappingURL=event-reduce.js.map","/**\n * the query-cache makes sure that on every query-state, exactly one instance can exist\n * if you use the same mango-query more then once, it will reuse the first RxQuery\n */\n\nimport { getFromMapOrCreate, nextTick, now, requestIdlePromise } from \"./plugins/utils/index.js\";\nexport var QueryCache = /*#__PURE__*/function () {\n function QueryCache() {\n this._map = new Map();\n }\n var _proto = QueryCache.prototype;\n /**\n * check if an equal query is in the cache,\n * if true, return the cached one,\n * if false, save the given one and return it\n */\n _proto.getByQuery = function getByQuery(rxQuery) {\n var stringRep = rxQuery.toString();\n return getFromMapOrCreate(this._map, stringRep, () => rxQuery);\n };\n return QueryCache;\n}();\nexport function createQueryCache() {\n return new QueryCache();\n}\nexport function uncacheRxQuery(queryCache, rxQuery) {\n rxQuery.uncached = true;\n var stringRep = rxQuery.toString();\n queryCache._map.delete(stringRep);\n}\nexport function countRxQuerySubscribers(rxQuery) {\n return rxQuery.refCount$.observers.length;\n}\nexport var DEFAULT_TRY_TO_KEEP_MAX = 100;\nexport var DEFAULT_UNEXECUTED_LIFETIME = 30 * 1000;\n\n/**\n * The default cache replacement policy\n * See docs-src/query-cache.md to learn how it should work.\n * Notice that this runs often and should block the cpu as less as possible\n * This is a monad which makes it easier to unit test\n */\nexport var defaultCacheReplacementPolicyMonad = (tryToKeepMax, unExecutedLifetime) => (_collection, queryCache) => {\n if (queryCache._map.size < tryToKeepMax) {\n return;\n }\n var minUnExecutedLifetime = now() - unExecutedLifetime;\n var maybeUncache = [];\n var queriesInCache = Array.from(queryCache._map.values());\n for (var rxQuery of queriesInCache) {\n // filter out queries with subscribers\n if (countRxQuerySubscribers(rxQuery) > 0) {\n continue;\n }\n // directly uncache queries that never executed and are older then unExecutedLifetime\n if (rxQuery._lastEnsureEqual === 0 && rxQuery._creationTime < minUnExecutedLifetime) {\n uncacheRxQuery(queryCache, rxQuery);\n continue;\n }\n maybeUncache.push(rxQuery);\n }\n var mustUncache = maybeUncache.length - tryToKeepMax;\n if (mustUncache <= 0) {\n return;\n }\n var sortedByLastUsage = maybeUncache.sort((a, b) => a._lastEnsureEqual - b._lastEnsureEqual);\n var toRemove = sortedByLastUsage.slice(0, mustUncache);\n toRemove.forEach(rxQuery => uncacheRxQuery(queryCache, rxQuery));\n};\nexport var defaultCacheReplacementPolicy = defaultCacheReplacementPolicyMonad(DEFAULT_TRY_TO_KEEP_MAX, DEFAULT_UNEXECUTED_LIFETIME);\nexport var COLLECTIONS_WITH_RUNNING_CLEANUP = new WeakSet();\n\n/**\n * Triggers the cache replacement policy after waitTime has passed.\n * We do not run this directly because at exactly the time a query is created,\n * we need all CPU to minimize latency.\n * Also this should not be triggered multiple times when waitTime is still waiting.\n */\nexport function triggerCacheReplacement(rxCollection) {\n if (COLLECTIONS_WITH_RUNNING_CLEANUP.has(rxCollection)) {\n // already started\n return;\n }\n COLLECTIONS_WITH_RUNNING_CLEANUP.add(rxCollection);\n\n /**\n * Do not run directly to not reduce result latency of a new query\n */\n nextTick() // wait at least one tick\n .then(() => requestIdlePromise(200)) // and then wait for the CPU to be idle\n .then(() => {\n if (!rxCollection.destroyed) {\n rxCollection.cacheReplacementPolicy(rxCollection, rxCollection._queryCache);\n }\n COLLECTIONS_WITH_RUNNING_CLEANUP.delete(rxCollection);\n });\n}\n//# sourceMappingURL=query-cache.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport { getFromMapOrCreate, getFromMapOrThrow, getHeightOfRevision, overwriteGetterForCaching, requestIdlePromiseNoQueue } from \"./plugins/utils/index.js\";\nimport { overwritable } from \"./overwritable.js\";\nimport { getDocumentDataOfRxChangeEvent } from \"./rx-change-event.js\";\n\n/**\n * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n */\n\n/**\n * The DocumentCache stores RxDocument objects\n * by their primary key and revision.\n * This is useful on client side applications where\n * it is not known how much memory can be used, so\n * we de-duplicate RxDocument states to save memory.\n * To not fill up the memory with old document states, the DocumentCache\n * only contains weak references to the RxDocuments themself.\n * @link https://caniuse.com/?search=weakref\n */\nexport var DocumentCache = /*#__PURE__*/function () {\n /**\n * Some JavaScript runtimes like QuickJS,\n * so not have a FinalizationRegistry or WeakRef.\n * Therefore we need a workaround which might waste a lot of memory,\n * but at least works.\n */\n\n /**\n * Calling registry.register(() has shown to have\n * really bad performance. So we add the cached documents\n * lazily.\n */\n\n function DocumentCache(primaryPath, changes$,\n /**\n * A method that can create a RxDocument by the given document data.\n */\n documentCreator) {\n this.cacheItemByDocId = new Map();\n this.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(docMeta => {\n var docId = docMeta.docId;\n var cacheItem = this.cacheItemByDocId.get(docId);\n if (cacheItem) {\n cacheItem.byRev.delete(docMeta.revisionHeight);\n if (cacheItem.byRev.size === 0) {\n /**\n * No state of the document is cached anymore,\n * so we can clean up.\n */\n this.cacheItemByDocId.delete(docId);\n }\n }\n }) : undefined;\n this.registerIdleTasks = [];\n this.primaryPath = primaryPath;\n this.changes$ = changes$;\n this.documentCreator = documentCreator;\n changes$.subscribe(changeEvent => {\n var docId = changeEvent.documentId;\n var cacheItem = this.cacheItemByDocId.get(docId);\n if (cacheItem) {\n var documentData = getDocumentDataOfRxChangeEvent(changeEvent);\n cacheItem.last = documentData;\n }\n });\n }\n\n /**\n * Get the RxDocument from the cache\n * and create a new one if not exits before.\n * @overwrites itself with the actual function\n * because this is @performance relevant.\n * It is called on each document row for each write and read.\n */\n var _proto = DocumentCache.prototype;\n /**\n * Throws if not exists\n */\n _proto.getLatestDocumentData = function getLatestDocumentData(docId) {\n var cacheItem = getFromMapOrThrow(this.cacheItemByDocId, docId);\n return cacheItem.last;\n };\n _proto.getLatestDocumentDataIfExists = function getLatestDocumentDataIfExists(docId) {\n var cacheItem = this.cacheItemByDocId.get(docId);\n if (cacheItem) {\n return cacheItem.last;\n }\n };\n _createClass(DocumentCache, [{\n key: \"getCachedRxDocument\",\n get: function () {\n var fn = getCachedRxDocumentMonad(this);\n return overwriteGetterForCaching(this, 'getCachedRxDocument', fn);\n }\n }]);\n return DocumentCache;\n}();\n\n/**\n * This function is called very very often.\n * This is likely the most important function for RxDB overall performance\n */\nfunction getCachedRxDocumentMonad(docCache) {\n var primaryPath = docCache.primaryPath;\n var cacheItemByDocId = docCache.cacheItemByDocId;\n var registry = docCache.registry;\n var deepFreezeWhenDevMode = overwritable.deepFreezeWhenDevMode;\n var documentCreator = docCache.documentCreator;\n var fn = docData => {\n var docId = docData[primaryPath];\n var revisionHeight = getHeightOfRevision(docData._rev);\n var cacheItem = getFromMapOrCreate(cacheItemByDocId, docId, () => getNewCacheItem(docData));\n var byRev = cacheItem.byRev;\n var cachedRxDocumentWeakRef = byRev.get(revisionHeight);\n var cachedRxDocument = cachedRxDocumentWeakRef ? cachedRxDocumentWeakRef.deref() : undefined;\n if (!cachedRxDocument) {\n docData = deepFreezeWhenDevMode(docData);\n cachedRxDocument = documentCreator(docData);\n byRev.set(revisionHeight, createWeakRefWithFallback(cachedRxDocument));\n if (registry) {\n docCache.registerIdleTasks.push(cachedRxDocument);\n if (!docCache.registerIdlePromise) {\n docCache.registerIdlePromise = requestIdlePromiseNoQueue().then(() => {\n docCache.registerIdlePromise = undefined;\n var tasks = docCache.registerIdleTasks;\n if (tasks.length === 0) {\n return;\n }\n docCache.registerIdleTasks = [];\n tasks.forEach(doc => {\n registry.register(doc, {\n docId: doc.primary,\n revisionHeight: getHeightOfRevision(doc.revision)\n });\n });\n });\n }\n }\n }\n return cachedRxDocument;\n };\n return fn;\n}\nexport function mapDocumentsDataToCacheDocs(docCache, docsData) {\n var getCachedRxDocument = docCache.getCachedRxDocument;\n var documents = [];\n for (var i = 0; i < docsData.length; i++) {\n var _docData = docsData[i];\n var doc = getCachedRxDocument(_docData);\n documents.push(doc);\n }\n return documents;\n}\nfunction getNewCacheItem(docData) {\n return {\n byRev: new Map(),\n last: docData\n };\n}\n\n/**\n * Fallback for JavaScript runtimes that do not support WeakRef.\n * The fallback will keep the items in cache forever,\n * but at least works.\n */\nvar HAS_WEAK_REF = typeof WeakRef === 'function';\nvar createWeakRefWithFallback = HAS_WEAK_REF ? createWeakRef : createWeakRefFallback;\nfunction createWeakRef(obj) {\n return new WeakRef(obj);\n}\nfunction createWeakRefFallback(obj) {\n return {\n deref() {\n return obj;\n }\n };\n}\n//# sourceMappingURL=doc-cache.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport { mapDocumentsDataToCacheDocs } from \"./doc-cache.js\";\nimport { now, overwriteGetterForCaching } from \"./plugins/utils/index.js\";\n/**\n * RxDB needs the query results in multiple formats.\n * Sometimes as a Map or an array with only the documentData.\n * For better performance we work with this class\n * that initializes stuff lazily so that\n * we can directly work with the query results after RxQuery.exec()\n */\nexport var RxQuerySingleResult = /*#__PURE__*/function () {\n /**\n * Time at which the current _result state was created.\n * Used to determine if the result set has changed since X\n * so that we do not emit the same result multiple times on subscription.\n */\n\n function RxQuerySingleResult(collection,\n // only used internally, do not use outside, use this.docsData instead\n docsDataFromStorageInstance,\n // can be overwritten for count-queries\n count) {\n this.time = now();\n this.collection = collection;\n this.count = count;\n this.documents = mapDocumentsDataToCacheDocs(this.collection._docCache, docsDataFromStorageInstance);\n }\n\n /**\n * Instead of using the newResultData in the result cache,\n * we directly use the objects that are stored in the RxDocument\n * to ensure we do not store the same data twice and fill up the memory.\n * @overwrites itself with the actual value\n */\n _createClass(RxQuerySingleResult, [{\n key: \"docsData\",\n get: function () {\n return overwriteGetterForCaching(this, 'docsData', this.documents.map(d => d._data));\n }\n\n // A key->document map, used in the event reduce optimization.\n }, {\n key: \"docsDataMap\",\n get: function () {\n var map = new Map();\n this.documents.forEach(d => {\n map.set(d.primary, d._data);\n });\n return overwriteGetterForCaching(this, 'docsDataMap', map);\n }\n }, {\n key: \"docsMap\",\n get: function () {\n var map = new Map();\n var documents = this.documents;\n for (var i = 0; i < documents.length; i++) {\n var doc = documents[i];\n map.set(doc.primary, doc);\n }\n return overwriteGetterForCaching(this, 'docsMap', map);\n }\n }]);\n return RxQuerySingleResult;\n}();\n//# sourceMappingURL=rx-query-single-result.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport { BehaviorSubject, firstValueFrom, merge } from 'rxjs';\nimport { mergeMap, filter, map, startWith, distinctUntilChanged, shareReplay } from 'rxjs/operators';\nimport { sortObject, pluginMissing, overwriteGetterForCaching, now, PROMISE_RESOLVE_FALSE, RXJS_SHARE_REPLAY_DEFAULTS, ensureNotFalsy, areRxDocumentArraysEqual, appendToArray } from \"./plugins/utils/index.js\";\nimport { newRxError } from \"./rx-error.js\";\nimport { runPluginHooks } from \"./hooks.js\";\nimport { calculateNewResults } from \"./event-reduce.js\";\nimport { triggerCacheReplacement } from \"./query-cache.js\";\nimport { getQueryMatcher, normalizeMangoQuery } from \"./rx-query-helper.js\";\nimport { RxQuerySingleResult } from \"./rx-query-single-result.js\";\nimport { getQueryPlan } from \"./query-planner.js\";\nvar _queryCount = 0;\nvar newQueryID = function () {\n return ++_queryCount;\n};\nexport var RxQueryBase = /*#__PURE__*/function () {\n /**\n * Some stats then are used for debugging and cache replacement policies\n */\n\n // used in the query-cache to determine if the RxQuery can be cleaned up.\n\n // used to count the subscribers to the query\n\n /**\n * Contains the current result state\n * or null if query has not run yet.\n */\n\n function RxQueryBase(op, mangoQuery, collection,\n // used by some plugins\n other = {}) {\n this.id = newQueryID();\n this._execOverDatabaseCount = 0;\n this._creationTime = now();\n this._lastEnsureEqual = 0;\n this.uncached = false;\n this.refCount$ = new BehaviorSubject(null);\n this._result = null;\n this._latestChangeEvent = -1;\n this._lastExecStart = 0;\n this._lastExecEnd = 0;\n this._ensureEqualQueue = PROMISE_RESOLVE_FALSE;\n this.op = op;\n this.mangoQuery = mangoQuery;\n this.collection = collection;\n this.other = other;\n if (!mangoQuery) {\n this.mangoQuery = _getDefaultQuery();\n }\n this.isFindOneByIdQuery = isFindOneByIdQuery(this.collection.schema.primaryPath, mangoQuery);\n }\n var _proto = RxQueryBase.prototype;\n /**\n * Returns an observable that emits the results\n * This should behave like an rxjs-BehaviorSubject which means:\n * - Emit the current result-set on subscribe\n * - Emit the new result-set when an RxChangeEvent comes in\n * - Do not emit anything before the first result-set was created (no null)\n */\n /**\n * set the new result-data as result-docs of the query\n * @param newResultData json-docs that were received from the storage\n */\n _proto._setResultData = function _setResultData(newResultData) {\n if (typeof newResultData === 'number') {\n this._result = new RxQuerySingleResult(this.collection, [], newResultData);\n return;\n } else if (newResultData instanceof Map) {\n newResultData = Array.from(newResultData.values());\n }\n var newQueryResult = new RxQuerySingleResult(this.collection, newResultData, newResultData.length);\n this._result = newQueryResult;\n }\n\n /**\n * executes the query on the database\n * @return results-array with document-data\n */;\n _proto._execOverDatabase = async function _execOverDatabase() {\n this._execOverDatabaseCount = this._execOverDatabaseCount + 1;\n this._lastExecStart = now();\n if (this.op === 'count') {\n var preparedQuery = this.getPreparedQuery();\n var result = await this.collection.storageInstance.count(preparedQuery);\n if (result.mode === 'slow' && !this.collection.database.allowSlowCount) {\n throw newRxError('QU14', {\n collection: this.collection,\n queryObj: this.mangoQuery\n });\n } else {\n return result.count;\n }\n }\n if (this.op === 'findByIds') {\n var ids = ensureNotFalsy(this.mangoQuery.selector)[this.collection.schema.primaryPath].$in;\n var ret = new Map();\n var mustBeQueried = [];\n // first try to fill from docCache\n ids.forEach(id => {\n var docData = this.collection._docCache.getLatestDocumentDataIfExists(id);\n if (docData) {\n if (!docData._deleted) {\n var doc = this.collection._docCache.getCachedRxDocument(docData);\n ret.set(id, doc);\n }\n } else {\n mustBeQueried.push(id);\n }\n });\n // everything which was not in docCache must be fetched from the storage\n if (mustBeQueried.length > 0) {\n var docs = await this.collection.storageInstance.findDocumentsById(mustBeQueried, false);\n docs.forEach(docData => {\n var doc = this.collection._docCache.getCachedRxDocument(docData);\n ret.set(doc.primary, doc);\n });\n }\n return ret;\n }\n var docsPromise = queryCollection(this);\n return docsPromise.then(docs => {\n this._lastExecEnd = now();\n return docs;\n });\n }\n\n /**\n * Execute the query\n * To have an easier implementations,\n * just subscribe and use the first result\n */;\n _proto.exec = function exec(throwIfMissing) {\n if (throwIfMissing && this.op !== 'findOne') {\n throw newRxError('QU9', {\n collection: this.collection.name,\n query: this.mangoQuery,\n op: this.op\n });\n }\n\n /**\n * run _ensureEqual() here,\n * this will make sure that errors in the query which throw inside of the RxStorage,\n * will be thrown at this execution context and not in the background.\n */\n return _ensureEqual(this).then(() => firstValueFrom(this.$)).then(result => {\n if (!result && throwIfMissing) {\n throw newRxError('QU10', {\n collection: this.collection.name,\n query: this.mangoQuery,\n op: this.op\n });\n } else {\n return result;\n }\n });\n }\n\n /**\n * cached call to get the queryMatcher\n * @overwrites itself with the actual value\n */;\n /**\n * returns a string that is used for equal-comparisons\n * @overwrites itself with the actual value\n */\n _proto.toString = function toString() {\n var stringObj = sortObject({\n op: this.op,\n query: this.mangoQuery,\n other: this.other\n }, true);\n var value = JSON.stringify(stringObj);\n this.toString = () => value;\n return value;\n }\n\n /**\n * returns the prepared query\n * which can be send to the storage instance to query for documents.\n * @overwrites itself with the actual value.\n */;\n _proto.getPreparedQuery = function getPreparedQuery() {\n var hookInput = {\n rxQuery: this,\n // can be mutated by the hooks so we have to deep clone first.\n mangoQuery: normalizeMangoQuery(this.collection.schema.jsonSchema, this.mangoQuery)\n };\n hookInput.mangoQuery.selector._deleted = {\n $eq: false\n };\n if (hookInput.mangoQuery.index) {\n hookInput.mangoQuery.index.unshift('_deleted');\n }\n runPluginHooks('prePrepareQuery', hookInput);\n var value = prepareQuery(this.collection.schema.jsonSchema, hookInput.mangoQuery);\n this.getPreparedQuery = () => value;\n return value;\n }\n\n /**\n * returns true if the document matches the query,\n * does not use the 'skip' and 'limit'\n */;\n _proto.doesDocumentDataMatch = function doesDocumentDataMatch(docData) {\n // if doc is deleted, it cannot match\n if (docData._deleted) {\n return false;\n }\n return this.queryMatcher(docData);\n }\n\n /**\n * deletes all found documents\n * @return promise with deleted documents\n */;\n _proto.remove = function remove() {\n return this.exec().then(docs => {\n if (Array.isArray(docs)) {\n // TODO use a bulk operation instead of running .remove() on each document\n return Promise.all(docs.map(doc => doc.remove()));\n } else {\n return docs.remove();\n }\n });\n }\n\n /**\n * helper function to transform RxQueryBase to RxQuery type\n */;\n /**\n * updates all found documents\n * @overwritten by plugin (optional)\n */\n _proto.update = function update(_updateObj) {\n throw pluginMissing('update');\n }\n\n // we only set some methods of query-builder here\n // because the others depend on these ones\n ;\n _proto.where = function where(_queryObj) {\n throw pluginMissing('query-builder');\n };\n _proto.sort = function sort(_params) {\n throw pluginMissing('query-builder');\n };\n _proto.skip = function skip(_amount) {\n throw pluginMissing('query-builder');\n };\n _proto.limit = function limit(_amount) {\n throw pluginMissing('query-builder');\n };\n _createClass(RxQueryBase, [{\n key: \"$\",\n get: function () {\n if (!this._$) {\n var results$ = this.collection.$.pipe(\n /**\n * Performance shortcut.\n * Changes to local documents are not relevant for the query.\n */\n filter(changeEvent => !changeEvent.isLocal),\n /**\n * Start once to ensure the querying also starts\n * when there where no changes.\n */\n startWith(null),\n // ensure query results are up to date.\n mergeMap(() => _ensureEqual(this)),\n // use the current result set, written by _ensureEqual().\n map(() => this._result),\n // do not run stuff above for each new subscriber, only once.\n shareReplay(RXJS_SHARE_REPLAY_DEFAULTS),\n // do not proceed if result set has not changed.\n distinctUntilChanged((prev, curr) => {\n if (prev && prev.time === ensureNotFalsy(curr).time) {\n return true;\n } else {\n return false;\n }\n }), filter(result => !!result),\n /**\n * Map the result set to a single RxDocument or an array,\n * depending on query type\n */\n map(result => {\n var useResult = ensureNotFalsy(result);\n if (this.op === 'count') {\n return useResult.count;\n } else if (this.op === 'findOne') {\n // findOne()-queries emit RxDocument or null\n return useResult.documents.length === 0 ? null : useResult.documents[0];\n } else if (this.op === 'findByIds') {\n return useResult.docsMap;\n } else {\n // find()-queries emit RxDocument[]\n // Flat copy the array so it won't matter if the user modifies it.\n return useResult.documents.slice(0);\n }\n }));\n this._$ = merge(results$,\n /**\n * Also add the refCount$ to the query observable\n * to allow us to count the amount of subscribers.\n */\n this.refCount$.pipe(filter(() => false)));\n }\n return this._$;\n }\n }, {\n key: \"$$\",\n get: function () {\n var reactivity = this.collection.database.getReactivityFactory();\n return reactivity.fromObservable(this.$, undefined);\n }\n\n // stores the changeEvent-number of the last handled change-event\n\n // time stamps on when the last full exec over the database has run\n // used to properly handle events that happen while the find-query is running\n\n /**\n * ensures that the exec-runs\n * are not run in parallel\n */\n }, {\n key: \"queryMatcher\",\n get: function () {\n var schema = this.collection.schema.jsonSchema;\n var normalizedQuery = normalizeMangoQuery(this.collection.schema.jsonSchema, this.mangoQuery);\n return overwriteGetterForCaching(this, 'queryMatcher', getQueryMatcher(schema, normalizedQuery));\n }\n }, {\n key: \"asRxQuery\",\n get: function () {\n return this;\n }\n }]);\n return RxQueryBase;\n}();\nexport function _getDefaultQuery() {\n return {\n selector: {}\n };\n}\n\n/**\n * run this query through the QueryCache\n */\nexport function tunnelQueryCache(rxQuery) {\n return rxQuery.collection._queryCache.getByQuery(rxQuery);\n}\nexport function createRxQuery(op, queryObj, collection, other) {\n runPluginHooks('preCreateRxQuery', {\n op,\n queryObj,\n collection,\n other\n });\n var ret = new RxQueryBase(op, queryObj, collection, other);\n\n // ensure when created with same params, only one is created\n ret = tunnelQueryCache(ret);\n triggerCacheReplacement(collection);\n return ret;\n}\n\n/**\n * Check if the current results-state is in sync with the database\n * which means that no write event happened since the last run.\n * @return false if not which means it should re-execute\n */\nfunction _isResultsInSync(rxQuery) {\n var currentLatestEventNumber = rxQuery.asRxQuery.collection._changeEventBuffer.counter;\n if (rxQuery._latestChangeEvent >= currentLatestEventNumber) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * wraps __ensureEqual()\n * to ensure it does not run in parallel\n * @return true if has changed, false if not\n */\nfunction _ensureEqual(rxQuery) {\n // Optimisation shortcut\n if (rxQuery.collection.database.destroyed || _isResultsInSync(rxQuery)) {\n return PROMISE_RESOLVE_FALSE;\n }\n rxQuery._ensureEqualQueue = rxQuery._ensureEqualQueue.then(() => __ensureEqual(rxQuery));\n return rxQuery._ensureEqualQueue;\n}\n\n/**\n * ensures that the results of this query is equal to the results which a query over the database would give\n * @return true if results have changed\n */\nfunction __ensureEqual(rxQuery) {\n rxQuery._lastEnsureEqual = now();\n\n /**\n * Optimisation shortcuts\n */\n if (\n // db is closed\n rxQuery.collection.database.destroyed ||\n // nothing happened since last run\n _isResultsInSync(rxQuery)) {\n return PROMISE_RESOLVE_FALSE;\n }\n var ret = false;\n var mustReExec = false; // if this becomes true, a whole execution over the database is made\n if (rxQuery._latestChangeEvent === -1) {\n // have not executed yet -> must run\n mustReExec = true;\n }\n\n /**\n * try to use EventReduce to calculate the new results\n */\n if (!mustReExec) {\n var missedChangeEvents = rxQuery.asRxQuery.collection._changeEventBuffer.getFrom(rxQuery._latestChangeEvent + 1);\n if (missedChangeEvents === null) {\n // changeEventBuffer is of bounds -> we must re-execute over the database\n mustReExec = true;\n } else {\n rxQuery._latestChangeEvent = rxQuery.asRxQuery.collection._changeEventBuffer.counter;\n var runChangeEvents = rxQuery.asRxQuery.collection._changeEventBuffer.reduceByLastOfDoc(missedChangeEvents);\n if (rxQuery.op === 'count') {\n // 'count' query\n var previousCount = ensureNotFalsy(rxQuery._result).count;\n var newCount = previousCount;\n runChangeEvents.forEach(cE => {\n var didMatchBefore = cE.previousDocumentData && rxQuery.doesDocumentDataMatch(cE.previousDocumentData);\n var doesMatchNow = rxQuery.doesDocumentDataMatch(cE.documentData);\n if (!didMatchBefore && doesMatchNow) {\n newCount++;\n }\n if (didMatchBefore && !doesMatchNow) {\n newCount--;\n }\n });\n if (newCount !== previousCount) {\n ret = true; // true because results changed\n rxQuery._setResultData(newCount);\n }\n } else {\n // 'find' or 'findOne' query\n var eventReduceResult = calculateNewResults(rxQuery, runChangeEvents);\n if (eventReduceResult.runFullQueryAgain) {\n // could not calculate the new results, execute must be done\n mustReExec = true;\n } else if (eventReduceResult.changed) {\n // we got the new results, we do not have to re-execute, mustReExec stays false\n ret = true; // true because results changed\n rxQuery._setResultData(eventReduceResult.newResults);\n }\n }\n }\n }\n\n // oh no we have to re-execute the whole query over the database\n if (mustReExec) {\n return rxQuery._execOverDatabase().then(newResultData => {\n /**\n * The RxStorage is defined to always first emit events and then return\n * on bulkWrite() calls. So here we have to use the counter AFTER the execOverDatabase()\n * has been run, not the one from before.\n */\n rxQuery._latestChangeEvent = rxQuery.collection._changeEventBuffer.counter;\n\n // A count query needs a different has-changed check.\n if (typeof newResultData === 'number') {\n if (!rxQuery._result || newResultData !== rxQuery._result.count) {\n ret = true;\n rxQuery._setResultData(newResultData);\n }\n return ret;\n }\n if (!rxQuery._result || !areRxDocumentArraysEqual(rxQuery.collection.schema.primaryPath, newResultData, rxQuery._result.docsData)) {\n ret = true; // true because results changed\n rxQuery._setResultData(newResultData);\n }\n return ret;\n });\n }\n return Promise.resolve(ret); // true if results have changed\n}\n\n/**\n * @returns a format of the query that can be used with the storage\n * when calling RxStorageInstance().query()\n */\nexport function prepareQuery(schema, mutateableQuery) {\n if (!mutateableQuery.sort) {\n throw newRxError('SNH', {\n query: mutateableQuery\n });\n }\n\n /**\n * Store the query plan together with the\n * prepared query to save performance.\n */\n var queryPlan = getQueryPlan(schema, mutateableQuery);\n return {\n query: mutateableQuery,\n queryPlan\n };\n}\n\n/**\n * Runs the query over the storage instance\n * of the collection.\n * Does some optimizations to ensure findById is used\n * when specific queries are used.\n */\nexport async function queryCollection(rxQuery) {\n var docs = [];\n var collection = rxQuery.collection;\n\n /**\n * Optimizations shortcut.\n * If query is find-one-document-by-id,\n * then we do not have to use the slow query() method\n * but instead can use findDocumentsById()\n */\n if (rxQuery.isFindOneByIdQuery) {\n if (Array.isArray(rxQuery.isFindOneByIdQuery)) {\n var docIds = rxQuery.isFindOneByIdQuery;\n docIds = docIds.filter(docId => {\n // first try to fill from docCache\n var docData = rxQuery.collection._docCache.getLatestDocumentDataIfExists(docId);\n if (docData) {\n if (!docData._deleted) {\n docs.push(docData);\n }\n return false;\n } else {\n return true;\n }\n });\n // otherwise get from storage\n if (docIds.length > 0) {\n var docsFromStorage = await collection.storageInstance.findDocumentsById(docIds, false);\n appendToArray(docs, docsFromStorage);\n }\n } else {\n var docId = rxQuery.isFindOneByIdQuery;\n\n // first try to fill from docCache\n var docData = rxQuery.collection._docCache.getLatestDocumentDataIfExists(docId);\n if (!docData) {\n // otherwise get from storage\n var fromStorageList = await collection.storageInstance.findDocumentsById([docId], false);\n if (fromStorageList[0]) {\n docData = fromStorageList[0];\n }\n }\n if (docData && !docData._deleted) {\n docs.push(docData);\n }\n }\n } else {\n var preparedQuery = rxQuery.getPreparedQuery();\n var queryResult = await collection.storageInstance.query(preparedQuery);\n docs = queryResult.documents;\n }\n return docs;\n}\n\n/**\n * Returns true if the given query\n * selects exactly one document by its id.\n * Used to optimize performance because these kind of\n * queries do not have to run over an index and can use get-by-id instead.\n * Returns false if no query of that kind.\n * Returns the document id otherwise.\n */\nexport function isFindOneByIdQuery(primaryPath, query) {\n // must have exactly one operator which must be $eq || $in\n if (!query.skip && query.selector && Object.keys(query.selector).length === 1 && query.selector[primaryPath]) {\n var value = query.selector[primaryPath];\n if (typeof value === 'string') {\n return value;\n } else if (Object.keys(value).length === 1 && typeof value.$eq === 'string') {\n return value.$eq;\n }\n\n // same with $in string arrays\n if (Object.keys(value).length === 1 && Array.isArray(value.$eq) &&\n // must only contain strings\n !value.$eq.find(r => typeof r !== 'string')) {\n return value.$eq;\n }\n }\n return false;\n}\nexport function isRxQuery(obj) {\n return obj instanceof RxQueryBase;\n}\n//# sourceMappingURL=rx-query.js.map","/**\n * Helper functions for accessing the RxStorage instances.\n */\n\nimport { overwritable } from \"./overwritable.js\";\nimport { newRxError } from \"./rx-error.js\";\nimport { fillPrimaryKey, getPrimaryFieldOfPrimaryKey } from \"./rx-schema-helper.js\";\nimport { PROMISE_RESOLVE_TRUE, RXDB_VERSION, RX_META_LWT_MINIMUM, appendToArray, createRevision, ensureNotFalsy, flatClone, getDefaultRevision, getDefaultRxDocumentMeta, lastOfArray, now, promiseWait, randomCouchString } from \"./plugins/utils/index.js\";\nimport { filter, map, startWith, switchMap } from 'rxjs';\nimport { prepareQuery } from \"./rx-query.js\";\nimport { normalizeMangoQuery } from \"./rx-query-helper.js\";\nexport var INTERNAL_STORAGE_NAME = '_rxdb_internal';\nexport var RX_DATABASE_LOCAL_DOCS_STORAGE_NAME = 'rxdatabase_storage_local';\nexport async function getSingleDocument(storageInstance, documentId) {\n var results = await storageInstance.findDocumentsById([documentId], false);\n var doc = results[0];\n if (doc) {\n return doc;\n } else {\n return undefined;\n }\n}\n\n/**\n * Writes a single document,\n * throws RxStorageBulkWriteError on failure\n */\nexport async function writeSingle(instance, writeRow, context) {\n var writeResult = await instance.bulkWrite([writeRow], context);\n if (writeResult.error.length > 0) {\n var error = writeResult.error[0];\n throw error;\n } else {\n var ret = writeResult.success[0];\n return ret;\n }\n}\n\n/**\n * Observe the plain document data of a single document.\n * Do not forget to unsubscribe.\n */\nexport function observeSingle(storageInstance, documentId) {\n var firstFindPromise = getSingleDocument(storageInstance, documentId);\n var ret = storageInstance.changeStream().pipe(map(evBulk => evBulk.events.find(ev => ev.documentId === documentId)), filter(ev => !!ev), map(ev => Promise.resolve(ensureNotFalsy(ev).documentData)), startWith(firstFindPromise), switchMap(v => v), filter(v => !!v));\n return ret;\n}\n\n/**\n * Checkpoints must be stackable over another.\n * This is required form some RxStorage implementations\n * like the sharding plugin, where a checkpoint only represents\n * the document state from some, but not all shards.\n */\nexport function stackCheckpoints(checkpoints) {\n return Object.assign({}, ...checkpoints);\n}\nexport function storageChangeEventToRxChangeEvent(isLocal, rxStorageChangeEvent, rxCollection) {\n var documentData = rxStorageChangeEvent.documentData;\n var previousDocumentData = rxStorageChangeEvent.previousDocumentData;\n var ret = {\n documentId: rxStorageChangeEvent.documentId,\n collectionName: rxCollection ? rxCollection.name : undefined,\n isLocal,\n operation: rxStorageChangeEvent.operation,\n documentData: overwritable.deepFreezeWhenDevMode(documentData),\n previousDocumentData: overwritable.deepFreezeWhenDevMode(previousDocumentData)\n };\n return ret;\n}\nexport function throwIfIsStorageWriteError(collection, documentId, writeData, error) {\n if (error) {\n if (error.status === 409) {\n throw newRxError('CONFLICT', {\n collection: collection.name,\n id: documentId,\n writeError: error,\n data: writeData\n });\n } else if (error.status === 422) {\n throw newRxError('VD2', {\n collection: collection.name,\n id: documentId,\n writeError: error,\n data: writeData\n });\n } else {\n throw error;\n }\n }\n}\n\n/**\n * Analyzes a list of BulkWriteRows and determines\n * which documents must be inserted, updated or deleted\n * and which events must be emitted and which documents cause a conflict\n * and must not be written.\n * Used as helper inside of some RxStorage implementations.\n * @hotPath The performance of this function is critical\n */\nexport function categorizeBulkWriteRows(storageInstance, primaryPath,\n/**\n * Current state of the documents\n * inside of the storage. Used to determine\n * which writes cause conflicts.\n * This must be a Map for better performance.\n */\ndocsInDb,\n/**\n * The write rows that are passed to\n * RxStorageInstance().bulkWrite().\n */\nbulkWriteRows, context,\n/**\n * Used by some storages for better performance.\n * For example when get-by-id and insert/update can run in parallel.\n */\nonInsert, onUpdate) {\n var hasAttachments = !!storageInstance.schema.attachments;\n var bulkInsertDocs = [];\n var bulkUpdateDocs = [];\n var errors = [];\n var eventBulkId = randomCouchString(10);\n var eventBulk = {\n id: eventBulkId,\n events: [],\n checkpoint: null,\n context,\n startTime: now(),\n endTime: 0\n };\n var eventBulkEvents = eventBulk.events;\n var attachmentsAdd = [];\n var attachmentsRemove = [];\n var attachmentsUpdate = [];\n var hasDocsInDb = docsInDb.size > 0;\n var newestRow;\n\n /**\n * @performance is really important in this loop!\n */\n var rowAmount = bulkWriteRows.length;\n var _loop = function () {\n var writeRow = bulkWriteRows[rowId];\n\n // use these variables to have less property accesses\n var document = writeRow.document;\n var previous = writeRow.previous;\n var docId = document[primaryPath];\n var documentDeleted = document._deleted;\n var previousDeleted = previous && previous._deleted;\n var documentInDb = undefined;\n if (hasDocsInDb) {\n documentInDb = docsInDb.get(docId);\n }\n var attachmentError;\n if (!documentInDb) {\n /**\n * It is possible to insert already deleted documents,\n * this can happen on replication.\n */\n var insertedIsDeleted = documentDeleted ? true : false;\n if (hasAttachments) {\n Object.entries(document._attachments).forEach(([attachmentId, attachmentData]) => {\n if (!attachmentData.data) {\n attachmentError = {\n documentId: docId,\n isError: true,\n status: 510,\n writeRow,\n attachmentId\n };\n errors.push(attachmentError);\n } else {\n attachmentsAdd.push({\n documentId: docId,\n attachmentId,\n attachmentData: attachmentData,\n digest: attachmentData.digest\n });\n }\n });\n }\n if (!attachmentError) {\n if (hasAttachments) {\n bulkInsertDocs.push(stripAttachmentsDataFromRow(writeRow));\n if (onInsert) {\n onInsert(document);\n }\n } else {\n bulkInsertDocs.push(writeRow);\n if (onInsert) {\n onInsert(document);\n }\n }\n newestRow = writeRow;\n }\n if (!insertedIsDeleted) {\n var event = {\n documentId: docId,\n operation: 'INSERT',\n documentData: hasAttachments ? stripAttachmentsDataFromDocument(document) : document,\n previousDocumentData: hasAttachments && previous ? stripAttachmentsDataFromDocument(previous) : previous\n };\n eventBulkEvents.push(event);\n }\n } else {\n // update existing document\n var revInDb = documentInDb._rev;\n\n /**\n * Check for conflict\n */\n if (!previous || !!previous && revInDb !== previous._rev) {\n // is conflict error\n var err = {\n isError: true,\n status: 409,\n documentId: docId,\n writeRow: writeRow,\n documentInDb\n };\n errors.push(err);\n return 1; // continue\n }\n\n // handle attachments data\n\n var updatedRow = hasAttachments ? stripAttachmentsDataFromRow(writeRow) : writeRow;\n if (hasAttachments) {\n if (documentDeleted) {\n /**\n * Deleted documents must have cleared all their attachments.\n */\n if (previous) {\n Object.keys(previous._attachments).forEach(attachmentId => {\n attachmentsRemove.push({\n documentId: docId,\n attachmentId,\n digest: ensureNotFalsy(previous)._attachments[attachmentId].digest\n });\n });\n }\n } else {\n // first check for errors\n Object.entries(document._attachments).find(([attachmentId, attachmentData]) => {\n var previousAttachmentData = previous ? previous._attachments[attachmentId] : undefined;\n if (!previousAttachmentData && !attachmentData.data) {\n attachmentError = {\n documentId: docId,\n documentInDb: documentInDb,\n isError: true,\n status: 510,\n writeRow,\n attachmentId\n };\n }\n return true;\n });\n if (!attachmentError) {\n Object.entries(document._attachments).forEach(([attachmentId, attachmentData]) => {\n var previousAttachmentData = previous ? previous._attachments[attachmentId] : undefined;\n if (!previousAttachmentData) {\n attachmentsAdd.push({\n documentId: docId,\n attachmentId,\n attachmentData: attachmentData,\n digest: attachmentData.digest\n });\n } else {\n var newDigest = updatedRow.document._attachments[attachmentId].digest;\n if (attachmentData.data &&\n /**\n * Performance shortcut,\n * do not update the attachment data if it did not change.\n */\n previousAttachmentData.digest !== newDigest) {\n attachmentsUpdate.push({\n documentId: docId,\n attachmentId,\n attachmentData: attachmentData,\n digest: attachmentData.digest\n });\n }\n }\n });\n }\n }\n }\n if (attachmentError) {\n errors.push(attachmentError);\n } else {\n if (hasAttachments) {\n bulkUpdateDocs.push(stripAttachmentsDataFromRow(updatedRow));\n if (onUpdate) {\n onUpdate(document);\n }\n } else {\n bulkUpdateDocs.push(updatedRow);\n if (onUpdate) {\n onUpdate(document);\n }\n }\n newestRow = updatedRow;\n }\n var eventDocumentData = null;\n var previousEventDocumentData = null;\n var operation = null;\n if (previousDeleted && !documentDeleted) {\n operation = 'INSERT';\n eventDocumentData = hasAttachments ? stripAttachmentsDataFromDocument(document) : document;\n } else if (previous && !previousDeleted && !documentDeleted) {\n operation = 'UPDATE';\n eventDocumentData = hasAttachments ? stripAttachmentsDataFromDocument(document) : document;\n previousEventDocumentData = previous;\n } else if (documentDeleted) {\n operation = 'DELETE';\n eventDocumentData = ensureNotFalsy(document);\n previousEventDocumentData = previous;\n } else {\n throw newRxError('SNH', {\n args: {\n writeRow\n }\n });\n }\n var _event = {\n documentId: docId,\n documentData: eventDocumentData,\n previousDocumentData: previousEventDocumentData,\n operation: operation\n };\n eventBulkEvents.push(_event);\n }\n };\n for (var rowId = 0; rowId < rowAmount; rowId++) {\n if (_loop()) continue;\n }\n return {\n bulkInsertDocs,\n bulkUpdateDocs,\n newestRow,\n errors,\n eventBulk,\n attachmentsAdd,\n attachmentsRemove,\n attachmentsUpdate\n };\n}\nexport function stripAttachmentsDataFromRow(writeRow) {\n return {\n previous: writeRow.previous,\n document: stripAttachmentsDataFromDocument(writeRow.document)\n };\n}\nexport function getAttachmentSize(attachmentBase64String) {\n return atob(attachmentBase64String).length;\n}\n\n/**\n * Used in custom RxStorage implementations.\n */\nexport function attachmentWriteDataToNormalData(writeData) {\n var data = writeData.data;\n if (!data) {\n return writeData;\n }\n var ret = {\n length: getAttachmentSize(data),\n digest: writeData.digest,\n type: writeData.type\n };\n return ret;\n}\nexport function stripAttachmentsDataFromDocument(doc) {\n if (!doc._attachments || Object.keys(doc._attachments).length === 0) {\n return doc;\n }\n var useDoc = flatClone(doc);\n useDoc._attachments = {};\n Object.entries(doc._attachments).forEach(([attachmentId, attachmentData]) => {\n useDoc._attachments[attachmentId] = attachmentWriteDataToNormalData(attachmentData);\n });\n return useDoc;\n}\n\n/**\n * Flat clone the document data\n * and also the _meta field.\n * Used many times when we want to change the meta\n * during replication etc.\n */\nexport function flatCloneDocWithMeta(doc) {\n var ret = flatClone(doc);\n ret._meta = flatClone(doc._meta);\n return ret;\n}\n/**\n * Wraps the normal storageInstance of a RxCollection\n * to ensure that all access is properly using the hooks\n * and other data transformations and also ensure that database.lockedRun()\n * is used properly.\n */\nexport function getWrappedStorageInstance(database, storageInstance,\n/**\n * The original RxJsonSchema\n * before it was mutated by hooks.\n */\nrxJsonSchema) {\n overwritable.deepFreezeWhenDevMode(rxJsonSchema);\n var primaryPath = getPrimaryFieldOfPrimaryKey(rxJsonSchema.primaryKey);\n function transformDocumentDataFromRxDBToRxStorage(writeRow) {\n var data = flatClone(writeRow.document);\n data._meta = flatClone(data._meta);\n\n /**\n * Do some checks in dev-mode\n * that would be too performance expensive\n * in production.\n */\n if (overwritable.isDevMode()) {\n // ensure that the primary key has not been changed\n data = fillPrimaryKey(primaryPath, rxJsonSchema, data);\n\n /**\n * Ensure it can be structured cloned\n */\n try {\n /**\n * Notice that structuredClone() is not available\n * in ReactNative, so we test for JSON.stringify() instead\n * @link https://github.com/pubkey/rxdb/issues/5046#issuecomment-1827374498\n */\n if (typeof structuredClone === 'function') {\n structuredClone(writeRow);\n } else {\n JSON.parse(JSON.stringify(writeRow));\n }\n } catch (err) {\n throw newRxError('DOC24', {\n collection: storageInstance.collectionName,\n document: writeRow.document\n });\n }\n\n /**\n * Ensure that the new revision is higher\n * then the previous one\n */\n if (writeRow.previous) {\n // TODO run this in the dev-mode plugin\n // const prev = parseRevision(writeRow.previous._rev);\n // const current = parseRevision(writeRow.document._rev);\n // if (current.height <= prev.height) {\n // throw newRxError('SNH', {\n // dataBefore: writeRow.previous,\n // dataAfter: writeRow.document,\n // args: {\n // prev,\n // current\n // }\n // });\n // }\n }\n\n /**\n * Ensure that _meta fields have been merged\n * and not replaced.\n * This is important so that when one plugin A\n * sets a _meta field and another plugin B does a write\n * to the document, it must be ensured that the\n * field of plugin A was not removed.\n */\n if (writeRow.previous) {\n Object.keys(writeRow.previous._meta).forEach(metaFieldName => {\n if (!Object.prototype.hasOwnProperty.call(writeRow.document._meta, metaFieldName)) {\n throw newRxError('SNH', {\n dataBefore: writeRow.previous,\n dataAfter: writeRow.document\n });\n }\n });\n }\n }\n data._meta.lwt = now();\n\n /**\n * Yes we really want to set the revision here.\n * If you make a plugin that relies on having its own revision\n * stored into the storage, use this.originalStorageInstance.bulkWrite() instead.\n */\n data._rev = createRevision(database.token, writeRow.previous);\n return {\n document: data,\n previous: writeRow.previous\n };\n }\n var ret = {\n originalStorageInstance: storageInstance,\n schema: storageInstance.schema,\n internals: storageInstance.internals,\n collectionName: storageInstance.collectionName,\n databaseName: storageInstance.databaseName,\n options: storageInstance.options,\n bulkWrite(rows, context) {\n var toStorageWriteRows = rows.map(row => transformDocumentDataFromRxDBToRxStorage(row));\n return database.lockedRun(() => storageInstance.bulkWrite(toStorageWriteRows, context))\n /**\n * The RxStorageInstance MUST NOT allow to insert already _deleted documents,\n * without sending the previous document version.\n * But for better developer experience, RxDB does allow to re-insert deleted documents.\n * We do this by automatically fixing the conflict errors for that case\n * by running another bulkWrite() and merging the results.\n * @link https://github.com/pubkey/rxdb/pull/3839\n */.then(writeResult => {\n var useWriteResult = {\n error: [],\n success: writeResult.success.slice(0)\n };\n var reInsertErrors = writeResult.error.filter(error => {\n if (error.status === 409 && !error.writeRow.previous && !error.writeRow.document._deleted && ensureNotFalsy(error.documentInDb)._deleted) {\n return true;\n }\n useWriteResult.error.push(error);\n return false;\n });\n if (reInsertErrors.length > 0) {\n var reInserts = reInsertErrors.map(error => {\n return {\n previous: error.documentInDb,\n document: Object.assign({}, error.writeRow.document, {\n _rev: createRevision(database.token, error.documentInDb)\n })\n };\n });\n return database.lockedRun(() => storageInstance.bulkWrite(reInserts, context)).then(subResult => {\n appendToArray(useWriteResult.error, subResult.error);\n appendToArray(useWriteResult.success, subResult.success);\n return useWriteResult;\n });\n }\n return writeResult;\n });\n },\n query(preparedQuery) {\n return database.lockedRun(() => storageInstance.query(preparedQuery));\n },\n count(preparedQuery) {\n return database.lockedRun(() => storageInstance.count(preparedQuery));\n },\n findDocumentsById(ids, deleted) {\n return database.lockedRun(() => storageInstance.findDocumentsById(ids, deleted));\n },\n getAttachmentData(documentId, attachmentId, digest) {\n return database.lockedRun(() => storageInstance.getAttachmentData(documentId, attachmentId, digest));\n },\n getChangedDocumentsSince: !storageInstance.getChangedDocumentsSince ? undefined : (limit, checkpoint) => {\n return database.lockedRun(() => storageInstance.getChangedDocumentsSince(ensureNotFalsy(limit), checkpoint));\n },\n cleanup(minDeletedTime) {\n return database.lockedRun(() => storageInstance.cleanup(minDeletedTime));\n },\n remove() {\n database.storageInstances.delete(ret);\n return database.lockedRun(() => storageInstance.remove());\n },\n close() {\n database.storageInstances.delete(ret);\n return database.lockedRun(() => storageInstance.close());\n },\n changeStream() {\n return storageInstance.changeStream();\n },\n conflictResultionTasks() {\n return storageInstance.conflictResultionTasks();\n },\n resolveConflictResultionTask(taskSolution) {\n if (taskSolution.output.isEqual) {\n return storageInstance.resolveConflictResultionTask(taskSolution);\n }\n var doc = Object.assign({}, taskSolution.output.documentData, {\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision(),\n _attachments: {}\n });\n var documentData = flatClone(doc);\n delete documentData._meta;\n delete documentData._rev;\n delete documentData._attachments;\n return storageInstance.resolveConflictResultionTask({\n id: taskSolution.id,\n output: {\n isEqual: false,\n documentData\n }\n });\n }\n };\n database.storageInstances.add(ret);\n return ret;\n}\n\n/**\n * Each RxStorage implementation should\n * run this method at the first step of createStorageInstance()\n * to ensure that the configuration is correct.\n */\nexport function ensureRxStorageInstanceParamsAreCorrect(params) {\n if (params.schema.keyCompression) {\n throw newRxError('UT5', {\n args: {\n params\n }\n });\n }\n if (hasEncryption(params.schema)) {\n throw newRxError('UT6', {\n args: {\n params\n }\n });\n }\n if (params.schema.attachments && params.schema.attachments.compression) {\n throw newRxError('UT7', {\n args: {\n params\n }\n });\n }\n}\nexport function hasEncryption(jsonSchema) {\n if (!!jsonSchema.encrypted && jsonSchema.encrypted.length > 0 || jsonSchema.attachments && jsonSchema.attachments.encrypted) {\n return true;\n } else {\n return false;\n }\n}\nexport function getChangedDocumentsSinceQuery(storageInstance, limit, checkpoint) {\n var primaryPath = getPrimaryFieldOfPrimaryKey(storageInstance.schema.primaryKey);\n var sinceLwt = checkpoint ? checkpoint.lwt : RX_META_LWT_MINIMUM;\n var sinceId = checkpoint ? checkpoint.id : '';\n return normalizeMangoQuery(storageInstance.schema, {\n selector: {\n $or: [{\n '_meta.lwt': {\n $gt: sinceLwt\n }\n }, {\n '_meta.lwt': {\n $eq: sinceLwt\n },\n [primaryPath]: {\n $gt: checkpoint ? sinceId : ''\n }\n }],\n // add this hint for better index usage\n '_meta.lwt': {\n $gte: sinceLwt\n }\n },\n sort: [{\n '_meta.lwt': 'asc'\n }, {\n [primaryPath]: 'asc'\n }],\n skip: 0,\n limit\n /**\n * DO NOT SET A SPECIFIC INDEX HERE!\n * The query might be modified by some plugin\n * before sending it to the storage.\n * We can be sure that in the end the query planner\n * will find the best index.\n */\n // index: ['_meta.lwt', primaryPath]\n });\n}\nexport async function getChangedDocumentsSince(storageInstance, limit, checkpoint) {\n if (storageInstance.getChangedDocumentsSince) {\n return storageInstance.getChangedDocumentsSince(limit, checkpoint);\n }\n var primaryPath = getPrimaryFieldOfPrimaryKey(storageInstance.schema.primaryKey);\n var query = prepareQuery(storageInstance.schema, getChangedDocumentsSinceQuery(storageInstance, limit, checkpoint));\n var result = await storageInstance.query(query);\n var documents = result.documents;\n var lastDoc = lastOfArray(documents);\n return {\n documents: documents,\n checkpoint: lastDoc ? {\n id: lastDoc[primaryPath],\n lwt: lastDoc._meta.lwt\n } : checkpoint ? checkpoint : {\n id: '',\n lwt: 0\n }\n };\n}\n\n/**\n * Wraps the storage and simluates\n * delays. Mostly used in tests.\n */\nexport function randomDelayStorage(input) {\n var retStorage = {\n name: 'random-delay-' + input.storage.name,\n rxdbVersion: RXDB_VERSION,\n async createStorageInstance(params) {\n await promiseWait(input.delayTimeBefore());\n var storageInstance = await input.storage.createStorageInstance(params);\n await promiseWait(input.delayTimeAfter());\n\n // write still must be processed in order\n var writeQueue = PROMISE_RESOLVE_TRUE;\n return {\n databaseName: storageInstance.databaseName,\n internals: storageInstance.internals,\n options: storageInstance.options,\n schema: storageInstance.schema,\n collectionName: storageInstance.collectionName,\n async bulkWrite(a, b) {\n writeQueue = writeQueue.then(async () => {\n await promiseWait(input.delayTimeBefore());\n var response = await storageInstance.bulkWrite(a, b);\n await promiseWait(input.delayTimeAfter());\n return response;\n });\n var ret = await writeQueue;\n return ret;\n },\n async findDocumentsById(a, b) {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.findDocumentsById(a, b);\n await promiseWait(input.delayTimeAfter());\n return ret;\n },\n async query(a) {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.query(a);\n return ret;\n },\n async count(a) {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.count(a);\n await promiseWait(input.delayTimeAfter());\n return ret;\n },\n async getAttachmentData(a, b, c) {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.getAttachmentData(a, b, c);\n await promiseWait(input.delayTimeAfter());\n return ret;\n },\n getChangedDocumentsSince: !storageInstance.getChangedDocumentsSince ? undefined : async (a, b) => {\n await promiseWait(input.delayTimeBefore());\n var ret = await ensureNotFalsy(storageInstance.getChangedDocumentsSince)(a, b);\n await promiseWait(input.delayTimeAfter());\n return ret;\n },\n changeStream() {\n return storageInstance.changeStream();\n },\n conflictResultionTasks() {\n return storageInstance.conflictResultionTasks();\n },\n resolveConflictResultionTask(a) {\n return storageInstance.resolveConflictResultionTask(a);\n },\n async cleanup(a) {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.cleanup(a);\n await promiseWait(input.delayTimeAfter());\n return ret;\n },\n async close() {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.close();\n await promiseWait(input.delayTimeAfter());\n return ret;\n },\n async remove() {\n await promiseWait(input.delayTimeBefore());\n var ret = await storageInstance.remove();\n await promiseWait(input.delayTimeAfter());\n return ret;\n }\n };\n }\n };\n return retStorage;\n}\n//# sourceMappingURL=rx-storage-helper.js.map","import { isBulkWriteConflictError, rxStorageWriteErrorToRxError } from \"./rx-error.js\";\nimport { clone, ensureNotFalsy, getFromMapOrCreate, getFromMapOrThrow, parseRevision, stripMetaDataFromDocument } from \"./plugins/utils/index.js\";\n/**\n * The incremental write queue\n * batches up all incremental writes to a collection\n * so that performance can be improved by:\n * - Running only one write even when there are multiple modifications to the same document.\n * - Run all writes ins a single bulkWrite() call even when there are writes to many documents.\n */\nexport var IncrementalWriteQueue = /*#__PURE__*/function () {\n function IncrementalWriteQueue(storageInstance, primaryPath,\n // can be used to run hooks etc.\n preWrite, postWrite) {\n this.queueByDocId = new Map();\n this.isRunning = false;\n this.storageInstance = storageInstance;\n this.primaryPath = primaryPath;\n this.preWrite = preWrite;\n this.postWrite = postWrite;\n }\n var _proto = IncrementalWriteQueue.prototype;\n _proto.addWrite = function addWrite(lastKnownDocumentState, modifier) {\n var docId = lastKnownDocumentState[this.primaryPath];\n var ar = getFromMapOrCreate(this.queueByDocId, docId, () => []);\n var ret = new Promise((resolve, reject) => {\n var item = {\n lastKnownDocumentState,\n modifier,\n resolve,\n reject\n };\n ensureNotFalsy(ar).push(item);\n this.triggerRun();\n });\n return ret;\n };\n _proto.triggerRun = async function triggerRun() {\n if (this.isRunning === true || this.queueByDocId.size === 0) {\n // already running\n return;\n }\n this.isRunning = true;\n var writeRows = [];\n\n /**\n * 'take over' so that while the async functions runs,\n * new incremental updates could be added from the outside.\n */\n var itemsById = this.queueByDocId;\n this.queueByDocId = new Map();\n await Promise.all(Array.from(itemsById.entries()).map(async ([_docId, items]) => {\n var oldData = findNewestOfDocumentStates(items.map(i => i.lastKnownDocumentState));\n var newData = oldData;\n for (var item of items) {\n try {\n newData = await item.modifier(\n /**\n * We have to clone() each time because the modifier\n * might throw while it already changed some properties\n * of the document.\n */\n clone(newData));\n } catch (err) {\n item.reject(err);\n item.reject = () => {};\n item.resolve = () => {};\n }\n }\n try {\n await this.preWrite(newData, oldData);\n } catch (err) {\n /**\n * If the before-hooks fail,\n * we reject all of the writes because it is\n * not possible to determine which one is to blame.\n */\n items.forEach(item => item.reject(err));\n return;\n }\n writeRows.push({\n previous: oldData,\n document: newData\n });\n }));\n var writeResult = writeRows.length > 0 ? await this.storageInstance.bulkWrite(writeRows, 'incremental-write') : {\n error: [],\n success: []\n };\n\n // process success\n await Promise.all(writeResult.success.map(result => {\n var docId = result[this.primaryPath];\n this.postWrite(result);\n var items = getFromMapOrThrow(itemsById, docId);\n items.forEach(item => item.resolve(result));\n }));\n\n // process errors\n writeResult.error.forEach(error => {\n var docId = error.documentId;\n var items = getFromMapOrThrow(itemsById, docId);\n var isConflict = isBulkWriteConflictError(error);\n if (isConflict) {\n // had conflict -> retry afterwards\n var ar = getFromMapOrCreate(this.queueByDocId, docId, () => []);\n /**\n * Add the items back to this.queueByDocId\n * by maintaining the original order.\n */\n items.reverse().forEach(item => {\n item.lastKnownDocumentState = ensureNotFalsy(isConflict.documentInDb);\n ensureNotFalsy(ar).unshift(item);\n });\n } else {\n // other error -> must be thrown\n var rxError = rxStorageWriteErrorToRxError(error);\n items.forEach(item => item.reject(rxError));\n }\n });\n this.isRunning = false;\n\n /**\n * Always trigger another run\n * because in between there might be new items\n * been added to the queue.\n */\n return this.triggerRun();\n };\n return IncrementalWriteQueue;\n}();\nexport function modifierFromPublicToInternal(publicModifier) {\n var ret = async docData => {\n var withoutMeta = stripMetaDataFromDocument(docData);\n withoutMeta._deleted = docData._deleted;\n var modified = await publicModifier(withoutMeta);\n var reattachedMeta = Object.assign({}, modified, {\n _meta: docData._meta,\n _attachments: docData._attachments,\n _rev: docData._rev,\n _deleted: typeof modified._deleted !== 'undefined' ? modified._deleted : docData._deleted\n });\n if (typeof reattachedMeta._deleted === 'undefined') {\n reattachedMeta._deleted = false;\n }\n return reattachedMeta;\n };\n return ret;\n}\nexport function findNewestOfDocumentStates(docs) {\n var newest = docs[0];\n var newestRevisionHeight = parseRevision(newest._rev).height;\n docs.forEach(doc => {\n var height = parseRevision(doc._rev).height;\n if (height > newestRevisionHeight) {\n newest = doc;\n newestRevisionHeight = height;\n }\n });\n return newest;\n}\n//# sourceMappingURL=incremental-write.js.map","import { distinctUntilChanged, filter, map, shareReplay, startWith } from 'rxjs/operators';\nimport { clone, trimDots, pluginMissing, flatClone, PROMISE_RESOLVE_NULL, RXJS_SHARE_REPLAY_DEFAULTS, getProperty, getFromMapOrCreate } from \"./plugins/utils/index.js\";\nimport { newRxError } from \"./rx-error.js\";\nimport { runPluginHooks } from \"./hooks.js\";\nimport { getDocumentDataOfRxChangeEvent } from \"./rx-change-event.js\";\nimport { overwritable } from \"./overwritable.js\";\nimport { getSchemaByObjectPath } from \"./rx-schema-helper.js\";\nimport { throwIfIsStorageWriteError } from \"./rx-storage-helper.js\";\nimport { modifierFromPublicToInternal } from \"./incremental-write.js\";\nexport var basePrototype = {\n get primaryPath() {\n var _this = this;\n if (!_this.isInstanceOfRxDocument) {\n return undefined;\n }\n return _this.collection.schema.primaryPath;\n },\n get primary() {\n var _this = this;\n if (!_this.isInstanceOfRxDocument) {\n return undefined;\n }\n return _this._data[_this.primaryPath];\n },\n get revision() {\n var _this = this;\n if (!_this.isInstanceOfRxDocument) {\n return undefined;\n }\n return _this._data._rev;\n },\n get deleted$() {\n var _this = this;\n if (!_this.isInstanceOfRxDocument) {\n return undefined;\n }\n return _this.$.pipe(map(d => d._data._deleted));\n },\n get deleted$$() {\n var _this = this;\n var reactivity = _this.collection.database.getReactivityFactory();\n return reactivity.fromObservable(_this.deleted$, _this.getLatest().deleted);\n },\n get deleted() {\n var _this = this;\n if (!_this.isInstanceOfRxDocument) {\n return undefined;\n }\n return _this._data._deleted;\n },\n getLatest() {\n var latestDocData = this.collection._docCache.getLatestDocumentData(this.primary);\n return this.collection._docCache.getCachedRxDocument(latestDocData);\n },\n /**\n * returns the observable which emits the plain-data of this document\n */\n get $() {\n var _this = this;\n return _this.collection.$.pipe(filter(changeEvent => !changeEvent.isLocal), filter(changeEvent => changeEvent.documentId === this.primary), map(changeEvent => getDocumentDataOfRxChangeEvent(changeEvent)), startWith(_this.collection._docCache.getLatestDocumentData(this.primary)), distinctUntilChanged((prev, curr) => prev._rev === curr._rev), map(docData => this.collection._docCache.getCachedRxDocument(docData)), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n },\n get $$() {\n var _this = this;\n var reactivity = _this.collection.database.getReactivityFactory();\n return reactivity.fromObservable(_this.$, _this.getLatest()._data);\n },\n /**\n * returns observable of the value of the given path\n */\n get$(path) {\n if (overwritable.isDevMode()) {\n if (path.includes('.item.')) {\n throw newRxError('DOC1', {\n path\n });\n }\n if (path === this.primaryPath) {\n throw newRxError('DOC2');\n }\n\n // final fields cannot be modified and so also not observed\n if (this.collection.schema.finalFields.includes(path)) {\n throw newRxError('DOC3', {\n path\n });\n }\n var schemaObj = getSchemaByObjectPath(this.collection.schema.jsonSchema, path);\n if (!schemaObj) {\n throw newRxError('DOC4', {\n path\n });\n }\n }\n return this.$.pipe(map(data => getProperty(data, path)), distinctUntilChanged());\n },\n get$$(path) {\n var obs = this.get$(path);\n var reactivity = this.collection.database.getReactivityFactory();\n return reactivity.fromObservable(obs, this.getLatest().get(path));\n },\n /**\n * populate the given path\n */\n populate(path) {\n var schemaObj = getSchemaByObjectPath(this.collection.schema.jsonSchema, path);\n var value = this.get(path);\n if (!value) {\n return PROMISE_RESOLVE_NULL;\n }\n if (!schemaObj) {\n throw newRxError('DOC5', {\n path\n });\n }\n if (!schemaObj.ref) {\n throw newRxError('DOC6', {\n path,\n schemaObj\n });\n }\n var refCollection = this.collection.database.collections[schemaObj.ref];\n if (!refCollection) {\n throw newRxError('DOC7', {\n ref: schemaObj.ref,\n path,\n schemaObj\n });\n }\n if (schemaObj.type === 'array') {\n return refCollection.findByIds(value).exec().then(res => {\n var valuesIterator = res.values();\n return Array.from(valuesIterator);\n });\n } else {\n return refCollection.findOne(value).exec();\n }\n },\n /**\n * get data by objectPath\n * @hotPath Performance here is really important,\n * run some tests before changing anything.\n */\n get(objPath) {\n return getFromMapOrCreate(this._propertyCache, objPath, () => {\n var valueObj = getProperty(this._data, objPath);\n\n // direct return if array or non-object\n if (typeof valueObj !== 'object' || valueObj === null || Array.isArray(valueObj)) {\n return overwritable.deepFreezeWhenDevMode(valueObj);\n }\n var _this = this;\n var proxy = new Proxy(\n /**\n * In dev-mode, the _data is deep-frozen\n * so we have to flat clone here so that\n * the proxy can work.\n */\n flatClone(valueObj), {\n get(target, property) {\n if (typeof property !== 'string') {\n return target[property];\n }\n var lastChar = property.charAt(property.length - 1);\n if (property.endsWith('$$')) {\n var key = property.slice(0, -2);\n return _this.get$$(trimDots(objPath + '.' + key));\n } else if (lastChar === '$') {\n var _key = property.slice(0, -1);\n return _this.get$(trimDots(objPath + '.' + _key));\n } else if (lastChar === '_') {\n var _key2 = property.slice(0, -1);\n return _this.populate(trimDots(objPath + '.' + _key2));\n } else {\n return _this.get(trimDots(objPath + '.' + property));\n }\n }\n });\n return proxy;\n });\n },\n toJSON(withMetaFields = false) {\n if (!withMetaFields) {\n var data = flatClone(this._data);\n delete data._rev;\n delete data._attachments;\n delete data._deleted;\n delete data._meta;\n return overwritable.deepFreezeWhenDevMode(data);\n } else {\n return overwritable.deepFreezeWhenDevMode(this._data);\n }\n },\n toMutableJSON(withMetaFields = false) {\n return clone(this.toJSON(withMetaFields));\n },\n /**\n * updates document\n * @overwritten by plugin (optional)\n * @param updateObj mongodb-like syntax\n */\n update(_updateObj) {\n throw pluginMissing('update');\n },\n incrementalUpdate(_updateObj) {\n throw pluginMissing('update');\n },\n updateCRDT(_updateObj) {\n throw pluginMissing('crdt');\n },\n putAttachment() {\n throw pluginMissing('attachments');\n },\n getAttachment() {\n throw pluginMissing('attachments');\n },\n allAttachments() {\n throw pluginMissing('attachments');\n },\n get allAttachments$() {\n throw pluginMissing('attachments');\n },\n async modify(mutationFunction,\n // used by some plugins that wrap the method\n _context) {\n var oldData = this._data;\n var newData = await modifierFromPublicToInternal(mutationFunction)(oldData);\n return this._saveData(newData, oldData);\n },\n /**\n * runs an incremental update over the document\n * @param function that takes the document-data and returns a new data-object\n */\n incrementalModify(mutationFunction,\n // used by some plugins that wrap the method\n _context) {\n return this.collection.incrementalWriteQueue.addWrite(this._data, modifierFromPublicToInternal(mutationFunction)).then(result => this.collection._docCache.getCachedRxDocument(result));\n },\n patch(patch) {\n var oldData = this._data;\n var newData = clone(oldData);\n Object.entries(patch).forEach(([k, v]) => {\n newData[k] = v;\n });\n return this._saveData(newData, oldData);\n },\n /**\n * patches the given properties\n */\n incrementalPatch(patch) {\n return this.incrementalModify(docData => {\n Object.entries(patch).forEach(([k, v]) => {\n docData[k] = v;\n });\n return docData;\n });\n },\n /**\n * saves the new document-data\n * and handles the events\n */\n async _saveData(newData, oldData) {\n newData = flatClone(newData);\n\n // deleted documents cannot be changed\n if (this._data._deleted) {\n throw newRxError('DOC11', {\n id: this.primary,\n document: this\n });\n }\n await beforeDocumentUpdateWrite(this.collection, newData, oldData);\n var writeResult = await this.collection.storageInstance.bulkWrite([{\n previous: oldData,\n document: newData\n }], 'rx-document-save-data');\n var isError = writeResult.error[0];\n throwIfIsStorageWriteError(this.collection, this.primary, newData, isError);\n await this.collection._runHooks('post', 'save', newData, this);\n return this.collection._docCache.getCachedRxDocument(writeResult.success[0]);\n },\n /**\n * Remove the document.\n * Notice that there is no hard delete,\n * instead deleted documents get flagged with _deleted=true.\n */\n remove() {\n var collection = this.collection;\n if (this.deleted) {\n return Promise.reject(newRxError('DOC13', {\n document: this,\n id: this.primary\n }));\n }\n var deletedData = flatClone(this._data);\n var removedDocData;\n return collection._runHooks('pre', 'remove', deletedData, this).then(async () => {\n deletedData._deleted = true;\n var writeResult = await collection.storageInstance.bulkWrite([{\n previous: this._data,\n document: deletedData\n }], 'rx-document-remove');\n var isError = writeResult.error[0];\n throwIfIsStorageWriteError(collection, this.primary, deletedData, isError);\n return writeResult.success[0];\n }).then(removed => {\n removedDocData = removed;\n return this.collection._runHooks('post', 'remove', deletedData, this);\n }).then(() => {\n return this.collection._docCache.getCachedRxDocument(removedDocData);\n });\n },\n incrementalRemove() {\n return this.incrementalModify(async docData => {\n await this.collection._runHooks('pre', 'remove', docData, this);\n docData._deleted = true;\n return docData;\n }).then(async newDoc => {\n await this.collection._runHooks('post', 'remove', newDoc._data, newDoc);\n return newDoc;\n });\n },\n destroy() {\n throw newRxError('DOC14');\n }\n};\nexport function createRxDocumentConstructor(proto = basePrototype) {\n var constructor = function RxDocumentConstructor(collection, docData) {\n this.collection = collection;\n\n // assume that this is always equal to the doc-data in the database\n this._data = docData;\n this._propertyCache = new Map();\n\n /**\n * because of the prototype-merge,\n * we can not use the native instanceof operator\n */\n this.isInstanceOfRxDocument = true;\n };\n constructor.prototype = proto;\n return constructor;\n}\nexport function createWithConstructor(constructor, collection, jsonData) {\n var doc = new constructor(collection, jsonData);\n runPluginHooks('createRxDocument', doc);\n return doc;\n}\nexport function isRxDocument(obj) {\n return typeof obj === 'object' && obj !== null && 'isInstanceOfRxDocument' in obj;\n}\nexport function beforeDocumentUpdateWrite(collection, newData, oldData) {\n /**\n * Meta values must always be merged\n * instead of overwritten.\n * This ensures that different plugins do not overwrite\n * each others meta properties.\n */\n newData._meta = Object.assign({}, oldData._meta, newData._meta);\n\n // ensure modifications are ok\n if (overwritable.isDevMode()) {\n collection.schema.validateChange(oldData, newData);\n }\n return collection._runHooks('pre', 'save', newData, oldData);\n}\n//# sourceMappingURL=rx-document.js.map","import { isBulkWriteConflictError, newRxError } from \"./rx-error.js\";\nimport { fillWithDefaultSettings, getComposedPrimaryKeyOfDocumentData } from \"./rx-schema-helper.js\";\nimport { getSingleDocument, writeSingle } from \"./rx-storage-helper.js\";\nimport { clone, ensureNotFalsy, getDefaultRevision, getDefaultRxDocumentMeta, randomCouchString } from \"./plugins/utils/index.js\";\nimport { prepareQuery } from \"./rx-query.js\";\nexport var INTERNAL_CONTEXT_COLLECTION = 'collection';\nexport var INTERNAL_CONTEXT_STORAGE_TOKEN = 'storage-token';\nexport var INTERNAL_CONTEXT_MIGRATION_STATUS = 'rx-migration-status';\n\n/**\n * Do not change the title,\n * we have to flag the internal schema so that\n * some RxStorage implementations are able\n * to detect if the created RxStorageInstance\n * is from the internals or not,\n * to do some optimizations in some cases.\n */\nexport var INTERNAL_STORE_SCHEMA_TITLE = 'RxInternalDocument';\nexport var INTERNAL_STORE_SCHEMA = fillWithDefaultSettings({\n version: 0,\n title: INTERNAL_STORE_SCHEMA_TITLE,\n primaryKey: {\n key: 'id',\n fields: ['context', 'key'],\n separator: '|'\n },\n type: 'object',\n properties: {\n id: {\n type: 'string',\n maxLength: 200\n },\n key: {\n type: 'string'\n },\n context: {\n type: 'string',\n enum: [INTERNAL_CONTEXT_COLLECTION, INTERNAL_CONTEXT_STORAGE_TOKEN, INTERNAL_CONTEXT_MIGRATION_STATUS, 'OTHER']\n },\n data: {\n type: 'object',\n additionalProperties: true\n }\n },\n indexes: [],\n required: ['key', 'context', 'data'],\n additionalProperties: false,\n /**\n * If the sharding plugin is used,\n * it must not shard on the internal RxStorageInstance\n * because that one anyway has only a small amount of documents\n * and also its creation is in the hot path of the initial page load,\n * so we should spend less time creating multiple RxStorageInstances.\n */\n sharding: {\n shards: 1,\n mode: 'collection'\n }\n});\nexport function getPrimaryKeyOfInternalDocument(key, context) {\n return getComposedPrimaryKeyOfDocumentData(INTERNAL_STORE_SCHEMA, {\n key,\n context\n });\n}\n\n/**\n * Returns all internal documents\n * with context 'collection'\n */\nexport async function getAllCollectionDocuments(storageInstance) {\n var getAllQueryPrepared = prepareQuery(storageInstance.schema, {\n selector: {\n context: INTERNAL_CONTEXT_COLLECTION,\n _deleted: {\n $eq: false\n }\n },\n sort: [{\n id: 'asc'\n }],\n skip: 0\n });\n var queryResult = await storageInstance.query(getAllQueryPrepared);\n var allDocs = queryResult.documents;\n return allDocs;\n}\n\n/**\n * to not confuse multiInstance-messages with other databases that have the same\n * name and adapter, but do not share state with this one (for example in-memory-instances),\n * we set a storage-token and use it in the broadcast-channel\n */\nexport var STORAGE_TOKEN_DOCUMENT_KEY = 'storageToken';\nexport var STORAGE_TOKEN_DOCUMENT_ID = getPrimaryKeyOfInternalDocument(STORAGE_TOKEN_DOCUMENT_KEY, INTERNAL_CONTEXT_STORAGE_TOKEN);\nexport async function ensureStorageTokenDocumentExists(rxDatabase) {\n /**\n * To have less read-write cycles,\n * we just try to insert a new document\n * and only fetch the existing one if a conflict happened.\n */\n var storageToken = randomCouchString(10);\n var passwordHash = rxDatabase.password ? await rxDatabase.hashFunction(JSON.stringify(rxDatabase.password)) : undefined;\n var docData = {\n id: STORAGE_TOKEN_DOCUMENT_ID,\n context: INTERNAL_CONTEXT_STORAGE_TOKEN,\n key: STORAGE_TOKEN_DOCUMENT_KEY,\n data: {\n rxdbVersion: rxDatabase.rxdbVersion,\n token: storageToken,\n /**\n * We add the instance token here\n * to be able to detect if a given RxDatabase instance\n * is the first instance that was ever created\n * or if databases have existed earlier on that storage\n * with the same database name.\n */\n instanceToken: rxDatabase.token,\n passwordHash\n },\n _deleted: false,\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision(),\n _attachments: {}\n };\n var writeResult = await rxDatabase.internalStore.bulkWrite([{\n document: docData\n }], 'internal-add-storage-token');\n if (writeResult.success[0]) {\n return writeResult.success[0];\n }\n\n /**\n * If we get a 409 error,\n * it means another instance already inserted the storage token.\n * So we get that token from the database and return that one.\n */\n var error = ensureNotFalsy(writeResult.error[0]);\n if (error.isError && isBulkWriteConflictError(error)) {\n var conflictError = error;\n if (!isDatabaseStateVersionCompatibleWithDatabaseCode(conflictError.documentInDb.data.rxdbVersion, rxDatabase.rxdbVersion)) {\n throw newRxError('DM5', {\n args: {\n database: rxDatabase.name,\n databaseStateVersion: conflictError.documentInDb.data.rxdbVersion,\n codeVersion: rxDatabase.rxdbVersion\n }\n });\n }\n if (passwordHash && passwordHash !== conflictError.documentInDb.data.passwordHash) {\n throw newRxError('DB1', {\n passwordHash,\n existingPasswordHash: conflictError.documentInDb.data.passwordHash\n });\n }\n var storageTokenDocInDb = conflictError.documentInDb;\n return ensureNotFalsy(storageTokenDocInDb);\n }\n throw error;\n}\nexport function isDatabaseStateVersionCompatibleWithDatabaseCode(databaseStateVersion, codeVersion) {\n if (!databaseStateVersion) {\n return false;\n }\n if (codeVersion.includes('beta') && codeVersion !== databaseStateVersion) {\n return false;\n }\n var stateMajor = databaseStateVersion.split('.')[0];\n var codeMajor = codeVersion.split('.')[0];\n if (stateMajor !== codeMajor) {\n return false;\n }\n return true;\n}\nexport async function addConnectedStorageToCollection(collection, storageCollectionName, schema) {\n if (collection.schema.version !== schema.version) {\n throw newRxError('SNH', {\n schema,\n version: collection.schema.version,\n name: collection.name,\n collection,\n args: {\n storageCollectionName\n }\n });\n }\n var collectionNameWithVersion = _collectionNamePrimary(collection.name, collection.schema.jsonSchema);\n var collectionDocId = getPrimaryKeyOfInternalDocument(collectionNameWithVersion, INTERNAL_CONTEXT_COLLECTION);\n while (true) {\n var collectionDoc = await getSingleDocument(collection.database.internalStore, collectionDocId);\n var saveData = clone(ensureNotFalsy(collectionDoc));\n\n // do nothing if already in array\n var alreadyThere = saveData.data.connectedStorages.find(row => row.collectionName === storageCollectionName && row.schema.version === schema.version);\n if (alreadyThere) {\n return;\n }\n\n // otherwise add to array and save\n saveData.data.connectedStorages.push({\n collectionName: storageCollectionName,\n schema\n });\n try {\n await writeSingle(collection.database.internalStore, {\n previous: ensureNotFalsy(collectionDoc),\n document: saveData\n }, 'add-connected-storage-to-collection');\n } catch (err) {\n if (!isBulkWriteConflictError(err)) {\n throw err;\n }\n // retry on conflict\n }\n }\n}\n\n/**\n * returns the primary for a given collection-data\n * used in the internal store of a RxDatabase\n */\nexport function _collectionNamePrimary(name, schema) {\n return name + '-' + schema.version;\n}\n//# sourceMappingURL=rx-database-internal-store.js.map","import { createRevision, flatClone, getDefaultRevision, getDefaultRxDocumentMeta, now } from \"./plugins/utils/index.js\";\nimport { fillObjectWithDefaults, fillPrimaryKey } from \"./rx-schema-helper.js\";\nimport { runAsyncPluginHooks } from \"./hooks.js\";\nimport { getAllCollectionDocuments } from \"./rx-database-internal-store.js\";\nimport { flatCloneDocWithMeta } from \"./rx-storage-helper.js\";\nimport { overwritable } from \"./overwritable.js\";\n\n/**\n * fills in the default data.\n * This also clones the data.\n */\nexport function fillObjectDataBeforeInsert(schema, data) {\n data = flatClone(data);\n data = fillObjectWithDefaults(schema, data);\n data = fillPrimaryKey(schema.primaryPath, schema.jsonSchema, data);\n data._meta = getDefaultRxDocumentMeta();\n if (!Object.prototype.hasOwnProperty.call(data, '_deleted')) {\n data._deleted = false;\n }\n if (!Object.prototype.hasOwnProperty.call(data, '_attachments')) {\n data._attachments = {};\n }\n if (!Object.prototype.hasOwnProperty.call(data, '_rev')) {\n data._rev = getDefaultRevision();\n }\n return data;\n}\n\n/**\n * Creates the storage instances that are used internally in the collection\n */\nexport async function createRxCollectionStorageInstance(rxDatabase, storageInstanceCreationParams) {\n storageInstanceCreationParams.multiInstance = rxDatabase.multiInstance;\n var storageInstance = await rxDatabase.storage.createStorageInstance(storageInstanceCreationParams);\n return storageInstance;\n}\n\n/**\n * Removes the main storage of the collection\n * and all connected storages like the ones from the replication meta etc.\n */\nexport async function removeCollectionStorages(storage, databaseInternalStorage, databaseInstanceToken, databaseName, collectionName, password,\n/**\n * If no hash function is provided,\n * we assume that the whole internal store is removed anyway\n * so we do not have to delete the meta documents.\n */\nhashFunction) {\n var allCollectionMetaDocs = await getAllCollectionDocuments(databaseInternalStorage);\n var relevantCollectionMetaDocs = allCollectionMetaDocs.filter(metaDoc => metaDoc.data.name === collectionName);\n var removeStorages = [];\n relevantCollectionMetaDocs.forEach(metaDoc => {\n removeStorages.push({\n collectionName: metaDoc.data.name,\n schema: metaDoc.data.schema,\n isCollection: true\n });\n metaDoc.data.connectedStorages.forEach(row => removeStorages.push({\n collectionName: row.collectionName,\n isCollection: false,\n schema: row.schema\n }));\n });\n\n // ensure uniqueness\n var alreadyAdded = new Set();\n removeStorages = removeStorages.filter(row => {\n var key = row.collectionName + '||' + row.schema.version;\n if (alreadyAdded.has(key)) {\n return false;\n } else {\n alreadyAdded.add(key);\n return true;\n }\n });\n\n // remove all the storages\n await Promise.all(removeStorages.map(async row => {\n var storageInstance = await storage.createStorageInstance({\n collectionName: row.collectionName,\n databaseInstanceToken,\n databaseName,\n multiInstance: false,\n options: {},\n schema: row.schema,\n password,\n devMode: overwritable.isDevMode()\n });\n await storageInstance.remove();\n if (row.isCollection) {\n await runAsyncPluginHooks('postRemoveRxCollection', {\n storage,\n databaseName: databaseName,\n collectionName\n });\n }\n }));\n\n // remove the meta documents\n if (hashFunction) {\n var writeRows = relevantCollectionMetaDocs.map(doc => {\n var writeDoc = flatCloneDocWithMeta(doc);\n writeDoc._deleted = true;\n writeDoc._meta.lwt = now();\n writeDoc._rev = createRevision(databaseInstanceToken, doc);\n return {\n previous: doc,\n document: writeDoc\n };\n });\n await databaseInternalStorage.bulkWrite(writeRows, 'rx-database-remove-collection-all');\n }\n}\n//# sourceMappingURL=rx-collection-helper.js.map","/**\n * a buffer-cache which holds the last X changeEvents of the collection\n */\n\nimport { filter } from 'rxjs/operators';\nexport var ChangeEventBuffer = /*#__PURE__*/function () {\n /**\n * array with changeEvents\n * starts with oldest known event, ends with newest\n */\n\n function ChangeEventBuffer(collection) {\n this.subs = [];\n this.limit = 100;\n this.counter = 0;\n this.eventCounterMap = new WeakMap();\n this.buffer = [];\n this.collection = collection;\n this.subs.push(this.collection.$.pipe(filter(cE => !cE.isLocal)).subscribe(cE => this._handleChangeEvent(cE)));\n }\n var _proto = ChangeEventBuffer.prototype;\n _proto._handleChangeEvent = function _handleChangeEvent(changeEvent) {\n this.counter++;\n this.buffer.push(changeEvent);\n this.eventCounterMap.set(changeEvent, this.counter);\n while (this.buffer.length > this.limit) {\n this.buffer.shift();\n }\n }\n\n /**\n * gets the array-index for the given pointer\n * @return arrayIndex which can be used to iterate from there. If null, pointer is out of lower bound\n */;\n _proto.getArrayIndexByPointer = function getArrayIndexByPointer(pointer) {\n var oldestEvent = this.buffer[0];\n var oldestCounter = this.eventCounterMap.get(oldestEvent);\n if (pointer < oldestCounter) return null; // out of bounds\n\n var rest = pointer - oldestCounter;\n return rest;\n }\n\n /**\n * get all changeEvents which came in later than the pointer-event\n * @return array with change-events. If null, pointer out of bounds\n */;\n _proto.getFrom = function getFrom(pointer) {\n var ret = [];\n var currentIndex = this.getArrayIndexByPointer(pointer);\n if (currentIndex === null)\n // out of bounds\n return null;\n while (true) {\n var nextEvent = this.buffer[currentIndex];\n currentIndex++;\n if (!nextEvent) {\n return ret;\n } else {\n ret.push(nextEvent);\n }\n }\n };\n _proto.runFrom = function runFrom(pointer, fn) {\n var ret = this.getFrom(pointer);\n if (ret === null) {\n throw new Error('out of bounds');\n } else {\n ret.forEach(cE => fn(cE));\n }\n }\n\n /**\n * no matter how many operations are done on one document,\n * only the last operation has to be checked to calculate the new state\n * this function reduces the events to the last ChangeEvent of each doc\n */;\n _proto.reduceByLastOfDoc = function reduceByLastOfDoc(changeEvents) {\n return changeEvents.slice(0);\n // TODO the old implementation was wrong\n // because it did not correctly reassigned the previousData of the changeevents\n // this should be added to the event-reduce library and not be done in RxDB\n var docEventMap = {};\n changeEvents.forEach(changeEvent => {\n docEventMap[changeEvent.documentId] = changeEvent;\n });\n return Object.values(docEventMap);\n };\n _proto.destroy = function destroy() {\n this.subs.forEach(sub => sub.unsubscribe());\n };\n return ChangeEventBuffer;\n}();\nexport function createChangeEventBuffer(collection) {\n return new ChangeEventBuffer(collection);\n}\n//# sourceMappingURL=change-event-buffer.js.map","/**\n * For the ORM capabilities,\n * we have to merge the document prototype\n * with the ORM functions and the data\n * We do this iterating over the properties and\n * adding them to a new object.\n * In the future we should do this by chaining the __proto__ objects\n */\n\nimport { createRxDocumentConstructor, basePrototype, createWithConstructor as createRxDocumentWithConstructor } from \"./rx-document.js\";\nimport { runPluginHooks } from \"./hooks.js\";\nimport { overwritable } from \"./overwritable.js\";\nimport { getFromMapOrCreate } from \"./plugins/utils/index.js\";\nvar constructorForCollection = new WeakMap();\nexport function getDocumentPrototype(rxCollection) {\n var schemaProto = rxCollection.schema.getDocumentPrototype();\n var ormProto = getDocumentOrmPrototype(rxCollection);\n var baseProto = basePrototype;\n var proto = {};\n [schemaProto, ormProto, baseProto].forEach(obj => {\n var props = Object.getOwnPropertyNames(obj);\n props.forEach(key => {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n /**\n * When enumerable is true, it will show on console dir(instance)\n * To not pollute the output, only getters and methods are enumerable\n */\n var enumerable = true;\n if (key.startsWith('_') || key.endsWith('_') || key.startsWith('$') || key.endsWith('$')) enumerable = false;\n if (typeof desc.value === 'function') {\n // when getting a function, we automatically do a .bind(this)\n Object.defineProperty(proto, key, {\n get() {\n return desc.value.bind(this);\n },\n enumerable,\n configurable: false\n });\n } else {\n desc.enumerable = enumerable;\n desc.configurable = false;\n if (desc.writable) desc.writable = false;\n Object.defineProperty(proto, key, desc);\n }\n });\n });\n return proto;\n}\nexport function getRxDocumentConstructor(rxCollection) {\n return getFromMapOrCreate(constructorForCollection, rxCollection, () => createRxDocumentConstructor(getDocumentPrototype(rxCollection)));\n}\n\n/**\n * Create a RxDocument-instance from the jsonData\n * and the prototype merge.\n * You should never call this method directly,\n * instead you should get the document from collection._docCache.getCachedRxDocument().\n */\nexport function createNewRxDocument(rxCollection, docData) {\n var doc = createRxDocumentWithConstructor(getRxDocumentConstructor(rxCollection), rxCollection, overwritable.deepFreezeWhenDevMode(docData));\n rxCollection._runHooksSync('post', 'create', docData, doc);\n runPluginHooks('postCreateRxDocument', doc);\n return doc;\n}\n\n/**\n * returns the prototype-object\n * that contains the orm-methods,\n * used in the proto-merge\n */\nexport function getDocumentOrmPrototype(rxCollection) {\n var proto = {};\n Object.entries(rxCollection.methods).forEach(([k, v]) => {\n proto[k] = v;\n });\n return proto;\n}\n//# sourceMappingURL=rx-document-prototype-merge.js.map","import { getComposedPrimaryKeyOfDocumentData } from \"../rx-schema-helper.js\";\nimport { stackCheckpoints } from \"../rx-storage-helper.js\";\nimport { createRevision, ensureNotFalsy, getDefaultRevision, getDefaultRxDocumentMeta, now } from \"../plugins/utils/index.js\";\nexport async function getLastCheckpointDoc(state, direction) {\n var checkpointDocId = getComposedPrimaryKeyOfDocumentData(state.input.metaInstance.schema, {\n isCheckpoint: '1',\n itemId: direction\n });\n var checkpointResult = await state.input.metaInstance.findDocumentsById([checkpointDocId], false);\n var checkpointDoc = checkpointResult[0];\n state.lastCheckpointDoc[direction] = checkpointDoc;\n if (checkpointDoc) {\n return checkpointDoc.checkpointData;\n } else {\n return undefined;\n }\n}\n\n/**\n * Sets the checkpoint,\n * automatically resolves conflicts that appear.\n */\nexport async function setCheckpoint(state, direction, checkpoint) {\n state.checkpointQueue = state.checkpointQueue.then(async () => {\n var previousCheckpointDoc = state.lastCheckpointDoc[direction];\n if (checkpoint &&\n /**\n * If the replication is already canceled,\n * we do not write a checkpoint\n * because that could mean we write a checkpoint\n * for data that has been fetched from the master\n * but not been written to the child.\n */\n !state.events.canceled.getValue() && (\n /**\n * Only write checkpoint if it is different from before\n * to have less writes to the storage.\n */\n\n !previousCheckpointDoc || JSON.stringify(previousCheckpointDoc.checkpointData) !== JSON.stringify(checkpoint))) {\n var newDoc = {\n id: '',\n isCheckpoint: '1',\n itemId: direction,\n _deleted: false,\n _attachments: {},\n checkpointData: checkpoint,\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision()\n };\n newDoc.id = getComposedPrimaryKeyOfDocumentData(state.input.metaInstance.schema, newDoc);\n while (!state.events.canceled.getValue()) {\n /**\n * Instead of just storing the new checkpoint,\n * we have to stack up the checkpoint with the previous one.\n * This is required for plugins like the sharding RxStorage\n * where the changeStream events only contain a Partial of the\n * checkpoint.\n */\n if (previousCheckpointDoc) {\n newDoc.checkpointData = stackCheckpoints([previousCheckpointDoc.checkpointData, newDoc.checkpointData]);\n }\n newDoc._meta.lwt = now();\n newDoc._rev = createRevision(await state.checkpointKey, previousCheckpointDoc);\n if (state.events.canceled.getValue()) {\n return;\n }\n var result = await state.input.metaInstance.bulkWrite([{\n previous: previousCheckpointDoc,\n document: newDoc\n }], 'replication-set-checkpoint');\n var sucessDoc = result.success[0];\n if (sucessDoc) {\n state.lastCheckpointDoc[direction] = sucessDoc;\n return;\n } else {\n var error = result.error[0];\n if (error.status !== 409) {\n throw error;\n } else {\n previousCheckpointDoc = ensureNotFalsy(error.documentInDb);\n newDoc._rev = createRevision(await state.checkpointKey, previousCheckpointDoc);\n }\n }\n }\n }\n });\n await state.checkpointQueue;\n}\nexport async function getCheckpointKey(input) {\n var hash = await input.hashFunction([input.identifier, input.forkInstance.databaseName, input.forkInstance.collectionName].join('||'));\n return 'rx_storage_replication_' + hash;\n}\n//# sourceMappingURL=checkpoint.js.map","import { clone, createRevision, flatClone, getDefaultRevision, now } from \"../plugins/utils/index.js\";\nimport { stripAttachmentsDataFromDocument } from \"../rx-storage-helper.js\";\nexport function docStateToWriteDoc(databaseInstanceToken, hasAttachments, keepMeta, docState, previous) {\n var docData = Object.assign({}, docState, {\n _attachments: hasAttachments && docState._attachments ? docState._attachments : {},\n _meta: keepMeta ? docState._meta : {\n lwt: now()\n },\n _rev: keepMeta ? docState._rev : getDefaultRevision()\n });\n if (!docData._rev) {\n docData._rev = createRevision(databaseInstanceToken, previous);\n }\n return docData;\n}\nexport function writeDocToDocState(writeDoc, keepAttachments, keepMeta) {\n var ret = flatClone(writeDoc);\n if (!keepAttachments) {\n delete ret._attachments;\n }\n if (!keepMeta) {\n delete ret._meta;\n delete ret._rev;\n }\n return ret;\n}\nexport function stripAttachmentsDataFromMetaWriteRows(state, rows) {\n if (!state.hasAttachments) {\n return rows;\n }\n return rows.map(row => {\n var document = clone(row.document);\n document.docData = stripAttachmentsDataFromDocument(document.docData);\n return {\n document,\n previous: row.previous\n };\n });\n}\nexport function getUnderlyingPersistentStorage(instance) {\n while (true) {\n if (instance.underlyingPersistentStorage) {\n instance = instance.underlyingPersistentStorage;\n } else {\n return instance;\n }\n }\n}\n//# sourceMappingURL=helper.js.map","import { fillWithDefaultSettings, getComposedPrimaryKeyOfDocumentData, getLengthOfPrimaryKey } from \"../rx-schema-helper.js\";\nimport { flatCloneDocWithMeta } from \"../rx-storage-helper.js\";\nimport { getDefaultRevision, createRevision, now } from \"../plugins/utils/index.js\";\nexport var META_INSTANCE_SCHEMA_TITLE = 'RxReplicationProtocolMetaData';\nexport function getRxReplicationMetaInstanceSchema(replicatedDocumentsSchema, encrypted) {\n var parentPrimaryKeyLength = getLengthOfPrimaryKey(replicatedDocumentsSchema);\n var baseSchema = {\n title: META_INSTANCE_SCHEMA_TITLE,\n primaryKey: {\n key: 'id',\n fields: ['itemId', 'isCheckpoint'],\n separator: '|'\n },\n type: 'object',\n version: replicatedDocumentsSchema.version,\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n minLength: 1,\n // add +1 for the '|' and +1 for the 'isCheckpoint' flag\n maxLength: parentPrimaryKeyLength + 2\n },\n isCheckpoint: {\n type: 'string',\n enum: ['0', '1'],\n minLength: 1,\n maxLength: 1\n },\n itemId: {\n type: 'string',\n /**\n * ensure that all values of RxStorageReplicationDirection ('DOWN' has 4 chars) fit into it\n * because checkpoints use the itemId field for that.\n */\n maxLength: parentPrimaryKeyLength > 4 ? parentPrimaryKeyLength : 4\n },\n checkpointData: {\n type: 'object',\n additionalProperties: true\n },\n docData: {\n type: 'object',\n properties: replicatedDocumentsSchema.properties\n },\n isResolvedConflict: {\n type: 'string'\n }\n },\n keyCompression: replicatedDocumentsSchema.keyCompression,\n required: ['id', 'isCheckpoint', 'itemId']\n };\n if (encrypted) {\n baseSchema.encrypted = ['docData'];\n }\n var metaInstanceSchema = fillWithDefaultSettings(baseSchema);\n return metaInstanceSchema;\n}\n\n/**\n * Returns the document states of what the fork instance\n * assumes to be the latest state on the master instance.\n */\nexport function getAssumedMasterState(state, docIds) {\n return state.input.metaInstance.findDocumentsById(docIds.map(docId => {\n var useId = getComposedPrimaryKeyOfDocumentData(state.input.metaInstance.schema, {\n itemId: docId,\n isCheckpoint: '0'\n });\n return useId;\n }), true).then(metaDocs => {\n var ret = {};\n Object.values(metaDocs).forEach(metaDoc => {\n ret[metaDoc.itemId] = {\n docData: metaDoc.docData,\n metaDocument: metaDoc\n };\n });\n return ret;\n });\n}\nexport async function getMetaWriteRow(state, newMasterDocState, previous, isResolvedConflict) {\n var docId = newMasterDocState[state.primaryPath];\n var newMeta = previous ? flatCloneDocWithMeta(previous) : {\n id: '',\n isCheckpoint: '0',\n itemId: docId,\n docData: newMasterDocState,\n _attachments: {},\n _deleted: false,\n _rev: getDefaultRevision(),\n _meta: {\n lwt: 0\n }\n };\n newMeta.docData = newMasterDocState;\n\n /**\n * Sending isResolvedConflict with the value undefined\n * will throw a schema validation error because it must be either\n * not set or have a string.\n */\n if (isResolvedConflict) {\n newMeta.isResolvedConflict = isResolvedConflict;\n }\n newMeta._meta.lwt = now();\n newMeta.id = getComposedPrimaryKeyOfDocumentData(state.input.metaInstance.schema, newMeta);\n newMeta._rev = createRevision(await state.checkpointKey, previous);\n var ret = {\n previous,\n document: newMeta\n };\n return ret;\n}\n//# sourceMappingURL=meta-instance.js.map","import { firstValueFrom, filter, mergeMap } from 'rxjs';\nimport { newRxError } from \"../rx-error.js\";\nimport { stackCheckpoints } from \"../rx-storage-helper.js\";\nimport { appendToArray, createRevision, ensureNotFalsy, flatClone, getDefaultRevision, now, parseRevision, PROMISE_RESOLVE_VOID } from \"../plugins/utils/index.js\";\nimport { getLastCheckpointDoc, setCheckpoint } from \"./checkpoint.js\";\nimport { stripAttachmentsDataFromMetaWriteRows, writeDocToDocState } from \"./helper.js\";\nimport { getAssumedMasterState, getMetaWriteRow } from \"./meta-instance.js\";\n\n/**\n * Writes all documents from the master to the fork.\n * The downstream has two operation modes\n * - Sync by iterating over the checkpoints via downstreamResyncOnce()\n * - Sync by listening to the changestream via downstreamProcessChanges()\n * We need this to be able to do initial syncs\n * and still can have fast event based sync when the client is not offline.\n */\nexport async function startReplicationDownstream(state) {\n if (state.input.initialCheckpoint && state.input.initialCheckpoint.downstream) {\n var checkpointDoc = await getLastCheckpointDoc(state, 'down');\n if (!checkpointDoc) {\n await setCheckpoint(state, 'down', state.input.initialCheckpoint.downstream);\n }\n }\n var identifierHash = await state.input.hashFunction(state.input.identifier);\n var replicationHandler = state.input.replicationHandler;\n\n // used to detect which tasks etc can in it at which order.\n var timer = 0;\n var openTasks = [];\n function addNewTask(task) {\n state.stats.down.addNewTask = state.stats.down.addNewTask + 1;\n var taskWithTime = {\n time: timer++,\n task\n };\n openTasks.push(taskWithTime);\n state.streamQueue.down = state.streamQueue.down.then(() => {\n var useTasks = [];\n while (openTasks.length > 0) {\n state.events.active.down.next(true);\n var innerTaskWithTime = ensureNotFalsy(openTasks.shift());\n\n /**\n * If the task came in before the last time we started the pull\n * from the master, then we can drop the task.\n */\n if (innerTaskWithTime.time < lastTimeMasterChangesRequested) {\n continue;\n }\n if (innerTaskWithTime.task === 'RESYNC') {\n if (useTasks.length === 0) {\n useTasks.push(innerTaskWithTime.task);\n break;\n } else {\n break;\n }\n }\n useTasks.push(innerTaskWithTime.task);\n }\n if (useTasks.length === 0) return;\n if (useTasks[0] === 'RESYNC') {\n return downstreamResyncOnce();\n } else {\n return downstreamProcessChanges(useTasks);\n }\n }).then(() => {\n state.events.active.down.next(false);\n if (!state.firstSyncDone.down.getValue() && !state.events.canceled.getValue()) {\n state.firstSyncDone.down.next(true);\n }\n });\n }\n addNewTask('RESYNC');\n\n /**\n * If a write on the master happens, we have to trigger the downstream.\n * Only do this if not canceled yet, otherwise firstValueFrom errors\n * when running on a completed observable.\n */\n if (!state.events.canceled.getValue()) {\n var sub = replicationHandler.masterChangeStream$.pipe(mergeMap(async ev => {\n /**\n * While a push is running, we have to delay all incoming\n * events from the server to not mix up the replication state.\n */\n await firstValueFrom(state.events.active.up.pipe(filter(s => !s)));\n return ev;\n })).subscribe(task => {\n state.stats.down.masterChangeStreamEmit = state.stats.down.masterChangeStreamEmit + 1;\n addNewTask(task);\n });\n firstValueFrom(state.events.canceled.pipe(filter(canceled => !!canceled))).then(() => sub.unsubscribe());\n }\n\n /**\n * For faster performance, we directly start each write\n * and then await all writes at the end.\n */\n var lastTimeMasterChangesRequested = -1;\n async function downstreamResyncOnce() {\n state.stats.down.downstreamResyncOnce = state.stats.down.downstreamResyncOnce + 1;\n if (state.events.canceled.getValue()) {\n return;\n }\n state.checkpointQueue = state.checkpointQueue.then(() => getLastCheckpointDoc(state, 'down'));\n var lastCheckpoint = await state.checkpointQueue;\n var promises = [];\n while (!state.events.canceled.getValue()) {\n lastTimeMasterChangesRequested = timer++;\n var downResult = await replicationHandler.masterChangesSince(lastCheckpoint, state.input.pullBatchSize);\n if (downResult.documents.length === 0) {\n break;\n }\n lastCheckpoint = stackCheckpoints([lastCheckpoint, downResult.checkpoint]);\n promises.push(persistFromMaster(downResult.documents, lastCheckpoint));\n\n /**\n * By definition we stop pull when the pulled documents\n * do not fill up the pullBatchSize because we\n * can assume that the remote has no more documents.\n */\n if (downResult.documents.length < state.input.pullBatchSize) {\n break;\n }\n }\n await Promise.all(promises);\n }\n function downstreamProcessChanges(tasks) {\n state.stats.down.downstreamProcessChanges = state.stats.down.downstreamProcessChanges + 1;\n var docsOfAllTasks = [];\n var lastCheckpoint = null;\n tasks.forEach(task => {\n if (task === 'RESYNC') {\n throw new Error('SNH');\n }\n appendToArray(docsOfAllTasks, task.documents);\n lastCheckpoint = stackCheckpoints([lastCheckpoint, task.checkpoint]);\n });\n return persistFromMaster(docsOfAllTasks, ensureNotFalsy(lastCheckpoint));\n }\n\n /**\n * It can happen that the calls to masterChangesSince() or the changeStream()\n * are way faster then how fast the documents can be persisted.\n * Therefore we merge all incoming downResults into the nonPersistedFromMaster object\n * and process them together if possible.\n * This often bundles up single writes and improves performance\n * by processing the documents in bulks.\n */\n var persistenceQueue = PROMISE_RESOLVE_VOID;\n var nonPersistedFromMaster = {\n docs: {}\n };\n function persistFromMaster(docs, checkpoint) {\n var primaryPath = state.primaryPath;\n state.stats.down.persistFromMaster = state.stats.down.persistFromMaster + 1;\n\n /**\n * Add the new docs to the non-persistent list\n */\n docs.forEach(docData => {\n var docId = docData[primaryPath];\n nonPersistedFromMaster.docs[docId] = docData;\n });\n nonPersistedFromMaster.checkpoint = checkpoint;\n\n /**\n * Run in the queue\n * with all open documents from nonPersistedFromMaster.\n */\n persistenceQueue = persistenceQueue.then(() => {\n var downDocsById = nonPersistedFromMaster.docs;\n nonPersistedFromMaster.docs = {};\n var useCheckpoint = nonPersistedFromMaster.checkpoint;\n var docIds = Object.keys(downDocsById);\n if (state.events.canceled.getValue() || docIds.length === 0) {\n return PROMISE_RESOLVE_VOID;\n }\n var writeRowsToFork = [];\n var writeRowsToForkById = {};\n var writeRowsToMeta = {};\n var useMetaWriteRows = [];\n return Promise.all([state.input.forkInstance.findDocumentsById(docIds, true), getAssumedMasterState(state, docIds)]).then(([currentForkStateList, assumedMasterState]) => {\n var currentForkState = new Map();\n currentForkStateList.forEach(doc => currentForkState.set(doc[primaryPath], doc));\n return Promise.all(docIds.map(async docId => {\n var forkStateFullDoc = currentForkState.get(docId);\n var forkStateDocData = forkStateFullDoc ? writeDocToDocState(forkStateFullDoc, state.hasAttachments, false) : undefined;\n var masterState = downDocsById[docId];\n var assumedMaster = assumedMasterState[docId];\n if (assumedMaster && forkStateFullDoc && assumedMaster.metaDocument.isResolvedConflict === forkStateFullDoc._rev) {\n /**\n * The current fork state represents a resolved conflict\n * that first must be send to the master in the upstream.\n * All conflicts are resolved by the upstream.\n */\n return PROMISE_RESOLVE_VOID;\n }\n var isAssumedMasterEqualToForkState = !assumedMaster || !forkStateDocData ? false : await state.input.conflictHandler({\n realMasterState: assumedMaster.docData,\n newDocumentState: forkStateDocData\n }, 'downstream-check-if-equal-0').then(r => r.isEqual);\n if (!isAssumedMasterEqualToForkState && assumedMaster && assumedMaster.docData._rev && forkStateFullDoc && forkStateFullDoc._meta[state.input.identifier] && parseRevision(forkStateFullDoc._rev).height === forkStateFullDoc._meta[state.input.identifier]) {\n isAssumedMasterEqualToForkState = true;\n }\n if (forkStateFullDoc && assumedMaster && isAssumedMasterEqualToForkState === false || forkStateFullDoc && !assumedMaster) {\n /**\n * We have a non-upstream-replicated\n * local write to the fork.\n * This means we ignore the downstream of this document\n * because anyway the upstream will first resolve the conflict.\n */\n return PROMISE_RESOLVE_VOID;\n }\n var areStatesExactlyEqual = !forkStateDocData ? false : await state.input.conflictHandler({\n realMasterState: masterState,\n newDocumentState: forkStateDocData\n }, 'downstream-check-if-equal-1').then(r => r.isEqual);\n if (forkStateDocData && areStatesExactlyEqual) {\n /**\n * Document states are exactly equal.\n * This can happen when the replication is shut down\n * unexpected like when the user goes offline.\n *\n * Only when the assumedMaster is different from the forkState,\n * we have to patch the document in the meta instance.\n */\n if (!assumedMaster || isAssumedMasterEqualToForkState === false) {\n useMetaWriteRows.push(await getMetaWriteRow(state, forkStateDocData, assumedMaster ? assumedMaster.metaDocument : undefined));\n }\n return PROMISE_RESOLVE_VOID;\n }\n\n /**\n * All other master states need to be written to the forkInstance\n * and metaInstance.\n */\n var newForkState = Object.assign({}, masterState, forkStateFullDoc ? {\n _meta: flatClone(forkStateFullDoc._meta),\n _attachments: state.hasAttachments && masterState._attachments ? masterState._attachments : {},\n _rev: getDefaultRevision()\n } : {\n _meta: {\n lwt: now()\n },\n _rev: getDefaultRevision(),\n _attachments: state.hasAttachments && masterState._attachments ? masterState._attachments : {}\n });\n /**\n * If the remote works with revisions,\n * we store the height of the next fork-state revision\n * inside of the documents meta data.\n * By doing so we can filter it out in the upstream\n * and detect the document as being equal to master or not.\n * This is used for example in the CouchDB replication plugin.\n */\n if (masterState._rev) {\n var nextRevisionHeight = !forkStateFullDoc ? 1 : parseRevision(forkStateFullDoc._rev).height + 1;\n newForkState._meta[state.input.identifier] = nextRevisionHeight;\n if (state.input.keepMeta) {\n newForkState._rev = masterState._rev;\n }\n }\n if (state.input.keepMeta && masterState._meta) {\n newForkState._meta = masterState._meta;\n }\n var forkWriteRow = {\n previous: forkStateFullDoc,\n document: newForkState\n };\n forkWriteRow.document._rev = forkWriteRow.document._rev ? forkWriteRow.document._rev : createRevision(identifierHash, forkWriteRow.previous);\n writeRowsToFork.push(forkWriteRow);\n writeRowsToForkById[docId] = forkWriteRow;\n writeRowsToMeta[docId] = await getMetaWriteRow(state, masterState, assumedMaster ? assumedMaster.metaDocument : undefined);\n }));\n }).then(async () => {\n if (writeRowsToFork.length > 0) {\n return state.input.forkInstance.bulkWrite(writeRowsToFork, await state.downstreamBulkWriteFlag).then(forkWriteResult => {\n forkWriteResult.success.forEach(doc => {\n var docId = doc[primaryPath];\n state.events.processed.down.next(writeRowsToForkById[docId]);\n useMetaWriteRows.push(writeRowsToMeta[docId]);\n });\n forkWriteResult.error.forEach(error => {\n /**\n * We do not have to care about downstream conflict errors here\n * because on conflict, it will be solved locally and result in another write.\n */\n if (error.status === 409) {\n return;\n }\n // other non-conflict errors must be handled\n state.events.error.next(newRxError('RC_PULL', {\n writeError: error\n }));\n });\n });\n }\n }).then(() => {\n if (useMetaWriteRows.length > 0) {\n return state.input.metaInstance.bulkWrite(stripAttachmentsDataFromMetaWriteRows(state, useMetaWriteRows), 'replication-down-write-meta').then(metaWriteResult => {\n metaWriteResult.error.forEach(writeError => {\n state.events.error.next(newRxError('RC_PULL', {\n id: writeError.documentId,\n writeError\n }));\n });\n });\n }\n }).then(() => {\n /**\n * For better performance we do not await checkpoint writes,\n * but to ensure order on parallel checkpoint writes,\n * we have to use a queue.\n */\n setCheckpoint(state, 'down', useCheckpoint);\n });\n }).catch(unhandledError => state.events.error.next(unhandledError));\n return persistenceQueue;\n }\n}\n//# sourceMappingURL=downstream.js.map","import { getDefaultRevision, createRevision, now, flatClone, deepEqual } from \"../plugins/utils/index.js\";\nimport { stripAttachmentsDataFromDocument } from \"../rx-storage-helper.js\";\nexport var defaultConflictHandler = function (i, _context) {\n var newDocumentState = stripAttachmentsDataFromDocument(i.newDocumentState);\n var realMasterState = stripAttachmentsDataFromDocument(i.realMasterState);\n\n /**\n * If the documents are deep equal,\n * we have no conflict.\n * On your custom conflict handler you might only\n * check some properties, like the updatedAt time,\n * for better performance, because deepEqual is expensive.\n */\n if (deepEqual(newDocumentState, realMasterState)) {\n return Promise.resolve({\n isEqual: true\n });\n }\n\n /**\n * The default conflict handler will always\n * drop the fork state and use the master state instead.\n */\n return Promise.resolve({\n isEqual: false,\n documentData: i.realMasterState\n });\n};\n\n/**\n * Resolves a conflict error or determines that the given document states are equal.\n * Returns the resolved document that must be written to the fork.\n * Then the new document state can be pushed upstream.\n * If document is not in conflict, returns undefined.\n * If error is non-409, it throws an error.\n * Conflicts are only solved in the upstream, never in the downstream.\n */\nexport async function resolveConflictError(state, input, forkState) {\n var conflictHandler = state.input.conflictHandler;\n var conflictHandlerOutput = await conflictHandler(input, 'replication-resolve-conflict');\n if (conflictHandlerOutput.isEqual) {\n /**\n * Documents are equal,\n * so this is not a conflict -> do nothing.\n */\n return undefined;\n } else {\n /**\n * We have a resolved conflict,\n * use the resolved document data.\n */\n var resolvedDoc = Object.assign({}, conflictHandlerOutput.documentData, {\n /**\n * Because the resolved conflict is written to the fork,\n * we have to keep/update the forks _meta data, not the masters.\n */\n _meta: flatClone(forkState._meta),\n _rev: getDefaultRevision(),\n _attachments: flatClone(forkState._attachments)\n });\n resolvedDoc._meta.lwt = now();\n resolvedDoc._rev = createRevision(await state.checkpointKey, forkState);\n return {\n resolvedDoc,\n output: conflictHandlerOutput\n };\n }\n}\n//# sourceMappingURL=conflicts.js.map","import { newRxError } from \"../../rx-error.js\";\nimport { ensureNotFalsy } from \"../utils/index.js\";\nexport function ensureSchemaSupportsAttachments(doc) {\n var schemaJson = doc.collection.schema.jsonSchema;\n if (!schemaJson.attachments) {\n throw newRxError('AT1', {\n link: 'https://pubkey.github.io/rxdb/rx-attachment.html'\n });\n }\n}\nexport function assignMethodsToAttachment(attachment) {\n Object.entries(attachment.doc.collection.attachments).forEach(([funName, fun]) => {\n Object.defineProperty(attachment, funName, {\n get: () => fun.bind(attachment)\n });\n });\n}\n\n/**\n * Fill up the missing attachment.data of the newDocument\n * so that the new document can be send to somewhere else\n * which could then receive all required attachments data\n * that it did not have before.\n */\nexport async function fillWriteDataForAttachmentsChange(primaryPath, storageInstance, newDocument, originalDocument) {\n if (!newDocument._attachments || originalDocument && !originalDocument._attachments) {\n throw new Error('_attachments missing');\n }\n var docId = newDocument[primaryPath];\n var originalAttachmentsIds = new Set(originalDocument && originalDocument._attachments ? Object.keys(originalDocument._attachments) : []);\n await Promise.all(Object.entries(newDocument._attachments).map(async ([key, value]) => {\n if ((!originalAttachmentsIds.has(key) || originalDocument && ensureNotFalsy(originalDocument._attachments)[key].digest !== value.digest) && !value.data) {\n var attachmentDataString = await storageInstance.getAttachmentData(docId, key, value.digest);\n value.data = attachmentDataString;\n }\n }));\n return newDocument;\n}\n//# sourceMappingURL=attachments-utils.js.map","import { firstValueFrom, filter } from 'rxjs';\nimport { getChangedDocumentsSince, stackCheckpoints } from \"../rx-storage-helper.js\";\nimport { appendToArray, batchArray, clone, ensureNotFalsy, parseRevision, PROMISE_RESOLVE_FALSE } from \"../plugins/utils/index.js\";\nimport { getLastCheckpointDoc, setCheckpoint } from \"./checkpoint.js\";\nimport { resolveConflictError } from \"./conflicts.js\";\nimport { stripAttachmentsDataFromMetaWriteRows, writeDocToDocState } from \"./helper.js\";\nimport { getAssumedMasterState, getMetaWriteRow } from \"./meta-instance.js\";\nimport { fillWriteDataForAttachmentsChange } from \"../plugins/attachments/index.js\";\n\n/**\n * Writes all document changes from the fork to the master.\n * The upstream runs on two modes:\n * - For initial replication, a checkpoint-iteration is used\n * - For ongoing local writes, we just subscribe to the changeStream of the fork.\n * In contrast to the master, the fork can be assumed to never loose connection,\n * so we do not have to prepare for missed out events.\n */\nexport async function startReplicationUpstream(state) {\n if (state.input.initialCheckpoint && state.input.initialCheckpoint.upstream) {\n var checkpointDoc = await getLastCheckpointDoc(state, 'up');\n if (!checkpointDoc) {\n await setCheckpoint(state, 'up', state.input.initialCheckpoint.upstream);\n }\n }\n var replicationHandler = state.input.replicationHandler;\n state.streamQueue.up = state.streamQueue.up.then(() => {\n return upstreamInitialSync().then(() => {\n processTasks();\n });\n });\n\n // used to detect which tasks etc can in it at which order.\n var timer = 0;\n var initialSyncStartTime = -1;\n var openTasks = [];\n var persistenceQueue = PROMISE_RESOLVE_FALSE;\n var nonPersistedFromMaster = {\n docs: {}\n };\n var sub = state.input.forkInstance.changeStream().subscribe(async eventBulk => {\n // ignore writes that came from the downstream\n if (eventBulk.context === (await state.downstreamBulkWriteFlag)) {\n return;\n }\n state.stats.up.forkChangeStreamEmit = state.stats.up.forkChangeStreamEmit + 1;\n openTasks.push({\n task: eventBulk,\n time: timer++\n });\n if (!state.events.active.up.getValue()) {\n state.events.active.up.next(true);\n }\n if (state.input.waitBeforePersist) {\n return state.input.waitBeforePersist().then(() => processTasks());\n } else {\n return processTasks();\n }\n });\n firstValueFrom(state.events.canceled.pipe(filter(canceled => !!canceled))).then(() => sub.unsubscribe());\n async function upstreamInitialSync() {\n state.stats.up.upstreamInitialSync = state.stats.up.upstreamInitialSync + 1;\n if (state.events.canceled.getValue()) {\n return;\n }\n state.checkpointQueue = state.checkpointQueue.then(() => getLastCheckpointDoc(state, 'up'));\n var lastCheckpoint = await state.checkpointQueue;\n var promises = new Set();\n var _loop = async function () {\n initialSyncStartTime = timer++;\n\n /**\n * Throttle the calls to\n * forkInstance.getChangedDocumentsSince() so that\n * if the pushing to the remote is slower compared to the\n * pulling out of forkInstance, we do not block the UI too much\n * and have a big memory spike with all forkInstance documents.\n */\n if (promises.size > 3) {\n await Promise.race(Array.from(promises));\n }\n var upResult = await getChangedDocumentsSince(state.input.forkInstance, state.input.pushBatchSize, lastCheckpoint);\n if (upResult.documents.length === 0) {\n return 1; // break\n }\n lastCheckpoint = stackCheckpoints([lastCheckpoint, upResult.checkpoint]);\n var promise = persistToMaster(upResult.documents, ensureNotFalsy(lastCheckpoint));\n promises.add(promise);\n promise.catch().then(() => promises.delete(promise));\n };\n while (!state.events.canceled.getValue()) {\n if (await _loop()) break;\n }\n\n /**\n * If we had conflicts during the initial sync,\n * it means that we likely have new writes to the fork\n * and so we have to run the initial sync again to upstream these new writes.\n */\n var resolvedPromises = await Promise.all(promises);\n var hadConflicts = resolvedPromises.find(r => !!r);\n if (hadConflicts) {\n await upstreamInitialSync();\n } else if (!state.firstSyncDone.up.getValue() && !state.events.canceled.getValue()) {\n state.firstSyncDone.up.next(true);\n }\n }\n\n /**\n * Takes all open tasks an processes them at once.\n */\n function processTasks() {\n if (state.events.canceled.getValue() || openTasks.length === 0) {\n state.events.active.up.next(false);\n return;\n }\n state.stats.up.processTasks = state.stats.up.processTasks + 1;\n state.events.active.up.next(true);\n state.streamQueue.up = state.streamQueue.up.then(() => {\n /**\n * Merge/filter all open tasks\n */\n var docs = [];\n var checkpoint = {};\n while (openTasks.length > 0) {\n var taskWithTime = ensureNotFalsy(openTasks.shift());\n /**\n * If the task came in before the last time the initial sync fetching\n * has run, we can ignore the task because the initial sync already processed\n * these documents.\n */\n if (taskWithTime.time < initialSyncStartTime) {\n continue;\n }\n appendToArray(docs, taskWithTime.task.events.map(r => {\n return r.documentData;\n }));\n checkpoint = stackCheckpoints([checkpoint, taskWithTime.task.checkpoint]);\n }\n var promise = docs.length === 0 ? PROMISE_RESOLVE_FALSE : persistToMaster(docs, checkpoint);\n return promise.then(() => {\n if (openTasks.length === 0) {\n state.events.active.up.next(false);\n } else {\n processTasks();\n }\n });\n });\n }\n\n /**\n * Returns true if had conflicts,\n * false if not.\n */\n function persistToMaster(docs, checkpoint) {\n state.stats.up.persistToMaster = state.stats.up.persistToMaster + 1;\n\n /**\n * Add the new docs to the non-persistent list\n */\n docs.forEach(docData => {\n var docId = docData[state.primaryPath];\n nonPersistedFromMaster.docs[docId] = docData;\n });\n nonPersistedFromMaster.checkpoint = checkpoint;\n persistenceQueue = persistenceQueue.then(async () => {\n if (state.events.canceled.getValue()) {\n return false;\n }\n var upDocsById = nonPersistedFromMaster.docs;\n nonPersistedFromMaster.docs = {};\n var useCheckpoint = nonPersistedFromMaster.checkpoint;\n var docIds = Object.keys(upDocsById);\n if (docIds.length === 0) {\n return false;\n }\n var assumedMasterState = await getAssumedMasterState(state, docIds);\n var writeRowsToMaster = {};\n var writeRowsToMasterIds = [];\n var writeRowsToMeta = {};\n var forkStateById = {};\n await Promise.all(docIds.map(async docId => {\n var fullDocData = upDocsById[docId];\n forkStateById[docId] = fullDocData;\n var docData = writeDocToDocState(fullDocData, state.hasAttachments, !!state.input.keepMeta);\n var assumedMasterDoc = assumedMasterState[docId];\n\n /**\n * If the master state is equal to the\n * fork state, we can assume that the document state is already\n * replicated.\n */\n if (assumedMasterDoc &&\n // if the isResolvedConflict is correct, we do not have to compare the documents.\n assumedMasterDoc.metaDocument.isResolvedConflict !== fullDocData._rev && (await state.input.conflictHandler({\n realMasterState: assumedMasterDoc.docData,\n newDocumentState: docData\n }, 'upstream-check-if-equal')).isEqual || (\n /**\n * If the master works with _rev fields,\n * we use that to check if our current doc state\n * is different from the assumedMasterDoc.\n */\n\n assumedMasterDoc && assumedMasterDoc.docData._rev && parseRevision(fullDocData._rev).height === fullDocData._meta[state.input.identifier])) {\n return;\n }\n writeRowsToMasterIds.push(docId);\n writeRowsToMaster[docId] = {\n assumedMasterState: assumedMasterDoc ? assumedMasterDoc.docData : undefined,\n newDocumentState: docData\n };\n writeRowsToMeta[docId] = await getMetaWriteRow(state, docData, assumedMasterDoc ? assumedMasterDoc.metaDocument : undefined);\n }));\n if (writeRowsToMasterIds.length === 0) {\n return false;\n }\n var writeRowsArray = Object.values(writeRowsToMaster);\n var conflictIds = new Set();\n var conflictsById = {};\n\n /**\n * To always respect the push.batchSize,\n * we have to split the write rows into batches\n * to ensure that replicationHandler.masterWrite() is never\n * called with more documents than what the batchSize limits.\n */\n var writeBatches = batchArray(writeRowsArray, state.input.pushBatchSize);\n await Promise.all(writeBatches.map(async writeBatch => {\n // enhance docs with attachments\n if (state.hasAttachments) {\n await Promise.all(writeBatch.map(async row => {\n row.newDocumentState = await fillWriteDataForAttachmentsChange(state.primaryPath, state.input.forkInstance, clone(row.newDocumentState), row.assumedMasterState);\n }));\n }\n var masterWriteResult = await replicationHandler.masterWrite(writeBatch);\n masterWriteResult.forEach(conflictDoc => {\n var id = conflictDoc[state.primaryPath];\n conflictIds.add(id);\n conflictsById[id] = conflictDoc;\n });\n }));\n var useWriteRowsToMeta = [];\n writeRowsToMasterIds.forEach(docId => {\n if (!conflictIds.has(docId)) {\n state.events.processed.up.next(writeRowsToMaster[docId]);\n useWriteRowsToMeta.push(writeRowsToMeta[docId]);\n }\n });\n if (state.events.canceled.getValue()) {\n return false;\n }\n if (useWriteRowsToMeta.length > 0) {\n await state.input.metaInstance.bulkWrite(stripAttachmentsDataFromMetaWriteRows(state, useWriteRowsToMeta), 'replication-up-write-meta');\n // TODO what happens when we have conflicts here?\n }\n\n /**\n * Resolve conflicts by writing a new document\n * state to the fork instance and the 'real' master state\n * to the meta instance.\n * Non-409 errors will be detected by resolveConflictError()\n */\n var hadConflictWrites = false;\n if (conflictIds.size > 0) {\n state.stats.up.persistToMasterHadConflicts = state.stats.up.persistToMasterHadConflicts + 1;\n var conflictWriteFork = [];\n var conflictWriteMeta = {};\n await Promise.all(Object.entries(conflictsById).map(([docId, realMasterState]) => {\n var writeToMasterRow = writeRowsToMaster[docId];\n var input = {\n newDocumentState: writeToMasterRow.newDocumentState,\n assumedMasterState: writeToMasterRow.assumedMasterState,\n realMasterState\n };\n return resolveConflictError(state, input, forkStateById[docId]).then(async resolved => {\n if (resolved) {\n state.events.resolvedConflicts.next({\n input,\n output: resolved.output\n });\n conflictWriteFork.push({\n previous: forkStateById[docId],\n document: resolved.resolvedDoc\n });\n var assumedMasterDoc = assumedMasterState[docId];\n conflictWriteMeta[docId] = await getMetaWriteRow(state, ensureNotFalsy(realMasterState), assumedMasterDoc ? assumedMasterDoc.metaDocument : undefined, resolved.resolvedDoc._rev);\n }\n });\n }));\n if (conflictWriteFork.length > 0) {\n hadConflictWrites = true;\n state.stats.up.persistToMasterConflictWrites = state.stats.up.persistToMasterConflictWrites + 1;\n var forkWriteResult = await state.input.forkInstance.bulkWrite(conflictWriteFork, 'replication-up-write-conflict');\n /**\n * Errors in the forkWriteResult must not be handled\n * because they have been caused by a write to the forkInstance\n * in between which will anyway trigger a new upstream cycle\n * that will then resolved the conflict again.\n */\n var useMetaWrites = [];\n forkWriteResult.success.forEach(docData => {\n var docId = docData[state.primaryPath];\n useMetaWrites.push(conflictWriteMeta[docId]);\n });\n if (useMetaWrites.length > 0) {\n await state.input.metaInstance.bulkWrite(stripAttachmentsDataFromMetaWriteRows(state, useMetaWrites), 'replication-up-write-conflict-meta');\n }\n // TODO what to do with conflicts while writing to the metaInstance?\n }\n }\n\n /**\n * For better performance we do not await checkpoint writes,\n * but to ensure order on parallel checkpoint writes,\n * we have to use a queue.\n */\n setCheckpoint(state, 'up', useCheckpoint);\n return hadConflictWrites;\n }).catch(unhandledError => {\n state.events.error.next(unhandledError);\n return false;\n });\n return persistenceQueue;\n }\n}\n//# sourceMappingURL=upstream.js.map","/**\n * These files contain the replication protocol.\n * It can be used to replicated RxStorageInstances or RxCollections\n * or even to do a client(s)-server replication.\n */\n\nimport { BehaviorSubject, combineLatest, filter, firstValueFrom, mergeMap, Subject } from 'rxjs';\nimport { getPrimaryFieldOfPrimaryKey } from \"../rx-schema-helper.js\";\nimport { clone, ensureNotFalsy, flatClone, PROMISE_RESOLVE_VOID } from \"../plugins/utils/index.js\";\nimport { getCheckpointKey } from \"./checkpoint.js\";\nimport { startReplicationDownstream } from \"./downstream.js\";\nimport { docStateToWriteDoc, getUnderlyingPersistentStorage, writeDocToDocState } from \"./helper.js\";\nimport { startReplicationUpstream } from \"./upstream.js\";\nimport { fillWriteDataForAttachmentsChange } from \"../plugins/attachments/index.js\";\nimport { getChangedDocumentsSince } from \"../rx-storage-helper.js\";\nexport * from \"./checkpoint.js\";\nexport * from \"./downstream.js\";\nexport * from \"./upstream.js\";\nexport * from \"./meta-instance.js\";\nexport * from \"./conflicts.js\";\nexport * from \"./helper.js\";\nexport function replicateRxStorageInstance(input) {\n input = flatClone(input);\n input.forkInstance = getUnderlyingPersistentStorage(input.forkInstance);\n input.metaInstance = getUnderlyingPersistentStorage(input.metaInstance);\n var checkpointKeyPromise = getCheckpointKey(input);\n var state = {\n primaryPath: getPrimaryFieldOfPrimaryKey(input.forkInstance.schema.primaryKey),\n hasAttachments: !!input.forkInstance.schema.attachments,\n input,\n checkpointKey: checkpointKeyPromise,\n downstreamBulkWriteFlag: checkpointKeyPromise.then(checkpointKey => 'replication-downstream-' + checkpointKey),\n events: {\n canceled: new BehaviorSubject(false),\n active: {\n down: new BehaviorSubject(true),\n up: new BehaviorSubject(true)\n },\n processed: {\n down: new Subject(),\n up: new Subject()\n },\n resolvedConflicts: new Subject(),\n error: new Subject()\n },\n stats: {\n down: {\n addNewTask: 0,\n downstreamProcessChanges: 0,\n downstreamResyncOnce: 0,\n masterChangeStreamEmit: 0,\n persistFromMaster: 0\n },\n up: {\n forkChangeStreamEmit: 0,\n persistToMaster: 0,\n persistToMasterConflictWrites: 0,\n persistToMasterHadConflicts: 0,\n processTasks: 0,\n upstreamInitialSync: 0\n }\n },\n firstSyncDone: {\n down: new BehaviorSubject(false),\n up: new BehaviorSubject(false)\n },\n streamQueue: {\n down: PROMISE_RESOLVE_VOID,\n up: PROMISE_RESOLVE_VOID\n },\n checkpointQueue: PROMISE_RESOLVE_VOID,\n lastCheckpointDoc: {}\n };\n startReplicationDownstream(state);\n startReplicationUpstream(state);\n return state;\n}\nexport function awaitRxStorageReplicationFirstInSync(state) {\n return firstValueFrom(combineLatest([state.firstSyncDone.down.pipe(filter(v => !!v)), state.firstSyncDone.up.pipe(filter(v => !!v))])).then(() => {});\n}\nexport function awaitRxStorageReplicationInSync(replicationState) {\n return Promise.all([replicationState.streamQueue.up, replicationState.streamQueue.down, replicationState.checkpointQueue]);\n}\nexport async function awaitRxStorageReplicationIdle(state) {\n await awaitRxStorageReplicationFirstInSync(state);\n while (true) {\n var {\n down,\n up\n } = state.streamQueue;\n await Promise.all([up, down]);\n /**\n * If the Promises have not been reassigned\n * after awaiting them, we know that the replication\n * is in idle state at this point in time.\n */\n if (down === state.streamQueue.down && up === state.streamQueue.up) {\n return;\n }\n }\n}\nexport function rxStorageInstanceToReplicationHandler(instance, conflictHandler, databaseInstanceToken,\n/**\n * If set to true,\n * the _meta.lwt from the pushed documents is kept.\n * (Used in the migration to ensure checkpoints are still valid)\n */\nkeepMeta = false) {\n instance = getUnderlyingPersistentStorage(instance);\n var hasAttachments = !!instance.schema.attachments;\n var primaryPath = getPrimaryFieldOfPrimaryKey(instance.schema.primaryKey);\n var replicationHandler = {\n masterChangeStream$: instance.changeStream().pipe(mergeMap(async eventBulk => {\n var ret = {\n checkpoint: eventBulk.checkpoint,\n documents: await Promise.all(eventBulk.events.map(async event => {\n var docData = writeDocToDocState(event.documentData, hasAttachments, keepMeta);\n if (hasAttachments) {\n docData = await fillWriteDataForAttachmentsChange(primaryPath, instance, clone(docData),\n /**\n * Notice that the master never knows\n * the client state of the document.\n * Therefore we always send all attachments data.\n */\n undefined);\n }\n return docData;\n }))\n };\n return ret;\n })),\n masterChangesSince(checkpoint, batchSize) {\n return getChangedDocumentsSince(instance, batchSize, checkpoint).then(async result => {\n return {\n checkpoint: result.documents.length > 0 ? result.checkpoint : checkpoint,\n documents: await Promise.all(result.documents.map(async plainDocumentData => {\n var docData = writeDocToDocState(plainDocumentData, hasAttachments, keepMeta);\n if (hasAttachments) {\n docData = await fillWriteDataForAttachmentsChange(primaryPath, instance, clone(docData),\n /**\n * Notice the the master never knows\n * the client state of the document.\n * Therefore we always send all attachments data.\n */\n undefined);\n }\n return docData;\n }))\n };\n });\n },\n async masterWrite(rows) {\n var rowById = {};\n rows.forEach(row => {\n var docId = row.newDocumentState[primaryPath];\n rowById[docId] = row;\n });\n var ids = Object.keys(rowById);\n var masterDocsStateList = await instance.findDocumentsById(ids, true);\n var masterDocsState = new Map();\n masterDocsStateList.forEach(doc => masterDocsState.set(doc[primaryPath], doc));\n var conflicts = [];\n var writeRows = [];\n await Promise.all(Object.entries(rowById).map(async ([id, row]) => {\n var masterState = masterDocsState.get(id);\n if (!masterState) {\n writeRows.push({\n document: docStateToWriteDoc(databaseInstanceToken, hasAttachments, keepMeta, row.newDocumentState)\n });\n } else if (masterState && !row.assumedMasterState) {\n conflicts.push(writeDocToDocState(masterState, hasAttachments, keepMeta));\n } else if ((await conflictHandler({\n realMasterState: writeDocToDocState(masterState, hasAttachments, keepMeta),\n newDocumentState: ensureNotFalsy(row.assumedMasterState)\n }, 'rxStorageInstanceToReplicationHandler-masterWrite')).isEqual === true) {\n writeRows.push({\n previous: masterState,\n document: docStateToWriteDoc(databaseInstanceToken, hasAttachments, keepMeta, row.newDocumentState, masterState)\n });\n } else {\n conflicts.push(writeDocToDocState(masterState, hasAttachments, keepMeta));\n }\n }));\n if (writeRows.length > 0) {\n var result = await instance.bulkWrite(writeRows, 'replication-master-write');\n result.error.forEach(err => {\n if (err.status !== 409) {\n throw new Error('non conflict error');\n } else {\n conflicts.push(writeDocToDocState(ensureNotFalsy(err.documentInDb), hasAttachments, keepMeta));\n }\n });\n }\n return conflicts;\n }\n };\n return replicationHandler;\n}\nexport async function cancelRxStorageReplication(replicationState) {\n replicationState.events.canceled.next(true);\n replicationState.events.active.up.complete();\n replicationState.events.active.down.complete();\n replicationState.events.processed.up.complete();\n replicationState.events.processed.down.complete();\n replicationState.events.resolvedConflicts.complete();\n replicationState.events.canceled.complete();\n await replicationState.checkpointQueue;\n}\n//# sourceMappingURL=index.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport { filter, map, mergeMap } from 'rxjs';\nimport { ucfirst, flatClone, promiseSeries, pluginMissing, ensureNotFalsy, getFromMapOrThrow, PROMISE_RESOLVE_FALSE, PROMISE_RESOLVE_VOID } from \"./plugins/utils/index.js\";\nimport { fillObjectDataBeforeInsert, createRxCollectionStorageInstance, removeCollectionStorages } from \"./rx-collection-helper.js\";\nimport { createRxQuery, _getDefaultQuery } from \"./rx-query.js\";\nimport { newRxError, newRxTypeError } from \"./rx-error.js\";\nimport { DocumentCache, mapDocumentsDataToCacheDocs } from \"./doc-cache.js\";\nimport { createQueryCache, defaultCacheReplacementPolicy } from \"./query-cache.js\";\nimport { createChangeEventBuffer } from \"./change-event-buffer.js\";\nimport { runAsyncPluginHooks, runPluginHooks } from \"./hooks.js\";\nimport { createNewRxDocument } from \"./rx-document-prototype-merge.js\";\nimport { getWrappedStorageInstance, storageChangeEventToRxChangeEvent, throwIfIsStorageWriteError } from \"./rx-storage-helper.js\";\nimport { defaultConflictHandler } from \"./replication-protocol/index.js\";\nimport { IncrementalWriteQueue } from \"./incremental-write.js\";\nimport { beforeDocumentUpdateWrite } from \"./rx-document.js\";\nimport { overwritable } from \"./overwritable.js\";\nvar HOOKS_WHEN = ['pre', 'post'];\nvar HOOKS_KEYS = ['insert', 'save', 'remove', 'create'];\nvar hooksApplied = false;\nexport var RxCollectionBase = /*#__PURE__*/function () {\n /**\n * Stores all 'normal' documents\n */\n\n function RxCollectionBase(database, name, schema, internalStorageInstance, instanceCreationOptions = {}, migrationStrategies = {}, methods = {}, attachments = {}, options = {}, cacheReplacementPolicy = defaultCacheReplacementPolicy, statics = {}, conflictHandler = defaultConflictHandler) {\n this.storageInstance = {};\n this.timeouts = new Set();\n this.incrementalWriteQueue = {};\n this._incrementalUpsertQueues = new Map();\n this.synced = false;\n this.hooks = {};\n this._subs = [];\n this._docCache = {};\n this._queryCache = createQueryCache();\n this.$ = {};\n this.checkpoint$ = {};\n this._changeEventBuffer = {};\n this.onDestroy = [];\n this.destroyed = false;\n this.database = database;\n this.name = name;\n this.schema = schema;\n this.internalStorageInstance = internalStorageInstance;\n this.instanceCreationOptions = instanceCreationOptions;\n this.migrationStrategies = migrationStrategies;\n this.methods = methods;\n this.attachments = attachments;\n this.options = options;\n this.cacheReplacementPolicy = cacheReplacementPolicy;\n this.statics = statics;\n this.conflictHandler = conflictHandler;\n _applyHookFunctions(this.asRxCollection);\n }\n var _proto = RxCollectionBase.prototype;\n _proto.prepare = async function prepare() {\n this.storageInstance = getWrappedStorageInstance(this.database, this.internalStorageInstance, this.schema.jsonSchema);\n this.incrementalWriteQueue = new IncrementalWriteQueue(this.storageInstance, this.schema.primaryPath, (newData, oldData) => beforeDocumentUpdateWrite(this, newData, oldData), result => this._runHooks('post', 'save', result));\n var collectionEventBulks$ = this.database.eventBulks$.pipe(filter(changeEventBulk => changeEventBulk.collectionName === this.name));\n this.$ = collectionEventBulks$.pipe(mergeMap(changeEventBulk => changeEventBulk.events));\n this.checkpoint$ = collectionEventBulks$.pipe(map(changeEventBulk => changeEventBulk.checkpoint));\n this._changeEventBuffer = createChangeEventBuffer(this.asRxCollection);\n this._docCache = new DocumentCache(this.schema.primaryPath, this.$.pipe(filter(cE => !cE.isLocal)), docData => createNewRxDocument(this.asRxCollection, docData));\n\n /**\n * Instead of resolving the EventBulk array here and spit it into\n * single events, we should fully work with event bulks internally\n * to save performance.\n */\n var databaseStorageToken = await this.database.storageToken;\n var subDocs = this.storageInstance.changeStream().subscribe(eventBulk => {\n var changeEventBulk = {\n id: eventBulk.id,\n internal: false,\n collectionName: this.name,\n storageToken: databaseStorageToken,\n events: eventBulk.events.map(ev => storageChangeEventToRxChangeEvent(false, ev, this)),\n databaseToken: this.database.token,\n checkpoint: eventBulk.checkpoint,\n context: eventBulk.context,\n endTime: eventBulk.endTime,\n startTime: eventBulk.startTime\n };\n this.database.$emit(changeEventBulk);\n });\n this._subs.push(subDocs);\n\n /**\n * Resolve the conflict tasks\n * of the RxStorageInstance\n */\n this._subs.push(this.storageInstance.conflictResultionTasks().subscribe(task => {\n this.conflictHandler(task.input, task.context).then(output => {\n this.storageInstance.resolveConflictResultionTask({\n id: task.id,\n output\n });\n });\n }));\n return PROMISE_RESOLVE_VOID;\n }\n\n /**\n * Manually call the cleanup function of the storage.\n * @link https://rxdb.info/cleanup.html\n */;\n _proto.cleanup = function cleanup(_minimumDeletedTime) {\n throw pluginMissing('cleanup');\n }\n\n // overwritten by migration-plugin\n ;\n _proto.migrationNeeded = function migrationNeeded() {\n throw pluginMissing('migration-schema');\n };\n _proto.getMigrationState = function getMigrationState() {\n throw pluginMissing('migration-schema');\n };\n _proto.startMigration = function startMigration(batchSize = 10) {\n return this.getMigrationState().startMigration(batchSize);\n };\n _proto.migratePromise = function migratePromise(batchSize = 10) {\n return this.getMigrationState().migratePromise(batchSize);\n };\n _proto.insert = async function insert(json) {\n var writeResult = await this.bulkInsert([json]);\n var isError = writeResult.error[0];\n throwIfIsStorageWriteError(this, json[this.schema.primaryPath], json, isError);\n var insertResult = ensureNotFalsy(writeResult.success[0]);\n return insertResult;\n };\n _proto.bulkInsert = async function bulkInsert(docsData) {\n /**\n * Optimization shortcut,\n * do nothing when called with an empty array\n */\n if (docsData.length === 0) {\n return {\n success: [],\n error: []\n };\n }\n var primaryPath = this.schema.primaryPath;\n var useDocs = docsData.map(docData => {\n var useDocData = fillObjectDataBeforeInsert(this.schema, docData);\n return useDocData;\n });\n var docs = this.hasHooks('pre', 'insert') ? await Promise.all(useDocs.map(doc => {\n return this._runHooks('pre', 'insert', doc).then(() => {\n return doc;\n });\n })) : useDocs;\n var insertRows = docs.map(doc => {\n var row = {\n document: doc\n };\n return row;\n });\n var results = await this.storageInstance.bulkWrite(insertRows, 'rx-collection-bulk-insert');\n\n // create documents\n var rxDocuments = mapDocumentsDataToCacheDocs(this._docCache, results.success);\n if (this.hasHooks('post', 'insert')) {\n var docsMap = new Map();\n docs.forEach(doc => {\n docsMap.set(doc[primaryPath], doc);\n });\n await Promise.all(rxDocuments.map(doc => {\n return this._runHooks('post', 'insert', docsMap.get(doc.primary), doc);\n }));\n }\n return {\n success: rxDocuments,\n error: results.error\n };\n };\n _proto.bulkRemove = async function bulkRemove(ids) {\n var primaryPath = this.schema.primaryPath;\n /**\n * Optimization shortcut,\n * do nothing when called with an empty array\n */\n if (ids.length === 0) {\n return {\n success: [],\n error: []\n };\n }\n var rxDocumentMap = await this.findByIds(ids).exec();\n var docsData = [];\n var docsMap = new Map();\n Array.from(rxDocumentMap.values()).forEach(rxDocument => {\n var data = rxDocument.toMutableJSON(true);\n docsData.push(data);\n docsMap.set(rxDocument.primary, data);\n });\n await Promise.all(docsData.map(doc => {\n var primary = doc[this.schema.primaryPath];\n return this._runHooks('pre', 'remove', doc, rxDocumentMap.get(primary));\n }));\n var removeDocs = docsData.map(doc => {\n var writeDoc = flatClone(doc);\n writeDoc._deleted = true;\n return {\n previous: doc,\n document: writeDoc\n };\n });\n var results = await this.storageInstance.bulkWrite(removeDocs, 'rx-collection-bulk-remove');\n var successIds = results.success.map(d => d[primaryPath]);\n\n // run hooks\n await Promise.all(successIds.map(id => {\n return this._runHooks('post', 'remove', docsMap.get(id), rxDocumentMap.get(id));\n }));\n var rxDocuments = successIds.map(id => getFromMapOrThrow(rxDocumentMap, id));\n return {\n success: rxDocuments,\n error: results.error\n };\n }\n\n /**\n * same as bulkInsert but overwrites existing document with same primary\n */;\n _proto.bulkUpsert = async function bulkUpsert(docsData) {\n var insertData = [];\n var useJsonByDocId = new Map();\n docsData.forEach(docData => {\n var useJson = fillObjectDataBeforeInsert(this.schema, docData);\n var primary = useJson[this.schema.primaryPath];\n if (!primary) {\n throw newRxError('COL3', {\n primaryPath: this.schema.primaryPath,\n data: useJson,\n schema: this.schema.jsonSchema\n });\n }\n useJsonByDocId.set(primary, useJson);\n insertData.push(useJson);\n });\n var insertResult = await this.bulkInsert(insertData);\n var success = insertResult.success.slice(0);\n var error = [];\n\n // update the ones that existed already\n await Promise.all(insertResult.error.map(async err => {\n if (err.status !== 409) {\n error.push(err);\n } else {\n var id = err.documentId;\n var writeData = getFromMapOrThrow(useJsonByDocId, id);\n var docDataInDb = ensureNotFalsy(err.documentInDb);\n var doc = this._docCache.getCachedRxDocument(docDataInDb);\n var newDoc = await doc.incrementalModify(() => writeData);\n success.push(newDoc);\n }\n }));\n return {\n error,\n success\n };\n }\n\n /**\n * same as insert but overwrites existing document with same primary\n */;\n _proto.upsert = async function upsert(json) {\n var bulkResult = await this.bulkUpsert([json]);\n throwIfIsStorageWriteError(this.asRxCollection, json[this.schema.primaryPath], json, bulkResult.error[0]);\n return bulkResult.success[0];\n }\n\n /**\n * upserts to a RxDocument, uses incrementalModify if document already exists\n */;\n _proto.incrementalUpsert = function incrementalUpsert(json) {\n var useJson = fillObjectDataBeforeInsert(this.schema, json);\n var primary = useJson[this.schema.primaryPath];\n if (!primary) {\n throw newRxError('COL4', {\n data: json\n });\n }\n\n // ensure that it won't try 2 parallel runs\n var queue = this._incrementalUpsertQueues.get(primary);\n if (!queue) {\n queue = PROMISE_RESOLVE_VOID;\n }\n queue = queue.then(() => _incrementalUpsertEnsureRxDocumentExists(this, primary, useJson)).then(wasInserted => {\n if (!wasInserted.inserted) {\n return _incrementalUpsertUpdate(wasInserted.doc, useJson);\n } else {\n return wasInserted.doc;\n }\n });\n this._incrementalUpsertQueues.set(primary, queue);\n return queue;\n };\n _proto.find = function find(queryObj) {\n if (typeof queryObj === 'string') {\n throw newRxError('COL5', {\n queryObj\n });\n }\n if (!queryObj) {\n queryObj = _getDefaultQuery();\n }\n var query = createRxQuery('find', queryObj, this);\n return query;\n };\n _proto.findOne = function findOne(queryObj) {\n // TODO move this check to dev-mode plugin\n if (typeof queryObj === 'number' || Array.isArray(queryObj)) {\n throw newRxTypeError('COL6', {\n queryObj\n });\n }\n var query;\n if (typeof queryObj === 'string') {\n query = createRxQuery('findOne', {\n selector: {\n [this.schema.primaryPath]: queryObj\n },\n limit: 1\n }, this);\n } else {\n if (!queryObj) {\n queryObj = _getDefaultQuery();\n }\n\n // cannot have limit on findOne queries because it will be overwritten\n if (queryObj.limit) {\n throw newRxError('QU6');\n }\n queryObj = flatClone(queryObj);\n queryObj.limit = 1;\n query = createRxQuery('findOne', queryObj, this);\n }\n return query;\n };\n _proto.count = function count(queryObj) {\n if (!queryObj) {\n queryObj = _getDefaultQuery();\n }\n var query = createRxQuery('count', queryObj, this);\n return query;\n }\n\n /**\n * find a list documents by their primary key\n * has way better performance then running multiple findOne() or a find() with a complex $or-selected\n */;\n _proto.findByIds = function findByIds(ids) {\n var mangoQuery = {\n selector: {\n [this.schema.primaryPath]: {\n $in: ids.slice(0)\n }\n }\n };\n var query = createRxQuery('findByIds', mangoQuery, this);\n return query;\n }\n\n /**\n * Export collection to a JSON friendly format.\n */;\n _proto.exportJSON = function exportJSON() {\n throw pluginMissing('json-dump');\n }\n\n /**\n * Import the parsed JSON export into the collection.\n * @param _exportedJSON The previously exported data from the `.exportJSON()` method.\n */;\n _proto.importJSON = function importJSON(_exportedJSON) {\n throw pluginMissing('json-dump');\n };\n _proto.insertCRDT = function insertCRDT(_updateObj) {\n throw pluginMissing('crdt');\n }\n\n /**\n * HOOKS\n */;\n _proto.addHook = function addHook(when, key, fun, parallel = false) {\n if (typeof fun !== 'function') {\n throw newRxTypeError('COL7', {\n key,\n when\n });\n }\n if (!HOOKS_WHEN.includes(when)) {\n throw newRxTypeError('COL8', {\n key,\n when\n });\n }\n if (!HOOKS_KEYS.includes(key)) {\n throw newRxError('COL9', {\n key\n });\n }\n if (when === 'post' && key === 'create' && parallel === true) {\n throw newRxError('COL10', {\n when,\n key,\n parallel\n });\n }\n\n // bind this-scope to hook-function\n var boundFun = fun.bind(this);\n var runName = parallel ? 'parallel' : 'series';\n this.hooks[key] = this.hooks[key] || {};\n this.hooks[key][when] = this.hooks[key][when] || {\n series: [],\n parallel: []\n };\n this.hooks[key][when][runName].push(boundFun);\n };\n _proto.getHooks = function getHooks(when, key) {\n if (!this.hooks[key] || !this.hooks[key][when]) {\n return {\n series: [],\n parallel: []\n };\n }\n return this.hooks[key][when];\n };\n _proto.hasHooks = function hasHooks(when, key) {\n var hooks = this.getHooks(when, key);\n if (!hooks) {\n return false;\n }\n return hooks.series.length > 0 || hooks.parallel.length > 0;\n };\n _proto._runHooks = function _runHooks(when, key, data, instance) {\n var hooks = this.getHooks(when, key);\n if (!hooks) {\n return PROMISE_RESOLVE_VOID;\n }\n\n // run parallel: false\n var tasks = hooks.series.map(hook => () => hook(data, instance));\n return promiseSeries(tasks)\n // run parallel: true\n .then(() => Promise.all(hooks.parallel.map(hook => hook(data, instance))));\n }\n\n /**\n * does the same as ._runHooks() but with non-async-functions\n */;\n _proto._runHooksSync = function _runHooksSync(when, key, data, instance) {\n var hooks = this.getHooks(when, key);\n if (!hooks) return;\n hooks.series.forEach(hook => hook(data, instance));\n }\n\n /**\n * Returns a promise that resolves after the given time.\n * Ensures that is properly cleans up when the collection is destroyed\n * so that no running timeouts prevent the exit of the JavaScript process.\n */;\n _proto.promiseWait = function promiseWait(time) {\n var ret = new Promise(res => {\n var timeout = setTimeout(() => {\n this.timeouts.delete(timeout);\n res();\n }, time);\n this.timeouts.add(timeout);\n });\n return ret;\n };\n _proto.destroy = function destroy() {\n if (this.destroyed) {\n return PROMISE_RESOLVE_FALSE;\n }\n\n /**\n * Settings destroyed = true\n * must be the first thing to do,\n * so for example the replication can directly stop\n * instead of sending requests to a closed storage.\n */\n this.destroyed = true;\n Array.from(this.timeouts).forEach(timeout => clearTimeout(timeout));\n if (this._changeEventBuffer) {\n this._changeEventBuffer.destroy();\n }\n /**\n * First wait until the whole database is idle.\n * This ensures that the storage does not get closed\n * while some operation is running.\n * It is important that we do not intercept a running call\n * because it might lead to undefined behavior like when a doc is written\n * but the change is not added to the changes collection.\n */\n return this.database.requestIdlePromise().then(() => Promise.all(this.onDestroy.map(fn => fn()))).then(() => this.storageInstance.close()).then(() => {\n /**\n * Unsubscribing must be done AFTER the storageInstance.close()\n * Because the conflict handling is part of the subscriptions and\n * otherwise there might be open conflicts to be resolved which\n * will then stuck and never resolve.\n */\n this._subs.forEach(sub => sub.unsubscribe());\n delete this.database.collections[this.name];\n return runAsyncPluginHooks('postDestroyRxCollection', this).then(() => true);\n });\n }\n\n /**\n * remove all data of the collection\n */;\n _proto.remove = async function remove() {\n await this.destroy();\n await removeCollectionStorages(this.database.storage, this.database.internalStore, this.database.token, this.database.name, this.name, this.database.password, this.database.hashFunction);\n };\n _createClass(RxCollectionBase, [{\n key: \"insert$\",\n get: function () {\n return this.$.pipe(filter(cE => cE.operation === 'INSERT'));\n }\n }, {\n key: \"update$\",\n get: function () {\n return this.$.pipe(filter(cE => cE.operation === 'UPDATE'));\n }\n }, {\n key: \"remove$\",\n get: function () {\n return this.$.pipe(filter(cE => cE.operation === 'DELETE'));\n }\n\n // defaults\n\n /**\n * When the collection is destroyed,\n * these functions will be called an awaited.\n * Used to automatically clean up stuff that\n * belongs to this collection.\n */\n }, {\n key: \"asRxCollection\",\n get: function () {\n return this;\n }\n }]);\n return RxCollectionBase;\n}();\n\n/**\n * adds the hook-functions to the collections prototype\n * this runs only once\n */\nfunction _applyHookFunctions(collection) {\n if (hooksApplied) return; // already run\n hooksApplied = true;\n var colProto = Object.getPrototypeOf(collection);\n HOOKS_KEYS.forEach(key => {\n HOOKS_WHEN.map(when => {\n var fnName = when + ucfirst(key);\n colProto[fnName] = function (fun, parallel) {\n return this.addHook(when, key, fun, parallel);\n };\n });\n });\n}\nfunction _incrementalUpsertUpdate(doc, json) {\n return doc.incrementalModify(_innerDoc => {\n return json;\n });\n}\n\n/**\n * ensures that the given document exists\n * @return promise that resolves with new doc and flag if inserted\n */\nfunction _incrementalUpsertEnsureRxDocumentExists(rxCollection, primary, json) {\n /**\n * Optimisation shortcut,\n * first try to find the document in the doc-cache\n */\n var docDataFromCache = rxCollection._docCache.getLatestDocumentDataIfExists(primary);\n if (docDataFromCache) {\n return Promise.resolve({\n doc: rxCollection._docCache.getCachedRxDocument(docDataFromCache),\n inserted: false\n });\n }\n return rxCollection.findOne(primary).exec().then(doc => {\n if (!doc) {\n return rxCollection.insert(json).then(newDoc => ({\n doc: newDoc,\n inserted: true\n }));\n } else {\n return {\n doc,\n inserted: false\n };\n }\n });\n}\n\n/**\n * creates and prepares a new collection\n */\nexport function createRxCollection({\n database,\n name,\n schema,\n instanceCreationOptions = {},\n migrationStrategies = {},\n autoMigrate = true,\n statics = {},\n methods = {},\n attachments = {},\n options = {},\n localDocuments = false,\n cacheReplacementPolicy = defaultCacheReplacementPolicy,\n conflictHandler = defaultConflictHandler\n}) {\n var storageInstanceCreationParams = {\n databaseInstanceToken: database.token,\n databaseName: database.name,\n collectionName: name,\n schema: schema.jsonSchema,\n options: instanceCreationOptions,\n multiInstance: database.multiInstance,\n password: database.password,\n devMode: overwritable.isDevMode()\n };\n runPluginHooks('preCreateRxStorageInstance', storageInstanceCreationParams);\n return createRxCollectionStorageInstance(database, storageInstanceCreationParams).then(storageInstance => {\n var collection = new RxCollectionBase(database, name, schema, storageInstance, instanceCreationOptions, migrationStrategies, methods, attachments, options, cacheReplacementPolicy, statics, conflictHandler);\n return collection.prepare().then(() => {\n // ORM add statics\n Object.entries(statics).forEach(([funName, fun]) => {\n Object.defineProperty(collection, funName, {\n get: () => fun.bind(collection)\n });\n });\n var ret = PROMISE_RESOLVE_VOID;\n if (autoMigrate && collection.schema.version !== 0) {\n ret = collection.migratePromise();\n }\n return ret;\n }).then(() => {\n runPluginHooks('createRxCollection', {\n collection,\n creator: {\n name,\n schema,\n storageInstance,\n instanceCreationOptions,\n migrationStrategies,\n methods,\n attachments,\n options,\n cacheReplacementPolicy,\n localDocuments,\n statics\n }\n });\n return collection;\n })\n /**\n * If the collection creation fails,\n * we yet have to close the storage instances.\n */.catch(err => {\n return storageInstance.close().then(() => Promise.reject(err));\n });\n });\n}\nexport function isRxCollection(obj) {\n return obj instanceof RxCollectionBase;\n}\n//# sourceMappingURL=rx-collection.js.map","/**\n * Creates a new Idle-Queue\n * @constructor\n * @param {number} [parallels=1] amount of parrallel runs of the limited-ressource\n */\nexport var IdleQueue = function IdleQueue() {\n var parallels = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n this._parallels = parallels || 1;\n /**\n * _queueCounter\n * each lock() increased this number\n * each unlock() decreases this number\n * If _qC==0, the state is in idle\n * @type {Number}\n */\n\n this._qC = 0;\n /**\n * _idleCalls\n * contains all promises that where added via requestIdlePromise()\n * and not have been resolved\n * @type {Set} _iC with oldest promise first\n */\n\n this._iC = new Set();\n /**\n * _lastHandleNumber\n * @type {Number}\n */\n\n this._lHN = 0;\n /**\n * _handlePromiseMap\n * Contains the handleNumber on the left\n * And the assigned promise on the right.\n * This is stored so you can use cancelIdleCallback(handleNumber)\n * to stop executing the callback.\n * @type {Map}\n */\n\n this._hPM = new Map();\n this._pHM = new Map(); // _promiseHandleMap\n};\nIdleQueue.prototype = {\n isIdle: function isIdle() {\n return this._qC < this._parallels;\n },\n\n /**\n * creates a lock in the queue\n * and returns an unlock-function to remove the lock from the queue\n * @return {function} unlock function than must be called afterwards\n */\n lock: function lock() {\n this._qC++;\n },\n unlock: function unlock() {\n this._qC--;\n\n _tryIdleCall(this);\n },\n\n /**\n * wraps a function with lock/unlock and runs it\n * @param {function} fun\n * @return {Promise}\n */\n wrapCall: function wrapCall(fun) {\n var _this = this;\n\n this.lock();\n var maybePromise;\n\n try {\n maybePromise = fun();\n } catch (err) {\n this.unlock();\n throw err;\n }\n\n if (!maybePromise.then || typeof maybePromise.then !== 'function') {\n // no promise\n this.unlock();\n return maybePromise;\n } else {\n // promise\n return maybePromise.then(function (ret) {\n // sucessfull -> unlock before return\n _this.unlock();\n\n return ret;\n })[\"catch\"](function (err) {\n // not sucessfull -> unlock before throwing\n _this.unlock();\n\n throw err;\n });\n }\n },\n\n /**\n * does the same as requestIdleCallback() but uses promises instead of the callback\n * @param {{timeout?: number}} options like timeout\n * @return {Promise} promise that resolves when the database is in idle-mode\n */\n requestIdlePromise: function requestIdlePromise(options) {\n var _this2 = this;\n\n options = options || {};\n var resolve;\n var prom = new Promise(function (res) {\n return resolve = res;\n });\n\n var resolveFromOutside = function resolveFromOutside() {\n _removeIdlePromise(_this2, prom);\n\n resolve();\n };\n\n prom._manRes = resolveFromOutside;\n\n if (options.timeout) {\n // if timeout has passed, resolve promise even if not idle\n var timeoutObj = setTimeout(function () {\n prom._manRes();\n }, options.timeout);\n prom._timeoutObj = timeoutObj;\n }\n\n this._iC.add(prom);\n\n _tryIdleCall(this);\n\n return prom;\n },\n\n /**\n * remove the promise so it will never be resolved\n * @param {Promise} promise from requestIdlePromise()\n * @return {void}\n */\n cancelIdlePromise: function cancelIdlePromise(promise) {\n _removeIdlePromise(this, promise);\n },\n\n /**\n * api equal to\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback\n * @param {Function} callback\n * @param {options} options [description]\n * @return {number} handle which can be used with cancelIdleCallback()\n */\n requestIdleCallback: function requestIdleCallback(callback, options) {\n var handle = this._lHN++;\n var promise = this.requestIdlePromise(options);\n\n this._hPM.set(handle, promise);\n\n this._pHM.set(promise, handle);\n\n promise.then(function () {\n return callback();\n });\n return handle;\n },\n\n /**\n * API equal to\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelIdleCallback\n * @param {number} handle returned from requestIdleCallback()\n * @return {void}\n */\n cancelIdleCallback: function cancelIdleCallback(handle) {\n var promise = this._hPM.get(handle);\n\n this.cancelIdlePromise(promise);\n },\n\n /**\n * clears and resets everything\n * @return {void}\n */\n clear: function clear() {\n var _this3 = this;\n\n // remove all non-cleared\n this._iC.forEach(function (promise) {\n return _removeIdlePromise(_this3, promise);\n });\n\n this._qC = 0;\n\n this._iC.clear();\n\n this._hPM = new Map();\n this._pHM = new Map();\n }\n};\n/**\n * processes the oldest call of the idleCalls-queue\n * @return {Promise}\n */\n\nfunction _resolveOneIdleCall(idleQueue) {\n if (idleQueue._iC.size === 0) return;\n\n var iterator = idleQueue._iC.values();\n\n var oldestPromise = iterator.next().value;\n\n oldestPromise._manRes(); // try to call the next tick\n\n\n setTimeout(function () {\n return _tryIdleCall(idleQueue);\n }, 0);\n}\n/**\n * removes the promise from the queue and maps and also its corresponding handle-number\n * @param {Promise} promise from requestIdlePromise()\n * @return {void}\n */\n\n\nfunction _removeIdlePromise(idleQueue, promise) {\n if (!promise) return; // remove timeout if exists\n\n if (promise._timeoutObj) clearTimeout(promise._timeoutObj); // remove handle-nr if exists\n\n if (idleQueue._pHM.has(promise)) {\n var handle = idleQueue._pHM.get(promise);\n\n idleQueue._hPM[\"delete\"](handle);\n\n idleQueue._pHM[\"delete\"](promise);\n } // remove from queue\n\n\n idleQueue._iC[\"delete\"](promise);\n}\n/**\n * resolves the last entry of this._iC\n * but only if the queue is empty\n * @return {Promise}\n */\n\n\nfunction _tryIdleCall(idleQueue) {\n // ensure this does not run in parallel\n if (idleQueue._tryIR || idleQueue._iC.size === 0) return;\n idleQueue._tryIR = true; // w8 one tick\n\n setTimeout(function () {\n // check if queue empty\n if (!idleQueue.isIdle()) {\n idleQueue._tryIR = false;\n return;\n }\n /**\n * wait 1 tick here\n * because many functions do IO->CPU->IO\n * which means the queue is empty for a short time\n * but the ressource is not idle\n */\n\n\n setTimeout(function () {\n // check if queue still empty\n if (!idleQueue.isIdle()) {\n idleQueue._tryIR = false;\n return;\n } // ressource is idle\n\n\n _resolveOneIdleCall(idleQueue);\n\n idleQueue._tryIR = false;\n }, 0);\n }, 0);\n}","/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nexport class ObliviousSet {\n ttl;\n map = new Map();\n /**\n * Creating calls to setTimeout() is expensive,\n * so we only do that if there is not timeout already open.\n */\n _to = false;\n constructor(ttl) {\n this.ttl = ttl;\n }\n has(value) {\n return this.map.has(value);\n }\n add(value) {\n this.map.set(value, now());\n /**\n * When a new value is added,\n * start the cleanup at the next tick\n * to not block the cpu for more important stuff\n * that might happen.\n */\n if (!this._to) {\n this._to = true;\n setTimeout(() => {\n this._to = false;\n removeTooOldValues(this);\n }, 0);\n }\n }\n clear() {\n this.map.clear();\n }\n}\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(obliviousSet) {\n const olderThen = now() - obliviousSet.ttl;\n const iterator = obliviousSet.map[Symbol.iterator]();\n /**\n * Because we can assume the new values are added at the bottom,\n * we start from the top and stop as soon as we reach a non-too-old value.\n */\n while (true) {\n const next = iterator.next().value;\n if (!next) {\n return; // no more elements\n }\n const value = next[0];\n const time = next[1];\n if (time < olderThen) {\n obliviousSet.map.delete(value);\n }\n else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\nexport function now() {\n return Date.now();\n}\n//# sourceMappingURL=index.js.map","import _createClass from \"@babel/runtime/helpers/createClass\";\nimport { IdleQueue } from 'custom-idle-queue';\nimport { pluginMissing, flatClone, PROMISE_RESOLVE_FALSE, randomCouchString, ensureNotFalsy, getDefaultRevision, getDefaultRxDocumentMeta, defaultHashSha256, RXDB_VERSION } from \"./plugins/utils/index.js\";\nimport { newRxError } from \"./rx-error.js\";\nimport { createRxSchema } from \"./rx-schema.js\";\nimport { runPluginHooks, runAsyncPluginHooks } from \"./hooks.js\";\nimport { Subject } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { createRxCollection } from \"./rx-collection.js\";\nimport { flatCloneDocWithMeta, getSingleDocument, getWrappedStorageInstance, INTERNAL_STORAGE_NAME } from \"./rx-storage-helper.js\";\nimport { ObliviousSet } from 'oblivious-set';\nimport { ensureStorageTokenDocumentExists, getAllCollectionDocuments, getPrimaryKeyOfInternalDocument, INTERNAL_CONTEXT_COLLECTION, INTERNAL_STORE_SCHEMA, _collectionNamePrimary } from \"./rx-database-internal-store.js\";\nimport { removeCollectionStorages } from \"./rx-collection-helper.js\";\nimport { overwritable } from \"./overwritable.js\";\n/**\n * stores the used database names+storage names\n * so we can throw when the same database is created more then once.\n */\nvar USED_DATABASE_NAMES = new Set();\nvar DB_COUNT = 0;\nexport var RxDatabaseBase = /*#__PURE__*/function () {\n /**\n * Contains all known non-closed storage instances\n * that belong to this database.\n * Used in plugins and unit tests.\n */\n\n function RxDatabaseBase(name,\n /**\n * Uniquely identifies the instance\n * of this RxDatabase.\n */\n token, storage, instanceCreationOptions, password, multiInstance, eventReduce = false, options = {},\n /**\n * Stores information documents about the collections of the database\n */\n internalStore, hashFunction, cleanupPolicy, allowSlowCount, reactivity) {\n this.idleQueue = new IdleQueue();\n this.rxdbVersion = RXDB_VERSION;\n this.storageInstances = new Set();\n this._subs = [];\n this.startupErrors = [];\n this.onDestroy = [];\n this.destroyed = false;\n this.collections = {};\n this.eventBulks$ = new Subject();\n this.observable$ = this.eventBulks$.pipe(mergeMap(changeEventBulk => changeEventBulk.events));\n this.storageToken = PROMISE_RESOLVE_FALSE;\n this.storageTokenDocument = PROMISE_RESOLVE_FALSE;\n this.emittedEventBulkIds = new ObliviousSet(60 * 1000);\n this.name = name;\n this.token = token;\n this.storage = storage;\n this.instanceCreationOptions = instanceCreationOptions;\n this.password = password;\n this.multiInstance = multiInstance;\n this.eventReduce = eventReduce;\n this.options = options;\n this.internalStore = internalStore;\n this.hashFunction = hashFunction;\n this.cleanupPolicy = cleanupPolicy;\n this.allowSlowCount = allowSlowCount;\n this.reactivity = reactivity;\n DB_COUNT++;\n\n /**\n * In the dev-mode, we create a pseudoInstance\n * to get all properties of RxDatabase and ensure they do not\n * conflict with the collection names etc.\n * So only if it is not pseudoInstance,\n * we have all values to prepare a real RxDatabase.\n *\n * TODO this is ugly, we should use a different way in the dev-mode\n * so that all non-dev-mode code can be cleaner.\n */\n if (this.name !== 'pseudoInstance') {\n /**\n * Wrap the internal store\n * to ensure that calls to it also end up in\n * calculation of the idle state and the hooks.\n */\n this.internalStore = getWrappedStorageInstance(this.asRxDatabase, internalStore, INTERNAL_STORE_SCHEMA);\n\n /**\n * Start writing the storage token.\n * Do not await the creation because it would run\n * in a critical path that increases startup time.\n *\n * Writing the token takes about 20 milliseconds\n * even on a fast adapter, so this is worth it.\n */\n this.storageTokenDocument = ensureStorageTokenDocumentExists(this.asRxDatabase).catch(err => this.startupErrors.push(err));\n this.storageToken = this.storageTokenDocument.then(doc => doc.data.token).catch(err => this.startupErrors.push(err));\n }\n }\n var _proto = RxDatabaseBase.prototype;\n _proto.getReactivityFactory = function getReactivityFactory() {\n if (!this.reactivity) {\n throw newRxError('DB14', {\n database: this.name\n });\n }\n return this.reactivity;\n }\n\n /**\n * Because having unhandled exceptions would fail,\n * we have to store the async errors of the constructor here\n * so we can throw them later.\n */\n\n /**\n * When the database is destroyed,\n * these functions will be called an awaited.\n * Used to automatically clean up stuff that\n * belongs to this collection.\n */\n\n /**\n * Unique token that is stored with the data.\n * Used to detect if the dataset has been deleted\n * and if two RxDatabase instances work on the same dataset or not.\n *\n * Because reading and writing the storageToken runs in the hot path\n * of database creation, we do not await the storageWrites but instead\n * work with the promise when we need the value.\n */\n\n /**\n * Stores the whole state of the internal storage token document.\n * We need this in some plugins.\n */\n\n /**\n * Contains the ids of all event bulks that have been emitted\n * by the database.\n * Used to detect duplicates that come in again via BroadcastChannel\n * or other streams.\n * TODO instead of having this here, we should add a test to ensure each RxStorage\n * behaves equal and does never emit duplicate eventBulks.\n */;\n /**\n * This is the main handle-point for all change events\n * ChangeEvents created by this instance go:\n * RxDocument -> RxCollection -> RxDatabase.$emit -> MultiInstance\n * ChangeEvents created by other instances go:\n * MultiInstance -> RxDatabase.$emit -> RxCollection -> RxDatabase\n */\n _proto.$emit = function $emit(changeEventBulk) {\n if (this.emittedEventBulkIds.has(changeEventBulk.id)) {\n return;\n }\n this.emittedEventBulkIds.add(changeEventBulk.id);\n\n // emit into own stream\n this.eventBulks$.next(changeEventBulk);\n }\n\n /**\n * removes the collection-doc from the internalStore\n */;\n _proto.removeCollectionDoc = async function removeCollectionDoc(name, schema) {\n var doc = await getSingleDocument(this.internalStore, getPrimaryKeyOfInternalDocument(_collectionNamePrimary(name, schema), INTERNAL_CONTEXT_COLLECTION));\n if (!doc) {\n throw newRxError('SNH', {\n name,\n schema\n });\n }\n var writeDoc = flatCloneDocWithMeta(doc);\n writeDoc._deleted = true;\n await this.internalStore.bulkWrite([{\n document: writeDoc,\n previous: doc\n }], 'rx-database-remove-collection');\n }\n\n /**\n * creates multiple RxCollections at once\n * to be much faster by saving db txs and doing stuff in bulk-operations\n * This function is not called often, but mostly in the critical path at the initial page load\n * So it must be as fast as possible.\n */;\n _proto.addCollections = async function addCollections(collectionCreators) {\n var jsonSchemas = {};\n var schemas = {};\n var bulkPutDocs = [];\n var useArgsByCollectionName = {};\n await Promise.all(Object.entries(collectionCreators).map(async ([name, args]) => {\n var collectionName = name;\n var rxJsonSchema = args.schema;\n jsonSchemas[collectionName] = rxJsonSchema;\n var schema = createRxSchema(rxJsonSchema, this.hashFunction);\n schemas[collectionName] = schema;\n\n // collection already exists\n if (this.collections[name]) {\n throw newRxError('DB3', {\n name\n });\n }\n var collectionNameWithVersion = _collectionNamePrimary(name, rxJsonSchema);\n var collectionDocData = {\n id: getPrimaryKeyOfInternalDocument(collectionNameWithVersion, INTERNAL_CONTEXT_COLLECTION),\n key: collectionNameWithVersion,\n context: INTERNAL_CONTEXT_COLLECTION,\n data: {\n name: collectionName,\n schemaHash: await schema.hash,\n schema: schema.jsonSchema,\n version: schema.version,\n connectedStorages: []\n },\n _deleted: false,\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision(),\n _attachments: {}\n };\n bulkPutDocs.push({\n document: collectionDocData\n });\n var useArgs = Object.assign({}, args, {\n name: collectionName,\n schema,\n database: this\n });\n\n // run hooks\n var hookData = flatClone(args);\n hookData.database = this;\n hookData.name = name;\n runPluginHooks('preCreateRxCollection', hookData);\n useArgs.conflictHandler = hookData.conflictHandler;\n useArgsByCollectionName[collectionName] = useArgs;\n }));\n var putDocsResult = await this.internalStore.bulkWrite(bulkPutDocs, 'rx-database-add-collection');\n await ensureNoStartupErrors(this);\n await Promise.all(putDocsResult.error.map(async error => {\n if (error.status !== 409) {\n throw newRxError('DB12', {\n database: this.name,\n writeError: error\n });\n }\n var docInDb = ensureNotFalsy(error.documentInDb);\n var collectionName = docInDb.data.name;\n var schema = schemas[collectionName];\n // collection already exists but has different schema\n if (docInDb.data.schemaHash !== (await schema.hash)) {\n throw newRxError('DB6', {\n database: this.name,\n collection: collectionName,\n previousSchemaHash: docInDb.data.schemaHash,\n schemaHash: await schema.hash,\n previousSchema: docInDb.data.schema,\n schema: ensureNotFalsy(jsonSchemas[collectionName])\n });\n }\n }));\n var ret = {};\n await Promise.all(Object.keys(collectionCreators).map(async collectionName => {\n var useArgs = useArgsByCollectionName[collectionName];\n var collection = await createRxCollection(useArgs);\n ret[collectionName] = collection;\n\n // set as getter to the database\n this.collections[collectionName] = collection;\n if (!this[collectionName]) {\n Object.defineProperty(this, collectionName, {\n get: () => this.collections[collectionName]\n });\n }\n }));\n return ret;\n }\n\n /**\n * runs the given function between idleQueue-locking\n */;\n _proto.lockedRun = function lockedRun(fn) {\n return this.idleQueue.wrapCall(fn);\n };\n _proto.requestIdlePromise = function requestIdlePromise() {\n return this.idleQueue.requestIdlePromise();\n }\n\n /**\n * Export database to a JSON friendly format.\n */;\n _proto.exportJSON = function exportJSON(_collections) {\n throw pluginMissing('json-dump');\n }\n\n /**\n * Import the parsed JSON export into the collection.\n * @param _exportedJSON The previously exported data from the `.exportJSON()` method.\n * @note When an interface is loaded in this collection all base properties of the type are typed as `any`\n * since data could be encrypted.\n */;\n _proto.importJSON = function importJSON(_exportedJSON) {\n throw pluginMissing('json-dump');\n };\n _proto.backup = function backup(_options) {\n throw pluginMissing('backup');\n };\n _proto.leaderElector = function leaderElector() {\n throw pluginMissing('leader-election');\n };\n _proto.isLeader = function isLeader() {\n throw pluginMissing('leader-election');\n }\n /**\n * returns a promise which resolves when the instance becomes leader\n */;\n _proto.waitForLeadership = function waitForLeadership() {\n throw pluginMissing('leader-election');\n };\n _proto.migrationStates = function migrationStates() {\n throw pluginMissing('migration-schema');\n }\n\n /**\n * destroys the database-instance and all collections\n */;\n _proto.destroy = async function destroy() {\n if (this.destroyed) {\n return PROMISE_RESOLVE_FALSE;\n }\n\n // settings destroyed = true must be the first thing to do.\n this.destroyed = true;\n await runAsyncPluginHooks('preDestroyRxDatabase', this);\n /**\n * Complete the event stream\n * to stop all subscribers who forgot to unsubscribe.\n */\n this.eventBulks$.complete();\n DB_COUNT--;\n this._subs.map(sub => sub.unsubscribe());\n\n /**\n * Destroying the pseudo instance will throw\n * because stuff is missing\n * TODO we should not need the pseudo instance on runtime.\n * we should generate the property list on build time.\n */\n if (this.name === 'pseudoInstance') {\n return PROMISE_RESOLVE_FALSE;\n }\n\n /**\n * First wait until the database is idle\n */\n return this.requestIdlePromise().then(() => Promise.all(this.onDestroy.map(fn => fn())))\n // destroy all collections\n .then(() => Promise.all(Object.keys(this.collections).map(key => this.collections[key]).map(col => col.destroy())))\n // destroy internal storage instances\n .then(() => this.internalStore.close())\n // remove combination from USED_COMBINATIONS-map\n .then(() => USED_DATABASE_NAMES.delete(this.storage.name + '|' + this.name)).then(() => true);\n }\n\n /**\n * deletes the database and its stored data.\n * Returns the names of all removed collections.\n */;\n _proto.remove = function remove() {\n return this.destroy().then(() => removeRxDatabase(this.name, this.storage, this.password));\n };\n _createClass(RxDatabaseBase, [{\n key: \"$\",\n get: function () {\n return this.observable$;\n }\n }, {\n key: \"asRxDatabase\",\n get: function () {\n return this;\n }\n }]);\n return RxDatabaseBase;\n}();\n\n/**\n * checks if an instance with same name and storage already exists\n * @throws {RxError} if used\n */\nfunction throwIfDatabaseNameUsed(name, storage) {\n var key = storage.name + '|' + name;\n if (!USED_DATABASE_NAMES.has(key)) {\n return;\n } else {\n throw newRxError('DB8', {\n name,\n storage: storage.name,\n link: 'https://rxdb.info/rx-database.html#ignoreduplicate'\n });\n }\n}\n\n/**\n * Creates the storage instances that are used internally in the database\n * to store schemas and other configuration stuff.\n */\nexport async function createRxDatabaseStorageInstance(databaseInstanceToken, storage, databaseName, options, multiInstance, password) {\n var internalStore = await storage.createStorageInstance({\n databaseInstanceToken,\n databaseName,\n collectionName: INTERNAL_STORAGE_NAME,\n schema: INTERNAL_STORE_SCHEMA,\n options,\n multiInstance,\n password,\n devMode: overwritable.isDevMode()\n });\n return internalStore;\n}\nexport function createRxDatabase({\n storage,\n instanceCreationOptions,\n name,\n password,\n multiInstance = true,\n eventReduce = true,\n ignoreDuplicate = false,\n options = {},\n cleanupPolicy,\n allowSlowCount = false,\n localDocuments = false,\n hashFunction = defaultHashSha256,\n reactivity\n}) {\n runPluginHooks('preCreateRxDatabase', {\n storage,\n instanceCreationOptions,\n name,\n password,\n multiInstance,\n eventReduce,\n ignoreDuplicate,\n options,\n localDocuments\n });\n // check if combination already used\n if (!ignoreDuplicate) {\n throwIfDatabaseNameUsed(name, storage);\n }\n USED_DATABASE_NAMES.add(storage.name + '|' + name);\n var databaseInstanceToken = randomCouchString(10);\n return createRxDatabaseStorageInstance(databaseInstanceToken, storage, name, instanceCreationOptions, multiInstance, password)\n /**\n * Creating the internal store might fail\n * if some RxStorage wrapper is used that does some checks\n * and then throw.\n * In that case we have to properly clean up the database.\n */.catch(err => {\n USED_DATABASE_NAMES.delete(storage.name + '|' + name);\n throw err;\n }).then(storageInstance => {\n var rxDatabase = new RxDatabaseBase(name, databaseInstanceToken, storage, instanceCreationOptions, password, multiInstance, eventReduce, options, storageInstance, hashFunction, cleanupPolicy, allowSlowCount, reactivity);\n return runAsyncPluginHooks('createRxDatabase', {\n database: rxDatabase,\n creator: {\n storage,\n instanceCreationOptions,\n name,\n password,\n multiInstance,\n eventReduce,\n ignoreDuplicate,\n options,\n localDocuments\n }\n }).then(() => rxDatabase);\n });\n}\n\n/**\n * Removes the database and all its known data\n * with all known collections and all internal meta data.\n *\n * Returns the names of the removed collections.\n */\nexport async function removeRxDatabase(databaseName, storage, password) {\n var databaseInstanceToken = randomCouchString(10);\n var dbInternalsStorageInstance = await createRxDatabaseStorageInstance(databaseInstanceToken, storage, databaseName, {}, false, password);\n var collectionDocs = await getAllCollectionDocuments(dbInternalsStorageInstance);\n var collectionNames = new Set();\n collectionDocs.forEach(doc => collectionNames.add(doc.data.name));\n var removedCollectionNames = Array.from(collectionNames);\n await Promise.all(removedCollectionNames.map(collectionName => removeCollectionStorages(storage, dbInternalsStorageInstance, databaseInstanceToken, databaseName, collectionName, password)));\n await runAsyncPluginHooks('postRemoveRxDatabase', {\n databaseName,\n storage\n });\n await dbInternalsStorageInstance.remove();\n return removedCollectionNames;\n}\nexport function isRxDatabase(obj) {\n return obj instanceof RxDatabaseBase;\n}\nexport function dbCount() {\n return DB_COUNT;\n}\n\n/**\n * Returns true if the given RxDatabase was the first\n * instance that was created on the storage with this name.\n *\n * Can be used for some optimizations because on the first instantiation,\n * we can assume that no data was written before.\n */\nexport async function isRxDatabaseFirstTimeInstantiated(database) {\n var tokenDoc = await database.storageTokenDocument;\n return tokenDoc.data.instanceToken === database.token;\n}\n\n/**\n * For better performance some tasks run async\n * and are awaited later.\n * But we still have to ensure that there have been no errors\n * on database creation.\n */\nexport async function ensureNoStartupErrors(rxDatabase) {\n await rxDatabase.storageToken;\n if (rxDatabase.startupErrors[0]) {\n throw rxDatabase.startupErrors[0];\n }\n}\n//# sourceMappingURL=rx-database.js.map","/**\n * this handles how plugins are added to rxdb\n * basically it changes the internal prototypes\n * by passing them to the plugins-functions\n */\nimport { RxSchema } from \"./rx-schema.js\";\nimport { basePrototype as RxDocumentPrototype } from \"./rx-document.js\";\nimport { RxQueryBase } from \"./rx-query.js\";\nimport { RxCollectionBase } from \"./rx-collection.js\";\nimport { RxDatabaseBase } from \"./rx-database.js\";\nimport { overwritable } from \"./overwritable.js\";\nimport { HOOKS, runPluginHooks } from \"./hooks.js\";\nimport { newRxError, newRxTypeError } from \"./rx-error.js\";\n\n/**\n * prototypes that can be manipulated with a plugin\n */\nvar PROTOTYPES = {\n RxSchema: RxSchema.prototype,\n RxDocument: RxDocumentPrototype,\n RxQuery: RxQueryBase.prototype,\n RxCollection: RxCollectionBase.prototype,\n RxDatabase: RxDatabaseBase.prototype\n};\nvar ADDED_PLUGINS = new Set();\nvar ADDED_PLUGIN_NAMES = new Set();\n\n/**\n * Add a plugin to the RxDB library.\n * Plugins are added globally and cannot be removed.\n */\nexport function addRxPlugin(plugin) {\n runPluginHooks('preAddRxPlugin', {\n plugin,\n plugins: ADDED_PLUGINS\n });\n\n // do nothing if added before\n if (ADDED_PLUGINS.has(plugin)) {\n return;\n } else {\n // ensure no other plugin with the same name was already added\n if (ADDED_PLUGIN_NAMES.has(plugin.name)) {\n throw newRxError('PL3', {\n name: plugin.name,\n plugin\n });\n }\n ADDED_PLUGINS.add(plugin);\n ADDED_PLUGIN_NAMES.add(plugin.name);\n }\n\n /**\n * To identify broken configurations,\n * we only allow RxDB plugins to be passed into addRxPlugin().\n */\n if (!plugin.rxdb) {\n throw newRxTypeError('PL1', {\n plugin\n });\n }\n if (plugin.init) {\n plugin.init();\n }\n\n // prototype-overwrites\n if (plugin.prototypes) {\n Object.entries(plugin.prototypes).forEach(([name, fun]) => {\n return fun(PROTOTYPES[name]);\n });\n }\n // overwritable-overwrites\n if (plugin.overwritable) {\n Object.assign(overwritable, plugin.overwritable);\n }\n // extend-hooks\n if (plugin.hooks) {\n Object.entries(plugin.hooks).forEach(([name, hooksObj]) => {\n if (hooksObj.after) {\n HOOKS[name].push(hooksObj.after);\n }\n if (hooksObj.before) {\n HOOKS[name].unshift(hooksObj.before);\n }\n });\n }\n}\n//# sourceMappingURL=plugin.js.map","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n return obj && typeof obj.then === 'function';\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(function () {\n return res(resolveWith);\n }, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * https://stackoverflow.com/a/8084248\n */\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\n\n/**\n * Returns the current unix time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\nexport function microSeconds() {\n var ret = Date.now() * 1000; // milliseconds to microseconds\n if (ret <= lastMs) {\n ret = lastMs + 1;\n }\n lastMs = ret;\n return ret;\n}\n\n/**\n * Check if WebLock API is supported.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport function supportsWebLockAPI() {\n if (typeof navigator !== 'undefined' && typeof navigator.locks !== 'undefined' && typeof navigator.locks.request === 'function') {\n return true;\n } else {\n return false;\n }\n}","import { microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n time: micro(),\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n };\n\n state.bc.onmessage = function (msgEvent) {\n if (state.messagesCallback) {\n state.messagesCallback(msgEvent.data);\n }\n };\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return PROMISE_RESOLVED_VOID;\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n // Deno runtime\n // eslint-disable-next-line\n if (typeof globalThis !== 'undefined' && globalThis.Deno && globalThis.Deno.args) {\n return true;\n }\n\n // Browser runtime\n if ((typeof window !== 'undefined' || typeof self !== 'undefined') && typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n return true;\n } else {\n return false;\n }\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport var NativeMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions));\n\n // main\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true;\n\n // indexed-db\n if (!options.idb) options.idb = {};\n // after this time the messages get deleted\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150;\n // handles abrupt db onclose events.\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose;\n\n // localstorage\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60;\n\n // custom methods\n if (originalOptions.methods) options.methods = originalOptions.methods;\n\n // node\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n /**\n * On linux use 'ulimit -Hn' to get the limit of open files.\n * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n */\n if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\nimport { sleep, randomInt, randomToken, microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport var TRANSACTION_SETTINGS = {\n durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n return false;\n}\n\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport function commitIndexedDBTransaction(tx) {\n if (tx.commit) {\n tx.commit();\n }\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb();\n\n // create table\n var dbName = DB_PREFIX + channelName;\n\n /**\n * All IndexedDB databases are opened without version\n * because it is a bit faster, especially on firefox\n * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n */\n var openRequest = IndexedDB.open(dbName);\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n return new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n}\n\n/**\n * writes the new message to the database\n * so other readers can find it\n */\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = Date.now();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n return new Promise(function (res, rej) {\n tx.oncomplete = function () {\n return res();\n };\n tx.onerror = function (ev) {\n return rej(ev);\n };\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n commitIndexedDBTransaction(tx);\n });\n}\nexport function getAllMessages(db) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n ret.push(cursor.value);\n //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n cursor[\"continue\"]();\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n\n /**\n * Optimization shortcut,\n * if getAll() can be used, do not use a cursor.\n * @link https://rxdb.info/slow-indexeddb.html\n */\n if (objectStore.getAll) {\n var getAllRequest = objectStore.getAll(keyRangeValue);\n return new Promise(function (res, rej) {\n getAllRequest.onerror = function (err) {\n return rej(err);\n };\n getAllRequest.onsuccess = function (e) {\n res(e.target.result);\n };\n });\n }\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n return new Promise(function (res, rej) {\n var openCursorRequest = openCursor();\n openCursorRequest.onerror = function (err) {\n return rej(err);\n };\n openCursorRequest.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function removeMessagesById(channelState, ids) {\n if (channelState.closed) {\n return Promise.resolve([]);\n }\n var tx = channelState.db.transaction(OBJECT_STORE_ID, 'readwrite', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n return Promise.all(ids.map(function (id) {\n var deleteRequest = objectStore[\"delete\"](id);\n return new Promise(function (res) {\n deleteRequest.onsuccess = function () {\n return res();\n };\n });\n }));\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = Date.now() - ttl;\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n var msgObk = cursor.value;\n if (msgObk.time < olderThen) {\n ret.push(msgObk);\n //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(channelState) {\n return getOldMessages(channelState.db, channelState.options.idb.ttl).then(function (tooOld) {\n return removeMessagesById(channelState, tooOld.map(function (msg) {\n return msg.id;\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n _readLoop(state);\n return state;\n });\n}\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n return true;\n}\n\n/**\n * reads all new messages from the database and emits them\n */\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID;\n\n // if no one is listening, we do not need to scan for new messages\n if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined sometimes\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */.filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return PROMISE_RESOLVED_VOID;\n });\n}\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n return !!getIdb();\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport var IndexedDBMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside webworkers because they have no access to localstorage\n * This is basically implemented to support IE9 or your grandmother's toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\n\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {\n // New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: Date.now(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n var uuid = randomToken();\n\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n };\n\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n if (msgObj.uuid === uuid) return; // own message\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n var ls = getLocalStorage();\n if (!ls) return false;\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n return defaultTime;\n}\nexport var LocalstorageMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n time: microSeconds(),\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport var SIMULATE_DELAY_TIME = 5;\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.forEach(function (channel) {\n if (channel.name === channelState.name &&\n // has same name\n channel !== channelState &&\n // not own channel\n !!channel.messagesCallback &&\n // has subscribers\n channel.time < messageJson.time // channel not created after postMessage() call\n ) {\n channel.messagesCallback(messageJson);\n }\n });\n res();\n }, SIMULATE_DELAY_TIME);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return SIMULATE_DELAY_TIME;\n}\nexport var SimulateMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { NativeMethod } from './methods/native.js';\nimport { IndexedDBMethod } from './methods/indexed-db.js';\nimport { LocalstorageMethod } from './methods/localstorage.js';\nimport { SimulateMethod } from './methods/simulate.js';\n// the line below will be removed from es5/browser builds\n\n// order is important\nvar METHODS = [NativeMethod,\n// fastest\nIndexedDBMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean);\n\n // the line below will be removed from es5/browser builds\n\n // directly chosen\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage will be chosen\n */\n if (!options.webWorkerSupport) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) {\n throw new Error(\"No usable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));\n } else {\n return useMethod;\n }\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n // identifier of the channel to debug stuff\n this.id = lastId++;\n OPEN_BROADCAST_CHANNELS.add(this);\n this.name = name;\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options);\n\n // isListening\n this._iL = false;\n\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n this._onML = null;\n\n /**\n * _addEventListeners\n */\n this._addEL = {\n message: [],\n internal: []\n };\n\n /**\n * Unsent message promises\n * where the sending is still in progress\n * @type {Set}\n */\n this._uMP = new Set();\n\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n this._befC = [];\n\n /**\n * _preparePromise\n */\n this._prepP = null;\n _prepareChannel(this);\n};\n\n// STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\nBroadcastChannel._pubkey = true;\n\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return PROMISE_RESOLVED_FALSE;\n }\n}\n\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n}\n\n// PROTOTYPE\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n /**\n * In the past when this error appeared, it was really hard to debug.\n * So now we log the msg together with the error so it at least\n * gives some clue about where in your application this happens.\n */\n JSON.stringify(msg));\n }\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n _removeListenerObject(this, 'message', this._onML);\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n if (this.closed) {\n return;\n }\n OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare\n // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n })\n // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n })\n // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n get type() {\n return this.method.type;\n },\n get isClosed() {\n return this.closed;\n }\n};\n\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj);\n\n // add/remove to unsent messages list\n broadcastChannel._uMP.add(sendPromise);\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n _startListening(channel);\n}\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n _stopListening(channel);\n}\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (listenerObject) {\n if (msgObj.time >= listenerObject.time) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n var time = channel.method.microSeconds();\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // no one is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","/* global WorkerGlobalScope */\n\nexport function addBrowser(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {\n /**\n * Because killing a worker does directly stop the excution\n * of the code, our only chance is to overwrite the close function\n * which could work some times.\n * @link https://stackoverflow.com/q/72903255/3443137\n */\n var oldClose = self.close.bind(self);\n self.close = function () {\n fn();\n return oldClose();\n };\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') {\n return;\n }\n\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n}","export function addNode(fn) {\n process.on('exit', function () {\n return fn();\n });\n\n /**\n * on the following events,\n * the process will not end if there are\n * event-handlers attached,\n * therefore we have to call process.exit()\n */\n process.on('beforeExit', function () {\n return fn().then(function () {\n return process.exit();\n });\n });\n // catches ctrl+c event\n process.on('SIGINT', function () {\n return fn().then(function () {\n return process.exit();\n });\n });\n // catches uncaught exceptions\n process.on('uncaughtException', function (err) {\n return fn().then(function () {\n console.trace(err);\n process.exit(101);\n });\n });\n}","import { addBrowser } from './browser.js';\nimport { addNode } from './node.js';\n\n/**\n * Use the code directly to prevent import problems\n * with the detect-node package.\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\nvar isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar USE_METHOD = isNode ? addNode : addBrowser;\nvar LISTENERS = new Set();\nvar startedListening = false;\nfunction startListening() {\n if (startedListening) {\n return;\n }\n startedListening = true;\n USE_METHOD(runAll);\n}\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') {\n throw new Error('Listener is no function');\n }\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}","import { add as unloadAdd } from 'unload';\n\n/**\n * sends and internal message over the broadcast-channel\n */\nexport function sendLeaderMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector.broadcastChannel.postInternal(msgJson);\n}\nexport function beLeader(leaderElector) {\n leaderElector.isLeader = true;\n leaderElector._hasLeader = true;\n var unloadFn = unloadAdd(function () {\n return leaderElector.die();\n });\n leaderElector._unl.push(unloadFn);\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n sendLeaderMessage(leaderElector, 'tell');\n }\n if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n /**\n * another instance is also leader!\n * This can happen on rare events\n * like when the CPU is at 100% for long time\n * or the tabs are open very long and the browser throttles them.\n * @link https://github.com/pubkey/broadcast-channel/issues/414\n * @link https://github.com/pubkey/broadcast-channel/issues/385\n */\n leaderElector._dpLC = true;\n leaderElector._dpL(); // message the lib user so the app can handle the problem\n sendLeaderMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n leaderElector._lstns.push(isLeaderListener);\n return sendLeaderMessage(leaderElector, 'tell');\n}","import { randomToken } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\n\n/**\n * A faster version of the leader elector that uses the WebLock API\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport var LeaderElectionWebLock = function LeaderElectionWebLock(broadcastChannel, options) {\n var _this = this;\n this.broadcastChannel = broadcastChannel;\n broadcastChannel._befC.push(function () {\n return _this.die();\n });\n this._options = options;\n this.isLeader = false;\n this.isDead = false;\n this.token = randomToken();\n this._lstns = [];\n this._unl = [];\n this._dpL = function () {}; // onduplicate listener\n this._dpLC = false; // true when onduplicate called\n\n this._wKMC = {}; // stuff for cleanup\n\n // lock name\n this.lN = 'pubkey-bc||' + broadcastChannel.method.type + '||' + broadcastChannel.name;\n};\nLeaderElectionWebLock.prototype = {\n hasLeader: function hasLeader() {\n var _this2 = this;\n return navigator.locks.query().then(function (locks) {\n var relevantLocks = locks.held ? locks.held.filter(function (lock) {\n return lock.name === _this2.lN;\n }) : [];\n if (relevantLocks && relevantLocks.length > 0) {\n return true;\n } else {\n return false;\n }\n });\n },\n awaitLeadership: function awaitLeadership() {\n var _this3 = this;\n if (!this._wLMP) {\n this._wKMC.c = new AbortController();\n var returnPromise = new Promise(function (res, rej) {\n _this3._wKMC.res = res;\n _this3._wKMC.rej = rej;\n });\n this._wLMP = new Promise(function (res) {\n navigator.locks.request(_this3.lN, {\n signal: _this3._wKMC.c.signal\n }, function () {\n // if the lock resolved, we can drop the abort controller\n _this3._wKMC.c = undefined;\n beLeader(_this3);\n res();\n return returnPromise;\n })[\"catch\"](function () {});\n });\n }\n return this._wLMP;\n },\n set onduplicate(_fn) {\n // Do nothing because there are no duplicates in the WebLock version\n },\n die: function die() {\n var _this4 = this;\n this._lstns.forEach(function (listener) {\n return _this4.broadcastChannel.removeEventListener('internal', listener);\n });\n this._lstns = [];\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n this._unl = [];\n if (this.isLeader) {\n this.isLeader = false;\n }\n this.isDead = true;\n if (this._wKMC.res) {\n this._wKMC.res();\n }\n if (this._wKMC.c) {\n this._wKMC.c.abort('LeaderElectionWebLock.die() called');\n }\n return sendLeaderMessage(this, 'death');\n }\n};","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE, supportsWebLockAPI } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\nimport { LeaderElectionWebLock } from './leader-election-web-lock.js';\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n var _this = this;\n this.broadcastChannel = broadcastChannel;\n this._options = options;\n this.isLeader = false;\n this._hasLeader = false;\n this.isDead = false;\n this.token = randomToken();\n\n /**\n * Apply Queue,\n * used to ensure we do not run applyOnce()\n * in parallel.\n */\n this._aplQ = PROMISE_RESOLVED_VOID;\n // amount of unfinished applyOnce() calls\n this._aplQC = 0;\n\n // things to clean up\n this._unl = []; // _unloads\n this._lstns = []; // _listeners\n this._dpL = function () {}; // onduplicate listener\n this._dpLC = false; // true when onduplicate called\n\n /**\n * Even when the own instance is not applying,\n * we still listen to messages to ensure the hasLeader flag\n * is set correctly.\n */\n var hasLeaderListener = function hasLeaderListener(msg) {\n if (msg.context === 'leader') {\n if (msg.action === 'death') {\n _this._hasLeader = false;\n }\n if (msg.action === 'tell') {\n _this._hasLeader = true;\n }\n }\n };\n this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n this._lstns.push(hasLeaderListener);\n};\nLeaderElection.prototype = {\n hasLeader: function hasLeader() {\n return Promise.resolve(this._hasLeader);\n },\n /**\n * Returns true if the instance is leader,\n * false if not.\n * @async\n */\n applyOnce: function applyOnce(\n // true if the applyOnce() call came from the fallbackInterval cycle\n isFromFallbackInterval) {\n var _this2 = this;\n if (this.isLeader) {\n return sleep(0, true);\n }\n if (this.isDead) {\n return sleep(0, false);\n }\n\n /**\n * Already applying more than once,\n * -> wait for the apply queue to be finished.\n */\n if (this._aplQC > 1) {\n return this._aplQ;\n }\n\n /**\n * Add a new apply-run\n */\n var applyRun = function applyRun() {\n /**\n * Optimization shortcuts.\n * Directly return if a previous run\n * has already elected a leader.\n */\n if (_this2.isLeader) {\n return PROMISE_RESOLVED_TRUE;\n }\n var stopCriteria = false;\n var stopCriteriaPromiseResolve;\n /**\n * Resolves when a stop criteria is reached.\n * Uses as a performance shortcut so we do not\n * have to await the responseTime when it is already clear\n * that the election failed.\n */\n var stopCriteriaPromise = new Promise(function (res) {\n stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n stopCriteria = true;\n res();\n };\n });\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this2.token) {\n if (msg.action === 'apply') {\n // other is applying\n if (msg.token > _this2.token) {\n /**\n * other has higher token\n * -> stop applying and let other become leader.\n */\n stopCriteriaPromiseResolve();\n }\n }\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteriaPromiseResolve();\n _this2._hasLeader = true;\n }\n }\n };\n _this2.broadcastChannel.addEventListener('internal', handleMessage);\n\n /**\n * If the applyOnce() call came from the fallbackInterval,\n * we can assume that the election runs in the background and\n * not critical process is waiting for it.\n * When this is true, we give the other instances\n * more time to answer to messages in the election cycle.\n * This makes it less likely to elect duplicate leaders.\n * But also it takes longer which is not a problem because we anyway\n * run in the background.\n */\n var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n return sendLeaderMessage(_this2, 'apply') // send out that this one is applying\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })\n // send again in case another instance was just created\n .then(function () {\n return sendLeaderMessage(_this2, 'apply');\n })\n // let others time to respond\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })[\"catch\"](function () {}).then(function () {\n _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n if (!stopCriteria) {\n // no stop criteria -> own is leader\n return beLeader(_this2).then(function () {\n return true;\n });\n } else {\n // other is leader\n return false;\n }\n });\n };\n this._aplQC = this._aplQC + 1;\n this._aplQ = this._aplQ.then(function () {\n return applyRun();\n }).then(function () {\n _this2._aplQC = _this2._aplQC - 1;\n });\n return this._aplQ.then(function () {\n return _this2.isLeader;\n });\n },\n awaitLeadership: function awaitLeadership() {\n if ( /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n return this._aLP;\n },\n set onduplicate(fn) {\n this._dpL = fn;\n },\n die: function die() {\n var _this3 = this;\n this._lstns.forEach(function (listener) {\n return _this3.broadcastChannel.removeEventListener('internal', listener);\n });\n this._lstns = [];\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n this._unl = [];\n if (this.isLeader) {\n this._hasLeader = false;\n this.isLeader = false;\n }\n this.isDead = true;\n return sendLeaderMessage(this, 'death');\n }\n};\n\n/**\n * @param leaderElector {LeaderElector}\n */\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) {\n return PROMISE_RESOLVED_VOID;\n }\n return new Promise(function (res) {\n var resolved = false;\n function finish() {\n if (resolved) {\n return;\n }\n resolved = true;\n leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n res(true);\n }\n\n // try once now\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n\n /**\n * Try on fallbackInterval\n * @recursive\n */\n var tryOnFallBack = function tryOnFallBack() {\n return sleep(leaderElector._options.fallbackInterval).then(function () {\n if (leaderElector.isDead || resolved) {\n return;\n }\n if (leaderElector.isLeader) {\n finish();\n } else {\n return leaderElector.applyOnce(true).then(function () {\n if (leaderElector.isLeader) {\n finish();\n } else {\n tryOnFallBack();\n }\n });\n }\n });\n };\n tryOnFallBack();\n\n // try when other leader dies\n var whenDeathListener = function whenDeathListener(msg) {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector._hasLeader = false;\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n }\n };\n leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n leaderElector._lstns.push(whenDeathListener);\n });\n}\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n return options;\n}\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n options = fillOptionsWithDefaults(options, channel);\n var elector = supportsWebLockAPI() ? new LeaderElectionWebLock(channel, options) : new LeaderElection(channel, options);\n channel._befC.push(function () {\n return elector.die();\n });\n channel._leaderElector = elector;\n return elector;\n}","/**\n * When a persistent RxStorage is used in more the one JavaScript process,\n * the even stream of the changestream() function must be broadcasted to the other\n * RxStorageInstances of the same databaseName+collectionName.\n *\n * In the past this was done by RxDB but it makes more sense to do this\n * at the RxStorage level so that the broadcasting etc can all happen inside of a WebWorker\n * and not on the main thread.\n * Also it makes it less complex to stack up different RxStorages onto each other\n * like what we do with the in-memory plugin.\n *\n * This is intended to be used inside of createStorageInstance() of a storage.\n * Do not use this if the storage anyway broadcasts the events like when using MongoDB\n * or in the future W3C might introduce a way to listen to IndexedDB changes.\n */\n\nimport { Subject } from 'rxjs';\nimport { mergeWith } from 'rxjs/operators';\nimport { BroadcastChannel } from 'broadcast-channel';\n\n/**\n * The broadcast-channel is reused by the databaseInstanceToken.\n * This is required so that it is easy to simulate multi-tab usage\n * in the test where different instances of the same RxDatabase must\n * have different broadcast channels.\n * But also it ensures that for each RxDatabase we only create a single\n * broadcast channel that can even be reused in the leader election plugin.\n *\n * TODO at the end of the unit tests,\n * we should ensure that all channels are closed and cleaned up.\n * Otherwise we have forgot something.\n */\nexport var BROADCAST_CHANNEL_BY_TOKEN = new Map();\nexport function getBroadcastChannelReference(storageName, databaseInstanceToken, databaseName, refObject) {\n var state = BROADCAST_CHANNEL_BY_TOKEN.get(databaseInstanceToken);\n if (!state) {\n state = {\n /**\n * We have to use the databaseName instead of the databaseInstanceToken\n * in the BroadcastChannel name because different instances must end with the same\n * channel name to be able to broadcast messages between each other.\n */\n bc: new BroadcastChannel(['RxDB:', storageName, databaseName].join('|')),\n refs: new Set()\n };\n BROADCAST_CHANNEL_BY_TOKEN.set(databaseInstanceToken, state);\n }\n state.refs.add(refObject);\n return state.bc;\n}\nexport function removeBroadcastChannelReference(databaseInstanceToken, refObject) {\n var state = BROADCAST_CHANNEL_BY_TOKEN.get(databaseInstanceToken);\n if (!state) {\n return;\n }\n state.refs.delete(refObject);\n if (state.refs.size === 0) {\n BROADCAST_CHANNEL_BY_TOKEN.delete(databaseInstanceToken);\n return state.bc.close();\n }\n}\nexport function addRxStorageMultiInstanceSupport(storageName, instanceCreationParams, instance,\n/**\n * If provided, that channel will be used\n * instead of an own one.\n */\nprovidedBroadcastChannel) {\n if (!instanceCreationParams.multiInstance) {\n return;\n }\n var broadcastChannel = providedBroadcastChannel ? providedBroadcastChannel : getBroadcastChannelReference(storageName, instanceCreationParams.databaseInstanceToken, instance.databaseName, instance);\n var changesFromOtherInstances$ = new Subject();\n var eventListener = msg => {\n if (msg.storageName === storageName && msg.databaseName === instanceCreationParams.databaseName && msg.collectionName === instanceCreationParams.collectionName && msg.version === instanceCreationParams.schema.version) {\n changesFromOtherInstances$.next(msg.eventBulk);\n }\n };\n broadcastChannel.addEventListener('message', eventListener);\n var oldChangestream$ = instance.changeStream();\n var closed = false;\n var sub = oldChangestream$.subscribe(eventBulk => {\n if (closed) {\n return;\n }\n broadcastChannel.postMessage({\n storageName: storageName,\n databaseName: instanceCreationParams.databaseName,\n collectionName: instanceCreationParams.collectionName,\n version: instanceCreationParams.schema.version,\n eventBulk\n });\n });\n instance.changeStream = function () {\n return changesFromOtherInstances$.asObservable().pipe(mergeWith(oldChangestream$));\n };\n var oldClose = instance.close.bind(instance);\n instance.close = async function () {\n closed = true;\n sub.unsubscribe();\n broadcastChannel.removeEventListener('message', eventListener);\n if (!providedBroadcastChannel) {\n await removeBroadcastChannelReference(instanceCreationParams.databaseInstanceToken, instance);\n }\n return oldClose();\n };\n var oldRemove = instance.remove.bind(instance);\n instance.remove = async function () {\n closed = true;\n sub.unsubscribe();\n broadcastChannel.removeEventListener('message', eventListener);\n if (!providedBroadcastChannel) {\n await removeBroadcastChannelReference(instanceCreationParams.databaseInstanceToken, instance);\n }\n return oldRemove();\n };\n}\n//# sourceMappingURL=rx-storage-multiinstance.js.map","/**\n * For some RxStorage implementations,\n * we need to use our custom crafted indexes\n * so we can easily iterate over them. And sort plain arrays of document data.\n *\n * We really often have to craft an index string for a given document.\n * Performance of everything in this file is very important\n * which is why the code sometimes looks strange.\n * Run performance tests before and after you touch anything here!\n */\n\nimport { getSchemaByObjectPath } from \"./rx-schema-helper.js\";\nimport { ensureNotFalsy, objectPathMonad } from \"./plugins/utils/index.js\";\nimport { INDEX_MAX, INDEX_MIN } from \"./query-planner.js\";\n\n/**\n * Prepare all relevant information\n * outside of the returned function\n * from getIndexableStringMonad()\n * to save performance when the returned\n * function is called many times.\n */\n\nexport function getIndexMeta(schema, index) {\n var fieldNameProperties = index.map(fieldName => {\n var schemaPart = getSchemaByObjectPath(schema, fieldName);\n if (!schemaPart) {\n throw new Error('not in schema: ' + fieldName);\n }\n var type = schemaPart.type;\n var parsedLengths;\n if (type === 'number' || type === 'integer') {\n parsedLengths = getStringLengthOfIndexNumber(schemaPart);\n }\n var getValue = objectPathMonad(fieldName);\n var maxLength = schemaPart.maxLength ? schemaPart.maxLength : 0;\n var getIndexStringPart;\n if (type === 'string') {\n getIndexStringPart = docData => {\n var fieldValue = getValue(docData);\n if (!fieldValue) {\n fieldValue = '';\n }\n return fieldValue.padEnd(maxLength, ' ');\n };\n } else if (type === 'boolean') {\n getIndexStringPart = docData => {\n var fieldValue = getValue(docData);\n return fieldValue ? '1' : '0';\n };\n } else {\n // number\n getIndexStringPart = docData => {\n var fieldValue = getValue(docData);\n return getNumberIndexString(parsedLengths, fieldValue);\n };\n }\n var ret = {\n fieldName,\n schemaPart,\n parsedLengths,\n getValue,\n getIndexStringPart\n };\n return ret;\n });\n return fieldNameProperties;\n}\n\n/**\n * Crafts an indexable string that can be used\n * to check if a document would be sorted below or above\n * another documents, dependent on the index values.\n * @monad for better performance\n *\n * IMPORTANT: Performance is really important here\n * which is why we code so 'strange'.\n * Always run performance tests when you want to\n * change something in this method.\n */\nexport function getIndexableStringMonad(schema, index) {\n var fieldNameProperties = getIndexMeta(schema, index);\n var fieldNamePropertiesAmount = fieldNameProperties.length;\n var indexPartsFunctions = fieldNameProperties.map(r => r.getIndexStringPart);\n\n /**\n * @hotPath Performance of this function is very critical!\n */\n var ret = function (docData) {\n var str = '';\n for (var i = 0; i < fieldNamePropertiesAmount; ++i) {\n str += indexPartsFunctions[i](docData);\n }\n return str;\n };\n return ret;\n}\nexport function getStringLengthOfIndexNumber(schemaPart) {\n var minimum = Math.floor(schemaPart.minimum);\n var maximum = Math.ceil(schemaPart.maximum);\n var multipleOf = schemaPart.multipleOf;\n var valueSpan = maximum - minimum;\n var nonDecimals = valueSpan.toString().length;\n var multipleOfParts = multipleOf.toString().split('.');\n var decimals = 0;\n if (multipleOfParts.length > 1) {\n decimals = multipleOfParts[1].length;\n }\n return {\n minimum,\n maximum,\n nonDecimals,\n decimals,\n roundedMinimum: minimum\n };\n}\nexport function getIndexStringLength(schema, index) {\n var fieldNameProperties = getIndexMeta(schema, index);\n var length = 0;\n fieldNameProperties.forEach(props => {\n var schemaPart = props.schemaPart;\n var type = schemaPart.type;\n if (type === 'string') {\n length += schemaPart.maxLength;\n } else if (type === 'boolean') {\n length += 1;\n } else {\n var parsedLengths = props.parsedLengths;\n length = length + parsedLengths.nonDecimals + parsedLengths.decimals;\n }\n });\n return length;\n}\nexport function getPrimaryKeyFromIndexableString(indexableString, primaryKeyLength) {\n var paddedPrimaryKey = indexableString.slice(primaryKeyLength * -1);\n // we can safely trim here because the primary key is not allowed to start or end with a space char.\n var primaryKey = paddedPrimaryKey.trim();\n return primaryKey;\n}\nexport function getNumberIndexString(parsedLengths, fieldValue) {\n /**\n * Ensure that the given value is in the boundaries\n * of the schema, otherwise it would create a broken index string.\n * This can happen for example if you have a minimum of 0\n * and run a query like\n * selector {\n * numField: { $gt: -1000 }\n * }\n */\n if (typeof fieldValue === 'undefined') {\n fieldValue = 0;\n }\n if (fieldValue < parsedLengths.minimum) {\n fieldValue = parsedLengths.minimum;\n }\n if (fieldValue > parsedLengths.maximum) {\n fieldValue = parsedLengths.maximum;\n }\n var nonDecimalsValueAsString = (Math.floor(fieldValue) - parsedLengths.roundedMinimum).toString();\n var str = nonDecimalsValueAsString.padStart(parsedLengths.nonDecimals, '0');\n if (parsedLengths.decimals > 0) {\n var splitByDecimalPoint = fieldValue.toString().split('.');\n var decimalValueAsString = splitByDecimalPoint.length > 1 ? splitByDecimalPoint[1] : '0';\n str += decimalValueAsString.padEnd(parsedLengths.decimals, '0');\n }\n return str;\n}\nexport function getStartIndexStringFromLowerBound(schema, index, lowerBound) {\n var str = '';\n index.forEach((fieldName, idx) => {\n var schemaPart = getSchemaByObjectPath(schema, fieldName);\n var bound = lowerBound[idx];\n var type = schemaPart.type;\n switch (type) {\n case 'string':\n var maxLength = ensureNotFalsy(schemaPart.maxLength, 'maxLength not set');\n if (typeof bound === 'string') {\n str += bound.padEnd(maxLength, ' ');\n } else {\n // str += ''.padStart(maxLength, inclusiveStart ? ' ' : INDEX_MAX);\n str += ''.padEnd(maxLength, ' ');\n }\n break;\n case 'boolean':\n if (bound === null) {\n str += '0';\n } else if (bound === INDEX_MIN) {\n str += '0';\n } else if (bound === INDEX_MAX) {\n str += '1';\n } else {\n var boolToStr = bound ? '1' : '0';\n str += boolToStr;\n }\n break;\n case 'number':\n case 'integer':\n var parsedLengths = getStringLengthOfIndexNumber(schemaPart);\n if (bound === null || bound === INDEX_MIN) {\n var fillChar = '0';\n str += fillChar.repeat(parsedLengths.nonDecimals + parsedLengths.decimals);\n } else if (bound === INDEX_MAX) {\n str += getNumberIndexString(parsedLengths, parsedLengths.maximum);\n } else {\n var add = getNumberIndexString(parsedLengths, bound);\n str += add;\n }\n break;\n default:\n throw new Error('unknown index type ' + type);\n }\n });\n return str;\n}\nexport function getStartIndexStringFromUpperBound(schema, index, upperBound) {\n var str = '';\n index.forEach((fieldName, idx) => {\n var schemaPart = getSchemaByObjectPath(schema, fieldName);\n var bound = upperBound[idx];\n var type = schemaPart.type;\n switch (type) {\n case 'string':\n var maxLength = ensureNotFalsy(schemaPart.maxLength, 'maxLength not set');\n if (typeof bound === 'string' && bound !== INDEX_MAX) {\n str += bound.padEnd(maxLength, ' ');\n } else if (bound === INDEX_MIN) {\n str += ''.padEnd(maxLength, ' ');\n } else {\n str += ''.padEnd(maxLength, INDEX_MAX);\n }\n break;\n case 'boolean':\n if (bound === null) {\n str += '1';\n } else {\n var boolToStr = bound ? '1' : '0';\n str += boolToStr;\n }\n break;\n case 'number':\n case 'integer':\n var parsedLengths = getStringLengthOfIndexNumber(schemaPart);\n if (bound === null || bound === INDEX_MAX) {\n var fillChar = '9';\n str += fillChar.repeat(parsedLengths.nonDecimals + parsedLengths.decimals);\n } else if (bound === INDEX_MIN) {\n var _fillChar = '0';\n str += _fillChar.repeat(parsedLengths.nonDecimals + parsedLengths.decimals);\n } else {\n str += getNumberIndexString(parsedLengths, bound);\n }\n break;\n default:\n throw new Error('unknown index type ' + type);\n }\n });\n return str;\n}\n\n/**\n * Used in storages where it is not possible\n * to define inclusiveEnd/inclusiveStart\n */\nexport function changeIndexableStringByOneQuantum(str, direction) {\n var lastChar = str.slice(-1);\n var charCode = lastChar.charCodeAt(0);\n charCode = charCode + direction;\n var withoutLastChar = str.slice(0, -1);\n return withoutLastChar + String.fromCharCode(charCode);\n}\n//# sourceMappingURL=custom-index.js.map","import { flatClone } from \"../../plugins/utils/index.js\";\nimport { getComposedPrimaryKeyOfDocumentData } from \"../../rx-schema-helper.js\";\n\n// does nothing\nexport var DEFAULT_MODIFIER = d => Promise.resolve(d);\nexport function swapDefaultDeletedTodeletedField(deletedField, doc) {\n if (deletedField === '_deleted') {\n return doc;\n } else {\n doc = flatClone(doc);\n var isDeleted = !!doc._deleted;\n doc[deletedField] = isDeleted;\n delete doc._deleted;\n return doc;\n }\n}\n\n/**\n * Must be run over all plain document data\n * that was pulled from the remote.\n * Used to fill up fields or modify the deleted field etc.\n */\nexport function handlePulledDocuments(collection, deletedField, docs) {\n return docs.map(doc => {\n var useDoc = flatClone(doc);\n\n /**\n * Swap out the deleted field\n */\n if (deletedField !== '_deleted') {\n var isDeleted = !!useDoc[deletedField];\n useDoc._deleted = isDeleted;\n delete useDoc[deletedField];\n } else {\n // ensure we have a boolean.\n useDoc._deleted = !!useDoc._deleted;\n }\n\n /**\n * Fill up composed primary\n */\n var primaryPath = collection.schema.primaryPath;\n useDoc[primaryPath] = getComposedPrimaryKeyOfDocumentData(collection.schema.jsonSchema, useDoc);\n return useDoc;\n });\n}\n\n/**\n * Like normal promiseWait()\n * but will skip the wait time if the online-state changes.\n */\nexport function awaitRetry(collection, retryTime) {\n if (typeof window === 'undefined' || typeof window !== 'object' || typeof window.addEventListener === 'undefined' || navigator.onLine) {\n return collection.promiseWait(retryTime);\n }\n var listener;\n var onlineAgain = new Promise(res => {\n listener = () => {\n window.removeEventListener('online', listener);\n res();\n };\n window.addEventListener('online', listener);\n });\n return Promise.race([onlineAgain, collection.promiseWait(retryTime)]).then(() => {\n window.removeEventListener('online', listener);\n });\n}\n//# sourceMappingURL=replication-helper.js.map","/**\n * This plugin contains the primitives to create\n * a RxDB client-server replication.\n * It is used in the other replication plugins\n * but also can be used as standalone with a custom replication handler.\n */\n\nimport { BehaviorSubject, combineLatest, filter, mergeMap, Subject } from 'rxjs';\nimport { RxDBLeaderElectionPlugin } from \"../leader-election/index.js\";\nimport { arrayFilterNotEmpty, ensureNotFalsy, errorToPlainJson, flatClone, getFromMapOrCreate, PROMISE_RESOLVE_FALSE, PROMISE_RESOLVE_TRUE, toArray, toPromise } from \"../../plugins/utils/index.js\";\nimport { awaitRxStorageReplicationFirstInSync, awaitRxStorageReplicationInSync, cancelRxStorageReplication, getRxReplicationMetaInstanceSchema, replicateRxStorageInstance } from \"../../replication-protocol/index.js\";\nimport { newRxError } from \"../../rx-error.js\";\nimport { awaitRetry, DEFAULT_MODIFIER, swapDefaultDeletedTodeletedField, handlePulledDocuments } from \"./replication-helper.js\";\nimport { addConnectedStorageToCollection } from \"../../rx-database-internal-store.js\";\nimport { addRxPlugin } from \"../../plugin.js\";\nimport { hasEncryption } from \"../../rx-storage-helper.js\";\nimport { overwritable } from \"../../overwritable.js\";\nimport { runAsyncPluginHooks } from \"../../hooks.js\";\nexport var REPLICATION_STATE_BY_COLLECTION = new WeakMap();\nexport var RxReplicationState = /*#__PURE__*/function () {\n function RxReplicationState(\n /**\n * The identifier, used to flag revisions\n * and to identify which documents state came from the remote.\n */\n replicationIdentifier, collection, deletedField, pull, push, live, retryTime, autoStart) {\n this.subs = [];\n this.subjects = {\n received: new Subject(),\n // all documents that are received from the endpoint\n sent: new Subject(),\n // all documents that are send to the endpoint\n error: new Subject(),\n // all errors that are received from the endpoint, emits new Error() objects\n canceled: new BehaviorSubject(false),\n // true when the replication was canceled\n active: new BehaviorSubject(false) // true when something is running, false when not\n };\n this.received$ = this.subjects.received.asObservable();\n this.sent$ = this.subjects.sent.asObservable();\n this.error$ = this.subjects.error.asObservable();\n this.canceled$ = this.subjects.canceled.asObservable();\n this.active$ = this.subjects.active.asObservable();\n this.onCancel = [];\n this.callOnStart = undefined;\n this.remoteEvents$ = new Subject();\n this.replicationIdentifier = replicationIdentifier;\n this.collection = collection;\n this.deletedField = deletedField;\n this.pull = pull;\n this.push = push;\n this.live = live;\n this.retryTime = retryTime;\n this.autoStart = autoStart;\n var replicationStates = getFromMapOrCreate(REPLICATION_STATE_BY_COLLECTION, collection, () => []);\n replicationStates.push(this);\n\n // stop the replication when the collection gets destroyed\n this.collection.onDestroy.push(() => this.cancel());\n\n // create getters for the observables\n Object.keys(this.subjects).forEach(key => {\n Object.defineProperty(this, key + '$', {\n get: function () {\n return this.subjects[key].asObservable();\n }\n });\n });\n var startPromise = new Promise(res => {\n this.callOnStart = res;\n });\n this.startPromise = startPromise;\n }\n var _proto = RxReplicationState.prototype;\n _proto.start = async function start() {\n if (this.isStopped()) {\n return;\n }\n\n // fill in defaults for pull & push\n var pullModifier = this.pull && this.pull.modifier ? this.pull.modifier : DEFAULT_MODIFIER;\n var pushModifier = this.push && this.push.modifier ? this.push.modifier : DEFAULT_MODIFIER;\n var database = this.collection.database;\n var metaInstanceCollectionName = 'rx-replication-meta-' + (await database.hashFunction([this.collection.name, this.replicationIdentifier].join('-')));\n var metaInstanceSchema = getRxReplicationMetaInstanceSchema(this.collection.schema.jsonSchema, hasEncryption(this.collection.schema.jsonSchema));\n var [metaInstance] = await Promise.all([this.collection.database.storage.createStorageInstance({\n databaseName: database.name,\n collectionName: metaInstanceCollectionName,\n databaseInstanceToken: database.token,\n multiInstance: database.multiInstance,\n // TODO is this always false?\n options: {},\n schema: metaInstanceSchema,\n password: database.password,\n devMode: overwritable.isDevMode()\n }), addConnectedStorageToCollection(this.collection, metaInstanceCollectionName, metaInstanceSchema)]);\n this.metaInstance = metaInstance;\n this.internalReplicationState = replicateRxStorageInstance({\n pushBatchSize: this.push && this.push.batchSize ? this.push.batchSize : 100,\n pullBatchSize: this.pull && this.pull.batchSize ? this.pull.batchSize : 100,\n initialCheckpoint: {\n upstream: this.push ? this.push.initialCheckpoint : undefined,\n downstream: this.pull ? this.pull.initialCheckpoint : undefined\n },\n forkInstance: this.collection.storageInstance,\n metaInstance: this.metaInstance,\n hashFunction: database.hashFunction,\n identifier: 'rxdbreplication' + this.replicationIdentifier,\n conflictHandler: this.collection.conflictHandler,\n replicationHandler: {\n masterChangeStream$: this.remoteEvents$.asObservable().pipe(filter(_v => !!this.pull), mergeMap(async ev => {\n if (ev === 'RESYNC') {\n return ev;\n }\n var useEv = flatClone(ev);\n useEv.documents = handlePulledDocuments(this.collection, this.deletedField, useEv.documents);\n useEv.documents = await Promise.all(useEv.documents.map(d => pullModifier(d)));\n return useEv;\n })),\n masterChangesSince: async (checkpoint, batchSize) => {\n if (!this.pull) {\n return {\n checkpoint: null,\n documents: []\n };\n }\n /**\n * Retries must be done here in the replication primitives plugin,\n * because the replication protocol itself has no\n * error handling.\n */\n var done = false;\n var result = {};\n while (!done && !this.isStopped()) {\n try {\n result = await this.pull.handler(checkpoint, batchSize);\n done = true;\n } catch (err) {\n var emitError = newRxError('RC_PULL', {\n checkpoint,\n errors: toArray(err).map(er => errorToPlainJson(er)),\n direction: 'pull'\n });\n this.subjects.error.next(emitError);\n await awaitRetry(this.collection, ensureNotFalsy(this.retryTime));\n }\n }\n if (this.isStopped()) {\n return {\n checkpoint: null,\n documents: []\n };\n }\n var useResult = flatClone(result);\n useResult.documents = handlePulledDocuments(this.collection, this.deletedField, useResult.documents);\n useResult.documents = await Promise.all(useResult.documents.map(d => pullModifier(d)));\n return useResult;\n },\n masterWrite: async rows => {\n if (!this.push) {\n return [];\n }\n var done = false;\n await runAsyncPluginHooks('preReplicationMasterWrite', {\n rows,\n collection: this.collection\n });\n var useRowsOrNull = await Promise.all(rows.map(async row => {\n row.newDocumentState = await pushModifier(row.newDocumentState);\n if (row.newDocumentState === null) {\n return null;\n }\n if (row.assumedMasterState) {\n row.assumedMasterState = await pushModifier(row.assumedMasterState);\n }\n if (this.deletedField !== '_deleted') {\n row.newDocumentState = swapDefaultDeletedTodeletedField(this.deletedField, row.newDocumentState);\n if (row.assumedMasterState) {\n row.assumedMasterState = swapDefaultDeletedTodeletedField(this.deletedField, row.assumedMasterState);\n }\n }\n return row;\n }));\n var useRows = useRowsOrNull.filter(arrayFilterNotEmpty);\n var result = null;\n\n // In case all the rows have been filtered and nothing has to be sent\n if (useRows.length === 0) {\n done = true;\n result = [];\n }\n while (!done && !this.isStopped()) {\n try {\n result = await this.push.handler(useRows);\n /**\n * It is a common problem that people have wrongly behaving backend\n * that do not return an array with the conflicts on push requests.\n * So we run this check here to make it easier to debug.\n * @link https://github.com/pubkey/rxdb/issues/4103\n */\n if (!Array.isArray(result)) {\n throw newRxError('RC_PUSH_NO_AR', {\n pushRows: rows,\n direction: 'push',\n args: {\n result\n }\n });\n }\n done = true;\n } catch (err) {\n var emitError = err.rxdb ? err : newRxError('RC_PUSH', {\n pushRows: rows,\n errors: toArray(err).map(er => errorToPlainJson(er)),\n direction: 'push'\n });\n this.subjects.error.next(emitError);\n await awaitRetry(this.collection, ensureNotFalsy(this.retryTime));\n }\n }\n if (this.isStopped()) {\n return [];\n }\n await runAsyncPluginHooks('preReplicationMasterWriteDocumentsHandle', {\n result,\n collection: this.collection\n });\n var conflicts = handlePulledDocuments(this.collection, this.deletedField, ensureNotFalsy(result));\n return conflicts;\n }\n }\n });\n this.subs.push(this.internalReplicationState.events.error.subscribe(err => {\n this.subjects.error.next(err);\n }), this.internalReplicationState.events.processed.down.subscribe(row => this.subjects.received.next(row.document)), this.internalReplicationState.events.processed.up.subscribe(writeToMasterRow => {\n this.subjects.sent.next(writeToMasterRow.newDocumentState);\n }), combineLatest([this.internalReplicationState.events.active.down, this.internalReplicationState.events.active.up]).subscribe(([down, up]) => {\n var isActive = down || up;\n this.subjects.active.next(isActive);\n }));\n if (this.pull && this.pull.stream$ && this.live) {\n this.subs.push(this.pull.stream$.subscribe({\n next: ev => {\n this.remoteEvents$.next(ev);\n },\n error: err => {\n this.subjects.error.next(err);\n }\n }));\n }\n\n /**\n * Non-live replications run once\n * and then automatically get canceled.\n */\n if (!this.live) {\n await awaitRxStorageReplicationFirstInSync(this.internalReplicationState);\n await awaitRxStorageReplicationInSync(this.internalReplicationState);\n await this.cancel();\n }\n this.callOnStart();\n };\n _proto.isStopped = function isStopped() {\n if (this.subjects.canceled.getValue()) {\n return true;\n }\n return false;\n };\n _proto.awaitInitialReplication = async function awaitInitialReplication() {\n await this.startPromise;\n return awaitRxStorageReplicationFirstInSync(ensureNotFalsy(this.internalReplicationState));\n }\n\n /**\n * Returns a promise that resolves when:\n * - All local data is replicated with the remote\n * - No replication cycle is running or in retry-state\n *\n * WARNING: USing this function directly in a multi-tab browser application\n * is dangerous because only the leading instance will ever be replicated,\n * so this promise will not resolve in the other tabs.\n * For multi-tab support you should set and observe a flag in a local document.\n */;\n _proto.awaitInSync = async function awaitInSync() {\n await this.startPromise;\n await awaitRxStorageReplicationFirstInSync(ensureNotFalsy(this.internalReplicationState));\n\n /**\n * To reduce the amount of re-renders and make testing\n * and to make the whole behavior more predictable,\n * we await these things multiple times.\n * For example the state might be in sync already and at the\n * exact same time a pull.stream$ event comes in and we want to catch\n * that in the same call to awaitInSync() instead of resolving\n * while actually the state is not in sync.\n */\n var t = 2;\n while (t > 0) {\n t--;\n\n /**\n * Often awaitInSync() is called directly after a document write,\n * like in the unit tests.\n * So we first have to await the idleness to ensure that all RxChangeEvents\n * are processed already.\n */\n await this.collection.database.requestIdlePromise();\n await awaitRxStorageReplicationInSync(ensureNotFalsy(this.internalReplicationState));\n }\n return true;\n };\n _proto.reSync = function reSync() {\n this.remoteEvents$.next('RESYNC');\n };\n _proto.emitEvent = function emitEvent(ev) {\n this.remoteEvents$.next(ev);\n };\n _proto.cancel = async function cancel() {\n if (this.isStopped()) {\n return PROMISE_RESOLVE_FALSE;\n }\n var promises = this.onCancel.map(fn => toPromise(fn()));\n if (this.internalReplicationState) {\n await cancelRxStorageReplication(this.internalReplicationState);\n }\n if (this.metaInstance) {\n promises.push(ensureNotFalsy(this.internalReplicationState).checkpointQueue.then(() => ensureNotFalsy(this.metaInstance).close()));\n }\n this.subs.forEach(sub => sub.unsubscribe());\n this.subjects.canceled.next(true);\n this.subjects.active.complete();\n this.subjects.canceled.complete();\n this.subjects.error.complete();\n this.subjects.received.complete();\n this.subjects.sent.complete();\n return Promise.all(promises);\n };\n return RxReplicationState;\n}();\nexport function replicateRxCollection({\n replicationIdentifier,\n collection,\n deletedField = '_deleted',\n pull,\n push,\n live = true,\n retryTime = 1000 * 5,\n waitForLeadership = true,\n autoStart = true\n}) {\n addRxPlugin(RxDBLeaderElectionPlugin);\n\n /**\n * It is a common error to forget to add these config\n * objects. So we check here because it makes no sense\n * to start a replication with neither push nor pull.\n */\n if (!pull && !push) {\n throw newRxError('UT3', {\n collection: collection.name,\n args: {\n replicationIdentifier\n }\n });\n }\n var replicationState = new RxReplicationState(replicationIdentifier, collection, deletedField, pull, push, live, retryTime, autoStart);\n startReplicationOnLeaderShip(waitForLeadership, replicationState);\n return replicationState;\n}\nexport function startReplicationOnLeaderShip(waitForLeadership, replicationState) {\n /**\n * Always await this Promise to ensure that the current instance\n * is leader when waitForLeadership=true\n */\n var mustWaitForLeadership = waitForLeadership && replicationState.collection.database.multiInstance;\n var waitTillRun = mustWaitForLeadership ? replicationState.collection.database.waitForLeadership() : PROMISE_RESOLVE_TRUE;\n return waitTillRun.then(() => {\n if (replicationState.isStopped()) {\n return;\n }\n if (replicationState.autoStart) {\n replicationState.start();\n }\n });\n}\n//# sourceMappingURL=index.js.map","import { prepareQuery } from 'rxdb';\nimport { RxReplicationState } from 'rxdb/plugins/replication';\nimport { tap, timer, retry, defer, switchMap, map } from 'rxjs';\n\nvar NgxRxdbUtils;\n(function (NgxRxdbUtils) {\n function clone(value) {\n if (Array.isArray(value)) {\n return value.slice();\n }\n else if (NgxRxdbUtils.isObject(value)) {\n return { ...value };\n }\n else {\n return value;\n }\n }\n NgxRxdbUtils.clone = clone;\n function keys(object) {\n let val = keysOfNonArray(object);\n if (Array.isArray(object)) {\n val = val.filter(item => item !== 'length');\n }\n return val;\n }\n NgxRxdbUtils.keys = keys;\n function keysOfNonArray(object) {\n return object ? Object.getOwnPropertyNames(object) : [];\n }\n NgxRxdbUtils.keysOfNonArray = keysOfNonArray;\n function forOwn(object, iteratee) {\n forEachOfArray(keys(object), key => iteratee(object[key], key));\n return object;\n }\n NgxRxdbUtils.forOwn = forOwn;\n function forOwnOfNonArray(object, iteratee) {\n forEachOfArray(keysOfNonArray(object), key => iteratee(object[key], key));\n return object;\n }\n NgxRxdbUtils.forOwnOfNonArray = forOwnOfNonArray;\n function forEach(collection, iteratee) {\n if (Array.isArray(collection)) {\n forEachOfArray(collection, iteratee);\n }\n else {\n forOwnOfNonArray(collection, iteratee);\n }\n return collection;\n }\n NgxRxdbUtils.forEach = forEach;\n function forEachOfArray(array, iteratee) {\n for (let i = 0, len = array.length; i < len; ++i) {\n if (iteratee(array[i], i) === false) {\n break;\n }\n }\n }\n NgxRxdbUtils.forEachOfArray = forEachOfArray;\n function merge(object, ...sources) {\n for (const source of sources) {\n forEach(source, (value, key) => {\n const myValue = object[key];\n if (myValue instanceof Object) {\n value = merge(clone(myValue), value);\n }\n object[key] = value;\n });\n }\n return object;\n }\n NgxRxdbUtils.merge = merge;\n function isEmpty(value) {\n if (!Array.isArray(value)) {\n value = keysOfNonArray(value);\n }\n return value.length === 0;\n }\n NgxRxdbUtils.isEmpty = isEmpty;\n NgxRxdbUtils.isFunction = (value) => typeof value === 'function';\n NgxRxdbUtils.isUndefined = (value) => value === undefined || value === 'undefined';\n function isNullOrUndefined(value) {\n return value === undefined || value === null || value === 'undefined' || value === 'null';\n }\n NgxRxdbUtils.isNullOrUndefined = isNullOrUndefined;\n NgxRxdbUtils.isObject = (x) => Object.prototype.toString.call(x) === '[object Object]';\n NgxRxdbUtils.isEmptyObject = (x) => isNullOrUndefined(x) || (NgxRxdbUtils.isObject(x) && isEmpty(x));\n function isDevMode() {\n return typeof globalThis['ngDevMode'] === 'undefined' || !!globalThis['ngDevMode'];\n }\n NgxRxdbUtils.isDevMode = isDevMode;\n function isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n }\n NgxRxdbUtils.isValidNumber = isValidNumber;\n function noop() {\n return void 0;\n }\n NgxRxdbUtils.noop = noop;\n function identity(value) {\n return value;\n }\n NgxRxdbUtils.identity = identity;\n function times(n, iteratee) {\n const result = [];\n for (let i = 0; i < n; ++i) {\n result[i] = iteratee(i);\n }\n return result;\n }\n NgxRxdbUtils.times = times;\n function range(start, end, step) {\n if (NgxRxdbUtils.isUndefined(end)) {\n end = start;\n start = 0;\n }\n if (NgxRxdbUtils.isUndefined(step)) {\n step = end < start ? -1 : 1;\n }\n return times(Math.abs((end - start) / (step || 1)), i => start + step * i);\n }\n NgxRxdbUtils.range = range;\n function getMaybeId(entityOrId) {\n if (NgxRxdbUtils.isObject(entityOrId)) {\n return entityOrId['_id'];\n }\n return String(entityOrId);\n }\n NgxRxdbUtils.getMaybeId = getMaybeId;\n function compact(array) {\n return array.filter(identity);\n }\n NgxRxdbUtils.compact = compact;\n function compactObject(obj) {\n if (isEmpty(obj)) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return compact(obj);\n }\n return Object.entries(obj)\n .filter(([, value]) => !isNullOrUndefined(identity(value)) && !isEmpty(value))\n .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {});\n }\n NgxRxdbUtils.compactObject = compactObject;\n function isDevModeForced() {\n return localStorage['debug']?.includes(`@ngx-odm/rxdb`);\n }\n NgxRxdbUtils.isDevModeForced = isDevModeForced;\n function isTestEnvironment() {\n return ((typeof __karma__ !== 'undefined' && !!__karma__) ||\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n (typeof jest !== 'undefined' && !!jest) ||\n (typeof Mocha !== 'undefined' && !!Mocha));\n }\n NgxRxdbUtils.isTestEnvironment = isTestEnvironment;\n NgxRxdbUtils.logger = {\n log: (function () {\n const bgColor = '#8d2089';\n if (isTestEnvironment() || !isDevMode() || !isDevModeForced()) {\n return noop;\n }\n return console.log.bind(console, `%c[DEBUG::@ngx-odm/rxdb]`, `background:${bgColor};color:#fff;padding:2px;font-size:normal;`);\n })(),\n table: (function () {\n if (isTestEnvironment() || !isDevMode() || !isDevModeForced()) {\n return noop;\n }\n return console.table.bind(console);\n })(),\n };\n function debug(tag = 'Event') {\n return function debugFn(source) {\n if (!isDevMode()) {\n return source;\n }\n return source.pipe(tap({\n next(value) {\n NgxRxdbUtils.logger.log(`observable:${tag}:next:`, value);\n },\n error(e) {\n NgxRxdbUtils.logger.log(`observable:${tag}:error:`, e.message);\n },\n complete() {\n NgxRxdbUtils.logger.log(`observable:${tag}:complete`);\n },\n }));\n };\n }\n NgxRxdbUtils.debug = debug;\n function retryWithBackoff(count = 3, retryTime = 10000) {\n return (obs$) => obs$.pipe(retry({\n count,\n delay: (_, retryIndex) => {\n const d = Math.pow(2, retryIndex - 1) * retryTime;\n NgxRxdbUtils.logger.log('replication:kinto:longpoll:retry', retryIndex, d);\n return timer(d);\n },\n }));\n }\n NgxRxdbUtils.retryWithBackoff = retryWithBackoff;\n NgxRxdbUtils.tapOnce = (callback) => {\n return (source) => defer(() => {\n callback();\n return source;\n });\n };\n NgxRxdbUtils.deferUntil = (subj) => {\n return (source) => defer(() => {\n return subj.pipe(switchMap(() => source));\n });\n };\n NgxRxdbUtils.getDefaultQuery = () => ({\n selector: { _deleted: { $eq: false } },\n skip: 0,\n sort: [{ id: 'asc' }],\n });\n const _schema = {\n properties: {\n id: { type: 'string' },\n _deleted: { type: 'boolean' },\n },\n primaryKey: 'id',\n indexes: [['_deleted', 'id']],\n };\n const _queryPlan = {\n query: NgxRxdbUtils.getDefaultQuery(),\n queryPlan: {\n index: ['_deleted', 'id'],\n startKeys: [false, -9007199254740991],\n endKeys: [false, '￿'],\n inclusiveEnd: true,\n inclusiveStart: true,\n sortSatisfiedByIndex: true,\n selectorSatisfiedByIndex: false,\n },\n };\n NgxRxdbUtils.getDefaultPreparedQuery = () => prepareQuery(_schema, NgxRxdbUtils.getDefaultQuery());\n})(NgxRxdbUtils || (NgxRxdbUtils = {}));\nconst getDefaultFetch = () => {\n if (typeof window === 'object' && 'fetch' in window) {\n return window.fetch.bind(window);\n }\n else {\n return fetch;\n }\n};\nfunction getDefaultFetchWithHeaders(headers = {}) {\n const fetch = getDefaultFetch();\n const ret = (url, options = {}) => {\n Object.assign(options, {\n headers: {\n ...(options.headers || {}),\n ...headers,\n },\n });\n return fetch(url, options);\n };\n return ret;\n}\nfunction isValidRxReplicationState(obj) {\n return obj && obj instanceof RxReplicationState;\n}\nfunction mapFindResultToJsonArray(withRevAndAttachments = false) {\n return map(docs => {\n return (Array.isArray(docs) ? docs : [...docs.values()]).map(d => {\n const data = { ...d._data };\n if (!withRevAndAttachments) {\n delete data._rev;\n delete data._attachments;\n delete data._deleted;\n delete data._meta;\n }\n return data;\n });\n });\n}\n\nexport { NgxRxdbUtils, getDefaultFetch, getDefaultFetchWithHeaders, isValidRxReplicationState, mapFindResultToJsonArray };\n//# sourceMappingURL=ngx-odm-rxdb-utils.mjs.map\n","import { __metadata, __decorate } from 'tslib';\nimport { NgxRxdbUtils, isValidRxReplicationState, mapFindResultToJsonArray } from '@ngx-odm/rxdb/utils';\nimport { RXJS_SHARE_REPLAY_DEFAULTS, removeRxDatabase } from 'rxdb';\nimport { Observable, switchMap, defer, lastValueFrom, of, ReplaySubject, takeWhile, fromEvent, shareReplay, isObservable, map, distinctUntilChanged } from 'rxjs';\n\nconst { debug: debug$1, isEmptyObject, isFunction } = NgxRxdbUtils;\nfunction isZone(obj) {\n return !isEmptyObject(obj) && isFunction(obj.run);\n}\nfunction runInZone(zone) {\n if (!isZone(zone))\n return source => source;\n return source => {\n return new Observable(subscriber => {\n return source.subscribe((value) => zone.run(() => subscriber.next(value)), (e) => zone.run(() => subscriber.error(e)), () => zone.run(() => subscriber.complete()));\n });\n };\n}\nfunction ensureCollection$() {\n return function (target, propertyKey, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n return defer(() => {\n return this.initialized$.pipe(switchMap(() => originalMethod.apply(this, args)), debug$1(`collection.${propertyKey}`));\n });\n };\n return descriptor;\n };\n}\nfunction ensureCollection() {\n return function (target, propertyKey, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = async function (...args) {\n await lastValueFrom(this.initialized$).catch(() => {\n throw new Error(`Collection \"${this.config.name}\" was not initialized. Please check RxDB errors.`);\n });\n return originalMethod.apply(this, args);\n };\n return descriptor;\n };\n}\n\nvar _a, _b, _c, _d, _e, _f;\nconst { getMaybeId, logger, debug, noop } = NgxRxdbUtils;\nclass RxDBCollectionService {\n get initialized$() {\n return this._init$.asObservable();\n }\n get collection() {\n return this._collection;\n }\n get db() {\n return this.dbService.db;\n }\n get dbOptions() {\n return this.dbService.dbOptions;\n }\n get replicationState() {\n return this._replicationState;\n }\n get queryParams$() {\n if (!this.config.options?.useQueryParams) {\n return of({});\n }\n return this.initialized$.pipe(switchMap(() => this.collection.queryParams.$));\n }\n constructor(config, dbService, ngZone = {}, currentUrl$ = of(''), updateQueryParamsFn = noop) {\n this.config = config;\n this.dbService = dbService;\n this.ngZone = ngZone;\n this.currentUrl$ = currentUrl$;\n this.updateQueryParamsFn = updateQueryParamsFn;\n this._replicationState = null;\n this._init$ = new ReplaySubject();\n this.init(config);\n }\n destroy() {\n this.collection?.destroy();\n }\n setQueryParams(query) {\n this.collection.queryParams?.set(query);\n }\n patchQueryParams(query) {\n this.collection.queryParams?.patch(query);\n }\n async sync() {\n if (isValidRxReplicationState(this.replicationState)) {\n this.replicationState.reSync();\n return;\n }\n if (typeof this.config.options?.replicationStateFactory !== 'function') {\n return;\n }\n try {\n this._replicationState = this.config.options.replicationStateFactory(this.collection);\n }\n catch (error) {\n logger.log('replicationState has error, ignore replication');\n logger.log(error.message);\n }\n if (isValidRxReplicationState(this.replicationState)) {\n if (!this.replicationState.autoStart) {\n this.replicationState.reSync();\n }\n fromEvent(window, 'online')\n .pipe(debug('online'), takeWhile(() => !this.replicationState.isStopped()))\n .subscribe(() => {\n this._replicationState.reSync();\n });\n return this.replicationState.startPromise;\n }\n }\n async info() {\n return this.collection.getMetadata();\n }\n async import(docs) {\n const schemaHash = await this.collection.schema.hash;\n const dump = {\n name: this.collection.name,\n schemaHash,\n docs,\n };\n this.collection.importJSON(dump);\n }\n async export() {\n return this.collection.exportJSON();\n }\n docs(query, withRevAndAttachments = false) {\n return (isObservable(query) ? query : of(query)).pipe(switchMap(q => this.collection.find(q).$), mapFindResultToJsonArray(withRevAndAttachments), runInZone(this.ngZone), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n }\n docsByIds(ids, withRevAndAttachments = false) {\n return this.collection.findByIds(ids).$.pipe(mapFindResultToJsonArray(withRevAndAttachments), runInZone(this.ngZone), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n }\n count(query) {\n return this.collection.count(query).$.pipe(runInZone(this.ngZone), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n }\n get(id, withRevAndAttachments = false) {\n return this.collection.findOne(id).$.pipe(map(doc => (doc ? doc.toMutableJSON(withRevAndAttachments) : null)), runInZone(this.ngZone), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n }\n async insert(data) {\n return this.collection.insert(data);\n }\n async insertBulk(data) {\n return this.collection.bulkInsert(data);\n }\n async upsert(data) {\n return this.collection.upsert(data);\n }\n async upsertBulk(data) {\n return this.collection.bulkUpsert(data);\n }\n async set(id, data) {\n return this.collection.findOne(id).update({ $set: data });\n }\n async updateBulk(query, data) {\n return this.collection.find(query).update({ $set: data });\n }\n async remove(entityOrId) {\n const id = getMaybeId(entityOrId);\n return this.collection.findOne(id).remove();\n }\n async removeBulk(params) {\n if (Array.isArray(params)) {\n return this.collection.bulkRemove(params);\n }\n const result = await this.collection\n .find(params)\n .remove()\n .catch(() => new Map());\n return {\n success: [...result.values()],\n error: [],\n };\n }\n async clear() {\n return this.collection.remove();\n }\n async getAttachments(docId) {\n const doc = await this.collection.findOne(docId).exec();\n if (!doc) {\n return null;\n }\n const attachmentsData = doc.allAttachments().map(a => a.getData());\n return Promise.all(attachmentsData);\n }\n async getAttachmentById(docId, attachmentId) {\n const doc = await this.collection.findOne(docId).exec();\n if (!doc) {\n return null;\n }\n const attachment = doc.getAttachment(attachmentId);\n if (!attachment) {\n return null;\n }\n return attachment.getData();\n }\n async putAttachment(docId, attachment) {\n const doc = await this.collection.findOne(docId).exec();\n if (!doc) {\n return;\n }\n await doc.putAttachment(attachment);\n }\n async removeAttachment(docId, attachmentId) {\n const doc = await this.collection.findOne(docId).exec();\n if (!doc) {\n return;\n }\n const attachment = doc.getAttachment(attachmentId);\n if (!attachment) {\n return;\n }\n await attachment.remove();\n }\n async addHook(hook, handler, parralel = false) {\n this.collection[hook](handler, parralel);\n }\n async getLocal(id, key) {\n const doc = await this.collection.getLocal(id);\n if (!doc) {\n return null;\n }\n return key ? doc?.get(key) : doc?.toJSON().data;\n }\n getLocal$(id, key) {\n return this.collection.getLocal$(id).pipe(map(doc => {\n if (!doc) {\n return null;\n }\n return key ? doc.get(key) : doc.toJSON().data;\n }), distinctUntilChanged(), runInZone(this.ngZone));\n }\n async insertLocal(id, data) {\n await this.collection.insertLocal(id, data);\n }\n async upsertLocal(id, data) {\n await this.collection.upsertLocal(id, data);\n }\n async setLocal(id, prop, value) {\n const loc = await this.collection.getLocal(id);\n await this.collection.upsertLocal(id, {\n ...(loc?.toJSON?.()?.data || {}),\n [prop]: value,\n });\n }\n async removeLocal(id) {\n const doc = await this.collection.getLocal(id);\n await doc?.remove();\n }\n async init(config) {\n const { name, options } = config;\n try {\n await this.dbService.initCollections({\n [name]: config,\n });\n this._collection = this.db.collections[name];\n if (options?.useQueryParams) {\n this.collection.queryParamsInit(this.currentUrl$, this.updateQueryParamsFn);\n }\n this._init$.next(true);\n this._init$.complete();\n }\n catch (err) {\n if (err.message.includes('DM5') ||\n (err.message.includes('DB6') &&\n err.parameters.previousSchema?.version ===\n err.parameters.schema?.version)) {\n logger.log('Reload the page to fix the issue. The database is in a state where it can not be used.');\n await removeRxDatabase(this.db.name, this.db.storage);\n window?.location?.reload?.();\n }\n else {\n this._init$.complete();\n throw err;\n }\n }\n }\n}\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"sync\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"info\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"import\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"export\", null);\n__decorate([\n ensureCollection$(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Object]),\n __metadata(\"design:returntype\", Observable)\n], RxDBCollectionService.prototype, \"docs\", null);\n__decorate([\n ensureCollection$(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array, Object]),\n __metadata(\"design:returntype\", Observable)\n], RxDBCollectionService.prototype, \"docsByIds\", null);\n__decorate([\n ensureCollection$(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Observable)\n], RxDBCollectionService.prototype, \"count\", null);\n__decorate([\n ensureCollection$(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", Observable)\n], RxDBCollectionService.prototype, \"get\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"insert\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"insertBulk\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"upsert\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"upsertBulk\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"set\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"updateBulk\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"remove\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"removeBulk\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"clear\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"getAttachments\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, String]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"getAttachmentById\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"putAttachment\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, String]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"removeAttachment\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof Hook !== \"undefined\" && Hook) === \"function\" ? _a : Object, Object, Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"addHook\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, typeof (_b = typeof K !== \"undefined\" && K) === \"function\" ? _b : Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"getLocal\", null);\n__decorate([\n ensureCollection$(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, typeof (_c = typeof K !== \"undefined\" && K) === \"function\" ? _c : Object]),\n __metadata(\"design:returntype\", Observable)\n], RxDBCollectionService.prototype, \"getLocal$\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, typeof (_d = typeof L !== \"undefined\" && L) === \"function\" ? _d : Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"insertLocal\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, typeof (_e = typeof L !== \"undefined\" && L) === \"function\" ? _e : Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"upsertLocal\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String, typeof (_f = typeof K !== \"undefined\" && K) === \"function\" ? _f : Object, Object]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"setLocal\", null);\n__decorate([\n ensureCollection(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", Promise)\n], RxDBCollectionService.prototype, \"removeLocal\", null);\n\nexport { RxDBCollectionService };\n//# sourceMappingURL=ngx-odm-rxdb-collection.mjs.map\n","(function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Dexie=t()})(this,function(){\"use strict\";var s=function(e,t){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};var g=function(){return(g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n.\",Ze=\"String expected.\",et=[],tt=\"__dbnames\",nt=\"readonly\",rt=\"readwrite\";function it(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var ot={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function at(t){return\"string\"!=typeof t||/\\./.test(t)?function(e){return e}:function(e){return void 0===e[t]&&t in e&&delete(e=S(e))[t],e}}function ut(){throw Y.Type()}function st(e,t){try{var n=ct(e),r=ct(t);if(n!==r)return\"Array\"===n?1:\"Array\"===r?-1:\"binary\"===n?1:\"binary\"===r?-1:\"string\"===n?1:\"string\"===r?-1:\"Date\"===n?1:\"Date\"!==r?NaN:-1;switch(n){case\"number\":case\"Date\":case\"string\":return tc+l&&h(c+g)})})}return h(0).then(function(){if(0=c})).length?(e.forEach(function(u){t.push(function(){var t=h,e=u._cfg.dbschema;cn(s,t,f),cn(s,e,f),h=s._dbSchema=e;var n=rn(t,e);n.add.forEach(function(e){on(f,e[0],e[1].primKey,e[1].indexes)}),n.change.forEach(function(e){if(e.recreate)throw new Y.Upgrade(\"Not yet support for changing primary key\");var t=f.objectStore(e.name);e.add.forEach(function(e){return un(t,e)}),e.change.forEach(function(e){t.deleteIndex(e.name),un(t,e)}),e.del.forEach(function(e){return t.deleteIndex(e)})});var r=u._cfg.contentUpgrade;if(r&&u._cfg.version>c){Ht(s,f),l._memoizedTables={};var i=_(e);n.del.forEach(function(e){i[e]=t[e]}),Zt(s,[s.Transaction.prototype]),Jt(s,[s.Transaction.prototype],x(i),i),l.schema=i;var o,a=I(r);a&&Le();n=_e.follow(function(){var e;(o=r(l))&&a&&(e=Ue.bind(null,null),o.then(e,e))});return o&&\"function\"==typeof o.then?_e.resolve(o):n.then(function(){return o})}}),t.push(function(e){var t,n,r=u._cfg.dbschema;t=r,n=e,[].slice.call(n.db.objectStoreNames).forEach(function(e){return null==t[e]&&n.db.deleteObjectStore(e)}),Zt(s,[s.Transaction.prototype]),Jt(s,[s.Transaction.prototype],s._storeNames,s._dbSchema),l.schema=s._dbSchema}),t.push(function(e){s.idbdb.objectStoreNames.contains(\"$meta\")&&(Math.ceil(s.idbdb.version/10)===u._cfg.version?(s.idbdb.deleteObjectStore(\"$meta\"),delete s._dbSchema.$meta,s._storeNames=s._storeNames.filter(function(e){return\"$meta\"!==e})):e.objectStore(\"$meta\").put(u._cfg.version,\"version\"))})}),function e(){return t.length?_e.resolve(t.shift()(l.idbtrans)).then(e):_e.resolve()}().then(function(){an(h,f)})):_e.resolve();var s,c,l,f,t,h}).catch(u)):(x(o).forEach(function(e){on(i,e,o[e].primKey,o[e].indexes)}),Ht(n,i),void _e.follow(function(){return n.on.populate.fire(a)}).catch(u));var e,t})}function nn(e,r){an(e._dbSchema,r),r.db.version%10!=0||r.objectStoreNames.contains(\"$meta\")||r.db.createObjectStore(\"$meta\").add(Math.ceil(r.db.version/10-1),\"version\");var t=sn(0,e.idbdb,r);cn(e,e._dbSchema,r);for(var n=0,i=rn(t,e._dbSchema).change;nMath.pow(2,62)?0:e.oldVersion,m=e<1,f.idbdb=l.result,p&&nn(f,v),tn(f,e/10,v,n))},n),l.onsuccess=qe(function(){v=null;var e,t,n,r,i,o=f.idbdb=l.result,a=b(o.objectStoreNames);if(0u.limit?t.length=u.limit:e.length===u.limit&&t.length=r.limit&&(!r.values||e.req.values)&&Qn(e.req.query.range,r.query.range)}),!1,i,o];case\"count\":a=o.find(function(e){return $n(e.req.query.range,r.query.range)});return[a,!!a,i,o]}}(O,c,\"query\",t),a=o[0],e=o[1],u=o[2],s=o[3];return a&&e?a.obsSet=t.obsSet:(e=l.query(t).then(function(e){var t=e.result;if(a&&(a.res=t),i){for(var n=0,r=t.length;n {\n var value = (async () => {\n /**\n * IndexedDB was not designed for dynamically adding tables on the fly,\n * so we create one dexie database per RxDB storage instance.\n * @link https://github.com/dexie/Dexie.js/issues/684#issuecomment-373224696\n */\n var useSettings = flatClone(settings);\n useSettings.autoOpen = false;\n var dexieDb = new Dexie(dexieDbName, useSettings);\n var dexieStoresSettings = {\n [DEXIE_DOCS_TABLE_NAME]: getDexieStoreSchema(schema),\n [DEXIE_CHANGES_TABLE_NAME]: '++sequence, id',\n [DEXIE_ATTACHMENTS_TABLE_NAME]: 'id'\n };\n dexieDb.version(1).stores(dexieStoresSettings);\n await dexieDb.open();\n return {\n dexieDb,\n dexieTable: dexieDb[DEXIE_DOCS_TABLE_NAME],\n dexieAttachmentsTable: dexieDb[DEXIE_ATTACHMENTS_TABLE_NAME],\n booleanIndexes: getBooleanIndexes(schema)\n };\n })();\n DEXIE_STATE_DB_BY_NAME.set(dexieDbName, state);\n REF_COUNT_PER_DEXIE_DB.set(state, 0);\n return value;\n });\n return state;\n}\nexport async function closeDexieDb(statePromise) {\n var state = await statePromise;\n var prevCount = REF_COUNT_PER_DEXIE_DB.get(statePromise);\n var newCount = prevCount - 1;\n if (newCount === 0) {\n state.dexieDb.close();\n REF_COUNT_PER_DEXIE_DB.delete(statePromise);\n } else {\n REF_COUNT_PER_DEXIE_DB.set(statePromise, newCount);\n }\n}\n\n/**\n * It is not possible to set non-javascript-variable-syntax\n * keys as IndexedDB indexes. So we have to substitute the pipe-char\n * which comes from the key-compression plugin.\n */\nexport var DEXIE_PIPE_SUBSTITUTE = '__';\nexport function dexieReplaceIfStartsWithPipe(str) {\n var split = str.split('.');\n if (split.length > 1) {\n return split.map(part => dexieReplaceIfStartsWithPipe(part)).join('.');\n }\n if (str.startsWith('|')) {\n var withoutFirst = str.substring(1);\n return DEXIE_PIPE_SUBSTITUTE + withoutFirst;\n } else {\n return str;\n }\n}\nexport function dexieReplaceIfStartsWithPipeRevert(str) {\n var split = str.split('.');\n if (split.length > 1) {\n return split.map(part => dexieReplaceIfStartsWithPipeRevert(part)).join('.');\n }\n if (str.startsWith(DEXIE_PIPE_SUBSTITUTE)) {\n var withoutFirst = str.substring(DEXIE_PIPE_SUBSTITUTE.length);\n return '|' + withoutFirst;\n } else {\n return str;\n }\n}\n\n/**\n * IndexedDB does not support boolean indexing.\n * So we have to replace true/false with '1'/'0'\n * @param d \n */\nexport function fromStorageToDexie(booleanIndexes, d) {\n if (!d) {\n return d;\n }\n d = flatClone(d);\n d = fromStorageToDexieField(d);\n booleanIndexes.forEach(idx => {\n var val = getProperty(d, idx);\n var newVal = val ? '1' : '0';\n setProperty(d, idx, newVal);\n });\n return d;\n}\nexport function fromDexieToStorage(booleanIndexes, d) {\n if (!d) {\n return d;\n }\n d = flatClone(d);\n d = fromDexieToStorageField(d);\n booleanIndexes.forEach(idx => {\n var val = getProperty(d, idx);\n var newVal = val === '1' ? true : false;\n setProperty(d, idx, newVal);\n });\n return d;\n}\n\n/**\n * @recursive\n */\nexport function fromStorageToDexieField(documentData) {\n if (!documentData || typeof documentData === 'string' || typeof documentData === 'number' || typeof documentData === 'boolean') {\n return documentData;\n } else if (Array.isArray(documentData)) {\n return documentData.map(row => fromStorageToDexieField(row));\n } else if (typeof documentData === 'object') {\n var ret = {};\n Object.entries(documentData).forEach(([key, value]) => {\n if (typeof value === 'object') {\n value = fromStorageToDexieField(value);\n }\n ret[dexieReplaceIfStartsWithPipe(key)] = value;\n });\n return ret;\n }\n}\nexport function fromDexieToStorageField(documentData) {\n if (!documentData || typeof documentData === 'string' || typeof documentData === 'number' || typeof documentData === 'boolean') {\n return documentData;\n } else if (Array.isArray(documentData)) {\n return documentData.map(row => fromDexieToStorageField(row));\n } else if (typeof documentData === 'object') {\n var ret = {};\n Object.entries(documentData).forEach(([key, value]) => {\n if (typeof value === 'object' || Array.isArray(documentData)) {\n value = fromDexieToStorageField(value);\n }\n ret[dexieReplaceIfStartsWithPipeRevert(key)] = value;\n });\n return ret;\n }\n}\n\n/**\n * Creates a string that can be used to create the dexie store.\n * @link https://dexie.org/docs/API-Reference#quick-reference\n */\nexport function getDexieStoreSchema(rxJsonSchema) {\n var parts = [];\n\n /**\n * First part must be the primary key\n * @link https://github.com/dexie/Dexie.js/issues/1307#issuecomment-846590912\n */\n var primaryKey = getPrimaryFieldOfPrimaryKey(rxJsonSchema.primaryKey);\n parts.push([primaryKey]);\n parts.push(['_deleted', primaryKey]);\n\n // add other indexes\n if (rxJsonSchema.indexes) {\n rxJsonSchema.indexes.forEach(index => {\n var arIndex = toArray(index);\n parts.push(arIndex);\n });\n }\n\n // we also need the _meta.lwt+primaryKey index for the getChangedDocumentsSince() method.\n parts.push(['_meta.lwt', primaryKey]);\n\n // and this one for the cleanup()\n parts.push(['_meta.lwt']);\n\n /**\n * It is not possible to set non-javascript-variable-syntax\n * keys as IndexedDB indexes. So we have to substitute the pipe-char\n * which comes from the key-compression plugin.\n */\n parts = parts.map(part => {\n return part.map(str => dexieReplaceIfStartsWithPipe(str));\n });\n var dexieSchemaRows = parts.map(part => {\n if (part.length === 1) {\n return part[0];\n } else {\n return '[' + part.join('+') + ']';\n }\n });\n dexieSchemaRows = dexieSchemaRows.filter((elem, pos, arr) => arr.indexOf(elem) === pos); // unique;\n var dexieSchema = dexieSchemaRows.join(', ');\n return dexieSchema;\n}\n\n/**\n * Returns all documents in the database.\n * Non-deleted plus deleted ones.\n */\nexport async function getDocsInDb(internals, docIds) {\n var state = await internals;\n var docsInDb = await state.dexieTable.bulkGet(docIds);\n return docsInDb.map(d => fromDexieToStorage(state.booleanIndexes, d));\n}\nexport function attachmentObjectId(documentId, attachmentId) {\n return documentId + '||' + attachmentId;\n}\nexport function getBooleanIndexes(schema) {\n var checkedFields = new Set();\n var ret = [];\n if (!schema.indexes) {\n return ret;\n }\n schema.indexes.forEach(index => {\n var fields = toArray(index);\n fields.forEach(field => {\n if (checkedFields.has(field)) {\n return;\n }\n checkedFields.add(field);\n var schemaObj = getSchemaByObjectPath(schema, field);\n if (schemaObj.type === 'boolean') {\n ret.push(field);\n }\n });\n });\n ret.push('_deleted');\n return uniqueArray(ret);\n}\n//# sourceMappingURL=dexie-helper.js.map","import { INDEX_MAX, INDEX_MIN } from \"../../query-planner.js\";\nimport { getQueryMatcher, getSortComparator } from \"../../rx-query-helper.js\";\nimport { dexieReplaceIfStartsWithPipe, DEXIE_DOCS_TABLE_NAME, fromDexieToStorage } from \"./dexie-helper.js\";\nexport function mapKeyForKeyRange(k) {\n if (k === INDEX_MIN) {\n return -Infinity;\n } else {\n return k;\n }\n}\nfunction rangeFieldToBooleanSubstitute(booleanIndexes, fieldName, value) {\n if (booleanIndexes.includes(fieldName)) {\n var newValue = value === INDEX_MAX || value === true ? '1' : '0';\n return newValue;\n } else {\n return value;\n }\n}\nexport function getKeyRangeByQueryPlan(booleanIndexes, queryPlan, IDBKeyRange) {\n if (!IDBKeyRange) {\n if (typeof window === 'undefined') {\n throw new Error('IDBKeyRange missing');\n } else {\n IDBKeyRange = window.IDBKeyRange;\n }\n }\n var startKeys = queryPlan.startKeys.map((v, i) => {\n var fieldName = queryPlan.index[i];\n return rangeFieldToBooleanSubstitute(booleanIndexes, fieldName, v);\n }).map(mapKeyForKeyRange);\n var endKeys = queryPlan.endKeys.map((v, i) => {\n var fieldName = queryPlan.index[i];\n return rangeFieldToBooleanSubstitute(booleanIndexes, fieldName, v);\n }).map(mapKeyForKeyRange);\n var keyRange = IDBKeyRange.bound(startKeys, endKeys, !queryPlan.inclusiveStart, !queryPlan.inclusiveEnd);\n return keyRange;\n}\n\n/**\n * Runs mango queries over the Dexie.js database.\n */\nexport async function dexieQuery(instance, preparedQuery) {\n var state = await instance.internals;\n var query = preparedQuery.query;\n var skip = query.skip ? query.skip : 0;\n var limit = query.limit ? query.limit : Infinity;\n var skipPlusLimit = skip + limit;\n var queryPlan = preparedQuery.queryPlan;\n var queryMatcher = false;\n if (!queryPlan.selectorSatisfiedByIndex) {\n queryMatcher = getQueryMatcher(instance.schema, preparedQuery.query);\n }\n var keyRange = getKeyRangeByQueryPlan(state.booleanIndexes, queryPlan, state.dexieDb._options.IDBKeyRange);\n var queryPlanFields = queryPlan.index;\n var rows = [];\n await state.dexieDb.transaction('r', state.dexieTable, async dexieTx => {\n /**\n * TODO here we use the native IndexedDB transaction\n * to get the cursor.\n * Instead we should not leave Dexie.js API and find\n * a way to create the cursor with Dexie.js.\n */\n var tx = dexieTx.idbtrans;\n\n // const nativeIndexedDB = state.dexieDb.backendDB();\n // const trans = nativeIndexedDB.transaction([DEXIE_DOCS_TABLE_NAME], 'readonly');\n\n var store = tx.objectStore(DEXIE_DOCS_TABLE_NAME);\n var index;\n var indexName;\n indexName = '[' + queryPlanFields.map(field => dexieReplaceIfStartsWithPipe(field)).join('+') + ']';\n index = store.index(indexName);\n var cursorReq = index.openCursor(keyRange);\n await new Promise(res => {\n cursorReq.onsuccess = function (e) {\n var cursor = e.target.result;\n if (cursor) {\n // We have a record in cursor.value\n var docData = fromDexieToStorage(state.booleanIndexes, cursor.value);\n if (!queryMatcher || queryMatcher(docData)) {\n rows.push(docData);\n }\n\n /**\n * If we do not have to manually sort\n * and have enough documents,\n * we can abort iterating over the cursor\n * because we already have every relevant document.\n */\n if (queryPlan.sortSatisfiedByIndex && rows.length === skipPlusLimit) {\n res();\n } else {\n cursor.continue();\n }\n } else {\n // Iteration complete\n res();\n }\n };\n });\n });\n if (!queryPlan.sortSatisfiedByIndex) {\n var sortComparator = getSortComparator(instance.schema, preparedQuery.query);\n rows = rows.sort(sortComparator);\n }\n\n // apply skip and limit boundaries.\n rows = rows.slice(skip, skipPlusLimit);\n\n /**\n * Comment this in for debugging to check all fields in the database.\n */\n // const docsInDb = await state.dexieTable.filter(queryMatcher).toArray();\n // let documents = docsInDb\n // .map(docData => stripDexieKey(docData))\n // .sort(sortComparator);\n // if (preparedQuery.skip) {\n // documents = documents.slice(preparedQuery.skip);\n // }\n // if (preparedQuery.limit && documents.length > preparedQuery.limit) {\n // documents = documents.slice(0, preparedQuery.limit);\n // }\n\n return {\n documents: rows\n };\n}\nexport async function dexieCount(instance, preparedQuery) {\n var state = await instance.internals;\n var queryPlan = preparedQuery.queryPlan;\n var queryPlanFields = queryPlan.index;\n var keyRange = getKeyRangeByQueryPlan(state.booleanIndexes, queryPlan, state.dexieDb._options.IDBKeyRange);\n var count = -1;\n await state.dexieDb.transaction('r', state.dexieTable, async dexieTx => {\n var tx = dexieTx.idbtrans;\n var store = tx.objectStore(DEXIE_DOCS_TABLE_NAME);\n var index;\n var indexName;\n indexName = '[' + queryPlanFields.map(field => dexieReplaceIfStartsWithPipe(field)).join('+') + ']';\n index = store.index(indexName);\n var request = index.count(keyRange);\n count = await new Promise((res, rej) => {\n request.onsuccess = function () {\n res(request.result);\n };\n request.onerror = err => rej(err);\n });\n });\n return count;\n}\n//# sourceMappingURL=dexie-query.js.map","import { Subject } from 'rxjs';\nimport { now, ensureNotFalsy } from \"../utils/index.js\";\nimport { attachmentObjectId, closeDexieDb, fromStorageToDexie, getDexieDbWithTables, getDocsInDb, RX_STORAGE_NAME_DEXIE } from \"./dexie-helper.js\";\nimport { dexieCount, dexieQuery } from \"./dexie-query.js\";\nimport { getPrimaryFieldOfPrimaryKey } from \"../../rx-schema-helper.js\";\nimport { categorizeBulkWriteRows } from \"../../rx-storage-helper.js\";\nimport { addRxStorageMultiInstanceSupport } from \"../../rx-storage-multiinstance.js\";\nimport { newRxError } from \"../../rx-error.js\";\nvar instanceId = now();\nexport var RxStorageInstanceDexie = /*#__PURE__*/function () {\n function RxStorageInstanceDexie(storage, databaseName, collectionName, schema, internals, options, settings) {\n this.changes$ = new Subject();\n this.instanceId = instanceId++;\n this.storage = storage;\n this.databaseName = databaseName;\n this.collectionName = collectionName;\n this.schema = schema;\n this.internals = internals;\n this.options = options;\n this.settings = settings;\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.schema.primaryKey);\n }\n var _proto = RxStorageInstanceDexie.prototype;\n _proto.bulkWrite = async function bulkWrite(documentWrites, context) {\n ensureNotClosed(this);\n\n /**\n * Check some assumptions to ensure RxDB\n * does not call the storage with an invalid write.\n */\n documentWrites.forEach(row => {\n // ensure revision is set\n if (!row.document._rev || row.previous && !row.previous._rev) {\n throw newRxError('SNH', {\n args: {\n row\n }\n });\n }\n });\n var state = await this.internals;\n var ret = {\n success: [],\n error: []\n };\n var documentKeys = documentWrites.map(writeRow => writeRow.document[this.primaryPath]);\n var categorized;\n await state.dexieDb.transaction('rw', state.dexieTable, state.dexieAttachmentsTable, async () => {\n var docsInDbMap = new Map();\n var docsInDbWithInternals = await getDocsInDb(this.internals, documentKeys);\n docsInDbWithInternals.forEach(docWithDexieInternals => {\n var doc = docWithDexieInternals;\n if (doc) {\n docsInDbMap.set(doc[this.primaryPath], doc);\n }\n return doc;\n });\n categorized = categorizeBulkWriteRows(this, this.primaryPath, docsInDbMap, documentWrites, context);\n ret.error = categorized.errors;\n\n /**\n * Batch up the database operations\n * so we can later run them in bulk.\n */\n var bulkPutDocs = [];\n categorized.bulkInsertDocs.forEach(row => {\n ret.success.push(row.document);\n bulkPutDocs.push(row.document);\n });\n categorized.bulkUpdateDocs.forEach(row => {\n ret.success.push(row.document);\n bulkPutDocs.push(row.document);\n });\n bulkPutDocs = bulkPutDocs.map(d => fromStorageToDexie(state.booleanIndexes, d));\n if (bulkPutDocs.length > 0) {\n await state.dexieTable.bulkPut(bulkPutDocs);\n }\n\n // handle attachments\n var putAttachments = [];\n categorized.attachmentsAdd.forEach(attachment => {\n putAttachments.push({\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\n data: attachment.attachmentData.data\n });\n });\n categorized.attachmentsUpdate.forEach(attachment => {\n putAttachments.push({\n id: attachmentObjectId(attachment.documentId, attachment.attachmentId),\n data: attachment.attachmentData.data\n });\n });\n await state.dexieAttachmentsTable.bulkPut(putAttachments);\n await state.dexieAttachmentsTable.bulkDelete(categorized.attachmentsRemove.map(attachment => attachmentObjectId(attachment.documentId, attachment.attachmentId)));\n });\n categorized = ensureNotFalsy(categorized);\n if (categorized.eventBulk.events.length > 0) {\n var lastState = ensureNotFalsy(categorized.newestRow).document;\n categorized.eventBulk.checkpoint = {\n id: lastState[this.primaryPath],\n lwt: lastState._meta.lwt\n };\n categorized.eventBulk.endTime = now();\n this.changes$.next(categorized.eventBulk);\n }\n return ret;\n };\n _proto.findDocumentsById = async function findDocumentsById(ids, deleted) {\n ensureNotClosed(this);\n var state = await this.internals;\n var ret = [];\n await state.dexieDb.transaction('r', state.dexieTable, async () => {\n var docsInDb = await getDocsInDb(this.internals, ids);\n docsInDb.forEach(documentInDb => {\n if (documentInDb && (!documentInDb._deleted || deleted)) {\n ret.push(documentInDb);\n }\n });\n });\n return ret;\n };\n _proto.query = function query(preparedQuery) {\n ensureNotClosed(this);\n return dexieQuery(this, preparedQuery);\n };\n _proto.count = async function count(preparedQuery) {\n if (preparedQuery.queryPlan.selectorSatisfiedByIndex) {\n var result = await dexieCount(this, preparedQuery);\n return {\n count: result,\n mode: 'fast'\n };\n } else {\n var _result = await dexieQuery(this, preparedQuery);\n return {\n count: _result.documents.length,\n mode: 'slow'\n };\n }\n };\n _proto.changeStream = function changeStream() {\n ensureNotClosed(this);\n return this.changes$.asObservable();\n };\n _proto.cleanup = async function cleanup(minimumDeletedTime) {\n ensureNotClosed(this);\n var state = await this.internals;\n await state.dexieDb.transaction('rw', state.dexieTable, async () => {\n var maxDeletionTime = now() - minimumDeletedTime;\n /**\n * TODO only fetch _deleted=true\n */\n var toRemove = await state.dexieTable.where('_meta.lwt').below(maxDeletionTime).toArray();\n var removeIds = [];\n toRemove.forEach(doc => {\n if (doc._deleted === '1') {\n removeIds.push(doc[this.primaryPath]);\n }\n });\n await state.dexieTable.bulkDelete(removeIds);\n });\n\n /**\n * TODO instead of deleting all deleted docs at once,\n * only clean up some of them and return false if there are more documents to clean up.\n * This ensures that when many documents have to be purged,\n * we do not block the more important tasks too long.\n */\n return true;\n };\n _proto.getAttachmentData = async function getAttachmentData(documentId, attachmentId, _digest) {\n ensureNotClosed(this);\n var state = await this.internals;\n var id = attachmentObjectId(documentId, attachmentId);\n return await state.dexieDb.transaction('r', state.dexieAttachmentsTable, async () => {\n var attachment = await state.dexieAttachmentsTable.get(id);\n if (attachment) {\n return attachment.data;\n } else {\n throw new Error('attachment missing documentId: ' + documentId + ' attachmentId: ' + attachmentId);\n }\n });\n };\n _proto.remove = async function remove() {\n ensureNotClosed(this);\n var state = await this.internals;\n await state.dexieTable.clear();\n return this.close();\n };\n _proto.close = function close() {\n if (this.closed) {\n return this.closed;\n }\n this.closed = (async () => {\n this.changes$.complete();\n await closeDexieDb(this.internals);\n })();\n return this.closed;\n };\n _proto.conflictResultionTasks = function conflictResultionTasks() {\n return new Subject();\n };\n _proto.resolveConflictResultionTask = async function resolveConflictResultionTask(_taskSolution) {};\n return RxStorageInstanceDexie;\n}();\nexport async function createDexieStorageInstance(storage, params, settings) {\n var internals = getDexieDbWithTables(params.databaseName, params.collectionName, settings, params.schema);\n var instance = new RxStorageInstanceDexie(storage, params.databaseName, params.collectionName, params.schema, internals, params.options, settings);\n await addRxStorageMultiInstanceSupport(RX_STORAGE_NAME_DEXIE, params, instance);\n return Promise.resolve(instance);\n}\nfunction ensureNotClosed(instance) {\n if (instance.closed) {\n throw new Error('RxStorageInstanceDexie is closed ' + instance.databaseName + '-' + instance.collectionName);\n }\n}\n//# sourceMappingURL=rx-storage-instance-dexie.js.map","import { RX_STORAGE_NAME_DEXIE } from \"./dexie-helper.js\";\nimport { createDexieStorageInstance } from \"./rx-storage-instance-dexie.js\";\nimport { ensureRxStorageInstanceParamsAreCorrect } from \"../../rx-storage-helper.js\";\nimport { RXDB_VERSION } from \"../utils/utils-rxdb-version.js\";\nexport var RxStorageDexie = /*#__PURE__*/function () {\n function RxStorageDexie(settings) {\n this.name = RX_STORAGE_NAME_DEXIE;\n this.rxdbVersion = RXDB_VERSION;\n this.settings = settings;\n }\n var _proto = RxStorageDexie.prototype;\n _proto.createStorageInstance = function createStorageInstance(params) {\n ensureRxStorageInstanceParamsAreCorrect(params);\n return createDexieStorageInstance(this, params, this.settings);\n };\n return RxStorageDexie;\n}();\nexport function getRxStorageDexie(settings = {}) {\n var storage = new RxStorageDexie(settings);\n return storage;\n}\n//# sourceMappingURL=rx-storage-dexie.js.map","/**\n * Everything in this file was copied and adapted from\n * @link https://github.com/mikolalysenko/binary-search-bounds\n *\n * TODO We should use the original npm module instead when this bug is fixed:\n * @link https://github.com/mikolalysenko/binary-search-bounds/pull/14\n */\n\nfunction ge(a, y, c, l, h) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1;\n var x = a[m];\n var p = c !== undefined ? c(x, y) : x - y;\n if (p >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n}\nfunction gt(a, y, c, l, h) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1;\n var x = a[m];\n var p = c !== undefined ? c(x, y) : x - y;\n if (p > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n}\nfunction lt(a, y, c, l, h) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c !== undefined ? c(x, y) : x - y;\n if (p < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n}\nfunction le(a, y, c, l, h) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c !== undefined ? c(x, y) : x - y;\n if (p <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n}\nfunction eq(a, y, c, l, h) {\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c !== undefined ? c(x, y) : x - y;\n if (p === 0) {\n return m;\n }\n if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return -1;\n}\nfunction norm(a, y, c, l, h, f) {\n if (typeof c === 'function') {\n return f(a, y, c, l === undefined ? 0 : l | 0, h === undefined ? a.length - 1 : h | 0);\n }\n return f(a, y, undefined, c === undefined ? 0 : c | 0, l === undefined ? a.length - 1 : l | 0);\n}\nexport function boundGE(a, y, c, l, h) {\n return norm(a, y, c, l, h, ge);\n}\nexport function boundGT(a, y, c, l, h) {\n return norm(a, y, c, l, h, gt);\n}\nexport function boundLT(a, y, c, l, h) {\n return norm(a, y, c, l, h, lt);\n}\nexport function boundLE(a, y, c, l, h) {\n return norm(a, y, c, l, h, le);\n}\nexport function boundEQ(a, y, c, l, h) {\n return norm(a, y, c, l, h, eq);\n}\n//# sourceMappingURL=binary-search-bounds.js.map","import { pushAtSortPosition } from 'array-push-at-sort-position';\nimport { newRxError } from \"../../rx-error.js\";\nimport { boundEQ } from \"./binary-search-bounds.js\";\nexport function getMemoryCollectionKey(databaseName, collectionName, schemaVersion) {\n return [databaseName, collectionName, schemaVersion].join('--memory--');\n}\nexport function ensureNotRemoved(instance) {\n if (instance.internals.removed) {\n throw new Error('removed');\n }\n}\nexport function attachmentMapKey(documentId, attachmentId) {\n return documentId + '||' + attachmentId;\n}\nfunction sortByIndexStringComparator(a, b) {\n if (a.indexString < b.indexString) {\n return -1;\n } else {\n return 1;\n }\n}\n\n/**\n * @hotPath\n */\nexport function putWriteRowToState(docId, state, stateByIndex, row, docInState) {\n var document = row.document;\n state.documents.set(docId, document);\n for (var i = 0; i < stateByIndex.length; ++i) {\n var byIndex = stateByIndex[i];\n var docsWithIndex = byIndex.docsWithIndex;\n var getIndexableString = byIndex.getIndexableString;\n var newIndexString = getIndexableString(document);\n var insertPosition = pushAtSortPosition(docsWithIndex, {\n id: docId,\n doc: document,\n indexString: newIndexString\n }, sortByIndexStringComparator, 0);\n\n /**\n * Remove previous if it was in the state\n */\n if (docInState) {\n var previousIndexString = getIndexableString(docInState);\n if (previousIndexString === newIndexString) {\n /**\n * Performance shortcut.\n * If index was not changed -> The old doc must be before or after the new one.\n */\n var prev = docsWithIndex[insertPosition - 1];\n if (prev && prev.id === docId) {\n docsWithIndex.splice(insertPosition - 1, 1);\n } else {\n var next = docsWithIndex[insertPosition + 1];\n if (next.id === docId) {\n docsWithIndex.splice(insertPosition + 1, 1);\n } else {\n throw newRxError('SNH', {\n args: {\n row,\n byIndex\n }\n });\n }\n }\n } else {\n /**\n * Index changed, we must search for the old one and remove it.\n */\n var indexBefore = boundEQ(docsWithIndex, {\n indexString: previousIndexString\n }, compareDocsWithIndex);\n docsWithIndex.splice(indexBefore, 1);\n }\n }\n }\n}\nexport function removeDocFromState(primaryPath, schema, state, doc) {\n var docId = doc[primaryPath];\n state.documents.delete(docId);\n Object.values(state.byIndex).forEach(byIndex => {\n var docsWithIndex = byIndex.docsWithIndex;\n var indexString = byIndex.getIndexableString(doc);\n var positionInIndex = boundEQ(docsWithIndex, {\n indexString\n }, compareDocsWithIndex);\n docsWithIndex.splice(positionInIndex, 1);\n });\n}\nexport function compareDocsWithIndex(a, b) {\n var indexStringA = a.indexString;\n var indexStringB = b.indexString;\n if (indexStringA < indexStringB) {\n return -1;\n } else if (indexStringA === indexStringB) {\n return 0;\n } else {\n return 1;\n }\n}\n//# sourceMappingURL=memory-helper.js.map","import { getIndexableStringMonad } from \"../../custom-index.js\";\nimport { getPrimaryFieldOfPrimaryKey } from \"../../rx-schema-helper.js\";\nimport { toArray } from \"../../plugins/utils/index.js\";\nexport function addIndexesToInternalsState(state, schema) {\n var primaryPath = getPrimaryFieldOfPrimaryKey(schema.primaryKey);\n var useIndexes = !schema.indexes ? [] : schema.indexes.map(row => toArray(row));\n\n // we need this index for running cleanup()\n useIndexes.push(['_deleted', '_meta.lwt', primaryPath]);\n useIndexes.forEach(indexAr => {\n state.byIndex[getMemoryIndexName(indexAr)] = {\n index: indexAr,\n docsWithIndex: [],\n getIndexableString: getIndexableStringMonad(schema, indexAr)\n };\n });\n}\nexport function getMemoryIndexName(index) {\n return index.join(',');\n}\n//# sourceMappingURL=memory-indexes.js.map","import { Subject } from 'rxjs';\nimport { getStartIndexStringFromLowerBound, getStartIndexStringFromUpperBound } from \"../../custom-index.js\";\nimport { getPrimaryFieldOfPrimaryKey } from \"../../rx-schema-helper.js\";\nimport { categorizeBulkWriteRows } from \"../../rx-storage-helper.js\";\nimport { deepEqual, ensureNotFalsy, now, PROMISE_RESOLVE_TRUE, PROMISE_RESOLVE_VOID, randomCouchString, requestIdlePromiseNoQueue } from \"../../plugins/utils/index.js\";\nimport { boundGE, boundGT, boundLE, boundLT } from \"./binary-search-bounds.js\";\nimport { attachmentMapKey, compareDocsWithIndex, ensureNotRemoved, getMemoryCollectionKey, putWriteRowToState, removeDocFromState } from \"./memory-helper.js\";\nimport { addIndexesToInternalsState, getMemoryIndexName } from \"./memory-indexes.js\";\nimport { getQueryMatcher, getSortComparator } from \"../../rx-query-helper.js\";\n\n/**\n * Used in tests to ensure everything\n * is closed correctly\n */\nexport var OPEN_MEMORY_INSTANCES = new Set();\nexport var RxStorageInstanceMemory = /*#__PURE__*/function () {\n function RxStorageInstanceMemory(storage, databaseName, collectionName, schema, internals, options, settings) {\n this.closed = false;\n this.storage = storage;\n this.databaseName = databaseName;\n this.collectionName = collectionName;\n this.schema = schema;\n this.internals = internals;\n this.options = options;\n this.settings = settings;\n OPEN_MEMORY_INSTANCES.add(this);\n this.primaryPath = getPrimaryFieldOfPrimaryKey(this.schema.primaryKey);\n }\n var _proto = RxStorageInstanceMemory.prototype;\n _proto.bulkWrite = function bulkWrite(documentWrites, context) {\n this.ensurePersistence();\n ensureNotRemoved(this);\n var internals = this.internals;\n var documentsById = this.internals.documents;\n var primaryPath = this.primaryPath;\n var categorized = categorizeBulkWriteRows(this, primaryPath, documentsById, documentWrites, context);\n var error = categorized.errors;\n var success = new Array(categorized.bulkInsertDocs.length);\n var bulkInsertDocs = categorized.bulkInsertDocs;\n for (var i = 0; i < bulkInsertDocs.length; ++i) {\n var writeRow = bulkInsertDocs[i];\n var doc = writeRow.document;\n success[i] = doc;\n }\n var bulkUpdateDocs = categorized.bulkUpdateDocs;\n for (var _i = 0; _i < bulkUpdateDocs.length; ++_i) {\n var _writeRow = bulkUpdateDocs[_i];\n var _doc = _writeRow.document;\n success.push(_doc);\n }\n this.internals.ensurePersistenceTask = categorized;\n if (!this.internals.ensurePersistenceIdlePromise) {\n this.internals.ensurePersistenceIdlePromise = requestIdlePromiseNoQueue().then(() => {\n this.internals.ensurePersistenceIdlePromise = undefined;\n this.ensurePersistence();\n });\n }\n\n /**\n * Important: The events must be emitted AFTER the persistence\n * task has been added.\n */\n if (categorized.eventBulk.events.length > 0) {\n var lastState = ensureNotFalsy(categorized.newestRow).document;\n categorized.eventBulk.checkpoint = {\n id: lastState[primaryPath],\n lwt: lastState._meta.lwt\n };\n categorized.eventBulk.endTime = now();\n PROMISE_RESOLVE_TRUE.then(() => {\n internals.changes$.next(categorized.eventBulk);\n });\n }\n var ret = Promise.resolve({\n success,\n error\n });\n return ret;\n }\n\n /**\n * Instead of directly inserting the documents into all indexes,\n * we do it lazy in the background. This gives the application time\n * to directly work with the write-result and to do stuff like rendering DOM\n * notes and processing RxDB queries.\n * Then in some later time, or just before the next read/write,\n * it is ensured that the indexes have been written.\n */;\n _proto.ensurePersistence = function ensurePersistence() {\n if (!this.internals.ensurePersistenceTask) {\n return;\n }\n var internals = this.internals;\n var documentsById = this.internals.documents;\n var primaryPath = this.primaryPath;\n var categorized = this.internals.ensurePersistenceTask;\n this.internals.ensurePersistenceTask = undefined;\n\n /**\n * Do inserts/updates\n */\n var stateByIndex = Object.values(this.internals.byIndex);\n var bulkInsertDocs = categorized.bulkInsertDocs;\n for (var i = 0; i < bulkInsertDocs.length; ++i) {\n var writeRow = bulkInsertDocs[i];\n var doc = writeRow.document;\n var docId = doc[primaryPath];\n putWriteRowToState(docId, internals, stateByIndex, writeRow, undefined);\n }\n var bulkUpdateDocs = categorized.bulkUpdateDocs;\n for (var _i2 = 0; _i2 < bulkUpdateDocs.length; ++_i2) {\n var _writeRow2 = bulkUpdateDocs[_i2];\n var _doc2 = _writeRow2.document;\n var _docId = _doc2[primaryPath];\n putWriteRowToState(_docId, internals, stateByIndex, _writeRow2, documentsById.get(_docId));\n }\n\n /**\n * Handle attachments\n */\n if (this.schema.attachments) {\n var attachmentsMap = internals.attachments;\n categorized.attachmentsAdd.forEach(attachment => {\n attachmentsMap.set(attachmentMapKey(attachment.documentId, attachment.attachmentId), {\n writeData: attachment.attachmentData,\n digest: attachment.digest\n });\n });\n if (this.schema.attachments) {\n categorized.attachmentsUpdate.forEach(attachment => {\n attachmentsMap.set(attachmentMapKey(attachment.documentId, attachment.attachmentId), {\n writeData: attachment.attachmentData,\n digest: attachment.digest\n });\n });\n categorized.attachmentsRemove.forEach(attachment => {\n attachmentsMap.delete(attachmentMapKey(attachment.documentId, attachment.attachmentId));\n });\n }\n }\n };\n _proto.findDocumentsById = function findDocumentsById(docIds, withDeleted) {\n this.ensurePersistence();\n var documentsById = this.internals.documents;\n var ret = [];\n if (documentsById.size === 0) {\n return Promise.resolve(ret);\n }\n for (var i = 0; i < docIds.length; ++i) {\n var docId = docIds[i];\n var docInDb = documentsById.get(docId);\n if (docInDb && (!docInDb._deleted || withDeleted)) {\n ret.push(docInDb);\n }\n }\n return Promise.resolve(ret);\n };\n _proto.query = function query(preparedQuery) {\n this.ensurePersistence();\n var queryPlan = preparedQuery.queryPlan;\n var query = preparedQuery.query;\n var skip = query.skip ? query.skip : 0;\n var limit = query.limit ? query.limit : Infinity;\n var skipPlusLimit = skip + limit;\n var queryMatcher = false;\n if (!queryPlan.selectorSatisfiedByIndex) {\n queryMatcher = getQueryMatcher(this.schema, preparedQuery.query);\n }\n var queryPlanFields = queryPlan.index;\n var mustManuallyResort = !queryPlan.sortSatisfiedByIndex;\n var index = queryPlanFields;\n var lowerBound = queryPlan.startKeys;\n var lowerBoundString = getStartIndexStringFromLowerBound(this.schema, index, lowerBound);\n var upperBound = queryPlan.endKeys;\n upperBound = upperBound;\n var upperBoundString = getStartIndexStringFromUpperBound(this.schema, index, upperBound);\n var indexName = getMemoryIndexName(index);\n if (!this.internals.byIndex[indexName]) {\n throw new Error('index does not exist ' + indexName);\n }\n var docsWithIndex = this.internals.byIndex[indexName].docsWithIndex;\n var indexOfLower = (queryPlan.inclusiveStart ? boundGE : boundGT)(docsWithIndex, {\n indexString: lowerBoundString\n }, compareDocsWithIndex);\n var indexOfUpper = (queryPlan.inclusiveEnd ? boundLE : boundLT)(docsWithIndex, {\n indexString: upperBoundString\n }, compareDocsWithIndex);\n var rows = [];\n var done = false;\n while (!done) {\n var currentRow = docsWithIndex[indexOfLower];\n if (!currentRow || indexOfLower > indexOfUpper) {\n break;\n }\n var currentDoc = currentRow.doc;\n if (!queryMatcher || queryMatcher(currentDoc)) {\n rows.push(currentDoc);\n }\n if (rows.length >= skipPlusLimit && !mustManuallyResort) {\n done = true;\n }\n indexOfLower++;\n }\n if (mustManuallyResort) {\n var sortComparator = getSortComparator(this.schema, preparedQuery.query);\n rows = rows.sort(sortComparator);\n }\n\n // apply skip and limit boundaries.\n rows = rows.slice(skip, skipPlusLimit);\n return Promise.resolve({\n documents: rows\n });\n };\n _proto.count = async function count(preparedQuery) {\n this.ensurePersistence();\n var result = await this.query(preparedQuery);\n return {\n count: result.documents.length,\n mode: 'fast'\n };\n };\n _proto.cleanup = function cleanup(minimumDeletedTime) {\n this.ensurePersistence();\n var maxDeletionTime = now() - minimumDeletedTime;\n var index = ['_deleted', '_meta.lwt', this.primaryPath];\n var indexName = getMemoryIndexName(index);\n var docsWithIndex = this.internals.byIndex[indexName].docsWithIndex;\n var lowerBoundString = getStartIndexStringFromLowerBound(this.schema, index, [true, 0, '']);\n var indexOfLower = boundGT(docsWithIndex, {\n indexString: lowerBoundString\n }, compareDocsWithIndex);\n var done = false;\n while (!done) {\n var currentDoc = docsWithIndex[indexOfLower];\n if (!currentDoc || currentDoc.doc._meta.lwt > maxDeletionTime) {\n done = true;\n } else {\n removeDocFromState(this.primaryPath, this.schema, this.internals, currentDoc.doc);\n indexOfLower++;\n }\n }\n return PROMISE_RESOLVE_TRUE;\n };\n _proto.getAttachmentData = function getAttachmentData(documentId, attachmentId, digest) {\n this.ensurePersistence();\n ensureNotRemoved(this);\n var key = attachmentMapKey(documentId, attachmentId);\n var data = this.internals.attachments.get(key);\n if (!digest || !data || data.digest !== digest) {\n throw new Error('attachment does not exist: ' + key);\n }\n return Promise.resolve(data.writeData.data);\n };\n _proto.changeStream = function changeStream() {\n ensureNotRemoved(this);\n return this.internals.changes$.asObservable();\n };\n _proto.remove = async function remove() {\n if (this.closed) {\n throw new Error('closed');\n }\n this.ensurePersistence();\n ensureNotRemoved(this);\n this.internals.removed = true;\n this.storage.collectionStates.delete(getMemoryCollectionKey(this.databaseName, this.collectionName, this.schema.version));\n await this.close();\n };\n _proto.close = function close() {\n OPEN_MEMORY_INSTANCES.delete(this);\n this.ensurePersistence();\n if (this.closed) {\n return PROMISE_RESOLVE_VOID;\n }\n this.closed = true;\n this.internals.refCount = this.internals.refCount - 1;\n return PROMISE_RESOLVE_VOID;\n };\n _proto.conflictResultionTasks = function conflictResultionTasks() {\n return this.internals.conflictResultionTasks$.asObservable();\n };\n _proto.resolveConflictResultionTask = function resolveConflictResultionTask(_taskSolution) {\n return PROMISE_RESOLVE_VOID;\n };\n return RxStorageInstanceMemory;\n}();\nexport function createMemoryStorageInstance(storage, params, settings) {\n var collectionKey = getMemoryCollectionKey(params.databaseName, params.collectionName, params.schema.version);\n var internals = storage.collectionStates.get(collectionKey);\n if (!internals) {\n internals = {\n id: randomCouchString(5),\n schema: params.schema,\n removed: false,\n refCount: 1,\n documents: new Map(),\n attachments: params.schema.attachments ? new Map() : undefined,\n byIndex: {},\n conflictResultionTasks$: new Subject(),\n changes$: new Subject()\n };\n addIndexesToInternalsState(internals, params.schema);\n storage.collectionStates.set(collectionKey, internals);\n } else {\n /**\n * Ensure that the storage was not already\n * created with a different schema.\n * This is very important because if this check\n * does not exist here, we have hard-to-debug problems\n * downstream.\n */\n if (params.devMode && !deepEqual(internals.schema, params.schema)) {\n throw new Error('storage was already created with a different schema');\n }\n internals.refCount = internals.refCount + 1;\n }\n var instance = new RxStorageInstanceMemory(storage, params.databaseName, params.collectionName, params.schema, internals, params.options, settings);\n return Promise.resolve(instance);\n}\n//# sourceMappingURL=rx-storage-instance-memory.js.map","import { ensureRxStorageInstanceParamsAreCorrect } from \"../../rx-storage-helper.js\";\nimport { RXDB_VERSION } from \"../utils/utils-rxdb-version.js\";\nimport { createMemoryStorageInstance } from \"./rx-storage-instance-memory.js\";\n\n/**\n * Keep the state even when the storage instance is closed.\n * This makes it easier to use the memory storage\n * to test filesystem-like and multiInstance behaviors.\n */\nvar COLLECTION_STATES = new Map();\nexport function getRxStorageMemory(settings = {}) {\n var storage = {\n name: 'memory',\n rxdbVersion: RXDB_VERSION,\n collectionStates: COLLECTION_STATES,\n createStorageInstance(params) {\n ensureRxStorageInstanceParamsAreCorrect(params);\n var useSettings = Object.assign({}, settings, params.options);\n return createMemoryStorageInstance(this, params, useSettings);\n }\n };\n return storage;\n}\nexport * from \"./memory-helper.js\";\nexport * from \"./binary-search-bounds.js\";\nexport * from \"./memory-types.js\";\nexport * from \"./memory-indexes.js\";\nexport * from \"./rx-storage-instance-memory.js\";\n//# sourceMappingURL=index.js.map","import { getRxStorageDexie } from 'rxdb/plugins/storage-dexie';\nimport { getRxStorageMemory } from 'rxdb/plugins/storage-memory';\n\nfunction getRxDatabaseCreator(config) {\n let { name, options, storage, ...rest } = config;\n if (!storage) {\n switch (options.storageType) {\n case 'dexie':\n storage = getRxStorageDexie(options.storageOptions);\n break;\n case 'memory':\n storage = getRxStorageMemory(options.storageOptions);\n break;\n default:\n storage = getRxStorageMemory(options.storageOptions);\n break;\n }\n }\n const dbConfig = {\n name,\n storage,\n options,\n ...rest,\n };\n return dbConfig;\n}\nconst DEFAULT_BACKOFF_FN = (delay) => (delay === 0 ? 2000 : delay * 3);\nconst DEFAULT_LOCAL_DOCUMENT_ID = 'local';\n\nexport { DEFAULT_BACKOFF_FN, DEFAULT_LOCAL_DOCUMENT_ID, getRxDatabaseCreator };\n//# sourceMappingURL=ngx-odm-rxdb-config.mjs.map\n","export const semver = /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\nexport const validateAndParse = (version) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${version}' received)`);\n }\n match.shift();\n return match;\n};\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\nconst forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b))\n return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp)\n return 1;\n if (ap < bp)\n return -1;\n return 0;\n};\nexport const compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0)\n return r;\n }\n return 0;\n};\n//# sourceMappingURL=utils.js.map","import { compareSegments, validateAndParse } from './utils';\n/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1, v2) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0)\n return r;\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n }\n else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n return 0;\n};\n//# sourceMappingURL=compareVersions.js.map","import { compareVersions } from './compareVersions';\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n return operatorResMap[operator].includes(res);\n};\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\nconst allowedOperators = Object.keys(operatorResMap);\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);\n }\n};\n//# sourceMappingURL=compare.js.map","import { NgxRxdbUtils, getDefaultFetch } from '@ngx-odm/rxdb/utils';\nimport { compare } from 'compare-versions';\nimport { isRxDatabaseFirstTimeInstantiated, getAllCollectionDocuments } from 'rxdb';\n\nconst { logger, getDefaultPreparedQuery } = NgxRxdbUtils;\nconst RXDB_STORAGE_TOKEN_ID = 'storage-token|storageToken';\nconst fetchSchema = async (schemaUrl) => {\n let schema;\n try {\n const fetch = getDefaultFetch();\n const result = await fetch(schemaUrl);\n if (result.ok) {\n schema = await result.json();\n }\n else {\n throw new Error(`Failed to fetch schema from \"${schemaUrl}\", status: ${result.status}`);\n }\n }\n catch (error) {\n throw new Error(`Failed to fetch schema from \"${schemaUrl}\"`);\n }\n return schema;\n};\nconst prepareCollections = async (colConfigs) => {\n try {\n const colCreators = {};\n for (const name in colConfigs) {\n const config = colConfigs[name];\n if (!config.schema && !!config.options?.schemaUrl) {\n config.schema = (await fetchSchema(config.options.schemaUrl));\n }\n colCreators[config.name] = config;\n }\n return colCreators;\n }\n catch (error) {\n throw new Error(error.message);\n }\n};\nconst prepareDbDump = async (dumpPath, collections) => {\n let dumpObj;\n const fetch = getDefaultFetch();\n const result = await fetch(dumpPath);\n if (result.ok) {\n dumpObj = await result.json();\n }\n else {\n throw new Error(`Failed to fetch db dump from \"${dumpPath}\", status: ${result.status}`);\n }\n if (!collections || !Object.keys(collections).length) {\n throw new Error('collections must be initialized before importing');\n }\n for (const dc of dumpObj.collections) {\n const col = collections[dc.name];\n if (col) {\n dc.schemaHash = col.schema['_hash'];\n }\n else {\n throw new Error('no such collection as provided in dump');\n }\n }\n return dumpObj;\n};\nconst migrateStorageVersion = async (storage, storageInstance, rxdbVersion) => {\n let storageData = {};\n if (storage.name !== 'dexie') {\n return;\n }\n const dexieTable = (await storageInstance.internals)?.dexieTable;\n storageData = (await dexieTable.get(RXDB_STORAGE_TOKEN_ID))?.data;\n if (!storageData?.rxdbVersion || compare(rxdbVersion, storageData.rxdbVersion, '>')) {\n try {\n await dexieTable.update(RXDB_STORAGE_TOKEN_ID, {\n data: {\n ...storageData,\n rxdbVersion,\n },\n });\n logger.log('prepare-plugin: migrated internal storage to', rxdbVersion);\n }\n catch (error) {\n throw new Error('prepare-plugin: unable to migrate internal storage');\n }\n }\n return;\n};\nconst afterCreateRxDatabase = async ({ database: db, creator, }) => {\n const isFirstTimeInstantiated = await isRxDatabaseFirstTimeInstantiated(db);\n logger.log('prepare-plugin: hook:createRxDatabase:after');\n const { storage, internalStore: storageInstance, rxdbVersion } = db;\n await migrateStorageVersion(storage, storageInstance, rxdbVersion);\n if (!creator.options?.dumpPath || !isFirstTimeInstantiated) {\n return;\n }\n try {\n const dump = await prepareDbDump(creator.options.dumpPath, db.collections);\n await db.importJSON(dump);\n logger.log(`prepare-plugin: imported dump for db \"${db.name}\"`);\n }\n catch (error) {\n logger.log('prepare-plugin: imported dump error', error);\n }\n};\nconst beforePreCreateRxSchema = async (maybeSchema) => {\n if (typeof maybeSchema === 'string') {\n const realSchema = await fetchSchema(maybeSchema);\n if (!realSchema) {\n throw new Error(`Failed to fetch schema from \"${maybeSchema}\"`);\n }\n maybeSchema = realSchema;\n }\n};\nconst afterCreateRxCollection = async ({ collection: col, creator, }) => {\n logger.log('prepare-plugin: hook:createRxCollection:before');\n const meta = await col.getMetadata();\n logger.log('prepare-plugin: hook:createRxCollection:before', meta);\n const initialDocs = creator.options?.initialDocs || [];\n const initialCount = await countDocs();\n if (!initialDocs.length) {\n return;\n }\n if (initialCount || !meta.isFirstTimeInstantiated) {\n if (!creator.options?.recreate || creator.options?.replication) {\n return;\n }\n else {\n logger.log(`prepare-plugin: collection \"${col.name}\" already has ${initialCount} docs (including _deleted), but recreate option is set`);\n }\n }\n const schemaHash = await col.schema.hash;\n const dump = {\n name: col.name,\n schemaHash,\n docs: initialDocs,\n };\n try {\n const { success, error } = (await col.importJSON(dump));\n const count = await countDocs();\n logger.log(`prepare-plugin: imported ${success.length} docs for collection \"${col.name}\", errors count ${error.length}, current docs count ${count}`);\n logger.table(success);\n }\n catch (error) {\n logger.log('prepare-plugin: imported dump error', error);\n }\n return;\n async function removeAllDocs() {\n await col.find().update({ $set: { _deleted: true } });\n await col.cleanup();\n }\n async function countDocs() {\n const { count } = await col.storageInstance\n .count(getDefaultPreparedQuery())\n .catch(() => ({ count: 0 }));\n return count;\n }\n};\nconst RxDBPreparePlugin = {\n name: 'prepare-plugin',\n rxdb: true,\n prototypes: {\n RxDatabase: (proto) => {\n Object.assign(proto, {\n fetchSchema,\n });\n },\n RxCollection: (proto) => {\n const getMetadata = async function () {\n const isFirstTimeInstantiated = await isRxDatabaseFirstTimeInstantiated(this.database);\n const allCollectionMetaDocs = await getAllCollectionDocuments(this.database.internalStore);\n const { id, data, _meta, _rev } = allCollectionMetaDocs.filter(metaDoc => metaDoc.data.name === this.name).at(0) ||\n {};\n return {\n id: id || this.name,\n databaseName: this.database.name,\n collectionName: data?.name || this.name,\n storageName: this.storageInstance.originalStorageInstance['storage'].name,\n last_modified: _meta?.lwt ? Math.floor(_meta?.lwt) : Date.now(),\n rev: _rev ? Number(_rev?.at(0)) : 1,\n isFirstTimeInstantiated,\n };\n };\n Object.assign(proto, {\n getMetadata,\n });\n },\n },\n hooks: {\n createRxDatabase: {\n after: afterCreateRxDatabase,\n },\n preCreateRxSchema: {\n before: beforePreCreateRxSchema,\n },\n createRxCollection: {\n after: afterCreateRxCollection,\n },\n },\n};\n\nexport { RxDBPreparePlugin, beforePreCreateRxSchema, fetchSchema, prepareCollections };\n//# sourceMappingURL=ngx-odm-rxdb-prepare.mjs.map\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import { NgxRxdbUtils } from '@ngx-odm/rxdb/utils';\nimport { BehaviorSubject, distinctUntilChanged, tap, map, catchError, takeWhile, EMPTY } from 'rxjs';\nimport { includeKeys } from 'filter-obj';\nimport queryString from 'query-string';\n\nconst { keys, isEmpty, isNullOrUndefined } = NgxRxdbUtils;\nconst normalizeMangoQuery = ({ selector, sort, limit, skip }, schema) => {\n const schemaTopLevelFields = keys(schema.jsonSchema.properties);\n if (!isEmpty(selector)) {\n selector = includeKeys(selector, key => {\n return (!key.startsWith('$') &&\n !key.includes('.') &&\n schemaTopLevelFields.includes(key));\n });\n }\n if (!isEmpty(sort)) {\n sort = sort?.filter(sortPart => schemaTopLevelFields.includes(keys(sortPart)[0]));\n }\n if (isNullOrUndefined(limit) || isNaN(limit)) {\n limit = undefined;\n }\n if (isNullOrUndefined(skip) || isNaN(skip)) {\n skip = undefined;\n }\n return { selector, sort, limit, skip };\n};\nconst parseUrlToMangoQuery = (url, schema) => {\n url = queryString.extract(url);\n const urlPart = queryString.pick(url, ['selector', 'sort', 'limit', 'skip']);\n const parsed = queryString.parse(urlPart, {\n parseNumbers: true,\n parseBooleans: true,\n });\n const { selector: _selector, sort: _sort, limit, skip } = parsed;\n const selector = _selector ? JSON.parse(_selector) : undefined;\n const sort = _sort ? JSON.parse(_sort) : undefined;\n const queryObj = normalizeMangoQuery({\n selector,\n sort,\n limit,\n skip,\n }, schema);\n return queryObj;\n};\nconst stringifyParam = (param) => {\n if (isNullOrUndefined(param))\n return '';\n return JSON.stringify(param);\n};\n\nconst { logger, compactObject } = NgxRxdbUtils;\nconst RxDBPUseQueryParamsPlugin = {\n name: 'query-params-plugin',\n rxdb: true,\n prototypes: {\n RxCollection: (proto) => {\n const _queryParams$ = new BehaviorSubject({});\n let useQueryParams = false;\n let schema;\n let initDone = false;\n let currentUrl = '';\n let updateQueryParamsInLocationFn = () => Promise.resolve(false);\n function init(currentUrl$ = EMPTY, _updateQueryParamsInLocationFn) {\n useQueryParams = !!this.options?.useQueryParams;\n schema = this.schema;\n if (!useQueryParams || initDone)\n return;\n updateQueryParamsInLocationFn = _updateQueryParamsInLocationFn;\n currentUrl$\n .pipe(distinctUntilChanged(), tap(url => {\n currentUrl = url;\n }), map(url => parseUrlToMangoQuery(url, schema)), catchError(err => {\n logger.log('Error in parsing url to mango query', err);\n return _queryParams$;\n }), tap(queryParams => {\n logger.log('queryParams', queryParams);\n }), takeWhile(() => !this.destroyed))\n .subscribe(_queryParams$);\n initDone = true;\n }\n function set(query) {\n if (!useQueryParams)\n return;\n const { selector, sort, limit, skip } = query;\n const queryParams = { limit, skip };\n if (selector) {\n queryParams.selector = stringifyParam(query.selector);\n }\n if (sort) {\n queryParams.sort = stringifyParam(query.sort);\n }\n updateQueryParamsInLocationFn(queryParams);\n }\n function patch(query) {\n if (!useQueryParams)\n return;\n const parsed = parseUrlToMangoQuery(currentUrl, schema);\n const queryParams = {\n selector: stringifyParam(query.selector || parsed.selector),\n sort: stringifyParam(query.sort || parsed.sort),\n limit: query.limit || parsed.limit,\n skip: query.skip || parsed.skip,\n };\n updateQueryParamsInLocationFn(compactObject(queryParams));\n }\n Object.assign(proto, {\n queryParams: {\n $: _queryParams$.asObservable(),\n get: () => _queryParams$.getValue(),\n set,\n patch,\n },\n }, {\n queryParamsInit: init,\n });\n },\n },\n hooks: {\n createRxCollection: {},\n },\n};\n\nexport { RxDBPUseQueryParamsPlugin };\n//# sourceMappingURL=ngx-odm-rxdb-query-params.mjs.map\n","export var DEFAULT_CLEANUP_POLICY = {\n minimumDeletedTime: 1000 * 60 * 60 * 24 * 31,\n // one month\n minimumCollectionAge: 1000 * 60,\n // 60 seconds\n runEach: 1000 * 60 * 5,\n // 5 minutes\n awaitReplicationsInSync: true,\n waitForLeadership: true\n};\n//# sourceMappingURL=cleanup-helper.js.map","import { PROMISE_RESOLVE_TRUE } from \"../../plugins/utils/index.js\";\nimport { REPLICATION_STATE_BY_COLLECTION } from \"../replication/index.js\";\nimport { DEFAULT_CLEANUP_POLICY } from \"./cleanup-helper.js\";\n\n/**\n * Even on multiple databases,\n * the calls to RxStorage().cleanup()\n * must never run in parallel.\n * The cleanup is a background task which should\n * not affect the performance of other, more important tasks.\n */\nvar RXSOTRAGE_CLEANUP_QUEUE = PROMISE_RESOLVE_TRUE;\nexport async function startCleanupForRxCollection(rxCollection) {\n var rxDatabase = rxCollection.database;\n var cleanupPolicy = Object.assign({}, DEFAULT_CLEANUP_POLICY, rxDatabase.cleanupPolicy ? rxDatabase.cleanupPolicy : {});\n\n /**\n * Wait until minimumDatabaseInstanceAge is reached\n * or collection is destroyed.\n */\n await rxCollection.promiseWait(cleanupPolicy.minimumCollectionAge);\n if (rxCollection.destroyed) {\n return;\n }\n if (cleanupPolicy.waitForLeadership) {\n await rxDatabase.waitForLeadership();\n }\n if (rxCollection.destroyed) {\n return;\n }\n\n // initially cleanup the collection\n await cleanupRxCollection(rxCollection, cleanupPolicy);\n\n /**\n * Afterwards we listen to deletes\n * and only re-run the cleanup after\n * minimumDeletedTime is reached.\n */\n await runCleanupAfterDelete(rxCollection, cleanupPolicy);\n}\n\n/**\n * Runs the cleanup for a single RxCollection\n */\nexport async function cleanupRxCollection(rxCollection, cleanupPolicy) {\n var rxDatabase = rxCollection.database;\n var storageInstance = rxCollection.storageInstance;\n\n // run cleanup() until it returns true\n var isDone = false;\n while (!isDone && !rxCollection.destroyed) {\n if (cleanupPolicy.awaitReplicationsInSync) {\n var replicationStates = REPLICATION_STATE_BY_COLLECTION.get(rxCollection);\n if (replicationStates) {\n await Promise.all(replicationStates.map(replicationState => {\n if (!replicationState.isStopped()) {\n return replicationState.awaitInSync();\n }\n }));\n }\n }\n await rxDatabase.requestIdlePromise();\n if (rxCollection.destroyed) {\n return;\n }\n RXSOTRAGE_CLEANUP_QUEUE = RXSOTRAGE_CLEANUP_QUEUE.then(() => {\n if (rxCollection.destroyed) {\n return true;\n }\n return storageInstance.cleanup(cleanupPolicy.minimumDeletedTime);\n });\n isDone = await RXSOTRAGE_CLEANUP_QUEUE;\n }\n}\nexport async function runCleanupAfterDelete(rxCollection, cleanupPolicy) {\n while (!rxCollection.destroyed) {\n await rxCollection.promiseWait(cleanupPolicy.runEach);\n if (rxCollection.destroyed) {\n return;\n }\n await cleanupRxCollection(rxCollection, cleanupPolicy);\n }\n}\n//# sourceMappingURL=cleanup.js.map","import { DEFAULT_CLEANUP_POLICY } from \"./cleanup-helper.js\";\nimport { startCleanupForRxCollection } from \"./cleanup.js\";\nexport var RxDBCleanupPlugin = {\n name: 'cleanup',\n rxdb: true,\n prototypes: {\n RxCollection: proto => {\n proto.cleanup = async function (minimumDeletedTime) {\n var cleanupPolicy = Object.assign({}, DEFAULT_CLEANUP_POLICY, this.database.cleanupPolicy ? this.database.cleanupPolicy : {});\n if (typeof minimumDeletedTime === 'undefined') {\n minimumDeletedTime = cleanupPolicy.minimumDeletedTime;\n }\n\n // run cleanup() until it returns true\n var isDone = false;\n while (!isDone && !this.destroyed) {\n isDone = await this.storageInstance.cleanup(minimumDeletedTime);\n }\n };\n }\n },\n hooks: {\n createRxCollection: {\n after: i => {\n startCleanupForRxCollection(i.collection);\n }\n }\n }\n};\nexport * from \"./cleanup.js\";\n//# sourceMappingURL=index.js.map","/**\n * this plugin adds the json export/import capabilities to RxDB\n */\nimport { createRxQuery, queryCollection, _getDefaultQuery } from \"../../rx-query.js\";\nimport { newRxError } from \"../../rx-error.js\";\nimport { flatClone, getDefaultRevision, now } from \"../../plugins/utils/index.js\";\nfunction dumpRxDatabase(collections) {\n var json = {\n name: this.name,\n instanceToken: this.token,\n collections: []\n };\n var useCollections = Object.keys(this.collections).filter(colName => !collections || collections.includes(colName)).filter(colName => colName.charAt(0) !== '_').map(colName => this.collections[colName]);\n return Promise.all(useCollections.map(col => col.exportJSON())).then(cols => {\n json.collections = cols;\n return json;\n });\n}\nvar importDumpRxDatabase = function (dump) {\n /**\n * collections must be created before the import\n * because we do not know about the other collection-settings here\n */\n var missingCollections = dump.collections.filter(col => !this.collections[col.name]).map(col => col.name);\n if (missingCollections.length > 0) {\n throw newRxError('JD1', {\n missingCollections\n });\n }\n return Promise.all(dump.collections.map(colDump => this.collections[colDump.name].importJSON(colDump)));\n};\nvar dumpRxCollection = async function () {\n var json = {\n name: this.name,\n schemaHash: await this.schema.hash,\n docs: []\n };\n var query = createRxQuery('find', _getDefaultQuery(), this);\n return queryCollection(query).then(docs => {\n json.docs = docs.map(docData => {\n docData = flatClone(docData);\n delete docData._rev;\n delete docData._attachments;\n return docData;\n });\n return json;\n });\n};\nasync function importDumpRxCollection(exportedJSON) {\n // check schemaHash\n if (exportedJSON.schemaHash !== (await this.schema.hash)) {\n throw newRxError('JD2', {\n schemaHash: exportedJSON.schemaHash,\n own: this.schema.hash\n });\n }\n var docs = exportedJSON.docs;\n return this.storageInstance.bulkWrite(docs.map(docData => {\n var document = Object.assign({}, docData, {\n _meta: {\n lwt: now()\n },\n _rev: getDefaultRevision(),\n _attachments: {},\n _deleted: false\n });\n return {\n document\n };\n }), 'json-dump-import');\n}\nexport var RxDBJsonDumpPlugin = {\n name: 'json-dump',\n rxdb: true,\n prototypes: {\n RxDatabase: proto => {\n proto.exportJSON = dumpRxDatabase;\n proto.importJSON = importDumpRxDatabase;\n },\n RxCollection: proto => {\n proto.exportJSON = dumpRxCollection;\n proto.importJSON = importDumpRxCollection;\n }\n },\n overwritable: {}\n};\n//# sourceMappingURL=index.js.map","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport { distinctUntilChanged, filter, map, shareReplay, startWith } from 'rxjs';\nimport { overwritable } from \"../../overwritable.js\";\nimport { getDocumentDataOfRxChangeEvent } from \"../../rx-change-event.js\";\nimport { basePrototype, createRxDocumentConstructor } from \"../../rx-document.js\";\nimport { newRxError, newRxTypeError } from \"../../rx-error.js\";\nimport { writeSingle } from \"../../rx-storage-helper.js\";\nimport { flatClone, getDefaultRevision, getDefaultRxDocumentMeta, getFromMapOrThrow, getProperty, RXJS_SHARE_REPLAY_DEFAULTS } from \"../../plugins/utils/index.js\";\nimport { getLocalDocStateByParent, LOCAL_DOC_STATE_BY_PARENT_RESOLVED } from \"./local-documents-helper.js\";\nimport { isRxDatabase } from \"../../rx-database.js\";\nvar RxDocumentParent = createRxDocumentConstructor();\nvar RxLocalDocumentClass = /*#__PURE__*/function (_RxDocumentParent) {\n _inheritsLoose(RxLocalDocumentClass, _RxDocumentParent);\n function RxLocalDocumentClass(id, jsonData, parent) {\n var _this2;\n _this2 = _RxDocumentParent.call(this, null, jsonData) || this;\n _this2.id = id;\n _this2.parent = parent;\n return _this2;\n }\n return RxLocalDocumentClass;\n}(RxDocumentParent);\nvar RxLocalDocumentPrototype = {\n get isLocal() {\n return true;\n },\n //\n // overwrites\n //\n get allAttachments$() {\n // this is overwritten here because we cannot re-set getters on the prototype\n throw newRxError('LD1', {\n document: this\n });\n },\n get primaryPath() {\n return 'id';\n },\n get primary() {\n return this.id;\n },\n get $() {\n var _this = this;\n var state = getFromMapOrThrow(LOCAL_DOC_STATE_BY_PARENT_RESOLVED, this.parent);\n return _this.parent.$.pipe(filter(changeEvent => changeEvent.documentId === this.primary), filter(changeEvent => changeEvent.isLocal), map(changeEvent => getDocumentDataOfRxChangeEvent(changeEvent)), startWith(state.docCache.getLatestDocumentData(this.primary)), distinctUntilChanged((prev, curr) => prev._rev === curr._rev), map(docData => state.docCache.getCachedRxDocument(docData)), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n },\n get $$() {\n var _this = this;\n var db = getRxDatabaseFromLocalDocument(_this);\n var reactivity = db.getReactivityFactory();\n return reactivity.fromObservable(_this.$, _this.getLatest()._data);\n },\n get deleted$$() {\n var _this = this;\n var db = getRxDatabaseFromLocalDocument(_this);\n var reactivity = db.getReactivityFactory();\n return reactivity.fromObservable(_this.deleted$, _this.getLatest().deleted);\n },\n getLatest() {\n var state = getFromMapOrThrow(LOCAL_DOC_STATE_BY_PARENT_RESOLVED, this.parent);\n var latestDocData = state.docCache.getLatestDocumentData(this.primary);\n return state.docCache.getCachedRxDocument(latestDocData);\n },\n get(objPath) {\n objPath = 'data.' + objPath;\n if (!this._data) {\n return undefined;\n }\n if (typeof objPath !== 'string') {\n throw newRxTypeError('LD2', {\n objPath\n });\n }\n var valueObj = getProperty(this._data, objPath);\n valueObj = overwritable.deepFreezeWhenDevMode(valueObj);\n return valueObj;\n },\n get$(objPath) {\n objPath = 'data.' + objPath;\n if (overwritable.isDevMode()) {\n if (objPath.includes('.item.')) {\n throw newRxError('LD3', {\n objPath\n });\n }\n if (objPath === this.primaryPath) {\n throw newRxError('LD4');\n }\n }\n return this.$.pipe(map(localDocument => localDocument._data), map(data => getProperty(data, objPath)), distinctUntilChanged());\n },\n get$$(objPath) {\n var db = getRxDatabaseFromLocalDocument(this);\n var reactivity = db.getReactivityFactory();\n return reactivity.fromObservable(this.get$(objPath), this.getLatest().get(objPath));\n },\n async incrementalModify(mutationFunction) {\n var state = await getLocalDocStateByParent(this.parent);\n return state.incrementalWriteQueue.addWrite(this._data, async docData => {\n docData.data = await mutationFunction(docData.data, this);\n return docData;\n }).then(result => state.docCache.getCachedRxDocument(result));\n },\n incrementalPatch(patch) {\n return this.incrementalModify(docData => {\n Object.entries(patch).forEach(([k, v]) => {\n docData[k] = v;\n });\n return docData;\n });\n },\n async _saveData(newData) {\n var state = await getLocalDocStateByParent(this.parent);\n var oldData = this._data;\n newData.id = this.id;\n return state.storageInstance.bulkWrite([{\n previous: oldData,\n document: newData\n }], 'local-document-save-data').then(res => {\n var docResult = res.success[0];\n if (!docResult) {\n throw res.error[0];\n }\n newData = flatClone(newData);\n newData._rev = docResult._rev;\n });\n },\n async remove() {\n var state = await getLocalDocStateByParent(this.parent);\n var writeData = {\n id: this._data.id,\n data: {},\n _deleted: true,\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision(),\n _attachments: {}\n };\n return writeSingle(state.storageInstance, {\n previous: this._data,\n document: writeData\n }, 'local-document-remove').then(writeResult => state.docCache.getCachedRxDocument(writeResult));\n }\n};\nvar INIT_DONE = false;\nvar _init = () => {\n if (INIT_DONE) return;else INIT_DONE = true;\n\n // add functions of RxDocument\n var docBaseProto = basePrototype;\n var props = Object.getOwnPropertyNames(docBaseProto);\n props.forEach(key => {\n var exists = Object.getOwnPropertyDescriptor(RxLocalDocumentPrototype, key);\n if (exists) return;\n var desc = Object.getOwnPropertyDescriptor(docBaseProto, key);\n Object.defineProperty(RxLocalDocumentPrototype, key, desc);\n });\n\n /**\n * Overwrite things that do not work on local documents\n * with a throwing function.\n */\n var getThrowingFun = k => () => {\n throw newRxError('LD6', {\n functionName: k\n });\n };\n ['populate', 'update', 'putAttachment', 'getAttachment', 'allAttachments'].forEach(k => RxLocalDocumentPrototype[k] = getThrowingFun(k));\n};\nexport function createRxLocalDocument(data, parent) {\n _init();\n var newDoc = new RxLocalDocumentClass(data.id, data, parent);\n Object.setPrototypeOf(newDoc, RxLocalDocumentPrototype);\n newDoc.prototype = RxLocalDocumentPrototype;\n return newDoc;\n}\nexport function getRxDatabaseFromLocalDocument(doc) {\n var parent = doc.parent;\n if (isRxDatabase(parent)) {\n return parent;\n } else {\n return parent.database;\n }\n}\n//# sourceMappingURL=rx-local-document.js.map","import { filter } from 'rxjs';\nimport { DocumentCache } from \"../../doc-cache.js\";\nimport { IncrementalWriteQueue } from \"../../incremental-write.js\";\nimport { newRxError } from \"../../rx-error.js\";\nimport { fillWithDefaultSettings } from \"../../rx-schema-helper.js\";\nimport { getWrappedStorageInstance, storageChangeEventToRxChangeEvent } from \"../../rx-storage-helper.js\";\nimport { randomCouchString } from \"../../plugins/utils/index.js\";\nimport { createRxLocalDocument } from \"./rx-local-document.js\";\nimport { overwritable } from \"../../overwritable.js\";\nexport var LOCAL_DOC_STATE_BY_PARENT = new WeakMap();\nexport var LOCAL_DOC_STATE_BY_PARENT_RESOLVED = new WeakMap();\nexport function createLocalDocStateByParent(parent) {\n var database = parent.database ? parent.database : parent;\n var collectionName = parent.database ? parent.name : '';\n var statePromise = (async () => {\n var storageInstance = await createLocalDocumentStorageInstance(database.token, database.storage, database.name, collectionName, database.instanceCreationOptions, database.multiInstance);\n storageInstance = getWrappedStorageInstance(database, storageInstance, RX_LOCAL_DOCUMENT_SCHEMA);\n var docCache = new DocumentCache('id', parent.$.pipe(filter(cE => cE.isLocal)), docData => createRxLocalDocument(docData, parent));\n var incrementalWriteQueue = new IncrementalWriteQueue(storageInstance, 'id', () => {}, () => {});\n\n /**\n * Emit the changestream into the collections change stream\n */\n var databaseStorageToken = await database.storageToken;\n var subLocalDocs = storageInstance.changeStream().subscribe(eventBulk => {\n var changeEventBulk = {\n id: eventBulk.id,\n internal: false,\n collectionName: parent.database ? parent.name : undefined,\n storageToken: databaseStorageToken,\n events: eventBulk.events.map(ev => storageChangeEventToRxChangeEvent(true, ev, parent.database ? parent : undefined)),\n databaseToken: database.token,\n checkpoint: eventBulk.checkpoint,\n context: eventBulk.context,\n endTime: eventBulk.endTime,\n startTime: eventBulk.startTime\n };\n database.$emit(changeEventBulk);\n });\n parent._subs.push(subLocalDocs);\n var state = {\n database,\n parent,\n storageInstance,\n docCache,\n incrementalWriteQueue\n };\n LOCAL_DOC_STATE_BY_PARENT_RESOLVED.set(parent, state);\n return state;\n })();\n LOCAL_DOC_STATE_BY_PARENT.set(parent, statePromise);\n}\nexport function getLocalDocStateByParent(parent) {\n var statePromise = LOCAL_DOC_STATE_BY_PARENT.get(parent);\n if (!statePromise) {\n var database = parent.database ? parent.database : parent;\n var collectionName = parent.database ? parent.name : '';\n throw newRxError('LD8', {\n database: database.name,\n collection: collectionName\n });\n }\n return statePromise;\n}\nexport function createLocalDocumentStorageInstance(databaseInstanceToken, storage, databaseName, collectionName, instanceCreationOptions, multiInstance) {\n return storage.createStorageInstance({\n databaseInstanceToken,\n databaseName: databaseName,\n /**\n * Use a different collection name for the local documents instance\n * so that the local docs can be kept while deleting the normal instance\n * after migration.\n */\n collectionName: getCollectionLocalInstanceName(collectionName),\n schema: RX_LOCAL_DOCUMENT_SCHEMA,\n options: instanceCreationOptions,\n multiInstance,\n devMode: overwritable.isDevMode()\n });\n}\nexport function closeStateByParent(parent) {\n var statePromise = LOCAL_DOC_STATE_BY_PARENT.get(parent);\n if (statePromise) {\n LOCAL_DOC_STATE_BY_PARENT.delete(parent);\n return statePromise.then(state => state.storageInstance.close());\n }\n}\nexport async function removeLocalDocumentsStorageInstance(storage, databaseName, collectionName) {\n var databaseInstanceToken = randomCouchString(10);\n var storageInstance = await createLocalDocumentStorageInstance(databaseInstanceToken, storage, databaseName, collectionName, {}, false);\n await storageInstance.remove();\n}\nexport function getCollectionLocalInstanceName(collectionName) {\n return 'plugin-local-documents-' + collectionName;\n}\nexport var RX_LOCAL_DOCUMENT_SCHEMA = fillWithDefaultSettings({\n title: 'RxLocalDocument',\n version: 0,\n primaryKey: 'id',\n type: 'object',\n properties: {\n id: {\n type: 'string',\n maxLength: 128\n },\n data: {\n type: 'object',\n additionalProperties: true\n }\n },\n required: ['id', 'data']\n});\n//# sourceMappingURL=local-documents-helper.js.map","import { getDefaultRevision, getDefaultRxDocumentMeta } from \"../../plugins/utils/index.js\";\nimport { filter, map, startWith, mergeMap } from 'rxjs';\nimport { getLocalDocStateByParent } from \"./local-documents-helper.js\";\nimport { getSingleDocument, writeSingle } from \"../../rx-storage-helper.js\";\n\n/**\n * save the local-document-data\n * throws if already exists\n */\nexport async function insertLocal(id, data) {\n var state = await getLocalDocStateByParent(this);\n\n // create new one\n var docData = {\n id: id,\n data,\n _deleted: false,\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision(),\n _attachments: {}\n };\n return writeSingle(state.storageInstance, {\n document: docData\n }, 'local-document-insert').then(newDocData => state.docCache.getCachedRxDocument(newDocData));\n}\n\n/**\n * save the local-document-data\n * overwrites existing if exists\n */\nexport function upsertLocal(id, data) {\n return this.getLocal(id).then(existing => {\n if (!existing) {\n // create new one\n var docPromise = this.insertLocal(id, data);\n return docPromise;\n } else {\n // update existing\n return existing.incrementalModify(() => {\n return data;\n });\n }\n });\n}\nexport async function getLocal(id) {\n var state = await getLocalDocStateByParent(this);\n var docCache = state.docCache;\n\n // check in doc-cache\n var found = docCache.getLatestDocumentDataIfExists(id);\n if (found) {\n return Promise.resolve(docCache.getCachedRxDocument(found));\n }\n\n // if not found, check in storage instance\n return getSingleDocument(state.storageInstance, id).then(docData => {\n if (!docData) {\n return null;\n }\n return state.docCache.getCachedRxDocument(docData);\n });\n}\nexport function getLocal$(id) {\n return this.$.pipe(startWith(null), mergeMap(async cE => {\n if (cE) {\n return {\n changeEvent: cE\n };\n } else {\n var doc = await this.getLocal(id);\n return {\n doc: doc\n };\n }\n }), mergeMap(async changeEventOrDoc => {\n if (changeEventOrDoc.changeEvent) {\n var cE = changeEventOrDoc.changeEvent;\n if (!cE.isLocal || cE.documentId !== id) {\n return {\n use: false\n };\n } else {\n var doc = await this.getLocal(id);\n return {\n use: true,\n doc: doc\n };\n }\n } else {\n return {\n use: true,\n doc: changeEventOrDoc.doc\n };\n }\n }), filter(filterFlagged => filterFlagged.use), map(filterFlagged => {\n return filterFlagged.doc;\n }));\n}\n//# sourceMappingURL=local-documents.js.map","import { getLocal, getLocal$, insertLocal, upsertLocal } from \"./local-documents.js\";\nimport { closeStateByParent, createLocalDocStateByParent, removeLocalDocumentsStorageInstance } from \"./local-documents-helper.js\";\nexport * from \"./local-documents-helper.js\";\nexport * from \"./local-documents.js\";\nexport * from \"./rx-local-document.js\";\nexport var RxDBLocalDocumentsPlugin = {\n name: 'local-documents',\n rxdb: true,\n prototypes: {\n RxCollection: proto => {\n proto.insertLocal = insertLocal;\n proto.upsertLocal = upsertLocal;\n proto.getLocal = getLocal;\n proto.getLocal$ = getLocal$;\n },\n RxDatabase: proto => {\n proto.insertLocal = insertLocal;\n proto.upsertLocal = upsertLocal;\n proto.getLocal = getLocal;\n proto.getLocal$ = getLocal$;\n }\n },\n hooks: {\n createRxDatabase: {\n before: args => {\n if (args.creator.localDocuments) {\n /**\n * We do not have to await\n * the creation to speed up initial page load.\n */\n /* await */\n createLocalDocStateByParent(args.database);\n }\n }\n },\n createRxCollection: {\n before: args => {\n if (args.creator.localDocuments) {\n /**\n * We do not have to await\n * the creation to speed up initial page load.\n */\n /* await */\n createLocalDocStateByParent(args.collection);\n }\n }\n },\n preDestroyRxDatabase: {\n after: db => {\n return closeStateByParent(db);\n }\n },\n postDestroyRxCollection: {\n after: collection => closeStateByParent(collection)\n },\n postRemoveRxDatabase: {\n after: args => {\n return removeLocalDocumentsStorageInstance(args.storage, args.databaseName, '');\n }\n },\n postRemoveRxCollection: {\n after: args => {\n return removeLocalDocumentsStorageInstance(args.storage, args.databaseName, args.collectionName);\n }\n }\n },\n overwritable: {}\n};\n//# sourceMappingURL=index.js.map","import { BehaviorSubject } from 'rxjs';\nimport { INTERNAL_CONTEXT_COLLECTION, getPrimaryKeyOfInternalDocument } from \"../../rx-database-internal-store.js\";\nimport { getPreviousVersions } from \"../../rx-schema.js\";\nimport { PROMISE_RESOLVE_FALSE, PROMISE_RESOLVE_NULL, clone, flatClone, getFromMapOrCreate, toPromise } from \"../utils/index.js\";\nexport async function getOldCollectionMeta(migrationState) {\n var collectionDocKeys = getPreviousVersions(migrationState.collection.schema.jsonSchema).map(version => migrationState.collection.name + '-' + version);\n var found = await migrationState.database.internalStore.findDocumentsById(collectionDocKeys.map(key => getPrimaryKeyOfInternalDocument(key, INTERNAL_CONTEXT_COLLECTION)), false);\n if (found.length > 1) {\n throw new Error('more the one old collection meta found');\n }\n return found[0];\n}\n\n/**\n * runs the doc-data through all following migrationStrategies\n * so it will match the newest schema.\n * @throws Error if final doc does not match final schema or migrationStrategy crashes\n * @return final object or null if migrationStrategy deleted it\n */\nexport function migrateDocumentData(collection, docSchemaVersion, docData) {\n /**\n * We cannot deep-clone Blob or Buffer\n * so we just flat clone it here\n * and attach it to the deep cloned document data.\n */\n var attachmentsBefore = flatClone(docData._attachments);\n var mutateableDocData = clone(docData);\n var meta = mutateableDocData._meta;\n delete mutateableDocData._meta;\n mutateableDocData._attachments = attachmentsBefore;\n var nextVersion = docSchemaVersion + 1;\n\n // run the document through migrationStrategies\n var currentPromise = Promise.resolve(mutateableDocData);\n var _loop = function () {\n var version = nextVersion;\n currentPromise = currentPromise.then(docOrNull => runStrategyIfNotNull(collection, version, docOrNull));\n nextVersion++;\n };\n while (nextVersion <= collection.schema.version) {\n _loop();\n }\n return currentPromise.then(doc => {\n if (doc === null) {\n return PROMISE_RESOLVE_NULL;\n }\n doc._meta = meta;\n return doc;\n });\n}\nexport function runStrategyIfNotNull(collection, version, docOrNull) {\n if (docOrNull === null) {\n return PROMISE_RESOLVE_NULL;\n } else {\n var ret = collection.migrationStrategies[version](docOrNull, collection);\n var retPromise = toPromise(ret);\n return retPromise;\n }\n}\n\n/**\n * returns true if a migration is needed\n */\nexport async function mustMigrate(migrationState) {\n if (migrationState.collection.schema.version === 0) {\n return PROMISE_RESOLVE_FALSE;\n }\n var oldColDoc = await getOldCollectionMeta(migrationState);\n return !!oldColDoc;\n}\nexport var MIGRATION_DEFAULT_BATCH_SIZE = 200;\nexport var DATA_MIGRATION_STATE_SUBJECT_BY_DATABASE = new WeakMap();\nexport function addMigrationStateToDatabase(migrationState) {\n var allSubject = getMigrationStateByDatabase(migrationState.database);\n var allList = allSubject.getValue().slice(0);\n allList.push(migrationState);\n allSubject.next(allList);\n}\nexport function getMigrationStateByDatabase(database) {\n return getFromMapOrCreate(DATA_MIGRATION_STATE_SUBJECT_BY_DATABASE, database, () => new BehaviorSubject([]));\n}\n\n/**\n * Complete on database destroy\n * so people do not have to unsubscribe\n */\nexport function onDatabaseDestroy(database) {\n var subject = DATA_MIGRATION_STATE_SUBJECT_BY_DATABASE.get(database);\n if (subject) {\n subject.complete();\n }\n}\n//# sourceMappingURL=migration-helpers.js.map","import { Subject, filter, firstValueFrom, map, shareReplay } from 'rxjs';\nimport { isBulkWriteConflictError, newRxError } from \"../../rx-error.js\";\nimport { MIGRATION_DEFAULT_BATCH_SIZE, addMigrationStateToDatabase, getOldCollectionMeta, migrateDocumentData, mustMigrate } from \"./migration-helpers.js\";\nimport { PROMISE_RESOLVE_TRUE, RXJS_SHARE_REPLAY_DEFAULTS, clone, deepEqual, ensureNotFalsy, errorToPlainJson, getDefaultRevision, getDefaultRxDocumentMeta } from \"../utils/index.js\";\nimport { getSingleDocument, hasEncryption, observeSingle, writeSingle } from \"../../rx-storage-helper.js\";\nimport { BroadcastChannel, createLeaderElection } from 'broadcast-channel';\nimport { META_INSTANCE_SCHEMA_TITLE, awaitRxStorageReplicationFirstInSync, cancelRxStorageReplication, defaultConflictHandler, getRxReplicationMetaInstanceSchema, replicateRxStorageInstance, rxStorageInstanceToReplicationHandler } from \"../../replication-protocol/index.js\";\nimport { overwritable } from \"../../overwritable.js\";\nimport { INTERNAL_CONTEXT_MIGRATION_STATUS, addConnectedStorageToCollection, getPrimaryKeyOfInternalDocument } from \"../../rx-database-internal-store.js\";\nimport { prepareQuery } from \"../../rx-query.js\";\nimport { normalizeMangoQuery } from \"../../rx-query-helper.js\";\nexport var RxMigrationState = /*#__PURE__*/function () {\n function RxMigrationState(collection, migrationStrategies, statusDocKey = [collection.name, 'v', collection.schema.version].join('-')) {\n this.started = false;\n this.updateStatusHandlers = [];\n this.updateStatusQueue = PROMISE_RESOLVE_TRUE;\n this.collection = collection;\n this.migrationStrategies = migrationStrategies;\n this.statusDocKey = statusDocKey;\n this.database = collection.database;\n this.oldCollectionMeta = getOldCollectionMeta(this);\n this.mustMigrate = mustMigrate(this);\n this.statusDocId = getPrimaryKeyOfInternalDocument(this.statusDocKey, INTERNAL_CONTEXT_MIGRATION_STATUS);\n addMigrationStateToDatabase(this);\n this.$ = observeSingle(this.database.internalStore, this.statusDocId).pipe(filter(d => !!d), map(d => ensureNotFalsy(d).data), shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n }\n var _proto = RxMigrationState.prototype;\n _proto.getStatus = function getStatus() {\n return firstValueFrom(this.$);\n }\n\n /**\n * Starts the migration.\n * Returns void so that people to not get the idea to await\n * this function.\n * Instead use migratePromise() if you want to await\n * the migration. This ensures it works even if the migration\n * is run on a different browser tab.\n */;\n _proto.startMigration = async function startMigration(batchSize = MIGRATION_DEFAULT_BATCH_SIZE) {\n var must = await this.mustMigrate;\n if (!must) {\n return;\n }\n if (this.started) {\n throw newRxError('DM1');\n }\n this.started = true;\n var broadcastChannel = undefined;\n /**\n * To ensure that multiple tabs do not migrate the same collection,\n * we use a new broadcastChannel/leaderElector for each collection.\n * This is required because collections can be added dynamically and\n * not all tabs might know about this collection.\n */\n if (this.database.multiInstance) {\n broadcastChannel = new BroadcastChannel(['rx-migration-state', this.database.name, this.collection.name, this.collection.schema.version].join('|'));\n var leaderElector = createLeaderElection(broadcastChannel);\n await leaderElector.awaitLeadership();\n }\n\n /**\n * Instead of writing a custom migration protocol,\n * we do a push-only replication from the old collection data to the new one.\n * This also ensure that restarting the replication works without problems.\n */\n var oldCollectionMeta = await this.oldCollectionMeta;\n var oldStorageInstance = await this.database.storage.createStorageInstance({\n databaseName: this.database.name,\n collectionName: this.collection.name,\n databaseInstanceToken: this.database.token,\n multiInstance: this.database.multiInstance,\n options: {},\n schema: oldCollectionMeta.data.schema,\n password: this.database.password,\n devMode: overwritable.isDevMode()\n });\n var connectedInstances = await this.getConnectedStorageInstances();\n\n /**\n * Initially write the migration status into a meta document.\n */\n var totalCount = await this.countAllDoucments([oldStorageInstance].concat(connectedInstances.map(r => r.oldStorage)));\n await this.updateStatus(s => {\n s.count.total = totalCount;\n return s;\n });\n try {\n /**\n * First migrate the connected storages,\n * afterwards migrate the normal collection.\n */\n await Promise.all(connectedInstances.map(async connectedInstance => {\n await addConnectedStorageToCollection(this.collection, connectedInstance.newStorage.collectionName, connectedInstance.newStorage.schema);\n await this.migrateStorage(connectedInstance.oldStorage, connectedInstance.newStorage, batchSize);\n await connectedInstance.newStorage.close();\n }));\n await this.migrateStorage(oldStorageInstance,\n /**\n * Use the originalStorageInstance here\n * so that the _meta.lwt time keeps the same\n * and our replication checkpoints still point to the\n * correct checkpoint.\n */\n this.collection.storageInstance.originalStorageInstance, batchSize);\n } catch (err) {\n await oldStorageInstance.close();\n await this.updateStatus(s => {\n s.status = 'ERROR';\n s.error = errorToPlainJson(err);\n return s;\n });\n return;\n }\n\n // remove old collection meta doc\n await writeSingle(this.database.internalStore, {\n previous: oldCollectionMeta,\n document: Object.assign({}, oldCollectionMeta, {\n _deleted: true\n })\n }, 'rx-migration-remove-collection-meta');\n await this.updateStatus(s => {\n s.status = 'DONE';\n return s;\n });\n if (broadcastChannel) {\n await broadcastChannel.close();\n }\n };\n _proto.updateStatus = function updateStatus(handler) {\n this.updateStatusHandlers.push(handler);\n this.updateStatusQueue = this.updateStatusQueue.then(async () => {\n if (this.updateStatusHandlers.length === 0) {\n return;\n }\n // re-run until no conflict\n var useHandlers = this.updateStatusHandlers;\n this.updateStatusHandlers = [];\n while (true) {\n var previous = await getSingleDocument(this.database.internalStore, this.statusDocId);\n var newDoc = clone(previous);\n if (!previous) {\n newDoc = {\n id: this.statusDocId,\n key: this.statusDocKey,\n context: INTERNAL_CONTEXT_MIGRATION_STATUS,\n data: {\n collectionName: this.collection.name,\n status: 'RUNNING',\n count: {\n total: 0,\n handled: 0,\n percent: 0\n }\n },\n _deleted: false,\n _meta: getDefaultRxDocumentMeta(),\n _rev: getDefaultRevision(),\n _attachments: {}\n };\n }\n var status = ensureNotFalsy(newDoc).data;\n for (var oneHandler of useHandlers) {\n status = oneHandler(status);\n }\n status.count.percent = Math.round(status.count.handled / status.count.total * 100);\n if (newDoc && previous && deepEqual(newDoc.data, previous.data)) {\n break;\n }\n try {\n await writeSingle(this.database.internalStore, {\n previous,\n document: ensureNotFalsy(newDoc)\n }, INTERNAL_CONTEXT_MIGRATION_STATUS);\n\n // write successful\n break;\n } catch (err) {\n // ignore conflicts\n if (!isBulkWriteConflictError(err)) {\n throw err;\n }\n }\n }\n });\n return this.updateStatusQueue;\n };\n _proto.migrateStorage = async function migrateStorage(oldStorage, newStorage, batchSize) {\n var replicationMetaStorageInstance = await this.database.storage.createStorageInstance({\n databaseName: this.database.name,\n collectionName: 'rx-migration-state-meta-' + this.collection.name + '-' + this.collection.schema.version,\n databaseInstanceToken: this.database.token,\n multiInstance: this.database.multiInstance,\n options: {},\n schema: getRxReplicationMetaInstanceSchema(oldStorage.schema, hasEncryption(oldStorage.schema)),\n password: this.database.password,\n devMode: overwritable.isDevMode()\n });\n var replicationHandlerBase = rxStorageInstanceToReplicationHandler(newStorage,\n /**\n * Ignore push-conflicts.\n * If this happens we drop the 'old' document state.\n */\n defaultConflictHandler, this.database.token, true);\n var replicationState = replicateRxStorageInstance({\n keepMeta: true,\n identifier: ['rx-migration-state', this.collection.name, oldStorage.schema.version, this.collection.schema.version].join('-'),\n replicationHandler: {\n masterChangesSince() {\n return Promise.resolve({\n checkpoint: null,\n documents: []\n });\n },\n masterWrite: async rows => {\n rows = await Promise.all(rows.map(async row => {\n var newDocData = row.newDocumentState;\n if (newStorage.schema.title === META_INSTANCE_SCHEMA_TITLE) {\n newDocData = row.newDocumentState.docData;\n if (row.newDocumentState.isCheckpoint === '1') {\n return {\n assumedMasterState: undefined,\n newDocumentState: row.newDocumentState\n };\n }\n }\n var migratedDocData = await migrateDocumentData(this.collection, oldStorage.schema.version, newDocData);\n var newRow = {\n // drop the assumed master state, we do not have to care about conflicts here.\n assumedMasterState: undefined,\n newDocumentState: newStorage.schema.title === META_INSTANCE_SCHEMA_TITLE ? Object.assign({}, row.newDocumentState, {\n docData: migratedDocData\n }) : migratedDocData\n };\n return newRow;\n }));\n\n // filter out the documents where the migration strategy returned null\n rows = rows.filter(row => !!row.newDocumentState);\n var result = await replicationHandlerBase.masterWrite(rows);\n return result;\n },\n masterChangeStream$: new Subject().asObservable()\n },\n forkInstance: oldStorage,\n metaInstance: replicationMetaStorageInstance,\n pushBatchSize: batchSize,\n pullBatchSize: 0,\n conflictHandler: defaultConflictHandler,\n hashFunction: this.database.hashFunction\n });\n var hasError = false;\n replicationState.events.error.subscribe(err => hasError = err);\n\n // update replication status on each change\n replicationState.events.processed.up.subscribe(() => {\n this.updateStatus(status => {\n status.count.handled = status.count.handled + 1;\n return status;\n });\n });\n await awaitRxStorageReplicationFirstInSync(replicationState);\n await cancelRxStorageReplication(replicationState);\n await this.updateStatusQueue;\n if (hasError) {\n await replicationMetaStorageInstance.close();\n throw hasError;\n }\n\n // cleanup old storages\n await Promise.all([oldStorage.remove(), replicationMetaStorageInstance.remove()]);\n };\n _proto.countAllDoucments = async function countAllDoucments(storageInstances) {\n var ret = 0;\n await Promise.all(storageInstances.map(async instance => {\n var preparedQuery = prepareQuery(instance.schema, normalizeMangoQuery(instance.schema, {\n selector: {}\n }));\n var countResult = await instance.count(preparedQuery);\n ret += countResult.count;\n }));\n return ret;\n };\n _proto.getConnectedStorageInstances = async function getConnectedStorageInstances() {\n var oldCollectionMeta = await this.oldCollectionMeta;\n var ret = [];\n await Promise.all(await Promise.all(oldCollectionMeta.data.connectedStorages.map(async connectedStorage => {\n // atm we can only migrate replication states.\n if (connectedStorage.schema.title !== META_INSTANCE_SCHEMA_TITLE) {\n throw new Error('unknown migration handling for schema');\n }\n var newSchema = getRxReplicationMetaInstanceSchema(clone(this.collection.schema.jsonSchema), hasEncryption(connectedStorage.schema));\n newSchema.version = this.collection.schema.version;\n var [oldStorage, newStorage] = await Promise.all([this.database.storage.createStorageInstance({\n databaseInstanceToken: this.database.token,\n databaseName: this.database.name,\n devMode: overwritable.isDevMode(),\n multiInstance: this.database.multiInstance,\n options: {},\n schema: connectedStorage.schema,\n password: this.database.password,\n collectionName: connectedStorage.collectionName\n }), this.database.storage.createStorageInstance({\n databaseInstanceToken: this.database.token,\n databaseName: this.database.name,\n devMode: overwritable.isDevMode(),\n multiInstance: this.database.multiInstance,\n options: {},\n schema: newSchema,\n password: this.database.password,\n collectionName: connectedStorage.collectionName\n })]);\n ret.push({\n oldStorage,\n newStorage\n });\n })));\n return ret;\n };\n _proto.migratePromise = async function migratePromise(batchSize) {\n this.startMigration(batchSize);\n var must = await this.mustMigrate;\n if (!must) {\n return {\n status: 'DONE',\n collectionName: this.collection.name,\n count: {\n handled: 0,\n percent: 0,\n total: 0\n }\n };\n }\n var result = await Promise.race([firstValueFrom(this.$.pipe(filter(d => d.status === 'DONE'))), firstValueFrom(this.$.pipe(filter(d => d.status === 'ERROR')))]);\n if (result.status === 'ERROR') {\n throw newRxError('DM4', {\n collection: this.collection.name,\n error: result.error\n });\n } else {\n return result;\n }\n };\n return RxMigrationState;\n}();\n//# sourceMappingURL=rx-migration-state.js.map","import { shareReplay } from 'rxjs';\nimport { getFromMapOrCreate, PROMISE_RESOLVE_FALSE, RXJS_SHARE_REPLAY_DEFAULTS } from \"../../plugins/utils/index.js\";\nimport { RxMigrationState } from \"./rx-migration-state.js\";\nimport { getMigrationStateByDatabase, mustMigrate, onDatabaseDestroy } from \"./migration-helpers.js\";\nimport { addRxPlugin } from \"../../plugin.js\";\nimport { RxDBLocalDocumentsPlugin } from \"../local-documents/index.js\";\nexport var DATA_MIGRATOR_BY_COLLECTION = new WeakMap();\nexport var RxDBMigrationPlugin = {\n name: 'migration-schema',\n rxdb: true,\n init() {\n addRxPlugin(RxDBLocalDocumentsPlugin);\n },\n hooks: {\n preDestroyRxDatabase: {\n after: onDatabaseDestroy\n }\n },\n prototypes: {\n RxDatabase: proto => {\n proto.migrationStates = function () {\n return getMigrationStateByDatabase(this).pipe(shareReplay(RXJS_SHARE_REPLAY_DEFAULTS));\n };\n },\n RxCollection: proto => {\n proto.getMigrationState = function () {\n return getFromMapOrCreate(DATA_MIGRATOR_BY_COLLECTION, this, () => new RxMigrationState(this.asRxCollection, this.migrationStrategies));\n };\n proto.migrationNeeded = function () {\n if (this.schema.version === 0) {\n return PROMISE_RESOLVE_FALSE;\n }\n return mustMigrate(this.getMigrationState());\n };\n }\n }\n};\nexport * from \"./rx-migration-state.js\";\nexport * from \"./migration-helpers.js\";\nexport * from \"./migration-types.js\";\n//# sourceMappingURL=index.js.map","import { Query } from \"../../query\";\nimport { assert, cloneDeep, isArray, isDate, isObject, resolve, walk } from \"../../util\";\nexport const clone = (mode, val) => {\n switch (mode) {\n case \"deep\":\n return cloneDeep(val);\n case \"copy\": {\n if (isDate(val))\n return new Date(val);\n if (isArray(val))\n return [...val];\n if (isObject(val))\n return Object.assign({}, val);\n return val;\n }\n default:\n return val;\n }\n};\nconst FILTER_IDENT_RE = /^[a-z]+[a-zA-Z0-9]*$/;\n/**\n * Tokenize a selector path to extract parts for the root, arrayFilter, and child\n * @param selector The path to tokenize\n * @returns {parent:string, elem:string, child:string}\n */\nexport function tokenizePath(selector) {\n if (!selector.includes(\".$\")) {\n return [{ parent: selector, selector }, []];\n }\n const begin = selector.indexOf(\".$\");\n const end = selector.indexOf(\"]\");\n const parent = selector.substring(0, begin);\n // using \"$\" wildcard to represent every element.\n const child = selector.substring(begin + 3, end);\n assert(child === \"\" || FILTER_IDENT_RE.test(child), \"The filter must begin with a lowercase letter and contain only alphanumeric characters.\");\n const rest = selector.substring(end + 2);\n const [next, elems] = rest ? tokenizePath(rest) : [];\n return [\n { selector, parent, child: child || \"$\", next },\n [child, ...(elems || [])].filter(Boolean)\n ];\n}\n/**\n * Applies an update function to a value to produce a new value to modify an object in-place.\n * @param o The object or array to modify.\n * @param n The path node of the update selector.\n * @param q Map of positional identifiers to queries for filtering.\n * @param f The update function which accepts containver value and key.\n * @param opts The optional {@link WalkOptions} passed to the walk function.\n */\nexport const applyUpdate = (o, n, q, f, opts) => {\n const { parent, child: c, next } = n;\n if (!c) {\n // wrapper to collect status\n let b = false;\n const g = (u, k) => (b = Boolean(f(u, k)) || b);\n walk(o, parent, g, opts);\n return b;\n }\n const t = resolve(o, parent);\n // do nothing if we don't get correct type.\n if (!isArray(t))\n return false;\n // apply update to matching items.\n return t\n .map((e, i) => {\n // filter if applicable.\n if (q[c] && !q[c].test({ [c]: e }))\n return false;\n // apply update.\n return next ? applyUpdate(e, next, q, f, opts) : f(t, i);\n })\n .some(Boolean);\n};\n/**\n * Walks the expression and apply the given action for each key-value pair.\n *\n * @param expr The expression for the update operator.\n * @param arrayFilter Filter conditions passed to the operator.\n * @param options The options provided by the caller.\n * @param callback The action to apply for a given path and value.\n * @returns {Array}\n */\nexport function walkExpression(expr, arrayFilter, options, callback) {\n const res = [];\n for (const [selector, val] of Object.entries(expr)) {\n const [node, vars] = tokenizePath(selector);\n if (!vars.length) {\n if (callback(val, node, {}))\n res.push(node.parent);\n }\n else {\n // extract conditions for each identifier\n const conditions = {};\n arrayFilter.forEach(o => {\n Object.keys(o).forEach(k => {\n vars.forEach(w => {\n if (k === w || k.startsWith(w + \".\")) {\n conditions[w] = conditions[w] || {};\n Object.assign(conditions[w], { [k]: o[k] });\n }\n });\n });\n });\n // create queries for each identifier\n const queries = {};\n for (const [k, condition] of Object.entries(conditions)) {\n queries[k] = new Query(condition, options.queryOptions);\n }\n if (callback(val, node, queries))\n res.push(node.parent);\n }\n }\n return res;\n}\n","import { has, intersection, isObject, unique } from \"../../util\";\nimport { applyUpdate, clone, walkExpression } from \"./_internal\";\n/** Adds a value to an array unless the value is already present. */\nexport const $addToSet = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, (val, node, queries) => {\n const args = { $each: [val] };\n if (isObject(val) && has(val, \"$each\")) {\n Object.assign(args, val);\n }\n return applyUpdate(obj, node, queries, (o, k) => {\n const prev = (o[k] || (o[k] = []));\n const common = intersection([prev, args.$each]);\n if (common.length === args.$each.length)\n return false;\n o[k] = clone(options.cloneMode, unique(prev.concat(args.$each)));\n return true;\n }, { buildGraph: true });\n });\n};\n","import { assert, isNumber } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\nconst BIT_OPS = new Set([\"and\", \"or\", \"xor\"]);\n/** Performs a bitwise update of a field. The operator supports AND, OR, and XOR.*/\nexport const $bit = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n const op = Object.keys(val);\n assert(op.length === 1 && BIT_OPS.has(op[0]), `Invalid bit operator '${op[0]}'. Must be one of 'and', 'or', or 'xor'.`);\n return applyUpdate(obj, node, queries, (o, k) => {\n let n = o[k];\n const v = val[op[0]];\n if (n !== undefined && !(isNumber(n) && isNumber(v)))\n return false;\n n = n || 0;\n switch (op[0]) {\n case \"and\":\n o[k] = n & v;\n break;\n case \"or\":\n o[k] = n | v;\n break;\n case \"xor\":\n o[k] = n ^ v;\n break;\n }\n return o[k] !== n;\n }, { buildGraph: true });\n }));\n};\n","import { applyUpdate, walkExpression } from \"./_internal\";\n/** Sets the value of a field to the current date. */\nexport const $currentDate = (obj, expr, arrayFilters = [], options = {}) => {\n const now = Date.now();\n return walkExpression(expr, arrayFilters, options, ((_, node, queries) => {\n return applyUpdate(obj, node, queries, (o, k) => {\n o[k] = now;\n return true;\n }, { buildGraph: true });\n }));\n};\n","import { assert, isNumber, resolve } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\n/** Increments a field by a specified value. */\nexport const $inc = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, (val, node, queries) => {\n if (!node.child) {\n const n = resolve(obj, node.parent);\n assert(n === undefined || isNumber(n), `cannot apply $inc to a value of non-numeric type`);\n }\n return applyUpdate(obj, node, queries, (o, k) => {\n o[k] = (o[k] || (o[k] = 0)) + val;\n return true;\n }, { buildGraph: true });\n });\n};\n","import { compare } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\n/** Updates the value of the field to a specified value if the specified value is greater than the current value of the field. */\nexport const $max = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n // If the field does not exist, the $max operator sets the field to the specified value.\n return applyUpdate(obj, node, queries, (o, k) => {\n if (o[k] !== undefined && compare(o[k], val) > -1)\n return false;\n o[k] = val;\n return true;\n }, { buildGraph: true });\n }));\n};\n","import { compare } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\n/** Updates the value of the field to a specified value if the specified value is less than the current value of the field. */\nexport const $min = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n // If the field does not exist, the $min operator sets the field to the specified value.\n return applyUpdate(obj, node, queries, (o, k) => {\n if (o[k] !== undefined && compare(o[k], val) < 1)\n return false;\n o[k] = val;\n return true;\n }, { buildGraph: true });\n }));\n};\n","import { applyUpdate, walkExpression } from \"./_internal\";\n/** Multiply the value of a field by a number. */\nexport const $mul = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n return applyUpdate(obj, node, queries, (o, k) => {\n const prev = o[k];\n o[k] = o[k] === undefined ? 0 : o[k] * val;\n return o[k] !== prev;\n }, { buildGraph: true });\n }));\n};\n","import { assert, isArray } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\n/** Removes the first or last element of an array. */\nexport const $pop = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n return applyUpdate(obj, node, queries, (o, k) => {\n const arr = o[k];\n assert(isArray(arr), `path '${node.selector}' contains an element of non-array type.`);\n if (!arr.length)\n return false;\n if (val === -1) {\n arr.splice(0, 1);\n }\n else {\n arr.pop();\n }\n return true;\n });\n }));\n};\n","import { Query } from \"../../query\";\nimport { isObject, isOperator } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\n/** Removes from an existing array all instances of a value or values that match a specified condition. */\nexport const $pull = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n // wrap simple values or condition objects\n const wrap = !isObject(val) || Object.keys(val).some(isOperator);\n const query = new Query(wrap ? { k: val } : val, options.queryOptions);\n const pred = wrap\n ? (v) => query.test({ k: v })\n : (v) => query.test(v);\n return applyUpdate(obj, node, queries, (o, k) => {\n const prev = o[k];\n const curr = new Array();\n const found = prev\n .map(v => {\n const b = pred(v);\n if (!b)\n curr.push(v);\n return b;\n })\n .some(Boolean);\n if (!found)\n return false;\n o[k] = curr;\n return true;\n });\n }));\n};\n","import { $pull } from \"./pull\";\n/** Removes all instances of the specified values from an existing array. */\nexport const $pullAll = (obj, expr, arrayFilters = [], options = {}) => {\n const pullExpr = {};\n Object.entries(expr).forEach(([k, v]) => {\n pullExpr[k] = { $in: v };\n });\n return $pull(obj, pullExpr, arrayFilters, options);\n};\n","import { compare, has, isEqual, isNumber, isObject, resolve } from \"../../util\";\nimport { applyUpdate, clone, walkExpression } from \"./_internal\";\nconst OPERATOR_MODIFIERS = Object.freeze([\n \"$each\",\n \"$slice\",\n \"$sort\",\n \"$position\"\n]);\n/** Appends a specified value to an array. */\nexport const $push = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n const args = {\n $each: [val]\n };\n if (isObject(val) &&\n OPERATOR_MODIFIERS.some(m => has(val, m))) {\n Object.assign(args, val);\n }\n return applyUpdate(obj, node, queries, (o, k) => {\n const arr = (o[k] || (o[k] = []));\n // take a copy of sufficient length.\n const prev = arr.slice(0, args.$slice || arr.length);\n const oldsize = arr.length;\n const pos = isNumber(args.$position) ? args.$position : arr.length;\n // insert new items\n arr.splice(pos, 0, ...clone(options.cloneMode, args.$each));\n if (args.$sort) {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n const sortKey = isObject(args.$sort)\n ? Object.keys(args.$sort || {}).pop()\n : \"\";\n const order = !sortKey ? args.$sort : args.$sort[sortKey];\n const f = !sortKey\n ? (a) => a\n : (a) => resolve(a, sortKey);\n arr.sort((a, b) => order * compare(f(a), f(b)));\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n }\n // handle slicing\n if (isNumber(args.$slice)) {\n if (args.$slice < 0)\n arr.splice(0, arr.length + args.$slice);\n else\n arr.splice(args.$slice);\n }\n // detect change\n return oldsize != arr.length || !isEqual(prev, arr);\n }, { descendArray: true, buildGraph: true });\n }));\n};\n","import { isEqual } from \"../../util\";\nimport { applyUpdate, clone, walkExpression } from \"./_internal\";\n/** Replaces the value of a field with the specified value. */\nexport const $set = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, (val, node, queries) => {\n return applyUpdate(obj, node, queries, (o, k) => {\n if (isEqual(o[k], val))\n return false;\n o[k] = clone(options.cloneMode, val);\n return true;\n }, { buildGraph: true });\n });\n};\n","import { has } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\nimport { $set } from \"./set\";\n/** Replaces the value of a field with the specified value. */\nexport const $rename = (obj, expr, arrayFilters = [], options = {}) => {\n const res = [];\n const changed = walkExpression(expr, arrayFilters, options, ((val, node, queries) => {\n return applyUpdate(obj, node, queries, (o, k) => {\n if (!has(o, k))\n return false;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n res.push(...$set(obj, { [val]: o[k] }, arrayFilters, options));\n delete o[k];\n return true;\n });\n }));\n return Array.from(new Set(changed.concat(res)));\n};\n","import { has, isArray } from \"../../util\";\nimport { applyUpdate, walkExpression } from \"./_internal\";\n/** Deletes a particular field */\nexport const $unset = (obj, expr, arrayFilters = [], options = {}) => {\n return walkExpression(expr, arrayFilters, options, (_, node, queries) => {\n return applyUpdate(obj, node, queries, (o, k) => {\n if (!has(o, k))\n return false;\n if (isArray(o)) {\n o[k] = null;\n }\n else {\n delete o[k];\n }\n return true;\n });\n });\n};\n","import { initOptions } from \"./core\";\nimport * as UPDATE_OPERATORS from \"./operators/update\";\nimport { Query } from \"./query\";\nimport { assert, has } from \"./util\";\n/**\n * Creates a new updater function with default options.\n * @param defaultOptions The default options. Defaults to no cloning with strict mode off for queries.\n * @returns {Updater}\n */\nexport function createUpdater(defaultOptions) {\n return (obj, expr, arrayFilters = [], conditions = {}, options = {}) => {\n const opts = Object.assign({ cloneMode: \"copy\" }, defaultOptions, options);\n Object.assign(opts, {\n queryOptions: initOptions(Object.assign({ useStrictMode: false }, opts === null || opts === void 0 ? void 0 : opts.queryOptions))\n });\n arrayFilters = arrayFilters || [];\n conditions = conditions || {};\n // validate operator\n const entry = Object.entries(expr);\n // check for single entry\n assert(entry.length === 1, \"Update expression must contain only one operator.\");\n const [op, args] = entry[0];\n // check operator exists\n assert(has(UPDATE_OPERATORS, op), `Update operator '${op}' is not supported.`);\n /*eslint import/namespace: ['error', { allowComputed: true }]*/\n const mutate = UPDATE_OPERATORS[op];\n // validate condition\n if (Object.keys(conditions).length) {\n const q = new Query(conditions, opts.queryOptions);\n if (!q.test(obj))\n return [];\n }\n // apply updates\n return mutate(obj, args, arrayFilters, opts);\n };\n}\n/**\n * Updates the given object with the expression.\n *\n * @param obj The object to update.\n * @param expr The update expressions.\n * @param arrayFilters Filters to apply to nested items.\n * @param conditions Conditions to validate before performing update.\n * @param options Update options to override defaults.\n * @returns {Array} A list of modified field paths in the object.\n */\nexport const updateObject = createUpdater({});\n","/**\n * Custom build of the mingo updater for smaller build size\n */\n\nimport { createUpdater } from \"mingo/updater\";\nimport { clone } from \"../utils/index.js\";\nvar updater;\nexport function mingoUpdater(d, op) {\n if (!updater) {\n var updateObject = createUpdater({\n cloneMode: \"none\"\n });\n updater = (d, op) => {\n var cloned = clone(d);\n updateObject(cloned, op);\n return cloned;\n };\n }\n return updater(d, op);\n}\n//# sourceMappingURL=mingo-updater.js.map","/**\n * this plugin allows delta-updates with mongo-like-syntax\n * It's using mingo internally\n * @link https://github.com/kofrasa/mingo\n */\n\nimport { mingoUpdater } from \"./mingo-updater.js\";\nexport function incrementalUpdate(updateObj) {\n return this.incrementalModify(docData => {\n var newDocData = mingoUpdater(docData, updateObj);\n return newDocData;\n });\n}\nexport function update(updateObj) {\n var oldDocData = this._data;\n var newDocData = mingoUpdater(oldDocData, updateObj);\n return this._saveData(newDocData, oldDocData);\n}\nexport function RxQueryUpdate(updateObj) {\n return this.exec().then(docs => {\n if (!docs) {\n return null;\n }\n if (Array.isArray(docs)) {\n return Promise.all(docs.map(doc => doc.update(updateObj))).then(() => docs);\n } else {\n // via findOne()\n return docs.update(updateObj).then(() => docs);\n }\n });\n}\nexport var RxDBUpdatePlugin = {\n name: 'update',\n rxdb: true,\n prototypes: {\n RxDocument: proto => {\n proto.update = update;\n proto.incrementalUpdate = incrementalUpdate;\n },\n RxQuery: proto => {\n proto.update = RxQueryUpdate;\n }\n }\n};\n//# sourceMappingURL=index.js.map","import { RxDBPreparePlugin, prepareCollections } from '@ngx-odm/rxdb/prepare';\nimport { NgxRxdbUtils } from '@ngx-odm/rxdb/utils';\nimport { addRxPlugin, createRxDatabase } from 'rxdb';\nimport { RxDBPUseQueryParamsPlugin } from '@ngx-odm/rxdb/query-params';\nimport { RxDBCleanupPlugin } from 'rxdb/plugins/cleanup';\nimport { RxDBJsonDumpPlugin } from 'rxdb/plugins/json-dump';\nimport { RxDBLocalDocumentsPlugin } from 'rxdb/plugins/local-documents';\nimport { RxDBMigrationPlugin } from 'rxdb/plugins/migration-schema';\nimport { RxDBUpdatePlugin } from 'rxdb/plugins/update';\n\nconst { logger: logger$1 } = NgxRxdbUtils;\nasync function loadRxDBPlugins(plugins = []) {\n try {\n addRxPlugin(RxDBLocalDocumentsPlugin);\n addRxPlugin(RxDBJsonDumpPlugin);\n addRxPlugin(RxDBMigrationPlugin);\n addRxPlugin(RxDBUpdatePlugin);\n addRxPlugin(RxDBCleanupPlugin);\n addRxPlugin(RxDBPreparePlugin);\n addRxPlugin(RxDBPUseQueryParamsPlugin);\n for (const plugin of plugins) {\n addRxPlugin(plugin);\n }\n logger$1.log('rxdb plugins loaded');\n }\n catch (error) {\n throw new Error(error.message ?? error);\n }\n}\n\nconst { logger } = NgxRxdbUtils;\nclass RxDBService {\n get db() {\n return this.dbInstance;\n }\n get dbOptions() {\n return this.options;\n }\n get collections() {\n return this.db.collections;\n }\n async destroyDb() {\n try {\n await this.db.remove();\n await this.db.destroy();\n this.dbInstance = null;\n logger.log(`database destroy`);\n }\n catch {\n logger.log(`database destroy error`);\n }\n }\n async initDb(config) {\n if (this.dbInstance) {\n return;\n }\n try {\n await loadRxDBPlugins(config.options?.plugins);\n this.dbInstance = await createRxDatabase(config);\n this.options = config;\n logger.log(`created database \"${this.db.name}\" with config \"${JSON.stringify(config)}\"`);\n if (config?.options?.schemas) {\n const bulk = await this.initCollections(config.options.schemas);\n logger.log(`created ${Object.keys(bulk).length} collections bulk: ${Object.keys(bulk)}`);\n }\n }\n catch (error) {\n logger.log('Error initializing the database:', error);\n throw error;\n }\n }\n async initCollections(colConfigs) {\n try {\n const colCreators = await prepareCollections(colConfigs);\n return await this.db.addCollections(colCreators);\n }\n catch (error) {\n logger.log('Error initializing collection(s)', error);\n throw error;\n }\n }\n}\n\nexport { RxDBService, loadRxDBPlugins };\n//# sourceMappingURL=ngx-odm-rxdb-core.mjs.map\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k decoder.decode(buffer);\nconst encoder = new TextEncoder();\n/** @ignore */\nexport const encodeUtf8 = (value) => encoder.encode(value);\n\n//# sourceMappingURL=utf8.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nconst [BigIntCtor, BigIntAvailable] = (() => {\n const BigIntUnavailableError = () => { throw new Error('BigInt is not available in this environment'); };\n function BigIntUnavailable() { throw BigIntUnavailableError(); }\n BigIntUnavailable.asIntN = () => { throw BigIntUnavailableError(); };\n BigIntUnavailable.asUintN = () => { throw BigIntUnavailableError(); };\n return typeof BigInt !== 'undefined' ? [BigInt, true] : [BigIntUnavailable, false];\n})();\n/** @ignore */\nconst [BigInt64ArrayCtor, BigInt64ArrayAvailable] = (() => {\n const BigInt64ArrayUnavailableError = () => { throw new Error('BigInt64Array is not available in this environment'); };\n class BigInt64ArrayUnavailable {\n static get BYTES_PER_ELEMENT() { return 8; }\n static of() { throw BigInt64ArrayUnavailableError(); }\n static from() { throw BigInt64ArrayUnavailableError(); }\n constructor() { throw BigInt64ArrayUnavailableError(); }\n }\n return typeof BigInt64Array !== 'undefined' ? [BigInt64Array, true] : [BigInt64ArrayUnavailable, false];\n})();\n/** @ignore */\nconst [BigUint64ArrayCtor, BigUint64ArrayAvailable] = (() => {\n const BigUint64ArrayUnavailableError = () => { throw new Error('BigUint64Array is not available in this environment'); };\n class BigUint64ArrayUnavailable {\n static get BYTES_PER_ELEMENT() { return 8; }\n static of() { throw BigUint64ArrayUnavailableError(); }\n static from() { throw BigUint64ArrayUnavailableError(); }\n constructor() { throw BigUint64ArrayUnavailableError(); }\n }\n return typeof BigUint64Array !== 'undefined' ? [BigUint64Array, true] : [BigUint64ArrayUnavailable, false];\n})();\nexport { BigIntCtor as BigInt, BigIntAvailable };\nexport { BigInt64ArrayCtor as BigInt64Array, BigInt64ArrayAvailable };\nexport { BigUint64ArrayCtor as BigUint64Array, BigUint64ArrayAvailable };\n/** @ignore */ const isNumber = (x) => typeof x === 'number';\n/** @ignore */ const isBoolean = (x) => typeof x === 'boolean';\n/** @ignore */ const isFunction = (x) => typeof x === 'function';\n/** @ignore */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (x) => x != null && Object(x) === x;\n/** @ignore */\nexport const isPromise = (x) => {\n return isObject(x) && isFunction(x.then);\n};\n/** @ignore */\nexport const isObservable = (x) => {\n return isObject(x) && isFunction(x.subscribe);\n};\n/** @ignore */\nexport const isIterable = (x) => {\n return isObject(x) && isFunction(x[Symbol.iterator]);\n};\n/** @ignore */\nexport const isAsyncIterable = (x) => {\n return isObject(x) && isFunction(x[Symbol.asyncIterator]);\n};\n/** @ignore */\nexport const isArrowJSON = (x) => {\n return isObject(x) && isObject(x['schema']);\n};\n/** @ignore */\nexport const isArrayLike = (x) => {\n return isObject(x) && isNumber(x['length']);\n};\n/** @ignore */\nexport const isIteratorResult = (x) => {\n return isObject(x) && ('done' in x) && ('value' in x);\n};\n/** @ignore */\nexport const isUnderlyingSink = (x) => {\n return isObject(x) &&\n isFunction(x['abort']) &&\n isFunction(x['close']) &&\n isFunction(x['start']) &&\n isFunction(x['write']);\n};\n/** @ignore */\nexport const isFileHandle = (x) => {\n return isObject(x) && isFunction(x['stat']) && isNumber(x['fd']);\n};\n/** @ignore */\nexport const isFSReadStream = (x) => {\n return isReadableNodeStream(x) && isNumber(x['bytesRead']);\n};\n/** @ignore */\nexport const isFetchResponse = (x) => {\n return isObject(x) && isReadableDOMStream(x['body']);\n};\nconst isReadableInterop = (x) => ('_getDOMStream' in x && '_getNodeStream' in x);\n/** @ignore */\nexport const isWritableDOMStream = (x) => {\n return isObject(x) &&\n isFunction(x['abort']) &&\n isFunction(x['getWriter']) &&\n !isReadableInterop(x);\n};\n/** @ignore */\nexport const isReadableDOMStream = (x) => {\n return isObject(x) &&\n isFunction(x['cancel']) &&\n isFunction(x['getReader']) &&\n !isReadableInterop(x);\n};\n/** @ignore */\nexport const isWritableNodeStream = (x) => {\n return isObject(x) &&\n isFunction(x['end']) &&\n isFunction(x['write']) &&\n isBoolean(x['writable']) &&\n !isReadableInterop(x);\n};\n/** @ignore */\nexport const isReadableNodeStream = (x) => {\n return isObject(x) &&\n isFunction(x['read']) &&\n isFunction(x['pipe']) &&\n isBoolean(x['readable']) &&\n !isReadableInterop(x);\n};\n/** @ignore */\nexport const isFlatbuffersByteBuffer = (x) => {\n return isObject(x) &&\n isFunction(x['clear']) &&\n isFunction(x['bytes']) &&\n isFunction(x['position']) &&\n isFunction(x['setPosition']) &&\n isFunction(x['capacity']) &&\n isFunction(x['getBufferIdentifier']) &&\n isFunction(x['createLong']);\n};\n\n//# sourceMappingURL=compat.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { encodeUtf8 } from '../util/utf8.mjs';\nimport { isPromise, isIterable, isAsyncIterable, isIteratorResult, isFlatbuffersByteBuffer, BigInt64Array, BigUint64Array } from './compat.mjs';\n/** @ignore */\nconst SharedArrayBuf = (typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : ArrayBuffer);\n/** @ignore */\nfunction collapseContiguousByteRanges(chunks) {\n const result = chunks[0] ? [chunks[0]] : [];\n let xOffset, yOffset, xLen, yLen;\n for (let x, y, i = 0, j = 0, n = chunks.length; ++i < n;) {\n x = result[j];\n y = chunks[i];\n // continue if x and y don't share the same underlying ArrayBuffer, or if x isn't before y\n if (!x || !y || x.buffer !== y.buffer || y.byteOffset < x.byteOffset) {\n y && (result[++j] = y);\n continue;\n }\n ({ byteOffset: xOffset, byteLength: xLen } = x);\n ({ byteOffset: yOffset, byteLength: yLen } = y);\n // continue if the byte ranges of x and y aren't contiguous\n if ((xOffset + xLen) < yOffset || (yOffset + yLen) < xOffset) {\n y && (result[++j] = y);\n continue;\n }\n result[j] = new Uint8Array(x.buffer, xOffset, yOffset - xOffset + yLen);\n }\n return result;\n}\n/** @ignore */\nexport function memcpy(target, source, targetByteOffset = 0, sourceByteLength = source.byteLength) {\n const targetByteLength = target.byteLength;\n const dst = new Uint8Array(target.buffer, target.byteOffset, targetByteLength);\n const src = new Uint8Array(source.buffer, source.byteOffset, Math.min(sourceByteLength, targetByteLength));\n dst.set(src, targetByteOffset);\n return target;\n}\n/** @ignore */\nexport function joinUint8Arrays(chunks, size) {\n // collapse chunks that share the same underlying ArrayBuffer and whose byte ranges overlap,\n // to avoid unnecessarily copying the bytes to do this buffer join. This is a common case during\n // streaming, where we may be reading partial byte ranges out of the same underlying ArrayBuffer\n const result = collapseContiguousByteRanges(chunks);\n const byteLength = result.reduce((x, b) => x + b.byteLength, 0);\n let source, sliced, buffer;\n let offset = 0, index = -1;\n const length = Math.min(size || Number.POSITIVE_INFINITY, byteLength);\n for (const n = result.length; ++index < n;) {\n source = result[index];\n sliced = source.subarray(0, Math.min(source.length, length - offset));\n if (length <= (offset + sliced.length)) {\n if (sliced.length < source.length) {\n result[index] = source.subarray(sliced.length);\n }\n else if (sliced.length === source.length) {\n index++;\n }\n buffer ? memcpy(buffer, sliced, offset) : (buffer = sliced);\n break;\n }\n memcpy(buffer || (buffer = new Uint8Array(length)), sliced, offset);\n offset += sliced.length;\n }\n return [buffer || new Uint8Array(0), result.slice(index), byteLength - (buffer ? buffer.byteLength : 0)];\n}\n/** @ignore */\nexport function toArrayBufferView(ArrayBufferViewCtor, input) {\n let value = isIteratorResult(input) ? input.value : input;\n if (value instanceof ArrayBufferViewCtor) {\n if (ArrayBufferViewCtor === Uint8Array) {\n // Node's `Buffer` class passes the `instanceof Uint8Array` check, but we need\n // a real Uint8Array, since Buffer#slice isn't the same as Uint8Array#slice :/\n return new ArrayBufferViewCtor(value.buffer, value.byteOffset, value.byteLength);\n }\n return value;\n }\n if (!value) {\n return new ArrayBufferViewCtor(0);\n }\n if (typeof value === 'string') {\n value = encodeUtf8(value);\n }\n if (value instanceof ArrayBuffer) {\n return new ArrayBufferViewCtor(value);\n }\n if (value instanceof SharedArrayBuf) {\n return new ArrayBufferViewCtor(value);\n }\n if (isFlatbuffersByteBuffer(value)) {\n return toArrayBufferView(ArrayBufferViewCtor, value.bytes());\n }\n return !ArrayBuffer.isView(value) ? ArrayBufferViewCtor.from(value) : (value.byteLength <= 0 ? new ArrayBufferViewCtor(0)\n : new ArrayBufferViewCtor(value.buffer, value.byteOffset, value.byteLength / ArrayBufferViewCtor.BYTES_PER_ELEMENT));\n}\n/** @ignore */ export const toInt8Array = (input) => toArrayBufferView(Int8Array, input);\n/** @ignore */ export const toInt16Array = (input) => toArrayBufferView(Int16Array, input);\n/** @ignore */ export const toInt32Array = (input) => toArrayBufferView(Int32Array, input);\n/** @ignore */ export const toBigInt64Array = (input) => toArrayBufferView(BigInt64Array, input);\n/** @ignore */ export const toUint8Array = (input) => toArrayBufferView(Uint8Array, input);\n/** @ignore */ export const toUint16Array = (input) => toArrayBufferView(Uint16Array, input);\n/** @ignore */ export const toUint32Array = (input) => toArrayBufferView(Uint32Array, input);\n/** @ignore */ export const toBigUint64Array = (input) => toArrayBufferView(BigUint64Array, input);\n/** @ignore */ export const toFloat32Array = (input) => toArrayBufferView(Float32Array, input);\n/** @ignore */ export const toFloat64Array = (input) => toArrayBufferView(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArray = (input) => toArrayBufferView(Uint8ClampedArray, input);\n/** @ignore */\nconst pump = (iterator) => { iterator.next(); return iterator; };\n/** @ignore */\nexport function* toArrayBufferViewIterator(ArrayCtor, source) {\n const wrap = function* (x) { yield x; };\n const buffers = (typeof source === 'string') ? wrap(source)\n : (ArrayBuffer.isView(source)) ? wrap(source)\n : (source instanceof ArrayBuffer) ? wrap(source)\n : (source instanceof SharedArrayBuf) ? wrap(source)\n : !isIterable(source) ? wrap(source) : source;\n yield* pump((function* (it) {\n let r = null;\n do {\n r = it.next(yield toArrayBufferView(ArrayCtor, r));\n } while (!r.done);\n })(buffers[Symbol.iterator]()));\n return new ArrayCtor();\n}\n/** @ignore */ export const toInt8ArrayIterator = (input) => toArrayBufferViewIterator(Int8Array, input);\n/** @ignore */ export const toInt16ArrayIterator = (input) => toArrayBufferViewIterator(Int16Array, input);\n/** @ignore */ export const toInt32ArrayIterator = (input) => toArrayBufferViewIterator(Int32Array, input);\n/** @ignore */ export const toUint8ArrayIterator = (input) => toArrayBufferViewIterator(Uint8Array, input);\n/** @ignore */ export const toUint16ArrayIterator = (input) => toArrayBufferViewIterator(Uint16Array, input);\n/** @ignore */ export const toUint32ArrayIterator = (input) => toArrayBufferViewIterator(Uint32Array, input);\n/** @ignore */ export const toFloat32ArrayIterator = (input) => toArrayBufferViewIterator(Float32Array, input);\n/** @ignore */ export const toFloat64ArrayIterator = (input) => toArrayBufferViewIterator(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArrayIterator = (input) => toArrayBufferViewIterator(Uint8ClampedArray, input);\n/** @ignore */\nexport function toArrayBufferViewAsyncIterator(ArrayCtor, source) {\n return __asyncGenerator(this, arguments, function* toArrayBufferViewAsyncIterator_1() {\n // if a Promise, unwrap the Promise and iterate the resolved value\n if (isPromise(source)) {\n return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(toArrayBufferViewAsyncIterator(ArrayCtor, yield __await(source))))));\n }\n const wrap = function (x) { return __asyncGenerator(this, arguments, function* () { yield yield __await(yield __await(x)); }); };\n const emit = function (source) {\n return __asyncGenerator(this, arguments, function* () {\n yield __await(yield* __asyncDelegator(__asyncValues(pump((function* (it) {\n let r = null;\n do {\n r = it.next(yield r === null || r === void 0 ? void 0 : r.value);\n } while (!r.done);\n })(source[Symbol.iterator]())))));\n });\n };\n const buffers = (typeof source === 'string') ? wrap(source) // if string, wrap in an AsyncIterableIterator\n : (ArrayBuffer.isView(source)) ? wrap(source) // if TypedArray, wrap in an AsyncIterableIterator\n : (source instanceof ArrayBuffer) ? wrap(source) // if ArrayBuffer, wrap in an AsyncIterableIterator\n : (source instanceof SharedArrayBuf) ? wrap(source) // if SharedArrayBuffer, wrap in an AsyncIterableIterator\n : isIterable(source) ? emit(source) // If Iterable, wrap in an AsyncIterableIterator and compose the `next` values\n : !isAsyncIterable(source) ? wrap(source) // If not an AsyncIterable, treat as a sentinel and wrap in an AsyncIterableIterator\n : source; // otherwise if AsyncIterable, use it\n yield __await(// otherwise if AsyncIterable, use it\n yield* __asyncDelegator(__asyncValues(pump((function (it) {\n return __asyncGenerator(this, arguments, function* () {\n let r = null;\n do {\n r = yield __await(it.next(yield yield __await(toArrayBufferView(ArrayCtor, r))));\n } while (!r.done);\n });\n })(buffers[Symbol.asyncIterator]())))));\n return yield __await(new ArrayCtor());\n });\n}\n/** @ignore */ export const toInt8ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Int8Array, input);\n/** @ignore */ export const toInt16ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Int16Array, input);\n/** @ignore */ export const toInt32ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Int32Array, input);\n/** @ignore */ export const toUint8ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint8Array, input);\n/** @ignore */ export const toUint16ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint16Array, input);\n/** @ignore */ export const toUint32ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint32Array, input);\n/** @ignore */ export const toFloat32ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Float32Array, input);\n/** @ignore */ export const toFloat64ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint8ClampedArray, input);\n/** @ignore */\nexport function rebaseValueOffsets(offset, length, valueOffsets) {\n // If we have a non-zero offset, create a new offsets array with the values\n // shifted by the start offset, such that the new start offset is 0\n if (offset !== 0) {\n valueOffsets = valueOffsets.slice(0, length + 1);\n for (let i = -1; ++i <= length;) {\n valueOffsets[i] += offset;\n }\n }\n return valueOffsets;\n}\n/** @ignore */\nexport function compareArrayLike(a, b) {\n let i = 0;\n const n = a.length;\n if (n !== b.length) {\n return false;\n }\n if (n > 0) {\n do {\n if (a[i] !== b[i]) {\n return false;\n }\n } while (++i < n);\n }\n return true;\n}\n\n//# sourceMappingURL=buffer.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __asyncGenerator, __await, __awaiter } from \"tslib\";\nimport { toUint8Array, joinUint8Arrays, toUint8ArrayIterator, toUint8ArrayAsyncIterator } from '../util/buffer.mjs';\n/** @ignore */\nexport default {\n fromIterable(source) {\n return pump(fromIterable(source));\n },\n fromAsyncIterable(source) {\n return pump(fromAsyncIterable(source));\n },\n fromDOMStream(source) {\n return pump(fromDOMStream(source));\n },\n fromNodeStream(stream) {\n return pump(fromNodeStream(stream));\n },\n // @ts-ignore\n toDOMStream(source, options) {\n throw new Error(`\"toDOMStream\" not available in this environment`);\n },\n // @ts-ignore\n toNodeStream(source, options) {\n throw new Error(`\"toNodeStream\" not available in this environment`);\n },\n};\n/** @ignore */\nconst pump = (iterator) => { iterator.next(); return iterator; };\n/** @ignore */\nfunction* fromIterable(source) {\n let done, threw = false;\n let buffers = [], buffer;\n let cmd, size, bufferLength = 0;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before creating the source Iterator\n ({ cmd, size } = yield null);\n // initialize the iterator\n const it = toUint8ArrayIterator(source)[Symbol.iterator]();\n try {\n do {\n // read the next value\n ({ done, value: buffer } = Number.isNaN(size - bufferLength) ?\n it.next() : it.next(size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n }\n catch (e) {\n (threw = true) && (typeof it.throw === 'function') && (it.throw(e));\n }\n finally {\n (threw === false) && (typeof it.return === 'function') && (it.return(null));\n }\n return null;\n}\n/** @ignore */\nfunction fromAsyncIterable(source) {\n return __asyncGenerator(this, arguments, function* fromAsyncIterable_1() {\n let done, threw = false;\n let buffers = [], buffer;\n let cmd, size, bufferLength = 0;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before creating the source AsyncIterator\n ({ cmd, size } = (yield yield __await(null)));\n // initialize the iterator\n const it = toUint8ArrayAsyncIterator(source)[Symbol.asyncIterator]();\n try {\n do {\n // read the next value\n ({ done, value: buffer } = Number.isNaN(size - bufferLength)\n ? yield __await(it.next())\n : yield __await(it.next(size - bufferLength)));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield yield __await(byteRange()));\n } while (size < bufferLength);\n }\n } while (!done);\n }\n catch (e) {\n (threw = true) && (typeof it.throw === 'function') && (yield __await(it.throw(e)));\n }\n finally {\n (threw === false) && (typeof it.return === 'function') && (yield __await(it.return(new Uint8Array(0))));\n }\n return yield __await(null);\n });\n}\n// All this manual Uint8Array chunk management can be avoided if/when engines\n// add support for ArrayBuffer.transfer() or ArrayBuffer.prototype.realloc():\n// https://github.com/domenic/proposal-arraybuffer-transfer\n/** @ignore */\nfunction fromDOMStream(source) {\n return __asyncGenerator(this, arguments, function* fromDOMStream_1() {\n let done = false, threw = false;\n let buffers = [], buffer;\n let cmd, size, bufferLength = 0;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before we establish the ReadableStream lock\n ({ cmd, size } = yield yield __await(null));\n // initialize the reader and lock the stream\n const it = new AdaptiveByteReader(source);\n try {\n do {\n // read the next value\n ({ done, value: buffer } = Number.isNaN(size - bufferLength)\n ? yield __await(it['read']())\n : yield __await(it['read'](size - bufferLength)));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(toUint8Array(buffer));\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield yield __await(byteRange()));\n } while (size < bufferLength);\n }\n } while (!done);\n }\n catch (e) {\n (threw = true) && (yield __await(it['cancel'](e)));\n }\n finally {\n (threw === false) ? (yield __await(it['cancel']()))\n : source['locked'] && it.releaseLock();\n }\n return yield __await(null);\n });\n}\n/** @ignore */\nclass AdaptiveByteReader {\n constructor(source) {\n this.source = source;\n this.reader = null;\n this.reader = this.source['getReader']();\n // We have to catch and swallow errors here to avoid uncaught promise rejection exceptions\n // that seem to be raised when we call `releaseLock()` on this reader. I'm still mystified\n // about why these errors are raised, but I'm sure there's some important spec reason that\n // I haven't considered. I hate to employ such an anti-pattern here, but it seems like the\n // only solution in this case :/\n this.reader['closed'].catch(() => { });\n }\n get closed() {\n return this.reader ? this.reader['closed'].catch(() => { }) : Promise.resolve();\n }\n releaseLock() {\n if (this.reader) {\n this.reader.releaseLock();\n }\n this.reader = null;\n }\n cancel(reason) {\n return __awaiter(this, void 0, void 0, function* () {\n const { reader, source } = this;\n reader && (yield reader['cancel'](reason).catch(() => { }));\n source && (source['locked'] && this.releaseLock());\n });\n }\n read(size) {\n return __awaiter(this, void 0, void 0, function* () {\n if (size === 0) {\n return { done: this.reader == null, value: new Uint8Array(0) };\n }\n const result = yield this.reader.read();\n !result.done && (result.value = toUint8Array(result));\n return result;\n });\n }\n}\n/** @ignore */\nconst onEvent = (stream, event) => {\n const handler = (_) => resolve([event, _]);\n let resolve;\n return [event, handler, new Promise((r) => (resolve = r) && stream['once'](event, handler))];\n};\n/** @ignore */\nfunction fromNodeStream(stream) {\n return __asyncGenerator(this, arguments, function* fromNodeStream_1() {\n const events = [];\n let event = 'error';\n let done = false, err = null;\n let cmd, size, bufferLength = 0;\n let buffers = [], buffer;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before we\n // add the listener for the source stream's 'readable' event.\n ({ cmd, size } = yield yield __await(null));\n // ignore stdin if it's a TTY\n if (stream['isTTY']) {\n yield yield __await(new Uint8Array(0));\n return yield __await(null);\n }\n try {\n // initialize the stream event handlers\n events[0] = onEvent(stream, 'end');\n events[1] = onEvent(stream, 'error');\n do {\n events[2] = onEvent(stream, 'readable');\n // wait on the first message event from the stream\n [event, err] = yield __await(Promise.race(events.map((x) => x[2])));\n // if the stream emitted an Error, rethrow it\n if (event === 'error') {\n break;\n }\n if (!(done = event === 'end')) {\n // If the size is NaN, request to read everything in the stream's internal buffer\n if (!Number.isFinite(size - bufferLength)) {\n buffer = toUint8Array(stream['read']());\n }\n else {\n buffer = toUint8Array(stream['read'](size - bufferLength));\n // If the byteLength is 0, then the requested amount is more than the stream has\n // in its internal buffer. In this case the stream needs a \"kick\" to tell it to\n // continue emitting readable events, so request to read everything the stream\n // has in its internal buffer right now.\n if (buffer.byteLength < (size - bufferLength)) {\n buffer = toUint8Array(stream['read']());\n }\n }\n // if chunk is not null or empty, push it onto the queue\n if (buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield yield __await(byteRange()));\n } while (size < bufferLength);\n }\n } while (!done);\n }\n finally {\n yield __await(cleanup(events, event === 'error' ? err : null));\n }\n return yield __await(null);\n function cleanup(events, err) {\n buffer = buffers = null;\n return new Promise((resolve, reject) => {\n for (const [evt, fn] of events) {\n stream['off'](evt, fn);\n }\n try {\n // Some stream implementations don't call the destroy callback,\n // because it's really a node-internal API. Just calling `destroy`\n // here should be enough to conform to the ReadableStream contract\n const destroy = stream['destroy'];\n destroy && destroy.call(stream, err);\n err = undefined;\n }\n catch (e) {\n err = e || err;\n }\n finally {\n err != null ? reject(err) : resolve();\n }\n });\n }\n });\n}\n\n//# sourceMappingURL=adapters.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n////\n//\n// A few enums copied from `fb/Schema.ts` and `fb/Message.ts` because Webpack\n// v4 doesn't seem to be able to tree-shake the rest of those exports.\n//\n// We will have to keep these enums in sync when we re-generate the flatbuffers\n// code from the shchemas. See js/DEVELOP.md for info on how to run flatbuffers\n// code generation.\n//\n////\n/**\n * Logical types, vector layouts, and schemas\n *\n * @enum {number}\n */\nexport var MetadataVersion;\n(function (MetadataVersion) {\n /**\n * 0.1.0 (October 2016).\n */\n MetadataVersion[MetadataVersion[\"V1\"] = 0] = \"V1\";\n /**\n * 0.2.0 (February 2017). Non-backwards compatible with V1.\n */\n MetadataVersion[MetadataVersion[\"V2\"] = 1] = \"V2\";\n /**\n * 0.3.0 -> 0.7.1 (May - December 2017). Non-backwards compatible with V2.\n */\n MetadataVersion[MetadataVersion[\"V3\"] = 2] = \"V3\";\n /**\n * >= 0.8.0 (December 2017). Non-backwards compatible with V3.\n */\n MetadataVersion[MetadataVersion[\"V4\"] = 3] = \"V4\";\n /**\n * >= 1.0.0 (July 2020. Backwards compatible with V4 (V5 readers can read V4\n * metadata and IPC messages). Implementations are recommended to provide a\n * V4 compatibility mode with V5 format changes disabled.\n *\n * Incompatible changes between V4 and V5:\n * - Union buffer layout has changed. In V5, Unions don't have a validity\n * bitmap buffer.\n */\n MetadataVersion[MetadataVersion[\"V5\"] = 4] = \"V5\";\n})(MetadataVersion || (MetadataVersion = {}));\n/**\n * @enum {number}\n */\nexport var UnionMode;\n(function (UnionMode) {\n UnionMode[UnionMode[\"Sparse\"] = 0] = \"Sparse\";\n UnionMode[UnionMode[\"Dense\"] = 1] = \"Dense\";\n})(UnionMode || (UnionMode = {}));\n/**\n * @enum {number}\n */\nexport var Precision;\n(function (Precision) {\n Precision[Precision[\"HALF\"] = 0] = \"HALF\";\n Precision[Precision[\"SINGLE\"] = 1] = \"SINGLE\";\n Precision[Precision[\"DOUBLE\"] = 2] = \"DOUBLE\";\n})(Precision || (Precision = {}));\n/**\n * @enum {number}\n */\nexport var DateUnit;\n(function (DateUnit) {\n DateUnit[DateUnit[\"DAY\"] = 0] = \"DAY\";\n DateUnit[DateUnit[\"MILLISECOND\"] = 1] = \"MILLISECOND\";\n})(DateUnit || (DateUnit = {}));\n/**\n * @enum {number}\n */\nexport var TimeUnit;\n(function (TimeUnit) {\n TimeUnit[TimeUnit[\"SECOND\"] = 0] = \"SECOND\";\n TimeUnit[TimeUnit[\"MILLISECOND\"] = 1] = \"MILLISECOND\";\n TimeUnit[TimeUnit[\"MICROSECOND\"] = 2] = \"MICROSECOND\";\n TimeUnit[TimeUnit[\"NANOSECOND\"] = 3] = \"NANOSECOND\";\n})(TimeUnit || (TimeUnit = {}));\n/**\n * @enum {number}\n */\nexport var IntervalUnit;\n(function (IntervalUnit) {\n IntervalUnit[IntervalUnit[\"YEAR_MONTH\"] = 0] = \"YEAR_MONTH\";\n IntervalUnit[IntervalUnit[\"DAY_TIME\"] = 1] = \"DAY_TIME\";\n IntervalUnit[IntervalUnit[\"MONTH_DAY_NANO\"] = 2] = \"MONTH_DAY_NANO\";\n})(IntervalUnit || (IntervalUnit = {}));\n/**\n * ----------------------------------------------------------------------\n * The root Message type\n * This union enables us to easily send different message types without\n * redundant storage, and in the future we can easily add new message types.\n *\n * Arrow implementations do not need to implement all of the message types,\n * which may include experimental metadata types. For maximum compatibility,\n * it is best to send data using RecordBatch\n *\n * @enum {number}\n */\nexport var MessageHeader;\n(function (MessageHeader) {\n MessageHeader[MessageHeader[\"NONE\"] = 0] = \"NONE\";\n MessageHeader[MessageHeader[\"Schema\"] = 1] = \"Schema\";\n MessageHeader[MessageHeader[\"DictionaryBatch\"] = 2] = \"DictionaryBatch\";\n MessageHeader[MessageHeader[\"RecordBatch\"] = 3] = \"RecordBatch\";\n MessageHeader[MessageHeader[\"Tensor\"] = 4] = \"Tensor\";\n MessageHeader[MessageHeader[\"SparseTensor\"] = 5] = \"SparseTensor\";\n})(MessageHeader || (MessageHeader = {}));\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only enum values 0-17 (NONE through Map) are written to an Arrow\n * IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport var Type;\n(function (Type) {\n Type[Type[\"NONE\"] = 0] = \"NONE\";\n Type[Type[\"Null\"] = 1] = \"Null\";\n Type[Type[\"Int\"] = 2] = \"Int\";\n Type[Type[\"Float\"] = 3] = \"Float\";\n Type[Type[\"Binary\"] = 4] = \"Binary\";\n Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n Type[Type[\"Bool\"] = 6] = \"Bool\";\n Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n Type[Type[\"Date\"] = 8] = \"Date\";\n Type[Type[\"Time\"] = 9] = \"Time\";\n Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n Type[Type[\"Interval\"] = 11] = \"Interval\";\n Type[Type[\"List\"] = 12] = \"List\";\n Type[Type[\"Struct\"] = 13] = \"Struct\";\n Type[Type[\"Union\"] = 14] = \"Union\";\n Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n Type[Type[\"Map\"] = 17] = \"Map\";\n Type[Type[\"Dictionary\"] = -1] = \"Dictionary\";\n Type[Type[\"Int8\"] = -2] = \"Int8\";\n Type[Type[\"Int16\"] = -3] = \"Int16\";\n Type[Type[\"Int32\"] = -4] = \"Int32\";\n Type[Type[\"Int64\"] = -5] = \"Int64\";\n Type[Type[\"Uint8\"] = -6] = \"Uint8\";\n Type[Type[\"Uint16\"] = -7] = \"Uint16\";\n Type[Type[\"Uint32\"] = -8] = \"Uint32\";\n Type[Type[\"Uint64\"] = -9] = \"Uint64\";\n Type[Type[\"Float16\"] = -10] = \"Float16\";\n Type[Type[\"Float32\"] = -11] = \"Float32\";\n Type[Type[\"Float64\"] = -12] = \"Float64\";\n Type[Type[\"DateDay\"] = -13] = \"DateDay\";\n Type[Type[\"DateMillisecond\"] = -14] = \"DateMillisecond\";\n Type[Type[\"TimestampSecond\"] = -15] = \"TimestampSecond\";\n Type[Type[\"TimestampMillisecond\"] = -16] = \"TimestampMillisecond\";\n Type[Type[\"TimestampMicrosecond\"] = -17] = \"TimestampMicrosecond\";\n Type[Type[\"TimestampNanosecond\"] = -18] = \"TimestampNanosecond\";\n Type[Type[\"TimeSecond\"] = -19] = \"TimeSecond\";\n Type[Type[\"TimeMillisecond\"] = -20] = \"TimeMillisecond\";\n Type[Type[\"TimeMicrosecond\"] = -21] = \"TimeMicrosecond\";\n Type[Type[\"TimeNanosecond\"] = -22] = \"TimeNanosecond\";\n Type[Type[\"DenseUnion\"] = -23] = \"DenseUnion\";\n Type[Type[\"SparseUnion\"] = -24] = \"SparseUnion\";\n Type[Type[\"IntervalDayTime\"] = -25] = \"IntervalDayTime\";\n Type[Type[\"IntervalYearMonth\"] = -26] = \"IntervalYearMonth\";\n})(Type || (Type = {}));\nexport var BufferType;\n(function (BufferType) {\n /**\n * used in List type, Dense Union and variable length primitive types (String, Binary)\n */\n BufferType[BufferType[\"OFFSET\"] = 0] = \"OFFSET\";\n /**\n * actual data, either wixed width primitive types in slots or variable width delimited by an OFFSET vector\n */\n BufferType[BufferType[\"DATA\"] = 1] = \"DATA\";\n /**\n * Bit vector indicating if each value is null\n */\n BufferType[BufferType[\"VALIDITY\"] = 2] = \"VALIDITY\";\n /**\n * Type vector used in Union type\n */\n BufferType[BufferType[\"TYPE\"] = 3] = \"TYPE\";\n})(BufferType || (BufferType = {}));\n\n//# sourceMappingURL=enum.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BigInt64Array, BigUint64Array } from './compat.mjs';\n/** @ignore */ const undf = void (0);\n/** @ignore */\nexport function valueToString(x) {\n if (x === null) {\n return 'null';\n }\n if (x === undf) {\n return 'undefined';\n }\n switch (typeof x) {\n case 'number': return `${x}`;\n case 'bigint': return `${x}`;\n case 'string': return `\"${x}\"`;\n }\n // If [Symbol.toPrimitive] is implemented (like in BN)\n // use it instead of JSON.stringify(). This ensures we\n // print BigInts, Decimals, and Binary in their native\n // representation\n if (typeof x[Symbol.toPrimitive] === 'function') {\n return x[Symbol.toPrimitive]('string');\n }\n if (ArrayBuffer.isView(x)) {\n if (x instanceof BigInt64Array || x instanceof BigUint64Array) {\n return `[${[...x].map(x => valueToString(x))}]`;\n }\n return `[${x}]`;\n }\n return ArrayBuffer.isView(x) ? `[${x}]` : JSON.stringify(x, (_, y) => typeof y === 'bigint' ? `${y}` : y);\n}\n\n//# sourceMappingURL=pretty.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { toArrayBufferView } from './buffer.mjs';\nimport { BigIntAvailable, BigInt64Array, BigUint64Array } from './compat.mjs';\n/** @ignore */\nexport const isArrowBigNumSymbol = Symbol.for('isArrowBigNum');\n/** @ignore */\nfunction BigNum(x, ...xs) {\n if (xs.length === 0) {\n return Object.setPrototypeOf(toArrayBufferView(this['TypedArray'], x), this.constructor.prototype);\n }\n return Object.setPrototypeOf(new this['TypedArray'](x, ...xs), this.constructor.prototype);\n}\nBigNum.prototype[isArrowBigNumSymbol] = true;\nBigNum.prototype.toJSON = function () { return `\"${bignumToString(this)}\"`; };\nBigNum.prototype.valueOf = function () { return bignumToNumber(this); };\nBigNum.prototype.toString = function () { return bignumToString(this); };\nBigNum.prototype[Symbol.toPrimitive] = function (hint = 'default') {\n switch (hint) {\n case 'number': return bignumToNumber(this);\n case 'string': return bignumToString(this);\n case 'default': return bignumToBigInt(this);\n }\n // @ts-ignore\n return bignumToString(this);\n};\n/** @ignore */\nfunction SignedBigNum(...args) { return BigNum.apply(this, args); }\n/** @ignore */\nfunction UnsignedBigNum(...args) { return BigNum.apply(this, args); }\n/** @ignore */\nfunction DecimalBigNum(...args) { return BigNum.apply(this, args); }\nObject.setPrototypeOf(SignedBigNum.prototype, Object.create(Int32Array.prototype));\nObject.setPrototypeOf(UnsignedBigNum.prototype, Object.create(Uint32Array.prototype));\nObject.setPrototypeOf(DecimalBigNum.prototype, Object.create(Uint32Array.prototype));\nObject.assign(SignedBigNum.prototype, BigNum.prototype, { 'constructor': SignedBigNum, 'signed': true, 'TypedArray': Int32Array, 'BigIntArray': BigInt64Array });\nObject.assign(UnsignedBigNum.prototype, BigNum.prototype, { 'constructor': UnsignedBigNum, 'signed': false, 'TypedArray': Uint32Array, 'BigIntArray': BigUint64Array });\nObject.assign(DecimalBigNum.prototype, BigNum.prototype, { 'constructor': DecimalBigNum, 'signed': true, 'TypedArray': Uint32Array, 'BigIntArray': BigUint64Array });\n/** @ignore */\nfunction bignumToNumber(bn) {\n const { buffer, byteOffset, length, 'signed': signed } = bn;\n const words = new BigUint64Array(buffer, byteOffset, length);\n const negative = signed && words[words.length - 1] & (BigInt(1) << BigInt(63));\n let number = negative ? BigInt(1) : BigInt(0);\n let i = BigInt(0);\n if (!negative) {\n for (const word of words) {\n number += word * (BigInt(1) << (BigInt(32) * i++));\n }\n }\n else {\n for (const word of words) {\n number += ~word * (BigInt(1) << (BigInt(32) * i++));\n }\n number *= BigInt(-1);\n }\n return number;\n}\n/** @ignore */\nexport let bignumToString;\n/** @ignore */\nexport let bignumToBigInt;\nif (!BigIntAvailable) {\n bignumToString = decimalToString;\n bignumToBigInt = bignumToString;\n}\nelse {\n bignumToBigInt = ((a) => a.byteLength === 8 ? new a['BigIntArray'](a.buffer, a.byteOffset, 1)[0] : decimalToString(a));\n bignumToString = ((a) => a.byteLength === 8 ? `${new a['BigIntArray'](a.buffer, a.byteOffset, 1)[0]}` : decimalToString(a));\n}\n/** @ignore */\nfunction decimalToString(a) {\n let digits = '';\n const base64 = new Uint32Array(2);\n let base32 = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2);\n const checks = new Uint32Array((base32 = new Uint16Array(base32).reverse()).buffer);\n let i = -1;\n const n = base32.length - 1;\n do {\n for (base64[0] = base32[i = 0]; i < n;) {\n base32[i++] = base64[1] = base64[0] / 10;\n base64[0] = ((base64[0] - base64[1] * 10) << 16) + base32[i];\n }\n base32[i] = base64[1] = base64[0] / 10;\n base64[0] = base64[0] - base64[1] * 10;\n digits = `${base64[0]}${digits}`;\n } while (checks[0] || checks[1] || checks[2] || checks[3]);\n return digits !== null && digits !== void 0 ? digits : `0`;\n}\n/** @ignore */\nexport class BN {\n /** @nocollapse */\n static new(num, isSigned) {\n switch (isSigned) {\n case true: return new SignedBigNum(num);\n case false: return new UnsignedBigNum(num);\n }\n switch (num.constructor) {\n case Int8Array:\n case Int16Array:\n case Int32Array:\n case BigInt64Array:\n return new SignedBigNum(num);\n }\n if (num.byteLength === 16) {\n return new DecimalBigNum(num);\n }\n return new UnsignedBigNum(num);\n }\n /** @nocollapse */\n static signed(num) {\n return new SignedBigNum(num);\n }\n /** @nocollapse */\n static unsigned(num) {\n return new UnsignedBigNum(num);\n }\n /** @nocollapse */\n static decimal(num) {\n return new DecimalBigNum(num);\n }\n constructor(num, isSigned) {\n return BN.new(num, isSigned);\n }\n}\n\n//# sourceMappingURL=bn.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nvar _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;\nimport { BigInt64Array, BigUint64Array } from './util/compat.mjs';\nimport { Type, Precision, UnionMode, DateUnit, TimeUnit, IntervalUnit } from './enum.mjs';\n/**\n * An abstract base class for classes that encapsulate metadata about each of\n * the logical types that Arrow can represent.\n */\nexport class DataType {\n /** @nocollapse */ static isNull(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Null; }\n /** @nocollapse */ static isInt(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Int; }\n /** @nocollapse */ static isFloat(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Float; }\n /** @nocollapse */ static isBinary(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Binary; }\n /** @nocollapse */ static isUtf8(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Utf8; }\n /** @nocollapse */ static isBool(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Bool; }\n /** @nocollapse */ static isDecimal(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Decimal; }\n /** @nocollapse */ static isDate(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Date; }\n /** @nocollapse */ static isTime(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Time; }\n /** @nocollapse */ static isTimestamp(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Timestamp; }\n /** @nocollapse */ static isInterval(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Interval; }\n /** @nocollapse */ static isList(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.List; }\n /** @nocollapse */ static isStruct(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Struct; }\n /** @nocollapse */ static isUnion(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Union; }\n /** @nocollapse */ static isFixedSizeBinary(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.FixedSizeBinary; }\n /** @nocollapse */ static isFixedSizeList(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.FixedSizeList; }\n /** @nocollapse */ static isMap(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Map; }\n /** @nocollapse */ static isDictionary(x) { return (x === null || x === void 0 ? void 0 : x.typeId) === Type.Dictionary; }\n /** @nocollapse */ static isDenseUnion(x) { return DataType.isUnion(x) && x.mode === UnionMode.Dense; }\n /** @nocollapse */ static isSparseUnion(x) { return DataType.isUnion(x) && x.mode === UnionMode.Sparse; }\n get typeId() { return Type.NONE; }\n}\n_a = Symbol.toStringTag;\nDataType[_a] = ((proto) => {\n proto.children = null;\n proto.ArrayType = Array;\n return proto[Symbol.toStringTag] = 'DataType';\n})(DataType.prototype);\n/** @ignore */\nexport class Null extends DataType {\n toString() { return `Null`; }\n get typeId() { return Type.Null; }\n}\n_b = Symbol.toStringTag;\nNull[_b] = ((proto) => proto[Symbol.toStringTag] = 'Null')(Null.prototype);\n/** @ignore */\nclass Int_ extends DataType {\n constructor(isSigned, bitWidth) {\n super();\n this.isSigned = isSigned;\n this.bitWidth = bitWidth;\n }\n get typeId() { return Type.Int; }\n get ArrayType() {\n switch (this.bitWidth) {\n case 8: return this.isSigned ? Int8Array : Uint8Array;\n case 16: return this.isSigned ? Int16Array : Uint16Array;\n case 32: return this.isSigned ? Int32Array : Uint32Array;\n case 64: return this.isSigned ? BigInt64Array : BigUint64Array;\n }\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n toString() { return `${this.isSigned ? `I` : `Ui`}nt${this.bitWidth}`; }\n}\n_c = Symbol.toStringTag;\nInt_[_c] = ((proto) => {\n proto.isSigned = null;\n proto.bitWidth = null;\n return proto[Symbol.toStringTag] = 'Int';\n})(Int_.prototype);\nexport { Int_ as Int };\n/** @ignore */\nexport class Int8 extends Int_ {\n constructor() { super(true, 8); }\n get ArrayType() { return Int8Array; }\n}\n/** @ignore */\nexport class Int16 extends Int_ {\n constructor() { super(true, 16); }\n get ArrayType() { return Int16Array; }\n}\n/** @ignore */\nexport class Int32 extends Int_ {\n constructor() { super(true, 32); }\n get ArrayType() { return Int32Array; }\n}\n/** @ignore */\nexport class Int64 extends Int_ {\n constructor() { super(true, 64); }\n get ArrayType() { return BigInt64Array; }\n}\n/** @ignore */\nexport class Uint8 extends Int_ {\n constructor() { super(false, 8); }\n get ArrayType() { return Uint8Array; }\n}\n/** @ignore */\nexport class Uint16 extends Int_ {\n constructor() { super(false, 16); }\n get ArrayType() { return Uint16Array; }\n}\n/** @ignore */\nexport class Uint32 extends Int_ {\n constructor() { super(false, 32); }\n get ArrayType() { return Uint32Array; }\n}\n/** @ignore */\nexport class Uint64 extends Int_ {\n constructor() { super(false, 64); }\n get ArrayType() { return BigUint64Array; }\n}\nObject.defineProperty(Int8.prototype, 'ArrayType', { value: Int8Array });\nObject.defineProperty(Int16.prototype, 'ArrayType', { value: Int16Array });\nObject.defineProperty(Int32.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Int64.prototype, 'ArrayType', { value: BigInt64Array });\nObject.defineProperty(Uint8.prototype, 'ArrayType', { value: Uint8Array });\nObject.defineProperty(Uint16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Uint32.prototype, 'ArrayType', { value: Uint32Array });\nObject.defineProperty(Uint64.prototype, 'ArrayType', { value: BigUint64Array });\n/** @ignore */\nexport class Float extends DataType {\n constructor(precision) {\n super();\n this.precision = precision;\n }\n get typeId() { return Type.Float; }\n get ArrayType() {\n switch (this.precision) {\n case Precision.HALF: return Uint16Array;\n case Precision.SINGLE: return Float32Array;\n case Precision.DOUBLE: return Float64Array;\n }\n // @ts-ignore\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n toString() { return `Float${(this.precision << 5) || 16}`; }\n}\n_d = Symbol.toStringTag;\nFloat[_d] = ((proto) => {\n proto.precision = null;\n return proto[Symbol.toStringTag] = 'Float';\n})(Float.prototype);\n/** @ignore */\nexport class Float16 extends Float {\n constructor() { super(Precision.HALF); }\n}\n/** @ignore */\nexport class Float32 extends Float {\n constructor() { super(Precision.SINGLE); }\n}\n/** @ignore */\nexport class Float64 extends Float {\n constructor() { super(Precision.DOUBLE); }\n}\nObject.defineProperty(Float16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Float32.prototype, 'ArrayType', { value: Float32Array });\nObject.defineProperty(Float64.prototype, 'ArrayType', { value: Float64Array });\n/** @ignore */\nexport class Binary extends DataType {\n constructor() {\n super();\n }\n get typeId() { return Type.Binary; }\n toString() { return `Binary`; }\n}\n_e = Symbol.toStringTag;\nBinary[_e] = ((proto) => {\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Binary';\n})(Binary.prototype);\n/** @ignore */\nexport class Utf8 extends DataType {\n constructor() {\n super();\n }\n get typeId() { return Type.Utf8; }\n toString() { return `Utf8`; }\n}\n_f = Symbol.toStringTag;\nUtf8[_f] = ((proto) => {\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Utf8';\n})(Utf8.prototype);\n/** @ignore */\nexport class Bool extends DataType {\n constructor() {\n super();\n }\n get typeId() { return Type.Bool; }\n toString() { return `Bool`; }\n}\n_g = Symbol.toStringTag;\nBool[_g] = ((proto) => {\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Bool';\n})(Bool.prototype);\n/** @ignore */\nexport class Decimal extends DataType {\n constructor(scale, precision, bitWidth = 128) {\n super();\n this.scale = scale;\n this.precision = precision;\n this.bitWidth = bitWidth;\n }\n get typeId() { return Type.Decimal; }\n toString() { return `Decimal[${this.precision}e${this.scale > 0 ? `+` : ``}${this.scale}]`; }\n}\n_h = Symbol.toStringTag;\nDecimal[_h] = ((proto) => {\n proto.scale = null;\n proto.precision = null;\n proto.ArrayType = Uint32Array;\n return proto[Symbol.toStringTag] = 'Decimal';\n})(Decimal.prototype);\n/** @ignore */\nexport class Date_ extends DataType {\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() { return Type.Date; }\n toString() { return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`; }\n}\n_j = Symbol.toStringTag;\nDate_[_j] = ((proto) => {\n proto.unit = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Date';\n})(Date_.prototype);\n/** @ignore */\nexport class DateDay extends Date_ {\n constructor() { super(DateUnit.DAY); }\n}\n/** @ignore */\nexport class DateMillisecond extends Date_ {\n constructor() { super(DateUnit.MILLISECOND); }\n}\n/** @ignore */\nclass Time_ extends DataType {\n constructor(unit, bitWidth) {\n super();\n this.unit = unit;\n this.bitWidth = bitWidth;\n }\n get typeId() { return Type.Time; }\n toString() { return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`; }\n get ArrayType() {\n switch (this.bitWidth) {\n case 32: return Int32Array;\n case 64: return BigInt64Array;\n }\n // @ts-ignore\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n}\n_k = Symbol.toStringTag;\nTime_[_k] = ((proto) => {\n proto.unit = null;\n proto.bitWidth = null;\n return proto[Symbol.toStringTag] = 'Time';\n})(Time_.prototype);\nexport { Time_ as Time };\n/** @ignore */\nexport class TimeSecond extends Time_ {\n constructor() { super(TimeUnit.SECOND, 32); }\n}\n/** @ignore */\nexport class TimeMillisecond extends Time_ {\n constructor() { super(TimeUnit.MILLISECOND, 32); }\n}\n/** @ignore */\nexport class TimeMicrosecond extends Time_ {\n constructor() { super(TimeUnit.MICROSECOND, 64); }\n}\n/** @ignore */\nexport class TimeNanosecond extends Time_ {\n constructor() { super(TimeUnit.NANOSECOND, 64); }\n}\n/** @ignore */\nclass Timestamp_ extends DataType {\n constructor(unit, timezone) {\n super();\n this.unit = unit;\n this.timezone = timezone;\n }\n get typeId() { return Type.Timestamp; }\n toString() { return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ``}>`; }\n}\n_l = Symbol.toStringTag;\nTimestamp_[_l] = ((proto) => {\n proto.unit = null;\n proto.timezone = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Timestamp';\n})(Timestamp_.prototype);\nexport { Timestamp_ as Timestamp };\n/** @ignore */\nexport class TimestampSecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.SECOND, timezone); }\n}\n/** @ignore */\nexport class TimestampMillisecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.MILLISECOND, timezone); }\n}\n/** @ignore */\nexport class TimestampMicrosecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.MICROSECOND, timezone); }\n}\n/** @ignore */\nexport class TimestampNanosecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.NANOSECOND, timezone); }\n}\n/** @ignore */\nclass Interval_ extends DataType {\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() { return Type.Interval; }\n toString() { return `Interval<${IntervalUnit[this.unit]}>`; }\n}\n_m = Symbol.toStringTag;\nInterval_[_m] = ((proto) => {\n proto.unit = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Interval';\n})(Interval_.prototype);\nexport { Interval_ as Interval };\n/** @ignore */\nexport class IntervalDayTime extends Interval_ {\n constructor() { super(IntervalUnit.DAY_TIME); }\n}\n/** @ignore */\nexport class IntervalYearMonth extends Interval_ {\n constructor() { super(IntervalUnit.YEAR_MONTH); }\n}\n/** @ignore */\nexport class List extends DataType {\n constructor(child) {\n super();\n this.children = [child];\n }\n get typeId() { return Type.List; }\n toString() { return `List<${this.valueType}>`; }\n get valueType() { return this.children[0].type; }\n get valueField() { return this.children[0]; }\n get ArrayType() { return this.valueType.ArrayType; }\n}\n_o = Symbol.toStringTag;\nList[_o] = ((proto) => {\n proto.children = null;\n return proto[Symbol.toStringTag] = 'List';\n})(List.prototype);\n/** @ignore */\nexport class Struct extends DataType {\n constructor(children) {\n super();\n this.children = children;\n }\n get typeId() { return Type.Struct; }\n toString() { return `Struct<{${this.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n}\n_p = Symbol.toStringTag;\nStruct[_p] = ((proto) => {\n proto.children = null;\n return proto[Symbol.toStringTag] = 'Struct';\n})(Struct.prototype);\n/** @ignore */\nclass Union_ extends DataType {\n constructor(mode, typeIds, children) {\n super();\n this.mode = mode;\n this.children = children;\n this.typeIds = typeIds = Int32Array.from(typeIds);\n this.typeIdToChildIndex = typeIds.reduce((typeIdToChildIndex, typeId, idx) => (typeIdToChildIndex[typeId] = idx) && typeIdToChildIndex || typeIdToChildIndex, Object.create(null));\n }\n get typeId() { return Type.Union; }\n toString() {\n return `${this[Symbol.toStringTag]}<${this.children.map((x) => `${x.type}`).join(` | `)}>`;\n }\n}\n_q = Symbol.toStringTag;\nUnion_[_q] = ((proto) => {\n proto.mode = null;\n proto.typeIds = null;\n proto.children = null;\n proto.typeIdToChildIndex = null;\n proto.ArrayType = Int8Array;\n return proto[Symbol.toStringTag] = 'Union';\n})(Union_.prototype);\nexport { Union_ as Union };\n/** @ignore */\nexport class DenseUnion extends Union_ {\n constructor(typeIds, children) {\n super(UnionMode.Dense, typeIds, children);\n }\n}\n/** @ignore */\nexport class SparseUnion extends Union_ {\n constructor(typeIds, children) {\n super(UnionMode.Sparse, typeIds, children);\n }\n}\n/** @ignore */\nexport class FixedSizeBinary extends DataType {\n constructor(byteWidth) {\n super();\n this.byteWidth = byteWidth;\n }\n get typeId() { return Type.FixedSizeBinary; }\n toString() { return `FixedSizeBinary[${this.byteWidth}]`; }\n}\n_r = Symbol.toStringTag;\nFixedSizeBinary[_r] = ((proto) => {\n proto.byteWidth = null;\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'FixedSizeBinary';\n})(FixedSizeBinary.prototype);\n/** @ignore */\nexport class FixedSizeList extends DataType {\n constructor(listSize, child) {\n super();\n this.listSize = listSize;\n this.children = [child];\n }\n get typeId() { return Type.FixedSizeList; }\n get valueType() { return this.children[0].type; }\n get valueField() { return this.children[0]; }\n get ArrayType() { return this.valueType.ArrayType; }\n toString() { return `FixedSizeList[${this.listSize}]<${this.valueType}>`; }\n}\n_s = Symbol.toStringTag;\nFixedSizeList[_s] = ((proto) => {\n proto.children = null;\n proto.listSize = null;\n return proto[Symbol.toStringTag] = 'FixedSizeList';\n})(FixedSizeList.prototype);\n/** @ignore */\nexport class Map_ extends DataType {\n constructor(child, keysSorted = false) {\n super();\n this.children = [child];\n this.keysSorted = keysSorted;\n }\n get typeId() { return Type.Map; }\n get keyType() { return this.children[0].type.children[0].type; }\n get valueType() { return this.children[0].type.children[1].type; }\n get childType() { return this.children[0].type; }\n toString() { return `Map<{${this.children[0].type.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n}\n_t = Symbol.toStringTag;\nMap_[_t] = ((proto) => {\n proto.children = null;\n proto.keysSorted = null;\n return proto[Symbol.toStringTag] = 'Map_';\n})(Map_.prototype);\n/** @ignore */\nconst getId = ((atomicDictionaryId) => () => ++atomicDictionaryId)(-1);\n/** @ignore */\nexport class Dictionary extends DataType {\n constructor(dictionary, indices, id, isOrdered) {\n super();\n this.indices = indices;\n this.dictionary = dictionary;\n this.isOrdered = isOrdered || false;\n this.id = id == null ? getId() : (typeof id === 'number' ? id : id.low);\n }\n get typeId() { return Type.Dictionary; }\n get children() { return this.dictionary.children; }\n get valueType() { return this.dictionary; }\n get ArrayType() { return this.dictionary.ArrayType; }\n toString() { return `Dictionary<${this.indices}, ${this.dictionary}>`; }\n}\n_u = Symbol.toStringTag;\nDictionary[_u] = ((proto) => {\n proto.id = null;\n proto.indices = null;\n proto.isOrdered = null;\n proto.dictionary = null;\n return proto[Symbol.toStringTag] = 'Dictionary';\n})(Dictionary.prototype);\n/** @ignore */\nexport function strideForType(type) {\n const t = type;\n switch (type.typeId) {\n case Type.Decimal: return type.bitWidth / 32;\n case Type.Timestamp: return 2;\n case Type.Date: return 1 + t.unit;\n case Type.Interval: return 1 + t.unit;\n // case Type.Int: return 1 + +((t as Int_).bitWidth > 32);\n // case Type.Time: return 1 + +((t as Time_).bitWidth > 32);\n case Type.FixedSizeList: return t.listSize;\n case Type.FixedSizeBinary: return t.byteWidth;\n default: return 1;\n }\n}\n\n//# sourceMappingURL=type.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Type, Precision, DateUnit, TimeUnit, IntervalUnit, UnionMode } from './enum.mjs';\nimport { DataType, } from './type.mjs';\nexport class Visitor {\n visitMany(nodes, ...args) {\n return nodes.map((node, i) => this.visit(node, ...args.map((x) => x[i])));\n }\n visit(...args) {\n return this.getVisitFn(args[0], false).apply(this, args);\n }\n getVisitFn(node, throwIfNotFound = true) {\n return getVisitFn(this, node, throwIfNotFound);\n }\n getVisitFnByTypeId(typeId, throwIfNotFound = true) {\n return getVisitFnByTypeId(this, typeId, throwIfNotFound);\n }\n visitNull(_node, ..._args) { return null; }\n visitBool(_node, ..._args) { return null; }\n visitInt(_node, ..._args) { return null; }\n visitFloat(_node, ..._args) { return null; }\n visitUtf8(_node, ..._args) { return null; }\n visitBinary(_node, ..._args) { return null; }\n visitFixedSizeBinary(_node, ..._args) { return null; }\n visitDate(_node, ..._args) { return null; }\n visitTimestamp(_node, ..._args) { return null; }\n visitTime(_node, ..._args) { return null; }\n visitDecimal(_node, ..._args) { return null; }\n visitList(_node, ..._args) { return null; }\n visitStruct(_node, ..._args) { return null; }\n visitUnion(_node, ..._args) { return null; }\n visitDictionary(_node, ..._args) { return null; }\n visitInterval(_node, ..._args) { return null; }\n visitFixedSizeList(_node, ..._args) { return null; }\n visitMap(_node, ..._args) { return null; }\n}\n/** @ignore */\nfunction getVisitFn(visitor, node, throwIfNotFound = true) {\n if (typeof node === 'number') {\n return getVisitFnByTypeId(visitor, node, throwIfNotFound);\n }\n if (typeof node === 'string' && (node in Type)) {\n return getVisitFnByTypeId(visitor, Type[node], throwIfNotFound);\n }\n if (node && (node instanceof DataType)) {\n return getVisitFnByTypeId(visitor, inferDType(node), throwIfNotFound);\n }\n if ((node === null || node === void 0 ? void 0 : node.type) && (node.type instanceof DataType)) {\n return getVisitFnByTypeId(visitor, inferDType(node.type), throwIfNotFound);\n }\n return getVisitFnByTypeId(visitor, Type.NONE, throwIfNotFound);\n}\n/** @ignore */\nfunction getVisitFnByTypeId(visitor, dtype, throwIfNotFound = true) {\n let fn = null;\n switch (dtype) {\n case Type.Null:\n fn = visitor.visitNull;\n break;\n case Type.Bool:\n fn = visitor.visitBool;\n break;\n case Type.Int:\n fn = visitor.visitInt;\n break;\n case Type.Int8:\n fn = visitor.visitInt8 || visitor.visitInt;\n break;\n case Type.Int16:\n fn = visitor.visitInt16 || visitor.visitInt;\n break;\n case Type.Int32:\n fn = visitor.visitInt32 || visitor.visitInt;\n break;\n case Type.Int64:\n fn = visitor.visitInt64 || visitor.visitInt;\n break;\n case Type.Uint8:\n fn = visitor.visitUint8 || visitor.visitInt;\n break;\n case Type.Uint16:\n fn = visitor.visitUint16 || visitor.visitInt;\n break;\n case Type.Uint32:\n fn = visitor.visitUint32 || visitor.visitInt;\n break;\n case Type.Uint64:\n fn = visitor.visitUint64 || visitor.visitInt;\n break;\n case Type.Float:\n fn = visitor.visitFloat;\n break;\n case Type.Float16:\n fn = visitor.visitFloat16 || visitor.visitFloat;\n break;\n case Type.Float32:\n fn = visitor.visitFloat32 || visitor.visitFloat;\n break;\n case Type.Float64:\n fn = visitor.visitFloat64 || visitor.visitFloat;\n break;\n case Type.Utf8:\n fn = visitor.visitUtf8;\n break;\n case Type.Binary:\n fn = visitor.visitBinary;\n break;\n case Type.FixedSizeBinary:\n fn = visitor.visitFixedSizeBinary;\n break;\n case Type.Date:\n fn = visitor.visitDate;\n break;\n case Type.DateDay:\n fn = visitor.visitDateDay || visitor.visitDate;\n break;\n case Type.DateMillisecond:\n fn = visitor.visitDateMillisecond || visitor.visitDate;\n break;\n case Type.Timestamp:\n fn = visitor.visitTimestamp;\n break;\n case Type.TimestampSecond:\n fn = visitor.visitTimestampSecond || visitor.visitTimestamp;\n break;\n case Type.TimestampMillisecond:\n fn = visitor.visitTimestampMillisecond || visitor.visitTimestamp;\n break;\n case Type.TimestampMicrosecond:\n fn = visitor.visitTimestampMicrosecond || visitor.visitTimestamp;\n break;\n case Type.TimestampNanosecond:\n fn = visitor.visitTimestampNanosecond || visitor.visitTimestamp;\n break;\n case Type.Time:\n fn = visitor.visitTime;\n break;\n case Type.TimeSecond:\n fn = visitor.visitTimeSecond || visitor.visitTime;\n break;\n case Type.TimeMillisecond:\n fn = visitor.visitTimeMillisecond || visitor.visitTime;\n break;\n case Type.TimeMicrosecond:\n fn = visitor.visitTimeMicrosecond || visitor.visitTime;\n break;\n case Type.TimeNanosecond:\n fn = visitor.visitTimeNanosecond || visitor.visitTime;\n break;\n case Type.Decimal:\n fn = visitor.visitDecimal;\n break;\n case Type.List:\n fn = visitor.visitList;\n break;\n case Type.Struct:\n fn = visitor.visitStruct;\n break;\n case Type.Union:\n fn = visitor.visitUnion;\n break;\n case Type.DenseUnion:\n fn = visitor.visitDenseUnion || visitor.visitUnion;\n break;\n case Type.SparseUnion:\n fn = visitor.visitSparseUnion || visitor.visitUnion;\n break;\n case Type.Dictionary:\n fn = visitor.visitDictionary;\n break;\n case Type.Interval:\n fn = visitor.visitInterval;\n break;\n case Type.IntervalDayTime:\n fn = visitor.visitIntervalDayTime || visitor.visitInterval;\n break;\n case Type.IntervalYearMonth:\n fn = visitor.visitIntervalYearMonth || visitor.visitInterval;\n break;\n case Type.FixedSizeList:\n fn = visitor.visitFixedSizeList;\n break;\n case Type.Map:\n fn = visitor.visitMap;\n break;\n }\n if (typeof fn === 'function')\n return fn;\n if (!throwIfNotFound)\n return () => null;\n throw new Error(`Unrecognized type '${Type[dtype]}'`);\n}\n/** @ignore */\nfunction inferDType(type) {\n switch (type.typeId) {\n case Type.Null: return Type.Null;\n case Type.Int: {\n const { bitWidth, isSigned } = type;\n switch (bitWidth) {\n case 8: return isSigned ? Type.Int8 : Type.Uint8;\n case 16: return isSigned ? Type.Int16 : Type.Uint16;\n case 32: return isSigned ? Type.Int32 : Type.Uint32;\n case 64: return isSigned ? Type.Int64 : Type.Uint64;\n }\n // @ts-ignore\n return Type.Int;\n }\n case Type.Float:\n switch (type.precision) {\n case Precision.HALF: return Type.Float16;\n case Precision.SINGLE: return Type.Float32;\n case Precision.DOUBLE: return Type.Float64;\n }\n // @ts-ignore\n return Type.Float;\n case Type.Binary: return Type.Binary;\n case Type.Utf8: return Type.Utf8;\n case Type.Bool: return Type.Bool;\n case Type.Decimal: return Type.Decimal;\n case Type.Time:\n switch (type.unit) {\n case TimeUnit.SECOND: return Type.TimeSecond;\n case TimeUnit.MILLISECOND: return Type.TimeMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimeMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimeNanosecond;\n }\n // @ts-ignore\n return Type.Time;\n case Type.Timestamp:\n switch (type.unit) {\n case TimeUnit.SECOND: return Type.TimestampSecond;\n case TimeUnit.MILLISECOND: return Type.TimestampMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimestampMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimestampNanosecond;\n }\n // @ts-ignore\n return Type.Timestamp;\n case Type.Date:\n switch (type.unit) {\n case DateUnit.DAY: return Type.DateDay;\n case DateUnit.MILLISECOND: return Type.DateMillisecond;\n }\n // @ts-ignore\n return Type.Date;\n case Type.Interval:\n switch (type.unit) {\n case IntervalUnit.DAY_TIME: return Type.IntervalDayTime;\n case IntervalUnit.YEAR_MONTH: return Type.IntervalYearMonth;\n }\n // @ts-ignore\n return Type.Interval;\n case Type.Map: return Type.Map;\n case Type.List: return Type.List;\n case Type.Struct: return Type.Struct;\n case Type.Union:\n switch (type.mode) {\n case UnionMode.Dense: return Type.DenseUnion;\n case UnionMode.Sparse: return Type.SparseUnion;\n }\n // @ts-ignore\n return Type.Union;\n case Type.FixedSizeBinary: return Type.FixedSizeBinary;\n case Type.FixedSizeList: return Type.FixedSizeList;\n case Type.Dictionary: return Type.Dictionary;\n }\n throw new Error(`Unrecognized type '${Type[type.typeId]}'`);\n}\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\nVisitor.prototype.visitInt8 = null;\nVisitor.prototype.visitInt16 = null;\nVisitor.prototype.visitInt32 = null;\nVisitor.prototype.visitInt64 = null;\nVisitor.prototype.visitUint8 = null;\nVisitor.prototype.visitUint16 = null;\nVisitor.prototype.visitUint32 = null;\nVisitor.prototype.visitUint64 = null;\nVisitor.prototype.visitFloat16 = null;\nVisitor.prototype.visitFloat32 = null;\nVisitor.prototype.visitFloat64 = null;\nVisitor.prototype.visitDateDay = null;\nVisitor.prototype.visitDateMillisecond = null;\nVisitor.prototype.visitTimestampSecond = null;\nVisitor.prototype.visitTimestampMillisecond = null;\nVisitor.prototype.visitTimestampMicrosecond = null;\nVisitor.prototype.visitTimestampNanosecond = null;\nVisitor.prototype.visitTimeSecond = null;\nVisitor.prototype.visitTimeMillisecond = null;\nVisitor.prototype.visitTimeMicrosecond = null;\nVisitor.prototype.visitTimeNanosecond = null;\nVisitor.prototype.visitDenseUnion = null;\nVisitor.prototype.visitSparseUnion = null;\nVisitor.prototype.visitIntervalDayTime = null;\nVisitor.prototype.visitIntervalYearMonth = null;\n\n//# sourceMappingURL=visitor.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nconst f64 = new Float64Array(1);\nconst u32 = new Uint32Array(f64.buffer);\n/**\n * Convert uint16 (logically a float16) to a JS float64. Inspired by numpy's `npy_half_to_double`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L29\n * @param h {number} the uint16 to convert\n * @private\n * @ignore\n */\nexport function uint16ToFloat64(h) {\n const expo = (h & 0x7C00) >> 10;\n const sigf = (h & 0x03FF) / 1024;\n const sign = Math.pow((-1), ((h & 0x8000) >> 15));\n switch (expo) {\n case 0x1F: return sign * (sigf ? Number.NaN : 1 / 0);\n case 0x00: return sign * (sigf ? 6.103515625e-5 * sigf : 0);\n }\n return sign * (Math.pow(2, (expo - 15))) * (1 + sigf);\n}\n/**\n * Convert a float64 to uint16 (assuming the float64 is logically a float16). Inspired by numpy's `npy_double_to_half`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L43\n * @param d {number} The float64 to convert\n * @private\n * @ignore\n */\nexport function float64ToUint16(d) {\n if (d !== d) {\n return 0x7E00;\n } // NaN\n f64[0] = d;\n // Magic numbers:\n // 0x80000000 = 10000000 00000000 00000000 00000000 -- masks the 32nd bit\n // 0x7ff00000 = 01111111 11110000 00000000 00000000 -- masks the 21st-31st bits\n // 0x000fffff = 00000000 00001111 11111111 11111111 -- masks the 1st-20th bit\n const sign = (u32[1] & 0x80000000) >> 16 & 0xFFFF;\n let expo = (u32[1] & 0x7FF00000), sigf = 0x0000;\n if (expo >= 0x40F00000) {\n //\n // If exponent overflowed, the float16 is either NaN or Infinity.\n // Rules to propagate the sign bit: mantissa > 0 ? NaN : +/-Infinity\n //\n // Magic numbers:\n // 0x40F00000 = 01000000 11110000 00000000 00000000 -- 6-bit exponent overflow\n // 0x7C000000 = 01111100 00000000 00000000 00000000 -- masks the 27th-31st bits\n //\n // returns:\n // qNaN, aka 32256 decimal, 0x7E00 hex, or 01111110 00000000 binary\n // sNaN, aka 32000 decimal, 0x7D00 hex, or 01111101 00000000 binary\n // +inf, aka 31744 decimal, 0x7C00 hex, or 01111100 00000000 binary\n // -inf, aka 64512 decimal, 0xFC00 hex, or 11111100 00000000 binary\n //\n // If mantissa is greater than 23 bits, set to +Infinity like numpy\n if (u32[0] > 0) {\n expo = 0x7C00;\n }\n else {\n expo = (expo & 0x7C000000) >> 16;\n sigf = (u32[1] & 0x000FFFFF) >> 10;\n }\n }\n else if (expo <= 0x3F000000) {\n //\n // If exponent underflowed, the float is either signed zero or subnormal.\n //\n // Magic numbers:\n // 0x3F000000 = 00111111 00000000 00000000 00000000 -- 6-bit exponent underflow\n //\n sigf = 0x100000 + (u32[1] & 0x000FFFFF);\n sigf = 0x100000 + (sigf << ((expo >> 20) - 998)) >> 21;\n expo = 0;\n }\n else {\n //\n // No overflow or underflow, rebase the exponent and round the mantissa\n // Magic numbers:\n // 0x200 = 00000010 00000000 -- masks off the 10th bit\n //\n // Ensure the first mantissa bit (the 10th one) is 1 and round\n expo = (expo - 0x3F000000) >> 10;\n sigf = ((u32[1] & 0x000FFFFF) + 0x200) >> 10;\n }\n return sign | expo | sigf & 0xFFFF;\n}\n\n//# sourceMappingURL=math.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector.mjs';\nimport { Visitor } from '../visitor.mjs';\nimport { encodeUtf8 } from '../util/utf8.mjs';\nimport { float64ToUint16 } from '../util/math.mjs';\nimport { UnionMode, Precision, DateUnit, TimeUnit, IntervalUnit } from '../enum.mjs';\n/** @ignore */\nexport class SetVisitor extends Visitor {\n}\n/** @ignore */\nfunction wrapSet(fn) {\n return (data, _1, _2) => {\n if (data.setValid(_1, _2 != null)) {\n return fn(data, _1, _2);\n }\n };\n}\n/** @ignore */\nexport const setEpochMsToDays = (data, index, epochMs) => { data[index] = Math.trunc(epochMs / 86400000); };\n/** @ignore */\nexport const setEpochMsToMillisecondsLong = (data, index, epochMs) => {\n data[index] = Math.trunc(epochMs % 4294967296);\n data[index + 1] = Math.trunc(epochMs / 4294967296);\n};\n/** @ignore */\nexport const setEpochMsToMicrosecondsLong = (data, index, epochMs) => {\n data[index] = Math.trunc((epochMs * 1000) % 4294967296);\n data[index + 1] = Math.trunc((epochMs * 1000) / 4294967296);\n};\n/** @ignore */\nexport const setEpochMsToNanosecondsLong = (data, index, epochMs) => {\n data[index] = Math.trunc((epochMs * 1000000) % 4294967296);\n data[index + 1] = Math.trunc((epochMs * 1000000) / 4294967296);\n};\n/** @ignore */\nexport const setVariableWidthBytes = (values, valueOffsets, index, value) => {\n if (index + 1 < valueOffsets.length) {\n const { [index]: x, [index + 1]: y } = valueOffsets;\n values.set(value.subarray(0, y - x), x);\n }\n};\n/** @ignore */\nconst setBool = ({ offset, values }, index, val) => {\n const idx = offset + index;\n val ? (values[idx >> 3] |= (1 << (idx % 8))) // true\n : (values[idx >> 3] &= ~(1 << (idx % 8))); // false\n};\n/** @ignore */\nexport const setInt = ({ values }, index, value) => { values[index] = value; };\n/** @ignore */\nexport const setFloat = ({ values }, index, value) => { values[index] = value; };\n/** @ignore */\nexport const setFloat16 = ({ values }, index, value) => { values[index] = float64ToUint16(value); };\n/* istanbul ignore next */\n/** @ignore */\nexport const setAnyFloat = (data, index, value) => {\n switch (data.type.precision) {\n case Precision.HALF:\n return setFloat16(data, index, value);\n case Precision.SINGLE:\n case Precision.DOUBLE:\n return setFloat(data, index, value);\n }\n};\n/** @ignore */\nexport const setDateDay = ({ values }, index, value) => { setEpochMsToDays(values, index, value.valueOf()); };\n/** @ignore */\nexport const setDateMillisecond = ({ values }, index, value) => { setEpochMsToMillisecondsLong(values, index * 2, value.valueOf()); };\n/** @ignore */\nexport const setFixedSizeBinary = ({ stride, values }, index, value) => { values.set(value.subarray(0, stride), stride * index); };\n/** @ignore */\nconst setBinary = ({ values, valueOffsets }, index, value) => setVariableWidthBytes(values, valueOffsets, index, value);\n/** @ignore */\nconst setUtf8 = ({ values, valueOffsets }, index, value) => {\n setVariableWidthBytes(values, valueOffsets, index, encodeUtf8(value));\n};\n/* istanbul ignore next */\nexport const setDate = (data, index, value) => {\n data.type.unit === DateUnit.DAY\n ? setDateDay(data, index, value)\n : setDateMillisecond(data, index, value);\n};\n/** @ignore */\nexport const setTimestampSecond = ({ values }, index, value) => setEpochMsToMillisecondsLong(values, index * 2, value / 1000);\n/** @ignore */\nexport const setTimestampMillisecond = ({ values }, index, value) => setEpochMsToMillisecondsLong(values, index * 2, value);\n/** @ignore */\nexport const setTimestampMicrosecond = ({ values }, index, value) => setEpochMsToMicrosecondsLong(values, index * 2, value);\n/** @ignore */\nexport const setTimestampNanosecond = ({ values }, index, value) => setEpochMsToNanosecondsLong(values, index * 2, value);\n/* istanbul ignore next */\n/** @ignore */\nexport const setTimestamp = (data, index, value) => {\n switch (data.type.unit) {\n case TimeUnit.SECOND: return setTimestampSecond(data, index, value);\n case TimeUnit.MILLISECOND: return setTimestampMillisecond(data, index, value);\n case TimeUnit.MICROSECOND: return setTimestampMicrosecond(data, index, value);\n case TimeUnit.NANOSECOND: return setTimestampNanosecond(data, index, value);\n }\n};\n/** @ignore */\nexport const setTimeSecond = ({ values }, index, value) => { values[index] = value; };\n/** @ignore */\nexport const setTimeMillisecond = ({ values }, index, value) => { values[index] = value; };\n/** @ignore */\nexport const setTimeMicrosecond = ({ values }, index, value) => { values[index] = value; };\n/** @ignore */\nexport const setTimeNanosecond = ({ values }, index, value) => { values[index] = value; };\n/* istanbul ignore next */\n/** @ignore */\nexport const setTime = (data, index, value) => {\n switch (data.type.unit) {\n case TimeUnit.SECOND: return setTimeSecond(data, index, value);\n case TimeUnit.MILLISECOND: return setTimeMillisecond(data, index, value);\n case TimeUnit.MICROSECOND: return setTimeMicrosecond(data, index, value);\n case TimeUnit.NANOSECOND: return setTimeNanosecond(data, index, value);\n }\n};\n/** @ignore */\nexport const setDecimal = ({ values, stride }, index, value) => { values.set(value.subarray(0, stride), stride * index); };\n/** @ignore */\nconst setList = (data, index, value) => {\n const values = data.children[0];\n const valueOffsets = data.valueOffsets;\n const set = instance.getVisitFn(values);\n if (Array.isArray(value)) {\n for (let idx = -1, itr = valueOffsets[index], end = valueOffsets[index + 1]; itr < end;) {\n set(values, itr++, value[++idx]);\n }\n }\n else {\n for (let idx = -1, itr = valueOffsets[index], end = valueOffsets[index + 1]; itr < end;) {\n set(values, itr++, value.get(++idx));\n }\n }\n};\n/** @ignore */\nconst setMap = (data, index, value) => {\n const values = data.children[0];\n const { valueOffsets } = data;\n const set = instance.getVisitFn(values);\n let { [index]: idx, [index + 1]: end } = valueOffsets;\n const entries = value instanceof Map ? value.entries() : Object.entries(value);\n for (const val of entries) {\n set(values, idx, val);\n if (++idx >= end)\n break;\n }\n};\n/** @ignore */ const _setStructArrayValue = (o, v) => (set, c, _, i) => c && set(c, o, v[i]);\n/** @ignore */ const _setStructVectorValue = (o, v) => (set, c, _, i) => c && set(c, o, v.get(i));\n/** @ignore */ const _setStructMapValue = (o, v) => (set, c, f, _) => c && set(c, o, v.get(f.name));\n/** @ignore */ const _setStructObjectValue = (o, v) => (set, c, f, _) => c && set(c, o, v[f.name]);\n/** @ignore */\nconst setStruct = (data, index, value) => {\n const childSetters = data.type.children.map((f) => instance.getVisitFn(f.type));\n const set = value instanceof Map ? _setStructMapValue(index, value) :\n value instanceof Vector ? _setStructVectorValue(index, value) :\n Array.isArray(value) ? _setStructArrayValue(index, value) :\n _setStructObjectValue(index, value);\n // eslint-disable-next-line unicorn/no-array-for-each\n data.type.children.forEach((f, i) => set(childSetters[i], data.children[i], f, i));\n};\n/* istanbul ignore next */\n/** @ignore */\nconst setUnion = (data, index, value) => {\n data.type.mode === UnionMode.Dense ?\n setDenseUnion(data, index, value) :\n setSparseUnion(data, index, value);\n};\n/** @ignore */\nconst setDenseUnion = (data, index, value) => {\n const childIndex = data.type.typeIdToChildIndex[data.typeIds[index]];\n const child = data.children[childIndex];\n instance.visit(child, data.valueOffsets[index], value);\n};\n/** @ignore */\nconst setSparseUnion = (data, index, value) => {\n const childIndex = data.type.typeIdToChildIndex[data.typeIds[index]];\n const child = data.children[childIndex];\n instance.visit(child, index, value);\n};\n/** @ignore */\nconst setDictionary = (data, index, value) => {\n var _a;\n (_a = data.dictionary) === null || _a === void 0 ? void 0 : _a.set(data.values[index], value);\n};\n/* istanbul ignore next */\n/** @ignore */\nexport const setIntervalValue = (data, index, value) => {\n (data.type.unit === IntervalUnit.DAY_TIME)\n ? setIntervalDayTime(data, index, value)\n : setIntervalYearMonth(data, index, value);\n};\n/** @ignore */\nexport const setIntervalDayTime = ({ values }, index, value) => { values.set(value.subarray(0, 2), 2 * index); };\n/** @ignore */\nexport const setIntervalYearMonth = ({ values }, index, value) => { values[index] = (value[0] * 12) + (value[1] % 12); };\n/** @ignore */\nconst setFixedSizeList = (data, index, value) => {\n const { stride } = data;\n const child = data.children[0];\n const set = instance.getVisitFn(child);\n if (Array.isArray(value)) {\n for (let idx = -1, offset = index * stride; ++idx < stride;) {\n set(child, offset + idx, value[idx]);\n }\n }\n else {\n for (let idx = -1, offset = index * stride; ++idx < stride;) {\n set(child, offset + idx, value.get(idx));\n }\n }\n};\nSetVisitor.prototype.visitBool = wrapSet(setBool);\nSetVisitor.prototype.visitInt = wrapSet(setInt);\nSetVisitor.prototype.visitInt8 = wrapSet(setInt);\nSetVisitor.prototype.visitInt16 = wrapSet(setInt);\nSetVisitor.prototype.visitInt32 = wrapSet(setInt);\nSetVisitor.prototype.visitInt64 = wrapSet(setInt);\nSetVisitor.prototype.visitUint8 = wrapSet(setInt);\nSetVisitor.prototype.visitUint16 = wrapSet(setInt);\nSetVisitor.prototype.visitUint32 = wrapSet(setInt);\nSetVisitor.prototype.visitUint64 = wrapSet(setInt);\nSetVisitor.prototype.visitFloat = wrapSet(setAnyFloat);\nSetVisitor.prototype.visitFloat16 = wrapSet(setFloat16);\nSetVisitor.prototype.visitFloat32 = wrapSet(setFloat);\nSetVisitor.prototype.visitFloat64 = wrapSet(setFloat);\nSetVisitor.prototype.visitUtf8 = wrapSet(setUtf8);\nSetVisitor.prototype.visitBinary = wrapSet(setBinary);\nSetVisitor.prototype.visitFixedSizeBinary = wrapSet(setFixedSizeBinary);\nSetVisitor.prototype.visitDate = wrapSet(setDate);\nSetVisitor.prototype.visitDateDay = wrapSet(setDateDay);\nSetVisitor.prototype.visitDateMillisecond = wrapSet(setDateMillisecond);\nSetVisitor.prototype.visitTimestamp = wrapSet(setTimestamp);\nSetVisitor.prototype.visitTimestampSecond = wrapSet(setTimestampSecond);\nSetVisitor.prototype.visitTimestampMillisecond = wrapSet(setTimestampMillisecond);\nSetVisitor.prototype.visitTimestampMicrosecond = wrapSet(setTimestampMicrosecond);\nSetVisitor.prototype.visitTimestampNanosecond = wrapSet(setTimestampNanosecond);\nSetVisitor.prototype.visitTime = wrapSet(setTime);\nSetVisitor.prototype.visitTimeSecond = wrapSet(setTimeSecond);\nSetVisitor.prototype.visitTimeMillisecond = wrapSet(setTimeMillisecond);\nSetVisitor.prototype.visitTimeMicrosecond = wrapSet(setTimeMicrosecond);\nSetVisitor.prototype.visitTimeNanosecond = wrapSet(setTimeNanosecond);\nSetVisitor.prototype.visitDecimal = wrapSet(setDecimal);\nSetVisitor.prototype.visitList = wrapSet(setList);\nSetVisitor.prototype.visitStruct = wrapSet(setStruct);\nSetVisitor.prototype.visitUnion = wrapSet(setUnion);\nSetVisitor.prototype.visitDenseUnion = wrapSet(setDenseUnion);\nSetVisitor.prototype.visitSparseUnion = wrapSet(setSparseUnion);\nSetVisitor.prototype.visitDictionary = wrapSet(setDictionary);\nSetVisitor.prototype.visitInterval = wrapSet(setIntervalValue);\nSetVisitor.prototype.visitIntervalDayTime = wrapSet(setIntervalDayTime);\nSetVisitor.prototype.visitIntervalYearMonth = wrapSet(setIntervalYearMonth);\nSetVisitor.prototype.visitFixedSizeList = wrapSet(setFixedSizeList);\nSetVisitor.prototype.visitMap = wrapSet(setMap);\n/** @ignore */\nexport const instance = new SetVisitor();\n\n//# sourceMappingURL=set.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { valueToString } from '../util/pretty.mjs';\nimport { instance as getVisitor } from '../visitor/get.mjs';\nimport { instance as setVisitor } from '../visitor/set.mjs';\n/** @ignore */ const kParent = Symbol.for('parent');\n/** @ignore */ const kRowIndex = Symbol.for('rowIndex');\nexport class StructRow {\n constructor(parent, rowIndex) {\n this[kParent] = parent;\n this[kRowIndex] = rowIndex;\n return new Proxy(this, new StructRowProxyHandler());\n }\n toArray() { return Object.values(this.toJSON()); }\n toJSON() {\n const i = this[kRowIndex];\n const parent = this[kParent];\n const keys = parent.type.children;\n const json = {};\n for (let j = -1, n = keys.length; ++j < n;) {\n json[keys[j].name] = getVisitor.visit(parent.children[j], i);\n }\n return json;\n }\n toString() {\n return `{${[...this].map(([key, val]) => `${valueToString(key)}: ${valueToString(val)}`).join(', ')}}`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.toString();\n }\n [Symbol.iterator]() {\n return new StructRowIterator(this[kParent], this[kRowIndex]);\n }\n}\nclass StructRowIterator {\n constructor(data, rowIndex) {\n this.childIndex = 0;\n this.children = data.children;\n this.rowIndex = rowIndex;\n this.childFields = data.type.children;\n this.numChildren = this.childFields.length;\n }\n [Symbol.iterator]() { return this; }\n next() {\n const i = this.childIndex;\n if (i < this.numChildren) {\n this.childIndex = i + 1;\n return {\n done: false,\n value: [\n this.childFields[i].name,\n getVisitor.visit(this.children[i], this.rowIndex)\n ]\n };\n }\n return { done: true, value: null };\n }\n}\nObject.defineProperties(StructRow.prototype, {\n [Symbol.toStringTag]: { enumerable: false, configurable: false, value: 'Row' },\n [kParent]: { writable: true, enumerable: false, configurable: false, value: null },\n [kRowIndex]: { writable: true, enumerable: false, configurable: false, value: -1 },\n});\nclass StructRowProxyHandler {\n isExtensible() { return false; }\n deleteProperty() { return false; }\n preventExtensions() { return true; }\n ownKeys(row) {\n return row[kParent].type.children.map((f) => f.name);\n }\n has(row, key) {\n return row[kParent].type.children.findIndex((f) => f.name === key) !== -1;\n }\n getOwnPropertyDescriptor(row, key) {\n if (row[kParent].type.children.findIndex((f) => f.name === key) !== -1) {\n return { writable: true, enumerable: true, configurable: true };\n }\n return;\n }\n get(row, key) {\n // Look up key in row first\n if (Reflect.has(row, key)) {\n return row[key];\n }\n const idx = row[kParent].type.children.findIndex((f) => f.name === key);\n if (idx !== -1) {\n const val = getVisitor.visit(row[kParent].children[idx], row[kRowIndex]);\n // Cache key/val lookups\n Reflect.set(row, key, val);\n return val;\n }\n }\n set(row, key, val) {\n const idx = row[kParent].type.children.findIndex((f) => f.name === key);\n if (idx !== -1) {\n setVisitor.visit(row[kParent].children[idx], row[kRowIndex], val);\n // Cache key/val lookups\n return Reflect.set(row, key, val);\n }\n else if (Reflect.has(row, key) || typeof key === 'symbol') {\n return Reflect.set(row, key, val);\n }\n return false;\n }\n}\n\n//# sourceMappingURL=struct.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BN } from '../util/bn.mjs';\nimport { Vector } from '../vector.mjs';\nimport { Visitor } from '../visitor.mjs';\nimport { MapRow } from '../row/map.mjs';\nimport { StructRow } from '../row/struct.mjs';\nimport { decodeUtf8 } from '../util/utf8.mjs';\nimport { uint16ToFloat64 } from '../util/math.mjs';\nimport { UnionMode, Precision, DateUnit, TimeUnit, IntervalUnit } from '../enum.mjs';\n/** @ignore */\nexport class GetVisitor extends Visitor {\n}\n/** @ignore */\nfunction wrapGet(fn) {\n return (data, _1) => data.getValid(_1) ? fn(data, _1) : null;\n}\n/** @ignore */ const epochDaysToMs = (data, index) => 86400000 * data[index];\n/** @ignore */ const epochMillisecondsLongToMs = (data, index) => 4294967296 * (data[index + 1]) + (data[index] >>> 0);\n/** @ignore */ const epochMicrosecondsLongToMs = (data, index) => 4294967296 * (data[index + 1] / 1000) + ((data[index] >>> 0) / 1000);\n/** @ignore */ const epochNanosecondsLongToMs = (data, index) => 4294967296 * (data[index + 1] / 1000000) + ((data[index] >>> 0) / 1000000);\n/** @ignore */ const epochMillisecondsToDate = (epochMs) => new Date(epochMs);\n/** @ignore */ const epochDaysToDate = (data, index) => epochMillisecondsToDate(epochDaysToMs(data, index));\n/** @ignore */ const epochMillisecondsLongToDate = (data, index) => epochMillisecondsToDate(epochMillisecondsLongToMs(data, index));\n/** @ignore */\nconst getNull = (_data, _index) => null;\n/** @ignore */\nconst getVariableWidthBytes = (values, valueOffsets, index) => {\n if (index + 1 >= valueOffsets.length) {\n return null;\n }\n const x = valueOffsets[index];\n const y = valueOffsets[index + 1];\n return values.subarray(x, y);\n};\n/** @ignore */\nconst getBool = ({ offset, values }, index) => {\n const idx = offset + index;\n const byte = values[idx >> 3];\n return (byte & 1 << (idx % 8)) !== 0;\n};\n/** @ignore */\nconst getDateDay = ({ values }, index) => epochDaysToDate(values, index);\n/** @ignore */\nconst getDateMillisecond = ({ values }, index) => epochMillisecondsLongToDate(values, index * 2);\n/** @ignore */\nconst getNumeric = ({ stride, values }, index) => values[stride * index];\n/** @ignore */\nconst getFloat16 = ({ stride, values }, index) => uint16ToFloat64(values[stride * index]);\n/** @ignore */\nconst getBigInts = ({ values }, index) => values[index];\n/** @ignore */\nconst getFixedSizeBinary = ({ stride, values }, index) => values.subarray(stride * index, stride * (index + 1));\n/** @ignore */\nconst getBinary = ({ values, valueOffsets }, index) => getVariableWidthBytes(values, valueOffsets, index);\n/** @ignore */\nconst getUtf8 = ({ values, valueOffsets }, index) => {\n const bytes = getVariableWidthBytes(values, valueOffsets, index);\n return bytes !== null ? decodeUtf8(bytes) : null;\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getInt = ({ values }, index) => values[index];\n/* istanbul ignore next */\n/** @ignore */\nconst getFloat = ({ type, values }, index) => (type.precision !== Precision.HALF ? values[index] : uint16ToFloat64(values[index]));\n/* istanbul ignore next */\n/** @ignore */\nconst getDate = (data, index) => (data.type.unit === DateUnit.DAY\n ? getDateDay(data, index)\n : getDateMillisecond(data, index));\n/** @ignore */\nconst getTimestampSecond = ({ values }, index) => 1000 * epochMillisecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampMillisecond = ({ values }, index) => epochMillisecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampMicrosecond = ({ values }, index) => epochMicrosecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampNanosecond = ({ values }, index) => epochNanosecondsLongToMs(values, index * 2);\n/* istanbul ignore next */\n/** @ignore */\nconst getTimestamp = (data, index) => {\n switch (data.type.unit) {\n case TimeUnit.SECOND: return getTimestampSecond(data, index);\n case TimeUnit.MILLISECOND: return getTimestampMillisecond(data, index);\n case TimeUnit.MICROSECOND: return getTimestampMicrosecond(data, index);\n case TimeUnit.NANOSECOND: return getTimestampNanosecond(data, index);\n }\n};\n/** @ignore */\nconst getTimeSecond = ({ values }, index) => values[index];\n/** @ignore */\nconst getTimeMillisecond = ({ values }, index) => values[index];\n/** @ignore */\nconst getTimeMicrosecond = ({ values }, index) => values[index];\n/** @ignore */\nconst getTimeNanosecond = ({ values }, index) => values[index];\n/* istanbul ignore next */\n/** @ignore */\nconst getTime = (data, index) => {\n switch (data.type.unit) {\n case TimeUnit.SECOND: return getTimeSecond(data, index);\n case TimeUnit.MILLISECOND: return getTimeMillisecond(data, index);\n case TimeUnit.MICROSECOND: return getTimeMicrosecond(data, index);\n case TimeUnit.NANOSECOND: return getTimeNanosecond(data, index);\n }\n};\n/** @ignore */\nconst getDecimal = ({ values, stride }, index) => BN.decimal(values.subarray(stride * index, stride * (index + 1)));\n/** @ignore */\nconst getList = (data, index) => {\n const { valueOffsets, stride, children } = data;\n const { [index * stride]: begin, [index * stride + 1]: end } = valueOffsets;\n const child = children[0];\n const slice = child.slice(begin, end - begin);\n return new Vector([slice]);\n};\n/** @ignore */\nconst getMap = (data, index) => {\n const { valueOffsets, children } = data;\n const { [index]: begin, [index + 1]: end } = valueOffsets;\n const child = children[0];\n return new MapRow(child.slice(begin, end - begin));\n};\n/** @ignore */\nconst getStruct = (data, index) => {\n return new StructRow(data, index);\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getUnion = (data, index) => {\n return data.type.mode === UnionMode.Dense ?\n getDenseUnion(data, index) :\n getSparseUnion(data, index);\n};\n/** @ignore */\nconst getDenseUnion = (data, index) => {\n const childIndex = data.type.typeIdToChildIndex[data.typeIds[index]];\n const child = data.children[childIndex];\n return instance.visit(child, data.valueOffsets[index]);\n};\n/** @ignore */\nconst getSparseUnion = (data, index) => {\n const childIndex = data.type.typeIdToChildIndex[data.typeIds[index]];\n const child = data.children[childIndex];\n return instance.visit(child, index);\n};\n/** @ignore */\nconst getDictionary = (data, index) => {\n var _a;\n return (_a = data.dictionary) === null || _a === void 0 ? void 0 : _a.get(data.values[index]);\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getInterval = (data, index) => (data.type.unit === IntervalUnit.DAY_TIME)\n ? getIntervalDayTime(data, index)\n : getIntervalYearMonth(data, index);\n/** @ignore */\nconst getIntervalDayTime = ({ values }, index) => values.subarray(2 * index, 2 * (index + 1));\n/** @ignore */\nconst getIntervalYearMonth = ({ values }, index) => {\n const interval = values[index];\n const int32s = new Int32Array(2);\n int32s[0] = Math.trunc(interval / 12); /* years */\n int32s[1] = Math.trunc(interval % 12); /* months */\n return int32s;\n};\n/** @ignore */\nconst getFixedSizeList = (data, index) => {\n const { stride, children } = data;\n const child = children[0];\n const slice = child.slice(index * stride, stride);\n return new Vector([slice]);\n};\nGetVisitor.prototype.visitNull = wrapGet(getNull);\nGetVisitor.prototype.visitBool = wrapGet(getBool);\nGetVisitor.prototype.visitInt = wrapGet(getInt);\nGetVisitor.prototype.visitInt8 = wrapGet(getNumeric);\nGetVisitor.prototype.visitInt16 = wrapGet(getNumeric);\nGetVisitor.prototype.visitInt32 = wrapGet(getNumeric);\nGetVisitor.prototype.visitInt64 = wrapGet(getBigInts);\nGetVisitor.prototype.visitUint8 = wrapGet(getNumeric);\nGetVisitor.prototype.visitUint16 = wrapGet(getNumeric);\nGetVisitor.prototype.visitUint32 = wrapGet(getNumeric);\nGetVisitor.prototype.visitUint64 = wrapGet(getBigInts);\nGetVisitor.prototype.visitFloat = wrapGet(getFloat);\nGetVisitor.prototype.visitFloat16 = wrapGet(getFloat16);\nGetVisitor.prototype.visitFloat32 = wrapGet(getNumeric);\nGetVisitor.prototype.visitFloat64 = wrapGet(getNumeric);\nGetVisitor.prototype.visitUtf8 = wrapGet(getUtf8);\nGetVisitor.prototype.visitBinary = wrapGet(getBinary);\nGetVisitor.prototype.visitFixedSizeBinary = wrapGet(getFixedSizeBinary);\nGetVisitor.prototype.visitDate = wrapGet(getDate);\nGetVisitor.prototype.visitDateDay = wrapGet(getDateDay);\nGetVisitor.prototype.visitDateMillisecond = wrapGet(getDateMillisecond);\nGetVisitor.prototype.visitTimestamp = wrapGet(getTimestamp);\nGetVisitor.prototype.visitTimestampSecond = wrapGet(getTimestampSecond);\nGetVisitor.prototype.visitTimestampMillisecond = wrapGet(getTimestampMillisecond);\nGetVisitor.prototype.visitTimestampMicrosecond = wrapGet(getTimestampMicrosecond);\nGetVisitor.prototype.visitTimestampNanosecond = wrapGet(getTimestampNanosecond);\nGetVisitor.prototype.visitTime = wrapGet(getTime);\nGetVisitor.prototype.visitTimeSecond = wrapGet(getTimeSecond);\nGetVisitor.prototype.visitTimeMillisecond = wrapGet(getTimeMillisecond);\nGetVisitor.prototype.visitTimeMicrosecond = wrapGet(getTimeMicrosecond);\nGetVisitor.prototype.visitTimeNanosecond = wrapGet(getTimeNanosecond);\nGetVisitor.prototype.visitDecimal = wrapGet(getDecimal);\nGetVisitor.prototype.visitList = wrapGet(getList);\nGetVisitor.prototype.visitStruct = wrapGet(getStruct);\nGetVisitor.prototype.visitUnion = wrapGet(getUnion);\nGetVisitor.prototype.visitDenseUnion = wrapGet(getDenseUnion);\nGetVisitor.prototype.visitSparseUnion = wrapGet(getSparseUnion);\nGetVisitor.prototype.visitDictionary = wrapGet(getDictionary);\nGetVisitor.prototype.visitInterval = wrapGet(getInterval);\nGetVisitor.prototype.visitIntervalDayTime = wrapGet(getIntervalDayTime);\nGetVisitor.prototype.visitIntervalYearMonth = wrapGet(getIntervalYearMonth);\nGetVisitor.prototype.visitFixedSizeList = wrapGet(getFixedSizeList);\nGetVisitor.prototype.visitMap = wrapGet(getMap);\n/** @ignore */\nexport const instance = new GetVisitor();\n\n//# sourceMappingURL=get.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector.mjs';\nimport { valueToString } from '../util/pretty.mjs';\nimport { instance as getVisitor } from '../visitor/get.mjs';\nimport { instance as setVisitor } from '../visitor/set.mjs';\n/** @ignore */ export const kKeys = Symbol.for('keys');\n/** @ignore */ export const kVals = Symbol.for('vals');\nexport class MapRow {\n constructor(slice) {\n this[kKeys] = new Vector([slice.children[0]]).memoize();\n this[kVals] = slice.children[1];\n return new Proxy(this, new MapRowProxyHandler());\n }\n [Symbol.iterator]() {\n return new MapRowIterator(this[kKeys], this[kVals]);\n }\n get size() { return this[kKeys].length; }\n toArray() { return Object.values(this.toJSON()); }\n toJSON() {\n const keys = this[kKeys];\n const vals = this[kVals];\n const json = {};\n for (let i = -1, n = keys.length; ++i < n;) {\n json[keys.get(i)] = getVisitor.visit(vals, i);\n }\n return json;\n }\n toString() {\n return `{${[...this].map(([key, val]) => `${valueToString(key)}: ${valueToString(val)}`).join(', ')}}`;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.toString();\n }\n}\nclass MapRowIterator {\n constructor(keys, vals) {\n this.keys = keys;\n this.vals = vals;\n this.keyIndex = 0;\n this.numKeys = keys.length;\n }\n [Symbol.iterator]() { return this; }\n next() {\n const i = this.keyIndex;\n if (i === this.numKeys) {\n return { done: true, value: null };\n }\n this.keyIndex++;\n return {\n done: false,\n value: [\n this.keys.get(i),\n getVisitor.visit(this.vals, i),\n ]\n };\n }\n}\n/** @ignore */\nclass MapRowProxyHandler {\n isExtensible() { return false; }\n deleteProperty() { return false; }\n preventExtensions() { return true; }\n ownKeys(row) {\n return row[kKeys].toArray().map(String);\n }\n has(row, key) {\n return row[kKeys].includes(key);\n }\n getOwnPropertyDescriptor(row, key) {\n const idx = row[kKeys].indexOf(key);\n if (idx !== -1) {\n return { writable: true, enumerable: true, configurable: true };\n }\n return;\n }\n get(row, key) {\n // Look up key in row first\n if (Reflect.has(row, key)) {\n return row[key];\n }\n const idx = row[kKeys].indexOf(key);\n if (idx !== -1) {\n const val = getVisitor.visit(Reflect.get(row, kVals), idx);\n // Cache key/val lookups\n Reflect.set(row, key, val);\n return val;\n }\n }\n set(row, key, val) {\n const idx = row[kKeys].indexOf(key);\n if (idx !== -1) {\n setVisitor.visit(Reflect.get(row, kVals), idx, val);\n // Cache key/val lookups\n return Reflect.set(row, key, val);\n }\n else if (Reflect.has(row, key)) {\n return Reflect.set(row, key, val);\n }\n return false;\n }\n}\nObject.defineProperties(MapRow.prototype, {\n [Symbol.toStringTag]: { enumerable: false, configurable: false, value: 'Row' },\n [kKeys]: { writable: true, enumerable: false, configurable: false, value: null },\n [kVals]: { writable: true, enumerable: false, configurable: false, value: null },\n});\n\n//# sourceMappingURL=map.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector.mjs';\nimport { MapRow } from '../row/map.mjs';\nimport { StructRow } from '../row/struct.mjs';\nimport { compareArrayLike } from '../util/buffer.mjs';\n/** @ignore */\nexport function clampIndex(source, index, then) {\n const length = source.length;\n const adjust = index > -1 ? index : (length + (index % length));\n return then ? then(source, adjust) : adjust;\n}\n/** @ignore */\nlet tmp;\n/** @ignore */\nexport function clampRange(source, begin, end, then) {\n // Adjust args similar to Array.prototype.slice. Normalize begin/end to\n // clamp between 0 and length, and wrap around on negative indices, e.g.\n // slice(-1, 5) or slice(5, -1)\n const { length: len = 0 } = source;\n let lhs = typeof begin !== 'number' ? 0 : begin;\n let rhs = typeof end !== 'number' ? len : end;\n // wrap around on negative start/end positions\n (lhs < 0) && (lhs = ((lhs % len) + len) % len);\n (rhs < 0) && (rhs = ((rhs % len) + len) % len);\n // ensure lhs <= rhs\n (rhs < lhs) && (tmp = lhs, lhs = rhs, rhs = tmp);\n // ensure rhs <= length\n (rhs > len) && (rhs = len);\n return then ? then(source, lhs, rhs) : [lhs, rhs];\n}\nconst isNaNFast = (value) => value !== value;\n/** @ignore */\nexport function createElementComparator(search) {\n const typeofSearch = typeof search;\n // Compare primitives\n if (typeofSearch !== 'object' || search === null) {\n // Compare NaN\n if (isNaNFast(search)) {\n return isNaNFast;\n }\n return (value) => value === search;\n }\n // Compare Dates\n if (search instanceof Date) {\n const valueOfSearch = search.valueOf();\n return (value) => value instanceof Date ? (value.valueOf() === valueOfSearch) : false;\n }\n // Compare TypedArrays\n if (ArrayBuffer.isView(search)) {\n return (value) => value ? compareArrayLike(search, value) : false;\n }\n // Compare Maps and Rows\n if (search instanceof Map) {\n return createMapComparator(search);\n }\n // Compare Array-likes\n if (Array.isArray(search)) {\n return createArrayLikeComparator(search);\n }\n // Compare Vectors\n if (search instanceof Vector) {\n return createVectorComparator(search);\n }\n return createObjectComparator(search, true);\n // Compare non-empty Objects\n // return createObjectComparator(search, search instanceof Proxy);\n}\n/** @ignore */\nfunction createArrayLikeComparator(lhs) {\n const comparators = [];\n for (let i = -1, n = lhs.length; ++i < n;) {\n comparators[i] = createElementComparator(lhs[i]);\n }\n return createSubElementsComparator(comparators);\n}\n/** @ignore */\nfunction createMapComparator(lhs) {\n let i = -1;\n const comparators = [];\n for (const v of lhs.values())\n comparators[++i] = createElementComparator(v);\n return createSubElementsComparator(comparators);\n}\n/** @ignore */\nfunction createVectorComparator(lhs) {\n const comparators = [];\n for (let i = -1, n = lhs.length; ++i < n;) {\n comparators[i] = createElementComparator(lhs.get(i));\n }\n return createSubElementsComparator(comparators);\n}\n/** @ignore */\nfunction createObjectComparator(lhs, allowEmpty = false) {\n const keys = Object.keys(lhs);\n // Only compare non-empty Objects\n if (!allowEmpty && keys.length === 0) {\n return () => false;\n }\n const comparators = [];\n for (let i = -1, n = keys.length; ++i < n;) {\n comparators[i] = createElementComparator(lhs[keys[i]]);\n }\n return createSubElementsComparator(comparators, keys);\n}\nfunction createSubElementsComparator(comparators, keys) {\n return (rhs) => {\n if (!rhs || typeof rhs !== 'object') {\n return false;\n }\n switch (rhs.constructor) {\n case Array: return compareArray(comparators, rhs);\n case Map:\n return compareObject(comparators, rhs, rhs.keys());\n case MapRow:\n case StructRow:\n case Object:\n case undefined: // support `Object.create(null)` objects\n return compareObject(comparators, rhs, keys || Object.keys(rhs));\n }\n return rhs instanceof Vector ? compareVector(comparators, rhs) : false;\n };\n}\nfunction compareArray(comparators, arr) {\n const n = comparators.length;\n if (arr.length !== n) {\n return false;\n }\n for (let i = -1; ++i < n;) {\n if (!(comparators[i](arr[i]))) {\n return false;\n }\n }\n return true;\n}\nfunction compareVector(comparators, vec) {\n const n = comparators.length;\n if (vec.length !== n) {\n return false;\n }\n for (let i = -1; ++i < n;) {\n if (!(comparators[i](vec.get(i)))) {\n return false;\n }\n }\n return true;\n}\nfunction compareObject(comparators, obj, keys) {\n const lKeyItr = keys[Symbol.iterator]();\n const rKeyItr = obj instanceof Map ? obj.keys() : Object.keys(obj)[Symbol.iterator]();\n const rValItr = obj instanceof Map ? obj.values() : Object.values(obj)[Symbol.iterator]();\n let i = 0;\n const n = comparators.length;\n let rVal = rValItr.next();\n let lKey = lKeyItr.next();\n let rKey = rKeyItr.next();\n for (; i < n && !lKey.done && !rKey.done && !rVal.done; ++i, lKey = lKeyItr.next(), rKey = rKeyItr.next(), rVal = rValItr.next()) {\n if (lKey.value !== rKey.value || !comparators[i](rVal.value)) {\n break;\n }\n }\n if (i === n && lKey.done && rKey.done && rVal.done) {\n return true;\n }\n lKeyItr.return && lKeyItr.return();\n rKeyItr.return && rKeyItr.return();\n rValItr.return && rValItr.return();\n return false;\n}\n\n//# sourceMappingURL=vector.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nexport function getBool(_data, _index, byte, bit) {\n return (byte & 1 << bit) !== 0;\n}\n/** @ignore */\nexport function getBit(_data, _index, byte, bit) {\n return (byte & 1 << bit) >> bit;\n}\n/** @ignore */\nexport function setBool(bytes, index, value) {\n return value ?\n !!(bytes[index >> 3] |= (1 << (index % 8))) || true :\n !(bytes[index >> 3] &= ~(1 << (index % 8))) && false;\n}\n/** @ignore */\nexport function truncateBitmap(offset, length, bitmap) {\n const alignedSize = (bitmap.byteLength + 7) & ~7;\n if (offset > 0 || bitmap.byteLength < alignedSize) {\n const bytes = new Uint8Array(alignedSize);\n // If the offset is a multiple of 8 bits, it's safe to slice the bitmap\n bytes.set(offset % 8 === 0 ? bitmap.subarray(offset >> 3) :\n // Otherwise iterate each bit from the offset and return a new one\n packBools(new BitIterator(bitmap, offset, length, null, getBool)).subarray(0, alignedSize));\n return bytes;\n }\n return bitmap;\n}\n/** @ignore */\nexport function packBools(values) {\n const xs = [];\n let i = 0, bit = 0, byte = 0;\n for (const value of values) {\n value && (byte |= 1 << bit);\n if (++bit === 8) {\n xs[i++] = byte;\n byte = bit = 0;\n }\n }\n if (i === 0 || bit > 0) {\n xs[i++] = byte;\n }\n const b = new Uint8Array((xs.length + 7) & ~7);\n b.set(xs);\n return b;\n}\n/** @ignore */\nexport class BitIterator {\n constructor(bytes, begin, length, context, get) {\n this.bytes = bytes;\n this.length = length;\n this.context = context;\n this.get = get;\n this.bit = begin % 8;\n this.byteIndex = begin >> 3;\n this.byte = bytes[this.byteIndex++];\n this.index = 0;\n }\n next() {\n if (this.index < this.length) {\n if (this.bit === 8) {\n this.bit = 0;\n this.byte = this.bytes[this.byteIndex++];\n }\n return {\n value: this.get(this.context, this.index++, this.byte, this.bit++)\n };\n }\n return { done: true, value: null };\n }\n [Symbol.iterator]() {\n return this;\n }\n}\n/**\n * Compute the population count (the number of bits set to 1) for a range of bits in a Uint8Array.\n * @param vector The Uint8Array of bits for which to compute the population count.\n * @param lhs The range's left-hand side (or start) bit\n * @param rhs The range's right-hand side (or end) bit\n */\n/** @ignore */\nexport function popcnt_bit_range(data, lhs, rhs) {\n if (rhs - lhs <= 0) {\n return 0;\n }\n // If the bit range is less than one byte, sum the 1 bits in the bit range\n if (rhs - lhs < 8) {\n let sum = 0;\n for (const bit of new BitIterator(data, lhs, rhs - lhs, data, getBit)) {\n sum += bit;\n }\n return sum;\n }\n // Get the next lowest multiple of 8 from the right hand side\n const rhsInside = rhs >> 3 << 3;\n // Get the next highest multiple of 8 from the left hand side\n const lhsInside = lhs + (lhs % 8 === 0 ? 0 : 8 - lhs % 8);\n return (\n // Get the popcnt of bits between the left hand side, and the next highest multiple of 8\n popcnt_bit_range(data, lhs, lhsInside) +\n // Get the popcnt of bits between the right hand side, and the next lowest multiple of 8\n popcnt_bit_range(data, rhsInside, rhs) +\n // Get the popcnt of all bits between the left and right hand sides' multiples of 8\n popcnt_array(data, lhsInside >> 3, (rhsInside - lhsInside) >> 3));\n}\n/** @ignore */\nexport function popcnt_array(arr, byteOffset, byteLength) {\n let cnt = 0, pos = Math.trunc(byteOffset);\n const view = new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n const len = byteLength === void 0 ? arr.byteLength : pos + byteLength;\n while (len - pos >= 4) {\n cnt += popcnt_uint32(view.getUint32(pos));\n pos += 4;\n }\n while (len - pos >= 2) {\n cnt += popcnt_uint32(view.getUint16(pos));\n pos += 2;\n }\n while (len - pos >= 1) {\n cnt += popcnt_uint32(view.getUint8(pos));\n pos += 1;\n }\n return cnt;\n}\n/** @ignore */\nexport function popcnt_uint32(uint32) {\n let i = Math.trunc(uint32);\n i = i - ((i >>> 1) & 0x55555555);\n i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);\n return (((i + (i >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;\n}\n\n//# sourceMappingURL=bit.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from './vector.mjs';\nimport { BufferType, Type } from './enum.mjs';\nimport { DataType, strideForType } from './type.mjs';\nimport { popcnt_bit_range, truncateBitmap } from './util/bit.mjs';\n/** @ignore */ export const kUnknownNullCount = -1;\n/**\n * Data structure underlying {@link Vector}s. Use the convenience method {@link makeData}.\n */\nexport class Data {\n constructor(type, offset, length, nullCount, buffers, children = [], dictionary) {\n this.type = type;\n this.children = children;\n this.dictionary = dictionary;\n this.offset = Math.floor(Math.max(offset || 0, 0));\n this.length = Math.floor(Math.max(length || 0, 0));\n this._nullCount = Math.floor(Math.max(nullCount || 0, -1));\n let buffer;\n if (buffers instanceof Data) {\n this.stride = buffers.stride;\n this.values = buffers.values;\n this.typeIds = buffers.typeIds;\n this.nullBitmap = buffers.nullBitmap;\n this.valueOffsets = buffers.valueOffsets;\n }\n else {\n this.stride = strideForType(type);\n if (buffers) {\n (buffer = buffers[0]) && (this.valueOffsets = buffer);\n (buffer = buffers[1]) && (this.values = buffer);\n (buffer = buffers[2]) && (this.nullBitmap = buffer);\n (buffer = buffers[3]) && (this.typeIds = buffer);\n }\n }\n this.nullable = this._nullCount !== 0 && this.nullBitmap && this.nullBitmap.byteLength > 0;\n }\n get typeId() { return this.type.typeId; }\n get ArrayType() { return this.type.ArrayType; }\n get buffers() {\n return [this.valueOffsets, this.values, this.nullBitmap, this.typeIds];\n }\n get byteLength() {\n let byteLength = 0;\n const { valueOffsets, values, nullBitmap, typeIds } = this;\n valueOffsets && (byteLength += valueOffsets.byteLength);\n values && (byteLength += values.byteLength);\n nullBitmap && (byteLength += nullBitmap.byteLength);\n typeIds && (byteLength += typeIds.byteLength);\n return this.children.reduce((byteLength, child) => byteLength + child.byteLength, byteLength);\n }\n get nullCount() {\n let nullCount = this._nullCount;\n let nullBitmap;\n if (nullCount <= kUnknownNullCount && (nullBitmap = this.nullBitmap)) {\n this._nullCount = nullCount = this.length - popcnt_bit_range(nullBitmap, this.offset, this.offset + this.length);\n }\n return nullCount;\n }\n getValid(index) {\n if (this.nullable && this.nullCount > 0) {\n const pos = this.offset + index;\n const val = this.nullBitmap[pos >> 3];\n return (val & (1 << (pos % 8))) !== 0;\n }\n return true;\n }\n setValid(index, value) {\n // Don't interact w/ nullBitmap if not nullable\n if (!this.nullable) {\n return value;\n }\n // If no null bitmap, initialize one on the fly\n if (!this.nullBitmap || this.nullBitmap.byteLength <= (index >> 3)) {\n const { nullBitmap } = this._changeLengthAndBackfillNullBitmap(this.length);\n Object.assign(this, { nullBitmap, _nullCount: 0 });\n }\n const { nullBitmap, offset } = this;\n const pos = (offset + index) >> 3;\n const bit = (offset + index) % 8;\n const val = (nullBitmap[pos] >> bit) & 1;\n // If `val` is truthy and the current bit is 0, flip it to 1 and increment `_nullCount`.\n // If `val` is falsey and the current bit is 1, flip it to 0 and decrement `_nullCount`.\n value ? val === 0 && ((nullBitmap[pos] |= (1 << bit)), (this._nullCount = this.nullCount + 1))\n : val === 1 && ((nullBitmap[pos] &= ~(1 << bit)), (this._nullCount = this.nullCount - 1));\n return value;\n }\n clone(type = this.type, offset = this.offset, length = this.length, nullCount = this._nullCount, buffers = this, children = this.children) {\n return new Data(type, offset, length, nullCount, buffers, children, this.dictionary);\n }\n slice(offset, length) {\n const { stride, typeId, children } = this;\n // +true === 1, +false === 0, so this means\n // we keep nullCount at 0 if it's already 0,\n // otherwise set to the invalidated flag -1\n const nullCount = +(this._nullCount === 0) - 1;\n const childStride = typeId === 16 /* FixedSizeList */ ? stride : 1;\n const buffers = this._sliceBuffers(offset, length, stride, typeId);\n return this.clone(this.type, this.offset + offset, length, nullCount, buffers, \n // Don't slice children if we have value offsets (the variable-width types)\n (children.length === 0 || this.valueOffsets) ? children : this._sliceChildren(children, childStride * offset, childStride * length));\n }\n _changeLengthAndBackfillNullBitmap(newLength) {\n if (this.typeId === Type.Null) {\n return this.clone(this.type, 0, newLength, 0);\n }\n const { length, nullCount } = this;\n // start initialized with 0s (nulls), then fill from 0 to length with 1s (not null)\n const bitmap = new Uint8Array(((newLength + 63) & ~63) >> 3).fill(255, 0, length >> 3);\n // set all the bits in the last byte (up to bit `length - length % 8`) to 1 (not null)\n bitmap[length >> 3] = (1 << (length - (length & ~7))) - 1;\n // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n if (nullCount > 0) {\n bitmap.set(truncateBitmap(this.offset, length, this.nullBitmap), 0);\n }\n const buffers = this.buffers;\n buffers[BufferType.VALIDITY] = bitmap;\n return this.clone(this.type, 0, newLength, nullCount + (newLength - length), buffers);\n }\n _sliceBuffers(offset, length, stride, typeId) {\n let arr;\n const { buffers } = this;\n // If typeIds exist, slice the typeIds buffer\n (arr = buffers[BufferType.TYPE]) && (buffers[BufferType.TYPE] = arr.subarray(offset, offset + length));\n // If offsets exist, only slice the offsets buffer\n (arr = buffers[BufferType.OFFSET]) && (buffers[BufferType.OFFSET] = arr.subarray(offset, offset + length + 1)) ||\n // Otherwise if no offsets, slice the data buffer. Don't slice the data vector for Booleans, since the offset goes by bits not bytes\n (arr = buffers[BufferType.DATA]) && (buffers[BufferType.DATA] = typeId === 6 ? arr : arr.subarray(stride * offset, stride * (offset + length)));\n return buffers;\n }\n _sliceChildren(children, offset, length) {\n return children.map((child) => child.slice(offset, length));\n }\n}\nData.prototype.children = Object.freeze([]);\nimport { Visitor } from './visitor.mjs';\nimport { toArrayBufferView, toInt32Array, toUint8Array } from './util/buffer.mjs';\nclass MakeDataVisitor extends Visitor {\n visit(props) {\n return this.getVisitFn(props['type']).call(this, props);\n }\n visitNull(props) {\n const { ['type']: type, ['offset']: offset = 0, ['length']: length = 0, } = props;\n return new Data(type, offset, length, 0);\n }\n visitBool(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length >> 3, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitInt(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitFloat(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitUtf8(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const data = toUint8Array(props['data']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n }\n visitBinary(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const data = toUint8Array(props['data']);\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n }\n visitFixedSizeBinary(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitDate(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitTimestamp(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitTime(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitDecimal(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitList(props) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n }\n visitStruct(props) {\n const { ['type']: type, ['offset']: offset = 0, ['children']: children = [] } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const { length = children.reduce((len, { length }) => Math.max(len, length), 0), nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap], children);\n }\n visitUnion(props) {\n const { ['type']: type, ['offset']: offset = 0, ['children']: children = [] } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const typeIds = toArrayBufferView(type.ArrayType, props['typeIds']);\n const { ['length']: length = typeIds.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n if (DataType.isSparseUnion(type)) {\n return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap, typeIds], children);\n }\n const valueOffsets = toInt32Array(props['valueOffsets']);\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap, typeIds], children);\n }\n visitDictionary(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.indices.ArrayType, props['data']);\n const { ['dictionary']: dictionary = new Vector([new MakeDataVisitor().visit({ type: type.dictionary })]) } = props;\n const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap], [], dictionary);\n }\n visitInterval(props) {\n const { ['type']: type, ['offset']: offset = 0 } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const data = toArrayBufferView(type.ArrayType, props['data']);\n const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n }\n visitFixedSizeList(props) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child = new MakeDataVisitor().visit({ type: type.valueType }) } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const { ['length']: length = child.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap], [child]);\n }\n visitMap(props) {\n const { ['type']: type, ['offset']: offset = 0, ['child']: child = new MakeDataVisitor().visit({ type: type.childType }) } = props;\n const nullBitmap = toUint8Array(props['nullBitmap']);\n const valueOffsets = toInt32Array(props['valueOffsets']);\n const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n }\n}\nexport function makeData(props) {\n return new MakeDataVisitor().visit(props);\n}\n\n//# sourceMappingURL=data.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nexport class ChunkedIterator {\n constructor(numChunks = 0, getChunkIterator) {\n this.numChunks = numChunks;\n this.getChunkIterator = getChunkIterator;\n this.chunkIndex = 0;\n this.chunkIterator = this.getChunkIterator(0);\n }\n next() {\n while (this.chunkIndex < this.numChunks) {\n const next = this.chunkIterator.next();\n if (!next.done) {\n return next;\n }\n if (++this.chunkIndex < this.numChunks) {\n this.chunkIterator = this.getChunkIterator(this.chunkIndex);\n }\n }\n return { done: true, value: null };\n }\n [Symbol.iterator]() {\n return this;\n }\n}\n/** @ignore */\nexport function computeChunkNullCounts(chunks) {\n return chunks.reduce((nullCount, chunk) => nullCount + chunk.nullCount, 0);\n}\n/** @ignore */\nexport function computeChunkOffsets(chunks) {\n return chunks.reduce((offsets, chunk, index) => {\n offsets[index + 1] = offsets[index] + chunk.length;\n return offsets;\n }, new Uint32Array(chunks.length + 1));\n}\n/** @ignore */\nexport function sliceChunks(chunks, offsets, begin, end) {\n const slices = [];\n for (let i = -1, n = chunks.length; ++i < n;) {\n const chunk = chunks[i];\n const offset = offsets[i];\n const { length } = chunk;\n // Stop if the child is to the right of the slice boundary\n if (offset >= end) {\n break;\n }\n // Exclude children to the left of of the slice boundary\n if (begin >= offset + length) {\n continue;\n }\n // Include entire child if between both left and right boundaries\n if (offset >= begin && (offset + length) <= end) {\n slices.push(chunk);\n continue;\n }\n // Include the child slice that overlaps one of the slice boundaries\n const from = Math.max(0, begin - offset);\n const to = Math.min(end - offset, length);\n slices.push(chunk.slice(from, to - from));\n }\n if (slices.length === 0) {\n slices.push(chunks[0].slice(0, 0));\n }\n return slices;\n}\n/** @ignore */\nexport function binarySearch(chunks, offsets, idx, fn) {\n let lhs = 0, mid = 0, rhs = offsets.length - 1;\n do {\n if (lhs >= rhs - 1) {\n return (idx < offsets[rhs]) ? fn(chunks, lhs, idx - offsets[lhs]) : null;\n }\n mid = lhs + (Math.trunc((rhs - lhs) * .5));\n idx < offsets[mid] ? (rhs = mid) : (lhs = mid);\n } while (lhs < rhs);\n}\n/** @ignore */\nexport function isChunkedValid(data, index) {\n return data.getValid(index);\n}\n/** @ignore */\nexport function wrapChunkedCall1(fn) {\n function chunkedFn(chunks, i, j) { return fn(chunks[i], j); }\n return function (index) {\n const data = this.data;\n return binarySearch(data, this._offsets, index, chunkedFn);\n };\n}\n/** @ignore */\nexport function wrapChunkedCall2(fn) {\n let _2;\n function chunkedFn(chunks, i, j) { return fn(chunks[i], j, _2); }\n return function (index, value) {\n const data = this.data;\n _2 = value;\n const result = binarySearch(data, this._offsets, index, chunkedFn);\n _2 = undefined;\n return result;\n };\n}\n/** @ignore */\nexport function wrapChunkedIndexOf(indexOf) {\n let _1;\n function chunkedIndexOf(data, chunkIndex, fromIndex) {\n let begin = fromIndex, index = 0, total = 0;\n for (let i = chunkIndex - 1, n = data.length; ++i < n;) {\n const chunk = data[i];\n if (~(index = indexOf(chunk, _1, begin))) {\n return total + index;\n }\n begin = 0;\n total += chunk.length;\n }\n return -1;\n }\n return function (element, offset) {\n _1 = element;\n const data = this.data;\n const result = typeof offset !== 'number'\n ? chunkedIndexOf(data, 0, 0)\n : binarySearch(data, this._offsets, offset, chunkedIndexOf);\n _1 = undefined;\n return result;\n };\n}\n\n//# sourceMappingURL=chunk.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor.mjs';\nimport { instance as getVisitor } from './get.mjs';\nimport { getBool, BitIterator } from '../util/bit.mjs';\nimport { createElementComparator } from '../util/vector.mjs';\n/** @ignore */\nexport class IndexOfVisitor extends Visitor {\n}\n/** @ignore */\nfunction nullIndexOf(data, searchElement) {\n // if you're looking for nulls and the vector isn't empty, we've got 'em!\n return searchElement === null && data.length > 0 ? 0 : -1;\n}\n/** @ignore */\nfunction indexOfNull(data, fromIndex) {\n const { nullBitmap } = data;\n if (!nullBitmap || data.nullCount <= 0) {\n return -1;\n }\n let i = 0;\n for (const isValid of new BitIterator(nullBitmap, data.offset + (fromIndex || 0), data.length, nullBitmap, getBool)) {\n if (!isValid) {\n return i;\n }\n ++i;\n }\n return -1;\n}\n/** @ignore */\nfunction indexOfValue(data, searchElement, fromIndex) {\n if (searchElement === undefined) {\n return -1;\n }\n if (searchElement === null) {\n return indexOfNull(data, fromIndex);\n }\n const get = getVisitor.getVisitFn(data);\n const compare = createElementComparator(searchElement);\n for (let i = (fromIndex || 0) - 1, n = data.length; ++i < n;) {\n if (compare(get(data, i))) {\n return i;\n }\n }\n return -1;\n}\n/** @ignore */\nfunction indexOfUnion(data, searchElement, fromIndex) {\n // Unions are special -- they do have a nullBitmap, but so can their children.\n // If the searchElement is null, we don't know whether it came from the Union's\n // bitmap or one of its childrens'. So we don't interrogate the Union's bitmap,\n // since that will report the wrong index if a child has a null before the Union.\n const get = getVisitor.getVisitFn(data);\n const compare = createElementComparator(searchElement);\n for (let i = (fromIndex || 0) - 1, n = data.length; ++i < n;) {\n if (compare(get(data, i))) {\n return i;\n }\n }\n return -1;\n}\nIndexOfVisitor.prototype.visitNull = nullIndexOf;\nIndexOfVisitor.prototype.visitBool = indexOfValue;\nIndexOfVisitor.prototype.visitInt = indexOfValue;\nIndexOfVisitor.prototype.visitInt8 = indexOfValue;\nIndexOfVisitor.prototype.visitInt16 = indexOfValue;\nIndexOfVisitor.prototype.visitInt32 = indexOfValue;\nIndexOfVisitor.prototype.visitInt64 = indexOfValue;\nIndexOfVisitor.prototype.visitUint8 = indexOfValue;\nIndexOfVisitor.prototype.visitUint16 = indexOfValue;\nIndexOfVisitor.prototype.visitUint32 = indexOfValue;\nIndexOfVisitor.prototype.visitUint64 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat = indexOfValue;\nIndexOfVisitor.prototype.visitFloat16 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat32 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat64 = indexOfValue;\nIndexOfVisitor.prototype.visitUtf8 = indexOfValue;\nIndexOfVisitor.prototype.visitBinary = indexOfValue;\nIndexOfVisitor.prototype.visitFixedSizeBinary = indexOfValue;\nIndexOfVisitor.prototype.visitDate = indexOfValue;\nIndexOfVisitor.prototype.visitDateDay = indexOfValue;\nIndexOfVisitor.prototype.visitDateMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestamp = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampSecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampMicrosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampNanosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTime = indexOfValue;\nIndexOfVisitor.prototype.visitTimeSecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeMicrosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeNanosecond = indexOfValue;\nIndexOfVisitor.prototype.visitDecimal = indexOfValue;\nIndexOfVisitor.prototype.visitList = indexOfValue;\nIndexOfVisitor.prototype.visitStruct = indexOfValue;\nIndexOfVisitor.prototype.visitUnion = indexOfValue;\nIndexOfVisitor.prototype.visitDenseUnion = indexOfUnion;\nIndexOfVisitor.prototype.visitSparseUnion = indexOfUnion;\nIndexOfVisitor.prototype.visitDictionary = indexOfValue;\nIndexOfVisitor.prototype.visitInterval = indexOfValue;\nIndexOfVisitor.prototype.visitIntervalDayTime = indexOfValue;\nIndexOfVisitor.prototype.visitIntervalYearMonth = indexOfValue;\nIndexOfVisitor.prototype.visitFixedSizeList = indexOfValue;\nIndexOfVisitor.prototype.visitMap = indexOfValue;\n/** @ignore */\nexport const instance = new IndexOfVisitor();\n\n//# sourceMappingURL=indexof.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor.mjs';\nimport { Type, Precision } from '../enum.mjs';\nimport { Float, Int, Time, } from '../type.mjs';\nimport { ChunkedIterator } from '../util/chunk.mjs';\n/** @ignore */\nexport class IteratorVisitor extends Visitor {\n}\n/** @ignore */\nfunction vectorIterator(vector) {\n const { type } = vector;\n // Fast case, defer to native iterators if possible\n if (vector.nullCount === 0 && vector.stride === 1 && ((type.typeId === Type.Timestamp) ||\n (type instanceof Int && type.bitWidth !== 64) ||\n (type instanceof Time && type.bitWidth !== 64) ||\n (type instanceof Float && type.precision !== Precision.HALF))) {\n return new ChunkedIterator(vector.data.length, (chunkIndex) => {\n const data = vector.data[chunkIndex];\n return data.values.subarray(0, data.length)[Symbol.iterator]();\n });\n }\n // Otherwise, iterate manually\n let offset = 0;\n return new ChunkedIterator(vector.data.length, (chunkIndex) => {\n const data = vector.data[chunkIndex];\n const length = data.length;\n const inner = vector.slice(offset, offset + length);\n offset += length;\n return new VectorIterator(inner);\n });\n}\n/** @ignore */\nclass VectorIterator {\n constructor(vector) {\n this.vector = vector;\n this.index = 0;\n }\n next() {\n if (this.index < this.vector.length) {\n return {\n value: this.vector.get(this.index++)\n };\n }\n return { done: true, value: null };\n }\n [Symbol.iterator]() {\n return this;\n }\n}\nIteratorVisitor.prototype.visitNull = vectorIterator;\nIteratorVisitor.prototype.visitBool = vectorIterator;\nIteratorVisitor.prototype.visitInt = vectorIterator;\nIteratorVisitor.prototype.visitInt8 = vectorIterator;\nIteratorVisitor.prototype.visitInt16 = vectorIterator;\nIteratorVisitor.prototype.visitInt32 = vectorIterator;\nIteratorVisitor.prototype.visitInt64 = vectorIterator;\nIteratorVisitor.prototype.visitUint8 = vectorIterator;\nIteratorVisitor.prototype.visitUint16 = vectorIterator;\nIteratorVisitor.prototype.visitUint32 = vectorIterator;\nIteratorVisitor.prototype.visitUint64 = vectorIterator;\nIteratorVisitor.prototype.visitFloat = vectorIterator;\nIteratorVisitor.prototype.visitFloat16 = vectorIterator;\nIteratorVisitor.prototype.visitFloat32 = vectorIterator;\nIteratorVisitor.prototype.visitFloat64 = vectorIterator;\nIteratorVisitor.prototype.visitUtf8 = vectorIterator;\nIteratorVisitor.prototype.visitBinary = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeBinary = vectorIterator;\nIteratorVisitor.prototype.visitDate = vectorIterator;\nIteratorVisitor.prototype.visitDateDay = vectorIterator;\nIteratorVisitor.prototype.visitDateMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestamp = vectorIterator;\nIteratorVisitor.prototype.visitTimestampSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitTime = vectorIterator;\nIteratorVisitor.prototype.visitTimeSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitDecimal = vectorIterator;\nIteratorVisitor.prototype.visitList = vectorIterator;\nIteratorVisitor.prototype.visitStruct = vectorIterator;\nIteratorVisitor.prototype.visitUnion = vectorIterator;\nIteratorVisitor.prototype.visitDenseUnion = vectorIterator;\nIteratorVisitor.prototype.visitSparseUnion = vectorIterator;\nIteratorVisitor.prototype.visitDictionary = vectorIterator;\nIteratorVisitor.prototype.visitInterval = vectorIterator;\nIteratorVisitor.prototype.visitIntervalDayTime = vectorIterator;\nIteratorVisitor.prototype.visitIntervalYearMonth = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeList = vectorIterator;\nIteratorVisitor.prototype.visitMap = vectorIterator;\n/** @ignore */\nexport const instance = new IteratorVisitor();\n\n//# sourceMappingURL=iterator.mjs.map\n","/* istanbul ignore file */\nimport { Visitor } from '../visitor.mjs';\nimport { TimeUnit, UnionMode } from '../enum.mjs';\n/** @ignore */ const sum = (x, y) => x + y;\n/** @ignore */\nexport class GetByteLengthVisitor extends Visitor {\n visitNull(____, _) {\n return 0;\n }\n visitInt(data, _) {\n return data.type.bitWidth / 8;\n }\n visitFloat(data, _) {\n return data.type.ArrayType.BYTES_PER_ELEMENT;\n }\n visitBool(____, _) {\n return 1 / 8;\n }\n visitDecimal(data, _) {\n return data.type.bitWidth / 8;\n }\n visitDate(data, _) {\n return (data.type.unit + 1) * 4;\n }\n visitTime(data, _) {\n return data.type.bitWidth / 8;\n }\n visitTimestamp(data, _) {\n return data.type.unit === TimeUnit.SECOND ? 4 : 8;\n }\n visitInterval(data, _) {\n return (data.type.unit + 1) * 4;\n }\n visitStruct(data, i) {\n return data.children.reduce((total, child) => total + instance.visit(child, i), 0);\n }\n visitFixedSizeBinary(data, _) {\n return data.type.byteWidth;\n }\n visitMap(data, i) {\n // 4 + 4 for the indices\n return 8 + data.children.reduce((total, child) => total + instance.visit(child, i), 0);\n }\n visitDictionary(data, i) {\n var _a;\n return (data.type.indices.bitWidth / 8) + (((_a = data.dictionary) === null || _a === void 0 ? void 0 : _a.getByteLength(data.values[i])) || 0);\n }\n}\n/** @ignore */\nconst getUtf8ByteLength = ({ valueOffsets }, index) => {\n // 4 + 4 for the indices, `end - start` for the data bytes\n return 8 + (valueOffsets[index + 1] - valueOffsets[index]);\n};\n/** @ignore */\nconst getBinaryByteLength = ({ valueOffsets }, index) => {\n // 4 + 4 for the indices, `end - start` for the data bytes\n return 8 + (valueOffsets[index + 1] - valueOffsets[index]);\n};\n/** @ignore */\nconst getListByteLength = ({ valueOffsets, stride, children }, index) => {\n const child = children[0];\n const { [index * stride]: start } = valueOffsets;\n const { [index * stride + 1]: end } = valueOffsets;\n const visit = instance.getVisitFn(child.type);\n const slice = child.slice(start, end - start);\n let size = 8; // 4 + 4 for the indices\n for (let idx = -1, len = end - start; ++idx < len;) {\n size += visit(slice, idx);\n }\n return size;\n};\n/** @ignore */\nconst getFixedSizeListByteLength = ({ stride, children }, index) => {\n const child = children[0];\n const slice = child.slice(index * stride, stride);\n const visit = instance.getVisitFn(child.type);\n let size = 0;\n for (let idx = -1, len = slice.length; ++idx < len;) {\n size += visit(slice, idx);\n }\n return size;\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getUnionByteLength = (data, index) => {\n return data.type.mode === UnionMode.Dense ?\n getDenseUnionByteLength(data, index) :\n getSparseUnionByteLength(data, index);\n};\n/** @ignore */\nconst getDenseUnionByteLength = ({ type, children, typeIds, valueOffsets }, index) => {\n const childIndex = type.typeIdToChildIndex[typeIds[index]];\n // 4 for the typeId, 4 for the valueOffsets, then the child at the offset\n return 8 + instance.visit(children[childIndex], valueOffsets[index]);\n};\n/** @ignore */\nconst getSparseUnionByteLength = ({ children }, index) => {\n // 4 for the typeId, then once each for the children at this index\n return 4 + instance.visitMany(children, children.map(() => index)).reduce(sum, 0);\n};\nGetByteLengthVisitor.prototype.visitUtf8 = getUtf8ByteLength;\nGetByteLengthVisitor.prototype.visitBinary = getBinaryByteLength;\nGetByteLengthVisitor.prototype.visitList = getListByteLength;\nGetByteLengthVisitor.prototype.visitFixedSizeList = getFixedSizeListByteLength;\nGetByteLengthVisitor.prototype.visitUnion = getUnionByteLength;\nGetByteLengthVisitor.prototype.visitDenseUnion = getDenseUnionByteLength;\nGetByteLengthVisitor.prototype.visitSparseUnion = getSparseUnionByteLength;\n/** @ignore */\nexport const instance = new GetByteLengthVisitor();\n\n//# sourceMappingURL=bytelength.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nvar _a;\nimport { Type } from './enum.mjs';\nimport { clampRange } from './util/vector.mjs';\nimport { DataType, strideForType } from './type.mjs';\nimport { Data, makeData } from './data.mjs';\nimport { isChunkedValid, computeChunkOffsets, computeChunkNullCounts, sliceChunks, wrapChunkedCall1, wrapChunkedCall2, wrapChunkedIndexOf, } from './util/chunk.mjs';\nimport { BigInt64Array, BigUint64Array } from './util/compat.mjs';\nimport { instance as getVisitor } from './visitor/get.mjs';\nimport { instance as setVisitor } from './visitor/set.mjs';\nimport { instance as indexOfVisitor } from './visitor/indexof.mjs';\nimport { instance as iteratorVisitor } from './visitor/iterator.mjs';\nimport { instance as byteLengthVisitor } from './visitor/bytelength.mjs';\nconst visitorsByTypeId = {};\nconst vectorPrototypesByTypeId = {};\n/**\n * Array-like data structure. Use the convenience method {@link makeVector} and {@link vectorFromArray} to create vectors.\n */\nexport class Vector {\n constructor(input) {\n var _b, _c, _d;\n const data = input[0] instanceof Vector\n ? input.flatMap(x => x.data)\n : input;\n if (data.length === 0 || data.some((x) => !(x instanceof Data))) {\n throw new TypeError('Vector constructor expects an Array of Data instances.');\n }\n const type = (_b = data[0]) === null || _b === void 0 ? void 0 : _b.type;\n switch (data.length) {\n case 0:\n this._offsets = [0];\n break;\n case 1: {\n // special case for unchunked vectors\n const { get, set, indexOf, byteLength } = visitorsByTypeId[type.typeId];\n const unchunkedData = data[0];\n this.isValid = (index) => isChunkedValid(unchunkedData, index);\n this.get = (index) => get(unchunkedData, index);\n this.set = (index, value) => set(unchunkedData, index, value);\n this.indexOf = (index) => indexOf(unchunkedData, index);\n this.getByteLength = (index) => byteLength(unchunkedData, index);\n this._offsets = [0, unchunkedData.length];\n break;\n }\n default:\n Object.setPrototypeOf(this, vectorPrototypesByTypeId[type.typeId]);\n this._offsets = computeChunkOffsets(data);\n break;\n }\n this.data = data;\n this.type = type;\n this.stride = strideForType(type);\n this.numChildren = (_d = (_c = type.children) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;\n this.length = this._offsets[this._offsets.length - 1];\n }\n /**\n * The aggregate size (in bytes) of this Vector's buffers and/or child Vectors.\n */\n get byteLength() {\n if (this._byteLength === -1) {\n this._byteLength = this.data.reduce((byteLength, data) => byteLength + data.byteLength, 0);\n }\n return this._byteLength;\n }\n /**\n * The number of null elements in this Vector.\n */\n get nullCount() {\n if (this._nullCount === -1) {\n this._nullCount = computeChunkNullCounts(this.data);\n }\n return this._nullCount;\n }\n /**\n * The Array or TypedAray constructor used for the JS representation\n * of the element's values in {@link Vector.prototype.toArray `toArray()`}.\n */\n get ArrayType() { return this.type.ArrayType; }\n /**\n * The name that should be printed when the Vector is logged in a message.\n */\n get [Symbol.toStringTag]() {\n return `${this.VectorName}<${this.type[Symbol.toStringTag]}>`;\n }\n /**\n * The name of this Vector.\n */\n get VectorName() { return `${Type[this.type.typeId]}Vector`; }\n /**\n * Check whether an element is null.\n * @param index The index at which to read the validity bitmap.\n */\n // @ts-ignore\n isValid(index) { return false; }\n /**\n * Get an element value by position.\n * @param index The index of the element to read.\n */\n // @ts-ignore\n get(index) { return null; }\n /**\n * Set an element value by position.\n * @param index The index of the element to write.\n * @param value The value to set.\n */\n // @ts-ignore\n set(index, value) { return; }\n /**\n * Retrieve the index of the first occurrence of a value in an Vector.\n * @param element The value to locate in the Vector.\n * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n */\n // @ts-ignore\n indexOf(element, offset) { return -1; }\n includes(element, offset) { return this.indexOf(element, offset) > 0; }\n /**\n * Get the size in bytes of an element by index.\n * @param index The index at which to get the byteLength.\n */\n // @ts-ignore\n getByteLength(index) { return 0; }\n /**\n * Iterator for the Vector's elements.\n */\n [Symbol.iterator]() {\n return iteratorVisitor.visit(this);\n }\n /**\n * Combines two or more Vectors of the same type.\n * @param others Additional Vectors to add to the end of this Vector.\n */\n concat(...others) {\n return new Vector(this.data.concat(others.flatMap((x) => x.data).flat(Number.POSITIVE_INFINITY)));\n }\n /**\n * Return a zero-copy sub-section of this Vector.\n * @param start The beginning of the specified portion of the Vector.\n * @param end The end of the specified portion of the Vector. This is exclusive of the element at the index 'end'.\n */\n slice(begin, end) {\n return new Vector(clampRange(this, begin, end, ({ data, _offsets }, begin, end) => sliceChunks(data, _offsets, begin, end)));\n }\n toJSON() { return [...this]; }\n /**\n * Return a JavaScript Array or TypedArray of the Vector's elements.\n *\n * @note If this Vector contains a single Data chunk and the Vector's type is a\n * primitive numeric type corresponding to one of the JavaScript TypedArrays, this\n * method returns a zero-copy slice of the underlying TypedArray values. If there's\n * more than one chunk, the resulting TypedArray will be a copy of the data from each\n * chunk's underlying TypedArray values.\n *\n * @returns An Array or TypedArray of the Vector's elements, based on the Vector's DataType.\n */\n toArray() {\n const { type, data, length, stride, ArrayType } = this;\n // Fast case, return subarray if possible\n switch (type.typeId) {\n case Type.Int:\n case Type.Float:\n case Type.Decimal:\n case Type.Time:\n case Type.Timestamp:\n switch (data.length) {\n case 0: return new ArrayType();\n case 1: return data[0].values.subarray(0, length * stride);\n default: return data.reduce((memo, { values, length: chunk_length }) => {\n memo.array.set(values.subarray(0, chunk_length * stride), memo.offset);\n memo.offset += chunk_length * stride;\n return memo;\n }, { array: new ArrayType(length * stride), offset: 0 }).array;\n }\n }\n // Otherwise if not primitive, slow copy\n return [...this];\n }\n /**\n * Returns a string representation of the Vector.\n *\n * @returns A string representation of the Vector.\n */\n toString() {\n return `[${[...this].join(',')}]`;\n }\n /**\n * Returns a child Vector by name, or null if this Vector has no child with the given name.\n * @param name The name of the child to retrieve.\n */\n getChild(name) {\n var _b;\n return this.getChildAt((_b = this.type.children) === null || _b === void 0 ? void 0 : _b.findIndex((f) => f.name === name));\n }\n /**\n * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n * @param index The index of the child to retrieve.\n */\n getChildAt(index) {\n if (index > -1 && index < this.numChildren) {\n return new Vector(this.data.map(({ children }) => children[index]));\n }\n return null;\n }\n get isMemoized() {\n if (DataType.isDictionary(this.type)) {\n return this.data[0].dictionary.isMemoized;\n }\n return false;\n }\n /**\n * Adds memoization to the Vector's {@link get} method. For dictionary\n * vectors, this method return a vector that memoizes only the dictionary\n * values.\n *\n * Memoization is very useful when decoding a value is expensive such as\n * Uft8. The memoization creates a cache of the size of the Vector and\n * therfore increases memory usage.\n *\n * @returns A new vector that memoizes calls to {@link get}.\n */\n memoize() {\n if (DataType.isDictionary(this.type)) {\n const dictionary = new MemoizedVector(this.data[0].dictionary);\n const newData = this.data.map((data) => {\n const cloned = data.clone();\n cloned.dictionary = dictionary;\n return cloned;\n });\n return new Vector(newData);\n }\n return new MemoizedVector(this);\n }\n /**\n * Returns a vector without memoization of the {@link get} method. If this\n * vector is not memoized, this method returns this vector.\n *\n * @returns A a vector without memoization.\n */\n unmemoize() {\n if (DataType.isDictionary(this.type) && this.isMemoized) {\n const dictionary = this.data[0].dictionary.unmemoize();\n const newData = this.data.map((data) => {\n const newData = data.clone();\n newData.dictionary = dictionary;\n return newData;\n });\n return new Vector(newData);\n }\n return this;\n }\n}\n_a = Symbol.toStringTag;\n// Initialize this static property via an IIFE so bundlers don't tree-shake\n// out this logic, but also so we're still compliant with `\"sideEffects\": false`\nVector[_a] = ((proto) => {\n proto.type = DataType.prototype;\n proto.data = [];\n proto.length = 0;\n proto.stride = 1;\n proto.numChildren = 0;\n proto._nullCount = -1;\n proto._byteLength = -1;\n proto._offsets = new Uint32Array([0]);\n proto[Symbol.isConcatSpreadable] = true;\n const typeIds = Object.keys(Type)\n .map((T) => Type[T])\n .filter((T) => typeof T === 'number' && T !== Type.NONE);\n for (const typeId of typeIds) {\n const get = getVisitor.getVisitFnByTypeId(typeId);\n const set = setVisitor.getVisitFnByTypeId(typeId);\n const indexOf = indexOfVisitor.getVisitFnByTypeId(typeId);\n const byteLength = byteLengthVisitor.getVisitFnByTypeId(typeId);\n visitorsByTypeId[typeId] = { get, set, indexOf, byteLength };\n vectorPrototypesByTypeId[typeId] = Object.create(proto, {\n ['isValid']: { value: wrapChunkedCall1(isChunkedValid) },\n ['get']: { value: wrapChunkedCall1(getVisitor.getVisitFnByTypeId(typeId)) },\n ['set']: { value: wrapChunkedCall2(setVisitor.getVisitFnByTypeId(typeId)) },\n ['indexOf']: { value: wrapChunkedIndexOf(indexOfVisitor.getVisitFnByTypeId(typeId)) },\n ['getByteLength']: { value: wrapChunkedCall1(byteLengthVisitor.getVisitFnByTypeId(typeId)) },\n });\n }\n return 'Vector';\n})(Vector.prototype);\nclass MemoizedVector extends Vector {\n constructor(vector) {\n super(vector.data);\n const get = this.get;\n const set = this.set;\n const slice = this.slice;\n const cache = new Array(this.length);\n Object.defineProperty(this, 'get', {\n value(index) {\n const cachedValue = cache[index];\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n const value = get.call(this, index);\n cache[index] = value;\n return value;\n }\n });\n Object.defineProperty(this, 'set', {\n value(index, value) {\n set.call(this, index, value);\n cache[index] = value;\n }\n });\n Object.defineProperty(this, 'slice', {\n value: (begin, end) => new MemoizedVector(slice.call(this, begin, end))\n });\n Object.defineProperty(this, 'isMemoized', { value: true });\n Object.defineProperty(this, 'unmemoize', {\n value: () => new Vector(this.data)\n });\n Object.defineProperty(this, 'memoize', {\n value: () => this\n });\n }\n}\nimport * as dtypes from './type.mjs';\nexport function makeVector(init) {\n if (init) {\n if (init instanceof Data) {\n return new Vector([init]);\n }\n if (init instanceof Vector) {\n return new Vector(init.data);\n }\n if (init.type instanceof DataType) {\n return new Vector([makeData(init)]);\n }\n if (Array.isArray(init)) {\n return new Vector(init.flatMap(v => unwrapInputs(v)));\n }\n if (ArrayBuffer.isView(init)) {\n if (init instanceof DataView) {\n init = new Uint8Array(init.buffer);\n }\n const props = { offset: 0, length: init.length, nullCount: 0, data: init };\n if (init instanceof Int8Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Int8 }))]);\n }\n if (init instanceof Int16Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Int16 }))]);\n }\n if (init instanceof Int32Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Int32 }))]);\n }\n if (init instanceof BigInt64Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Int64 }))]);\n }\n if (init instanceof Uint8Array || init instanceof Uint8ClampedArray) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Uint8 }))]);\n }\n if (init instanceof Uint16Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Uint16 }))]);\n }\n if (init instanceof Uint32Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Uint32 }))]);\n }\n if (init instanceof BigUint64Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Uint64 }))]);\n }\n if (init instanceof Float32Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Float32 }))]);\n }\n if (init instanceof Float64Array) {\n return new Vector([makeData(Object.assign(Object.assign({}, props), { type: new dtypes.Float64 }))]);\n }\n throw new Error('Unrecognized input');\n }\n }\n throw new Error('Unrecognized input');\n}\nfunction unwrapInputs(x) {\n return x instanceof Data ? [x] : (x instanceof Vector ? x.data : makeVector(x).data);\n}\n\n//# sourceMappingURL=vector.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport class Block {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * Index to the start of the RecordBlock (note this is past the Message header)\n */\n offset() {\n return this.bb.readInt64(this.bb_pos);\n }\n /**\n * Length of the metadata\n */\n metaDataLength() {\n return this.bb.readInt32(this.bb_pos + 8);\n }\n /**\n * Length of the data (this is aligned so there can be a gap between this and\n * the metadata).\n */\n bodyLength() {\n return this.bb.readInt64(this.bb_pos + 16);\n }\n static sizeOf() {\n return 24;\n }\n static createBlock(builder, offset, metaDataLength, bodyLength) {\n builder.prep(8, 24);\n builder.writeInt64(bodyLength);\n builder.pad(4);\n builder.writeInt32(metaDataLength);\n builder.writeInt64(offset);\n return builder.offset();\n }\n}\n\n//# sourceMappingURL=block.mjs.map\n","export const SIZEOF_SHORT = 2;\r\nexport const SIZEOF_INT = 4;\r\nexport const FILE_IDENTIFIER_LENGTH = 4;\r\nexport const SIZE_PREFIX_LENGTH = 4;\r\n","export const int32 = new Int32Array(2);\r\nexport const float32 = new Float32Array(int32.buffer);\r\nexport const float64 = new Float64Array(int32.buffer);\r\nexport const isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\r\n","export function createLong(low, high) {\r\n return Long.create(low, high);\r\n}\r\nexport class Long {\r\n constructor(low, high) {\r\n this.low = low | 0;\r\n this.high = high | 0;\r\n }\r\n static create(low, high) {\r\n // Special-case zero to avoid GC overhead for default values\r\n return low == 0 && high == 0 ? Long.ZERO : new Long(low, high);\r\n }\r\n toFloat64() {\r\n return (this.low >>> 0) + this.high * 0x100000000;\r\n }\r\n equals(other) {\r\n return this.low == other.low && this.high == other.high;\r\n }\r\n}\r\nLong.ZERO = new Long(0, 0);\r\n","export var Encoding;\r\n(function (Encoding) {\r\n Encoding[Encoding[\"UTF8_BYTES\"] = 1] = \"UTF8_BYTES\";\r\n Encoding[Encoding[\"UTF16_STRING\"] = 2] = \"UTF16_STRING\";\r\n})(Encoding || (Encoding = {}));\r\n","import { FILE_IDENTIFIER_LENGTH, SIZEOF_INT } from \"./constants\";\r\nimport { Long } from \"./long\";\r\nimport { int32, isLittleEndian, float32, float64 } from \"./utils\";\r\nimport { Encoding } from \"./encoding\";\r\nexport class ByteBuffer {\r\n /**\r\n * Create a new ByteBuffer with a given array of bytes (`Uint8Array`)\r\n */\r\n constructor(bytes_) {\r\n this.bytes_ = bytes_;\r\n this.position_ = 0;\r\n }\r\n /**\r\n * Create and allocate a new ByteBuffer with a given size.\r\n */\r\n static allocate(byte_size) {\r\n return new ByteBuffer(new Uint8Array(byte_size));\r\n }\r\n clear() {\r\n this.position_ = 0;\r\n }\r\n /**\r\n * Get the underlying `Uint8Array`.\r\n */\r\n bytes() {\r\n return this.bytes_;\r\n }\r\n /**\r\n * Get the buffer's position.\r\n */\r\n position() {\r\n return this.position_;\r\n }\r\n /**\r\n * Set the buffer's position.\r\n */\r\n setPosition(position) {\r\n this.position_ = position;\r\n }\r\n /**\r\n * Get the buffer's capacity.\r\n */\r\n capacity() {\r\n return this.bytes_.length;\r\n }\r\n readInt8(offset) {\r\n return this.readUint8(offset) << 24 >> 24;\r\n }\r\n readUint8(offset) {\r\n return this.bytes_[offset];\r\n }\r\n readInt16(offset) {\r\n return this.readUint16(offset) << 16 >> 16;\r\n }\r\n readUint16(offset) {\r\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\r\n }\r\n readInt32(offset) {\r\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\r\n }\r\n readUint32(offset) {\r\n return this.readInt32(offset) >>> 0;\r\n }\r\n readInt64(offset) {\r\n return new Long(this.readInt32(offset), this.readInt32(offset + 4));\r\n }\r\n readUint64(offset) {\r\n return new Long(this.readUint32(offset), this.readUint32(offset + 4));\r\n }\r\n readFloat32(offset) {\r\n int32[0] = this.readInt32(offset);\r\n return float32[0];\r\n }\r\n readFloat64(offset) {\r\n int32[isLittleEndian ? 0 : 1] = this.readInt32(offset);\r\n int32[isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\r\n return float64[0];\r\n }\r\n writeInt8(offset, value) {\r\n this.bytes_[offset] = value;\r\n }\r\n writeUint8(offset, value) {\r\n this.bytes_[offset] = value;\r\n }\r\n writeInt16(offset, value) {\r\n this.bytes_[offset] = value;\r\n this.bytes_[offset + 1] = value >> 8;\r\n }\r\n writeUint16(offset, value) {\r\n this.bytes_[offset] = value;\r\n this.bytes_[offset + 1] = value >> 8;\r\n }\r\n writeInt32(offset, value) {\r\n this.bytes_[offset] = value;\r\n this.bytes_[offset + 1] = value >> 8;\r\n this.bytes_[offset + 2] = value >> 16;\r\n this.bytes_[offset + 3] = value >> 24;\r\n }\r\n writeUint32(offset, value) {\r\n this.bytes_[offset] = value;\r\n this.bytes_[offset + 1] = value >> 8;\r\n this.bytes_[offset + 2] = value >> 16;\r\n this.bytes_[offset + 3] = value >> 24;\r\n }\r\n writeInt64(offset, value) {\r\n this.writeInt32(offset, value.low);\r\n this.writeInt32(offset + 4, value.high);\r\n }\r\n writeUint64(offset, value) {\r\n this.writeUint32(offset, value.low);\r\n this.writeUint32(offset + 4, value.high);\r\n }\r\n writeFloat32(offset, value) {\r\n float32[0] = value;\r\n this.writeInt32(offset, int32[0]);\r\n }\r\n writeFloat64(offset, value) {\r\n float64[0] = value;\r\n this.writeInt32(offset, int32[isLittleEndian ? 0 : 1]);\r\n this.writeInt32(offset + 4, int32[isLittleEndian ? 1 : 0]);\r\n }\r\n /**\r\n * Return the file identifier. Behavior is undefined for FlatBuffers whose\r\n * schema does not include a file_identifier (likely points at padding or the\r\n * start of a the root vtable).\r\n */\r\n getBufferIdentifier() {\r\n if (this.bytes_.length < this.position_ + SIZEOF_INT +\r\n FILE_IDENTIFIER_LENGTH) {\r\n throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.');\r\n }\r\n let result = \"\";\r\n for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\r\n result += String.fromCharCode(this.readInt8(this.position_ + SIZEOF_INT + i));\r\n }\r\n return result;\r\n }\r\n /**\r\n * Look up a field in the vtable, return an offset into the object, or 0 if the\r\n * field is not present.\r\n */\r\n __offset(bb_pos, vtable_offset) {\r\n const vtable = bb_pos - this.readInt32(bb_pos);\r\n return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\r\n }\r\n /**\r\n * Initialize any Table-derived type to point to the union at the given offset.\r\n */\r\n __union(t, offset) {\r\n t.bb_pos = offset + this.readInt32(offset);\r\n t.bb = this;\r\n return t;\r\n }\r\n /**\r\n * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\r\n * This allocates a new string and converts to wide chars upon each access.\r\n *\r\n * To avoid the conversion to UTF-16, pass Encoding.UTF8_BYTES as\r\n * the \"optionalEncoding\" argument. This is useful for avoiding conversion to\r\n * and from UTF-16 when the data will just be packaged back up in another\r\n * FlatBuffer later on.\r\n *\r\n * @param offset\r\n * @param opt_encoding Defaults to UTF16_STRING\r\n */\r\n __string(offset, opt_encoding) {\r\n offset += this.readInt32(offset);\r\n const length = this.readInt32(offset);\r\n let result = '';\r\n let i = 0;\r\n offset += SIZEOF_INT;\r\n if (opt_encoding === Encoding.UTF8_BYTES) {\r\n return this.bytes_.subarray(offset, offset + length);\r\n }\r\n while (i < length) {\r\n let codePoint;\r\n // Decode UTF-8\r\n const a = this.readUint8(offset + i++);\r\n if (a < 0xC0) {\r\n codePoint = a;\r\n }\r\n else {\r\n const b = this.readUint8(offset + i++);\r\n if (a < 0xE0) {\r\n codePoint =\r\n ((a & 0x1F) << 6) |\r\n (b & 0x3F);\r\n }\r\n else {\r\n const c = this.readUint8(offset + i++);\r\n if (a < 0xF0) {\r\n codePoint =\r\n ((a & 0x0F) << 12) |\r\n ((b & 0x3F) << 6) |\r\n (c & 0x3F);\r\n }\r\n else {\r\n const d = this.readUint8(offset + i++);\r\n codePoint =\r\n ((a & 0x07) << 18) |\r\n ((b & 0x3F) << 12) |\r\n ((c & 0x3F) << 6) |\r\n (d & 0x3F);\r\n }\r\n }\r\n }\r\n // Encode UTF-16\r\n if (codePoint < 0x10000) {\r\n result += String.fromCharCode(codePoint);\r\n }\r\n else {\r\n codePoint -= 0x10000;\r\n result += String.fromCharCode((codePoint >> 10) + 0xD800, (codePoint & ((1 << 10) - 1)) + 0xDC00);\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * Handle unions that can contain string as its member, if a Table-derived type then initialize it,\r\n * if a string then return a new one\r\n *\r\n * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this\r\n * makes the behaviour of __union_with_string different compared to __union\r\n */\r\n __union_with_string(o, offset) {\r\n if (typeof o === 'string') {\r\n return this.__string(offset);\r\n }\r\n return this.__union(o, offset);\r\n }\r\n /**\r\n * Retrieve the relative offset stored at \"offset\"\r\n */\r\n __indirect(offset) {\r\n return offset + this.readInt32(offset);\r\n }\r\n /**\r\n * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\r\n */\r\n __vector(offset) {\r\n return offset + this.readInt32(offset) + SIZEOF_INT; // data starts after the length\r\n }\r\n /**\r\n * Get the length of a vector whose offset is stored at \"offset\" in this object.\r\n */\r\n __vector_len(offset) {\r\n return this.readInt32(offset + this.readInt32(offset));\r\n }\r\n __has_identifier(ident) {\r\n if (ident.length != FILE_IDENTIFIER_LENGTH) {\r\n throw new Error('FlatBuffers: file identifier must be length ' +\r\n FILE_IDENTIFIER_LENGTH);\r\n }\r\n for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\r\n if (ident.charCodeAt(i) != this.readInt8(this.position() + SIZEOF_INT + i)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * A helper function to avoid generated code depending on this file directly.\r\n */\r\n createLong(low, high) {\r\n return Long.create(low, high);\r\n }\r\n /**\r\n * A helper function for generating list for obj api\r\n */\r\n createScalarList(listAccessor, listLength) {\r\n const ret = [];\r\n for (let i = 0; i < listLength; ++i) {\r\n if (listAccessor(i) !== null) {\r\n ret.push(listAccessor(i));\r\n }\r\n }\r\n return ret;\r\n }\r\n /**\r\n * A helper function for generating list for obj api\r\n * @param listAccessor function that accepts an index and return data at that index\r\n * @param listLength listLength\r\n * @param res result list\r\n */\r\n createObjList(listAccessor, listLength) {\r\n const ret = [];\r\n for (let i = 0; i < listLength; ++i) {\r\n const val = listAccessor(i);\r\n if (val !== null) {\r\n ret.push(val.unpack());\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\n","import { ByteBuffer } from \"./byte-buffer\";\r\nimport { SIZEOF_SHORT, SIZE_PREFIX_LENGTH, SIZEOF_INT, FILE_IDENTIFIER_LENGTH } from \"./constants\";\r\nimport { Long } from \"./long\";\r\nexport class Builder {\r\n /**\r\n * Create a FlatBufferBuilder.\r\n */\r\n constructor(opt_initial_size) {\r\n /** Minimum alignment encountered so far. */\r\n this.minalign = 1;\r\n /** The vtable for the current table. */\r\n this.vtable = null;\r\n /** The amount of fields we're actually using. */\r\n this.vtable_in_use = 0;\r\n /** Whether we are currently serializing a table. */\r\n this.isNested = false;\r\n /** Starting offset of the current struct/table. */\r\n this.object_start = 0;\r\n /** List of offsets of all vtables. */\r\n this.vtables = [];\r\n /** For the current vector being built. */\r\n this.vector_num_elems = 0;\r\n /** False omits default values from the serialized data */\r\n this.force_defaults = false;\r\n this.string_maps = null;\r\n let initial_size;\r\n if (!opt_initial_size) {\r\n initial_size = 1024;\r\n }\r\n else {\r\n initial_size = opt_initial_size;\r\n }\r\n /**\r\n * @type {ByteBuffer}\r\n * @private\r\n */\r\n this.bb = ByteBuffer.allocate(initial_size);\r\n this.space = initial_size;\r\n }\r\n clear() {\r\n this.bb.clear();\r\n this.space = this.bb.capacity();\r\n this.minalign = 1;\r\n this.vtable = null;\r\n this.vtable_in_use = 0;\r\n this.isNested = false;\r\n this.object_start = 0;\r\n this.vtables = [];\r\n this.vector_num_elems = 0;\r\n this.force_defaults = false;\r\n this.string_maps = null;\r\n }\r\n /**\r\n * In order to save space, fields that are set to their default value\r\n * don't get serialized into the buffer. Forcing defaults provides a\r\n * way to manually disable this optimization.\r\n *\r\n * @param forceDefaults true always serializes default values\r\n */\r\n forceDefaults(forceDefaults) {\r\n this.force_defaults = forceDefaults;\r\n }\r\n /**\r\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\r\n * called finish(). The actual data starts at the ByteBuffer's current position,\r\n * not necessarily at 0.\r\n */\r\n dataBuffer() {\r\n return this.bb;\r\n }\r\n /**\r\n * Get the bytes representing the FlatBuffer. Only call this after you've\r\n * called finish().\r\n */\r\n asUint8Array() {\r\n return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\r\n }\r\n /**\r\n * Prepare to write an element of `size` after `additional_bytes` have been\r\n * written, e.g. if you write a string, you need to align such the int length\r\n * field is aligned to 4 bytes, and the string data follows it directly. If all\r\n * you need to do is alignment, `additional_bytes` will be 0.\r\n *\r\n * @param size This is the of the new element to write\r\n * @param additional_bytes The padding size\r\n */\r\n prep(size, additional_bytes) {\r\n // Track the biggest thing we've ever aligned to.\r\n if (size > this.minalign) {\r\n this.minalign = size;\r\n }\r\n // Find the amount of alignment needed such that `size` is properly\r\n // aligned after `additional_bytes`\r\n const align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\r\n // Reallocate the buffer if needed.\r\n while (this.space < align_size + size + additional_bytes) {\r\n const old_buf_size = this.bb.capacity();\r\n this.bb = Builder.growByteBuffer(this.bb);\r\n this.space += this.bb.capacity() - old_buf_size;\r\n }\r\n this.pad(align_size);\r\n }\r\n pad(byte_size) {\r\n for (let i = 0; i < byte_size; i++) {\r\n this.bb.writeInt8(--this.space, 0);\r\n }\r\n }\r\n writeInt8(value) {\r\n this.bb.writeInt8(this.space -= 1, value);\r\n }\r\n writeInt16(value) {\r\n this.bb.writeInt16(this.space -= 2, value);\r\n }\r\n writeInt32(value) {\r\n this.bb.writeInt32(this.space -= 4, value);\r\n }\r\n writeInt64(value) {\r\n this.bb.writeInt64(this.space -= 8, value);\r\n }\r\n writeFloat32(value) {\r\n this.bb.writeFloat32(this.space -= 4, value);\r\n }\r\n writeFloat64(value) {\r\n this.bb.writeFloat64(this.space -= 8, value);\r\n }\r\n /**\r\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\r\n * @param value The `int8` to add the the buffer.\r\n */\r\n addInt8(value) {\r\n this.prep(1, 0);\r\n this.writeInt8(value);\r\n }\r\n /**\r\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\r\n * @param value The `int16` to add the the buffer.\r\n */\r\n addInt16(value) {\r\n this.prep(2, 0);\r\n this.writeInt16(value);\r\n }\r\n /**\r\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\r\n * @param value The `int32` to add the the buffer.\r\n */\r\n addInt32(value) {\r\n this.prep(4, 0);\r\n this.writeInt32(value);\r\n }\r\n /**\r\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\r\n * @param value The `int64` to add the the buffer.\r\n */\r\n addInt64(value) {\r\n this.prep(8, 0);\r\n this.writeInt64(value);\r\n }\r\n /**\r\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\r\n * @param value The `float32` to add the the buffer.\r\n */\r\n addFloat32(value) {\r\n this.prep(4, 0);\r\n this.writeFloat32(value);\r\n }\r\n /**\r\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\r\n * @param value The `float64` to add the the buffer.\r\n */\r\n addFloat64(value) {\r\n this.prep(8, 0);\r\n this.writeFloat64(value);\r\n }\r\n addFieldInt8(voffset, value, defaultValue) {\r\n if (this.force_defaults || value != defaultValue) {\r\n this.addInt8(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n addFieldInt16(voffset, value, defaultValue) {\r\n if (this.force_defaults || value != defaultValue) {\r\n this.addInt16(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n addFieldInt32(voffset, value, defaultValue) {\r\n if (this.force_defaults || value != defaultValue) {\r\n this.addInt32(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n addFieldInt64(voffset, value, defaultValue) {\r\n if (this.force_defaults || !value.equals(defaultValue)) {\r\n this.addInt64(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n addFieldFloat32(voffset, value, defaultValue) {\r\n if (this.force_defaults || value != defaultValue) {\r\n this.addFloat32(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n addFieldFloat64(voffset, value, defaultValue) {\r\n if (this.force_defaults || value != defaultValue) {\r\n this.addFloat64(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n addFieldOffset(voffset, value, defaultValue) {\r\n if (this.force_defaults || value != defaultValue) {\r\n this.addOffset(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n /**\r\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\r\n */\r\n addFieldStruct(voffset, value, defaultValue) {\r\n if (value != defaultValue) {\r\n this.nested(value);\r\n this.slot(voffset);\r\n }\r\n }\r\n /**\r\n * Structures are always stored inline, they need to be created right\r\n * where they're used. You'll get this assertion failure if you\r\n * created it elsewhere.\r\n */\r\n nested(obj) {\r\n if (obj != this.offset()) {\r\n throw new Error('FlatBuffers: struct must be serialized inline.');\r\n }\r\n }\r\n /**\r\n * Should not be creating any other object, string or vector\r\n * while an object is being constructed\r\n */\r\n notNested() {\r\n if (this.isNested) {\r\n throw new Error('FlatBuffers: object serialization must not be nested.');\r\n }\r\n }\r\n /**\r\n * Set the current vtable at `voffset` to the current location in the buffer.\r\n */\r\n slot(voffset) {\r\n if (this.vtable !== null)\r\n this.vtable[voffset] = this.offset();\r\n }\r\n /**\r\n * @returns Offset relative to the end of the buffer.\r\n */\r\n offset() {\r\n return this.bb.capacity() - this.space;\r\n }\r\n /**\r\n * Doubles the size of the backing ByteBuffer and copies the old data towards\r\n * the end of the new buffer (since we build the buffer backwards).\r\n *\r\n * @param bb The current buffer with the existing data\r\n * @returns A new byte buffer with the old data copied\r\n * to it. The data is located at the end of the buffer.\r\n *\r\n * uint8Array.set() formally takes {Array|ArrayBufferView}, so to pass\r\n * it a uint8Array we need to suppress the type check:\r\n * @suppress {checkTypes}\r\n */\r\n static growByteBuffer(bb) {\r\n const old_buf_size = bb.capacity();\r\n // Ensure we don't grow beyond what fits in an int.\r\n if (old_buf_size & 0xC0000000) {\r\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\r\n }\r\n const new_buf_size = old_buf_size << 1;\r\n const nbb = ByteBuffer.allocate(new_buf_size);\r\n nbb.setPosition(new_buf_size - old_buf_size);\r\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\r\n return nbb;\r\n }\r\n /**\r\n * Adds on offset, relative to where it will be written.\r\n *\r\n * @param offset The offset to add.\r\n */\r\n addOffset(offset) {\r\n this.prep(SIZEOF_INT, 0); // Ensure alignment is already done.\r\n this.writeInt32(this.offset() - offset + SIZEOF_INT);\r\n }\r\n /**\r\n * Start encoding a new object in the buffer. Users will not usually need to\r\n * call this directly. The FlatBuffers compiler will generate helper methods\r\n * that call this method internally.\r\n */\r\n startObject(numfields) {\r\n this.notNested();\r\n if (this.vtable == null) {\r\n this.vtable = [];\r\n }\r\n this.vtable_in_use = numfields;\r\n for (let i = 0; i < numfields; i++) {\r\n this.vtable[i] = 0; // This will push additional elements as needed\r\n }\r\n this.isNested = true;\r\n this.object_start = this.offset();\r\n }\r\n /**\r\n * Finish off writing the object that is under construction.\r\n *\r\n * @returns The offset to the object inside `dataBuffer`\r\n */\r\n endObject() {\r\n if (this.vtable == null || !this.isNested) {\r\n throw new Error('FlatBuffers: endObject called without startObject');\r\n }\r\n this.addInt32(0);\r\n const vtableloc = this.offset();\r\n // Trim trailing zeroes.\r\n let i = this.vtable_in_use - 1;\r\n // eslint-disable-next-line no-empty\r\n for (; i >= 0 && this.vtable[i] == 0; i--) { }\r\n const trimmed_size = i + 1;\r\n // Write out the current vtable.\r\n for (; i >= 0; i--) {\r\n // Offset relative to the start of the table.\r\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\r\n }\r\n const standard_fields = 2; // The fields below:\r\n this.addInt16(vtableloc - this.object_start);\r\n const len = (trimmed_size + standard_fields) * SIZEOF_SHORT;\r\n this.addInt16(len);\r\n // Search for an existing vtable that matches the current one.\r\n let existing_vtable = 0;\r\n const vt1 = this.space;\r\n outer_loop: for (i = 0; i < this.vtables.length; i++) {\r\n const vt2 = this.bb.capacity() - this.vtables[i];\r\n if (len == this.bb.readInt16(vt2)) {\r\n for (let j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) {\r\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\r\n continue outer_loop;\r\n }\r\n }\r\n existing_vtable = this.vtables[i];\r\n break;\r\n }\r\n }\r\n if (existing_vtable) {\r\n // Found a match:\r\n // Remove the current vtable.\r\n this.space = this.bb.capacity() - vtableloc;\r\n // Point table to existing vtable.\r\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\r\n }\r\n else {\r\n // No match:\r\n // Add the location of the current vtable to the list of vtables.\r\n this.vtables.push(this.offset());\r\n // Point table to current vtable.\r\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\r\n }\r\n this.isNested = false;\r\n return vtableloc;\r\n }\r\n /**\r\n * Finalize a buffer, poiting to the given `root_table`.\r\n */\r\n finish(root_table, opt_file_identifier, opt_size_prefix) {\r\n const size_prefix = opt_size_prefix ? SIZE_PREFIX_LENGTH : 0;\r\n if (opt_file_identifier) {\r\n const file_identifier = opt_file_identifier;\r\n this.prep(this.minalign, SIZEOF_INT +\r\n FILE_IDENTIFIER_LENGTH + size_prefix);\r\n if (file_identifier.length != FILE_IDENTIFIER_LENGTH) {\r\n throw new Error('FlatBuffers: file identifier must be length ' +\r\n FILE_IDENTIFIER_LENGTH);\r\n }\r\n for (let i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\r\n this.writeInt8(file_identifier.charCodeAt(i));\r\n }\r\n }\r\n this.prep(this.minalign, SIZEOF_INT + size_prefix);\r\n this.addOffset(root_table);\r\n if (size_prefix) {\r\n this.addInt32(this.bb.capacity() - this.space);\r\n }\r\n this.bb.setPosition(this.space);\r\n }\r\n /**\r\n * Finalize a size prefixed buffer, pointing to the given `root_table`.\r\n */\r\n finishSizePrefixed(root_table, opt_file_identifier) {\r\n this.finish(root_table, opt_file_identifier, true);\r\n }\r\n /**\r\n * This checks a required field has been set in a given table that has\r\n * just been constructed.\r\n */\r\n requiredField(table, field) {\r\n const table_start = this.bb.capacity() - table;\r\n const vtable_start = table_start - this.bb.readInt32(table_start);\r\n const ok = this.bb.readInt16(vtable_start + field) != 0;\r\n // If this fails, the caller will show what field needs to be set.\r\n if (!ok) {\r\n throw new Error('FlatBuffers: field ' + field + ' must be set');\r\n }\r\n }\r\n /**\r\n * Start a new array/vector of objects. Users usually will not call\r\n * this directly. The FlatBuffers compiler will create a start/end\r\n * method for vector types in generated code.\r\n *\r\n * @param elem_size The size of each element in the array\r\n * @param num_elems The number of elements in the array\r\n * @param alignment The alignment of the array\r\n */\r\n startVector(elem_size, num_elems, alignment) {\r\n this.notNested();\r\n this.vector_num_elems = num_elems;\r\n this.prep(SIZEOF_INT, elem_size * num_elems);\r\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\r\n }\r\n /**\r\n * Finish off the creation of an array and all its elements. The array must be\r\n * created with `startVector`.\r\n *\r\n * @returns The offset at which the newly created array\r\n * starts.\r\n */\r\n endVector() {\r\n this.writeInt32(this.vector_num_elems);\r\n return this.offset();\r\n }\r\n /**\r\n * Encode the string `s` in the buffer using UTF-8. If the string passed has\r\n * already been seen, we return the offset of the already written string\r\n *\r\n * @param s The string to encode\r\n * @return The offset in the buffer where the encoded string starts\r\n */\r\n createSharedString(s) {\r\n if (!s) {\r\n return 0;\r\n }\r\n if (!this.string_maps) {\r\n this.string_maps = new Map();\r\n }\r\n if (this.string_maps.has(s)) {\r\n return this.string_maps.get(s);\r\n }\r\n const offset = this.createString(s);\r\n this.string_maps.set(s, offset);\r\n return offset;\r\n }\r\n /**\r\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\r\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\r\n *\r\n * @param s The string to encode\r\n * @return The offset in the buffer where the encoded string starts\r\n */\r\n createString(s) {\r\n if (!s) {\r\n return 0;\r\n }\r\n let utf8;\r\n if (s instanceof Uint8Array) {\r\n utf8 = s;\r\n }\r\n else {\r\n utf8 = [];\r\n let i = 0;\r\n while (i < s.length) {\r\n let codePoint;\r\n // Decode UTF-16\r\n const a = s.charCodeAt(i++);\r\n if (a < 0xD800 || a >= 0xDC00) {\r\n codePoint = a;\r\n }\r\n else {\r\n const b = s.charCodeAt(i++);\r\n codePoint = (a << 10) + b + (0x10000 - (0xD800 << 10) - 0xDC00);\r\n }\r\n // Encode UTF-8\r\n if (codePoint < 0x80) {\r\n utf8.push(codePoint);\r\n }\r\n else {\r\n if (codePoint < 0x800) {\r\n utf8.push(((codePoint >> 6) & 0x1F) | 0xC0);\r\n }\r\n else {\r\n if (codePoint < 0x10000) {\r\n utf8.push(((codePoint >> 12) & 0x0F) | 0xE0);\r\n }\r\n else {\r\n utf8.push(((codePoint >> 18) & 0x07) | 0xF0, ((codePoint >> 12) & 0x3F) | 0x80);\r\n }\r\n utf8.push(((codePoint >> 6) & 0x3F) | 0x80);\r\n }\r\n utf8.push((codePoint & 0x3F) | 0x80);\r\n }\r\n }\r\n }\r\n this.addInt8(0);\r\n this.startVector(1, utf8.length, 1);\r\n this.bb.setPosition(this.space -= utf8.length);\r\n for (let i = 0, offset = this.space, bytes = this.bb.bytes(); i < utf8.length; i++) {\r\n bytes[offset++] = utf8[i];\r\n }\r\n return this.endVector();\r\n }\r\n /**\r\n * A helper function to avoid generated code depending on this file directly.\r\n */\r\n createLong(low, high) {\r\n return Long.create(low, high);\r\n }\r\n /**\r\n * A helper function to pack an object\r\n *\r\n * @returns offset of obj\r\n */\r\n createObjectOffset(obj) {\r\n if (obj === null) {\r\n return 0;\r\n }\r\n if (typeof obj === 'string') {\r\n return this.createString(obj);\r\n }\r\n else {\r\n return obj.pack(this);\r\n }\r\n }\r\n /**\r\n * A helper function to pack a list of object\r\n *\r\n * @returns list of offsets of each non null object\r\n */\r\n createObjectOffsetList(list) {\r\n const ret = [];\r\n for (let i = 0; i < list.length; ++i) {\r\n const val = list[i];\r\n if (val !== null) {\r\n ret.push(this.createObjectOffset(val));\r\n }\r\n else {\r\n throw new Error('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\r\n }\r\n }\r\n return ret;\r\n }\r\n createStructOffsetList(list, startFunc) {\r\n startFunc(this, list.length);\r\n this.createObjectOffsetList(list);\r\n return this.endVector();\r\n }\r\n}\r\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * ----------------------------------------------------------------------\n * user defined key value pairs to add custom metadata to arrow\n * key namespacing is the responsibility of the user\n */\nexport class KeyValue {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsKeyValue(bb, obj) {\n return (obj || new KeyValue()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsKeyValue(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new KeyValue()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n key(optionalEncoding) {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n value(optionalEncoding) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n static startKeyValue(builder) {\n builder.startObject(2);\n }\n static addKey(builder, keyOffset) {\n builder.addFieldOffset(0, keyOffset, 0);\n }\n static addValue(builder, valueOffset) {\n builder.addFieldOffset(1, valueOffset, 0);\n }\n static endKeyValue(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createKeyValue(builder, keyOffset, valueOffset) {\n KeyValue.startKeyValue(builder);\n KeyValue.addKey(builder, keyOffset);\n KeyValue.addValue(builder, valueOffset);\n return KeyValue.endKeyValue(builder);\n }\n}\n\n//# sourceMappingURL=key-value.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\n/**\n * Logical types, vector layouts, and schemas\n * Format Version History.\n * Version 1.0 - Forward and backwards compatibility guaranteed.\n * Version 1.1 - Add Decimal256 (No format release).\n * Version 1.2 (Pending)- Add Interval MONTH_DAY_NANO\n */\nexport var MetadataVersion;\n(function (MetadataVersion) {\n /**\n * 0.1.0 (October 2016).\n */\n MetadataVersion[MetadataVersion[\"V1\"] = 0] = \"V1\";\n /**\n * 0.2.0 (February 2017). Non-backwards compatible with V1.\n */\n MetadataVersion[MetadataVersion[\"V2\"] = 1] = \"V2\";\n /**\n * 0.3.0 -> 0.7.1 (May - December 2017). Non-backwards compatible with V2.\n */\n MetadataVersion[MetadataVersion[\"V3\"] = 2] = \"V3\";\n /**\n * >= 0.8.0 (December 2017). Non-backwards compatible with V3.\n */\n MetadataVersion[MetadataVersion[\"V4\"] = 3] = \"V4\";\n /**\n * >= 1.0.0 (July 2020. Backwards compatible with V4 (V5 readers can read V4\n * metadata and IPC messages). Implementations are recommended to provide a\n * V4 compatibility mode with V5 format changes disabled.\n *\n * Incompatible changes between V4 and V5:\n * - Union buffer layout has changed. In V5, Unions don't have a validity\n * bitmap buffer.\n */\n MetadataVersion[MetadataVersion[\"V5\"] = 4] = \"V5\";\n})(MetadataVersion || (MetadataVersion = {}));\n\n//# sourceMappingURL=metadata-version.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\n/**\n * ----------------------------------------------------------------------\n * Endianness of the platform producing the data\n */\nexport var Endianness;\n(function (Endianness) {\n Endianness[Endianness[\"Little\"] = 0] = \"Little\";\n Endianness[Endianness[\"Big\"] = 1] = \"Big\";\n})(Endianness || (Endianness = {}));\n\n//# sourceMappingURL=endianness.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\n/**\n * ----------------------------------------------------------------------\n * Dictionary encoding metadata\n * Maintained for forwards compatibility, in the future\n * Dictionaries might be explicit maps between integers and values\n * allowing for non-contiguous index values\n */\nexport var DictionaryKind;\n(function (DictionaryKind) {\n DictionaryKind[DictionaryKind[\"DenseArray\"] = 0] = \"DenseArray\";\n})(DictionaryKind || (DictionaryKind = {}));\n\n//# sourceMappingURL=dictionary-kind.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nexport class Int {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsInt(bb, obj) {\n return (obj || new Int()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsInt(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Int()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n bitWidth() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n isSigned() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n static startInt(builder) {\n builder.startObject(2);\n }\n static addBitWidth(builder, bitWidth) {\n builder.addFieldInt32(0, bitWidth, 0);\n }\n static addIsSigned(builder, isSigned) {\n builder.addFieldInt8(1, +isSigned, +false);\n }\n static endInt(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createInt(builder, bitWidth, isSigned) {\n Int.startInt(builder);\n Int.addBitWidth(builder, bitWidth);\n Int.addIsSigned(builder, isSigned);\n return Int.endInt(builder);\n }\n}\n\n//# sourceMappingURL=int.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { DictionaryKind } from './dictionary-kind.mjs';\nimport { Int } from './int.mjs';\nexport class DictionaryEncoding {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsDictionaryEncoding(bb, obj) {\n return (obj || new DictionaryEncoding()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsDictionaryEncoding(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new DictionaryEncoding()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * The known dictionary id in the application where this data is used. In\n * the file or streaming formats, the dictionary ids are found in the\n * DictionaryBatch messages\n */\n id() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n /**\n * The dictionary indices are constrained to be non-negative integers. If\n * this field is null, the indices must be signed int32. To maximize\n * cross-language compatibility and performance, implementations are\n * recommended to prefer signed integer types over unsigned integer types\n * and to avoid uint64 indices unless they are required by an application.\n */\n indexType(obj) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new Int()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * By default, dictionaries are not ordered, or the order does not have\n * semantic meaning. In some statistical, applications, dictionary-encoding\n * is used to represent ordered categorical data, and we provide a way to\n * preserve that metadata here\n */\n isOrdered() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n dictionaryKind() {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : DictionaryKind.DenseArray;\n }\n static startDictionaryEncoding(builder) {\n builder.startObject(4);\n }\n static addId(builder, id) {\n builder.addFieldInt64(0, id, builder.createLong(0, 0));\n }\n static addIndexType(builder, indexTypeOffset) {\n builder.addFieldOffset(1, indexTypeOffset, 0);\n }\n static addIsOrdered(builder, isOrdered) {\n builder.addFieldInt8(2, +isOrdered, +false);\n }\n static addDictionaryKind(builder, dictionaryKind) {\n builder.addFieldInt16(3, dictionaryKind, DictionaryKind.DenseArray);\n }\n static endDictionaryEncoding(builder) {\n const offset = builder.endObject();\n return offset;\n }\n}\n\n//# sourceMappingURL=dictionary-encoding.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * Opaque binary data\n */\nexport class Binary {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsBinary(bb, obj) {\n return (obj || new Binary()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsBinary(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Binary()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static startBinary(builder) {\n builder.startObject(0);\n }\n static endBinary(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createBinary(builder) {\n Binary.startBinary(builder);\n return Binary.endBinary(builder);\n }\n}\n\n//# sourceMappingURL=binary.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nexport class Bool {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsBool(bb, obj) {\n return (obj || new Bool()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsBool(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Bool()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static startBool(builder) {\n builder.startObject(0);\n }\n static endBool(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createBool(builder) {\n Bool.startBool(builder);\n return Bool.endBool(builder);\n }\n}\n\n//# sourceMappingURL=bool.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport var DateUnit;\n(function (DateUnit) {\n DateUnit[DateUnit[\"DAY\"] = 0] = \"DAY\";\n DateUnit[DateUnit[\"MILLISECOND\"] = 1] = \"MILLISECOND\";\n})(DateUnit || (DateUnit = {}));\n\n//# sourceMappingURL=date-unit.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { DateUnit } from './date-unit.mjs';\n/**\n * Date is either a 32-bit or 64-bit signed integer type representing an\n * elapsed time since UNIX epoch (1970-01-01), stored in either of two units:\n *\n * * Milliseconds (64 bits) indicating UNIX time elapsed since the epoch (no\n * leap seconds), where the values are evenly divisible by 86400000\n * * Days (32 bits) since the UNIX epoch\n */\nexport class Date {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsDate(bb, obj) {\n return (obj || new Date()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsDate(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Date()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n unit() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : DateUnit.MILLISECOND;\n }\n static startDate(builder) {\n builder.startObject(1);\n }\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, DateUnit.MILLISECOND);\n }\n static endDate(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createDate(builder, unit) {\n Date.startDate(builder);\n Date.addUnit(builder, unit);\n return Date.endDate(builder);\n }\n}\n\n//# sourceMappingURL=date.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * Exact decimal value represented as an integer value in two's\n * complement. Currently only 128-bit (16-byte) and 256-bit (32-byte) integers\n * are used. The representation uses the endianness indicated\n * in the Schema.\n */\nexport class Decimal {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsDecimal(bb, obj) {\n return (obj || new Decimal()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsDecimal(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Decimal()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Total number of decimal digits\n */\n precision() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * Number of digits after the decimal point \".\"\n */\n scale() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * Number of bits per value. The only accepted widths are 128 and 256.\n * We use bitWidth for consistency with Int::bitWidth.\n */\n bitWidth() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 128;\n }\n static startDecimal(builder) {\n builder.startObject(3);\n }\n static addPrecision(builder, precision) {\n builder.addFieldInt32(0, precision, 0);\n }\n static addScale(builder, scale) {\n builder.addFieldInt32(1, scale, 0);\n }\n static addBitWidth(builder, bitWidth) {\n builder.addFieldInt32(2, bitWidth, 128);\n }\n static endDecimal(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createDecimal(builder, precision, scale, bitWidth) {\n Decimal.startDecimal(builder);\n Decimal.addPrecision(builder, precision);\n Decimal.addScale(builder, scale);\n Decimal.addBitWidth(builder, bitWidth);\n return Decimal.endDecimal(builder);\n }\n}\n\n//# sourceMappingURL=decimal.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport var TimeUnit;\n(function (TimeUnit) {\n TimeUnit[TimeUnit[\"SECOND\"] = 0] = \"SECOND\";\n TimeUnit[TimeUnit[\"MILLISECOND\"] = 1] = \"MILLISECOND\";\n TimeUnit[TimeUnit[\"MICROSECOND\"] = 2] = \"MICROSECOND\";\n TimeUnit[TimeUnit[\"NANOSECOND\"] = 3] = \"NANOSECOND\";\n})(TimeUnit || (TimeUnit = {}));\n\n//# sourceMappingURL=time-unit.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nexport class FixedSizeBinary {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsFixedSizeBinary(bb, obj) {\n return (obj || new FixedSizeBinary()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsFixedSizeBinary(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new FixedSizeBinary()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Number of bytes per value\n */\n byteWidth() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n static startFixedSizeBinary(builder) {\n builder.startObject(1);\n }\n static addByteWidth(builder, byteWidth) {\n builder.addFieldInt32(0, byteWidth, 0);\n }\n static endFixedSizeBinary(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createFixedSizeBinary(builder, byteWidth) {\n FixedSizeBinary.startFixedSizeBinary(builder);\n FixedSizeBinary.addByteWidth(builder, byteWidth);\n return FixedSizeBinary.endFixedSizeBinary(builder);\n }\n}\n\n//# sourceMappingURL=fixed-size-binary.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nexport class FixedSizeList {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsFixedSizeList(bb, obj) {\n return (obj || new FixedSizeList()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsFixedSizeList(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new FixedSizeList()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Number of list items per value\n */\n listSize() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n static startFixedSizeList(builder) {\n builder.startObject(1);\n }\n static addListSize(builder, listSize) {\n builder.addFieldInt32(0, listSize, 0);\n }\n static endFixedSizeList(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createFixedSizeList(builder, listSize) {\n FixedSizeList.startFixedSizeList(builder);\n FixedSizeList.addListSize(builder, listSize);\n return FixedSizeList.endFixedSizeList(builder);\n }\n}\n\n//# sourceMappingURL=fixed-size-list.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport var Precision;\n(function (Precision) {\n Precision[Precision[\"HALF\"] = 0] = \"HALF\";\n Precision[Precision[\"SINGLE\"] = 1] = \"SINGLE\";\n Precision[Precision[\"DOUBLE\"] = 2] = \"DOUBLE\";\n})(Precision || (Precision = {}));\n\n//# sourceMappingURL=precision.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { Precision } from './precision.mjs';\nexport class FloatingPoint {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsFloatingPoint(bb, obj) {\n return (obj || new FloatingPoint()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsFloatingPoint(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new FloatingPoint()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n precision() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : Precision.HALF;\n }\n static startFloatingPoint(builder) {\n builder.startObject(1);\n }\n static addPrecision(builder, precision) {\n builder.addFieldInt16(0, precision, Precision.HALF);\n }\n static endFloatingPoint(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createFloatingPoint(builder, precision) {\n FloatingPoint.startFloatingPoint(builder);\n FloatingPoint.addPrecision(builder, precision);\n return FloatingPoint.endFloatingPoint(builder);\n }\n}\n\n//# sourceMappingURL=floating-point.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport var IntervalUnit;\n(function (IntervalUnit) {\n IntervalUnit[IntervalUnit[\"YEAR_MONTH\"] = 0] = \"YEAR_MONTH\";\n IntervalUnit[IntervalUnit[\"DAY_TIME\"] = 1] = \"DAY_TIME\";\n IntervalUnit[IntervalUnit[\"MONTH_DAY_NANO\"] = 2] = \"MONTH_DAY_NANO\";\n})(IntervalUnit || (IntervalUnit = {}));\n\n//# sourceMappingURL=interval-unit.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { IntervalUnit } from './interval-unit.mjs';\nexport class Interval {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsInterval(bb, obj) {\n return (obj || new Interval()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsInterval(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Interval()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n unit() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : IntervalUnit.YEAR_MONTH;\n }\n static startInterval(builder) {\n builder.startObject(1);\n }\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, IntervalUnit.YEAR_MONTH);\n }\n static endInterval(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createInterval(builder, unit) {\n Interval.startInterval(builder);\n Interval.addUnit(builder, unit);\n return Interval.endInterval(builder);\n }\n}\n\n//# sourceMappingURL=interval.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nexport class List {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsList(bb, obj) {\n return (obj || new List()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsList(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new List()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static startList(builder) {\n builder.startObject(0);\n }\n static endList(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createList(builder) {\n List.startList(builder);\n return List.endList(builder);\n }\n}\n\n//# sourceMappingURL=list.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * A Map is a logical nested type that is represented as\n *\n * List>\n *\n * In this layout, the keys and values are each respectively contiguous. We do\n * not constrain the key and value types, so the application is responsible\n * for ensuring that the keys are hashable and unique. Whether the keys are sorted\n * may be set in the metadata for this field.\n *\n * In a field with Map type, the field has a child Struct field, which then\n * has two children: key type and the second the value type. The names of the\n * child fields may be respectively \"entries\", \"key\", and \"value\", but this is\n * not enforced.\n *\n * Map\n * ```text\n * - child[0] entries: Struct\n * - child[0] key: K\n * - child[1] value: V\n * ```\n * Neither the \"entries\" field nor the \"key\" field may be nullable.\n *\n * The metadata is structured so that Arrow systems without special handling\n * for Map can make Map an alias for List. The \"layout\" attribute for the Map\n * field must have the same contents as a List.\n */\nexport class Map {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsMap(bb, obj) {\n return (obj || new Map()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsMap(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Map()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Set to true if the keys within each value are sorted\n */\n keysSorted() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n static startMap(builder) {\n builder.startObject(1);\n }\n static addKeysSorted(builder, keysSorted) {\n builder.addFieldInt8(0, +keysSorted, +false);\n }\n static endMap(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createMap(builder, keysSorted) {\n Map.startMap(builder);\n Map.addKeysSorted(builder, keysSorted);\n return Map.endMap(builder);\n }\n}\n\n//# sourceMappingURL=map.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * These are stored in the flatbuffer in the Type union below\n */\nexport class Null {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsNull(bb, obj) {\n return (obj || new Null()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsNull(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Null()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static startNull(builder) {\n builder.startObject(0);\n }\n static endNull(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createNull(builder) {\n Null.startNull(builder);\n return Null.endNull(builder);\n }\n}\n\n//# sourceMappingURL=null.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * A Struct_ in the flatbuffer metadata is the same as an Arrow Struct\n * (according to the physical memory layout). We used Struct_ here as\n * Struct is a reserved word in Flatbuffers\n */\nexport class Struct_ {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsStruct_(bb, obj) {\n return (obj || new Struct_()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsStruct_(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Struct_()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static startStruct_(builder) {\n builder.startObject(0);\n }\n static endStruct_(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createStruct_(builder) {\n Struct_.startStruct_(builder);\n return Struct_.endStruct_(builder);\n }\n}\n\n//# sourceMappingURL=struct_.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { TimeUnit } from './time-unit.mjs';\n/**\n * Time is either a 32-bit or 64-bit signed integer type representing an\n * elapsed time since midnight, stored in either of four units: seconds,\n * milliseconds, microseconds or nanoseconds.\n *\n * The integer `bitWidth` depends on the `unit` and must be one of the following:\n * * SECOND and MILLISECOND: 32 bits\n * * MICROSECOND and NANOSECOND: 64 bits\n *\n * The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds\n * (exclusive), adjusted for the time unit (for example, up to 86400000\n * exclusive for the MILLISECOND unit).\n * This definition doesn't allow for leap seconds. Time values from\n * measurements with leap seconds will need to be corrected when ingesting\n * into Arrow (for example by replacing the value 86400 with 86399).\n */\nexport class Time {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsTime(bb, obj) {\n return (obj || new Time()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsTime(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Time()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n unit() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : TimeUnit.MILLISECOND;\n }\n bitWidth() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 32;\n }\n static startTime(builder) {\n builder.startObject(2);\n }\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, TimeUnit.MILLISECOND);\n }\n static addBitWidth(builder, bitWidth) {\n builder.addFieldInt32(1, bitWidth, 32);\n }\n static endTime(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createTime(builder, unit, bitWidth) {\n Time.startTime(builder);\n Time.addUnit(builder, unit);\n Time.addBitWidth(builder, bitWidth);\n return Time.endTime(builder);\n }\n}\n\n//# sourceMappingURL=time.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { TimeUnit } from './time-unit.mjs';\n/**\n * Timestamp is a 64-bit signed integer representing an elapsed time since a\n * fixed epoch, stored in either of four units: seconds, milliseconds,\n * microseconds or nanoseconds, and is optionally annotated with a timezone.\n *\n * Timestamp values do not include any leap seconds (in other words, all\n * days are considered 86400 seconds long).\n *\n * Timestamps with a non-empty timezone\n * ------------------------------------\n *\n * If a Timestamp column has a non-empty timezone value, its epoch is\n * 1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone\n * (the Unix epoch), regardless of the Timestamp's own timezone.\n *\n * Therefore, timestamp values with a non-empty timezone correspond to\n * physical points in time together with some additional information about\n * how the data was obtained and/or how to display it (the timezone).\n *\n * For example, the timestamp value 0 with the timezone string \"Europe/Paris\"\n * corresponds to \"January 1st 1970, 00h00\" in the UTC timezone, but the\n * application may prefer to display it as \"January 1st 1970, 01h00\" in\n * the Europe/Paris timezone (which is the same physical point in time).\n *\n * One consequence is that timestamp values with a non-empty timezone\n * can be compared and ordered directly, since they all share the same\n * well-known point of reference (the Unix epoch).\n *\n * Timestamps with an unset / empty timezone\n * -----------------------------------------\n *\n * If a Timestamp column has no timezone value, its epoch is\n * 1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.\n *\n * Therefore, timestamp values without a timezone cannot be meaningfully\n * interpreted as physical points in time, but only as calendar / clock\n * indications (\"wall clock time\") in an unspecified timezone.\n *\n * For example, the timestamp value 0 with an empty timezone string\n * corresponds to \"January 1st 1970, 00h00\" in an unknown timezone: there\n * is not enough information to interpret it as a well-defined physical\n * point in time.\n *\n * One consequence is that timestamp values without a timezone cannot\n * be reliably compared or ordered, since they may have different points of\n * reference. In particular, it is *not* possible to interpret an unset\n * or empty timezone as the same as \"UTC\".\n *\n * Conversion between timezones\n * ----------------------------\n *\n * If a Timestamp column has a non-empty timezone, changing the timezone\n * to a different non-empty value is a metadata-only operation:\n * the timestamp values need not change as their point of reference remains\n * the same (the Unix epoch).\n *\n * However, if a Timestamp column has no timezone value, changing it to a\n * non-empty value requires to think about the desired semantics.\n * One possibility is to assume that the original timestamp values are\n * relative to the epoch of the timezone being set; timestamp values should\n * then adjusted to the Unix epoch (for example, changing the timezone from\n * empty to \"Europe/Paris\" would require converting the timestamp values\n * from \"Europe/Paris\" to \"UTC\", which seems counter-intuitive but is\n * nevertheless correct).\n *\n * Guidelines for encoding data from external libraries\n * ----------------------------------------------------\n *\n * Date & time libraries often have multiple different data types for temporal\n * data. In order to ease interoperability between different implementations the\n * Arrow project has some recommendations for encoding these types into a Timestamp\n * column.\n *\n * An \"instant\" represents a physical point in time that has no relevant timezone\n * (for example, astronomical data). To encode an instant, use a Timestamp with\n * the timezone string set to \"UTC\", and make sure the Timestamp values\n * are relative to the UTC epoch (January 1st 1970, midnight).\n *\n * A \"zoned date-time\" represents a physical point in time annotated with an\n * informative timezone (for example, the timezone in which the data was\n * recorded). To encode a zoned date-time, use a Timestamp with the timezone\n * string set to the name of the timezone, and make sure the Timestamp values\n * are relative to the UTC epoch (January 1st 1970, midnight).\n *\n * (There is some ambiguity between an instant and a zoned date-time with the\n * UTC timezone. Both of these are stored the same in Arrow. Typically,\n * this distinction does not matter. If it does, then an application should\n * use custom metadata or an extension type to distinguish between the two cases.)\n *\n * An \"offset date-time\" represents a physical point in time combined with an\n * explicit offset from UTC. To encode an offset date-time, use a Timestamp\n * with the timezone string set to the numeric timezone offset string\n * (e.g. \"+03:00\"), and make sure the Timestamp values are relative to\n * the UTC epoch (January 1st 1970, midnight).\n *\n * A \"naive date-time\" (also called \"local date-time\" in some libraries)\n * represents a wall clock time combined with a calendar date, but with\n * no indication of how to map this information to a physical point in time.\n * Naive date-times must be handled with care because of this missing\n * information, and also because daylight saving time (DST) may make\n * some values ambiguous or non-existent. A naive date-time may be\n * stored as a struct with Date and Time fields. However, it may also be\n * encoded into a Timestamp column with an empty timezone. The timestamp\n * values should be computed \"as if\" the timezone of the date-time values\n * was UTC; for example, the naive date-time \"January 1st 1970, 00h00\" would\n * be encoded as timestamp value 0.\n */\nexport class Timestamp {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsTimestamp(bb, obj) {\n return (obj || new Timestamp()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsTimestamp(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Timestamp()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n unit() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : TimeUnit.SECOND;\n }\n timezone(optionalEncoding) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n static startTimestamp(builder) {\n builder.startObject(2);\n }\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, TimeUnit.SECOND);\n }\n static addTimezone(builder, timezoneOffset) {\n builder.addFieldOffset(1, timezoneOffset, 0);\n }\n static endTimestamp(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createTimestamp(builder, unit, timezoneOffset) {\n Timestamp.startTimestamp(builder);\n Timestamp.addUnit(builder, unit);\n Timestamp.addTimezone(builder, timezoneOffset);\n return Timestamp.endTimestamp(builder);\n }\n}\n\n//# sourceMappingURL=timestamp.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport var UnionMode;\n(function (UnionMode) {\n UnionMode[UnionMode[\"Sparse\"] = 0] = \"Sparse\";\n UnionMode[UnionMode[\"Dense\"] = 1] = \"Dense\";\n})(UnionMode || (UnionMode = {}));\n\n//# sourceMappingURL=union-mode.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { UnionMode } from './union-mode.mjs';\n/**\n * A union is a complex type with children in Field\n * By default ids in the type vector refer to the offsets in the children\n * optionally typeIds provides an indirection between the child offset and the type id\n * for each child `typeIds[offset]` is the id used in the type vector\n */\nexport class Union {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsUnion(bb, obj) {\n return (obj || new Union()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsUnion(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Union()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n mode() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : UnionMode.Sparse;\n }\n typeIds(index) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0;\n }\n typeIdsLength() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n typeIdsArray() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? new Int32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;\n }\n static startUnion(builder) {\n builder.startObject(2);\n }\n static addMode(builder, mode) {\n builder.addFieldInt16(0, mode, UnionMode.Sparse);\n }\n static addTypeIds(builder, typeIdsOffset) {\n builder.addFieldOffset(1, typeIdsOffset, 0);\n }\n static createTypeIdsVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt32(data[i]);\n }\n return builder.endVector();\n }\n static startTypeIdsVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static endUnion(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createUnion(builder, mode, typeIdsOffset) {\n Union.startUnion(builder);\n Union.addMode(builder, mode);\n Union.addTypeIds(builder, typeIdsOffset);\n return Union.endUnion(builder);\n }\n}\n\n//# sourceMappingURL=union.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\n/**\n * Unicode with UTF-8 encoding\n */\nexport class Utf8 {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsUtf8(bb, obj) {\n return (obj || new Utf8()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsUtf8(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Utf8()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static startUtf8(builder) {\n builder.startObject(0);\n }\n static endUtf8(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createUtf8(builder) {\n Utf8.startUtf8(builder);\n return Utf8.endUtf8(builder);\n }\n}\n\n//# sourceMappingURL=utf8.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport { Binary } from './binary.mjs';\nimport { Bool } from './bool.mjs';\nimport { Date } from './date.mjs';\nimport { Decimal } from './decimal.mjs';\nimport { Duration } from './duration.mjs';\nimport { FixedSizeBinary } from './fixed-size-binary.mjs';\nimport { FixedSizeList } from './fixed-size-list.mjs';\nimport { FloatingPoint } from './floating-point.mjs';\nimport { Int } from './int.mjs';\nimport { Interval } from './interval.mjs';\nimport { LargeBinary } from './large-binary.mjs';\nimport { LargeList } from './large-list.mjs';\nimport { LargeUtf8 } from './large-utf8.mjs';\nimport { List } from './list.mjs';\nimport { Map } from './map.mjs';\nimport { Null } from './null.mjs';\nimport { Struct_ } from './struct_.mjs';\nimport { Time } from './time.mjs';\nimport { Timestamp } from './timestamp.mjs';\nimport { Union } from './union.mjs';\nimport { Utf8 } from './utf8.mjs';\n/**\n * ----------------------------------------------------------------------\n * Top-level Type value, enabling extensible type-specific metadata. We can\n * add new logical types to Type without breaking backwards compatibility\n */\nexport var Type;\n(function (Type) {\n Type[Type[\"NONE\"] = 0] = \"NONE\";\n Type[Type[\"Null\"] = 1] = \"Null\";\n Type[Type[\"Int\"] = 2] = \"Int\";\n Type[Type[\"FloatingPoint\"] = 3] = \"FloatingPoint\";\n Type[Type[\"Binary\"] = 4] = \"Binary\";\n Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n Type[Type[\"Bool\"] = 6] = \"Bool\";\n Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n Type[Type[\"Date\"] = 8] = \"Date\";\n Type[Type[\"Time\"] = 9] = \"Time\";\n Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n Type[Type[\"Interval\"] = 11] = \"Interval\";\n Type[Type[\"List\"] = 12] = \"List\";\n Type[Type[\"Struct_\"] = 13] = \"Struct_\";\n Type[Type[\"Union\"] = 14] = \"Union\";\n Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n Type[Type[\"Map\"] = 17] = \"Map\";\n Type[Type[\"Duration\"] = 18] = \"Duration\";\n Type[Type[\"LargeBinary\"] = 19] = \"LargeBinary\";\n Type[Type[\"LargeUtf8\"] = 20] = \"LargeUtf8\";\n Type[Type[\"LargeList\"] = 21] = \"LargeList\";\n})(Type || (Type = {}));\nexport function unionToType(type, accessor) {\n switch (Type[type]) {\n case 'NONE': return null;\n case 'Null': return accessor(new Null());\n case 'Int': return accessor(new Int());\n case 'FloatingPoint': return accessor(new FloatingPoint());\n case 'Binary': return accessor(new Binary());\n case 'Utf8': return accessor(new Utf8());\n case 'Bool': return accessor(new Bool());\n case 'Decimal': return accessor(new Decimal());\n case 'Date': return accessor(new Date());\n case 'Time': return accessor(new Time());\n case 'Timestamp': return accessor(new Timestamp());\n case 'Interval': return accessor(new Interval());\n case 'List': return accessor(new List());\n case 'Struct_': return accessor(new Struct_());\n case 'Union': return accessor(new Union());\n case 'FixedSizeBinary': return accessor(new FixedSizeBinary());\n case 'FixedSizeList': return accessor(new FixedSizeList());\n case 'Map': return accessor(new Map());\n case 'Duration': return accessor(new Duration());\n case 'LargeBinary': return accessor(new LargeBinary());\n case 'LargeUtf8': return accessor(new LargeUtf8());\n case 'LargeList': return accessor(new LargeList());\n default: return null;\n }\n}\nexport function unionListToType(type, accessor, index) {\n switch (Type[type]) {\n case 'NONE': return null;\n case 'Null': return accessor(index, new Null());\n case 'Int': return accessor(index, new Int());\n case 'FloatingPoint': return accessor(index, new FloatingPoint());\n case 'Binary': return accessor(index, new Binary());\n case 'Utf8': return accessor(index, new Utf8());\n case 'Bool': return accessor(index, new Bool());\n case 'Decimal': return accessor(index, new Decimal());\n case 'Date': return accessor(index, new Date());\n case 'Time': return accessor(index, new Time());\n case 'Timestamp': return accessor(index, new Timestamp());\n case 'Interval': return accessor(index, new Interval());\n case 'List': return accessor(index, new List());\n case 'Struct_': return accessor(index, new Struct_());\n case 'Union': return accessor(index, new Union());\n case 'FixedSizeBinary': return accessor(index, new FixedSizeBinary());\n case 'FixedSizeList': return accessor(index, new FixedSizeList());\n case 'Map': return accessor(index, new Map());\n case 'Duration': return accessor(index, new Duration());\n case 'LargeBinary': return accessor(index, new LargeBinary());\n case 'LargeUtf8': return accessor(index, new LargeUtf8());\n case 'LargeList': return accessor(index, new LargeList());\n default: return null;\n }\n}\n\n//# sourceMappingURL=type.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { DictionaryEncoding } from './dictionary-encoding.mjs';\nimport { KeyValue } from './key-value.mjs';\nimport { Type } from './type.mjs';\n/**\n * ----------------------------------------------------------------------\n * A field represents a named column in a record / row batch or child of a\n * nested type.\n */\nexport class Field {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsField(bb, obj) {\n return (obj || new Field()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsField(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Field()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n name(optionalEncoding) {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n /**\n * Whether or not this field can contain nulls. Should be true in general.\n */\n nullable() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n typeType() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.readUint8(this.bb_pos + offset) : Type.NONE;\n }\n /**\n * This is the type of the decoded value if the field is dictionary encoded.\n */\n // @ts-ignore\n type(obj) {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;\n }\n /**\n * Present only if the field is dictionary encoded.\n */\n dictionary(obj) {\n const offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? (obj || new DictionaryEncoding()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * children apply only to nested data types like Struct, List and Union. For\n * primitive types children will have length 0.\n */\n children(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 14);\n return offset ? (obj || new Field()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n childrenLength() {\n const offset = this.bb.__offset(this.bb_pos, 14);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * User-defined metadata\n */\n customMetadata(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 16);\n return offset ? (obj || new KeyValue()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n customMetadataLength() {\n const offset = this.bb.__offset(this.bb_pos, 16);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n static startField(builder) {\n builder.startObject(7);\n }\n static addName(builder, nameOffset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n static addNullable(builder, nullable) {\n builder.addFieldInt8(1, +nullable, +false);\n }\n static addTypeType(builder, typeType) {\n builder.addFieldInt8(2, typeType, Type.NONE);\n }\n static addType(builder, typeOffset) {\n builder.addFieldOffset(3, typeOffset, 0);\n }\n static addDictionary(builder, dictionaryOffset) {\n builder.addFieldOffset(4, dictionaryOffset, 0);\n }\n static addChildren(builder, childrenOffset) {\n builder.addFieldOffset(5, childrenOffset, 0);\n }\n static createChildrenVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n static startChildrenVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(6, customMetadataOffset, 0);\n }\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static endField(builder) {\n const offset = builder.endObject();\n return offset;\n }\n}\n\n//# sourceMappingURL=field.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { Endianness } from './endianness.mjs';\nimport { Field } from './field.mjs';\nimport { KeyValue } from './key-value.mjs';\n/**\n * ----------------------------------------------------------------------\n * A Schema describes the columns in a row batch\n */\nexport class Schema {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsSchema(bb, obj) {\n return (obj || new Schema()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsSchema(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Schema()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * endianness of the buffer\n * it is Little Endian by default\n * if endianness doesn't match the underlying system then the vectors need to be converted\n */\n endianness() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : Endianness.Little;\n }\n fields(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new Field()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n fieldsLength() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n customMetadata(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? (obj || new KeyValue()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n customMetadataLength() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * Features used in the stream/file.\n */\n features(index) {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.readInt64(this.bb.__vector(this.bb_pos + offset) + index * 8) : this.bb.createLong(0, 0);\n }\n featuresLength() {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n static startSchema(builder) {\n builder.startObject(4);\n }\n static addEndianness(builder, endianness) {\n builder.addFieldInt16(0, endianness, Endianness.Little);\n }\n static addFields(builder, fieldsOffset) {\n builder.addFieldOffset(1, fieldsOffset, 0);\n }\n static createFieldsVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n static startFieldsVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(2, customMetadataOffset, 0);\n }\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static addFeatures(builder, featuresOffset) {\n builder.addFieldOffset(3, featuresOffset, 0);\n }\n static createFeaturesVector(builder, data) {\n builder.startVector(8, data.length, 8);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt64(data[i]);\n }\n return builder.endVector();\n }\n static startFeaturesVector(builder, numElems) {\n builder.startVector(8, numElems, 8);\n }\n static endSchema(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static finishSchemaBuffer(builder, offset) {\n builder.finish(offset);\n }\n static finishSizePrefixedSchemaBuffer(builder, offset) {\n builder.finish(offset, undefined, true);\n }\n static createSchema(builder, endianness, fieldsOffset, customMetadataOffset, featuresOffset) {\n Schema.startSchema(builder);\n Schema.addEndianness(builder, endianness);\n Schema.addFields(builder, fieldsOffset);\n Schema.addCustomMetadata(builder, customMetadataOffset);\n Schema.addFeatures(builder, featuresOffset);\n return Schema.endSchema(builder);\n }\n}\n\n//# sourceMappingURL=schema.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { Block } from './block.mjs';\nimport { KeyValue } from './key-value.mjs';\nimport { MetadataVersion } from './metadata-version.mjs';\nimport { Schema } from './schema.mjs';\n/**\n * ----------------------------------------------------------------------\n * Arrow File metadata\n *\n */\nexport class Footer {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsFooter(bb, obj) {\n return (obj || new Footer()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsFooter(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Footer()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n version() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : MetadataVersion.V1;\n }\n schema(obj) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new Schema()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n dictionaries(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? (obj || new Block()).__init(this.bb.__vector(this.bb_pos + offset) + index * 24, this.bb) : null;\n }\n dictionariesLength() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n recordBatches(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? (obj || new Block()).__init(this.bb.__vector(this.bb_pos + offset) + index * 24, this.bb) : null;\n }\n recordBatchesLength() {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * User-defined metadata\n */\n customMetadata(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? (obj || new KeyValue()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n customMetadataLength() {\n const offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n static startFooter(builder) {\n builder.startObject(5);\n }\n static addVersion(builder, version) {\n builder.addFieldInt16(0, version, MetadataVersion.V1);\n }\n static addSchema(builder, schemaOffset) {\n builder.addFieldOffset(1, schemaOffset, 0);\n }\n static addDictionaries(builder, dictionariesOffset) {\n builder.addFieldOffset(2, dictionariesOffset, 0);\n }\n static startDictionariesVector(builder, numElems) {\n builder.startVector(24, numElems, 8);\n }\n static addRecordBatches(builder, recordBatchesOffset) {\n builder.addFieldOffset(3, recordBatchesOffset, 0);\n }\n static startRecordBatchesVector(builder, numElems) {\n builder.startVector(24, numElems, 8);\n }\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(4, customMetadataOffset, 0);\n }\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static endFooter(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static finishFooterBuffer(builder, offset) {\n builder.finish(offset);\n }\n static finishSizePrefixedFooterBuffer(builder, offset) {\n builder.finish(offset, undefined, true);\n }\n}\n\n//# sourceMappingURL=footer.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { DataType } from './type.mjs';\nexport class Schema {\n constructor(fields = [], metadata, dictionaries) {\n this.fields = (fields || []);\n this.metadata = metadata || new Map();\n if (!dictionaries) {\n dictionaries = generateDictionaryMap(fields);\n }\n this.dictionaries = dictionaries;\n }\n get [Symbol.toStringTag]() { return 'Schema'; }\n get names() { return this.fields.map((f) => f.name); }\n toString() {\n return `Schema<{ ${this.fields.map((f, i) => `${i}: ${f}`).join(', ')} }>`;\n }\n /**\n * Construct a new Schema containing only specified fields.\n *\n * @param fieldNames Names of fields to keep.\n * @returns A new Schema of fields matching the specified names.\n */\n select(fieldNames) {\n const names = new Set(fieldNames);\n const fields = this.fields.filter((f) => names.has(f.name));\n return new Schema(fields, this.metadata);\n }\n /**\n * Construct a new Schema containing only fields at the specified indices.\n *\n * @param fieldIndices Indices of fields to keep.\n * @returns A new Schema of fields at the specified indices.\n */\n selectAt(fieldIndices) {\n const fields = fieldIndices.map((i) => this.fields[i]).filter(Boolean);\n return new Schema(fields, this.metadata);\n }\n assign(...args) {\n const other = (args[0] instanceof Schema\n ? args[0]\n : Array.isArray(args[0])\n ? new Schema(args[0])\n : new Schema(args));\n const curFields = [...this.fields];\n const metadata = mergeMaps(mergeMaps(new Map(), this.metadata), other.metadata);\n const newFields = other.fields.filter((f2) => {\n const i = curFields.findIndex((f) => f.name === f2.name);\n return ~i ? (curFields[i] = f2.clone({\n metadata: mergeMaps(mergeMaps(new Map(), curFields[i].metadata), f2.metadata)\n })) && false : true;\n });\n const newDictionaries = generateDictionaryMap(newFields, new Map());\n return new Schema([...curFields, ...newFields], metadata, new Map([...this.dictionaries, ...newDictionaries]));\n }\n}\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\nSchema.prototype.fields = null;\nSchema.prototype.metadata = null;\nSchema.prototype.dictionaries = null;\nexport class Field {\n constructor(name, type, nullable = false, metadata) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata || new Map();\n }\n /** @nocollapse */\n static new(...args) {\n let [name, type, nullable, metadata] = args;\n if (args[0] && typeof args[0] === 'object') {\n ({ name } = args[0]);\n (type === undefined) && (type = args[0].type);\n (nullable === undefined) && (nullable = args[0].nullable);\n (metadata === undefined) && (metadata = args[0].metadata);\n }\n return new Field(`${name}`, type, nullable, metadata);\n }\n get typeId() { return this.type.typeId; }\n get [Symbol.toStringTag]() { return 'Field'; }\n toString() { return `${this.name}: ${this.type}`; }\n clone(...args) {\n let [name, type, nullable, metadata] = args;\n (!args[0] || typeof args[0] !== 'object')\n ? ([name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata] = args)\n : ({ name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata } = args[0]);\n return Field.new(name, type, nullable, metadata);\n }\n}\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\nField.prototype.type = null;\nField.prototype.name = null;\nField.prototype.nullable = null;\nField.prototype.metadata = null;\n/** @ignore */\nfunction mergeMaps(m1, m2) {\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n/** @ignore */\nfunction generateDictionaryMap(fields, dictionaries = new Map()) {\n for (let i = -1, n = fields.length; ++i < n;) {\n const field = fields[i];\n const type = field.type;\n if (DataType.isDictionary(type)) {\n if (!dictionaries.has(type.id)) {\n dictionaries.set(type.id, type.dictionary);\n }\n else if (dictionaries.get(type.id) !== type.dictionary) {\n throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n }\n }\n if (type.children && type.children.length > 0) {\n generateDictionaryMap(type.children, dictionaries);\n }\n }\n return dictionaries;\n}\n\n//# sourceMappingURL=schema.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Block as _Block } from '../../fb/block.mjs';\nimport { Footer as _Footer } from '../../fb/footer.mjs';\nimport * as flatbuffers from 'flatbuffers';\nvar Long = flatbuffers.Long;\nvar Builder = flatbuffers.Builder;\nvar ByteBuffer = flatbuffers.ByteBuffer;\nimport { Schema } from '../../schema.mjs';\nimport { MetadataVersion } from '../../enum.mjs';\nimport { toUint8Array } from '../../util/buffer.mjs';\n/** @ignore */\nclass Footer_ {\n constructor(schema, version = MetadataVersion.V4, recordBatches, dictionaryBatches) {\n this.schema = schema;\n this.version = version;\n recordBatches && (this._recordBatches = recordBatches);\n dictionaryBatches && (this._dictionaryBatches = dictionaryBatches);\n }\n /** @nocollapse */\n static decode(buf) {\n buf = new ByteBuffer(toUint8Array(buf));\n const footer = _Footer.getRootAsFooter(buf);\n const schema = Schema.decode(footer.schema());\n return new OffHeapFooter(schema, footer);\n }\n /** @nocollapse */\n static encode(footer) {\n const b = new Builder();\n const schemaOffset = Schema.encode(b, footer.schema);\n _Footer.startRecordBatchesVector(b, footer.numRecordBatches);\n for (const rb of [...footer.recordBatches()].slice().reverse()) {\n FileBlock.encode(b, rb);\n }\n const recordBatchesOffset = b.endVector();\n _Footer.startDictionariesVector(b, footer.numDictionaries);\n for (const db of [...footer.dictionaryBatches()].slice().reverse()) {\n FileBlock.encode(b, db);\n }\n const dictionaryBatchesOffset = b.endVector();\n _Footer.startFooter(b);\n _Footer.addSchema(b, schemaOffset);\n _Footer.addVersion(b, MetadataVersion.V4);\n _Footer.addRecordBatches(b, recordBatchesOffset);\n _Footer.addDictionaries(b, dictionaryBatchesOffset);\n _Footer.finishFooterBuffer(b, _Footer.endFooter(b));\n return b.asUint8Array();\n }\n get numRecordBatches() { return this._recordBatches.length; }\n get numDictionaries() { return this._dictionaryBatches.length; }\n *recordBatches() {\n for (let block, i = -1, n = this.numRecordBatches; ++i < n;) {\n if (block = this.getRecordBatch(i)) {\n yield block;\n }\n }\n }\n *dictionaryBatches() {\n for (let block, i = -1, n = this.numDictionaries; ++i < n;) {\n if (block = this.getDictionaryBatch(i)) {\n yield block;\n }\n }\n }\n getRecordBatch(index) {\n return index >= 0\n && index < this.numRecordBatches\n && this._recordBatches[index] || null;\n }\n getDictionaryBatch(index) {\n return index >= 0\n && index < this.numDictionaries\n && this._dictionaryBatches[index] || null;\n }\n}\nexport { Footer_ as Footer };\n/** @ignore */\nclass OffHeapFooter extends Footer_ {\n constructor(schema, _footer) {\n super(schema, _footer.version());\n this._footer = _footer;\n }\n get numRecordBatches() { return this._footer.recordBatchesLength(); }\n get numDictionaries() { return this._footer.dictionariesLength(); }\n getRecordBatch(index) {\n if (index >= 0 && index < this.numRecordBatches) {\n const fileBlock = this._footer.recordBatches(index);\n if (fileBlock) {\n return FileBlock.decode(fileBlock);\n }\n }\n return null;\n }\n getDictionaryBatch(index) {\n if (index >= 0 && index < this.numDictionaries) {\n const fileBlock = this._footer.dictionaries(index);\n if (fileBlock) {\n return FileBlock.decode(fileBlock);\n }\n }\n return null;\n }\n}\n/** @ignore */\nexport class FileBlock {\n constructor(metaDataLength, bodyLength, offset) {\n this.metaDataLength = metaDataLength;\n this.offset = typeof offset === 'number' ? offset : offset.low;\n this.bodyLength = typeof bodyLength === 'number' ? bodyLength : bodyLength.low;\n }\n /** @nocollapse */\n static decode(block) {\n return new FileBlock(block.metaDataLength(), block.bodyLength(), block.offset());\n }\n /** @nocollapse */\n static encode(b, fileBlock) {\n const { metaDataLength } = fileBlock;\n const offset = new Long(fileBlock.offset, 0);\n const bodyLength = new Long(fileBlock.bodyLength, 0);\n return _Block.createBlock(b, offset, metaDataLength, bodyLength);\n }\n}\n\n//# sourceMappingURL=file.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __awaiter } from \"tslib\";\nimport streamAdapters from './adapters.mjs';\n/** @ignore */\nexport const ITERATOR_DONE = Object.freeze({ done: true, value: void (0) });\n/** @ignore */\nexport class ArrowJSON {\n constructor(_json) {\n this._json = _json;\n }\n get schema() { return this._json['schema']; }\n get batches() { return (this._json['batches'] || []); }\n get dictionaries() { return (this._json['dictionaries'] || []); }\n}\n/** @ignore */\nexport class ReadableInterop {\n tee() {\n return this._getDOMStream().tee();\n }\n pipe(writable, options) {\n return this._getNodeStream().pipe(writable, options);\n }\n pipeTo(writable, options) { return this._getDOMStream().pipeTo(writable, options); }\n pipeThrough(duplex, options) {\n return this._getDOMStream().pipeThrough(duplex, options);\n }\n _getDOMStream() {\n return this._DOMStream || (this._DOMStream = this.toDOMStream());\n }\n _getNodeStream() {\n return this._nodeStream || (this._nodeStream = this.toNodeStream());\n }\n}\n/** @ignore */\nexport class AsyncQueue extends ReadableInterop {\n constructor() {\n super();\n this._values = [];\n this.resolvers = [];\n this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);\n }\n get closed() { return this._closedPromise; }\n cancel(reason) {\n return __awaiter(this, void 0, void 0, function* () { yield this.return(reason); });\n }\n write(value) {\n if (this._ensureOpen()) {\n this.resolvers.length <= 0\n ? (this._values.push(value))\n : (this.resolvers.shift().resolve({ done: false, value }));\n }\n }\n abort(value) {\n if (this._closedPromiseResolve) {\n this.resolvers.length <= 0\n ? (this._error = { error: value })\n : (this.resolvers.shift().reject({ done: true, value }));\n }\n }\n close() {\n if (this._closedPromiseResolve) {\n const { resolvers } = this;\n while (resolvers.length > 0) {\n resolvers.shift().resolve(ITERATOR_DONE);\n }\n this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n }\n }\n [Symbol.asyncIterator]() { return this; }\n toDOMStream(options) {\n return streamAdapters.toDOMStream((this._closedPromiseResolve || this._error)\n ? this\n : this._values, options);\n }\n toNodeStream(options) {\n return streamAdapters.toNodeStream((this._closedPromiseResolve || this._error)\n ? this\n : this._values, options);\n }\n throw(_) {\n return __awaiter(this, void 0, void 0, function* () { yield this.abort(_); return ITERATOR_DONE; });\n }\n return(_) {\n return __awaiter(this, void 0, void 0, function* () { yield this.close(); return ITERATOR_DONE; });\n }\n read(size) {\n return __awaiter(this, void 0, void 0, function* () { return (yield this.next(size, 'read')).value; });\n }\n peek(size) {\n return __awaiter(this, void 0, void 0, function* () { return (yield this.next(size, 'peek')).value; });\n }\n next(..._args) {\n if (this._values.length > 0) {\n return Promise.resolve({ done: false, value: this._values.shift() });\n }\n else if (this._error) {\n return Promise.reject({ done: true, value: this._error.error });\n }\n else if (!this._closedPromiseResolve) {\n return Promise.resolve(ITERATOR_DONE);\n }\n else {\n return new Promise((resolve, reject) => {\n this.resolvers.push({ resolve, reject });\n });\n }\n }\n _ensureOpen() {\n if (this._closedPromiseResolve) {\n return true;\n }\n throw new Error(`AsyncQueue is closed`);\n }\n}\n\n//# sourceMappingURL=interfaces.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __asyncValues, __awaiter } from \"tslib\";\nimport streamAdapters from './adapters.mjs';\nimport { decodeUtf8 } from '../util/utf8.mjs';\nimport { ITERATOR_DONE, AsyncQueue } from './interfaces.mjs';\nimport { toUint8Array, joinUint8Arrays } from '../util/buffer.mjs';\nimport { isPromise, isFetchResponse, isIterable, isAsyncIterable, isReadableDOMStream, isReadableNodeStream } from '../util/compat.mjs';\n/** @ignore */\nexport class AsyncByteQueue extends AsyncQueue {\n write(value) {\n if ((value = toUint8Array(value)).byteLength > 0) {\n return super.write(value);\n }\n }\n toString(sync = false) {\n return sync\n ? decodeUtf8(this.toUint8Array(true))\n : this.toUint8Array(false).then(decodeUtf8);\n }\n toUint8Array(sync = false) {\n return sync ? joinUint8Arrays(this._values)[0] : (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _a;\n const buffers = [];\n let byteLength = 0;\n try {\n for (var _b = __asyncValues(this), _c; _c = yield _b.next(), !_c.done;) {\n const chunk = _c.value;\n buffers.push(chunk);\n byteLength += chunk.byteLength;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return joinUint8Arrays(buffers, byteLength)[0];\n }))();\n }\n}\n/** @ignore */\nexport class ByteStream {\n constructor(source) {\n if (source) {\n this.source = new ByteStreamSource(streamAdapters.fromIterable(source));\n }\n }\n [Symbol.iterator]() { return this; }\n next(value) { return this.source.next(value); }\n throw(value) { return this.source.throw(value); }\n return(value) { return this.source.return(value); }\n peek(size) { return this.source.peek(size); }\n read(size) { return this.source.read(size); }\n}\n/** @ignore */\nexport class AsyncByteStream {\n constructor(source) {\n if (source instanceof AsyncByteStream) {\n this.source = source.source;\n }\n else if (source instanceof AsyncByteQueue) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n else if (isReadableNodeStream(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromNodeStream(source));\n }\n else if (isReadableDOMStream(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromDOMStream(source));\n }\n else if (isFetchResponse(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromDOMStream(source.body));\n }\n else if (isIterable(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromIterable(source));\n }\n else if (isPromise(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n else if (isAsyncIterable(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n }\n [Symbol.asyncIterator]() { return this; }\n next(value) { return this.source.next(value); }\n throw(value) { return this.source.throw(value); }\n return(value) { return this.source.return(value); }\n get closed() { return this.source.closed; }\n cancel(reason) { return this.source.cancel(reason); }\n peek(size) { return this.source.peek(size); }\n read(size) { return this.source.read(size); }\n}\n/** @ignore */\nclass ByteStreamSource {\n constructor(source) {\n this.source = source;\n }\n cancel(reason) { this.return(reason); }\n peek(size) { return this.next(size, 'peek').value; }\n read(size) { return this.next(size, 'read').value; }\n next(size, cmd = 'read') { return this.source.next({ cmd, size }); }\n throw(value) { return Object.create((this.source.throw && this.source.throw(value)) || ITERATOR_DONE); }\n return(value) { return Object.create((this.source.return && this.source.return(value)) || ITERATOR_DONE); }\n}\n/** @ignore */\nclass AsyncByteStreamSource {\n constructor(source) {\n this.source = source;\n this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);\n }\n cancel(reason) {\n return __awaiter(this, void 0, void 0, function* () { yield this.return(reason); });\n }\n get closed() { return this._closedPromise; }\n read(size) {\n return __awaiter(this, void 0, void 0, function* () { return (yield this.next(size, 'read')).value; });\n }\n peek(size) {\n return __awaiter(this, void 0, void 0, function* () { return (yield this.next(size, 'peek')).value; });\n }\n next(size, cmd = 'read') {\n return __awaiter(this, void 0, void 0, function* () { return (yield this.source.next({ cmd, size })); });\n }\n throw(value) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = (this.source.throw && (yield this.source.throw(value))) || ITERATOR_DONE;\n this._closedPromiseResolve && this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n return Object.create(result);\n });\n }\n return(value) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = (this.source.return && (yield this.source.return(value))) || ITERATOR_DONE;\n this._closedPromiseResolve && this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n return Object.create(result);\n });\n }\n}\n\n//# sourceMappingURL=stream.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __awaiter } from \"tslib\";\nimport { ByteStream, AsyncByteStream } from './stream.mjs';\nimport { toUint8Array } from '../util/buffer.mjs';\n/** @ignore */\nexport class RandomAccessFile extends ByteStream {\n constructor(buffer, byteLength) {\n super();\n this.position = 0;\n this.buffer = toUint8Array(buffer);\n this.size = typeof byteLength === 'undefined' ? this.buffer.byteLength : byteLength;\n }\n readInt32(position) {\n const { buffer, byteOffset } = this.readAt(position, 4);\n return new DataView(buffer, byteOffset).getInt32(0, true);\n }\n seek(position) {\n this.position = Math.min(position, this.size);\n return position < this.size;\n }\n read(nBytes) {\n const { buffer, size, position } = this;\n if (buffer && position < size) {\n if (typeof nBytes !== 'number') {\n nBytes = Number.POSITIVE_INFINITY;\n }\n this.position = Math.min(size, position + Math.min(size - position, nBytes));\n return buffer.subarray(position, this.position);\n }\n return null;\n }\n readAt(position, nBytes) {\n const buf = this.buffer;\n const end = Math.min(this.size, position + nBytes);\n return buf ? buf.subarray(position, end) : new Uint8Array(nBytes);\n }\n close() { this.buffer && (this.buffer = null); }\n throw(value) { this.close(); return { done: true, value }; }\n return(value) { this.close(); return { done: true, value }; }\n}\n/** @ignore */\nexport class AsyncRandomAccessFile extends AsyncByteStream {\n constructor(file, byteLength) {\n super();\n this.position = 0;\n this._handle = file;\n if (typeof byteLength === 'number') {\n this.size = byteLength;\n }\n else {\n this._pending = (() => __awaiter(this, void 0, void 0, function* () {\n this.size = (yield file.stat()).size;\n delete this._pending;\n }))();\n }\n }\n readInt32(position) {\n return __awaiter(this, void 0, void 0, function* () {\n const { buffer, byteOffset } = yield this.readAt(position, 4);\n return new DataView(buffer, byteOffset).getInt32(0, true);\n });\n }\n seek(position) {\n return __awaiter(this, void 0, void 0, function* () {\n this._pending && (yield this._pending);\n this.position = Math.min(position, this.size);\n return position < this.size;\n });\n }\n read(nBytes) {\n return __awaiter(this, void 0, void 0, function* () {\n this._pending && (yield this._pending);\n const { _handle: file, size, position } = this;\n if (file && position < size) {\n if (typeof nBytes !== 'number') {\n nBytes = Number.POSITIVE_INFINITY;\n }\n let pos = position, offset = 0, bytesRead = 0;\n const end = Math.min(size, pos + Math.min(size - pos, nBytes));\n const buffer = new Uint8Array(Math.max(0, (this.position = end) - pos));\n while ((pos += bytesRead) < end && (offset += bytesRead) < buffer.byteLength) {\n ({ bytesRead } = yield file.read(buffer, offset, buffer.byteLength - offset, pos));\n }\n return buffer;\n }\n return null;\n });\n }\n readAt(position, nBytes) {\n return __awaiter(this, void 0, void 0, function* () {\n this._pending && (yield this._pending);\n const { _handle: file, size } = this;\n if (file && (position + nBytes) < size) {\n const end = Math.min(size, position + nBytes);\n const buffer = new Uint8Array(end - position);\n return (yield file.read(buffer, 0, nBytes, position)).buffer;\n }\n return new Uint8Array(nBytes);\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () { const f = this._handle; this._handle = null; f && (yield f.close()); });\n }\n throw(value) {\n return __awaiter(this, void 0, void 0, function* () { yield this.close(); return { done: true, value }; });\n }\n return(value) {\n return __awaiter(this, void 0, void 0, function* () { yield this.close(); return { done: true, value }; });\n }\n}\n\n//# sourceMappingURL=file.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nconst carryBit16 = 1 << 16;\n/** @ignore */\nfunction intAsHex(value) {\n if (value < 0) {\n value = 0xFFFFFFFF + value + 1;\n }\n return `0x${value.toString(16)}`;\n}\n/** @ignore */\nconst kInt32DecimalDigits = 8;\n/** @ignore */\nconst kPowersOfTen = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000\n];\n/** @ignore */\nexport class BaseInt64 {\n constructor(buffer) {\n this.buffer = buffer;\n }\n high() { return this.buffer[1]; }\n low() { return this.buffer[0]; }\n _times(other) {\n // Break the left and right numbers into 16 bit chunks\n // so that we can multiply them without overflow.\n const L = new Uint32Array([\n this.buffer[1] >>> 16,\n this.buffer[1] & 0xFFFF,\n this.buffer[0] >>> 16,\n this.buffer[0] & 0xFFFF\n ]);\n const R = new Uint32Array([\n other.buffer[1] >>> 16,\n other.buffer[1] & 0xFFFF,\n other.buffer[0] >>> 16,\n other.buffer[0] & 0xFFFF\n ]);\n let product = L[3] * R[3];\n this.buffer[0] = product & 0xFFFF;\n let sum = product >>> 16;\n product = L[2] * R[3];\n sum += product;\n product = (L[3] * R[2]) >>> 0;\n sum += product;\n this.buffer[0] += sum << 16;\n this.buffer[1] = (sum >>> 0 < product ? carryBit16 : 0);\n this.buffer[1] += sum >>> 16;\n this.buffer[1] += L[1] * R[3] + L[2] * R[2] + L[3] * R[1];\n this.buffer[1] += (L[0] * R[3] + L[1] * R[2] + L[2] * R[1] + L[3] * R[0]) << 16;\n return this;\n }\n _plus(other) {\n const sum = (this.buffer[0] + other.buffer[0]) >>> 0;\n this.buffer[1] += other.buffer[1];\n if (sum < (this.buffer[0] >>> 0)) {\n ++this.buffer[1];\n }\n this.buffer[0] = sum;\n }\n lessThan(other) {\n return this.buffer[1] < other.buffer[1] ||\n (this.buffer[1] === other.buffer[1] && this.buffer[0] < other.buffer[0]);\n }\n equals(other) {\n return this.buffer[1] === other.buffer[1] && this.buffer[0] == other.buffer[0];\n }\n greaterThan(other) {\n return other.lessThan(this);\n }\n hex() {\n return `${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n}\n/** @ignore */\nexport class Uint64 extends BaseInt64 {\n times(other) {\n this._times(other);\n return this;\n }\n plus(other) {\n this._plus(other);\n return this;\n }\n /** @nocollapse */\n static from(val, out_buffer = new Uint32Array(2)) {\n return Uint64.fromString(typeof (val) === 'string' ? val : val.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromNumber(num, out_buffer = new Uint32Array(2)) {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Uint64.fromString(num.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromString(str, out_buffer = new Uint32Array(2)) {\n const length = str.length;\n const out = new Uint64(out_buffer);\n for (let posn = 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Uint64(new Uint32Array([Number.parseInt(str.slice(posn, posn + group), 10), 0]));\n const multiple = new Uint64(new Uint32Array([kPowersOfTen[group], 0]));\n out.times(multiple);\n out.plus(chunk);\n posn += group;\n }\n return out;\n }\n /** @nocollapse */\n static convertArray(values) {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Uint64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n /** @nocollapse */\n static multiply(left, right) {\n const rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n /** @nocollapse */\n static add(left, right) {\n const rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n/** @ignore */\nexport class Int64 extends BaseInt64 {\n negate() {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n if (this.buffer[0] == 0) {\n ++this.buffer[1];\n }\n return this;\n }\n times(other) {\n this._times(other);\n return this;\n }\n plus(other) {\n this._plus(other);\n return this;\n }\n lessThan(other) {\n // force high bytes to be signed\n // eslint-disable-next-line unicorn/prefer-math-trunc\n const this_high = this.buffer[1] << 0;\n // eslint-disable-next-line unicorn/prefer-math-trunc\n const other_high = other.buffer[1] << 0;\n return this_high < other_high ||\n (this_high === other_high && this.buffer[0] < other.buffer[0]);\n }\n /** @nocollapse */\n static from(val, out_buffer = new Uint32Array(2)) {\n return Int64.fromString(typeof (val) === 'string' ? val : val.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromNumber(num, out_buffer = new Uint32Array(2)) {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int64.fromString(num.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromString(str, out_buffer = new Uint32Array(2)) {\n // TODO: Assert that out_buffer is 0 and length = 2\n const negate = str.startsWith('-');\n const length = str.length;\n const out = new Int64(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int64(new Uint32Array([Number.parseInt(str.slice(posn, posn + group), 10), 0]));\n const multiple = new Int64(new Uint32Array([kPowersOfTen[group], 0]));\n out.times(multiple);\n out.plus(chunk);\n posn += group;\n }\n return negate ? out.negate() : out;\n }\n /** @nocollapse */\n static convertArray(values) {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Int64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n /** @nocollapse */\n static multiply(left, right) {\n const rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n /** @nocollapse */\n static add(left, right) {\n const rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n/** @ignore */\nexport class Int128 {\n constructor(buffer) {\n this.buffer = buffer;\n // buffer[3] MSB (high)\n // buffer[2]\n // buffer[1]\n // buffer[0] LSB (low)\n }\n high() {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n }\n low() {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset, 2));\n }\n negate() {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n this.buffer[2] = ~this.buffer[2];\n this.buffer[3] = ~this.buffer[3];\n if (this.buffer[0] == 0) {\n ++this.buffer[1];\n }\n if (this.buffer[1] == 0) {\n ++this.buffer[2];\n }\n if (this.buffer[2] == 0) {\n ++this.buffer[3];\n }\n return this;\n }\n times(other) {\n // Break the left and right numbers into 32 bit chunks\n // so that we can multiply them without overflow.\n const L0 = new Uint64(new Uint32Array([this.buffer[3], 0]));\n const L1 = new Uint64(new Uint32Array([this.buffer[2], 0]));\n const L2 = new Uint64(new Uint32Array([this.buffer[1], 0]));\n const L3 = new Uint64(new Uint32Array([this.buffer[0], 0]));\n const R0 = new Uint64(new Uint32Array([other.buffer[3], 0]));\n const R1 = new Uint64(new Uint32Array([other.buffer[2], 0]));\n const R2 = new Uint64(new Uint32Array([other.buffer[1], 0]));\n const R3 = new Uint64(new Uint32Array([other.buffer[0], 0]));\n let product = Uint64.multiply(L3, R3);\n this.buffer[0] = product.low();\n const sum = new Uint64(new Uint32Array([product.high(), 0]));\n product = Uint64.multiply(L2, R3);\n sum.plus(product);\n product = Uint64.multiply(L3, R2);\n sum.plus(product);\n this.buffer[1] = sum.low();\n this.buffer[3] = (sum.lessThan(product) ? 1 : 0);\n this.buffer[2] = sum.high();\n const high = new Uint64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n high.plus(Uint64.multiply(L1, R3))\n .plus(Uint64.multiply(L2, R2))\n .plus(Uint64.multiply(L3, R1));\n this.buffer[3] += Uint64.multiply(L0, R3)\n .plus(Uint64.multiply(L1, R2))\n .plus(Uint64.multiply(L2, R1))\n .plus(Uint64.multiply(L3, R0)).low();\n return this;\n }\n plus(other) {\n const sums = new Uint32Array(4);\n sums[3] = (this.buffer[3] + other.buffer[3]) >>> 0;\n sums[2] = (this.buffer[2] + other.buffer[2]) >>> 0;\n sums[1] = (this.buffer[1] + other.buffer[1]) >>> 0;\n sums[0] = (this.buffer[0] + other.buffer[0]) >>> 0;\n if (sums[0] < (this.buffer[0] >>> 0)) {\n ++sums[1];\n }\n if (sums[1] < (this.buffer[1] >>> 0)) {\n ++sums[2];\n }\n if (sums[2] < (this.buffer[2] >>> 0)) {\n ++sums[3];\n }\n this.buffer[3] = sums[3];\n this.buffer[2] = sums[2];\n this.buffer[1] = sums[1];\n this.buffer[0] = sums[0];\n return this;\n }\n hex() {\n return `${intAsHex(this.buffer[3])} ${intAsHex(this.buffer[2])} ${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n /** @nocollapse */\n static multiply(left, right) {\n const rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n /** @nocollapse */\n static add(left, right) {\n const rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n /** @nocollapse */\n static from(val, out_buffer = new Uint32Array(4)) {\n return Int128.fromString(typeof (val) === 'string' ? val : val.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromNumber(num, out_buffer = new Uint32Array(4)) {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int128.fromString(num.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromString(str, out_buffer = new Uint32Array(4)) {\n // TODO: Assert that out_buffer is 0 and length = 4\n const negate = str.startsWith('-');\n const length = str.length;\n const out = new Int128(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int128(new Uint32Array([Number.parseInt(str.slice(posn, posn + group), 10), 0, 0, 0]));\n const multiple = new Int128(new Uint32Array([kPowersOfTen[group], 0, 0, 0]));\n out.times(multiple);\n out.plus(chunk);\n posn += group;\n }\n return negate ? out.negate() : out;\n }\n /** @nocollapse */\n static convertArray(values) {\n // TODO: Distinguish between string and number at compile-time\n const data = new Uint32Array(values.length * 4);\n for (let i = -1, n = values.length; ++i < n;) {\n Int128.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 4 * 4 * i, 4));\n }\n return data;\n }\n}\n\n//# sourceMappingURL=int.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { makeData } from '../data.mjs';\nimport { Field } from '../schema.mjs';\nimport { DataType } from '../type.mjs';\nimport { Visitor } from '../visitor.mjs';\nimport { packBools } from '../util/bit.mjs';\nimport { encodeUtf8 } from '../util/utf8.mjs';\nimport { Int64, Int128 } from '../util/int.mjs';\nimport { UnionMode, DateUnit } from '../enum.mjs';\nimport { toArrayBufferView } from '../util/buffer.mjs';\n/** @ignore */\nexport class VectorLoader extends Visitor {\n constructor(bytes, nodes, buffers, dictionaries) {\n super();\n this.nodesIndex = -1;\n this.buffersIndex = -1;\n this.bytes = bytes;\n this.nodes = nodes;\n this.buffers = buffers;\n this.dictionaries = dictionaries;\n }\n visit(node) {\n return super.visit(node instanceof Field ? node.type : node);\n }\n visitNull(type, { length } = this.nextFieldNode()) {\n return makeData({ type, length });\n }\n visitBool(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitInt(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitFloat(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitUtf8(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), valueOffsets: this.readOffsets(type), data: this.readData(type) });\n }\n visitBinary(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), valueOffsets: this.readOffsets(type), data: this.readData(type) });\n }\n visitFixedSizeBinary(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitDate(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitTimestamp(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitTime(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitDecimal(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitList(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), valueOffsets: this.readOffsets(type), 'child': this.visit(type.children[0]) });\n }\n visitStruct(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), children: this.visitMany(type.children) });\n }\n visitUnion(type) {\n return type.mode === UnionMode.Sparse ? this.visitSparseUnion(type) : this.visitDenseUnion(type);\n }\n visitDenseUnion(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), typeIds: this.readTypeIds(type), valueOffsets: this.readOffsets(type), children: this.visitMany(type.children) });\n }\n visitSparseUnion(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), typeIds: this.readTypeIds(type), children: this.visitMany(type.children) });\n }\n visitDictionary(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type.indices), dictionary: this.readDictionary(type) });\n }\n visitInterval(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), data: this.readData(type) });\n }\n visitFixedSizeList(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), 'child': this.visit(type.children[0]) });\n }\n visitMap(type, { length, nullCount } = this.nextFieldNode()) {\n return makeData({ type, length, nullCount, nullBitmap: this.readNullBitmap(type, nullCount), valueOffsets: this.readOffsets(type), 'child': this.visit(type.children[0]) });\n }\n nextFieldNode() { return this.nodes[++this.nodesIndex]; }\n nextBufferRange() { return this.buffers[++this.buffersIndex]; }\n readNullBitmap(type, nullCount, buffer = this.nextBufferRange()) {\n return nullCount > 0 && this.readData(type, buffer) || new Uint8Array(0);\n }\n readOffsets(type, buffer) { return this.readData(type, buffer); }\n readTypeIds(type, buffer) { return this.readData(type, buffer); }\n readData(_type, { length, offset } = this.nextBufferRange()) {\n return this.bytes.subarray(offset, offset + length);\n }\n readDictionary(type) {\n return this.dictionaries.get(type.id);\n }\n}\n/** @ignore */\nexport class JSONVectorLoader extends VectorLoader {\n constructor(sources, nodes, buffers, dictionaries) {\n super(new Uint8Array(0), nodes, buffers, dictionaries);\n this.sources = sources;\n }\n readNullBitmap(_type, nullCount, { offset } = this.nextBufferRange()) {\n return nullCount <= 0 ? new Uint8Array(0) : packBools(this.sources[offset]);\n }\n readOffsets(_type, { offset } = this.nextBufferRange()) {\n return toArrayBufferView(Uint8Array, toArrayBufferView(Int32Array, this.sources[offset]));\n }\n readTypeIds(type, { offset } = this.nextBufferRange()) {\n return toArrayBufferView(Uint8Array, toArrayBufferView(type.ArrayType, this.sources[offset]));\n }\n readData(type, { offset } = this.nextBufferRange()) {\n const { sources } = this;\n if (DataType.isTimestamp(type)) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset]));\n }\n else if ((DataType.isInt(type) || DataType.isTime(type)) && type.bitWidth === 64) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset]));\n }\n else if (DataType.isDate(type) && type.unit === DateUnit.MILLISECOND) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset]));\n }\n else if (DataType.isDecimal(type)) {\n return toArrayBufferView(Uint8Array, Int128.convertArray(sources[offset]));\n }\n else if (DataType.isBinary(type) || DataType.isFixedSizeBinary(type)) {\n return binaryDataFromJSON(sources[offset]);\n }\n else if (DataType.isBool(type)) {\n return packBools(sources[offset]);\n }\n else if (DataType.isUtf8(type)) {\n return encodeUtf8(sources[offset].join(''));\n }\n return toArrayBufferView(Uint8Array, toArrayBufferView(type.ArrayType, sources[offset].map((x) => +x)));\n }\n}\n/** @ignore */\nfunction binaryDataFromJSON(values) {\n // \"DATA\": [\"49BC7D5B6C47D2\",\"3F5FB6D9322026\"]\n // There are definitely more efficient ways to do this... but it gets the\n // job done.\n const joined = values.join('');\n const data = new Uint8Array(joined.length / 2);\n for (let i = 0; i < joined.length; i += 2) {\n data[i >> 1] = Number.parseInt(joined.slice(i, i + 2), 16);\n }\n return data;\n}\n\n//# sourceMappingURL=vectorloader.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor.mjs';\n/** @ignore */\nexport class TypeComparator extends Visitor {\n compareSchemas(schema, other) {\n return (schema === other) || (other instanceof schema.constructor &&\n this.compareManyFields(schema.fields, other.fields));\n }\n compareManyFields(fields, others) {\n return (fields === others) || (Array.isArray(fields) &&\n Array.isArray(others) &&\n fields.length === others.length &&\n fields.every((f, i) => this.compareFields(f, others[i])));\n }\n compareFields(field, other) {\n return (field === other) || (other instanceof field.constructor &&\n field.name === other.name &&\n field.nullable === other.nullable &&\n this.visit(field.type, other.type));\n }\n}\nfunction compareConstructor(type, other) {\n return other instanceof type.constructor;\n}\nfunction compareAny(type, other) {\n return (type === other) || compareConstructor(type, other);\n}\nfunction compareInt(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.bitWidth === other.bitWidth &&\n type.isSigned === other.isSigned);\n}\nfunction compareFloat(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.precision === other.precision);\n}\nfunction compareFixedSizeBinary(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.byteWidth === other.byteWidth);\n}\nfunction compareDate(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit);\n}\nfunction compareTimestamp(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit &&\n type.timezone === other.timezone);\n}\nfunction compareTime(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit &&\n type.bitWidth === other.bitWidth);\n}\nfunction compareList(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.children.length === other.children.length &&\n instance.compareManyFields(type.children, other.children));\n}\nfunction compareStruct(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.children.length === other.children.length &&\n instance.compareManyFields(type.children, other.children));\n}\nfunction compareUnion(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.mode === other.mode &&\n type.typeIds.every((x, i) => x === other.typeIds[i]) &&\n instance.compareManyFields(type.children, other.children));\n}\nfunction compareDictionary(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.id === other.id &&\n type.isOrdered === other.isOrdered &&\n instance.visit(type.indices, other.indices) &&\n instance.visit(type.dictionary, other.dictionary));\n}\nfunction compareInterval(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit);\n}\nfunction compareFixedSizeList(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.listSize === other.listSize &&\n type.children.length === other.children.length &&\n instance.compareManyFields(type.children, other.children));\n}\nfunction compareMap(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.keysSorted === other.keysSorted &&\n type.children.length === other.children.length &&\n instance.compareManyFields(type.children, other.children));\n}\nTypeComparator.prototype.visitNull = compareAny;\nTypeComparator.prototype.visitBool = compareAny;\nTypeComparator.prototype.visitInt = compareInt;\nTypeComparator.prototype.visitInt8 = compareInt;\nTypeComparator.prototype.visitInt16 = compareInt;\nTypeComparator.prototype.visitInt32 = compareInt;\nTypeComparator.prototype.visitInt64 = compareInt;\nTypeComparator.prototype.visitUint8 = compareInt;\nTypeComparator.prototype.visitUint16 = compareInt;\nTypeComparator.prototype.visitUint32 = compareInt;\nTypeComparator.prototype.visitUint64 = compareInt;\nTypeComparator.prototype.visitFloat = compareFloat;\nTypeComparator.prototype.visitFloat16 = compareFloat;\nTypeComparator.prototype.visitFloat32 = compareFloat;\nTypeComparator.prototype.visitFloat64 = compareFloat;\nTypeComparator.prototype.visitUtf8 = compareAny;\nTypeComparator.prototype.visitBinary = compareAny;\nTypeComparator.prototype.visitFixedSizeBinary = compareFixedSizeBinary;\nTypeComparator.prototype.visitDate = compareDate;\nTypeComparator.prototype.visitDateDay = compareDate;\nTypeComparator.prototype.visitDateMillisecond = compareDate;\nTypeComparator.prototype.visitTimestamp = compareTimestamp;\nTypeComparator.prototype.visitTimestampSecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampMillisecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampMicrosecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampNanosecond = compareTimestamp;\nTypeComparator.prototype.visitTime = compareTime;\nTypeComparator.prototype.visitTimeSecond = compareTime;\nTypeComparator.prototype.visitTimeMillisecond = compareTime;\nTypeComparator.prototype.visitTimeMicrosecond = compareTime;\nTypeComparator.prototype.visitTimeNanosecond = compareTime;\nTypeComparator.prototype.visitDecimal = compareAny;\nTypeComparator.prototype.visitList = compareList;\nTypeComparator.prototype.visitStruct = compareStruct;\nTypeComparator.prototype.visitUnion = compareUnion;\nTypeComparator.prototype.visitDenseUnion = compareUnion;\nTypeComparator.prototype.visitSparseUnion = compareUnion;\nTypeComparator.prototype.visitDictionary = compareDictionary;\nTypeComparator.prototype.visitInterval = compareInterval;\nTypeComparator.prototype.visitIntervalDayTime = compareInterval;\nTypeComparator.prototype.visitIntervalYearMonth = compareInterval;\nTypeComparator.prototype.visitFixedSizeList = compareFixedSizeList;\nTypeComparator.prototype.visitMap = compareMap;\n/** @ignore */\nexport const instance = new TypeComparator();\nexport function compareSchemas(schema, other) {\n return instance.compareSchemas(schema, other);\n}\nexport function compareFields(field, other) {\n return instance.compareFields(field, other);\n}\nexport function compareTypes(type, other) {\n return instance.visit(type, other);\n}\n\n//# sourceMappingURL=typecomparator.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { makeData } from '../data.mjs';\nimport { Struct } from '../type.mjs';\nimport { RecordBatch } from '../recordbatch.mjs';\n/** @ignore */\nexport function distributeVectorsIntoRecordBatches(schema, vecs) {\n return uniformlyDistributeChunksAcrossRecordBatches(schema, vecs.map((v) => v.data.concat()));\n}\n/** @ignore */\nfunction uniformlyDistributeChunksAcrossRecordBatches(schema, cols) {\n const fields = [...schema.fields];\n const batches = [];\n const memo = { numBatches: cols.reduce((n, c) => Math.max(n, c.length), 0) };\n let numBatches = 0, batchLength = 0;\n let i = -1;\n const numColumns = cols.length;\n let child, children = [];\n while (memo.numBatches-- > 0) {\n for (batchLength = Number.POSITIVE_INFINITY, i = -1; ++i < numColumns;) {\n children[i] = child = cols[i].shift();\n batchLength = Math.min(batchLength, child ? child.length : batchLength);\n }\n if (Number.isFinite(batchLength)) {\n children = distributeChildren(fields, batchLength, children, cols, memo);\n if (batchLength > 0) {\n batches[numBatches++] = makeData({\n type: new Struct(fields),\n length: batchLength,\n nullCount: 0,\n children: children.slice()\n });\n }\n }\n }\n return [\n schema = schema.assign(fields),\n batches.map((data) => new RecordBatch(schema, data))\n ];\n}\n/** @ignore */\nfunction distributeChildren(fields, batchLength, children, columns, memo) {\n var _a;\n const nullBitmapSize = ((batchLength + 63) & ~63) >> 3;\n for (let i = -1, n = columns.length; ++i < n;) {\n const child = children[i];\n const length = child === null || child === void 0 ? void 0 : child.length;\n if (length >= batchLength) {\n if (length === batchLength) {\n children[i] = child;\n }\n else {\n children[i] = child.slice(0, batchLength);\n memo.numBatches = Math.max(memo.numBatches, columns[i].unshift(child.slice(batchLength, length - batchLength)));\n }\n }\n else {\n const field = fields[i];\n fields[i] = field.clone({ nullable: true });\n children[i] = (_a = child === null || child === void 0 ? void 0 : child._changeLengthAndBackfillNullBitmap(batchLength)) !== null && _a !== void 0 ? _a : makeData({\n type: field.type,\n length: batchLength,\n nullCount: batchLength,\n nullBitmap: new Uint8Array(nullBitmapSize)\n });\n }\n }\n return children;\n}\n\n//# sourceMappingURL=recordbatch.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nvar _a;\nimport { Type } from './enum.mjs';\nimport { Data, makeData } from './data.mjs';\nimport { vectorFromArray } from './factories.mjs';\nimport { makeVector, Vector } from './vector.mjs';\nimport { Field, Schema } from './schema.mjs';\nimport { Null, Struct } from './type.mjs';\nimport { compareSchemas } from './visitor/typecomparator.mjs';\nimport { distributeVectorsIntoRecordBatches } from './util/recordbatch.mjs';\nimport { isChunkedValid, computeChunkOffsets, computeChunkNullCounts, wrapChunkedCall1, wrapChunkedCall2, wrapChunkedIndexOf, sliceChunks, } from './util/chunk.mjs';\nimport { instance as getVisitor } from './visitor/get.mjs';\nimport { instance as setVisitor } from './visitor/set.mjs';\nimport { instance as indexOfVisitor } from './visitor/indexof.mjs';\nimport { instance as iteratorVisitor } from './visitor/iterator.mjs';\nimport { instance as byteLengthVisitor } from './visitor/bytelength.mjs';\nimport { clampRange } from './util/vector.mjs';\nimport { RecordBatch } from './recordbatch.mjs';\n/**\n * Tables are collections of {@link Vector}s and have a {@link Schema}. Use the convenience methods {@link makeTable}\n * or {@link tableFromArrays} to create a table in JavaScript. To create a table from the IPC format, use\n * {@link tableFromIPC}.\n */\nexport class Table {\n constructor(...args) {\n var _b, _c;\n if (args.length === 0) {\n this.batches = [];\n this.schema = new Schema([]);\n this._offsets = [0];\n return this;\n }\n let schema;\n let offsets;\n if (args[0] instanceof Schema) {\n schema = args.shift();\n }\n if (args[args.length - 1] instanceof Uint32Array) {\n offsets = args.pop();\n }\n const unwrap = (x) => {\n if (x) {\n if (x instanceof RecordBatch) {\n return [x];\n }\n else if (x instanceof Table) {\n return x.batches;\n }\n else if (x instanceof Data) {\n if (x.type instanceof Struct) {\n return [new RecordBatch(new Schema(x.type.children), x)];\n }\n }\n else if (Array.isArray(x)) {\n return x.flatMap(v => unwrap(v));\n }\n else if (typeof x[Symbol.iterator] === 'function') {\n return [...x].flatMap(v => unwrap(v));\n }\n else if (typeof x === 'object') {\n const keys = Object.keys(x);\n const vecs = keys.map((k) => new Vector([x[k]]));\n const schema = new Schema(keys.map((k, i) => new Field(String(k), vecs[i].type)));\n const [, batches] = distributeVectorsIntoRecordBatches(schema, vecs);\n return batches.length === 0 ? [new RecordBatch(x)] : batches;\n }\n }\n return [];\n };\n const batches = args.flatMap(v => unwrap(v));\n schema = (_c = schema !== null && schema !== void 0 ? schema : (_b = batches[0]) === null || _b === void 0 ? void 0 : _b.schema) !== null && _c !== void 0 ? _c : new Schema([]);\n if (!(schema instanceof Schema)) {\n throw new TypeError('Table constructor expects a [Schema, RecordBatch[]] pair.');\n }\n for (const batch of batches) {\n if (!(batch instanceof RecordBatch)) {\n throw new TypeError('Table constructor expects a [Schema, RecordBatch[]] pair.');\n }\n if (!compareSchemas(schema, batch.schema)) {\n throw new TypeError('Table and inner RecordBatch schemas must be equivalent.');\n }\n }\n this.schema = schema;\n this.batches = batches;\n this._offsets = offsets !== null && offsets !== void 0 ? offsets : computeChunkOffsets(this.data);\n }\n /**\n * The contiguous {@link RecordBatch `RecordBatch`} chunks of the Table rows.\n */\n get data() { return this.batches.map(({ data }) => data); }\n /**\n * The number of columns in this Table.\n */\n get numCols() { return this.schema.fields.length; }\n /**\n * The number of rows in this Table.\n */\n get numRows() {\n return this.data.reduce((numRows, data) => numRows + data.length, 0);\n }\n /**\n * The number of null rows in this Table.\n */\n get nullCount() {\n if (this._nullCount === -1) {\n this._nullCount = computeChunkNullCounts(this.data);\n }\n return this._nullCount;\n }\n /**\n * Check whether an element is null.\n *\n * @param index The index at which to read the validity bitmap.\n */\n // @ts-ignore\n isValid(index) { return false; }\n /**\n * Get an element value by position.\n *\n * @param index The index of the element to read.\n */\n // @ts-ignore\n get(index) { return null; }\n /**\n * Set an element value by position.\n *\n * @param index The index of the element to write.\n * @param value The value to set.\n */\n // @ts-ignore\n set(index, value) { return; }\n /**\n * Retrieve the index of the first occurrence of a value in an Vector.\n *\n * @param element The value to locate in the Vector.\n * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n */\n // @ts-ignore\n indexOf(element, offset) { return -1; }\n /**\n * Get the size in bytes of an element by index.\n * @param index The index at which to get the byteLength.\n */\n // @ts-ignore\n getByteLength(index) { return 0; }\n /**\n * Iterator for rows in this Table.\n */\n [Symbol.iterator]() {\n if (this.batches.length > 0) {\n return iteratorVisitor.visit(new Vector(this.data));\n }\n return (new Array(0))[Symbol.iterator]();\n }\n /**\n * Return a JavaScript Array of the Table rows.\n *\n * @returns An Array of Table rows.\n */\n toArray() {\n return [...this];\n }\n /**\n * Returns a string representation of the Table rows.\n *\n * @returns A string representation of the Table rows.\n */\n toString() {\n return `[\\n ${this.toArray().join(',\\n ')}\\n]`;\n }\n /**\n * Combines two or more Tables of the same schema.\n *\n * @param others Additional Tables to add to the end of this Tables.\n */\n concat(...others) {\n const schema = this.schema;\n const data = this.data.concat(others.flatMap(({ data }) => data));\n return new Table(schema, data.map((data) => new RecordBatch(schema, data)));\n }\n /**\n * Return a zero-copy sub-section of this Table.\n *\n * @param begin The beginning of the specified portion of the Table.\n * @param end The end of the specified portion of the Table. This is exclusive of the element at the index 'end'.\n */\n slice(begin, end) {\n const schema = this.schema;\n [begin, end] = clampRange({ length: this.numRows }, begin, end);\n const data = sliceChunks(this.data, this._offsets, begin, end);\n return new Table(schema, data.map((chunk) => new RecordBatch(schema, chunk)));\n }\n /**\n * Returns a child Vector by name, or null if this Vector has no child with the given name.\n *\n * @param name The name of the child to retrieve.\n */\n getChild(name) {\n return this.getChildAt(this.schema.fields.findIndex((f) => f.name === name));\n }\n /**\n * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n *\n * @param index The index of the child to retrieve.\n */\n getChildAt(index) {\n if (index > -1 && index < this.schema.fields.length) {\n const data = this.data.map((data) => data.children[index]);\n if (data.length === 0) {\n const { type } = this.schema.fields[index];\n const empty = makeData({ type, length: 0, nullCount: 0 });\n data.push(empty._changeLengthAndBackfillNullBitmap(this.numRows));\n }\n return new Vector(data);\n }\n return null;\n }\n /**\n * Sets a child Vector by name.\n *\n * @param name The name of the child to overwrite.\n * @returns A new Table with the supplied child for the specified name.\n */\n setChild(name, child) {\n var _b;\n return this.setChildAt((_b = this.schema.fields) === null || _b === void 0 ? void 0 : _b.findIndex((f) => f.name === name), child);\n }\n setChildAt(index, child) {\n let schema = this.schema;\n let batches = [...this.batches];\n if (index > -1 && index < this.numCols) {\n if (!child) {\n child = new Vector([makeData({ type: new Null, length: this.numRows })]);\n }\n const fields = schema.fields.slice();\n const field = fields[index].clone({ type: child.type });\n const children = this.schema.fields.map((_, i) => this.getChildAt(i));\n [fields[index], children[index]] = [field, child];\n [schema, batches] = distributeVectorsIntoRecordBatches(schema, children);\n }\n return new Table(schema, batches);\n }\n /**\n * Construct a new Table containing only specified columns.\n *\n * @param columnNames Names of columns to keep.\n * @returns A new Table of columns matching the specified names.\n */\n select(columnNames) {\n const nameToIndex = this.schema.fields.reduce((m, f, i) => m.set(f.name, i), new Map());\n return this.selectAt(columnNames.map((columnName) => nameToIndex.get(columnName)).filter((x) => x > -1));\n }\n /**\n * Construct a new Table containing only columns at the specified indices.\n *\n * @param columnIndices Indices of columns to keep.\n * @returns A new Table of columns at the specified indices.\n */\n selectAt(columnIndices) {\n const schema = this.schema.selectAt(columnIndices);\n const data = this.batches.map((batch) => batch.selectAt(columnIndices));\n return new Table(schema, data);\n }\n assign(other) {\n const fields = this.schema.fields;\n const [indices, oldToNew] = other.schema.fields.reduce((memo, f2, newIdx) => {\n const [indices, oldToNew] = memo;\n const i = fields.findIndex((f) => f.name === f2.name);\n ~i ? (oldToNew[i] = newIdx) : indices.push(newIdx);\n return memo;\n }, [[], []]);\n const schema = this.schema.assign(other.schema);\n const columns = [\n ...fields.map((_, i) => [i, oldToNew[i]]).map(([i, j]) => (j === undefined ? this.getChildAt(i) : other.getChildAt(j))),\n ...indices.map((i) => other.getChildAt(i))\n ].filter(Boolean);\n return new Table(...distributeVectorsIntoRecordBatches(schema, columns));\n }\n}\n_a = Symbol.toStringTag;\n// Initialize this static property via an IIFE so bundlers don't tree-shake\n// out this logic, but also so we're still compliant with `\"sideEffects\": false`\nTable[_a] = ((proto) => {\n proto.schema = null;\n proto.batches = [];\n proto._offsets = new Uint32Array([0]);\n proto._nullCount = -1;\n proto[Symbol.isConcatSpreadable] = true;\n proto['isValid'] = wrapChunkedCall1(isChunkedValid);\n proto['get'] = wrapChunkedCall1(getVisitor.getVisitFn(Type.Struct));\n proto['set'] = wrapChunkedCall2(setVisitor.getVisitFn(Type.Struct));\n proto['indexOf'] = wrapChunkedIndexOf(indexOfVisitor.getVisitFn(Type.Struct));\n proto['getByteLength'] = wrapChunkedCall1(byteLengthVisitor.getVisitFn(Type.Struct));\n return 'Table';\n})(Table.prototype);\n/**\n * Creates a new Table from an object of typed arrays.\n *\n* @example\n * ```ts\n * const table = makeTable({\n * a: new Int8Array([1, 2, 3]),\n * })\n * ```\n *\n * @param input Input an object of typed arrays.\n * @returns A new Table.\n */\nexport function makeTable(input) {\n const vecs = {};\n const inputs = Object.entries(input);\n for (const [key, col] of inputs) {\n vecs[key] = makeVector(col);\n }\n return new Table(vecs);\n}\n/**\n * Creates a new Table from an object of typed arrays or JavaScript arrays.\n *\n * @example\n * ```ts\n * const table = tableFromArrays({\n * a: [1, 2, 3],\n * b: new Int8Array([1, 2, 3]),\n * })\n * ```\n *\n * @param input Input an object of typed arrays or JavaScript arrays.\n * @returns A new Table.\n */\nexport function tableFromArrays(input) {\n const vecs = {};\n const inputs = Object.entries(input);\n for (const [key, col] of inputs) {\n vecs[key] = vectorFromArray(col);\n }\n return new Table(vecs);\n}\n\n//# sourceMappingURL=table.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nvar _a;\nimport { Data, makeData } from './data.mjs';\nimport { Table } from './table.mjs';\nimport { Vector } from './vector.mjs';\nimport { Schema, Field } from './schema.mjs';\nimport { DataType, Struct, Null } from './type.mjs';\nimport { instance as getVisitor } from './visitor/get.mjs';\nimport { instance as setVisitor } from './visitor/set.mjs';\nimport { instance as indexOfVisitor } from './visitor/indexof.mjs';\nimport { instance as iteratorVisitor } from './visitor/iterator.mjs';\nimport { instance as byteLengthVisitor } from './visitor/bytelength.mjs';\n/** @ignore */\nexport class RecordBatch {\n constructor(...args) {\n switch (args.length) {\n case 2: {\n [this.schema] = args;\n if (!(this.schema instanceof Schema)) {\n throw new TypeError('RecordBatch constructor expects a [Schema, Data] pair.');\n }\n [,\n this.data = makeData({\n nullCount: 0,\n type: new Struct(this.schema.fields),\n children: this.schema.fields.map((f) => makeData({ type: f.type, nullCount: 0 }))\n })\n ] = args;\n if (!(this.data instanceof Data)) {\n throw new TypeError('RecordBatch constructor expects a [Schema, Data] pair.');\n }\n [this.schema, this.data] = ensureSameLengthData(this.schema, this.data.children);\n break;\n }\n case 1: {\n const [obj] = args;\n const { fields, children, length } = Object.keys(obj).reduce((memo, name, i) => {\n memo.children[i] = obj[name];\n memo.length = Math.max(memo.length, obj[name].length);\n memo.fields[i] = Field.new({ name, type: obj[name].type, nullable: true });\n return memo;\n }, {\n length: 0,\n fields: new Array(),\n children: new Array(),\n });\n const schema = new Schema(fields);\n const data = makeData({ type: new Struct(fields), length, children, nullCount: 0 });\n [this.schema, this.data] = ensureSameLengthData(schema, data.children, length);\n break;\n }\n default: throw new TypeError('RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.');\n }\n }\n get dictionaries() {\n return this._dictionaries || (this._dictionaries = collectDictionaries(this.schema.fields, this.data.children));\n }\n /**\n * The number of columns in this RecordBatch.\n */\n get numCols() { return this.schema.fields.length; }\n /**\n * The number of rows in this RecordBatch.\n */\n get numRows() { return this.data.length; }\n /**\n * The number of null rows in this RecordBatch.\n */\n get nullCount() {\n return this.data.nullCount;\n }\n /**\n * Check whether an element is null.\n * @param index The index at which to read the validity bitmap.\n */\n isValid(index) {\n return this.data.getValid(index);\n }\n /**\n * Get a row by position.\n * @param index The index of the element to read.\n */\n get(index) {\n return getVisitor.visit(this.data, index);\n }\n /**\n * Set a row by position.\n * @param index The index of the element to write.\n * @param value The value to set.\n */\n set(index, value) {\n return setVisitor.visit(this.data, index, value);\n }\n /**\n * Retrieve the index of the first occurrence of a row in an RecordBatch.\n * @param element The row to locate in the RecordBatch.\n * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n */\n indexOf(element, offset) {\n return indexOfVisitor.visit(this.data, element, offset);\n }\n /**\n * Get the size (in bytes) of a row by index.\n * @param index The row index for which to compute the byteLength.\n */\n getByteLength(index) {\n return byteLengthVisitor.visit(this.data, index);\n }\n /**\n * Iterator for rows in this RecordBatch.\n */\n [Symbol.iterator]() {\n return iteratorVisitor.visit(new Vector([this.data]));\n }\n /**\n * Return a JavaScript Array of the RecordBatch rows.\n * @returns An Array of RecordBatch rows.\n */\n toArray() {\n return [...this];\n }\n /**\n * Combines two or more RecordBatch of the same schema.\n * @param others Additional RecordBatch to add to the end of this RecordBatch.\n */\n concat(...others) {\n return new Table(this.schema, [this, ...others]);\n }\n /**\n * Return a zero-copy sub-section of this RecordBatch.\n * @param start The beginning of the specified portion of the RecordBatch.\n * @param end The end of the specified portion of the RecordBatch. This is exclusive of the element at the index 'end'.\n */\n slice(begin, end) {\n const [slice] = new Vector([this.data]).slice(begin, end).data;\n return new RecordBatch(this.schema, slice);\n }\n /**\n * Returns a child Vector by name, or null if this Vector has no child with the given name.\n * @param name The name of the child to retrieve.\n */\n getChild(name) {\n var _b;\n return this.getChildAt((_b = this.schema.fields) === null || _b === void 0 ? void 0 : _b.findIndex((f) => f.name === name));\n }\n /**\n * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n * @param index The index of the child to retrieve.\n */\n getChildAt(index) {\n if (index > -1 && index < this.schema.fields.length) {\n return new Vector([this.data.children[index]]);\n }\n return null;\n }\n /**\n * Sets a child Vector by name.\n * @param name The name of the child to overwrite.\n * @returns A new RecordBatch with the new child for the specified name.\n */\n setChild(name, child) {\n var _b;\n return this.setChildAt((_b = this.schema.fields) === null || _b === void 0 ? void 0 : _b.findIndex((f) => f.name === name), child);\n }\n setChildAt(index, child) {\n let schema = this.schema;\n let data = this.data;\n if (index > -1 && index < this.numCols) {\n if (!child) {\n child = new Vector([makeData({ type: new Null, length: this.numRows })]);\n }\n const fields = schema.fields.slice();\n const children = data.children.slice();\n const field = fields[index].clone({ type: child.type });\n [fields[index], children[index]] = [field, child.data[0]];\n schema = new Schema(fields, new Map(this.schema.metadata));\n data = makeData({ type: new Struct(fields), children });\n }\n return new RecordBatch(schema, data);\n }\n /**\n * Construct a new RecordBatch containing only specified columns.\n *\n * @param columnNames Names of columns to keep.\n * @returns A new RecordBatch of columns matching the specified names.\n */\n select(columnNames) {\n const schema = this.schema.select(columnNames);\n const type = new Struct(schema.fields);\n const children = [];\n for (const name of columnNames) {\n const index = this.schema.fields.findIndex((f) => f.name === name);\n if (~index) {\n children[index] = this.data.children[index];\n }\n }\n return new RecordBatch(schema, makeData({ type, length: this.numRows, children }));\n }\n /**\n * Construct a new RecordBatch containing only columns at the specified indices.\n *\n * @param columnIndices Indices of columns to keep.\n * @returns A new RecordBatch of columns matching at the specified indices.\n */\n selectAt(columnIndices) {\n const schema = this.schema.selectAt(columnIndices);\n const children = columnIndices.map((i) => this.data.children[i]).filter(Boolean);\n const subset = makeData({ type: new Struct(schema.fields), length: this.numRows, children });\n return new RecordBatch(schema, subset);\n }\n}\n_a = Symbol.toStringTag;\n// Initialize this static property via an IIFE so bundlers don't tree-shake\n// out this logic, but also so we're still compliant with `\"sideEffects\": false`\nRecordBatch[_a] = ((proto) => {\n proto._nullCount = -1;\n proto[Symbol.isConcatSpreadable] = true;\n return 'RecordBatch';\n})(RecordBatch.prototype);\n/** @ignore */\nfunction ensureSameLengthData(schema, chunks, maxLength = chunks.reduce((max, col) => Math.max(max, col.length), 0)) {\n var _b;\n const fields = [...schema.fields];\n const children = [...chunks];\n const nullBitmapSize = ((maxLength + 63) & ~63) >> 3;\n for (const [idx, field] of schema.fields.entries()) {\n const chunk = chunks[idx];\n if (!chunk || chunk.length !== maxLength) {\n fields[idx] = field.clone({ nullable: true });\n children[idx] = (_b = chunk === null || chunk === void 0 ? void 0 : chunk._changeLengthAndBackfillNullBitmap(maxLength)) !== null && _b !== void 0 ? _b : makeData({\n type: field.type,\n length: maxLength,\n nullCount: maxLength,\n nullBitmap: new Uint8Array(nullBitmapSize)\n });\n }\n }\n return [\n schema.assign(fields),\n makeData({ type: new Struct(fields), length: maxLength, children })\n ];\n}\n/** @ignore */\nfunction collectDictionaries(fields, children, dictionaries = new Map()) {\n for (let i = -1, n = fields.length; ++i < n;) {\n const field = fields[i];\n const type = field.type;\n const data = children[i];\n if (DataType.isDictionary(type)) {\n if (!dictionaries.has(type.id)) {\n if (data.dictionary) {\n dictionaries.set(type.id, data.dictionary);\n }\n }\n else if (dictionaries.get(type.id) !== data.dictionary) {\n throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n }\n }\n if (type.children && type.children.length > 0) {\n collectDictionaries(type.children, data.children, dictionaries);\n }\n }\n return dictionaries;\n}\n/**\n * An internal class used by the `RecordBatchReader` and `RecordBatchWriter`\n * implementations to differentiate between a stream with valid zero-length\n * RecordBatches, and a stream with a Schema message, but no RecordBatches.\n * @see https://github.com/apache/arrow/pull/4373\n * @ignore\n * @private\n */\nexport class _InternalEmptyPlaceholderRecordBatch extends RecordBatch {\n constructor(schema) {\n const children = schema.fields.map((f) => makeData({ type: f.type }));\n const data = makeData({ type: new Struct(schema.fields), nullCount: 0, children });\n super(schema, data);\n }\n}\n\n//# sourceMappingURL=recordbatch.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\n/**\n * Provided for forward compatibility in case we need to support different\n * strategies for compressing the IPC message body (like whole-body\n * compression rather than buffer-level) in the future\n */\nexport var BodyCompressionMethod;\n(function (BodyCompressionMethod) {\n /**\n * Each constituent buffer is first compressed with the indicated\n * compressor, and then written with the uncompressed length in the first 8\n * bytes as a 64-bit little-endian signed integer followed by the compressed\n * buffer bytes (and then padding as required by the protocol). The\n * uncompressed length may be set to -1 to indicate that the data that\n * follows is not compressed, which can be useful for cases where\n * compression does not yield appreciable savings.\n */\n BodyCompressionMethod[BodyCompressionMethod[\"BUFFER\"] = 0] = \"BUFFER\";\n})(BodyCompressionMethod || (BodyCompressionMethod = {}));\n\n//# sourceMappingURL=body-compression-method.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nexport var CompressionType;\n(function (CompressionType) {\n CompressionType[CompressionType[\"LZ4_FRAME\"] = 0] = \"LZ4_FRAME\";\n CompressionType[CompressionType[\"ZSTD\"] = 1] = \"ZSTD\";\n})(CompressionType || (CompressionType = {}));\n\n//# sourceMappingURL=compression-type.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { BodyCompressionMethod } from './body-compression-method.mjs';\nimport { CompressionType } from './compression-type.mjs';\n/**\n * Optional compression for the memory buffers constituting IPC message\n * bodies. Intended for use with RecordBatch but could be used for other\n * message types\n */\nexport class BodyCompression {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsBodyCompression(bb, obj) {\n return (obj || new BodyCompression()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsBodyCompression(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new BodyCompression()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Compressor library.\n * For LZ4_FRAME, each compressed buffer must consist of a single frame.\n */\n codec() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt8(this.bb_pos + offset) : CompressionType.LZ4_FRAME;\n }\n /**\n * Indicates the way the record batch body was compressed\n */\n method() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt8(this.bb_pos + offset) : BodyCompressionMethod.BUFFER;\n }\n static startBodyCompression(builder) {\n builder.startObject(2);\n }\n static addCodec(builder, codec) {\n builder.addFieldInt8(0, codec, CompressionType.LZ4_FRAME);\n }\n static addMethod(builder, method) {\n builder.addFieldInt8(1, method, BodyCompressionMethod.BUFFER);\n }\n static endBodyCompression(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static createBodyCompression(builder, codec, method) {\n BodyCompression.startBodyCompression(builder);\n BodyCompression.addCodec(builder, codec);\n BodyCompression.addMethod(builder, method);\n return BodyCompression.endBodyCompression(builder);\n }\n}\n\n//# sourceMappingURL=body-compression.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\n/**\n * ----------------------------------------------------------------------\n * A Buffer represents a single contiguous memory segment\n */\nexport class Buffer {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * The relative offset into the shared memory page where the bytes for this\n * buffer starts\n */\n offset() {\n return this.bb.readInt64(this.bb_pos);\n }\n /**\n * The absolute length (in bytes) of the memory buffer. The memory is found\n * from offset (inclusive) to offset + length (non-inclusive). When building\n * messages using the encapsulated IPC message, padding bytes may be written\n * after a buffer, but such padding bytes do not need to be accounted for in\n * the size here.\n */\n length() {\n return this.bb.readInt64(this.bb_pos + 8);\n }\n static sizeOf() {\n return 16;\n }\n static createBuffer(builder, offset, length) {\n builder.prep(8, 16);\n builder.writeInt64(length);\n builder.writeInt64(offset);\n return builder.offset();\n }\n}\n\n//# sourceMappingURL=buffer.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\n/**\n * ----------------------------------------------------------------------\n * Data structures for describing a table row batch (a collection of\n * equal-length Arrow arrays)\n * Metadata about a field at some level of a nested type tree (but not\n * its children).\n *\n * For example, a List with values `[[1, 2, 3], null, [4], [5, 6], null]`\n * would have {length: 5, null_count: 2} for its List node, and {length: 6,\n * null_count: 0} for its Int16 node, as separate FieldNode structs\n */\nexport class FieldNode {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * The number of value slots in the Arrow array at this level of a nested\n * tree\n */\n length() {\n return this.bb.readInt64(this.bb_pos);\n }\n /**\n * The number of observed nulls. Fields with null_count == 0 may choose not\n * to write their physical validity bitmap out as a materialized buffer,\n * instead setting the length of the bitmap buffer to 0.\n */\n nullCount() {\n return this.bb.readInt64(this.bb_pos + 8);\n }\n static sizeOf() {\n return 16;\n }\n static createFieldNode(builder, length, null_count) {\n builder.prep(8, 16);\n builder.writeInt64(null_count);\n builder.writeInt64(length);\n return builder.offset();\n }\n}\n\n//# sourceMappingURL=field-node.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { BodyCompression } from './body-compression.mjs';\nimport { Buffer } from './buffer.mjs';\nimport { FieldNode } from './field-node.mjs';\n/**\n * A data header describing the shared memory layout of a \"record\" or \"row\"\n * batch. Some systems call this a \"row batch\" internally and others a \"record\n * batch\".\n */\nexport class RecordBatch {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsRecordBatch(bb, obj) {\n return (obj || new RecordBatch()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsRecordBatch(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new RecordBatch()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * number of records / rows. The arrays in the batch should all have this\n * length\n */\n length() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n /**\n * Nodes correspond to the pre-ordered flattened logical schema\n */\n nodes(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new FieldNode()).__init(this.bb.__vector(this.bb_pos + offset) + index * 16, this.bb) : null;\n }\n nodesLength() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * Buffers correspond to the pre-ordered flattened buffer tree\n *\n * The number of buffers appended to this list depends on the schema. For\n * example, most primitive arrays will have 2 buffers, 1 for the validity\n * bitmap and 1 for the values. For struct arrays, there will only be a\n * single buffer for the validity (nulls) bitmap\n */\n buffers(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? (obj || new Buffer()).__init(this.bb.__vector(this.bb_pos + offset) + index * 16, this.bb) : null;\n }\n buffersLength() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * Optional compression of the message body\n */\n compression(obj) {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? (obj || new BodyCompression()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n static startRecordBatch(builder) {\n builder.startObject(4);\n }\n static addLength(builder, length) {\n builder.addFieldInt64(0, length, builder.createLong(0, 0));\n }\n static addNodes(builder, nodesOffset) {\n builder.addFieldOffset(1, nodesOffset, 0);\n }\n static startNodesVector(builder, numElems) {\n builder.startVector(16, numElems, 8);\n }\n static addBuffers(builder, buffersOffset) {\n builder.addFieldOffset(2, buffersOffset, 0);\n }\n static startBuffersVector(builder, numElems) {\n builder.startVector(16, numElems, 8);\n }\n static addCompression(builder, compressionOffset) {\n builder.addFieldOffset(3, compressionOffset, 0);\n }\n static endRecordBatch(builder) {\n const offset = builder.endObject();\n return offset;\n }\n}\n\n//# sourceMappingURL=record-batch.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { RecordBatch } from './record-batch.mjs';\n/**\n * For sending dictionary encoding information. Any Field can be\n * dictionary-encoded, but in this case none of its children may be\n * dictionary-encoded.\n * There is one vector / column per dictionary, but that vector / column\n * may be spread across multiple dictionary batches by using the isDelta\n * flag\n */\nexport class DictionaryBatch {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsDictionaryBatch(bb, obj) {\n return (obj || new DictionaryBatch()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsDictionaryBatch(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new DictionaryBatch()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n id() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n data(obj) {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new RecordBatch()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * If isDelta is true the values in the dictionary are to be appended to a\n * dictionary with the indicated id. If isDelta is false this dictionary\n * should replace the existing dictionary.\n */\n isDelta() {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n static startDictionaryBatch(builder) {\n builder.startObject(3);\n }\n static addId(builder, id) {\n builder.addFieldInt64(0, id, builder.createLong(0, 0));\n }\n static addData(builder, dataOffset) {\n builder.addFieldOffset(1, dataOffset, 0);\n }\n static addIsDelta(builder, isDelta) {\n builder.addFieldInt8(2, +isDelta, +false);\n }\n static endDictionaryBatch(builder) {\n const offset = builder.endObject();\n return offset;\n }\n}\n\n//# sourceMappingURL=dictionary-batch.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport { DictionaryBatch } from './dictionary-batch.mjs';\nimport { RecordBatch } from './record-batch.mjs';\nimport { Schema } from './schema.mjs';\nimport { SparseTensor } from './sparse-tensor.mjs';\nimport { Tensor } from './tensor.mjs';\n/**\n * ----------------------------------------------------------------------\n * The root Message type\n * This union enables us to easily send different message types without\n * redundant storage, and in the future we can easily add new message types.\n *\n * Arrow implementations do not need to implement all of the message types,\n * which may include experimental metadata types. For maximum compatibility,\n * it is best to send data using RecordBatch\n */\nexport var MessageHeader;\n(function (MessageHeader) {\n MessageHeader[MessageHeader[\"NONE\"] = 0] = \"NONE\";\n MessageHeader[MessageHeader[\"Schema\"] = 1] = \"Schema\";\n MessageHeader[MessageHeader[\"DictionaryBatch\"] = 2] = \"DictionaryBatch\";\n MessageHeader[MessageHeader[\"RecordBatch\"] = 3] = \"RecordBatch\";\n MessageHeader[MessageHeader[\"Tensor\"] = 4] = \"Tensor\";\n MessageHeader[MessageHeader[\"SparseTensor\"] = 5] = \"SparseTensor\";\n})(MessageHeader || (MessageHeader = {}));\nexport function unionToMessageHeader(type, accessor) {\n switch (MessageHeader[type]) {\n case 'NONE': return null;\n case 'Schema': return accessor(new Schema());\n case 'DictionaryBatch': return accessor(new DictionaryBatch());\n case 'RecordBatch': return accessor(new RecordBatch());\n case 'Tensor': return accessor(new Tensor());\n case 'SparseTensor': return accessor(new SparseTensor());\n default: return null;\n }\n}\nexport function unionListToMessageHeader(type, accessor, index) {\n switch (MessageHeader[type]) {\n case 'NONE': return null;\n case 'Schema': return accessor(index, new Schema());\n case 'DictionaryBatch': return accessor(index, new DictionaryBatch());\n case 'RecordBatch': return accessor(index, new RecordBatch());\n case 'Tensor': return accessor(index, new Tensor());\n case 'SparseTensor': return accessor(index, new SparseTensor());\n default: return null;\n }\n}\n\n//# sourceMappingURL=message-header.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as flatbuffers from 'flatbuffers';\nimport { KeyValue } from './key-value.mjs';\nimport { MessageHeader } from './message-header.mjs';\nimport { MetadataVersion } from './metadata-version.mjs';\nexport class Message {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n static getRootAsMessage(bb, obj) {\n return (obj || new Message()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n static getSizePrefixedRootAsMessage(bb, obj) {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Message()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n version() {\n const offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt16(this.bb_pos + offset) : MetadataVersion.V1;\n }\n headerType() {\n const offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readUint8(this.bb_pos + offset) : MessageHeader.NONE;\n }\n // @ts-ignore\n header(obj) {\n const offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;\n }\n bodyLength() {\n const offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n customMetadata(index, obj) {\n const offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? (obj || new KeyValue()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n customMetadataLength() {\n const offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n static startMessage(builder) {\n builder.startObject(5);\n }\n static addVersion(builder, version) {\n builder.addFieldInt16(0, version, MetadataVersion.V1);\n }\n static addHeaderType(builder, headerType) {\n builder.addFieldInt8(1, headerType, MessageHeader.NONE);\n }\n static addHeader(builder, headerOffset) {\n builder.addFieldOffset(2, headerOffset, 0);\n }\n static addBodyLength(builder, bodyLength) {\n builder.addFieldInt64(3, bodyLength, builder.createLong(0, 0));\n }\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(4, customMetadataOffset, 0);\n }\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n static endMessage(builder) {\n const offset = builder.endObject();\n return offset;\n }\n static finishMessageBuffer(builder, offset) {\n builder.finish(offset);\n }\n static finishSizePrefixedMessageBuffer(builder, offset) {\n builder.finish(offset, undefined, true);\n }\n static createMessage(builder, version, headerType, headerOffset, bodyLength, customMetadataOffset) {\n Message.startMessage(builder);\n Message.addVersion(builder, version);\n Message.addHeaderType(builder, headerType);\n Message.addHeader(builder, headerOffset);\n Message.addBodyLength(builder, bodyLength);\n Message.addCustomMetadata(builder, customMetadataOffset);\n return Message.endMessage(builder);\n }\n}\n\n//# sourceMappingURL=message.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport * as flatbuffers from 'flatbuffers';\nvar Long = flatbuffers.Long;\nimport { Visitor } from '../visitor.mjs';\nimport { Null } from '../fb/null.mjs';\nimport { Int } from '../fb/int.mjs';\nimport { FloatingPoint } from '../fb/floating-point.mjs';\nimport { Binary } from '../fb/binary.mjs';\nimport { Bool } from '../fb/bool.mjs';\nimport { Utf8 } from '../fb/utf8.mjs';\nimport { Decimal } from '../fb/decimal.mjs';\nimport { Date } from '../fb/date.mjs';\nimport { Time } from '../fb/time.mjs';\nimport { Timestamp } from '../fb/timestamp.mjs';\nimport { Interval } from '../fb/interval.mjs';\nimport { List } from '../fb/list.mjs';\nimport { Struct_ as Struct } from '../fb/struct_.mjs';\nimport { Union } from '../fb/union.mjs';\nimport { DictionaryEncoding } from '../fb/dictionary-encoding.mjs';\nimport { FixedSizeBinary } from '../fb/fixed-size-binary.mjs';\nimport { FixedSizeList } from '../fb/fixed-size-list.mjs';\nimport { Map as Map_ } from '../fb/map.mjs';\n/** @ignore */\nexport class TypeAssembler extends Visitor {\n visit(node, builder) {\n return (node == null || builder == null) ? undefined : super.visit(node, builder);\n }\n visitNull(_node, b) {\n Null.startNull(b);\n return Null.endNull(b);\n }\n visitInt(node, b) {\n Int.startInt(b);\n Int.addBitWidth(b, node.bitWidth);\n Int.addIsSigned(b, node.isSigned);\n return Int.endInt(b);\n }\n visitFloat(node, b) {\n FloatingPoint.startFloatingPoint(b);\n FloatingPoint.addPrecision(b, node.precision);\n return FloatingPoint.endFloatingPoint(b);\n }\n visitBinary(_node, b) {\n Binary.startBinary(b);\n return Binary.endBinary(b);\n }\n visitBool(_node, b) {\n Bool.startBool(b);\n return Bool.endBool(b);\n }\n visitUtf8(_node, b) {\n Utf8.startUtf8(b);\n return Utf8.endUtf8(b);\n }\n visitDecimal(node, b) {\n Decimal.startDecimal(b);\n Decimal.addScale(b, node.scale);\n Decimal.addPrecision(b, node.precision);\n Decimal.addBitWidth(b, node.bitWidth);\n return Decimal.endDecimal(b);\n }\n visitDate(node, b) {\n Date.startDate(b);\n Date.addUnit(b, node.unit);\n return Date.endDate(b);\n }\n visitTime(node, b) {\n Time.startTime(b);\n Time.addUnit(b, node.unit);\n Time.addBitWidth(b, node.bitWidth);\n return Time.endTime(b);\n }\n visitTimestamp(node, b) {\n const timezone = (node.timezone && b.createString(node.timezone)) || undefined;\n Timestamp.startTimestamp(b);\n Timestamp.addUnit(b, node.unit);\n if (timezone !== undefined) {\n Timestamp.addTimezone(b, timezone);\n }\n return Timestamp.endTimestamp(b);\n }\n visitInterval(node, b) {\n Interval.startInterval(b);\n Interval.addUnit(b, node.unit);\n return Interval.endInterval(b);\n }\n visitList(_node, b) {\n List.startList(b);\n return List.endList(b);\n }\n visitStruct(_node, b) {\n Struct.startStruct_(b);\n return Struct.endStruct_(b);\n }\n visitUnion(node, b) {\n Union.startTypeIdsVector(b, node.typeIds.length);\n const typeIds = Union.createTypeIdsVector(b, node.typeIds);\n Union.startUnion(b);\n Union.addMode(b, node.mode);\n Union.addTypeIds(b, typeIds);\n return Union.endUnion(b);\n }\n visitDictionary(node, b) {\n const indexType = this.visit(node.indices, b);\n DictionaryEncoding.startDictionaryEncoding(b);\n DictionaryEncoding.addId(b, new Long(node.id, 0));\n DictionaryEncoding.addIsOrdered(b, node.isOrdered);\n if (indexType !== undefined) {\n DictionaryEncoding.addIndexType(b, indexType);\n }\n return DictionaryEncoding.endDictionaryEncoding(b);\n }\n visitFixedSizeBinary(node, b) {\n FixedSizeBinary.startFixedSizeBinary(b);\n FixedSizeBinary.addByteWidth(b, node.byteWidth);\n return FixedSizeBinary.endFixedSizeBinary(b);\n }\n visitFixedSizeList(node, b) {\n FixedSizeList.startFixedSizeList(b);\n FixedSizeList.addListSize(b, node.listSize);\n return FixedSizeList.endFixedSizeList(b);\n }\n visitMap(node, b) {\n Map_.startMap(b);\n Map_.addKeysSorted(b, node.keysSorted);\n return Map_.endMap(b);\n }\n}\n/** @ignore */\nexport const instance = new TypeAssembler();\n\n//# sourceMappingURL=typeassembler.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/* eslint-disable brace-style */\nimport { Schema, Field } from '../../schema.mjs';\nimport { Dictionary, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct, Union, Bool, Null, Int, Float, Date_, Time, Interval, Timestamp, Int32, } from '../../type.mjs';\nimport { DictionaryBatch, RecordBatch, FieldNode, BufferRegion } from './message.mjs';\nimport { TimeUnit, Precision, IntervalUnit, UnionMode, DateUnit } from '../../enum.mjs';\n/** @ignore */\nexport function schemaFromJSON(_schema, dictionaries = new Map()) {\n return new Schema(schemaFieldsFromJSON(_schema, dictionaries), customMetadataFromJSON(_schema['customMetadata']), dictionaries);\n}\n/** @ignore */\nexport function recordBatchFromJSON(b) {\n return new RecordBatch(b['count'], fieldNodesFromJSON(b['columns']), buffersFromJSON(b['columns']));\n}\n/** @ignore */\nexport function dictionaryBatchFromJSON(b) {\n return new DictionaryBatch(recordBatchFromJSON(b['data']), b['id'], b['isDelta']);\n}\n/** @ignore */\nfunction schemaFieldsFromJSON(_schema, dictionaries) {\n return (_schema['fields'] || []).filter(Boolean).map((f) => Field.fromJSON(f, dictionaries));\n}\n/** @ignore */\nfunction fieldChildrenFromJSON(_field, dictionaries) {\n return (_field['children'] || []).filter(Boolean).map((f) => Field.fromJSON(f, dictionaries));\n}\n/** @ignore */\nfunction fieldNodesFromJSON(xs) {\n return (xs || []).reduce((fieldNodes, column) => [\n ...fieldNodes,\n new FieldNode(column['count'], nullCountFromJSON(column['VALIDITY'])),\n ...fieldNodesFromJSON(column['children'])\n ], []);\n}\n/** @ignore */\nfunction buffersFromJSON(xs, buffers = []) {\n for (let i = -1, n = (xs || []).length; ++i < n;) {\n const column = xs[i];\n column['VALIDITY'] && buffers.push(new BufferRegion(buffers.length, column['VALIDITY'].length));\n column['TYPE'] && buffers.push(new BufferRegion(buffers.length, column['TYPE'].length));\n column['OFFSET'] && buffers.push(new BufferRegion(buffers.length, column['OFFSET'].length));\n column['DATA'] && buffers.push(new BufferRegion(buffers.length, column['DATA'].length));\n buffers = buffersFromJSON(column['children'], buffers);\n }\n return buffers;\n}\n/** @ignore */\nfunction nullCountFromJSON(validity) {\n return (validity || []).reduce((sum, val) => sum + +(val === 0), 0);\n}\n/** @ignore */\nexport function fieldFromJSON(_field, dictionaries) {\n let id;\n let keys;\n let field;\n let dictMeta;\n let type;\n let dictType;\n // If no dictionary encoding\n if (!dictionaries || !(dictMeta = _field['dictionary'])) {\n type = typeFromJSON(_field, fieldChildrenFromJSON(_field, dictionaries));\n field = new Field(_field['name'], type, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n // If dictionary encoded and the first time we've seen this dictionary id, decode\n // the data type and child fields, then wrap in a Dictionary type and insert the\n // data type into the dictionary types map.\n else if (!dictionaries.has(id = dictMeta['id'])) {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta['indexType']) ? indexTypeFromJSON(keys) : new Int32();\n dictionaries.set(id, type = typeFromJSON(_field, fieldChildrenFromJSON(_field, dictionaries)));\n dictType = new Dictionary(type, keys, id, dictMeta['isOrdered']);\n field = new Field(_field['name'], dictType, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n // If dictionary encoded, and have already seen this dictionary Id in the schema, then reuse the\n // data type and wrap in a new Dictionary type and field.\n else {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta['indexType']) ? indexTypeFromJSON(keys) : new Int32();\n dictType = new Dictionary(dictionaries.get(id), keys, id, dictMeta['isOrdered']);\n field = new Field(_field['name'], dictType, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n return field || null;\n}\n/** @ignore */\nfunction customMetadataFromJSON(_metadata) {\n return new Map(Object.entries(_metadata || {}));\n}\n/** @ignore */\nfunction indexTypeFromJSON(_type) {\n return new Int(_type['isSigned'], _type['bitWidth']);\n}\n/** @ignore */\nfunction typeFromJSON(f, children) {\n const typeId = f['type']['name'];\n switch (typeId) {\n case 'NONE': return new Null();\n case 'null': return new Null();\n case 'binary': return new Binary();\n case 'utf8': return new Utf8();\n case 'bool': return new Bool();\n case 'list': return new List((children || [])[0]);\n case 'struct': return new Struct(children || []);\n case 'struct_': return new Struct(children || []);\n }\n switch (typeId) {\n case 'int': {\n const t = f['type'];\n return new Int(t['isSigned'], t['bitWidth']);\n }\n case 'floatingpoint': {\n const t = f['type'];\n return new Float(Precision[t['precision']]);\n }\n case 'decimal': {\n const t = f['type'];\n return new Decimal(t['scale'], t['precision'], t['bitWidth']);\n }\n case 'date': {\n const t = f['type'];\n return new Date_(DateUnit[t['unit']]);\n }\n case 'time': {\n const t = f['type'];\n return new Time(TimeUnit[t['unit']], t['bitWidth']);\n }\n case 'timestamp': {\n const t = f['type'];\n return new Timestamp(TimeUnit[t['unit']], t['timezone']);\n }\n case 'interval': {\n const t = f['type'];\n return new Interval(IntervalUnit[t['unit']]);\n }\n case 'union': {\n const t = f['type'];\n return new Union(UnionMode[t['mode']], (t['typeIds'] || []), children || []);\n }\n case 'fixedsizebinary': {\n const t = f['type'];\n return new FixedSizeBinary(t['byteWidth']);\n }\n case 'fixedsizelist': {\n const t = f['type'];\n return new FixedSizeList(t['listSize'], (children || [])[0]);\n }\n case 'map': {\n const t = f['type'];\n return new Map_((children || [])[0], t['keysSorted']);\n }\n }\n throw new Error(`Unrecognized type: \"${typeId}\"`);\n}\n\n//# sourceMappingURL=json.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/* eslint-disable brace-style */\nimport * as flatbuffers from 'flatbuffers';\nimport { Schema as _Schema } from '../../fb/schema.mjs';\nimport { Int as _Int } from '../../fb/int.mjs';\nimport { RecordBatch as _RecordBatch } from '../../fb/record-batch.mjs';\nimport { DictionaryBatch as _DictionaryBatch } from '../../fb/dictionary-batch.mjs';\nimport { Buffer as _Buffer } from '../../fb/buffer.mjs';\nimport { Field as _Field } from '../../fb/field.mjs';\nimport { FieldNode as _FieldNode } from '../../fb/field-node.mjs';\nimport { Type } from '../../fb/type.mjs';\nimport { KeyValue as _KeyValue } from '../../fb/key-value.mjs';\nimport { Endianness as _Endianness } from '../../fb/endianness.mjs';\nimport { FloatingPoint as _FloatingPoint } from '../../fb/floating-point.mjs';\nimport { Decimal as _Decimal } from '../../fb/decimal.mjs';\nimport { Date as _Date } from '../../fb/date.mjs';\nimport { Time as _Time } from '../../fb/time.mjs';\nimport { Timestamp as _Timestamp } from '../../fb/timestamp.mjs';\nimport { Interval as _Interval } from '../../fb/interval.mjs';\nimport { Union as _Union } from '../../fb/union.mjs';\nimport { FixedSizeBinary as _FixedSizeBinary } from '../../fb/fixed-size-binary.mjs';\nimport { FixedSizeList as _FixedSizeList } from '../../fb/fixed-size-list.mjs';\nimport { Map as _Map } from '../../fb/map.mjs';\nimport { Message as _Message } from '../../fb/message.mjs';\nimport { Schema, Field } from '../../schema.mjs';\nimport { toUint8Array } from '../../util/buffer.mjs';\nimport { MessageHeader, MetadataVersion } from '../../enum.mjs';\nimport { instance as typeAssembler } from '../../visitor/typeassembler.mjs';\nimport { fieldFromJSON, schemaFromJSON, recordBatchFromJSON, dictionaryBatchFromJSON } from './json.mjs';\nvar Long = flatbuffers.Long;\nvar Builder = flatbuffers.Builder;\nvar ByteBuffer = flatbuffers.ByteBuffer;\nimport { DataType, Dictionary, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct, Union, Bool, Null, Int, Float, Date_, Time, Interval, Timestamp, Int32, } from '../../type.mjs';\n/**\n * @ignore\n * @private\n **/\nexport class Message {\n constructor(bodyLength, version, headerType, header) {\n this._version = version;\n this._headerType = headerType;\n this.body = new Uint8Array(0);\n header && (this._createHeader = () => header);\n this._bodyLength = typeof bodyLength === 'number' ? bodyLength : bodyLength.low;\n }\n /** @nocollapse */\n static fromJSON(msg, headerType) {\n const message = new Message(0, MetadataVersion.V4, headerType);\n message._createHeader = messageHeaderFromJSON(msg, headerType);\n return message;\n }\n /** @nocollapse */\n static decode(buf) {\n buf = new ByteBuffer(toUint8Array(buf));\n const _message = _Message.getRootAsMessage(buf);\n const bodyLength = _message.bodyLength();\n const version = _message.version();\n const headerType = _message.headerType();\n const message = new Message(bodyLength, version, headerType);\n message._createHeader = decodeMessageHeader(_message, headerType);\n return message;\n }\n /** @nocollapse */\n static encode(message) {\n const b = new Builder();\n let headerOffset = -1;\n if (message.isSchema()) {\n headerOffset = Schema.encode(b, message.header());\n }\n else if (message.isRecordBatch()) {\n headerOffset = RecordBatch.encode(b, message.header());\n }\n else if (message.isDictionaryBatch()) {\n headerOffset = DictionaryBatch.encode(b, message.header());\n }\n _Message.startMessage(b);\n _Message.addVersion(b, MetadataVersion.V4);\n _Message.addHeader(b, headerOffset);\n _Message.addHeaderType(b, message.headerType);\n _Message.addBodyLength(b, new Long(message.bodyLength, 0));\n _Message.finishMessageBuffer(b, _Message.endMessage(b));\n return b.asUint8Array();\n }\n /** @nocollapse */\n static from(header, bodyLength = 0) {\n if (header instanceof Schema) {\n return new Message(0, MetadataVersion.V4, MessageHeader.Schema, header);\n }\n if (header instanceof RecordBatch) {\n return new Message(bodyLength, MetadataVersion.V4, MessageHeader.RecordBatch, header);\n }\n if (header instanceof DictionaryBatch) {\n return new Message(bodyLength, MetadataVersion.V4, MessageHeader.DictionaryBatch, header);\n }\n throw new Error(`Unrecognized Message header: ${header}`);\n }\n get type() { return this.headerType; }\n get version() { return this._version; }\n get headerType() { return this._headerType; }\n get bodyLength() { return this._bodyLength; }\n header() { return this._createHeader(); }\n isSchema() { return this.headerType === MessageHeader.Schema; }\n isRecordBatch() { return this.headerType === MessageHeader.RecordBatch; }\n isDictionaryBatch() { return this.headerType === MessageHeader.DictionaryBatch; }\n}\n/**\n * @ignore\n * @private\n **/\nexport class RecordBatch {\n constructor(length, nodes, buffers) {\n this._nodes = nodes;\n this._buffers = buffers;\n this._length = typeof length === 'number' ? length : length.low;\n }\n get nodes() { return this._nodes; }\n get length() { return this._length; }\n get buffers() { return this._buffers; }\n}\n/**\n * @ignore\n * @private\n **/\nexport class DictionaryBatch {\n constructor(data, id, isDelta = false) {\n this._data = data;\n this._isDelta = isDelta;\n this._id = typeof id === 'number' ? id : id.low;\n }\n get id() { return this._id; }\n get data() { return this._data; }\n get isDelta() { return this._isDelta; }\n get length() { return this.data.length; }\n get nodes() { return this.data.nodes; }\n get buffers() { return this.data.buffers; }\n}\n/**\n * @ignore\n * @private\n **/\nexport class BufferRegion {\n constructor(offset, length) {\n this.offset = typeof offset === 'number' ? offset : offset.low;\n this.length = typeof length === 'number' ? length : length.low;\n }\n}\n/**\n * @ignore\n * @private\n **/\nexport class FieldNode {\n constructor(length, nullCount) {\n this.length = typeof length === 'number' ? length : length.low;\n this.nullCount = typeof nullCount === 'number' ? nullCount : nullCount.low;\n }\n}\n/** @ignore */\nfunction messageHeaderFromJSON(message, type) {\n return (() => {\n switch (type) {\n case MessageHeader.Schema: return Schema.fromJSON(message);\n case MessageHeader.RecordBatch: return RecordBatch.fromJSON(message);\n case MessageHeader.DictionaryBatch: return DictionaryBatch.fromJSON(message);\n }\n throw new Error(`Unrecognized Message type: { name: ${MessageHeader[type]}, type: ${type} }`);\n });\n}\n/** @ignore */\nfunction decodeMessageHeader(message, type) {\n return (() => {\n switch (type) {\n case MessageHeader.Schema: return Schema.decode(message.header(new _Schema()));\n case MessageHeader.RecordBatch: return RecordBatch.decode(message.header(new _RecordBatch()), message.version());\n case MessageHeader.DictionaryBatch: return DictionaryBatch.decode(message.header(new _DictionaryBatch()), message.version());\n }\n throw new Error(`Unrecognized Message type: { name: ${MessageHeader[type]}, type: ${type} }`);\n });\n}\nField['encode'] = encodeField;\nField['decode'] = decodeField;\nField['fromJSON'] = fieldFromJSON;\nSchema['encode'] = encodeSchema;\nSchema['decode'] = decodeSchema;\nSchema['fromJSON'] = schemaFromJSON;\nRecordBatch['encode'] = encodeRecordBatch;\nRecordBatch['decode'] = decodeRecordBatch;\nRecordBatch['fromJSON'] = recordBatchFromJSON;\nDictionaryBatch['encode'] = encodeDictionaryBatch;\nDictionaryBatch['decode'] = decodeDictionaryBatch;\nDictionaryBatch['fromJSON'] = dictionaryBatchFromJSON;\nFieldNode['encode'] = encodeFieldNode;\nFieldNode['decode'] = decodeFieldNode;\nBufferRegion['encode'] = encodeBufferRegion;\nBufferRegion['decode'] = decodeBufferRegion;\n/** @ignore */\nfunction decodeSchema(_schema, dictionaries = new Map()) {\n const fields = decodeSchemaFields(_schema, dictionaries);\n return new Schema(fields, decodeCustomMetadata(_schema), dictionaries);\n}\n/** @ignore */\nfunction decodeRecordBatch(batch, version = MetadataVersion.V4) {\n if (batch.compression() !== null) {\n throw new Error('Record batch compression not implemented');\n }\n return new RecordBatch(batch.length(), decodeFieldNodes(batch), decodeBuffers(batch, version));\n}\n/** @ignore */\nfunction decodeDictionaryBatch(batch, version = MetadataVersion.V4) {\n return new DictionaryBatch(RecordBatch.decode(batch.data(), version), batch.id(), batch.isDelta());\n}\n/** @ignore */\nfunction decodeBufferRegion(b) {\n return new BufferRegion(b.offset(), b.length());\n}\n/** @ignore */\nfunction decodeFieldNode(f) {\n return new FieldNode(f.length(), f.nullCount());\n}\n/** @ignore */\nfunction decodeFieldNodes(batch) {\n const nodes = [];\n for (let f, i = -1, j = -1, n = batch.nodesLength(); ++i < n;) {\n if (f = batch.nodes(i)) {\n nodes[++j] = FieldNode.decode(f);\n }\n }\n return nodes;\n}\n/** @ignore */\nfunction decodeBuffers(batch, version) {\n const bufferRegions = [];\n for (let b, i = -1, j = -1, n = batch.buffersLength(); ++i < n;) {\n if (b = batch.buffers(i)) {\n // If this Arrow buffer was written before version 4,\n // advance the buffer's bb_pos 8 bytes to skip past\n // the now-removed page_id field\n if (version < MetadataVersion.V4) {\n b.bb_pos += (8 * (i + 1));\n }\n bufferRegions[++j] = BufferRegion.decode(b);\n }\n }\n return bufferRegions;\n}\n/** @ignore */\nfunction decodeSchemaFields(schema, dictionaries) {\n const fields = [];\n for (let f, i = -1, j = -1, n = schema.fieldsLength(); ++i < n;) {\n if (f = schema.fields(i)) {\n fields[++j] = Field.decode(f, dictionaries);\n }\n }\n return fields;\n}\n/** @ignore */\nfunction decodeFieldChildren(field, dictionaries) {\n const children = [];\n for (let f, i = -1, j = -1, n = field.childrenLength(); ++i < n;) {\n if (f = field.children(i)) {\n children[++j] = Field.decode(f, dictionaries);\n }\n }\n return children;\n}\n/** @ignore */\nfunction decodeField(f, dictionaries) {\n let id;\n let field;\n let type;\n let keys;\n let dictType;\n let dictMeta;\n // If no dictionary encoding\n if (!dictionaries || !(dictMeta = f.dictionary())) {\n type = decodeFieldType(f, decodeFieldChildren(f, dictionaries));\n field = new Field(f.name(), type, f.nullable(), decodeCustomMetadata(f));\n }\n // If dictionary encoded and the first time we've seen this dictionary id, decode\n // the data type and child fields, then wrap in a Dictionary type and insert the\n // data type into the dictionary types map.\n else if (!dictionaries.has(id = dictMeta.id().low)) {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta.indexType()) ? decodeIndexType(keys) : new Int32();\n dictionaries.set(id, type = decodeFieldType(f, decodeFieldChildren(f, dictionaries)));\n dictType = new Dictionary(type, keys, id, dictMeta.isOrdered());\n field = new Field(f.name(), dictType, f.nullable(), decodeCustomMetadata(f));\n }\n // If dictionary encoded, and have already seen this dictionary Id in the schema, then reuse the\n // data type and wrap in a new Dictionary type and field.\n else {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta.indexType()) ? decodeIndexType(keys) : new Int32();\n dictType = new Dictionary(dictionaries.get(id), keys, id, dictMeta.isOrdered());\n field = new Field(f.name(), dictType, f.nullable(), decodeCustomMetadata(f));\n }\n return field || null;\n}\n/** @ignore */\nfunction decodeCustomMetadata(parent) {\n const data = new Map();\n if (parent) {\n for (let entry, key, i = -1, n = Math.trunc(parent.customMetadataLength()); ++i < n;) {\n if ((entry = parent.customMetadata(i)) && (key = entry.key()) != null) {\n data.set(key, entry.value());\n }\n }\n }\n return data;\n}\n/** @ignore */\nfunction decodeIndexType(_type) {\n return new Int(_type.isSigned(), _type.bitWidth());\n}\n/** @ignore */\nfunction decodeFieldType(f, children) {\n const typeId = f.typeType();\n switch (typeId) {\n case Type['NONE']: return new Null();\n case Type['Null']: return new Null();\n case Type['Binary']: return new Binary();\n case Type['Utf8']: return new Utf8();\n case Type['Bool']: return new Bool();\n case Type['List']: return new List((children || [])[0]);\n case Type['Struct_']: return new Struct(children || []);\n }\n switch (typeId) {\n case Type['Int']: {\n const t = f.type(new _Int());\n return new Int(t.isSigned(), t.bitWidth());\n }\n case Type['FloatingPoint']: {\n const t = f.type(new _FloatingPoint());\n return new Float(t.precision());\n }\n case Type['Decimal']: {\n const t = f.type(new _Decimal());\n return new Decimal(t.scale(), t.precision(), t.bitWidth());\n }\n case Type['Date']: {\n const t = f.type(new _Date());\n return new Date_(t.unit());\n }\n case Type['Time']: {\n const t = f.type(new _Time());\n return new Time(t.unit(), t.bitWidth());\n }\n case Type['Timestamp']: {\n const t = f.type(new _Timestamp());\n return new Timestamp(t.unit(), t.timezone());\n }\n case Type['Interval']: {\n const t = f.type(new _Interval());\n return new Interval(t.unit());\n }\n case Type['Union']: {\n const t = f.type(new _Union());\n return new Union(t.mode(), t.typeIdsArray() || [], children || []);\n }\n case Type['FixedSizeBinary']: {\n const t = f.type(new _FixedSizeBinary());\n return new FixedSizeBinary(t.byteWidth());\n }\n case Type['FixedSizeList']: {\n const t = f.type(new _FixedSizeList());\n return new FixedSizeList(t.listSize(), (children || [])[0]);\n }\n case Type['Map']: {\n const t = f.type(new _Map());\n return new Map_((children || [])[0], t.keysSorted());\n }\n }\n throw new Error(`Unrecognized type: \"${Type[typeId]}\" (${typeId})`);\n}\n/** @ignore */\nfunction encodeSchema(b, schema) {\n const fieldOffsets = schema.fields.map((f) => Field.encode(b, f));\n _Schema.startFieldsVector(b, fieldOffsets.length);\n const fieldsVectorOffset = _Schema.createFieldsVector(b, fieldOffsets);\n const metadataOffset = !(schema.metadata && schema.metadata.size > 0) ? -1 :\n _Schema.createCustomMetadataVector(b, [...schema.metadata].map(([k, v]) => {\n const key = b.createString(`${k}`);\n const val = b.createString(`${v}`);\n _KeyValue.startKeyValue(b);\n _KeyValue.addKey(b, key);\n _KeyValue.addValue(b, val);\n return _KeyValue.endKeyValue(b);\n }));\n _Schema.startSchema(b);\n _Schema.addFields(b, fieldsVectorOffset);\n _Schema.addEndianness(b, platformIsLittleEndian ? _Endianness.Little : _Endianness.Big);\n if (metadataOffset !== -1) {\n _Schema.addCustomMetadata(b, metadataOffset);\n }\n return _Schema.endSchema(b);\n}\n/** @ignore */\nfunction encodeField(b, field) {\n let nameOffset = -1;\n let typeOffset = -1;\n let dictionaryOffset = -1;\n const type = field.type;\n let typeId = field.typeId;\n if (!DataType.isDictionary(type)) {\n typeOffset = typeAssembler.visit(type, b);\n }\n else {\n typeId = type.dictionary.typeId;\n dictionaryOffset = typeAssembler.visit(type, b);\n typeOffset = typeAssembler.visit(type.dictionary, b);\n }\n const childOffsets = (type.children || []).map((f) => Field.encode(b, f));\n const childrenVectorOffset = _Field.createChildrenVector(b, childOffsets);\n const metadataOffset = !(field.metadata && field.metadata.size > 0) ? -1 :\n _Field.createCustomMetadataVector(b, [...field.metadata].map(([k, v]) => {\n const key = b.createString(`${k}`);\n const val = b.createString(`${v}`);\n _KeyValue.startKeyValue(b);\n _KeyValue.addKey(b, key);\n _KeyValue.addValue(b, val);\n return _KeyValue.endKeyValue(b);\n }));\n if (field.name) {\n nameOffset = b.createString(field.name);\n }\n _Field.startField(b);\n _Field.addType(b, typeOffset);\n _Field.addTypeType(b, typeId);\n _Field.addChildren(b, childrenVectorOffset);\n _Field.addNullable(b, !!field.nullable);\n if (nameOffset !== -1) {\n _Field.addName(b, nameOffset);\n }\n if (dictionaryOffset !== -1) {\n _Field.addDictionary(b, dictionaryOffset);\n }\n if (metadataOffset !== -1) {\n _Field.addCustomMetadata(b, metadataOffset);\n }\n return _Field.endField(b);\n}\n/** @ignore */\nfunction encodeRecordBatch(b, recordBatch) {\n const nodes = recordBatch.nodes || [];\n const buffers = recordBatch.buffers || [];\n _RecordBatch.startNodesVector(b, nodes.length);\n for (const n of nodes.slice().reverse())\n FieldNode.encode(b, n);\n const nodesVectorOffset = b.endVector();\n _RecordBatch.startBuffersVector(b, buffers.length);\n for (const b_ of buffers.slice().reverse())\n BufferRegion.encode(b, b_);\n const buffersVectorOffset = b.endVector();\n _RecordBatch.startRecordBatch(b);\n _RecordBatch.addLength(b, new Long(recordBatch.length, 0));\n _RecordBatch.addNodes(b, nodesVectorOffset);\n _RecordBatch.addBuffers(b, buffersVectorOffset);\n return _RecordBatch.endRecordBatch(b);\n}\n/** @ignore */\nfunction encodeDictionaryBatch(b, dictionaryBatch) {\n const dataOffset = RecordBatch.encode(b, dictionaryBatch.data);\n _DictionaryBatch.startDictionaryBatch(b);\n _DictionaryBatch.addId(b, new Long(dictionaryBatch.id, 0));\n _DictionaryBatch.addIsDelta(b, dictionaryBatch.isDelta);\n _DictionaryBatch.addData(b, dataOffset);\n return _DictionaryBatch.endDictionaryBatch(b);\n}\n/** @ignore */\nfunction encodeFieldNode(b, node) {\n return _FieldNode.createFieldNode(b, new Long(node.length, 0), new Long(node.nullCount, 0));\n}\n/** @ignore */\nfunction encodeBufferRegion(b, node) {\n return _Buffer.createBuffer(b, new Long(node.offset, 0), new Long(node.length, 0));\n}\n/** @ignore */\nconst platformIsLittleEndian = (() => {\n const buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] === 256;\n})();\n\n//# sourceMappingURL=message.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __awaiter } from \"tslib\";\nimport { MessageHeader } from '../enum.mjs';\nimport { ByteBuffer } from 'flatbuffers';\nimport { Message } from './metadata/message.mjs';\nimport { isFileHandle } from '../util/compat.mjs';\nimport { AsyncRandomAccessFile } from '../io/file.mjs';\nimport { toUint8Array } from '../util/buffer.mjs';\nimport { ByteStream, AsyncByteStream } from '../io/stream.mjs';\nimport { ArrowJSON, ITERATOR_DONE } from '../io/interfaces.mjs';\n/** @ignore */ const invalidMessageType = (type) => `Expected ${MessageHeader[type]} Message in stream, but was null or length 0.`;\n/** @ignore */ const nullMessage = (type) => `Header pointer of flatbuffer-encoded ${MessageHeader[type]} Message is null or length 0.`;\n/** @ignore */ const invalidMessageMetadata = (expected, actual) => `Expected to read ${expected} metadata bytes, but only read ${actual}.`;\n/** @ignore */ const invalidMessageBodyLength = (expected, actual) => `Expected to read ${expected} bytes for message body, but only read ${actual}.`;\n/** @ignore */\nexport class MessageReader {\n constructor(source) {\n this.source = source instanceof ByteStream ? source : new ByteStream(source);\n }\n [Symbol.iterator]() { return this; }\n next() {\n let r;\n if ((r = this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n // ARROW-6313: If the first 4 bytes are continuation indicator (-1), read\n // the next 4 for the 32-bit metadata length. Otherwise, assume this is a\n // pre-v0.15 message, where the first 4 bytes are the metadata length.\n if ((r.value === -1) &&\n (r = this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n if ((r = this.readMetadata(r.value)).done) {\n return ITERATOR_DONE;\n }\n return r;\n }\n throw(value) { return this.source.throw(value); }\n return(value) { return this.source.return(value); }\n readMessage(type) {\n let r;\n if ((r = this.next()).done) {\n return null;\n }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n readMessageBody(bodyLength) {\n if (bodyLength <= 0) {\n return new Uint8Array(0);\n }\n const buf = toUint8Array(this.source.read(bodyLength));\n if (buf.byteLength < bodyLength) {\n throw new Error(invalidMessageBodyLength(bodyLength, buf.byteLength));\n }\n // 1. Work around bugs in fs.ReadStream's internal Buffer pooling, see: https://github.com/nodejs/node/issues/24817\n // 2. Work around https://github.com/whatwg/streams/blob/0ebe4b042e467d9876d80ae045de3843092ad797/reference-implementation/lib/helpers.js#L126\n return /* 1. */ (buf.byteOffset % 8 === 0) &&\n /* 2. */ (buf.byteOffset + buf.byteLength) <= buf.buffer.byteLength ? buf : buf.slice();\n }\n readSchema(throwIfNull = false) {\n const type = MessageHeader.Schema;\n const message = this.readMessage(type);\n const schema = message === null || message === void 0 ? void 0 : message.header();\n if (throwIfNull && !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n readMetadataLength() {\n const buf = this.source.read(PADDING);\n const bb = buf && new ByteBuffer(buf);\n const len = (bb === null || bb === void 0 ? void 0 : bb.readInt32(0)) || 0;\n return { done: len === 0, value: len };\n }\n readMetadata(metadataLength) {\n const buf = this.source.read(metadataLength);\n if (!buf) {\n return ITERATOR_DONE;\n }\n if (buf.byteLength < metadataLength) {\n throw new Error(invalidMessageMetadata(metadataLength, buf.byteLength));\n }\n return { done: false, value: Message.decode(buf) };\n }\n}\n/** @ignore */\nexport class AsyncMessageReader {\n constructor(source, byteLength) {\n this.source = source instanceof AsyncByteStream ? source\n : isFileHandle(source)\n ? new AsyncRandomAccessFile(source, byteLength)\n : new AsyncByteStream(source);\n }\n [Symbol.asyncIterator]() { return this; }\n next() {\n return __awaiter(this, void 0, void 0, function* () {\n let r;\n if ((r = yield this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n // ARROW-6313: If the first 4 bytes are continuation indicator (-1), read\n // the next 4 for the 32-bit metadata length. Otherwise, assume this is a\n // pre-v0.15 message, where the first 4 bytes are the metadata length.\n if ((r.value === -1) &&\n (r = yield this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n if ((r = yield this.readMetadata(r.value)).done) {\n return ITERATOR_DONE;\n }\n return r;\n });\n }\n throw(value) {\n return __awaiter(this, void 0, void 0, function* () { return yield this.source.throw(value); });\n }\n return(value) {\n return __awaiter(this, void 0, void 0, function* () { return yield this.source.return(value); });\n }\n readMessage(type) {\n return __awaiter(this, void 0, void 0, function* () {\n let r;\n if ((r = yield this.next()).done) {\n return null;\n }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n });\n }\n readMessageBody(bodyLength) {\n return __awaiter(this, void 0, void 0, function* () {\n if (bodyLength <= 0) {\n return new Uint8Array(0);\n }\n const buf = toUint8Array(yield this.source.read(bodyLength));\n if (buf.byteLength < bodyLength) {\n throw new Error(invalidMessageBodyLength(bodyLength, buf.byteLength));\n }\n // 1. Work around bugs in fs.ReadStream's internal Buffer pooling, see: https://github.com/nodejs/node/issues/24817\n // 2. Work around https://github.com/whatwg/streams/blob/0ebe4b042e467d9876d80ae045de3843092ad797/reference-implementation/lib/helpers.js#L126\n return /* 1. */ (buf.byteOffset % 8 === 0) &&\n /* 2. */ (buf.byteOffset + buf.byteLength) <= buf.buffer.byteLength ? buf : buf.slice();\n });\n }\n readSchema(throwIfNull = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const type = MessageHeader.Schema;\n const message = yield this.readMessage(type);\n const schema = message === null || message === void 0 ? void 0 : message.header();\n if (throwIfNull && !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n });\n }\n readMetadataLength() {\n return __awaiter(this, void 0, void 0, function* () {\n const buf = yield this.source.read(PADDING);\n const bb = buf && new ByteBuffer(buf);\n const len = (bb === null || bb === void 0 ? void 0 : bb.readInt32(0)) || 0;\n return { done: len === 0, value: len };\n });\n }\n readMetadata(metadataLength) {\n return __awaiter(this, void 0, void 0, function* () {\n const buf = yield this.source.read(metadataLength);\n if (!buf) {\n return ITERATOR_DONE;\n }\n if (buf.byteLength < metadataLength) {\n throw new Error(invalidMessageMetadata(metadataLength, buf.byteLength));\n }\n return { done: false, value: Message.decode(buf) };\n });\n }\n}\n/** @ignore */\nexport class JSONMessageReader extends MessageReader {\n constructor(source) {\n super(new Uint8Array(0));\n this._schema = false;\n this._body = [];\n this._batchIndex = 0;\n this._dictionaryIndex = 0;\n this._json = source instanceof ArrowJSON ? source : new ArrowJSON(source);\n }\n next() {\n const { _json } = this;\n if (!this._schema) {\n this._schema = true;\n const message = Message.fromJSON(_json.schema, MessageHeader.Schema);\n return { done: false, value: message };\n }\n if (this._dictionaryIndex < _json.dictionaries.length) {\n const batch = _json.dictionaries[this._dictionaryIndex++];\n this._body = batch['data']['columns'];\n const message = Message.fromJSON(batch, MessageHeader.DictionaryBatch);\n return { done: false, value: message };\n }\n if (this._batchIndex < _json.batches.length) {\n const batch = _json.batches[this._batchIndex++];\n this._body = batch['columns'];\n const message = Message.fromJSON(batch, MessageHeader.RecordBatch);\n return { done: false, value: message };\n }\n this._body = [];\n return ITERATOR_DONE;\n }\n readMessageBody(_bodyLength) {\n return flattenDataSources(this._body);\n function flattenDataSources(xs) {\n return (xs || []).reduce((buffers, column) => [\n ...buffers,\n ...(column['VALIDITY'] && [column['VALIDITY']] || []),\n ...(column['TYPE'] && [column['TYPE']] || []),\n ...(column['OFFSET'] && [column['OFFSET']] || []),\n ...(column['DATA'] && [column['DATA']] || []),\n ...flattenDataSources(column['children'])\n ], []);\n }\n }\n readMessage(type) {\n let r;\n if ((r = this.next()).done) {\n return null;\n }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n readSchema() {\n const type = MessageHeader.Schema;\n const message = this.readMessage(type);\n const schema = message === null || message === void 0 ? void 0 : message.header();\n if (!message || !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n}\n/** @ignore */\nexport const PADDING = 4;\n/** @ignore */\nexport const MAGIC_STR = 'ARROW1';\n/** @ignore */\nexport const MAGIC = new Uint8Array(MAGIC_STR.length);\nfor (let i = 0; i < MAGIC_STR.length; i += 1) {\n MAGIC[i] = MAGIC_STR.codePointAt(i);\n}\n/** @ignore */\nexport function checkForMagicArrowString(buffer, index = 0) {\n for (let i = -1, n = MAGIC.length; ++i < n;) {\n if (MAGIC[i] !== buffer[index + i]) {\n return false;\n }\n }\n return true;\n}\n/** @ignore */\nexport const magicLength = MAGIC.length;\n/** @ignore */\nexport const magicAndPadding = magicLength + PADDING;\n/** @ignore */\nexport const magicX2AndPadding = magicLength * 2 + PADDING;\n\n//# sourceMappingURL=message.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __asyncDelegator, __asyncGenerator, __asyncValues, __await, __awaiter } from \"tslib\";\nimport { makeData } from '../data.mjs';\nimport { Vector } from '../vector.mjs';\nimport { Struct } from '../type.mjs';\nimport { MessageHeader } from '../enum.mjs';\nimport { Footer } from './metadata/file.mjs';\nimport streamAdapters from '../io/adapters.mjs';\nimport { ByteStream, AsyncByteStream } from '../io/stream.mjs';\nimport { RandomAccessFile, AsyncRandomAccessFile } from '../io/file.mjs';\nimport { VectorLoader, JSONVectorLoader } from '../visitor/vectorloader.mjs';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from '../recordbatch.mjs';\nimport { ITERATOR_DONE, ReadableInterop, } from '../io/interfaces.mjs';\nimport { MessageReader, AsyncMessageReader, JSONMessageReader, checkForMagicArrowString, magicLength, magicAndPadding, magicX2AndPadding } from './message.mjs';\nimport { isPromise, isIterable, isAsyncIterable, isIteratorResult, isArrowJSON, isFileHandle, isFetchResponse, isReadableDOMStream, isReadableNodeStream } from '../util/compat.mjs';\nexport class RecordBatchReader extends ReadableInterop {\n constructor(impl) {\n super();\n this._impl = impl;\n }\n get closed() { return this._impl.closed; }\n get schema() { return this._impl.schema; }\n get autoDestroy() { return this._impl.autoDestroy; }\n get dictionaries() { return this._impl.dictionaries; }\n get numDictionaries() { return this._impl.numDictionaries; }\n get numRecordBatches() { return this._impl.numRecordBatches; }\n get footer() { return this._impl.isFile() ? this._impl.footer : null; }\n isSync() { return this._impl.isSync(); }\n isAsync() { return this._impl.isAsync(); }\n isFile() { return this._impl.isFile(); }\n isStream() { return this._impl.isStream(); }\n next() {\n return this._impl.next();\n }\n throw(value) {\n return this._impl.throw(value);\n }\n return(value) {\n return this._impl.return(value);\n }\n cancel() {\n return this._impl.cancel();\n }\n reset(schema) {\n this._impl.reset(schema);\n this._DOMStream = undefined;\n this._nodeStream = undefined;\n return this;\n }\n open(options) {\n const opening = this._impl.open(options);\n return isPromise(opening) ? opening.then(() => this) : this;\n }\n readRecordBatch(index) {\n return this._impl.isFile() ? this._impl.readRecordBatch(index) : null;\n }\n [Symbol.iterator]() {\n return this._impl[Symbol.iterator]();\n }\n [Symbol.asyncIterator]() {\n return this._impl[Symbol.asyncIterator]();\n }\n toDOMStream() {\n return streamAdapters.toDOMStream((this.isSync()\n ? { [Symbol.iterator]: () => this }\n : { [Symbol.asyncIterator]: () => this }));\n }\n toNodeStream() {\n return streamAdapters.toNodeStream((this.isSync()\n ? { [Symbol.iterator]: () => this }\n : { [Symbol.asyncIterator]: () => this }), { objectMode: true });\n }\n /** @nocollapse */\n // @ts-ignore\n static throughNode(options) {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n static throughDOM(\n // @ts-ignore\n writableStrategy, \n // @ts-ignore\n readableStrategy) {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n /** @nocollapse */\n static from(source) {\n if (source instanceof RecordBatchReader) {\n return source;\n }\n else if (isArrowJSON(source)) {\n return fromArrowJSON(source);\n }\n else if (isFileHandle(source)) {\n return fromFileHandle(source);\n }\n else if (isPromise(source)) {\n return (() => __awaiter(this, void 0, void 0, function* () { return yield RecordBatchReader.from(yield source); }))();\n }\n else if (isFetchResponse(source) || isReadableDOMStream(source) || isReadableNodeStream(source) || isAsyncIterable(source)) {\n return fromAsyncByteStream(new AsyncByteStream(source));\n }\n return fromByteStream(new ByteStream(source));\n }\n /** @nocollapse */\n static readAll(source) {\n if (source instanceof RecordBatchReader) {\n return source.isSync() ? readAllSync(source) : readAllAsync(source);\n }\n else if (isArrowJSON(source) || ArrayBuffer.isView(source) || isIterable(source) || isIteratorResult(source)) {\n return readAllSync(source);\n }\n return readAllAsync(source);\n }\n}\n//\n// Since TS is a structural type system, we define the following subclass stubs\n// so that concrete types exist to associate with with the interfaces below.\n//\n// The implementation for each RecordBatchReader is hidden away in the set of\n// `RecordBatchReaderImpl` classes in the second half of this file. This allows\n// us to export a single RecordBatchReader class, and swap out the impl based\n// on the io primitives or underlying arrow (JSON, file, or stream) at runtime.\n//\n// Async/await makes our job a bit harder, since it forces everything to be\n// either fully sync or fully async. This is why the logic for the reader impls\n// has been duplicated into both sync and async variants. Since the RBR\n// delegates to its impl, an RBR with an AsyncRecordBatchFileReaderImpl for\n// example will return async/await-friendly Promises, but one with a (sync)\n// RecordBatchStreamReaderImpl will always return values. Nothing should be\n// different about their logic, aside from the async handling. This is also why\n// this code looks highly structured, as it should be nearly identical and easy\n// to follow.\n//\n/** @ignore */\nexport class RecordBatchStreamReader extends RecordBatchReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n readAll() { return [...this]; }\n [Symbol.iterator]() { return this._impl[Symbol.iterator](); }\n [Symbol.asyncIterator]() { return __asyncGenerator(this, arguments, function* _a() { yield __await(yield* __asyncDelegator(__asyncValues(this[Symbol.iterator]()))); }); }\n}\n/** @ignore */\nexport class AsyncRecordBatchStreamReader extends RecordBatchReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n readAll() {\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n const batches = new Array();\n try {\n for (var _b = __asyncValues(this), _c; _c = yield _b.next(), !_c.done;) {\n const batch = _c.value;\n batches.push(batch);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return batches;\n });\n }\n [Symbol.iterator]() { throw new Error(`AsyncRecordBatchStreamReader is not Iterable`); }\n [Symbol.asyncIterator]() { return this._impl[Symbol.asyncIterator](); }\n}\n/** @ignore */\nexport class RecordBatchFileReader extends RecordBatchStreamReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n}\n/** @ignore */\nexport class AsyncRecordBatchFileReader extends AsyncRecordBatchStreamReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n}\n/** @ignore */\nclass RecordBatchReaderImpl {\n constructor(dictionaries = new Map()) {\n this.closed = false;\n this.autoDestroy = true;\n this._dictionaryIndex = 0;\n this._recordBatchIndex = 0;\n this.dictionaries = dictionaries;\n }\n get numDictionaries() { return this._dictionaryIndex; }\n get numRecordBatches() { return this._recordBatchIndex; }\n isSync() { return false; }\n isAsync() { return false; }\n isFile() { return false; }\n isStream() { return false; }\n reset(schema) {\n this._dictionaryIndex = 0;\n this._recordBatchIndex = 0;\n this.schema = schema;\n this.dictionaries = new Map();\n return this;\n }\n _loadRecordBatch(header, body) {\n const children = this._loadVectors(header, body, this.schema.fields);\n const data = makeData({ type: new Struct(this.schema.fields), length: header.length, children });\n return new RecordBatch(this.schema, data);\n }\n _loadDictionaryBatch(header, body) {\n const { id, isDelta } = header;\n const { dictionaries, schema } = this;\n const dictionary = dictionaries.get(id);\n if (isDelta || !dictionary) {\n const type = schema.dictionaries.get(id);\n const data = this._loadVectors(header.data, body, [type]);\n return (dictionary && isDelta ? dictionary.concat(new Vector(data)) :\n new Vector(data)).memoize();\n }\n return dictionary.memoize();\n }\n _loadVectors(header, body, types) {\n return new VectorLoader(body, header.nodes, header.buffers, this.dictionaries).visitMany(types);\n }\n}\n/** @ignore */\nclass RecordBatchStreamReaderImpl extends RecordBatchReaderImpl {\n constructor(source, dictionaries) {\n super(dictionaries);\n this._reader = !isArrowJSON(source)\n ? new MessageReader(this._handle = source)\n : new JSONMessageReader(this._handle = source);\n }\n isSync() { return true; }\n isStream() { return true; }\n [Symbol.iterator]() {\n return this;\n }\n cancel() {\n if (!this.closed && (this.closed = true)) {\n this.reset()._reader.return();\n this._reader = null;\n this.dictionaries = null;\n }\n }\n open(options) {\n if (!this.closed) {\n this.autoDestroy = shouldAutoDestroy(this, options);\n if (!(this.schema || (this.schema = this._reader.readSchema()))) {\n this.cancel();\n }\n }\n return this;\n }\n throw(value) {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return this.reset()._reader.throw(value);\n }\n return ITERATOR_DONE;\n }\n return(value) {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return this.reset()._reader.return(value);\n }\n return ITERATOR_DONE;\n }\n next() {\n if (this.closed) {\n return ITERATOR_DONE;\n }\n let message;\n const { _reader: reader } = this;\n while (message = this._readNextMessageAndValidate()) {\n if (message.isSchema()) {\n this.reset(message.header());\n }\n else if (message.isRecordBatch()) {\n this._recordBatchIndex++;\n const header = message.header();\n const buffer = reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return { done: false, value: recordBatch };\n }\n else if (message.isDictionaryBatch()) {\n this._dictionaryIndex++;\n const header = message.header();\n const buffer = reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n if (this.schema && this._recordBatchIndex === 0) {\n this._recordBatchIndex++;\n return { done: false, value: new _InternalEmptyPlaceholderRecordBatch(this.schema) };\n }\n return this.return();\n }\n _readNextMessageAndValidate(type) {\n return this._reader.readMessage(type);\n }\n}\n/** @ignore */\nclass AsyncRecordBatchStreamReaderImpl extends RecordBatchReaderImpl {\n constructor(source, dictionaries) {\n super(dictionaries);\n this._reader = new AsyncMessageReader(this._handle = source);\n }\n isAsync() { return true; }\n isStream() { return true; }\n [Symbol.asyncIterator]() {\n return this;\n }\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.closed && (this.closed = true)) {\n yield this.reset()._reader.return();\n this._reader = null;\n this.dictionaries = null;\n }\n });\n }\n open(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.closed) {\n this.autoDestroy = shouldAutoDestroy(this, options);\n if (!(this.schema || (this.schema = (yield this._reader.readSchema())))) {\n yield this.cancel();\n }\n }\n return this;\n });\n }\n throw(value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return yield this.reset()._reader.throw(value);\n }\n return ITERATOR_DONE;\n });\n }\n return(value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return yield this.reset()._reader.return(value);\n }\n return ITERATOR_DONE;\n });\n }\n next() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.closed) {\n return ITERATOR_DONE;\n }\n let message;\n const { _reader: reader } = this;\n while (message = yield this._readNextMessageAndValidate()) {\n if (message.isSchema()) {\n yield this.reset(message.header());\n }\n else if (message.isRecordBatch()) {\n this._recordBatchIndex++;\n const header = message.header();\n const buffer = yield reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return { done: false, value: recordBatch };\n }\n else if (message.isDictionaryBatch()) {\n this._dictionaryIndex++;\n const header = message.header();\n const buffer = yield reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n if (this.schema && this._recordBatchIndex === 0) {\n this._recordBatchIndex++;\n return { done: false, value: new _InternalEmptyPlaceholderRecordBatch(this.schema) };\n }\n return yield this.return();\n });\n }\n _readNextMessageAndValidate(type) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this._reader.readMessage(type);\n });\n }\n}\n/** @ignore */\nclass RecordBatchFileReaderImpl extends RecordBatchStreamReaderImpl {\n constructor(source, dictionaries) {\n super(source instanceof RandomAccessFile ? source : new RandomAccessFile(source), dictionaries);\n }\n get footer() { return this._footer; }\n get numDictionaries() { return this._footer ? this._footer.numDictionaries : 0; }\n get numRecordBatches() { return this._footer ? this._footer.numRecordBatches : 0; }\n isSync() { return true; }\n isFile() { return true; }\n open(options) {\n if (!this.closed && !this._footer) {\n this.schema = (this._footer = this._readFooter()).schema;\n for (const block of this._footer.dictionaryBatches()) {\n block && this._readDictionaryBatch(this._dictionaryIndex++);\n }\n }\n return super.open(options);\n }\n readRecordBatch(index) {\n var _a;\n if (this.closed) {\n return null;\n }\n if (!this._footer) {\n this.open();\n }\n const block = (_a = this._footer) === null || _a === void 0 ? void 0 : _a.getRecordBatch(index);\n if (block && this._handle.seek(block.offset)) {\n const message = this._reader.readMessage(MessageHeader.RecordBatch);\n if (message === null || message === void 0 ? void 0 : message.isRecordBatch()) {\n const header = message.header();\n const buffer = this._reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return recordBatch;\n }\n }\n return null;\n }\n _readDictionaryBatch(index) {\n var _a;\n const block = (_a = this._footer) === null || _a === void 0 ? void 0 : _a.getDictionaryBatch(index);\n if (block && this._handle.seek(block.offset)) {\n const message = this._reader.readMessage(MessageHeader.DictionaryBatch);\n if (message === null || message === void 0 ? void 0 : message.isDictionaryBatch()) {\n const header = message.header();\n const buffer = this._reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n }\n _readFooter() {\n const { _handle } = this;\n const offset = _handle.size - magicAndPadding;\n const length = _handle.readInt32(offset);\n const buffer = _handle.readAt(offset - length, length);\n return Footer.decode(buffer);\n }\n _readNextMessageAndValidate(type) {\n var _a;\n if (!this._footer) {\n this.open();\n }\n if (this._footer && this._recordBatchIndex < this.numRecordBatches) {\n const block = (_a = this._footer) === null || _a === void 0 ? void 0 : _a.getRecordBatch(this._recordBatchIndex);\n if (block && this._handle.seek(block.offset)) {\n return this._reader.readMessage(type);\n }\n }\n return null;\n }\n}\n/** @ignore */\nclass AsyncRecordBatchFileReaderImpl extends AsyncRecordBatchStreamReaderImpl {\n constructor(source, ...rest) {\n const byteLength = typeof rest[0] !== 'number' ? rest.shift() : undefined;\n const dictionaries = rest[0] instanceof Map ? rest.shift() : undefined;\n super(source instanceof AsyncRandomAccessFile ? source : new AsyncRandomAccessFile(source, byteLength), dictionaries);\n }\n get footer() { return this._footer; }\n get numDictionaries() { return this._footer ? this._footer.numDictionaries : 0; }\n get numRecordBatches() { return this._footer ? this._footer.numRecordBatches : 0; }\n isFile() { return true; }\n isAsync() { return true; }\n open(options) {\n const _super = Object.create(null, {\n open: { get: () => super.open }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.closed && !this._footer) {\n this.schema = (this._footer = yield this._readFooter()).schema;\n for (const block of this._footer.dictionaryBatches()) {\n block && (yield this._readDictionaryBatch(this._dictionaryIndex++));\n }\n }\n return yield _super.open.call(this, options);\n });\n }\n readRecordBatch(index) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (this.closed) {\n return null;\n }\n if (!this._footer) {\n yield this.open();\n }\n const block = (_a = this._footer) === null || _a === void 0 ? void 0 : _a.getRecordBatch(index);\n if (block && (yield this._handle.seek(block.offset))) {\n const message = yield this._reader.readMessage(MessageHeader.RecordBatch);\n if (message === null || message === void 0 ? void 0 : message.isRecordBatch()) {\n const header = message.header();\n const buffer = yield this._reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return recordBatch;\n }\n }\n return null;\n });\n }\n _readDictionaryBatch(index) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const block = (_a = this._footer) === null || _a === void 0 ? void 0 : _a.getDictionaryBatch(index);\n if (block && (yield this._handle.seek(block.offset))) {\n const message = yield this._reader.readMessage(MessageHeader.DictionaryBatch);\n if (message === null || message === void 0 ? void 0 : message.isDictionaryBatch()) {\n const header = message.header();\n const buffer = yield this._reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n });\n }\n _readFooter() {\n return __awaiter(this, void 0, void 0, function* () {\n const { _handle } = this;\n _handle._pending && (yield _handle._pending);\n const offset = _handle.size - magicAndPadding;\n const length = yield _handle.readInt32(offset);\n const buffer = yield _handle.readAt(offset - length, length);\n return Footer.decode(buffer);\n });\n }\n _readNextMessageAndValidate(type) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._footer) {\n yield this.open();\n }\n if (this._footer && this._recordBatchIndex < this.numRecordBatches) {\n const block = this._footer.getRecordBatch(this._recordBatchIndex);\n if (block && (yield this._handle.seek(block.offset))) {\n return yield this._reader.readMessage(type);\n }\n }\n return null;\n });\n }\n}\n/** @ignore */\nclass RecordBatchJSONReaderImpl extends RecordBatchStreamReaderImpl {\n constructor(source, dictionaries) {\n super(source, dictionaries);\n }\n _loadVectors(header, body, types) {\n return new JSONVectorLoader(body, header.nodes, header.buffers, this.dictionaries).visitMany(types);\n }\n}\n//\n// Define some helper functions and static implementations down here. There's\n// a bit of branching in the static methods that can lead to the same routines\n// being executed, so we've broken those out here for readability.\n//\n/** @ignore */\nfunction shouldAutoDestroy(self, options) {\n return options && (typeof options['autoDestroy'] === 'boolean') ? options['autoDestroy'] : self['autoDestroy'];\n}\n/** @ignore */\nfunction* readAllSync(source) {\n const reader = RecordBatchReader.from(source);\n try {\n if (!reader.open({ autoDestroy: false }).closed) {\n do {\n yield reader;\n } while (!(reader.reset().open()).closed);\n }\n }\n finally {\n reader.cancel();\n }\n}\n/** @ignore */\nfunction readAllAsync(source) {\n return __asyncGenerator(this, arguments, function* readAllAsync_1() {\n const reader = yield __await(RecordBatchReader.from(source));\n try {\n if (!(yield __await(reader.open({ autoDestroy: false }))).closed) {\n do {\n yield yield __await(reader);\n } while (!(yield __await(reader.reset().open())).closed);\n }\n }\n finally {\n yield __await(reader.cancel());\n }\n });\n}\n/** @ignore */\nfunction fromArrowJSON(source) {\n return new RecordBatchStreamReader(new RecordBatchJSONReaderImpl(source));\n}\n/** @ignore */\nfunction fromByteStream(source) {\n const bytes = source.peek((magicLength + 7) & ~7);\n return bytes && bytes.byteLength >= 4 ? !checkForMagicArrowString(bytes)\n ? new RecordBatchStreamReader(new RecordBatchStreamReaderImpl(source))\n : new RecordBatchFileReader(new RecordBatchFileReaderImpl(source.read()))\n : new RecordBatchStreamReader(new RecordBatchStreamReaderImpl(function* () { }()));\n}\n/** @ignore */\nfunction fromAsyncByteStream(source) {\n return __awaiter(this, void 0, void 0, function* () {\n const bytes = yield source.peek((magicLength + 7) & ~7);\n return bytes && bytes.byteLength >= 4 ? !checkForMagicArrowString(bytes)\n ? new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(source))\n : new RecordBatchFileReader(new RecordBatchFileReaderImpl(yield source.read()))\n : new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(function () { return __asyncGenerator(this, arguments, function* () { }); }()));\n });\n}\n/** @ignore */\nfunction fromFileHandle(source) {\n return __awaiter(this, void 0, void 0, function* () {\n const { size } = yield source.stat();\n const file = new AsyncRandomAccessFile(source, size);\n if (size >= magicX2AndPadding && checkForMagicArrowString(yield file.readAt(0, (magicLength + 7) & ~7))) {\n return new AsyncRecordBatchFileReader(new AsyncRecordBatchFileReaderImpl(file));\n }\n return new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(file));\n });\n}\n\n//# sourceMappingURL=reader.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector.mjs';\nimport { Visitor } from '../visitor.mjs';\nimport { UnionMode } from '../enum.mjs';\nimport { RecordBatch } from '../recordbatch.mjs';\nimport { rebaseValueOffsets } from '../util/buffer.mjs';\nimport { packBools, truncateBitmap } from '../util/bit.mjs';\nimport { BufferRegion, FieldNode } from '../ipc/metadata/message.mjs';\nimport { DataType, } from '../type.mjs';\n/** @ignore */\nexport class VectorAssembler extends Visitor {\n constructor() {\n super();\n this._byteLength = 0;\n this._nodes = [];\n this._buffers = [];\n this._bufferRegions = [];\n }\n /** @nocollapse */\n static assemble(...args) {\n const unwrap = (nodes) => nodes.flatMap((node) => Array.isArray(node) ? unwrap(node) :\n (node instanceof RecordBatch) ? node.data.children : node.data);\n const assembler = new VectorAssembler();\n assembler.visitMany(unwrap(args));\n return assembler;\n }\n visit(data) {\n if (data instanceof Vector) {\n this.visitMany(data.data);\n return this;\n }\n const { type } = data;\n if (!DataType.isDictionary(type)) {\n const { length, nullCount } = data;\n if (length > 2147483647) {\n /* istanbul ignore next */\n throw new RangeError('Cannot write arrays larger than 2^31 - 1 in length');\n }\n if (!DataType.isNull(type)) {\n addBuffer.call(this, nullCount <= 0\n ? new Uint8Array(0) // placeholder validity buffer\n : truncateBitmap(data.offset, length, data.nullBitmap));\n }\n this.nodes.push(new FieldNode(length, nullCount));\n }\n return super.visit(data);\n }\n visitNull(_null) {\n return this;\n }\n visitDictionary(data) {\n // Assemble the indices here, Dictionary assembled separately.\n return this.visit(data.clone(data.type.indices));\n }\n get nodes() { return this._nodes; }\n get buffers() { return this._buffers; }\n get byteLength() { return this._byteLength; }\n get bufferRegions() { return this._bufferRegions; }\n}\n/** @ignore */\nfunction addBuffer(values) {\n const byteLength = (values.byteLength + 7) & ~7; // Round up to a multiple of 8\n this.buffers.push(values);\n this.bufferRegions.push(new BufferRegion(this._byteLength, byteLength));\n this._byteLength += byteLength;\n return this;\n}\n/** @ignore */\nfunction assembleUnion(data) {\n const { type, length, typeIds, valueOffsets } = data;\n // All Union Vectors have a typeIds buffer\n addBuffer.call(this, typeIds);\n // If this is a Sparse Union, treat it like all other Nested types\n if (type.mode === UnionMode.Sparse) {\n return assembleNestedVector.call(this, data);\n }\n else if (type.mode === UnionMode.Dense) {\n // If this is a Dense Union, add the valueOffsets buffer and potentially slice the children\n if (data.offset <= 0) {\n // If the Vector hasn't been sliced, write the existing valueOffsets\n addBuffer.call(this, valueOffsets);\n // We can treat this like all other Nested types\n return assembleNestedVector.call(this, data);\n }\n else {\n // A sliced Dense Union is an unpleasant case. Because the offsets are different for\n // each child vector, we need to \"rebase\" the valueOffsets for each child\n // Union typeIds are not necessary 0-indexed\n const maxChildTypeId = typeIds.reduce((x, y) => Math.max(x, y), typeIds[0]);\n const childLengths = new Int32Array(maxChildTypeId + 1);\n // Set all to -1 to indicate that we haven't observed a first occurrence of a particular child yet\n const childOffsets = new Int32Array(maxChildTypeId + 1).fill(-1);\n const shiftedOffsets = new Int32Array(length);\n // If we have a non-zero offset, then the value offsets do not start at\n // zero. We must a) create a new offsets array with shifted offsets and\n // b) slice the values array accordingly\n const unshiftedOffsets = rebaseValueOffsets(-valueOffsets[0], length, valueOffsets);\n for (let typeId, shift, index = -1; ++index < length;) {\n if ((shift = childOffsets[typeId = typeIds[index]]) === -1) {\n shift = childOffsets[typeId] = unshiftedOffsets[typeId];\n }\n shiftedOffsets[index] = unshiftedOffsets[index] - shift;\n ++childLengths[typeId];\n }\n addBuffer.call(this, shiftedOffsets);\n // Slice and visit children accordingly\n for (let child, childIndex = -1, numChildren = type.children.length; ++childIndex < numChildren;) {\n if (child = data.children[childIndex]) {\n const typeId = type.typeIds[childIndex];\n const childLength = Math.min(length, childLengths[typeId]);\n this.visit(child.slice(childOffsets[typeId], childLength));\n }\n }\n }\n }\n return this;\n}\n/** @ignore */\nfunction assembleBoolVector(data) {\n // Bool vector is a special case of FlatVector, as its data buffer needs to stay packed\n let values;\n if (data.nullCount >= data.length) {\n // If all values are null, just insert a placeholder empty data buffer (fastest path)\n return addBuffer.call(this, new Uint8Array(0));\n }\n else if ((values = data.values) instanceof Uint8Array) {\n // If values is already a Uint8Array, slice the bitmap (fast path)\n return addBuffer.call(this, truncateBitmap(data.offset, data.length, values));\n }\n // Otherwise if the underlying data *isn't* a Uint8Array, enumerate the\n // values as bools and re-pack them into a Uint8Array. This code isn't\n // reachable unless you're trying to manipulate the Data internals,\n // we're only doing this for safety.\n /* istanbul ignore next */\n return addBuffer.call(this, packBools(data.values));\n}\n/** @ignore */\nfunction assembleFlatVector(data) {\n return addBuffer.call(this, data.values.subarray(0, data.length * data.stride));\n}\n/** @ignore */\nfunction assembleFlatListVector(data) {\n const { length, values, valueOffsets } = data;\n const firstOffset = valueOffsets[0];\n const lastOffset = valueOffsets[length];\n const byteLength = Math.min(lastOffset - firstOffset, values.byteLength - firstOffset);\n // Push in the order FlatList types read their buffers\n addBuffer.call(this, rebaseValueOffsets(-valueOffsets[0], length, valueOffsets)); // valueOffsets buffer first\n addBuffer.call(this, values.subarray(firstOffset, firstOffset + byteLength)); // sliced values buffer second\n return this;\n}\n/** @ignore */\nfunction assembleListVector(data) {\n const { length, valueOffsets } = data;\n // If we have valueOffsets (MapVector, ListVector), push that buffer first\n if (valueOffsets) {\n addBuffer.call(this, rebaseValueOffsets(valueOffsets[0], length, valueOffsets));\n }\n // Then insert the List's values child\n return this.visit(data.children[0]);\n}\n/** @ignore */\nfunction assembleNestedVector(data) {\n return this.visitMany(data.type.children.map((_, i) => data.children[i]).filter(Boolean))[0];\n}\nVectorAssembler.prototype.visitBool = assembleBoolVector;\nVectorAssembler.prototype.visitInt = assembleFlatVector;\nVectorAssembler.prototype.visitFloat = assembleFlatVector;\nVectorAssembler.prototype.visitUtf8 = assembleFlatListVector;\nVectorAssembler.prototype.visitBinary = assembleFlatListVector;\nVectorAssembler.prototype.visitFixedSizeBinary = assembleFlatVector;\nVectorAssembler.prototype.visitDate = assembleFlatVector;\nVectorAssembler.prototype.visitTimestamp = assembleFlatVector;\nVectorAssembler.prototype.visitTime = assembleFlatVector;\nVectorAssembler.prototype.visitDecimal = assembleFlatVector;\nVectorAssembler.prototype.visitList = assembleListVector;\nVectorAssembler.prototype.visitStruct = assembleNestedVector;\nVectorAssembler.prototype.visitUnion = assembleUnion;\nVectorAssembler.prototype.visitInterval = assembleFlatVector;\nVectorAssembler.prototype.visitFixedSizeList = assembleListVector;\nVectorAssembler.prototype.visitMap = assembleListVector;\n\n//# sourceMappingURL=vectorassembler.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { __asyncValues, __awaiter } from \"tslib\";\nimport { Table } from '../table.mjs';\nimport { MAGIC } from './message.mjs';\nimport { Vector } from '../vector.mjs';\nimport { DataType } from '../type.mjs';\nimport { Message } from './metadata/message.mjs';\nimport * as metadata from './metadata/message.mjs';\nimport { FileBlock, Footer } from './metadata/file.mjs';\nimport { MessageHeader, MetadataVersion } from '../enum.mjs';\nimport { compareSchemas } from '../visitor/typecomparator.mjs';\nimport { AsyncByteQueue } from '../io/stream.mjs';\nimport { VectorAssembler } from '../visitor/vectorassembler.mjs';\nimport { JSONTypeAssembler } from '../visitor/jsontypeassembler.mjs';\nimport { JSONVectorAssembler } from '../visitor/jsonvectorassembler.mjs';\nimport { toUint8Array } from '../util/buffer.mjs';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from '../recordbatch.mjs';\nimport { ReadableInterop } from '../io/interfaces.mjs';\nimport { isPromise, isAsyncIterable, isWritableDOMStream, isWritableNodeStream, isIterable, isObject } from '../util/compat.mjs';\nexport class RecordBatchWriter extends ReadableInterop {\n constructor(options) {\n super();\n this._position = 0;\n this._started = false;\n // @ts-ignore\n this._sink = new AsyncByteQueue();\n this._schema = null;\n this._dictionaryBlocks = [];\n this._recordBatchBlocks = [];\n this._dictionaryDeltaOffsets = new Map();\n isObject(options) || (options = { autoDestroy: true, writeLegacyIpcFormat: false });\n this._autoDestroy = (typeof options.autoDestroy === 'boolean') ? options.autoDestroy : true;\n this._writeLegacyIpcFormat = (typeof options.writeLegacyIpcFormat === 'boolean') ? options.writeLegacyIpcFormat : false;\n }\n /** @nocollapse */\n // @ts-ignore\n static throughNode(options) {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n static throughDOM(\n // @ts-ignore\n writableStrategy, \n // @ts-ignore\n readableStrategy) {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n toString(sync = false) {\n return this._sink.toString(sync);\n }\n toUint8Array(sync = false) {\n return this._sink.toUint8Array(sync);\n }\n writeAll(input) {\n if (isPromise(input)) {\n return input.then((x) => this.writeAll(x));\n }\n else if (isAsyncIterable(input)) {\n return writeAllAsync(this, input);\n }\n return writeAll(this, input);\n }\n get closed() { return this._sink.closed; }\n [Symbol.asyncIterator]() { return this._sink[Symbol.asyncIterator](); }\n toDOMStream(options) { return this._sink.toDOMStream(options); }\n toNodeStream(options) { return this._sink.toNodeStream(options); }\n close() {\n return this.reset()._sink.close();\n }\n abort(reason) {\n return this.reset()._sink.abort(reason);\n }\n finish() {\n this._autoDestroy ? this.close() : this.reset(this._sink, this._schema);\n return this;\n }\n reset(sink = this._sink, schema = null) {\n if ((sink === this._sink) || (sink instanceof AsyncByteQueue)) {\n this._sink = sink;\n }\n else {\n this._sink = new AsyncByteQueue();\n if (sink && isWritableDOMStream(sink)) {\n this.toDOMStream({ type: 'bytes' }).pipeTo(sink);\n }\n else if (sink && isWritableNodeStream(sink)) {\n this.toNodeStream({ objectMode: false }).pipe(sink);\n }\n }\n if (this._started && this._schema) {\n this._writeFooter(this._schema);\n }\n this._started = false;\n this._dictionaryBlocks = [];\n this._recordBatchBlocks = [];\n this._dictionaryDeltaOffsets = new Map();\n if (!schema || !(compareSchemas(schema, this._schema))) {\n if (schema == null) {\n this._position = 0;\n this._schema = null;\n }\n else {\n this._started = true;\n this._schema = schema;\n this._writeSchema(schema);\n }\n }\n return this;\n }\n write(payload) {\n let schema = null;\n if (!this._sink) {\n throw new Error(`RecordBatchWriter is closed`);\n }\n else if (payload == null) {\n return this.finish() && undefined;\n }\n else if (payload instanceof Table && !(schema = payload.schema)) {\n return this.finish() && undefined;\n }\n else if (payload instanceof RecordBatch && !(schema = payload.schema)) {\n return this.finish() && undefined;\n }\n if (schema && !compareSchemas(schema, this._schema)) {\n if (this._started && this._autoDestroy) {\n return this.close();\n }\n this.reset(this._sink, schema);\n }\n if (payload instanceof RecordBatch) {\n if (!(payload instanceof _InternalEmptyPlaceholderRecordBatch)) {\n this._writeRecordBatch(payload);\n }\n }\n else if (payload instanceof Table) {\n this.writeAll(payload.batches);\n }\n else if (isIterable(payload)) {\n this.writeAll(payload);\n }\n }\n _writeMessage(message, alignment = 8) {\n const a = alignment - 1;\n const buffer = Message.encode(message);\n const flatbufferSize = buffer.byteLength;\n const prefixSize = !this._writeLegacyIpcFormat ? 8 : 4;\n const alignedSize = (flatbufferSize + prefixSize + a) & ~a;\n const nPaddingBytes = alignedSize - flatbufferSize - prefixSize;\n if (message.headerType === MessageHeader.RecordBatch) {\n this._recordBatchBlocks.push(new FileBlock(alignedSize, message.bodyLength, this._position));\n }\n else if (message.headerType === MessageHeader.DictionaryBatch) {\n this._dictionaryBlocks.push(new FileBlock(alignedSize, message.bodyLength, this._position));\n }\n // If not in legacy pre-0.15.0 mode, write the stream continuation indicator\n if (!this._writeLegacyIpcFormat) {\n this._write(Int32Array.of(-1));\n }\n // Write the flatbuffer size prefix including padding\n this._write(Int32Array.of(alignedSize - prefixSize));\n // Write the flatbuffer\n if (flatbufferSize > 0) {\n this._write(buffer);\n }\n // Write any padding\n return this._writePadding(nPaddingBytes);\n }\n _write(chunk) {\n if (this._started) {\n const buffer = toUint8Array(chunk);\n if (buffer && buffer.byteLength > 0) {\n this._sink.write(buffer);\n this._position += buffer.byteLength;\n }\n }\n return this;\n }\n _writeSchema(schema) {\n return this._writeMessage(Message.from(schema));\n }\n // @ts-ignore\n _writeFooter(schema) {\n // eos bytes\n return this._writeLegacyIpcFormat\n ? this._write(Int32Array.of(0))\n : this._write(Int32Array.of(-1, 0));\n }\n _writeMagic() {\n return this._write(MAGIC);\n }\n _writePadding(nBytes) {\n return nBytes > 0 ? this._write(new Uint8Array(nBytes)) : this;\n }\n _writeRecordBatch(batch) {\n const { byteLength, nodes, bufferRegions, buffers } = VectorAssembler.assemble(batch);\n const recordBatch = new metadata.RecordBatch(batch.numRows, nodes, bufferRegions);\n const message = Message.from(recordBatch, byteLength);\n return this\n ._writeDictionaries(batch)\n ._writeMessage(message)\n ._writeBodyBuffers(buffers);\n }\n _writeDictionaryBatch(dictionary, id, isDelta = false) {\n this._dictionaryDeltaOffsets.set(id, dictionary.length + (this._dictionaryDeltaOffsets.get(id) || 0));\n const { byteLength, nodes, bufferRegions, buffers } = VectorAssembler.assemble(new Vector([dictionary]));\n const recordBatch = new metadata.RecordBatch(dictionary.length, nodes, bufferRegions);\n const dictionaryBatch = new metadata.DictionaryBatch(recordBatch, id, isDelta);\n const message = Message.from(dictionaryBatch, byteLength);\n return this\n ._writeMessage(message)\n ._writeBodyBuffers(buffers);\n }\n _writeBodyBuffers(buffers) {\n let buffer;\n let size, padding;\n for (let i = -1, n = buffers.length; ++i < n;) {\n if ((buffer = buffers[i]) && (size = buffer.byteLength) > 0) {\n this._write(buffer);\n if ((padding = ((size + 7) & ~7) - size) > 0) {\n this._writePadding(padding);\n }\n }\n }\n return this;\n }\n _writeDictionaries(batch) {\n for (let [id, dictionary] of batch.dictionaries) {\n let offset = this._dictionaryDeltaOffsets.get(id) || 0;\n if (offset === 0 || (dictionary = dictionary === null || dictionary === void 0 ? void 0 : dictionary.slice(offset)).length > 0) {\n for (const data of dictionary.data) {\n this._writeDictionaryBatch(data, id, offset > 0);\n offset += data.length;\n }\n }\n }\n return this;\n }\n}\n/** @ignore */\nexport class RecordBatchStreamWriter extends RecordBatchWriter {\n /** @nocollapse */\n static writeAll(input, options) {\n const writer = new RecordBatchStreamWriter(options);\n if (isPromise(input)) {\n return input.then((x) => writer.writeAll(x));\n }\n else if (isAsyncIterable(input)) {\n return writeAllAsync(writer, input);\n }\n return writeAll(writer, input);\n }\n}\n/** @ignore */\nexport class RecordBatchFileWriter extends RecordBatchWriter {\n /** @nocollapse */\n static writeAll(input) {\n const writer = new RecordBatchFileWriter();\n if (isPromise(input)) {\n return input.then((x) => writer.writeAll(x));\n }\n else if (isAsyncIterable(input)) {\n return writeAllAsync(writer, input);\n }\n return writeAll(writer, input);\n }\n constructor() {\n super();\n this._autoDestroy = true;\n }\n // @ts-ignore\n _writeSchema(schema) {\n return this._writeMagic()._writePadding(2);\n }\n _writeFooter(schema) {\n const buffer = Footer.encode(new Footer(schema, MetadataVersion.V4, this._recordBatchBlocks, this._dictionaryBlocks));\n return super\n ._writeFooter(schema) // EOS bytes for sequential readers\n ._write(buffer) // Write the flatbuffer\n ._write(Int32Array.of(buffer.byteLength)) // then the footer size suffix\n ._writeMagic(); // then the magic suffix\n }\n}\n/** @ignore */\nexport class RecordBatchJSONWriter extends RecordBatchWriter {\n constructor() {\n super();\n this._autoDestroy = true;\n this._recordBatches = [];\n this._dictionaries = [];\n }\n /** @nocollapse */\n static writeAll(input) {\n return new RecordBatchJSONWriter().writeAll(input);\n }\n _writeMessage() { return this; }\n // @ts-ignore\n _writeFooter(schema) { return this; }\n _writeSchema(schema) {\n return this._write(`{\\n \"schema\": ${JSON.stringify({ fields: schema.fields.map(field => fieldToJSON(field)) }, null, 2)}`);\n }\n _writeDictionaries(batch) {\n if (batch.dictionaries.size > 0) {\n this._dictionaries.push(batch);\n }\n return this;\n }\n _writeDictionaryBatch(dictionary, id, isDelta = false) {\n this._dictionaryDeltaOffsets.set(id, dictionary.length + (this._dictionaryDeltaOffsets.get(id) || 0));\n this._write(this._dictionaryBlocks.length === 0 ? ` ` : `,\\n `);\n this._write(`${dictionaryBatchToJSON(dictionary, id, isDelta)}`);\n this._dictionaryBlocks.push(new FileBlock(0, 0, 0));\n return this;\n }\n _writeRecordBatch(batch) {\n this._writeDictionaries(batch);\n this._recordBatches.push(batch);\n return this;\n }\n close() {\n if (this._dictionaries.length > 0) {\n this._write(`,\\n \"dictionaries\": [\\n`);\n for (const batch of this._dictionaries) {\n super._writeDictionaries(batch);\n }\n this._write(`\\n ]`);\n }\n if (this._recordBatches.length > 0) {\n for (let i = -1, n = this._recordBatches.length; ++i < n;) {\n this._write(i === 0 ? `,\\n \"batches\": [\\n ` : `,\\n `);\n this._write(`${recordBatchToJSON(this._recordBatches[i])}`);\n this._recordBatchBlocks.push(new FileBlock(0, 0, 0));\n }\n this._write(`\\n ]`);\n }\n if (this._schema) {\n this._write(`\\n}`);\n }\n this._dictionaries = [];\n this._recordBatches = [];\n return super.close();\n }\n}\n/** @ignore */\nfunction writeAll(writer, input) {\n let chunks = input;\n if (input instanceof Table) {\n chunks = input.batches;\n writer.reset(undefined, input.schema);\n }\n for (const batch of chunks) {\n writer.write(batch);\n }\n return writer.finish();\n}\n/** @ignore */\nfunction writeAllAsync(writer, batches) {\n var batches_1, batches_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (batches_1 = __asyncValues(batches); batches_1_1 = yield batches_1.next(), !batches_1_1.done;) {\n const batch = batches_1_1.value;\n writer.write(batch);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (batches_1_1 && !batches_1_1.done && (_a = batches_1.return)) yield _a.call(batches_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return writer.finish();\n });\n}\n/** @ignore */\nfunction fieldToJSON({ name, type, nullable }) {\n const assembler = new JSONTypeAssembler();\n return {\n 'name': name, 'nullable': nullable,\n 'type': assembler.visit(type),\n 'children': (type.children || []).map((field) => fieldToJSON(field)),\n 'dictionary': !DataType.isDictionary(type) ? undefined : {\n 'id': type.id,\n 'isOrdered': type.isOrdered,\n 'indexType': assembler.visit(type.indices)\n }\n };\n}\n/** @ignore */\nfunction dictionaryBatchToJSON(dictionary, id, isDelta = false) {\n const [columns] = JSONVectorAssembler.assemble(new RecordBatch({ [id]: dictionary }));\n return JSON.stringify({\n 'id': id,\n 'isDelta': isDelta,\n 'data': {\n 'count': dictionary.length,\n 'columns': columns\n }\n }, null, 2);\n}\n/** @ignore */\nfunction recordBatchToJSON(records) {\n const [columns] = JSONVectorAssembler.assemble(records);\n return JSON.stringify({\n 'count': records.numRows,\n 'columns': columns\n }, null, 2);\n}\n\n//# sourceMappingURL=writer.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Table } from '../table.mjs';\nimport { isPromise } from '../util/compat.mjs';\nimport { RecordBatchReader } from './reader.mjs';\nimport { RecordBatchFileWriter, RecordBatchStreamWriter } from './writer.mjs';\nexport function tableFromIPC(input) {\n const reader = RecordBatchReader.from(input);\n if (isPromise(reader)) {\n return reader.then((reader) => tableFromIPC(reader));\n }\n if (reader.isAsync()) {\n return reader.readAll().then((xs) => new Table(xs));\n }\n return new Table(reader.readAll());\n}\n/**\n * Serialize a {@link Table} to the IPC format. This function is a convenience\n * wrapper for {@link RecordBatchStreamWriter} and {@link RecordBatchFileWriter}.\n * Opposite of {@link tableFromIPC}.\n *\n * @param table The Table to serialize.\n * @param type Whether to serialize the Table as a file or a stream.\n */\nexport function tableToIPC(table, type = 'stream') {\n return (type === 'stream' ? RecordBatchStreamWriter : RecordBatchFileWriter)\n .writeAll(table)\n .toUint8Array(true);\n}\n\n//# sourceMappingURL=serialization.mjs.map\n","/**\n * Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { tableToIPC, tableFromIPC, Type } from \"apache-arrow\";\nvar ArrowTable = /** @class */ (function () {\n function ArrowTable(dataBuffer, indexBuffer, columnsBuffer, styler) {\n var _this = this;\n this.getCell = function (rowIndex, columnIndex) {\n var isBlankCell = rowIndex < _this.headerRows && columnIndex < _this.headerColumns;\n var isIndexCell = rowIndex >= _this.headerRows && columnIndex < _this.headerColumns;\n var isColumnsCell = rowIndex < _this.headerRows && columnIndex >= _this.headerColumns;\n if (isBlankCell) {\n var classNames = [\"blank\"];\n if (columnIndex > 0) {\n classNames.push(\"level\" + rowIndex);\n }\n return {\n type: \"blank\",\n classNames: classNames.join(\" \"),\n content: \"\"\n };\n }\n else if (isColumnsCell) {\n var dataColumnIndex = columnIndex - _this.headerColumns;\n var classNames = [\n \"col_heading\",\n \"level\" + rowIndex,\n \"col\" + dataColumnIndex\n ];\n return {\n type: \"columns\",\n classNames: classNames.join(\" \"),\n content: _this.getContent(_this.columnsTable, dataColumnIndex, rowIndex)\n };\n }\n else if (isIndexCell) {\n var dataRowIndex = rowIndex - _this.headerRows;\n var classNames = [\n \"row_heading\",\n \"level\" + columnIndex,\n \"row\" + dataRowIndex\n ];\n return {\n type: \"index\",\n id: \"T_\".concat(_this.uuid, \"level\").concat(columnIndex, \"_row\").concat(dataRowIndex),\n classNames: classNames.join(\" \"),\n content: _this.getContent(_this.indexTable, dataRowIndex, columnIndex)\n };\n }\n else {\n var dataRowIndex = rowIndex - _this.headerRows;\n var dataColumnIndex = columnIndex - _this.headerColumns;\n var classNames = [\n \"data\",\n \"row\" + dataRowIndex,\n \"col\" + dataColumnIndex\n ];\n var content = _this.styler\n ? _this.getContent(_this.styler.displayValuesTable, dataRowIndex, dataColumnIndex)\n : _this.getContent(_this.dataTable, dataRowIndex, dataColumnIndex);\n return {\n type: \"data\",\n id: \"T_\".concat(_this.uuid, \"row\").concat(dataRowIndex, \"_col\").concat(dataColumnIndex),\n classNames: classNames.join(\" \"),\n content: content\n };\n }\n };\n this.getContent = function (table, rowIndex, columnIndex) {\n var column = table.getChildAt(columnIndex);\n if (column === null) {\n return \"\";\n }\n var columnTypeId = _this.getColumnTypeId(table, columnIndex);\n switch (columnTypeId) {\n case Type.Timestamp: {\n return _this.nanosToDate(column.get(rowIndex));\n }\n default: {\n return column.get(rowIndex);\n }\n }\n };\n this.dataTable = tableFromIPC(dataBuffer);\n this.indexTable = tableFromIPC(indexBuffer);\n this.columnsTable = tableFromIPC(columnsBuffer);\n this.styler = styler\n ? {\n caption: styler.caption,\n displayValuesTable: tableFromIPC(styler.displayValues),\n styles: styler.styles,\n uuid: styler.uuid\n }\n : undefined;\n }\n Object.defineProperty(ArrowTable.prototype, \"rows\", {\n get: function () {\n return this.indexTable.numRows + this.columnsTable.numCols;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"columns\", {\n get: function () {\n return this.indexTable.numCols + this.columnsTable.numRows;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"headerRows\", {\n get: function () {\n return this.rows - this.dataRows;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"headerColumns\", {\n get: function () {\n return this.columns - this.dataColumns;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"dataRows\", {\n get: function () {\n return this.dataTable.numRows;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"dataColumns\", {\n get: function () {\n return this.dataTable.numCols;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"uuid\", {\n get: function () {\n return this.styler && this.styler.uuid;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"caption\", {\n get: function () {\n return this.styler && this.styler.caption;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"styles\", {\n get: function () {\n return this.styler && this.styler.styles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"table\", {\n get: function () {\n return this.dataTable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"index\", {\n get: function () {\n return this.indexTable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ArrowTable.prototype, \"columnTable\", {\n get: function () {\n return this.columnsTable;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Serialize arrow table.\n */\n ArrowTable.prototype.serialize = function () {\n return {\n data: tableToIPC(this.dataTable),\n index: tableToIPC(this.indexTable),\n columns: tableToIPC(this.columnsTable)\n };\n };\n /**\n * Returns apache-arrow specific typeId of column.\n */\n ArrowTable.prototype.getColumnTypeId = function (table, columnIndex) {\n return table.schema.fields[columnIndex].type.typeId;\n };\n ArrowTable.prototype.nanosToDate = function (nanos) {\n return new Date(nanos / 1e6);\n };\n return ArrowTable;\n}());\nexport { ArrowTable };\n","/**\n * Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Safari doesn't support the EventTarget class, so we use a shim.\nimport { ArrowTable } from \"./ArrowTable\";\n/** Messages from Component -> Streamlit */\nvar ComponentMessageType;\n(function (ComponentMessageType) {\n // A component sends this message when it's ready to receive messages\n // from Streamlit. Streamlit won't send any messages until it gets this.\n // Data: { apiVersion: number }\n ComponentMessageType[\"COMPONENT_READY\"] = \"streamlit:componentReady\";\n // The component has a new widget value. Send it back to Streamlit, which\n // will then re-run the app.\n // Data: { value: any }\n ComponentMessageType[\"SET_COMPONENT_VALUE\"] = \"streamlit:setComponentValue\";\n // The component has a new height for its iframe.\n // Data: { height: number }\n ComponentMessageType[\"SET_FRAME_HEIGHT\"] = \"streamlit:setFrameHeight\";\n})(ComponentMessageType || (ComponentMessageType = {}));\n/**\n * Streamlit communication API.\n *\n * Components can send data to Streamlit via the functions defined here,\n * and receive data from Streamlit via the `events` property.\n */\nexport var Streamlit = /** @class */ (function () {\n function Streamlit() {\n }\n /**\n * The Streamlit component API version we're targeting.\n * There's currently only 1!\n */\n Streamlit.API_VERSION = 1;\n Streamlit.RENDER_EVENT = \"streamlit:render\";\n /** Dispatches events received from Streamlit. */\n Streamlit.events = new EventTarget();\n Streamlit.registeredMessageListener = false;\n /**\n * Tell Streamlit that the component is ready to start receiving data.\n * Streamlit will defer emitting RENDER events until it receives the\n * COMPONENT_READY message.\n */\n Streamlit.setComponentReady = function () {\n if (!Streamlit.registeredMessageListener) {\n // Register for message events if we haven't already\n window.addEventListener(\"message\", Streamlit.onMessageEvent);\n Streamlit.registeredMessageListener = true;\n }\n Streamlit.sendBackMsg(ComponentMessageType.COMPONENT_READY, {\n apiVersion: Streamlit.API_VERSION\n });\n };\n /**\n * Report the component's height to Streamlit.\n * This should be called every time the component changes its DOM - that is,\n * when it's first loaded, and any time it updates.\n */\n Streamlit.setFrameHeight = function (height) {\n if (height === undefined) {\n // `height` is optional. If undefined, it defaults to scrollHeight,\n // which is the entire height of the element minus its border,\n // scrollbar, and margin.\n height = document.body.scrollHeight;\n }\n if (height === Streamlit.lastFrameHeight) {\n // Don't bother updating if our height hasn't changed.\n return;\n }\n Streamlit.lastFrameHeight = height;\n Streamlit.sendBackMsg(ComponentMessageType.SET_FRAME_HEIGHT, { height: height });\n };\n /**\n * Set the component's value. This value will be returned to the Python\n * script, and the script will be re-run.\n *\n * For example:\n *\n * JavaScript:\n * Streamlit.setComponentValue(\"ahoy!\")\n *\n * Python:\n * value = st.my_component(...)\n * st.write(value) # -> \"ahoy!\"\n *\n * The value must be an ArrowTable, a typed array, an ArrayBuffer, or be\n * serializable to JSON.\n */\n Streamlit.setComponentValue = function (value) {\n var dataType;\n if (value instanceof ArrowTable) {\n dataType = \"dataframe\";\n value = value.serialize();\n }\n else if (isTypedArray(value)) {\n // All typed arrays get sent as Uint8Array, because that's what our\n // protobuf library uses for the \"bytes\" field type.\n dataType = \"bytes\";\n value = new Uint8Array(value.buffer);\n }\n else if (value instanceof ArrayBuffer) {\n dataType = \"bytes\";\n value = new Uint8Array(value);\n }\n else {\n dataType = \"json\";\n }\n Streamlit.sendBackMsg(ComponentMessageType.SET_COMPONENT_VALUE, {\n value: value,\n dataType: dataType\n });\n };\n /** Receive a ForwardMsg from the Streamlit app */\n Streamlit.onMessageEvent = function (event) {\n var type = event.data[\"type\"];\n switch (type) {\n case Streamlit.RENDER_EVENT:\n Streamlit.onRenderMessage(event.data);\n break;\n }\n };\n /**\n * Handle an untyped Streamlit render event and redispatch it as a\n * StreamlitRenderEvent.\n */\n Streamlit.onRenderMessage = function (data) {\n var args = data[\"args\"];\n if (args == null) {\n console.error(\"Got null args in onRenderMessage. This should never happen\");\n args = {};\n }\n // Parse our dataframe arguments with arrow, and merge them into our args dict\n var dataframeArgs = data[\"dfs\"] && data[\"dfs\"].length > 0\n ? Streamlit.argsDataframeToObject(data[\"dfs\"])\n : {};\n args = __assign(__assign({}, args), dataframeArgs);\n var disabled = Boolean(data[\"disabled\"]);\n var theme = data[\"theme\"];\n if (theme) {\n _injectTheme(theme);\n }\n // Dispatch a render event!\n var eventData = { disabled: disabled, args: args, theme: theme };\n var event = new CustomEvent(Streamlit.RENDER_EVENT, {\n detail: eventData\n });\n Streamlit.events.dispatchEvent(event);\n };\n Streamlit.argsDataframeToObject = function (argsDataframe) {\n var argsDataframeArrow = argsDataframe.map(function (_a) {\n var key = _a.key, value = _a.value;\n return [key, Streamlit.toArrowTable(value)];\n });\n return Object.fromEntries(argsDataframeArrow);\n };\n Streamlit.toArrowTable = function (df) {\n var _a;\n var data = (_a = df.data, _a.data), index = _a.index, columns = _a.columns, styler = _a.styler;\n return new ArrowTable(data, index, columns, styler);\n };\n /** Post a message to the Streamlit app. */\n Streamlit.sendBackMsg = function (type, data) {\n window.parent.postMessage(__assign({ isStreamlitMessage: true, type: type }, data), \"*\");\n };\n return Streamlit;\n}());\nvar _injectTheme = function (theme) {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n style.innerHTML = \"\\n :root {\\n --primary-color: \".concat(theme.primaryColor, \";\\n --background-color: \").concat(theme.backgroundColor, \";\\n --secondary-background-color: \").concat(theme.secondaryBackgroundColor, \";\\n --text-color: \").concat(theme.textColor, \";\\n --font: \").concat(theme.font, \";\\n }\\n\\n body {\\n background-color: var(--background-color);\\n color: var(--text-color);\\n }\\n \");\n};\n/** True if the value is a TypedArray. */\nfunction isTypedArray(value) {\n var isBigIntArray = false;\n try {\n isBigIntArray =\n value instanceof BigInt64Array || value instanceof BigUint64Array;\n }\n catch (e) {\n // Ignore cause Safari does not support this\n // https://caniuse.com/mdn-javascript_builtins_bigint64array\n }\n return (value instanceof Int8Array ||\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Int16Array ||\n value instanceof Uint16Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n isBigIntArray);\n}\n","/**\n * Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport hoistNonReactStatics from \"hoist-non-react-statics\";\nimport React from \"react\";\nimport { Streamlit } from \"./streamlit\";\n/**\n * Optional Streamlit React-based component base class.\n *\n * You are not required to extend this base class to create a Streamlit\n * component. If you decide not to extend it, you should implement the\n * `componentDidMount` and `componentDidUpdate` functions in your own class,\n * so that your plugin properly resizes.\n */\nvar StreamlitComponentBase = /** @class */ (function (_super) {\n __extends(StreamlitComponentBase, _super);\n function StreamlitComponentBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StreamlitComponentBase.prototype.componentDidMount = function () {\n // After we're rendered for the first time, tell Streamlit that our height\n // has changed.\n Streamlit.setFrameHeight();\n };\n StreamlitComponentBase.prototype.componentDidUpdate = function () {\n // After we're updated, tell Streamlit that our height may have changed.\n Streamlit.setFrameHeight();\n };\n return StreamlitComponentBase;\n}(React.PureComponent));\nexport { StreamlitComponentBase };\n/**\n * Wrapper for React-based Streamlit components.\n *\n * Bootstraps the communication interface between Streamlit and the component.\n */\nexport function withStreamlitConnection(WrappedComponent) {\n var ComponentWrapper = /** @class */ (function (_super) {\n __extends(ComponentWrapper, _super);\n function ComponentWrapper(props) {\n var _this = _super.call(this, props) || this;\n _this.componentDidMount = function () {\n // Set up event listeners, and signal to Streamlit that we're ready.\n // We won't render the component until we receive the first RENDER_EVENT.\n Streamlit.events.addEventListener(Streamlit.RENDER_EVENT, _this.onRenderEvent);\n Streamlit.setComponentReady();\n };\n _this.componentDidUpdate = function () {\n // If our child threw an error, we display it in render(). In this\n // case, the child won't be mounted and therefore won't call\n // `setFrameHeight` on its own. We do it here so that the rendered\n // error will be visible.\n if (_this.state.componentError != null) {\n Streamlit.setFrameHeight();\n }\n };\n _this.componentWillUnmount = function () {\n Streamlit.events.removeEventListener(Streamlit.RENDER_EVENT, _this.onRenderEvent);\n };\n /**\n * Streamlit is telling this component to redraw.\n * We save the render data in State, so that it can be passed to the\n * component in our own render() function.\n */\n _this.onRenderEvent = function (event) {\n // Update our state with the newest render data\n _this.setState({ renderData: event.detail });\n };\n _this.state = {\n renderData: undefined,\n componentError: undefined\n };\n return _this;\n }\n ComponentWrapper.prototype.render = function () {\n // If our wrapped component threw an error, display it.\n if (this.state.componentError != null) {\n return (React.createElement(\"div\", null,\n React.createElement(\"h1\", null, \"Component Error\"),\n React.createElement(\"span\", null, this.state.componentError.message)));\n }\n // Don't render until we've gotten our first RENDER_EVENT from Streamlit.\n if (this.state.renderData == null) {\n return null;\n }\n return (React.createElement(WrappedComponent, { width: window.innerWidth, disabled: this.state.renderData.disabled, args: this.state.renderData.args, theme: this.state.renderData.theme }));\n };\n /**\n * Error boundary function. This will be called if our wrapped\n * component throws an error. We store the caught error in our state,\n * and display it in the next render().\n */\n ComponentWrapper.getDerivedStateFromError = function (error) {\n return { componentError: error };\n };\n return ComponentWrapper;\n }(React.PureComponent));\n return hoistNonReactStatics(ComponentWrapper, WrappedComponent);\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { RxDBCollectionService } from '@ngx-odm/rxdb/collection';\nimport { NgxRxdbUtils, type Entity } from '@ngx-odm/rxdb/utils';\nimport equal from 'fast-deep-equal';\nimport { useEffect, useRef, useState } from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error\nimport { v4 as uuid } from 'uuid';\nimport { DataframeEditingState } from './RxDBDataframeArgs';\n\nconst { logger, isEmpty } = NgxRxdbUtils;\n\n/**\n * Custom hook that manages the editing state of a Dataframe.\n * @param editingState - The editing state of the Dataframe.\n * @param collectionService - The service used to interact with the RxDB collection.\n * @returns A tuple containing the entities and a function to set the entities.\n */\nexport const useEditedState = (\n editingState: DataframeEditingState,\n collectionService: RxDBCollectionService\n): [Entity[] | undefined, React.Dispatch>] => {\n const [entities, setEntities] = useState();\n const editingStateRef = useRef(editingState);\n\n useEffect(() => {\n if (\n !entities ||\n isEmpty(editingState) ||\n equal(editingState, editingStateRef.current)\n ) {\n return;\n }\n editingStateRef.current = editingState;\n\n const { added_rows: added, edited_rows: edited, deleted_rows: deleted } = editingState;\n\n if (!isEmpty(added)) {\n const docs = added.map(item => ({\n ...item,\n id: uuid(),\n createdAt: new Date().toISOString(),\n last_modified: Date.now(),\n }));\n if (!docs.length) return;\n collectionService.upsertBulk(docs).catch(error => logger.log('upsertBulk', error));\n }\n\n if (!isEmpty(deleted)) {\n const ids: string[] = [];\n deleted.forEach(rowIndex => {\n const entity = entities.at(rowIndex);\n if (entity) {\n ids.push(entity.id);\n }\n });\n if (!ids.length) return;\n collectionService.removeBulk(ids).catch(error => logger.log('removeBulk', error));\n }\n\n if (!isEmpty(edited)) {\n const docs = Object.entries(edited).map(([rowIndex, change]) => {\n const entity = entities.at(+rowIndex);\n return {\n ...entity,\n ...change,\n last_modified: Date.now(),\n };\n });\n if (!docs.length) return;\n collectionService.upsertBulk(docs).catch(error => logger.log('upsertBulk', error));\n }\n }, [editingState, entities, collectionService]);\n\n return [entities, setEntities];\n};\n","import { useState, useEffect } from 'react';\nimport { Subscription } from 'rxjs';\nimport { Streamlit, RenderData } from 'streamlit-component-lib';\nimport { RxDBDataframeArgs } from './RxDBDataframeArgs';\n\n/**\n * Returns `RenderData` received from Streamlit after the first render event received.\n * @param sub Subscriptions holder\n */\nexport const useNullableRenderData = (\n sub: Subscription\n): RenderData | undefined => {\n const [renderData, setRenderData] = useState>();\n\n useEffect(() => {\n const onRenderEvent = (event: Event): void => {\n const renderEvent = event as CustomEvent;\n setRenderData(renderEvent.detail);\n };\n\n // Set up event listeners, and signal to Streamlit that we're ready.\n // We won't render the component until we receive the first RENDER_EVENT.\n Streamlit.events.addEventListener(Streamlit.RENDER_EVENT, onRenderEvent);\n Streamlit.setComponentReady();\n\n const cleanup = () => {\n Streamlit.events.removeEventListener(Streamlit.RENDER_EVENT, onRenderEvent);\n sub.unsubscribe();\n };\n return cleanup;\n }, []);\n\n return renderData;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { RxDBCollectionService } from '@ngx-odm/rxdb/collection';\nimport {\n RxDatabaseCreatorExtended,\n getRxDatabaseCreator,\n type RxCollectionCreatorExtended,\n} from '@ngx-odm/rxdb/config';\nimport { RxDBService } from '@ngx-odm/rxdb/core';\nimport { NgxRxdbUtils } from '@ngx-odm/rxdb/utils';\nimport React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n ComponentProps,\n Streamlit,\n withStreamlitConnection,\n} from 'streamlit-component-lib';\nimport { RxDBDataframeArgs } from './RxDBDataframeArgs';\nimport { useEditedState } from './useEditingState';\nimport { useNullableRenderData } from './useNullableRenderData';\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, Subscription, distinctUntilChanged, withLatestFrom } from 'rxjs';\nimport { MangoQuery } from 'rxdb';\n\nconst { logger, isEmptyObject, tapOnce } = NgxRxdbUtils;\n\n/**\n * Dataframe example using Apache Arrow.\n */\nconst RxDBDataframe: React.FC = props => {\n const [inited, setInited] = useState();\n const querySubjectRef = useRef>();\n const subRef = useRef();\n if (!subRef.current) {\n subRef.current = new Subscription();\n }\n if (!querySubjectRef.current) {\n querySubjectRef.current = new BehaviorSubject({});\n }\n const renderData = useNullableRenderData(subRef.current);\n // Parse the render data\n const { editing_state, collection_config, db_config, query, with_rev } =\n renderData?.['args'] || ({} as RxDBDataframeArgs);\n\n const dbServiceRef = useRef();\n const collectionServiceRef = useRef();\n if (!dbServiceRef.current) {\n dbServiceRef.current = new RxDBService();\n }\n const collectionService = () => collectionServiceRef.current!;\n\n const [, setEntities] = useEditedState(editing_state, collectionService());\n\n const initDb = useCallback((dbConfig: RxDatabaseCreatorExtended) => {\n const parsedDbConfig = getRxDatabaseCreator(dbConfig);\n return dbServiceRef.current!.initDb(parsedDbConfig);\n }, []);\n\n const initCollection = useCallback(\n async (collectionConfig: RxCollectionCreatorExtended) => {\n if (!collectionServiceRef.current) {\n collectionServiceRef.current = new RxDBCollectionService(\n collectionConfig,\n dbServiceRef.current!\n );\n }\n const query$ = querySubjectRef.current!.pipe(distinctUntilChanged(equal));\n const docssub = collectionService()\n .docs(query$, with_rev)\n .pipe(\n //\n tapOnce(() => setInited(true)),\n withLatestFrom(collectionService().info())\n )\n .subscribe(([docs, info]) => {\n if (!docs) {\n return;\n }\n setEntities(docs);\n Streamlit.setComponentValue({\n docs,\n info,\n query: querySubjectRef.current!.value,\n });\n Streamlit.setFrameHeight();\n });\n subRef.current!.add(docssub);\n logger.log('Collection & docs subscription initialized, with', query, with_rev);\n },\n [] // eslint-disable-line\n );\n\n useEffect(() => {\n if (!inited) {\n return;\n }\n query && querySubjectRef.current!.next(query);\n }, [inited, query]); // eslint-disable-line\n\n if (isEmptyObject(renderData)) return null; // Don't do anything at all\n\n if (!inited) {\n initDb(db_config)\n .then(() => initCollection(collection_config))\n .catch(logger.log);\n }\n\n return props.args.element as ReactNode;\n};\n\nexport default withStreamlitConnection(RxDBDataframe);\n","// import { StrictMode } from 'react';\nimport * as ReactDOM from 'react-dom/client';\n\nimport RxDBDataframe from './lib/RxDBDataframe';\n\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);\nroot.render();\n"],"names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","nh","lh","mh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","X","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","wl","reactDom_production_min","checkDCE","err","reactDomModule","createRoot","extendStatics","__extends","__","__decorate","decorators","target","key","desc","i","__metadata","metadataKey","metadataValue","__awaiter","thisArg","_arguments","generator","adopt","value","resolve","reject","fulfilled","step","rejected","result","__generator","body","_","verb","op","__values","o","s","__read","ar","error","__spreadArray","to","from","pack","__await","__asyncGenerator","resume","settle","fulfill","__asyncDelegator","__asyncValues","_typeof","toPrimitive","toPropertyKey","_defineProperties","props","descriptor","_createClass","Constructor","protoProps","staticProps","lastOfArray","toArray","input","batchArray","array","batchSize","ret","batch","isMaybeReadonlyArray","arrayFilterNotEmpty","countUntilNotMatching","matchingFn","count","idx","_item","matching","appendToArray","add","amount","element","uniqueArray","arrArg","elem","pos","arr","parseRevision","revision","split","getHeightOfRevision","createRevision","databaseInstanceToken","previousDocData","previousRevision","previousRevisionHeight","newRevisionHeight","objectPathMonad","objectPath","splitLength","obj","currentVal","subPath","flatClone","firstPropertyNameOfObject","sortObject","noArraySort","out","deepClone","src","dest","clone","overwriteGetterForCaching","getterName","RX_META_LWT_MINIMUM","getDefaultRxDocumentMeta","getDefaultRevision","stripMetaDataFromDocument","docData","areRxDocumentArraysEqual","primaryPath","ar1","ar2","len","row1","row2","WordArray","words","sigBytes","encoder","Hex","wordArray","thatByte","j","hexChars","bite","Latin1","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","_dataWords","_offset","doFlush","processedWords","nBlocksReady","nWordsReady","nBytesReady","offset","Hasher","messageUpdate","SHA256","H2","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","sigma1","t1","t2","nBitsTotal","nBitsLeft","sha256","message","jsSha256","nativeSha256","hashBuffer","hash","canUseCryptoSubtle","defaultHashSha256","nextTick","res","promiseWait","ms","toPromise","maybePromise","PROMISE_RESOLVE_TRUE","PROMISE_RESOLVE_FALSE","PROMISE_RESOLVE_NULL","PROMISE_RESOLVE_VOID","requestIdlePromiseNoQueue","timeout","idlePromiseQueue","requestIdlePromise","promiseSeries","tasks","initial","current","next","REGEX_ALL_DOTS","COUCH_NAME_CHARS","randomCouchString","length","text","ucfirst","str","trimDots","deepEqual","keys","isObject","type","disallowedKeys","digits","getPathSegments","path","parts","currentSegment","currentPart","isIgnoring","character","isStringIndex","object","index","assertNotStringIndex","getProperty","pathArray","setProperty","root","getFromMapOrThrow","map","val","getFromMapOrCreate","creator","ifWasThere","pluginMissing","pluginKey","keyParts","pluginName","part","errorToPlainJson","_lastNow","now","twoDecimals","ensureNotFalsy","RXJS_SHARE_REPLAY_DEFAULTS","RXDB_VERSION","_setPrototypeOf","_inheritsLoose","subClass","superClass","setPrototypeOf","_getPrototypeOf","_isNativeFunction","fn","_isNativeReflectConstruct","_construct","isNativeReflectConstruct","_wrapNativeSuper","Class","_cache","isNativeFunction","Wrapper","construct","getPrototypeOf","overwritable","parametersToString","parameters","paramStr","_k","messageForError","code","RxError","_Error","_this","mes","_proto","RxTypeError","_TypeError","_this2","_proto2","newRxError","newRxTypeError","isBulkWriteConflictError","STORAGE_WRITE_ERROR_CODE_TO_MESSAGE","rxStorageWriteErrorToRxError","HOOKS","runPluginHooks","hookKey","fun","runAsyncPluginHooks","getSchemaByObjectPath","rxJsonSchema","usePath","fillPrimaryKey","jsonSchema","documentData","newPrimary","getComposedPrimaryKeyOfDocumentData","existingPrimary","getPrimaryFieldOfPrimaryKey","primaryKey","getLengthOfPrimaryKey","schema","schemaPart","compositePrimary","field","normalizeRxJsonSchema","normalizedSchema","getDefaultIndex","fillWithDefaultSettings","schemaObj","RX_META_SCHEMA","finalFields","getFinalFields","useIndexes","arIndex","hasIndex","indexStr","fillObjectWithDefaults","rxSchema","defaultKeys","RxSchema","hashFunction","getIndexes","dataBefore","dataAfter","fieldName","proto","pathProperties","fullPath","values","getPreviousVersions","version","createRxSchema","runPreCreateHooks","useJsonSchema","isFunction","hasLift","source","operate","init","liftedSource","isArrayLike","isPromise","createErrorClass","createImpl","_super","instance","ctorFunc","UnsubscriptionError","errors","arrRemove","item","Subscription","initialTeardown","e_1","_a","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","initialFinalizer","_finalizers","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","parent","empty","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","handler","args","_i","delegate","handle","reportUnhandledError","noop","errorContext","Subscriber","destination","EMPTY_OBSERVER","complete","SafeSubscriber","_bind","bind","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","defaultErrorHandler","observable","identity","pipeFromArray","fns","prev","Observable","subscribe","operator","subscriber","isSubscriber","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","isObserver","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","getSymbolIterator","iterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","done","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","obs","promise","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","Action","scheduler","work","state","delay","intervalProvider","AsyncAction","_id","_scheduler","_delay","errored","errorValue","actions","dateTimestampProvider","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","action","asyncScheduler","async","isScheduler","isValidDate","timer","dueTime","intervalOrScheduler","intervalDuration","due","last","popResultSelector","popScheduler","popNumber","defaultValue","executeSchedule","parentSubscription","repeat","scheduleSubscription","catchError","selector","innerSub","syncUnsub","handledResult","isArray","objectProto","getKeys","argsArgArrayOrObject","first_1","isPOJO","observeOn","subscribeOn","scheduleObservable","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","project","callOrApply","mapOneOrManyArgs","createObject","combineLatest","resultSelector","observables","combineLatestInit","valueTransform","maybeSchedule","active","remainingFirstValues","_loop_1","hasFirstValue","execute","subscription","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","argsOrArgArray","mergeAll","concatAll","ObjectUnsubscribedError","Subject","subject","AnonymousSubject","_c","observer","observers","hasError","isStopped","thrownError","concat","EMPTY","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","first","currentKey","filter","predicate","EmptyError","merge","mergeWith","otherSources","BehaviorSubject","_value","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","copy","adjustedBufferSize","retry","configOrCount","resetOnSuccess","soFar","subscribeForRetry","resub_1","notifier","notifierSubscriber_1","share","options","connector","resetOnError","resetOnComplete","_d","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","conn","handleReset","on","onSubscriber","shareReplay","configOrBufferSize","windowTime","bufferSize","startWith","switchMap","innerSubscriber","innerIndex","outerIndex","takeWhile","inclusive","tap","tapObserver","isUnsub","withLatestFrom","inputs","otherValues","hasValue","ready","getDocumentDataOfRxChangeEvent","rxChangeEvent","rxChangeEventToEventReduceChangeEvent","isObservable","lastValueFrom","hasConfig","_hasValue","firstValueFrom","defer","observableFactory","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","isEventTarget","methodName","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","remove","subTarget","sources","hasLimit","isFindOne","hasSkip","isDelete","isInsert","isUpdate","wasLimitReached","sortParamsChanged","sortFields","doc","beforeData","afterData","wasInResult","primary","results","wasFirst","wasLast","wasSortedBeforeFirst","wasSortedAfterLast","isSortedBeforeFirst","isSortedAfterLast","wasMatching","doesMatchNow","wasResultsEmpty","stateResolveFunctionByIndex","pushAtSortPosition","compareFunction","low","high","mid","lastMidDoc","doNothing","_input","insertFirst","insertLast","removeFirstItem","removeLastItem","removeFirstInsertLast","removeLastInsertFirst","removeFirstInsertFirst","removeLastInsertLast","removeExisting","replaceExisting","alwaysWrong","wrongHuman","insertAtSortPosition","docId","removeExistingAndInsertAtSortPosition","runFullQueryAgain","unknownAction","orderedActionList","actionFunctions","CHAR_CODE_OFFSET","getNumberOfChar","char","booleanToBooleanString","splitStringToChunks","chunkSize","chunks","charsLength","minimalStringToSimpleBdd","nodesById","lastLeafNodeChar","leafNodeChars","leafNodeChunks","chunk","internalNodeChars","internalNodeChunks","idOf0Branch","idOf1Branch","level","node0","node1","node","last3","idOf0","idOf1","levelOfRoot","nodeOf0","nodeOf1","resolveWithSimpleBdd","simpleBdd","currentNode","currentLevel","booleanResult","branchKey","minimalBddString","getSimpleBdd","resolveInput","calculateActionName","resolvedActionId","runAction","queryParams","changeEvent","previousResults","keyDocumentMap","INDEX_MAX","INDEX_MIN","getQueryPlan","query","indexes","hasDescSorting","sortField","sortIrrelevevantFields","optimalSortIndex","optimalSortIndexCompareString","currentBestQuality","currentBestQueryPlan","inclusiveEnd","inclusiveStart","opts","indexField","matcher","operators","matcherOpts","startKey","LOGICAL_OPERATORS","operatorValue","partialOpts","getMatcherQueryOpts","startKeys","opt","endKeys","queryPlan","isSelectorSatisfiedByIndex","quality","rateQueryPlan","LOWER_BOUND_LOGICAL_OPERATORS","UPPER_BOUND_LOGICAL_OPERATORS","selectorEntries","hasNonMatchingOperator","operation","hasNonLogicOperator","satisfieldLowerBound","lowerOperatorFieldNames","lowerLogicOps","hasLowerLogicOp","satisfieldUpperBound","upperOperatorFieldNames","_fieldName","_operation","upperLogicOps","hasUperLogicOp","_fieldName2","set","endKey","addQuality","pointsPerMatchingKey","nonMinKeyCount","keyValue","nonMaxKeyCount","equalKeyCount","pointsIfNoReSortMustBeDone","MAX_INT","MIN_INT","MAX_LONG","MIN_LONG","MISSING","CYCLE_FOUND_ERROR","ARRAY_PROTO","OBJECT_PROTO","OBJECT_TAG","OBJECT_TYPE_RE","Null$2","Undefined","getConstructor","Null","DEFAULT_HASH_FUNCTION","stringify","JS_SIMPLE_TYPES","IMMUTABLE_TYPES_SET","toString","typedArrayToString","STRING_CONVERTERS","SORT_ORDER_BY_TYPE","compare","getType","isEqual","assert","condition","isTypedArray","cloneDeep","cycle","ctor","isBoolean","isString","isNumber","isObjectLike","isDate","isRegExp","isNil","inArray","notInArray","truthy","arg","strict","isEmpty","isMissing","ensureArray","has","prop","mergeable","left","right","into","buildHashIndex","hashCode","intersection","sortedIndex","sortBy","smallest","rmap","lhs","stable","found","currIndex","rhs","_j","flatten","xs","depth","flatten2","ys","getMembersOf","names","activeProto","unique","tag","members","objKeys","collection","keyFn","sorted","groupBy","lookup","existingKey","MAX_ARRAY_PUSH","rest","acc","begin","getValue","unwrap","resolve2","subpath","resolveGraph","isIndex","hasNext","filterMissing","NUMBER_RE","walk","isNextArrayIndex","setValue","removeValue","OPERATOR_NAME_PATTERN","isOperator","name","normalize","expr","newExpr","ProcessingMode","ComputeOptions","_opts","_root","_local","timestamp","local","Context","initOptions","OperatorType","ops","ctx","GLOBAL_CONTEXT","useOperators","currentFn","getOperator","fallback","systemVariables","_obj","_expr","_options","redactVariables","redact","computeValue","copts","callExpression","callAccumulator","context","prefix","Lazy","Iterator","compose","iterators","isGenerator","dropItem","DONE","createCallback","nextFn","iteratees","bufferIndex","storeResult","outer","size","innerDone","nextVal","self","iter","initialValue","Aggregator","pipeline","mode","pipelineOperators","operatorKeys","opName","call","Cursor","projection","buffered","modifier","spec","Query","whereOperator","$sort","sortKeys","cmp","collationSpec","collationComparator","coll","modifiers","groups","sortedKeys","COLLATION_STRENGTH","localeOpt","collator","createQueryOperator","$eq","eq","$ne","$in","$nin","$lt","mingoCmp","$lte","$gt","$gte","$mod","$regex","match","$exists","$all","queries","matched","$elemMatch","$size","isNonBooleanOperator","format","criteria","isNull","isInt","isLong","compareFuncs","compareType","$type","buildMap","letters","sign","FIXED_POINTS","createTrignometryOperator","fixedPoints","fp","keySet","RADIANS_FACTOR","DEGREES_FACTOR","$project","expressionKeys","idOnlyExcluded","validateExpression","ID_KEY","processObject","newObj","foundSlice","foundExclusion","dropKeys","subExpr","subExprObj","subExprKeys","objPathGraph","check","$and","$or","$nor","$not","__eq","__gt","__gte","__in","__lt","__lte","__ne","__nin","__mod","__regex","__all","__elemMatch","__size","__exists","__type","mingoInitDone","getMingoQuery","normalizeMangoQuery","mangoQuery","normalizedMangoQuery","indexAr","isPrimaryInSort","fieldsWithLogicalOperator","hasLogical","currentFieldsAmount","currentBestIndexForSort","useIndex","firstWrongIndex","getSortComparator","sortParts","sortBlock","direction","sortPart","valueA","valueB","mingoSortComparator","getQueryMatcher","_schema","mingoQuery","getSortFieldsOfQuery","RXQUERY_QUERY_PARAMS_CACHE","getQueryParams","rxQuery","sortComparator","useSortComparator","docA","docB","sortComparatorData","queryMatcher","useQueryMatcher","queryMatcherData","calculateNewResults","rxChangeEvents","previousResultsMap","changed","eventReduceEvents","cE","foundNonOptimizeable","eventReduceEvent","stateResolveFunctionInput","actionName","QueryCache","stringRep","createQueryCache","uncacheRxQuery","queryCache","countRxQuerySubscribers","DEFAULT_TRY_TO_KEEP_MAX","DEFAULT_UNEXECUTED_LIFETIME","defaultCacheReplacementPolicyMonad","tryToKeepMax","unExecutedLifetime","_collection","minUnExecutedLifetime","maybeUncache","queriesInCache","mustUncache","sortedByLastUsage","toRemove","defaultCacheReplacementPolicy","COLLECTIONS_WITH_RUNNING_CLEANUP","triggerCacheReplacement","rxCollection","DocumentCache","changes$","documentCreator","docMeta","cacheItem","getCachedRxDocumentMonad","docCache","cacheItemByDocId","registry","deepFreezeWhenDevMode","revisionHeight","getNewCacheItem","byRev","cachedRxDocumentWeakRef","cachedRxDocument","createWeakRefWithFallback","mapDocumentsDataToCacheDocs","docsData","getCachedRxDocument","documents","_docData","HAS_WEAK_REF","createWeakRef","createWeakRefFallback","RxQuerySingleResult","docsDataFromStorageInstance","_queryCount","newQueryID","RxQueryBase","other","_getDefaultQuery","isFindOneByIdQuery","newResultData","newQueryResult","preparedQuery","ids","mustBeQueried","docs","docsPromise","queryCollection","throwIfMissing","_ensureEqual","stringObj","hookInput","prepareQuery","_updateObj","_queryObj","_params","_amount","results$","curr","useResult","reactivity","normalizedQuery","tunnelQueryCache","createRxQuery","queryObj","_isResultsInSync","currentLatestEventNumber","__ensureEqual","mustReExec","missedChangeEvents","runChangeEvents","previousCount","newCount","didMatchBefore","eventReduceResult","mutateableQuery","docIds","docsFromStorage","fromStorageList","queryResult","INTERNAL_STORAGE_NAME","getSingleDocument","storageInstance","documentId","writeSingle","writeRow","writeResult","observeSingle","firstFindPromise","evBulk","ev","stackCheckpoints","checkpoints","storageChangeEventToRxChangeEvent","isLocal","rxStorageChangeEvent","previousDocumentData","throwIfIsStorageWriteError","writeData","categorizeBulkWriteRows","docsInDb","bulkWriteRows","onInsert","onUpdate","hasAttachments","bulkInsertDocs","bulkUpdateDocs","eventBulkId","eventBulk","eventBulkEvents","attachmentsAdd","attachmentsRemove","attachmentsUpdate","hasDocsInDb","newestRow","rowAmount","_loop","rowId","document","previous","documentDeleted","previousDeleted","documentInDb","attachmentError","revInDb","updatedRow","stripAttachmentsDataFromRow","attachmentId","attachmentData","previousAttachmentData","newDigest","eventDocumentData","previousEventDocumentData","stripAttachmentsDataFromDocument","_event","insertedIsDeleted","event","getAttachmentSize","attachmentBase64String","attachmentWriteDataToNormalData","useDoc","flatCloneDocWithMeta","getWrappedStorageInstance","database","transformDocumentDataFromRxDBToRxStorage","metaFieldName","rows","toStorageWriteRows","row","useWriteResult","reInsertErrors","reInserts","subResult","deleted","digest","limit","checkpoint","minDeletedTime","taskSolution","ensureRxStorageInstanceParamsAreCorrect","params","hasEncryption","getChangedDocumentsSinceQuery","sinceLwt","sinceId","getChangedDocumentsSince","lastDoc","IncrementalWriteQueue","preWrite","postWrite","lastKnownDocumentState","writeRows","itemsById","_docId","items","oldData","findNewestOfDocumentStates","newData","isConflict","rxError","modifierFromPublicToInternal","publicModifier","withoutMeta","modified","reattachedMeta","newest","newestRevisionHeight","height","basePrototype","latestDocData","refCollection","valuesIterator","objPath","valueObj","proxy","property","lastChar","_key","_key2","withMetaFields","mutationFunction","_context","patch","beforeDocumentUpdateWrite","isError","deletedData","removedDocData","removed","newDoc","createRxDocumentConstructor","constructor","createWithConstructor","jsonData","INTERNAL_CONTEXT_COLLECTION","INTERNAL_CONTEXT_STORAGE_TOKEN","INTERNAL_CONTEXT_MIGRATION_STATUS","INTERNAL_STORE_SCHEMA_TITLE","INTERNAL_STORE_SCHEMA","getPrimaryKeyOfInternalDocument","getAllCollectionDocuments","getAllQueryPrepared","allDocs","STORAGE_TOKEN_DOCUMENT_KEY","STORAGE_TOKEN_DOCUMENT_ID","ensureStorageTokenDocumentExists","rxDatabase","storageToken","passwordHash","conflictError","isDatabaseStateVersionCompatibleWithDatabaseCode","storageTokenDocInDb","databaseStateVersion","codeVersion","stateMajor","codeMajor","addConnectedStorageToCollection","storageCollectionName","collectionNameWithVersion","_collectionNamePrimary","collectionDocId","collectionDoc","saveData","alreadyThere","fillObjectDataBeforeInsert","createRxCollectionStorageInstance","storageInstanceCreationParams","removeCollectionStorages","storage","databaseInternalStorage","databaseName","collectionName","password","allCollectionMetaDocs","relevantCollectionMetaDocs","metaDoc","removeStorages","alreadyAdded","writeDoc","ChangeEventBuffer","pointer","oldestEvent","oldestCounter","currentIndex","nextEvent","changeEvents","sub","createChangeEventBuffer","constructorForCollection","getDocumentPrototype","schemaProto","ormProto","getDocumentOrmPrototype","baseProto","enumerable","getRxDocumentConstructor","createNewRxDocument","createRxDocumentWithConstructor","getLastCheckpointDoc","checkpointDocId","checkpointResult","checkpointDoc","setCheckpoint","previousCheckpointDoc","sucessDoc","getCheckpointKey","docStateToWriteDoc","keepMeta","docState","writeDocToDocState","keepAttachments","stripAttachmentsDataFromMetaWriteRows","getUnderlyingPersistentStorage","META_INSTANCE_SCHEMA_TITLE","getRxReplicationMetaInstanceSchema","replicatedDocumentsSchema","encrypted","parentPrimaryKeyLength","baseSchema","metaInstanceSchema","getAssumedMasterState","useId","metaDocs","getMetaWriteRow","newMasterDocState","isResolvedConflict","newMeta","startReplicationDownstream","identifierHash","replicationHandler","openTasks","addNewTask","task","taskWithTime","useTasks","innerTaskWithTime","lastTimeMasterChangesRequested","downstreamResyncOnce","downstreamProcessChanges","canceled","lastCheckpoint","promises","downResult","persistFromMaster","docsOfAllTasks","persistenceQueue","nonPersistedFromMaster","downDocsById","useCheckpoint","writeRowsToFork","writeRowsToForkById","writeRowsToMeta","useMetaWriteRows","currentForkStateList","assumedMasterState","currentForkState","forkStateFullDoc","forkStateDocData","masterState","assumedMaster","isAssumedMasterEqualToForkState","areStatesExactlyEqual","newForkState","nextRevisionHeight","forkWriteRow","forkWriteResult","metaWriteResult","writeError","unhandledError","defaultConflictHandler","newDocumentState","realMasterState","resolveConflictError","forkState","conflictHandler","conflictHandlerOutput","resolvedDoc","fillWriteDataForAttachmentsChange","newDocument","originalDocument","originalAttachmentsIds","attachmentDataString","startReplicationUpstream","upstreamInitialSync","processTasks","initialSyncStartTime","upResult","persistToMaster","resolvedPromises","hadConflicts","upDocsById","writeRowsToMaster","writeRowsToMasterIds","forkStateById","fullDocData","assumedMasterDoc","writeRowsArray","conflictIds","conflictsById","writeBatches","writeBatch","masterWriteResult","conflictDoc","useWriteRowsToMeta","hadConflictWrites","conflictWriteFork","conflictWriteMeta","writeToMasterRow","resolved","useMetaWrites","replicateRxStorageInstance","checkpointKeyPromise","checkpointKey","awaitRxStorageReplicationFirstInSync","awaitRxStorageReplicationInSync","replicationState","rxStorageInstanceToReplicationHandler","plainDocumentData","rowById","masterDocsStateList","masterDocsState","conflicts","cancelRxStorageReplication","HOOKS_WHEN","HOOKS_KEYS","hooksApplied","RxCollectionBase","internalStorageInstance","instanceCreationOptions","migrationStrategies","methods","attachments","cacheReplacementPolicy","statics","_applyHookFunctions","collectionEventBulks$","changeEventBulk","databaseStorageToken","subDocs","output","_minimumDeletedTime","json","insertResult","useDocs","useDocData","insertRows","rxDocuments","docsMap","rxDocumentMap","rxDocument","removeDocs","successIds","insertData","useJsonByDocId","useJson","success","docDataInDb","bulkResult","queue","_incrementalUpsertEnsureRxDocumentExists","wasInserted","_incrementalUpsertUpdate","_exportedJSON","when","parallel","boundFun","runName","hooks","hook","time","colProto","fnName","_innerDoc","docDataFromCache","createRxCollection","autoMigrate","localDocuments","funName","IdleQueue","parallels","_tryIdleCall","prom","resolveFromOutside","_removeIdlePromise","timeoutObj","callback","_this3","_resolveOneIdleCall","idleQueue","oldestPromise","ObliviousSet","ttl","__publicField","removeTooOldValues","obliviousSet","olderThen","USED_DATABASE_NAMES","RxDatabaseBase","token","multiInstance","eventReduce","internalStore","cleanupPolicy","allowSlowCount","collectionCreators","jsonSchemas","schemas","bulkPutDocs","useArgsByCollectionName","collectionDocData","useArgs","hookData","putDocsResult","ensureNoStartupErrors","docInDb","_collections","col","removeRxDatabase","throwIfDatabaseNameUsed","createRxDatabaseStorageInstance","createRxDatabase","ignoreDuplicate","dbInternalsStorageInstance","collectionDocs","collectionNames","removedCollectionNames","isRxDatabase","isRxDatabaseFirstTimeInstantiated","tokenDoc","PROTOTYPES","RxDocumentPrototype","ADDED_PLUGINS","ADDED_PLUGIN_NAMES","addRxPlugin","plugin","hooksObj","PROMISE_RESOLVED_TRUE","PROMISE_RESOLVED_VOID","sleep","resolveWith","randomInt","min","max","randomToken","lastMs","microSeconds","supportsWebLockAPI","micro","create","channelName","msgEvent","close","channelState","postMessage","messageJson","onMessage","canBeUsed","averageResponseTime","NativeMethod","fillOptionsWithDefaults","originalOptions","DB_PREFIX","OBJECT_STORE_ID","TRANSACTION_SETTINGS","getIdb","commitIndexedDBTransaction","tx","createDatabase","IndexedDB","dbName","openRequest","rej","writeMessage","readerUuid","writeObject","objectStore","getMessagesHigherThan","lastCursorId","keyRangeValue","getAllRequest","openCursor","openCursorRequest","cursor","removeMessagesById","deleteRequest","getOldMessages","msgObk","cleanOldMessages","tooOld","msg","_readLoop","readNewMessages","_filterMessage","msgObj","newerMessages","useMessages","msgObjA","msgObjB","IndexedDBMethod","KEY_PREFIX","getLocalStorage","localStorage","storageKey","writeObj","addStorageEventListener","listener","removeStorageEventListener","uuid","eMIs","ls","defaultTime","userAgent","LocalstorageMethod","SIMULATE_CHANNELS","SIMULATE_DELAY_TIME","channelArray","channel","SimulateMethod","METHODS","chooseMethod","chooseMethods","useMethod","method","OPEN_BROADCAST_CHANNELS","lastId","BroadcastChannel","ENFORCED_OPTIONS","_prepareChannel","_post","listenObj","_removeListenerObject","_addListenerObject","awaitPrepare","broadcastChannel","sendPromise","_hasMessageListeners","_startListening","_stopListening","listenerFn","listenerObject","addBrowser","oldClose","addNode","isNode","USE_METHOD","LISTENERS","startedListening","startListening","runAll","addReturn","sendLeaderMessage","leaderElector","msgJson","beLeader","unloadFn","unloadAdd","isLeaderListener","LeaderElectionWebLock","locks","relevantLocks","lock","returnPromise","_fn","_this4","uFn","LeaderElection","hasLeaderListener","isFromFallbackInterval","applyRun","stopCriteria","stopCriteriaPromiseResolve","stopCriteriaPromise","handleMessage","waitForAnswerTime","_awaitLeadershipOnce","finish","whenDeathListener","tryOnFallBack","createLeaderElection","elector","BROADCAST_CHANNEL_BY_TOKEN","getBroadcastChannelReference","storageName","refObject","removeBroadcastChannelReference","addRxStorageMultiInstanceSupport","instanceCreationParams","providedBroadcastChannel","changesFromOtherInstances$","eventListener","oldChangestream$","closed","oldRemove","getIndexMeta","fieldNameProperties","parsedLengths","getStringLengthOfIndexNumber","maxLength","getIndexStringPart","fieldValue","getNumberIndexString","getIndexableStringMonad","fieldNamePropertiesAmount","indexPartsFunctions","minimum","maximum","multipleOf","valueSpan","nonDecimals","multipleOfParts","decimals","nonDecimalsValueAsString","splitByDecimalPoint","decimalValueAsString","getStartIndexStringFromLowerBound","lowerBound","bound","boolToStr","fillChar","getStartIndexStringFromUpperBound","upperBound","_fillChar","DEFAULT_MODIFIER","swapDefaultDeletedTodeletedField","deletedField","isDeleted","handlePulledDocuments","awaitRetry","retryTime","onlineAgain","REPLICATION_STATE_BY_COLLECTION","RxReplicationState","replicationIdentifier","pull","push","live","autoStart","replicationStates","startPromise","pullModifier","pushModifier","metaInstanceCollectionName","metaInstance","_v","useEv","emitError","er","useRowsOrNull","useRows","down","up","isActive","NgxRxdbUtils","keysOfNonArray","forOwn","iteratee","forEachOfArray","forOwnOfNonArray","forEach","myValue","isNullOrUndefined","isDevMode","isValidNumber","times","range","start","end","getMaybeId","entityOrId","compact","compactObject","isDevModeForced","isTestEnvironment","bgColor","debug","retryWithBackoff","obs$","retryIndex","subj","getDefaultFetch","isValidRxReplicationState","mapFindResultToJsonArray","withRevAndAttachments","debug$1","isEmptyObject","isZone","runInZone","zone","ensureCollection$","propertyKey","originalMethod","ensureCollection","_e","_f","logger","RxDBCollectionService","dbService","ngZone","currentUrl$","updateQueryParamsFn","schemaHash","dump","attachmentsData","attachment","parralel","loc","module","this","global","$","et","tt","nt","rt","it","ot","at","ut","st","ct","lt","ft","ht","dt","pt","yt","vt","mt","bt","gt","wt","_t","xt","kt","Ot","Pt","Et","Kt","Dt","St","Ct","jt","At","Tt","Bt","It","Rt","Ft","Mt","Nt","Lt","Ut","zt","Vt","Wt","Yt","$t","Qt","Gt","Xt","Ht","Jt","Zt","en","tn","ln","sn","cn","rn","un","an","nn","hn","dn","Jn","pn","yn","vn","mn","bn","xn","gn","wn","_n","kn","On","Pn","En","Kn","Sn","jn","An","Cn","Dn","qn","Tn","Bn","In","Rn","Fn","Mn","Nn","Ln","Un","zn","Vn","Wn","Yn","$n","Qn","Gn","Xn","Hn","Zn","tr","nr","rr","ir","or","ur","sr","DexieSymbol","Dexie","_Dexie","DEXIE_DOCS_TABLE_NAME","DEXIE_CHANGES_TABLE_NAME","DEXIE_ATTACHMENTS_TABLE_NAME","RX_STORAGE_NAME_DEXIE","DEXIE_STATE_DB_BY_NAME","REF_COUNT_PER_DEXIE_DB","getDexieDbWithTables","settings","dexieDbName","useSettings","dexieDb","dexieStoresSettings","getDexieStoreSchema","getBooleanIndexes","closeDexieDb","statePromise","prevCount","DEXIE_PIPE_SUBSTITUTE","dexieReplaceIfStartsWithPipe","withoutFirst","dexieReplaceIfStartsWithPipeRevert","fromStorageToDexie","booleanIndexes","fromStorageToDexieField","newVal","fromDexieToStorage","fromDexieToStorageField","dexieSchemaRows","dexieSchema","getDocsInDb","internals","attachmentObjectId","checkedFields","fields","mapKeyForKeyRange","rangeFieldToBooleanSubstitute","newValue","getKeyRangeByQueryPlan","IDBKeyRange","keyRange","dexieQuery","skip","skipPlusLimit","queryPlanFields","dexieTx","store","indexName","cursorReq","dexieCount","request","instanceId","RxStorageInstanceDexie","documentWrites","ensureNotClosed","documentKeys","categorized","docsInDbMap","docsInDbWithInternals","docWithDexieInternals","putAttachments","lastState","_result","minimumDeletedTime","maxDeletionTime","removeIds","_digest","_taskSolution","createDexieStorageInstance","RxStorageDexie","getRxStorageDexie","norm","boundGE","boundGT","boundLT","boundLE","boundEQ","getMemoryCollectionKey","schemaVersion","ensureNotRemoved","attachmentMapKey","sortByIndexStringComparator","putWriteRowToState","stateByIndex","docInState","byIndex","docsWithIndex","getIndexableString","newIndexString","insertPosition","previousIndexString","indexBefore","compareDocsWithIndex","removeDocFromState","indexString","positionInIndex","indexStringA","indexStringB","addIndexesToInternalsState","getMemoryIndexName","OPEN_MEMORY_INSTANCES","RxStorageInstanceMemory","documentsById","_writeRow","_doc","_i2","_writeRow2","_doc2","attachmentsMap","withDeleted","mustManuallyResort","lowerBoundString","upperBoundString","indexOfLower","indexOfUpper","currentRow","currentDoc","createMemoryStorageInstance","collectionKey","COLLECTION_STATES","getRxStorageMemory","getRxDatabaseCreator","semver","validateAndParse","isWildcard","tryParse","forceType","compareStrings","ap","bp","compareSegments","compareVersions","v1","v2","n1","n2","p1","p2","assertValidOperator","operatorResMap","allowedOperators","getDefaultPreparedQuery","RXDB_STORAGE_TOKEN_ID","fetchSchema","schemaUrl","prepareCollections","colConfigs","colCreators","prepareDbDump","dumpPath","collections","dumpObj","migrateStorageVersion","rxdbVersion","storageData","dexieTable","afterCreateRxDatabase","isFirstTimeInstantiated","beforePreCreateRxSchema","maybeSchema","realSchema","afterCreateRxCollection","meta","initialDocs","initialCount","countDocs","RxDBPreparePlugin","_meta","_rev","includeKeys","singleMatcher","multiMatcher","decodeComponents","components","decode","tokens","customDecodeURIComponent","replaceMap","entries","decodeUriComponent","encodedURI","splitOnFirst","string","separator","separatorIndex","strictUriEncode","encodeFragmentIdentifier","encoderForArrayFormat","encode","keyValueSep","parserForArrayFormat","accumulator","isEncodedArray","arrayValue","validateArrayFormatSeparator","decodeComponent","keysSorter","removeHash","hashStart","getHash","url","parseValue","extract","queryStart","parse","formatter","returnValue","parameter","parameter_","key2","value2","shouldFilter","objectCopy","parseUrl","url_","stringifyUrl","queryFromUrl","queryString","urlObjectForFragmentEncode","pick","fragmentIdentifier","exclude","exclusionFilter","sort","schemaTopLevelFields","parseUrlToMangoQuery","urlPart","parsed","_selector","_sort","stringifyParam","param","RxDBPUseQueryParamsPlugin","_queryParams$","useQueryParams","initDone","currentUrl","updateQueryParamsInLocationFn","_updateQueryParamsInLocationFn","DEFAULT_CLEANUP_POLICY","RXSOTRAGE_CLEANUP_QUEUE","startCleanupForRxCollection","cleanupRxCollection","runCleanupAfterDelete","isDone","RxDBCleanupPlugin","dumpRxDatabase","useCollections","colName","cols","importDumpRxDatabase","missingCollections","colDump","dumpRxCollection","importDumpRxCollection","exportedJSON","RxDBJsonDumpPlugin","RxDocumentParent","RxLocalDocumentClass","_RxDocumentParent","RxLocalDocumentPrototype","LOCAL_DOC_STATE_BY_PARENT_RESOLVED","getRxDatabaseFromLocalDocument","localDocument","getLocalDocStateByParent","docResult","INIT_DONE","_init","docBaseProto","exists","getThrowingFun","createRxLocalDocument","LOCAL_DOC_STATE_BY_PARENT","createLocalDocStateByParent","createLocalDocumentStorageInstance","RX_LOCAL_DOCUMENT_SCHEMA","incrementalWriteQueue","subLocalDocs","getCollectionLocalInstanceName","closeStateByParent","removeLocalDocumentsStorageInstance","insertLocal","newDocData","upsertLocal","existing","docPromise","getLocal","getLocal$","changeEventOrDoc","filterFlagged","RxDBLocalDocumentsPlugin","getOldCollectionMeta","migrationState","collectionDocKeys","migrateDocumentData","docSchemaVersion","attachmentsBefore","mutateableDocData","nextVersion","currentPromise","docOrNull","runStrategyIfNotNull","retPromise","mustMigrate","oldColDoc","MIGRATION_DEFAULT_BATCH_SIZE","DATA_MIGRATION_STATE_SUBJECT_BY_DATABASE","addMigrationStateToDatabase","allSubject","getMigrationStateByDatabase","allList","onDatabaseDestroy","RxMigrationState","statusDocKey","must","oldCollectionMeta","oldStorageInstance","connectedInstances","totalCount","connectedInstance","useHandlers","status","oneHandler","oldStorage","newStorage","replicationMetaStorageInstance","replicationHandlerBase","migratedDocData","newRow","storageInstances","countResult","connectedStorage","newSchema","DATA_MIGRATOR_BY_COLLECTION","RxDBMigrationPlugin","FILTER_IDENT_RE","tokenizePath","child","elems","applyUpdate","walkExpression","arrayFilter","vars","conditions","$addToSet","arrayFilters","BIT_OPS","$bit","$currentDate","$inc","$max","$min","$mul","$pop","$pull","wrap","pred","$pullAll","pullExpr","OPERATOR_MODIFIERS","$push","oldsize","sortKey","order","$set","$rename","$unset","createUpdater","defaultOptions","entry","UPDATE_OPERATORS","mutate","updater","mingoUpdater","updateObject","cloned","incrementalUpdate","updateObj","update","oldDocData","RxQueryUpdate","RxDBUpdatePlugin","logger$1","loadRxDBPlugins","plugins","RxDBService","bulk","reactIs_production_min","reactIsModule","reactIs","REACT_STATICS","KNOWN_STATICS","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","getStatics","component","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","hoistNonReactStatics_cjs","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","symbols","decoder","decodeUtf8","encodeUtf8","BigIntCtor","BigIntAvailable","BigIntUnavailableError","BigIntUnavailable","BigInt64ArrayCtor","BigInt64ArrayAvailable","BigInt64ArrayUnavailableError","BigInt64ArrayUnavailable","BigUint64ArrayCtor","BigUint64ArrayAvailable","BigUint64ArrayUnavailableError","BigUint64ArrayUnavailable","isArrowJSON","isIteratorResult","isFileHandle","isFetchResponse","isReadableDOMStream","isReadableInterop","isWritableDOMStream","isWritableNodeStream","isReadableNodeStream","isFlatbuffersByteBuffer","SharedArrayBuf","collapseContiguousByteRanges","xOffset","yOffset","xLen","yLen","memcpy","targetByteOffset","sourceByteLength","targetByteLength","dst","joinUint8Arrays","byteLength","sliced","toArrayBufferView","ArrayBufferViewCtor","toInt32Array","toUint8Array","pump","toArrayBufferViewIterator","ArrayCtor","buffers","toUint8ArrayIterator","toArrayBufferViewAsyncIterator","emit","toUint8ArrayAsyncIterator","rebaseValueOffsets","valueOffsets","compareArrayLike","streamAdapters","fromDOMStream","stream","fromNodeStream","threw","cmd","bufferLength","byteRange","AdaptiveByteReader","reason","onEvent","events","cleanup","evt","destroy","MetadataVersion","UnionMode","Precision","DateUnit","TimeUnit","IntervalUnit","MessageHeader","Type","BufferType","undf","valueToString","BigInt64Array","BigUint64Array","isArrowBigNumSymbol","BigNum","bignumToString","bignumToNumber","hint","bignumToBigInt","SignedBigNum","UnsignedBigNum","DecimalBigNum","byteOffset","signed","negative","number","word","decimalToString","base64","base32","checks","BN","num","isSigned","_g","_h","_l","_m","_o","_p","_q","_r","_s","_u","DataType","Int_","bitWidth","Int32","Float","precision","Binary","Bool","scale","Decimal","Date_","unit","Time_","Timestamp_","timezone","Interval_","List","Struct","children","Union_","typeIds","typeIdToChildIndex","typeId","byteWidth","FixedSizeBinary","listSize","FixedSizeList","Map_","keysSorted","getId","atomicDictionaryId","Dictionary","dictionary","indices","isOrdered","strideForType","Visitor","nodes","throwIfNotFound","getVisitFn","getVisitFnByTypeId","_node","_args","visitor","inferDType","dtype","f64","u32","uint16ToFloat64","expo","sigf","float64ToUint16","SetVisitor","wrapSet","_1","_2","setEpochMsToDays","epochMs","setEpochMsToMillisecondsLong","setEpochMsToMicrosecondsLong","setEpochMsToNanosecondsLong","setVariableWidthBytes","setBool","setInt","setFloat","setFloat16","setAnyFloat","setDateDay","setDateMillisecond","setFixedSizeBinary","stride","setBinary","setUtf8","setDate","setTimestampSecond","setTimestampMillisecond","setTimestampMicrosecond","setTimestampNanosecond","setTimestamp","setTimeSecond","setTimeMillisecond","setTimeMicrosecond","setTimeNanosecond","setTime","setDecimal","setList","itr","setMap","_setStructArrayValue","_setStructVectorValue","_setStructMapValue","_setStructObjectValue","setStruct","childSetters","Vector","setUnion","setDenseUnion","setSparseUnion","childIndex","setDictionary","setIntervalValue","setIntervalDayTime","setIntervalYearMonth","setFixedSizeList","kParent","kRowIndex","StructRow","rowIndex","StructRowProxyHandler","getVisitor","StructRowIterator","setVisitor","GetVisitor","wrapGet","epochDaysToMs","epochMillisecondsLongToMs","epochMicrosecondsLongToMs","epochNanosecondsLongToMs","epochMillisecondsToDate","epochDaysToDate","epochMillisecondsLongToDate","getNull","_data","_index","getVariableWidthBytes","getBool","getDateDay","getDateMillisecond","getNumeric","getFloat16","getBigInts","getFixedSizeBinary","getBinary","getUtf8","bytes","getInt","getFloat","getDate","getTimestampSecond","getTimestampMillisecond","getTimestampMicrosecond","getTimestampNanosecond","getTimestamp","getTimeSecond","getTimeMillisecond","getTimeMicrosecond","getTimeNanosecond","getTime","getDecimal","getList","slice","getMap","MapRow","getStruct","getUnion","getDenseUnion","getSparseUnion","getDictionary","getInterval","getIntervalDayTime","getIntervalYearMonth","interval","int32s","getFixedSizeList","kKeys","kVals","MapRowProxyHandler","MapRowIterator","vals","tmp","clampRange","then","isNaNFast","createElementComparator","search","valueOfSearch","createMapComparator","createArrayLikeComparator","createVectorComparator","createObjectComparator","comparators","createSubElementsComparator","allowEmpty","compareArray","compareObject","compareVector","vec","lKeyItr","rKeyItr","rValItr","rVal","lKey","rKey","byte","bit","getBit","truncateBitmap","bitmap","alignedSize","packBools","BitIterator","get","popcnt_bit_range","sum","rhsInside","lhsInside","popcnt_array","cnt","view","popcnt_uint32","uint32","kUnknownNullCount","Data","nullCount","nullBitmap","childStride","newLength","MakeDataVisitor","makeData","ChunkedIterator","numChunks","getChunkIterator","computeChunkNullCounts","computeChunkOffsets","offsets","sliceChunks","slices","binarySearch","isChunkedValid","wrapChunkedCall1","chunkedFn","wrapChunkedCall2","wrapChunkedIndexOf","indexOf","chunkedIndexOf","chunkIndex","fromIndex","total","IndexOfVisitor","nullIndexOf","searchElement","indexOfNull","isValid","indexOfValue","indexOfUnion","IteratorVisitor","vectorIterator","vector","Int","Time","inner","VectorIterator","GetByteLengthVisitor","____","getUtf8ByteLength","getBinaryByteLength","getListByteLength","visit","getFixedSizeListByteLength","getUnionByteLength","getDenseUnionByteLength","getSparseUnionByteLength","visitorsByTypeId","vectorPrototypesByTypeId","unchunkedData","iteratorVisitor","others","_offsets","ArrayType","memo","chunk_length","MemoizedVector","indexOfVisitor","byteLengthVisitor","cache","cachedValue","Block","builder","metaDataLength","bodyLength","SIZEOF_SHORT","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","SIZE_PREFIX_LENGTH","int32","float32","float64","isLittleEndian","Long$3","Long","Encoding","ByteBuffer$2","ByteBuffer","bytes_","byte_size","position","bb_pos","vtable_offset","vtable","opt_encoding","codePoint","ident","listAccessor","listLength","Builder$2","Builder","opt_initial_size","initial_size","forceDefaults","additional_bytes","align_size","old_buf_size","voffset","new_buf_size","nbb","numfields","vtableloc","trimmed_size","standard_fields","existing_vtable","vt1","outer_loop","vt2","root_table","opt_file_identifier","opt_size_prefix","size_prefix","file_identifier","table","table_start","vtable_start","elem_size","num_elems","alignment","utf8","list","startFunc","KeyValue","flatbuffers.SIZE_PREFIX_LENGTH","optionalEncoding","keyOffset","valueOffset","Endianness","DictionaryKind","DictionaryEncoding","indexTypeOffset","dictionaryKind","Date$1","Date","FloatingPoint","Interval","Map$1","Map","Struct_","Timestamp","timezoneOffset","Union","typeIdsOffset","numElems","Field$1","Field","nameOffset","nullable","typeType","typeOffset","dictionaryOffset","childrenOffset","customMetadataOffset","Schema$1","Schema","endianness","fieldsOffset","featuresOffset","Footer","schemaOffset","dictionariesOffset","recordBatchesOffset","metadata","dictionaries","generateDictionaryMap","fieldNames","fieldIndices","curFields","mergeMaps","newFields","f2","newDictionaries","m1","m2","flatbuffers.Long","flatbuffers.Builder","flatbuffers.ByteBuffer","Footer_","recordBatches","dictionaryBatches","buf","footer","_Footer","OffHeapFooter","FileBlock","dictionaryBatchesOffset","block","_footer","fileBlock","_Block","ITERATOR_DONE","ArrowJSON","_json","ReadableInterop","writable","duplex","AsyncQueue","resolvers","AsyncByteQueue","sync","ByteStream","ByteStreamSource","AsyncByteStream","AsyncByteStreamSource","RandomAccessFile","nBytes","AsyncRandomAccessFile","file","bytesRead","carryBit16","intAsHex","kInt32DecimalDigits","kPowersOfTen","BaseInt64","product","Uint64","out_buffer","posn","group","multiple","Int64","this_high","other_high","negate","Int128","L0","L1","L2","L3","R0","R1","R2","R3","sums","VectorLoader","_type","JSONVectorLoader","binaryDataFromJSON","joined","TypeComparator","compareConstructor","compareAny","compareInt","compareFloat","compareFixedSizeBinary","compareDate","compareTimestamp","compareTime","compareList","compareStruct","compareUnion","compareDictionary","compareInterval","compareFixedSizeList","compareMap","compareSchemas","distributeVectorsIntoRecordBatches","vecs","uniformlyDistributeChunksAcrossRecordBatches","batches","numBatches","batchLength","numColumns","distributeChildren","RecordBatch","columns","nullBitmapSize","Table","numRows","columnNames","nameToIndex","columnName","columnIndices","oldToNew","newIdx","RecordBatch$2","ensureSameLengthData","collectDictionaries","subset","_InternalEmptyPlaceholderRecordBatch","BodyCompressionMethod","CompressionType","BodyCompression","codec","Buffer","FieldNode$1","null_count","RecordBatch$1","FieldNode","nodesOffset","buffersOffset","compressionOffset","DictionaryBatch$1","DictionaryBatch","dataOffset","isDelta","Message$1","Message","headerType","headerOffset","TypeAssembler","indexType","schemaFromJSON","schemaFieldsFromJSON","customMetadataFromJSON","recordBatchFromJSON","fieldNodesFromJSON","buffersFromJSON","dictionaryBatchFromJSON","fieldChildrenFromJSON","_field","fieldNodes","column","nullCountFromJSON","BufferRegion","validity","fieldFromJSON","dictMeta","dictType","typeFromJSON","indexTypeFromJSON","_metadata","header","messageHeaderFromJSON","_message","_Message","decodeMessageHeader","_Schema","_RecordBatch","_DictionaryBatch","encodeField","decodeField","encodeSchema","decodeSchema","encodeRecordBatch","decodeRecordBatch","encodeDictionaryBatch","decodeDictionaryBatch","encodeFieldNode","decodeFieldNode","encodeBufferRegion","decodeBufferRegion","decodeSchemaFields","decodeCustomMetadata","decodeFieldNodes","decodeBuffers","bufferRegions","decodeFieldChildren","decodeFieldType","decodeIndexType","_Int","_FloatingPoint","_Decimal","_Date","_Time","_Timestamp","_Interval","_Union","_FixedSizeBinary","_FixedSizeList","_Map","fieldOffsets","fieldsVectorOffset","metadataOffset","_KeyValue","platformIsLittleEndian","_Endianness","typeAssembler","childOffsets","childrenVectorOffset","_Field","recordBatch","nodesVectorOffset","b_","buffersVectorOffset","dictionaryBatch","_FieldNode","_Buffer","invalidMessageType","nullMessage","invalidMessageMetadata","expected","actual","invalidMessageBodyLength","MessageReader","throwIfNull","PADDING","metadataLength","AsyncMessageReader","JSONMessageReader","_bodyLength","flattenDataSources","MAGIC_STR","MAGIC","checkForMagicArrowString","magicLength","magicAndPadding","magicX2AndPadding","RecordBatchReader","impl","opening","writableStrategy","readableStrategy","fromArrowJSON","fromFileHandle","fromAsyncByteStream","fromByteStream","readAllSync","readAllAsync","RecordBatchStreamReader","_impl","AsyncRecordBatchStreamReader","RecordBatchFileReader","AsyncRecordBatchFileReader","RecordBatchReaderImpl","types","RecordBatchStreamReaderImpl","shouldAutoDestroy","AsyncRecordBatchStreamReaderImpl","RecordBatchFileReaderImpl","_handle","AsyncRecordBatchFileReaderImpl","RecordBatchJSONReaderImpl","VectorAssembler","assembler","addBuffer","_null","assembleUnion","assembleNestedVector","maxChildTypeId","childLengths","shiftedOffsets","unshiftedOffsets","shift","numChildren","childLength","assembleBoolVector","assembleFlatVector","assembleFlatListVector","firstOffset","lastOffset","assembleListVector","RecordBatchWriter","writeAllAsync","writeAll","payload","flatbufferSize","prefixSize","nPaddingBytes","metadata.RecordBatch","metadata.DictionaryBatch","padding","RecordBatchStreamWriter","writer","RecordBatchFileWriter","batches_1","batches_1_1","tableFromIPC","tableToIPC","ArrowTable","dataBuffer","indexBuffer","columnsBuffer","styler","columnIndex","isBlankCell","isIndexCell","isColumnsCell","classNames","dataColumnIndex","dataRowIndex","content","columnTypeId","nanos","__assign","ComponentMessageType","Streamlit","dataType","dataframeArgs","disabled","theme","_injectTheme","eventData","argsDataframe","argsDataframeArrow","style","isBigIntArray","StreamlitComponentBase","React","withStreamlitConnection","WrappedComponent","ComponentWrapper","fastDeepEqual","equal","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","randomUUID","native","v4","rnds","useEditedState","editingState","collectionService","entities","setEntities","useState","editingStateRef","useRef","useEffect","added","edited","entity","change","useNullableRenderData","renderData","setRenderData","onRenderEvent","tapOnce","RxDBDataframe","inited","setInited","querySubjectRef","subRef","editing_state","collection_config","db_config","with_rev","dbServiceRef","collectionServiceRef","initDb","useCallback","dbConfig","parsedDbConfig","initCollection","collectionConfig","query$","docssub","info","RxDBDataframe$1","ReactDOM.createRoot","jsx"],"mappings":"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CxB,CACD,OAAQ,CACN,KAAK,MAAQ,IAAIA,GACjB,KAAK,YAAc,CACpB,CACD,QAAQgB,EAAM,CACR,OAAOA,GAAS,WAClBA,EAAOH,GAAK,MAAMG,CAAI,GAExB,KAAK,MAAM,OAAOA,CAAI,EACtB,KAAK,aAAeA,EAAK,QAC1B,CAED,gBAAgBC,EAAYC,EAAS,CACpC,CACD,SAASC,EAAS,CAChB,IAAIC,EACAC,EAAe,KAAK,MAAM,UAAY,KAAK,UAAY,GACvDF,EACFE,EAAe,KAAK,KAAKA,CAAY,EAErCA,EAAe,KAAK,KAAKA,EAAe,GAAK,KAAK,eAAgB,CAAC,EAErE,MAAMC,EAAcD,EAAe,KAAK,UAClCE,EAAc,KAAK,IAAID,EAAc,EAAG,KAAK,MAAM,QAAQ,EACjE,GAAIA,EAAa,CACf,QAASE,EAAS,EAAGA,EAASF,EAAaE,GAAU,KAAK,UACxD,KAAK,gBAAgB,KAAK,MAAM,MAAOA,CAAM,EAE/CJ,EAAiB,KAAK,MAAM,MAAM,OAAO,EAAGE,CAAW,EACvD,KAAK,MAAM,UAAYC,CACxB,CACD,OAAO,IAAIvB,GAAUoB,EAAgBG,CAAW,CACjD,CACH,CACA,MAAME,WAAeV,EAAuB,CAC1C,OAAOW,EAAe,CACpB,YAAK,QAAQA,CAAa,EAC1B,KAAK,SAAQ,EACN,IACR,CACD,SAASA,EAAe,CAClBA,GACF,KAAK,QAAQA,CAAa,CAE7B,CACH,CAEA,MAAMrxB,GAAI,CACR,WACA,YACA,WACA,YACA,WACA,YACA,UACA,UACF,EACMG,GAAI,CACR,WACA,WACA,YACA,WACA,UACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACF,EACMoB,GAAI,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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,231,232,233,234,235,236,237,238,239,240,241,243,244,245,247,248,249,250,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383]} \ No newline at end of file diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/index.html b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/index.html new file mode 100644 index 0000000..2755f9a --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/index.html @@ -0,0 +1,13 @@ + + + + + RxdbDataframe + + + + +
+ + + diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/project.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/project.json new file mode 100644 index 0000000..10b7f85 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/project.json @@ -0,0 +1,8 @@ +{ + "name": "streamlit-rxdb-dataframe-frontend", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/streamlit-rxdb-dataframe/frontend/src", + "projectType": "application", + "targets": {}, + "tags": [] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/col.dump.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/col.dump.json new file mode 100644 index 0000000..78219b8 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/col.dump.json @@ -0,0 +1,27 @@ +{ + "name": "todo", + "schemaHash": "9b18d72e95209a29cdc5f4849e21dc3c7c399f7d0fa070f159820e80ec2dee29", + "docs": [ + { + "id": "a4c6a479-7cca-4d3b-ab90-45d3eaa957f3", + "title": "Check other examples", + "completed": false, + "createdAt": "2019-02-01T00:00:00.000Z", + "last_modified": 1548979200000 + }, + { + "id": "a4c6a479-7cca-4d3b-bc10-45d3eaa957r5", + "title": "Use \"@ngx-odm/rxdb\" in your project", + "completed": false, + "createdAt": "2023-10-27T11:05:10.931Z", + "last_modified": 1698404710931 + }, + { + "id": "ac3ef2c6-c98b-43e1-9047-71d68b1f92f4", + "title": "Open Todo list example", + "completed": true, + "createdAt": "2019-02-01T00:01:00.000Z", + "last_modified": 1546300800000 + } + ] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/db.dump.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/db.dump.json new file mode 100644 index 0000000..f6a9e1c --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/db.dump.json @@ -0,0 +1,33 @@ +{ + "name": "demo", + "instanceToken": "vhngmgjupw", + "collections": [ + { + "name": "todo", + "schemaHash": "9b18d72e95209a29cdc5f4849e21dc3c7c399f7d0fa070f159820e80ec2dee29", + "docs": [ + { + "id": "a4c6a479-7cca-4d3b-ab90-45d3eaa957f3", + "title": "Check other examples", + "completed": false, + "createdAt": 1548979200000, + "last_modified": 1548979200000 + }, + { + "id": "a4c6a479-7cca-4d3b-bc10-45d3eaa957r5", + "title": "Use \"@ngx-odm/rxdb\" in your project", + "completed": false, + "createdAt": 1698404710931, + "last_modified": 1698404710931 + }, + { + "id": "ac3ef2c6-c98b-43e1-9047-71d68b1f92f4", + "title": "Open Todo list example", + "completed": true, + "createdAt": 1546300800000, + "last_modified": 1546300800000 + } + ] + } + ] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/todo.schema.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/todo.schema.json new file mode 100644 index 0000000..653ec10 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/public/assets/data/todo.schema.json @@ -0,0 +1,44 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Todo", + "description": "Todo Schema", + "required": ["id", "title", "createdAt"], + "version": 0, + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id", + "pattern": "^(.*)$", + "maxLength": 36, + "readOnly": true + }, + "title": { + "type": "string", + "title": "Title", + "minLength": 3 + }, + "completed": { + "type": "boolean", + "title": "Done" + }, + "createdAt": { + "type": "string", + "title": "Created Date", + "format": "date-time", + "readOnly": true + }, + "last_modified": { + "type": "integer", + "format": "time", + "title": "Last Modified Date" + } + }, + "__indexes": ["createdAt"], + "primaryKey": "id", + "attachments": { + "encrypted": false + } +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframe.tsx b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframe.tsx new file mode 100644 index 0000000..ec43bee --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframe.tsx @@ -0,0 +1,109 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; +import { + RxDatabaseCreatorExtended, + getRxDatabaseCreator, + type RxCollectionCreatorExtended, +} from '@ngx-odm/rxdb/config'; +import { RxDBService } from '@ngx-odm/rxdb/core'; +import { NgxRxdbUtils } from '@ngx-odm/rxdb/utils'; +import React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react'; +import { + ComponentProps, + Streamlit, + withStreamlitConnection, +} from 'streamlit-component-lib'; +import { RxDBDataframeArgs } from './RxDBDataframeArgs'; +import { useEditedState } from './useEditingState'; +import { useNullableRenderData } from './useNullableRenderData'; +import equal from 'fast-deep-equal'; +import { BehaviorSubject, Subscription, distinctUntilChanged, withLatestFrom } from 'rxjs'; +import { MangoQuery } from 'rxdb'; + +const { logger, isEmptyObject, tapOnce } = NgxRxdbUtils; + +/** + * Dataframe example using Apache Arrow. + */ +const RxDBDataframe: React.FC = props => { + const [inited, setInited] = useState(); + const querySubjectRef = useRef>(); + const subRef = useRef(); + if (!subRef.current) { + subRef.current = new Subscription(); + } + if (!querySubjectRef.current) { + querySubjectRef.current = new BehaviorSubject({}); + } + const renderData = useNullableRenderData(subRef.current); + // Parse the render data + const { editing_state, collection_config, db_config, query, with_rev } = + renderData?.['args'] || ({} as RxDBDataframeArgs); + + const dbServiceRef = useRef(); + const collectionServiceRef = useRef(); + if (!dbServiceRef.current) { + dbServiceRef.current = new RxDBService(); + } + const collectionService = () => collectionServiceRef.current!; + + const [, setEntities] = useEditedState(editing_state, collectionService()); + + const initDb = useCallback((dbConfig: RxDatabaseCreatorExtended) => { + const parsedDbConfig = getRxDatabaseCreator(dbConfig); + return dbServiceRef.current!.initDb(parsedDbConfig); + }, []); + + const initCollection = useCallback( + async (collectionConfig: RxCollectionCreatorExtended) => { + if (!collectionServiceRef.current) { + collectionServiceRef.current = new RxDBCollectionService( + collectionConfig, + dbServiceRef.current! + ); + } + const query$ = querySubjectRef.current!.pipe(distinctUntilChanged(equal)); + const docssub = collectionService() + .docs(query$, with_rev) + .pipe( + // + tapOnce(() => setInited(true)), + withLatestFrom(collectionService().info()) + ) + .subscribe(([docs, info]) => { + if (!docs) { + return; + } + setEntities(docs); + Streamlit.setComponentValue({ + docs, + info, + query: querySubjectRef.current!.value, + }); + Streamlit.setFrameHeight(); + }); + subRef.current!.add(docssub); + logger.log('Collection & docs subscription initialized, with', query, with_rev); + }, + [] // eslint-disable-line + ); + + useEffect(() => { + if (!inited) { + return; + } + query && querySubjectRef.current!.next(query); + }, [inited, query]); // eslint-disable-line + + if (isEmptyObject(renderData)) return null; // Don't do anything at all + + if (!inited) { + initDb(db_config) + .then(() => initCollection(collection_config)) + .catch(logger.log); + } + + return props.args.element as ReactNode; +}; + +export default withStreamlitConnection(RxDBDataframe); diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframeArgs.ts b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframeArgs.ts new file mode 100644 index 0000000..e797022 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/RxDBDataframeArgs.ts @@ -0,0 +1,23 @@ +import type { + RxCollectionCreatorExtended, + RxDatabaseCreatorExtended, +} from '@ngx-odm/rxdb/config'; +import type { Entity, EntityId } from '@ngx-odm/rxdb/utils'; +import { MangoQuery } from 'rxdb'; +import { ArrowTable } from 'streamlit-component-lib'; + +export type DataframeEditingState = { + edited_rows: Record; + added_rows: Entity[]; + deleted_rows: number[]; +}; + +export interface RxDBDataframeArgs { + collection_config: RxCollectionCreatorExtended; + query?: MangoQuery; + with_rev?: boolean; + db_config: RxDatabaseCreatorExtended; + dataframe: ArrowTable; + data: Entity[]; + editing_state: DataframeEditingState; +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useEditingState.ts b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useEditingState.ts new file mode 100644 index 0000000..cc69391 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useEditingState.ts @@ -0,0 +1,75 @@ +import { RxDBCollectionService } from '@ngx-odm/rxdb/collection'; +import { NgxRxdbUtils, type Entity } from '@ngx-odm/rxdb/utils'; +import equal from 'fast-deep-equal'; +import { useEffect, useRef, useState } from 'react'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-expect-error +import { v4 as uuid } from 'uuid'; +import { DataframeEditingState } from './RxDBDataframeArgs'; + +const { logger, isEmpty } = NgxRxdbUtils; + +/** + * Custom hook that manages the editing state of a Dataframe. + * @param editingState - The editing state of the Dataframe. + * @param collectionService - The service used to interact with the RxDB collection. + * @returns A tuple containing the entities and a function to set the entities. + */ +export const useEditedState = ( + editingState: DataframeEditingState, + collectionService: RxDBCollectionService +): [Entity[] | undefined, React.Dispatch>] => { + const [entities, setEntities] = useState(); + const editingStateRef = useRef(editingState); + + useEffect(() => { + if ( + !entities || + isEmpty(editingState) || + equal(editingState, editingStateRef.current) + ) { + return; + } + editingStateRef.current = editingState; + + const { added_rows: added, edited_rows: edited, deleted_rows: deleted } = editingState; + + if (!isEmpty(added)) { + const docs = added.map(item => ({ + ...item, + id: uuid(), + createdAt: new Date().toISOString(), + last_modified: Date.now(), + })); + if (!docs.length) return; + collectionService.upsertBulk(docs).catch(error => logger.log('upsertBulk', error)); + } + + if (!isEmpty(deleted)) { + const ids: string[] = []; + deleted.forEach(rowIndex => { + const entity = entities.at(rowIndex); + if (entity) { + ids.push(entity.id); + } + }); + if (!ids.length) return; + collectionService.removeBulk(ids).catch(error => logger.log('removeBulk', error)); + } + + if (!isEmpty(edited)) { + const docs = Object.entries(edited).map(([rowIndex, change]) => { + const entity = entities.at(+rowIndex); + return { + ...entity, + ...change, + last_modified: Date.now(), + }; + }); + if (!docs.length) return; + collectionService.upsertBulk(docs).catch(error => logger.log('upsertBulk', error)); + } + }, [editingState, entities, collectionService]); + + return [entities, setEntities]; +}; diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useNullableRenderData.ts b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useNullableRenderData.ts new file mode 100644 index 0000000..63d3d10 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/lib/useNullableRenderData.ts @@ -0,0 +1,34 @@ +import { useState, useEffect } from 'react'; +import { Subscription } from 'rxjs'; +import { Streamlit, RenderData } from 'streamlit-component-lib'; +import { RxDBDataframeArgs } from './RxDBDataframeArgs'; + +/** + * Returns `RenderData` received from Streamlit after the first render event received. + * @param sub Subscriptions holder + */ +export const useNullableRenderData = ( + sub: Subscription +): RenderData | undefined => { + const [renderData, setRenderData] = useState>(); + + useEffect(() => { + const onRenderEvent = (event: Event): void => { + const renderEvent = event as CustomEvent; + setRenderData(renderEvent.detail); + }; + + // Set up event listeners, and signal to Streamlit that we're ready. + // We won't render the component until we receive the first RENDER_EVENT. + Streamlit.events.addEventListener(Streamlit.RENDER_EVENT, onRenderEvent); + Streamlit.setComponentReady(); + + const cleanup = () => { + Streamlit.events.removeEventListener(Streamlit.RENDER_EVENT, onRenderEvent); + sub.unsubscribe(); + }; + return cleanup; + }, []); + + return renderData; +}; diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/main.tsx b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/main.tsx new file mode 100644 index 0000000..f63dd0a --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/src/main.tsx @@ -0,0 +1,7 @@ +// import { StrictMode } from 'react'; +import * as ReactDOM from 'react-dom/client'; + +import RxDBDataframe from './lib/RxDBDataframe'; + +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); +root.render(); diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.app.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.app.json new file mode 100644 index 0000000..67cbbe0 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "types": [ + "node", + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts", + "vite/client", + "vitest/importMeta" + ] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/*.spec.tsx", + "src/**/*.test.tsx", + "src/**/*.spec.js", + "src/**/*.test.js", + "src/**/*.spec.jsx", + "src/**/*.test.jsx" + ], + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.json new file mode 100644 index 0000000..d252c07 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": false, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "isolatedModules": true, + "noEmit": true, + "types": ["vite/client", "vitest"] + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../../tsconfig.base.json" +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.spec.json b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.spec.json new file mode 100644 index 0000000..bd35c0d --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/tsconfig.spec.json @@ -0,0 +1,28 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest", + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/vite.config.ts b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/vite.config.ts new file mode 100644 index 0000000..1ccdb13 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/frontend/vite.config.ts @@ -0,0 +1,54 @@ +/* eslint-disable import/no-default-export */ +/// +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import react from '@vitejs/plugin-react-swc'; +import { defineConfig } from 'vite'; +// import json from 'vite-plugin-json'; +// import staticFiles from 'vite-plugin-static'; +// import jsonServer from 'vite-plugin-json-server'; + +export default defineConfig({ + logLevel: 'info', + root: __dirname, + cacheDir: '../../../../node_modules/.vite/packages/streamlit-rxdb-dataframe/frontend', + + server: { + port: 4201, + host: 'localhost', + }, + + preview: { + port: 4301, + host: 'localhost', + }, + + plugins: [ + // json(), + react({ tsDecorators: true, devTarget: 'es2022' }), + nxViteTsPaths(), + ], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + base: './', // This is needed to make compiled app work in Streamlit. + build: { + outDir: './build', + emptyOutDir: true, + reportCompressedSize: true, + terserOptions: { + mangle: false, + }, + sourcemap: true, + commonjsOptions: { + transformMixedEsModules: true, + }, + rollupOptions: { + output: { + entryFileNames: `[name].js`, // disable hash in file name + chunkFileNames: `[name].js`, // disable hash in chunk file name + }, + }, + }, +}); diff --git a/packages/streamlit-rxdb-dataframe/rxdb_dataframe/test___init__.py b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/test___init__.py new file mode 100644 index 0000000..2806314 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/rxdb_dataframe/test___init__.py @@ -0,0 +1,74 @@ +import pandas as pd +import pytest + +from rxdb_dataframe import get_dataframe_by_schema + + +def test_get_dataframe_by_schema(): + # Test case 1: Empty schema + schema = {} + expected_df = pd.DataFrame() + assert get_dataframe_by_schema(schema).equals(expected_df) + + # Test case 2: Schema with string properties + schema = { + "properties": { + "name": {"type": "string"}, + "age": {"type": "string"}, + "city": {"type": "string"}, + } + } + expected_df = pd.DataFrame( + { + "name": pd.Series(dtype="object"), + "age": pd.Series(dtype="object"), + "city": pd.Series(dtype="object"), + } + ) + assert get_dataframe_by_schema(schema).equals(expected_df) + + # Test case 3: Schema with boolean properties + schema = { + "properties": {"is_active": {"type": "boolean"}, "has_permission": {"type": "boolean"}} + } + expected_df = pd.DataFrame( + {"is_active": pd.Series(dtype="bool"), "has_permission": pd.Series(dtype="bool")} + ) + assert get_dataframe_by_schema(schema).equals(expected_df) + + +def test_get_dataframe_by_schema(): + # Test case 1: Empty schema + schema = {} + expected_df = pd.DataFrame() + assert get_dataframe_by_schema(schema).equals(expected_df) + + # Test case 2: Schema with string properties + schema = { + "properties": { + "name": {"type": "string"}, + "age": {"type": "string"}, + "city": {"type": "string"}, + } + } + expected_df = pd.DataFrame( + { + "name": pd.Series(dtype="object"), + "age": pd.Series(dtype="object"), + "city": pd.Series(dtype="object"), + } + ) + assert get_dataframe_by_schema(schema).equals(expected_df) + + # Test case 3: Schema with boolean properties + schema = { + "properties": {"is_active": {"type": "boolean"}, "has_permission": {"type": "boolean"}} + } + expected_df = pd.DataFrame( + {"is_active": pd.Series(dtype="bool"), "has_permission": pd.Series(dtype="bool")} + ) + assert get_dataframe_by_schema(schema).equals(expected_df) + + +if __name__ == "__main__": + pytest.main([__file__]) diff --git a/packages/streamlit-rxdb-dataframe/screencast.gif b/packages/streamlit-rxdb-dataframe/screencast.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b2647f385e09f1b7d24d576443ac88656448625 GIT binary patch literal 540827 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 -iXkaNt3i?i(gvD)!g2sPoJV;84rh=w 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

GN)|5O^Si zKZyxSISIf-BJp6%9Kg+FLA+1$5xIzfpXKj(Gse(n*=0yv9SL&d+?j1-GT46VAqKNC zA|aNUH!DH`R`_rGJXvIX=p_KL1JR&bXKoqIy}$4)AmwOW7r{B`%hhdQ`@-xVFYr>} z?Qx_H5SKj%y+3|(uv>bypR%d~{yByOMIs?c!n<`HCv3>!xv&d`Y3!Xd_bQM|#Ip?i z*(~zeYt4Wv>#TYuph}_8(dn5iD3pQpVnXTNZdaLmfHwOy&j3Z`RYoR2rD3T;m4|3p zxWoX`WEm;JKI2D(hZVxU_?%+kymRpxbW+BT2$06qSrPWxEHq#O_&Bm)YXZTpWOyVR zhL(d13y=UJI3fscjpO!a)8$E^ND?Tp8-B|$D_IpeZz~%@1dA|JJkfgF2yeClN{R&9 zzf2WjQ!=si&`A0km?5`A|4S|_N`R3~1iT{PJ}OA~9CRiT@=%$fgLXYu=?SMm!zmm( zCUkNt>x>CXO6-&$8Gb7j?mm^q=!PB}AYuyXF(#thS*kH)7`r(W=w>*rJ8Cjd1&E#I zWr4E`lQpoQ_Eb6n4Gq=ZgQqJ1-i3aj0hrEQTnzRAoLsO<0>#e3L~sCzS@2Qy06>9< z%pGzCyt$b`FxJ9y4n~)Q#u=kDm_X4Kg^R48#mav%0AGtg_aPGeX+w8?03}j&E*lMa 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 T=`T6KC`6zD9iM~;01W;g&smF9 literal 0 HcmV?d00001 diff --git a/packages/streamlit-rxdb-dataframe/screenshot.png b/packages/streamlit-rxdb-dataframe/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9fc64603db94e31a8c8bee527eccf0280f06e5 GIT binary patch literal 76390 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 literal 0 HcmV?d00001 diff --git a/packages/streamlit-rxdb-dataframe/setup.py b/packages/streamlit-rxdb-dataframe/setup.py new file mode 100644 index 0000000..99ed557 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/setup.py @@ -0,0 +1,33 @@ +import setuptools + +setuptools.setup( + name="streamlit-rxdb-dataframe", + version="0.0.1", + author="voznik", + author_email="", + author_url="github.com/voznik", + description="Custom DataFrame connecting RxDB collection", + long_description="Custom DataFrame connecting RxDB collection", + long_description_content_type="text/plain", + url="", + packages=setuptools.find_packages(), + include_package_data=True, + classifiers=[], + python_requires=">=3.7", + install_requires=[ + # By definition, a Custom Component depends on Streamlit. + # If your component has other Python dependencies, list + # them here. + "streamlit >= 0.66", + ], + extras_require={ + "devel": [ + "wheel", + "pytest==7.4.0", + "playwright==1.39.0", + "requests==2.31.0", + "pytest-playwright-snapshot==1.0", + "pytest-rerunfailures==12.0", + ] + } +) diff --git a/packages/streamlit-rxdb-dataframe/sonar-project.properties b/packages/streamlit-rxdb-dataframe/sonar-project.properties new file mode 100644 index 0000000..31e64cd --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/sonar-project.properties @@ -0,0 +1 @@ +sonar.exclusions=example.py,rxdb_dataframe/frontend/vite.config.ts,rxdb_dataframe/frontend/build diff --git a/packages/streamlit-rxdb-dataframe/tests/test_rxdb_dataframe.py b/packages/streamlit-rxdb-dataframe/tests/test_rxdb_dataframe.py new file mode 100644 index 0000000..404ca39 --- /dev/null +++ b/packages/streamlit-rxdb-dataframe/tests/test_rxdb_dataframe.py @@ -0,0 +1,70 @@ +import pandas as pd +from rxdb_dataframe import get_column_config, get_dataframe_by_schema + + +def test_get_column_config(): + schema = { + "properties": { + "name": {"type": "string", "maxLength": 50}, + "age": {"type": "integer", "min": 0, "max": 100}, + "is_active": {"type": "boolean"}, + "gender": {"type": "string", "enum": ["Male", "Female", "Other"]}, + "birth_date": {"type": "string", "format": "date-time"}, + }, + "required": ["name", "age"], + } + + column_config = get_column_config(schema) + + assert "name" in column_config + assert column_config["name"]["type_config"]["type"] == "text" + assert column_config["name"]["type_config"]["max_chars"] == 50 + + assert "age" in column_config + assert column_config["age"]["type_config"]["type"] == "number" + assert column_config["age"]["type_config"]["min_value"] == 0 + assert column_config["age"]["type_config"]["max_value"] == 100 + + assert "is_active" in column_config + assert column_config["is_active"]["type_config"]["type"] == "checkbox" + + assert "gender" in column_config + assert column_config["gender"]["type_config"]["type"] == "selectbox" + assert column_config["gender"]["type_config"]["options"] == ["Male", "Female", "Other"] + + assert "birth_date" in column_config + assert column_config["birth_date"]["type_config"]["type"] == "datetime" + assert column_config["birth_date"]["type_config"]["format"] == "YYYY-MM-DD HH:mm" + + +def test_get_dataframe_by_schema(): + # Test case 1: Empty schema + schema = {} + expected_df = pd.DataFrame() + assert get_dataframe_by_schema(schema).equals(expected_df) + + # Test case 2: Schema with string properties + schema = { + "properties": { + "name": {"type": "string"}, + "age": {"type": "string"}, + "city": {"type": "string"}, + } + } + expected_df = pd.DataFrame( + { + "name": pd.Series(dtype="object"), + "age": pd.Series(dtype="object"), + "city": pd.Series(dtype="object"), + } + ) + assert get_dataframe_by_schema(schema).equals(expected_df) + + # Test case 3: Schema with boolean properties + schema = { + "properties": {"is_active": {"type": "boolean"}, "has_permission": {"type": "boolean"}} + } + expected_df = pd.DataFrame( + {"is_active": pd.Series(dtype="bool"), "has_permission": pd.Series(dtype="bool")} + ) + assert get_dataframe_by_schema(schema).equals(expected_df) diff --git a/tools/scripts/utils.ts b/tools/scripts/utils.ts index b5fb922..b17723e 100644 --- a/tools/scripts/utils.ts +++ b/tools/scripts/utils.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-explicit-any */ import { exec, ExecOptions } from 'child_process'; import { resolve } from 'path'; diff --git a/tools/tsconfig.json b/tools/tsconfig.json new file mode 100644 index 0000000..178a664 --- /dev/null +++ b/tools/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.tools.json" +} diff --git a/tsconfig.base.json b/tsconfig.base.json index b73dc5e..66ba78a 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -25,6 +25,7 @@ "typeRoots": ["node_modules/@types"], "types": ["node"], "paths": { + "@ngx-odm/react": ["packages/react/src/index.ts"], "@ngx-odm/rxdb": ["dist/packages/rxdb", "packages/rxdb/src/index.ts"], "@ngx-odm/rxdb/collection": [ "dist/packages/rxdb/collection", @@ -35,6 +36,10 @@ "packages/rxdb/config/src/index.ts" ], "@ngx-odm/rxdb/core": ["dist/packages/rxdb/core", "packages/rxdb/core/src/index.ts"], + "@ngx-odm/rxdb/prepare": [ + "dist/packages/rxdb/prepare", + "packages/rxdb/prepare/src/index.ts" + ], "@ngx-odm/rxdb/query-params": [ "dist/packages/rxdb/query-params", "packages/rxdb/query-params/src/index.ts" @@ -47,6 +52,7 @@ "dist/packages/rxdb/signals", "packages/rxdb/signals/src/index.ts" ], + "@ngx-odm/rxdb/sreamlit": ["packages/streamlit-rxdb-dataframe-frontend/src/index.ts"], "@ngx-odm/rxdb/testing": [ "dist/packages/rxdb/testing", "packages/rxdb/testing/src/index.ts"