From 0203a9bef8063a6f260d7e6bd953d22104fd8086 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Wed, 13 May 2026 10:55:42 +0200 Subject: [PATCH 1/4] Supabase init. --- supabase-example/README.md | 32 + supabase-example/frontend/.env | 6 + supabase-example/frontend/.env.template | 6 + supabase-example/frontend/.gitignore | 47 + supabase-example/frontend/CHANGELOG.md | 296 + supabase-example/frontend/LICENSE | 121 + supabase-example/frontend/README.md | 66 + supabase-example/frontend/package.json | 43 + supabase-example/frontend/pnpm-lock.yaml | 5749 +++++++++++++++++ supabase-example/frontend/pnpm-workspace.yaml | 2 + supabase-example/frontend/public/favicon.ico | Bin 0 -> 1576 bytes .../frontend/public/icons/icon-192x192.png | Bin 0 -> 27110 bytes .../frontend/public/icons/icon-256x256.png | Bin 0 -> 42070 bytes .../frontend/public/icons/icon-384x384.png | Bin 0 -> 74557 bytes .../frontend/public/icons/icon-512x512.png | Bin 0 -> 109318 bytes .../frontend/public/icons/icon.png | Bin 0 -> 76918 bytes .../frontend/public/powersync-logo.svg | 1 + .../frontend/public/supabase-logo.png | Bin 0 -> 46427 bytes .../frontend/src/app/auth/login/page.tsx | 32 + .../frontend/src/app/auth/register/page.tsx | 40 + supabase-example/frontend/src/app/globals.css | 12 + supabase-example/frontend/src/app/index.tsx | 18 + supabase-example/frontend/src/app/page.tsx | 71 + supabase-example/frontend/src/app/router.tsx | 99 + .../frontend/src/app/utils/fts_helpers.ts | 39 + .../frontend/src/app/utils/fts_setup.ts | 65 + .../frontend/src/app/utils/helpers.ts | 36 + .../frontend/src/app/views/layout.tsx | 159 + .../src/app/views/sql-console/page.tsx | 125 + .../src/app/views/todo-lists/edit/page.tsx | 150 + .../src/app/views/todo-lists/page.tsx | 100 + .../components/navigation/NavigationPage.tsx | 24 + .../navigation/NavigationPanelContext.tsx | 21 + .../components/providers/SystemProvider.tsx | 117 + .../providers/ThemeProviderContainer.tsx | 20 + .../src/components/widgets/GuardBySync.tsx | 41 + .../src/components/widgets/ListItemWidget.tsx | 93 + .../components/widgets/LoginDetailsWidget.tsx | 166 + .../components/widgets/SearchBarWidget.tsx | 104 + .../src/components/widgets/TodoItemWidget.tsx | 91 + .../components/widgets/TodoListsWidget.tsx | 35 + .../frontend/src/generated/api.d.ts | 122 + supabase-example/frontend/src/index.html | 12 + .../src/library/powersync/AppSchema.ts | 35 + .../library/powersync/SupabaseConnector.ts | 137 + .../src/library/powersync/vite-env.d.ts | 11 + supabase-example/frontend/tsconfig.json | 29 + supabase-example/frontend/vite.config.mts | 71 + supabase-example/powersync/.env.template | 13 + supabase-example/powersync/.gitignore | 1 + .../powersync/config/powersync.yaml | 37 + .../powersync/config/sync_rules.yaml | 17 + .../powersync/docker-compose.yaml | 64 + .../supabase/.branches/_current_branch | 1 + supabase-example/supabase/.env.local | 1 + supabase-example/supabase/.gitignore | 47 + supabase-example/supabase/.temp/cli-latest | 1 + supabase-example/supabase/config.toml | 157 + supabase-example/supabase/deno.json | 7 + supabase-example/supabase/deno.lock | 328 + .../supabase/functions/data/errors.ts | 16 + .../supabase/functions/data/generated/api.ts | 122 + .../supabase/functions/data/index.ts | 69 + .../functions/data/mapping/default.ts | 13 + .../supabase/functions/data/mapping/index.ts | 2 + .../supabase/functions/data/mapping/types.ts | 14 + .../supabase/functions/data/openapi.json | 168 + .../supabase/functions/data/openapi.yaml | 129 + .../data/persistance/postgres-persistance.ts | 116 + .../supabase/functions/data/types.ts | 22 + .../supabase/node_modules/@types/pg | 1 + .../supabase/node_modules/js-yaml | 1 + .../supabase/node_modules/openapi-backend | 1 + .../supabase/node_modules/openapi-typescript | 1 + supabase-example/supabase/node_modules/pg | 1 + supabase-example/supabase/package.json | 12 + supabase-example/supabase/pnpm-lock.yaml | 260 + .../supabase/scripts/yaml-to-json.mjs | 10 + supabase-example/supabase/setup.sh | 20 + supabase-example/supabase/signing_key.json | 17 + 80 files changed, 10113 insertions(+) create mode 100644 supabase-example/README.md create mode 100644 supabase-example/frontend/.env create mode 100644 supabase-example/frontend/.env.template create mode 100644 supabase-example/frontend/.gitignore create mode 100644 supabase-example/frontend/CHANGELOG.md create mode 100644 supabase-example/frontend/LICENSE create mode 100644 supabase-example/frontend/README.md create mode 100644 supabase-example/frontend/package.json create mode 100644 supabase-example/frontend/pnpm-lock.yaml create mode 100644 supabase-example/frontend/pnpm-workspace.yaml create mode 100644 supabase-example/frontend/public/favicon.ico create mode 100644 supabase-example/frontend/public/icons/icon-192x192.png create mode 100644 supabase-example/frontend/public/icons/icon-256x256.png create mode 100644 supabase-example/frontend/public/icons/icon-384x384.png create mode 100644 supabase-example/frontend/public/icons/icon-512x512.png create mode 100644 supabase-example/frontend/public/icons/icon.png create mode 100644 supabase-example/frontend/public/powersync-logo.svg create mode 100644 supabase-example/frontend/public/supabase-logo.png create mode 100644 supabase-example/frontend/src/app/auth/login/page.tsx create mode 100644 supabase-example/frontend/src/app/auth/register/page.tsx create mode 100644 supabase-example/frontend/src/app/globals.css create mode 100644 supabase-example/frontend/src/app/index.tsx create mode 100644 supabase-example/frontend/src/app/page.tsx create mode 100644 supabase-example/frontend/src/app/router.tsx create mode 100644 supabase-example/frontend/src/app/utils/fts_helpers.ts create mode 100644 supabase-example/frontend/src/app/utils/fts_setup.ts create mode 100644 supabase-example/frontend/src/app/utils/helpers.ts create mode 100644 supabase-example/frontend/src/app/views/layout.tsx create mode 100644 supabase-example/frontend/src/app/views/sql-console/page.tsx create mode 100644 supabase-example/frontend/src/app/views/todo-lists/edit/page.tsx create mode 100644 supabase-example/frontend/src/app/views/todo-lists/page.tsx create mode 100644 supabase-example/frontend/src/components/navigation/NavigationPage.tsx create mode 100644 supabase-example/frontend/src/components/navigation/NavigationPanelContext.tsx create mode 100644 supabase-example/frontend/src/components/providers/SystemProvider.tsx create mode 100644 supabase-example/frontend/src/components/providers/ThemeProviderContainer.tsx create mode 100644 supabase-example/frontend/src/components/widgets/GuardBySync.tsx create mode 100644 supabase-example/frontend/src/components/widgets/ListItemWidget.tsx create mode 100644 supabase-example/frontend/src/components/widgets/LoginDetailsWidget.tsx create mode 100644 supabase-example/frontend/src/components/widgets/SearchBarWidget.tsx create mode 100644 supabase-example/frontend/src/components/widgets/TodoItemWidget.tsx create mode 100644 supabase-example/frontend/src/components/widgets/TodoListsWidget.tsx create mode 100644 supabase-example/frontend/src/generated/api.d.ts create mode 100644 supabase-example/frontend/src/index.html create mode 100644 supabase-example/frontend/src/library/powersync/AppSchema.ts create mode 100644 supabase-example/frontend/src/library/powersync/SupabaseConnector.ts create mode 100644 supabase-example/frontend/src/library/powersync/vite-env.d.ts create mode 100644 supabase-example/frontend/tsconfig.json create mode 100644 supabase-example/frontend/vite.config.mts create mode 100644 supabase-example/powersync/.env.template create mode 100644 supabase-example/powersync/.gitignore create mode 100644 supabase-example/powersync/config/powersync.yaml create mode 100644 supabase-example/powersync/config/sync_rules.yaml create mode 100644 supabase-example/powersync/docker-compose.yaml create mode 100644 supabase-example/supabase/.branches/_current_branch create mode 100644 supabase-example/supabase/.env.local create mode 100644 supabase-example/supabase/.gitignore create mode 100644 supabase-example/supabase/.temp/cli-latest create mode 100644 supabase-example/supabase/config.toml create mode 100644 supabase-example/supabase/deno.json create mode 100644 supabase-example/supabase/deno.lock create mode 100644 supabase-example/supabase/functions/data/errors.ts create mode 100644 supabase-example/supabase/functions/data/generated/api.ts create mode 100644 supabase-example/supabase/functions/data/index.ts create mode 100644 supabase-example/supabase/functions/data/mapping/default.ts create mode 100644 supabase-example/supabase/functions/data/mapping/index.ts create mode 100644 supabase-example/supabase/functions/data/mapping/types.ts create mode 100644 supabase-example/supabase/functions/data/openapi.json create mode 100644 supabase-example/supabase/functions/data/openapi.yaml create mode 100644 supabase-example/supabase/functions/data/persistance/postgres-persistance.ts create mode 100644 supabase-example/supabase/functions/data/types.ts create mode 120000 supabase-example/supabase/node_modules/@types/pg create mode 120000 supabase-example/supabase/node_modules/js-yaml create mode 120000 supabase-example/supabase/node_modules/openapi-backend create mode 120000 supabase-example/supabase/node_modules/openapi-typescript create mode 120000 supabase-example/supabase/node_modules/pg create mode 100644 supabase-example/supabase/package.json create mode 100644 supabase-example/supabase/pnpm-lock.yaml create mode 100644 supabase-example/supabase/scripts/yaml-to-json.mjs create mode 100755 supabase-example/supabase/setup.sh create mode 100644 supabase-example/supabase/signing_key.json diff --git a/supabase-example/README.md b/supabase-example/README.md new file mode 100644 index 0000000..85c353c --- /dev/null +++ b/supabase-example/README.md @@ -0,0 +1,32 @@ +# PowerSync + Supabase Demo + +Self-contained demo of PowerSync against a local Supabase project. Three +pieces: + +``` +supabase-example/ +├── powersync/ # PowerSync service + Mongo (docker-compose) +├── supabase/ # Supabase project (config, migrations, Edge Function, RPC) +└── frontend/ # React/Vite todolist +``` + +## Quick start + +```bash +# 1. Start Supabase (generates signing key on first run) +cd supabase && ./setup.sh +supabase functions serve data + +# 2. Start PowerSync + Mongo +cd ../powersync && cp .env.template .env && docker compose up -d + +# 3. Start the frontend +cd ../frontend && pnpm install && cp .env.template .env && pnpm dev +``` + +- Frontend: http://localhost:5173 +- PowerSync: http://localhost:8080 +- Supabase API: http://localhost:54321 +- Supabase Studio: http://127.0.0.1:54323 + +See `powersync/README.md` for stack details (networking, JWKS, teardown). diff --git a/supabase-example/frontend/.env b/supabase-example/frontend/.env new file mode 100644 index 0000000..aa56b90 --- /dev/null +++ b/supabase-example/frontend/.env @@ -0,0 +1,6 @@ +# Copy this template: `cp .env.local.template .env.local` +# Edit .env.local and enter your Supabase and PowerSync project details. +VITE_SUPABASE_URL=http://localhost:54321 +VITE_SUPABASE_ANON_KEY=sb_publishable_ACJWlzQHlZjBrEguHvfOxg_3BJgxAaH +VITE_POWERSYNC_URL=http://localhost:8080 + diff --git a/supabase-example/frontend/.env.template b/supabase-example/frontend/.env.template new file mode 100644 index 0000000..aa56b90 --- /dev/null +++ b/supabase-example/frontend/.env.template @@ -0,0 +1,6 @@ +# Copy this template: `cp .env.local.template .env.local` +# Edit .env.local and enter your Supabase and PowerSync project details. +VITE_SUPABASE_URL=http://localhost:54321 +VITE_SUPABASE_ANON_KEY=sb_publishable_ACJWlzQHlZjBrEguHvfOxg_3BJgxAaH +VITE_POWERSYNC_URL=http://localhost:8080 + diff --git a/supabase-example/frontend/.gitignore b/supabase-example/frontend/.gitignore new file mode 100644 index 0000000..0cc2f13 --- /dev/null +++ b/supabase-example/frontend/.gitignore @@ -0,0 +1,47 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# ide +.idea +.fleet +.vscode + +# PWA +**/public/workbox-*.js +**/public/sw.js +**/public/swe-worker-* +**/public/worker-*.js +**/public/fallback-*.js diff --git a/supabase-example/frontend/CHANGELOG.md b/supabase-example/frontend/CHANGELOG.md new file mode 100644 index 0000000..ff00bb8 --- /dev/null +++ b/supabase-example/frontend/CHANGELOG.md @@ -0,0 +1,296 @@ +# react-supabase-todolist + +## 0.3.16 + +### Patch Changes + +- @powersync/react@1.3.7 +- @powersync/web@1.2.4 + +## 0.3.15 + +### Patch Changes + +- Updated dependencies [31c61b9] + - @powersync/react@1.3.6 + - @powersync/web@1.2.3 + +## 0.3.14 + +### Patch Changes + +- cfd54e3: Locking `swc/core` dependency to `~1.6.0` to fix builds of demos using vite. +- Updated dependencies [a1b52be] + - @powersync/web@1.2.2 + +## 0.3.13 + +### Patch Changes + +- 27126e6: Ensuring that SupabaseConnector's error codes are evaluated when processing upload queue. +- Updated dependencies [8d5b702] + - @powersync/web@1.2.1 + +## 0.3.12 + +### Patch Changes + +- Updated dependencies [dca599f] + - @powersync/web@1.2.0 + +## 0.3.11 + +### Patch Changes + +- Updated dependencies [590ee67] + - @powersync/web@1.1.0 + +## 0.3.10 + +### Patch Changes + +- @powersync/web@1.0.2 + +## 0.3.9 + +### Patch Changes + +- @powersync/web@1.0.1 + +## 0.3.8 + +### Patch Changes + +- e86e61d: Update PowerSync branding +- Updated dependencies [32dc7e3] +- Updated dependencies [e86e61d] + - @powersync/web@1.0.0 + +## 0.3.7 + +### Patch Changes + +- Updated dependencies [c3f29a1] + - @powersync/web@0.8.1 + +## 0.3.6 + +### Patch Changes + +- Updated dependencies [7943626] +- Updated dependencies [48cc01c] + - @powersync/web@0.8.0 + - @powersync/react@1.3.5 + +## 0.3.5 + +### Patch Changes + +- Updated dependencies [62e43aa] +- Updated dependencies [6b01811] + - @powersync/web@0.7.0 + - @powersync/react@1.3.4 + +## 0.3.4 + +### Patch Changes + +- c3588c0: Updated the vite conf include rules for bson, buffer, rsocket and cross-fetch. + +## 0.3.3 + +### Patch Changes + +- Updated dependencies [f5e42af] + - @powersync/react@1.3.3 + - @powersync/web@0.6.1 + +## 0.3.2 + +### Patch Changes + +- 9d1dc6f: Updated Vite config for BSON library +- Updated dependencies [395ea24] +- Updated dependencies [9d1dc6f] + - @powersync/web@0.6.0 + - @powersync/react@1.3.2 + +## 0.3.1 + +### Patch Changes + +- @powersync/react@1.3.1 +- @powersync/web@0.5.3 + +## 0.3.0 + +### Minor Changes + +- d62f367: Deprecate usePowerSyncStatus, usePowerSyncQuery and usePowerSyncWatchedQuery in favor of useQuery and useStatus + +### Patch Changes + +- Updated dependencies [c94be6a] +- Updated dependencies [d62f367] + - @powersync/react@1.3.0 + - @powersync/web@0.5.2 + +## 0.2.7 + +### Patch Changes + +- 371e8ce: Updated Vite Demo apps' `include` entries to use nested dependency syntax, fixes issue with CJS nested dependencies. + +## 0.2.6 + +### Patch Changes + +- Updated dependencies [385edf8] +- Updated dependencies [ffe37cf] + - @powersync/react@1.2.0 + - @powersync/web@0.5.1 + +## 0.2.5 + +### Patch Changes + +- Updated dependencies [3aaee03] + - @journeyapps/powersync-sdk-web@0.5.0 + - @journeyapps/powersync-react@1.1.3 + +## 0.2.4 + +### Patch Changes + +- @journeyapps/powersync-react@1.1.2 +- @journeyapps/powersync-sdk-web@0.4.1 + +## 0.2.3 + +### Patch Changes + +- Updated dependencies [6c43ec6] +- Updated dependencies [8f7caa5] + - @journeyapps/powersync-sdk-web@0.4.0 + - @journeyapps/powersync-react@1.1.1 + +## 0.2.2 + +### Patch Changes + +- Updated dependencies [9bf5a76] + - @journeyapps/powersync-react@1.1.0 + - @journeyapps/powersync-sdk-web@0.3.3 + +## 0.2.1 + +### Patch Changes + +- Updated dependencies [8fc2164] + - @journeyapps/powersync-sdk-web@0.3.2 + - @journeyapps/powersync-react@1.0.8 + +## 0.2.0 + +### Minor Changes + +- 949940e: Configuration is now done via `.env`/`.env.local` files instead of directly in code. `AppConfig.ts` now references `process.env`. Updated project to have EAS build support. + +### Patch Changes + +- Updated dependencies [37e266d] +- Updated dependencies [77b3078] +- Updated dependencies [37e266d] + - @journeyapps/powersync-sdk-web@0.3.1 + - @journeyapps/powersync-react@1.0.7 + +## 0.1.12 + +### Patch Changes + +- Updated dependencies [1aed928] +- Updated dependencies [aede9e7] + - @journeyapps/powersync-sdk-web@0.3.0 + - @journeyapps/powersync-react@1.0.6 + +## 0.1.11 + +### Patch Changes + +- Updated dependencies [e472f17] + - @journeyapps/powersync-sdk-web@0.2.3 + +## 0.1.10 + +### Patch Changes + +- Updated dependencies [69592d0] + - @journeyapps/powersync-sdk-web@0.2.2 + - @journeyapps/powersync-react@1.0.5 + +## 0.1.9 + +### Patch Changes + +- @journeyapps/powersync-react@1.0.4 +- @journeyapps/powersync-sdk-web@0.2.1 + +## 0.1.8 + +### Patch Changes + +- Updated dependencies [d20386c] + - @journeyapps/powersync-sdk-web@0.2.0 + +## 0.1.7 + +### Patch Changes + +- Updated dependencies [412937f] + - @journeyapps/powersync-sdk-web@0.1.3 + +## 0.1.6 + +### Patch Changes + +- 7fb9df2: Autofocus inputs in creation dialogs for a better UX. +- Updated dependencies [7fb9df2] +- Updated dependencies [7fb9df2] + - @journeyapps/powersync-sdk-web@0.1.2 + +## 0.1.5 + +### Patch Changes + +- Updated dependencies [0e17713] + - @journeyapps/powersync-sdk-web@0.1.1 + +## 0.1.4 + +### Patch Changes + +- 1fa25e6: Added uploading and downloading status indicator. +- Updated dependencies [1fa25e6] + - @journeyapps/powersync-sdk-web@0.1.0 + +## 0.1.3 + +### Patch Changes + +- 0bc3758: Added PWA support. Better initialization of client side PowerSync instance. +- Updated dependencies [0bc3758] + - @journeyapps/powersync-sdk-web@0.0.3 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies [5d9cbb9] + - @journeyapps/powersync-sdk-web@0.0.2 + +## 0.1.1 + +### Patch Changes + +- Updated dependencies [af78f76] + - @journeyapps/powersync-sdk-web@0.0.1 diff --git a/supabase-example/frontend/LICENSE b/supabase-example/frontend/LICENSE new file mode 100644 index 0000000..1625c17 --- /dev/null +++ b/supabase-example/frontend/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. \ No newline at end of file diff --git a/supabase-example/frontend/README.md b/supabase-example/frontend/README.md new file mode 100644 index 0000000..5518cd8 --- /dev/null +++ b/supabase-example/frontend/README.md @@ -0,0 +1,66 @@ +# PowerSync + Supabase Web Demo: Todo List + +## Overview + +Demo app demonstrating use of the [PowerSync SDK for Web](https://www.npmjs.com/package/@powersync/web) together with Supabase. + +This demo uses [Sync Streams](https://docs.powersync.com/usage/sync-streams). Both lists and todos are auto-subscribed. + +## Run Demo + +Prerequisites: +* To run this demo, you need to have properly configured Supabase and PowerSync projects. Follow the instructions in our Supabase<>PowerSync integration guide: + * [Configure Supabase](https://docs.powersync.com/integration-guides/supabase-+-powersync#configure-supabase) + * [Configure PowerSync](https://docs.powersync.com/integration-guides/supabase-+-powersync#configure-powersync) + +Switch into the demo's directory: + +```bash +cd demos/react-supabase-todolist +``` + +Use [pnpm](https://pnpm.io/installation) to install dependencies: + +```bash +pnpm install +``` + +Set up the Environment variables: Copy the `.env.local.template` file: + +```bash +cp .env.local.template .env.local +``` + +And then edit `.env.local` to insert your credentials for Supabase. + +Run the development server: + +```bash +pnpm dev +``` + +Open [http://localhost:5173](http://localhost:5173) with your browser to see the result. + +## Progressive Web App (PWA) + +This demo is PWA compatible, and works fully offline. PWA is not available in development (watch) mode. The manifest and service worker is built using [vite-plugin-pwa](https://vite-pwa-org.netlify.app/). + +Build the production codebase: + +```bash +pnpm build +``` + +Run the production server: + +```bash +pnpm preview +``` + +Open a browser on the served URL and install the PWA. + +## Learn More + +Check out [the PowerSync Web SDK on GitHub](https://github.com/powersync-ja/powersync-js/tree/main/packages/web) - your feedback and contributions are welcome! + +To learn more about PowerSync, see the [PowerSync docs](https://docs.powersync.com). diff --git a/supabase-example/frontend/package.json b/supabase-example/frontend/package.json new file mode 100644 index 0000000..0b634ce --- /dev/null +++ b/supabase-example/frontend/package.json @@ -0,0 +1,43 @@ +{ + "name": "react-supabase-todolist", + "version": "0.3.16", + "private": true, + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview", + "start": "pnpm build && pnpm preview", + "generate": "openapi-typescript ../supabase/functions/data/openapi.yaml -o src/generated/api.d.ts" + }, + "dependencies": { + "@powersync/react": "^1.10.0", + "@powersync/web": "^1.38.0", + "@emotion/react": "11.11.4", + "@emotion/styled": "11.11.5", + "@journeyapps/wa-sqlite": "^1.7.0", + "@mui/icons-material": "^5.15.12", + "@mui/material": "^5.15.12", + "@mui/x-data-grid": "^6.19.6", + "@supabase/supabase-js": "^2.39.7", + "formik": "^2.4.6", + "lodash": "^4.17.21", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.22.3" + }, + "devDependencies": { + "@swc/core": "~1.6.0", + "@types/lodash": "^4.14.202", + "@types/node": "^20.11.25", + "@types/react": "^18.2.64", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.18", + "babel-loader": "^9.1.3", + "openapi-typescript": "^7.13.0", + "typescript": "^5.4.2", + "vite": "^5.1.5", + "vite-plugin-pwa": "^0.19.2" + }, + "packageManager": "pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee" +} diff --git a/supabase-example/frontend/pnpm-lock.yaml b/supabase-example/frontend/pnpm-lock.yaml new file mode 100644 index 0000000..6964355 --- /dev/null +++ b/supabase-example/frontend/pnpm-lock.yaml @@ -0,0 +1,5749 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@emotion/react': + specifier: 11.11.4 + version: 11.11.4(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': + specifier: 11.11.5 + version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@journeyapps/wa-sqlite': + specifier: ^1.7.0 + version: 1.7.0 + '@mui/icons-material': + specifier: ^5.15.12 + version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/material': + specifier: ^5.15.12 + version: 5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-data-grid': + specifier: ^6.19.6 + version: 6.20.4(@mui/material@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@powersync/react': + specifier: ^1.10.0 + version: 1.10.0(@powersync/common@1.53.0)(react@18.3.1) + '@powersync/web': + specifier: ^1.38.0 + version: 1.38.0(@journeyapps/wa-sqlite@1.7.0)(@powersync/common@1.53.0) + '@supabase/supabase-js': + specifier: ^2.39.7 + version: 2.105.4 + formik: + specifier: ^2.4.6 + version: 2.4.9(@types/react@18.3.28)(react@18.3.1) + lodash: + specifier: ^4.17.21 + version: 4.18.1 + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + react-router-dom: + specifier: ^6.22.3 + version: 6.30.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@swc/core': + specifier: ~1.6.0 + version: 1.6.13 + '@types/lodash': + specifier: ^4.14.202 + version: 4.17.24 + '@types/node': + specifier: ^20.11.25 + version: 20.19.40 + '@types/react': + specifier: ^18.2.64 + version: 18.3.28 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.7(@types/react@18.3.28) + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.7.0(vite@5.4.21(@types/node@20.19.40)(terser@5.47.1)) + autoprefixer: + specifier: ^10.4.18 + version: 10.5.0(postcss@8.5.14) + babel-loader: + specifier: ^9.1.3 + version: 9.2.1(@babel/core@7.29.0)(webpack@5.106.2(@swc/core@1.6.13)(postcss@8.5.14)) + openapi-typescript: + specifier: ^7.13.0 + version: 7.13.0(typescript@5.9.3) + typescript: + specifier: ^5.4.2 + version: 5.9.3 + vite: + specifier: ^5.1.5 + version: 5.4.21(@types/node@20.19.40)(terser@5.47.1) + vite-plugin-pwa: + specifier: ^0.19.2 + version: 0.19.8(vite@5.4.21(@types/node@20.19.40)(terser@5.47.1))(workbox-build@7.4.1(@types/babel__core@7.20.5))(workbox-window@7.4.1) + +packages: + + '@apideck/better-ajv-errors@0.3.7': + resolution: {integrity: sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.3': + resolution: {integrity: sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3': + resolution: {integrity: sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.0': + resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.4': + resolution: {integrity: sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.0': + resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.5': + resolution: {integrity: sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.11.4': + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.11.5': + resolution: {integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} + + '@journeyapps/wa-sqlite@1.7.0': + resolution: {integrity: sha512-xQZ670aKDo4FWxIFpLqY0AGDpURr09aYIO08UkLdWvFw8C018nCiqY0ILJudGRhRdXORhv7K2xD2OXZ2QxU39w==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mui/core-downloads-tracker@5.18.0': + resolution: {integrity: sha512-jbhwoQ1AY200PSSOrNXmrFCaSDSJWP7qk6urkTmIirvRXDROkqe+QwcLlUiw/PrREwsIF/vm3/dAXvjlMHF0RA==} + + '@mui/icons-material@5.18.0': + resolution: {integrity: sha512-1s0vEZj5XFXDMmz3Arl/R7IncFqJ+WQ95LDp1roHWGDE2oCO3IS4/hmiOv1/8SD9r6B7tv9GLiqVZYHo+6PkTg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/material@5.18.0': + resolution: {integrity: sha512-bbH/HaJZpFtXGvWg3TsBWG4eyt3gah3E7nCNU8GLyRjVoWcA91Vm/T+sjHfUcwgJSw9iLtucfHBoq+qW/T30aA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/private-theming@5.17.1': + resolution: {integrity: sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/styled-engine@5.18.0': + resolution: {integrity: sha512-BN/vKV/O6uaQh2z5rXV+MBlVrEkwoS/TK75rFQ2mjxA7+NBo8qtTAOA4UaM0XeJfn7kh2wZ+xQw2HAx0u+TiBg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/system@5.18.0': + resolution: {integrity: sha512-ojZGVcRWqWhu557cdO3pWHloIGJdzVtxs3rk0F9L+x55LsUjcMUVkEhiF7E4TMxZoF9MmIHGGs0ZX3FDLAf0Xw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/types@7.2.24': + resolution: {integrity: sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/utils@5.17.1': + resolution: {integrity: sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/x-data-grid@6.20.4': + resolution: {integrity: sha512-I0JhinVV4e25hD2dB+R6biPBtpGeFrXf8RwlMPQbr9gUggPmPmNtWKo8Kk2PtBBMlGtdMAgHWe7PqhmucUxU1w==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@mui/material': ^5.4.1 + '@mui/system': ^5.4.1 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@powersync/common@1.53.0': + resolution: {integrity: sha512-RIlpwa8uYEwljZBt+pucRAd6RrpT6wwZN1SC4euBy1ymlSHaFq481q9yhYUlkoxkmWD/AZTL6mULH1dXhhqXYQ==} + + '@powersync/react@1.10.0': + resolution: {integrity: sha512-orM29qocbF8zYTBM27j9nPNztyplpbNVaw8djpqxl8N2wESqHTbHOKpatg+Fa5aofgjzmrkiGwevJvCbiWYYWQ==} + peerDependencies: + '@powersync/common': ^1.51.0 + react: '*' + + '@powersync/web@1.38.0': + resolution: {integrity: sha512-XqNkgwYySRQJpTwWjg3coSm1Z8oF++HnYu8RD87fNTnE5IDeOi+HpT1Q3zd2uSirtB33sbWly8026xb0VViPtw==} + hasBin: true + peerDependencies: + '@journeyapps/wa-sqlite': ^1.5.0 + '@powersync/common': ^1.53.0 + + '@redocly/ajv@8.11.2': + resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} + + '@redocly/config@0.22.0': + resolution: {integrity: sha512-gAy93Ddo01Z3bHuVdPWfCwzgfaYgMdaZPcfL7JZ7hWJoK9V0lXDbigTWkhiPFAaLWzbOJ+kbUQG1+XwIm0KRGQ==} + + '@redocly/openapi-core@1.34.14': + resolution: {integrity: sha512-y+xFx+Zz54Xhr8jUdnLENYnt7Y7GEDL6Q03ga7rTtX8DVwefX9H+hQEPgJp1nda7vdH+wJ9/HBVvyfBuW9x6rA==} + engines: {node: '>=18.17.0', npm: '>=9.5.0'} + + '@remix-run/router@1.23.2': + resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} + engines: {node: '>=14.0.0'} + + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/plugin-babel@6.1.0': + resolution: {integrity: sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + rollup: + optional: true + + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-terser@1.0.0': + resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.60.3': + resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.60.3': + resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.60.3': + resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.60.3': + resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.60.3': + resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.60.3': + resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.60.3': + resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.60.3': + resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.60.3': + resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.3': + resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.3': + resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.60.3': + resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.60.3': + resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.60.3': + resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.60.3': + resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.60.3': + resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.3': + resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.3': + resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.60.3': + resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.60.3': + resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.3': + resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==} + cpu: [x64] + os: [win32] + + '@supabase/auth-js@2.105.4': + resolution: {integrity: sha512-Ejfa37M5xoIwoxVebxRahnwubPo8g22qkXQ4p50+N9MIvU9UZoN+A8dwVPtczzGf8oV/YXN80ZPxK4aWXuSN/A==} + engines: {node: '>=20.0.0'} + + '@supabase/functions-js@2.105.4': + resolution: {integrity: sha512-JVNKbBft3Qkja+WlGaE026AJ2AH9K0UTsxsfvEIHgd4zFrBor4BYRCrYFrv9IDsvVqkF72wKDsODJl5GY/C4tA==} + engines: {node: '>=20.0.0'} + + '@supabase/phoenix@0.4.2': + resolution: {integrity: sha512-YSAGnmDAfuleFCVt3CeurQZAhxRfXWeZIIkwp7NhYzQ1UwW6ePSnzsFAiUm/mbCkfoCf70QQHKW/K6RKh52a4A==} + + '@supabase/postgrest-js@2.105.4': + resolution: {integrity: sha512-SppIyLo/kTwIlz1qpv2HN1EQqBg0GVktrDDFsXygYROha3MgVn4rT7p5EjFHFqXQm2rdRGb/BI7bc+jr10m91w==} + engines: {node: '>=20.0.0'} + + '@supabase/realtime-js@2.105.4': + resolution: {integrity: sha512-6ov6c59+8D9h7q4M4Gy/uDJlC0Akxl9/714Y+6vJ+Sijuc16TS/p5DwhfRCLNcIhNiej1gEt+CQUwsjiPt4PxQ==} + engines: {node: '>=20.0.0'} + + '@supabase/storage-js@2.105.4': + resolution: {integrity: sha512-Jx+pzMP1Whjof2PWHoVBUA75/p7PQE9CqKBzn1oXVyJDOggMLSH2OzVWwsXYaxEpdC1K/KltwmOX44nL3LHl9g==} + engines: {node: '>=20.0.0'} + + '@supabase/supabase-js@2.105.4': + resolution: {integrity: sha512-cEnx+k49knU+qdIP7rXwR6fqEXPHZs+74xFK1R0S8MgQ7v9tbePVdGxvO03n3bPympMdJWVLadARBfU4TgNHCQ==} + engines: {node: '>=20.0.0'} + + '@swc/core-darwin-arm64@1.6.13': + resolution: {integrity: sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.6.13': + resolution: {integrity: sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.6.13': + resolution: {integrity: sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.6.13': + resolution: {integrity: sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.6.13': + resolution: {integrity: sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.6.13': + resolution: {integrity: sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.6.13': + resolution: {integrity: sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.6.13': + resolution: {integrity: sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.6.13': + resolution: {integrity: sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.6.13': + resolution: {integrity: sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.6.13': + resolution: {integrity: sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.26': + resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} + + '@trickfilm400/rollup-plugin-off-main-thread@3.0.0-pre1': + resolution: {integrity: sha512-/67zpWDBLV+oYAEL682s1ktXL0HgqX76f6gaVGkGnVZlBbm1zd0v4Bz8MFF2GGhoX9rvfq3KSQHubFHwa6w6/Q==} + engines: {node: '>=12'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/hoist-non-react-statics@3.3.7': + resolution: {integrity: sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==} + peerDependencies: + '@types/react': '*' + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/node@20.19.40': + resolution: {integrity: sha512-xxx6M2IpSTnnKcR0cMvIiohkiCx20/oRPtWGbenFygKCGl3zqUzdNjQ/1V4solq1LU+dgv0nQzeGOuqkqZGg0Q==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + + '@types/react@18.3.28': + resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-loader@9.2.1: + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + baseline-browser-mapping@2.10.29: + resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deepmerge@2.2.1: + resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} + engines: {node: '>=0.10.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.353: + resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==} + + enhanced-resolve@5.21.2: + resolution: {integrity: sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ==} + engines: {node: '>=10.13.0'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eta@4.6.0: + resolution: {integrity: sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==} + engines: {node: '>=20'} + + event-iterator@2.0.0: + resolution: {integrity: sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + formik@2.4.9: + resolution: {integrity: sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==} + peerDependencies: + react: '>=16.8.0' + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + iceberg-js@0.8.1: + resolution: {integrity: sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==} + engines: {node: '>=20.0.0'} + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + + js-logger@1.6.1: + resolution: {integrity: sha512-yTgMCPXVjhmg28CuUH8CKjU+cIKL/G+zTu4Fn4lQxs8mRFH/03QTNvEFngcxfg/gRDiQAOoyCKmMTOm9ayOzXA==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + loader-runner@4.3.2: + resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} + engines: {node: '>=6.11.5'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + openapi-typescript@7.13.0: + resolution: {integrity: sha512-EFP392gcqXS7ntPvbhBzbF8TyBA+baIYEm791Hy5YkjDYKTnk/Tn5OQeKm5BIZvJihpp8Zzr4hzx0Irde1LNGQ==} + hasBin: true + peerDependencies: + typescript: ^5.x + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-fast-compare@2.0.4: + resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@19.2.6: + resolution: {integrity: sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-router-dom@6.30.3: + resolution: {integrity: sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.30.3: + resolution: {integrity: sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} + hasBin: true + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.60.3: + resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + serialize-javascript@7.0.5: + resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} + engines: {node: '>=20.0.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + smob@1.6.1: + resolution: {integrity: sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==} + engines: {node: '>=20.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + terser-webpack-plugin@5.6.0: + resolution: {integrity: sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@minify-html/node': '*' + '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' + esbuild: '*' + html-minifier-terser: '*' + lightningcss: '*' + postcss: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@minify-html/node': + optional: true + '@swc/core': + optional: true + '@swc/css': + optional: true + '@swc/html': + optional: true + clean-css: + optional: true + cssnano: + optional: true + csso: + optional: true + esbuild: + optional: true + html-minifier-terser: + optional: true + lightningcss: + optional: true + postcss: + optional: true + uglify-js: + optional: true + + terser@5.47.1: + resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} + engines: {node: '>=10'} + hasBin: true + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js-replace@1.0.1: + resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} + + vite-plugin-pwa@0.19.8: + resolution: {integrity: sha512-e1oK0dfhzhDhY3VBuML6c0h8Xfx6EkOVYqolj7g+u8eRfdauZe5RLteCIA/c5gH0CBQ0CNFAuv/AFTx4Z7IXTw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@vite-pwa/assets-generator': ^0.2.4 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 + peerDependenciesMeta: + '@vite-pwa/assets-generator': + optional: true + + vite@5.4.21: + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + engines: {node: '>=10.13.0'} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webpack-sources@3.4.1: + resolution: {integrity: sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==} + engines: {node: '>=10.13.0'} + + webpack@5.106.2: + resolution: {integrity: sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + workbox-background-sync@7.4.1: + resolution: {integrity: sha512-HhT7KE8tOWDm02wRNshXUnUPofMlhenF2DBdUnDPOubhizzPeItkYTmAB6td1Z2cjYPa98vzEiPLEuzn5hN66g==} + + workbox-broadcast-update@7.4.1: + resolution: {integrity: sha512-uAlgslKLvbQY+suirIdnBCSYrcgBhjp81Nj4l1lj/Jmj0MJO2CJERnCJjT0GFVwmReV0N+zs78K6gqd5gr9/+A==} + + workbox-build@7.4.1: + resolution: {integrity: sha512-SDhxIvEAde9Gy/5w4Yo1Jh/M49Z0qE3q0oteyE8zGq0DScxFqVBcCtIXFuLtmtxRQZCMbf0prco4VyEu3KBQuw==} + engines: {node: '>=20.0.0'} + + workbox-cacheable-response@7.4.1: + resolution: {integrity: sha512-8xaFoJdDc2OjrlbbL3gEeBO1WKcMwRqwLRupgqahYXu75yXajPLuwrbXMrIGZuWYXrQwk0xDjOxZ/ujCy/oJYw==} + + workbox-core@7.4.1: + resolution: {integrity: sha512-DT+vu46eh/2vRsSHTY4Xmc32Z1rr9PRlQUXr1Dx30ZuXRWwOsvZgGgcwxcasubQLQmbTNYZjv44LkBAQ4tT5tQ==} + + workbox-expiration@7.4.1: + resolution: {integrity: sha512-lRKUF7b+OGbeXkQk1s6MHXOa3d7Xxf7Of31W6c6hCfipfIyrtdWZ89stq21AHZMaoG7VNFoHply4Ox+rU31TWg==} + + workbox-google-analytics@7.4.1: + resolution: {integrity: sha512-Mks1JwLEt++ZAkF6sS1OpSh9RtAMIsiDgRpK+codiHGIPXeaUOgi4cPc3GFadUl8V5QPeypEk8Oxgl3HlwVzHw==} + + workbox-navigation-preload@7.4.1: + resolution: {integrity: sha512-C4KVsjPcYKJOhr631AxR9XoG2rLF3QiTk5aMv36MXOjtWvm8axwNFAtKUPGsWUwLXXAMgYM1En7fsvndaXeXRQ==} + + workbox-precaching@7.4.1: + resolution: {integrity: sha512-cdr/9qByww7yzEp7zg/qI4ukUrrNjQLgN+ONQRpjy/VqGQXwkgHwr00KksGJK8v0VifwDXBb8a4cWNZH71jn3Q==} + + workbox-range-requests@7.4.1: + resolution: {integrity: sha512-7i2oxAUE82gHdAJBCAQ04JzNOdRPqzuOzGfoUyJpFSmeqBNYGPrAH8GPoPjUQTfp+NycwrD2H68VtuF8qxv0vQ==} + + workbox-recipes@7.4.1: + resolution: {integrity: sha512-gnbVfmV4/TtmQaM4x9AtuXhcdstJsep3XMVeztOrQVPT+R6+6DeBjGTCQ7fFCXm+4GEHUA5VEBTyi5+4gWGeog==} + + workbox-routing@7.4.1: + resolution: {integrity: sha512-yubJGErZOusuidAenaL5ypfhQOa7urxP/f8E0ws7FPb4039RiWXUWBAyUkmUoOL/BcQGen3h0J8872d51IYxtA==} + + workbox-strategies@7.4.1: + resolution: {integrity: sha512-GZxpaw9NbmOelj7667uZ2kpk5BFpOGbO4X0qjwh5ls8XQ8C+Lha5LQchTiUzsTFSS+NlUpftYAyOVXvQUrcqOQ==} + + workbox-streams@7.4.1: + resolution: {integrity: sha512-HWWtraKUbJknd9kgqGcpQ3G114HOPYvqs8HaJMDs2ebLNAimDkVDaWfAXE6Ybl+m8U6KsCE6pWyLYuigWmnAXw==} + + workbox-sw@7.4.1: + resolution: {integrity: sha512-fez5f2DUlDJWTFYkCWQpY10N8gtztd849NswCbVFk0QlcSM4HT5A8x4g4ii650yem4I8tHY0R7JZahwp3ltIPw==} + + workbox-window@7.4.1: + resolution: {integrity: sha512-notZDH2u8VXaqyuD7xaqIfEFi6SRM4SUSd7ewe9PDsVqADuepxX2ZMY3uvuZGxzY5ZOsGC/vD3A/3smFtJt4/A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + +snapshots: + + '@apideck/better-ajv-errors@0.3.7(ajv@8.20.0)': + dependencies: + ajv: 8.20.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.3': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@10.2.2) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3(supports-color@10.2.2) + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-env@7.29.5(@babel/core@7.29.0)': + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.0) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.29.0 + esutils: 2.0.3 + + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/runtime': 7.29.2 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.4.0': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.11.4(@types/react@18.3.28)(react@18.3.1) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - supports-color + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@isaacs/cliui@9.0.0': {} + + '@journeyapps/wa-sqlite@1.7.0': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mui/core-downloads-tracker@5.18.0': {} + + '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@mui/material': 5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/material@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@mui/core-downloads-tracker': 5.18.0 + '@mui/system': 5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/types': 7.2.24(@types/react@18.3.28) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + '@popperjs/core': 2.11.8 + '@types/react-transition-group': 4.4.12(@types/react@18.3.28) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 19.2.6 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 + + '@mui/private-theming@5.17.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/styled-engine@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + + '@mui/system@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@mui/private-theming': 5.17.1(@types/react@18.3.28)(react@18.3.1) + '@mui/styled-engine': 5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1) + '@mui/types': 7.2.24(@types/react@18.3.28) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@emotion/react': 11.11.4(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 + + '@mui/types@7.2.24(@types/react@18.3.28)': + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/utils@5.17.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@mui/types': 7.2.24(@types/react@18.3.28) + '@types/prop-types': 15.7.15 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 19.2.6 + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/x-data-grid@6.20.4(@mui/material@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@mui/material': 5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.18.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + reselect: 4.1.8 + transitivePeerDependencies: + - '@types/react' + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@popperjs/core@2.11.8': {} + + '@powersync/common@1.53.0': + dependencies: + event-iterator: 2.0.0 + js-logger: 1.6.1 + + '@powersync/react@1.10.0(@powersync/common@1.53.0)(react@18.3.1)': + dependencies: + '@powersync/common': 1.53.0 + react: 18.3.1 + + '@powersync/web@1.38.0(@journeyapps/wa-sqlite@1.7.0)(@powersync/common@1.53.0)': + dependencies: + '@journeyapps/wa-sqlite': 1.7.0 + '@powersync/common': 1.53.0 + comlink: 4.4.2 + commander: 12.1.0 + + '@redocly/ajv@8.11.2': + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js-replace: 1.0.1 + + '@redocly/config@0.22.0': {} + + '@redocly/openapi-core@1.34.14(supports-color@10.2.2)': + dependencies: + '@redocly/ajv': 8.11.2 + '@redocly/config': 0.22.0 + colorette: 1.4.0 + https-proxy-agent: 7.0.6(supports-color@10.2.2) + js-levenshtein: 1.1.6 + js-yaml: 4.1.1 + minimatch: 5.1.9 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - supports-color + + '@remix-run/router@1.23.2': {} + + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/plugin-babel@6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.3)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) + optionalDependencies: + '@types/babel__core': 7.20.5 + rollup: 4.60.3 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.12 + optionalDependencies: + rollup: 4.60.3 + + '@rollup/plugin-replace@6.0.3(rollup@4.60.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) + magic-string: 0.30.21 + optionalDependencies: + rollup: 4.60.3 + + '@rollup/plugin-terser@1.0.0(rollup@4.60.3)': + dependencies: + serialize-javascript: 7.0.5 + smob: 1.6.1 + terser: 5.47.1 + optionalDependencies: + rollup: 4.60.3 + + '@rollup/pluginutils@5.3.0(rollup@4.60.3)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.4 + optionalDependencies: + rollup: 4.60.3 + + '@rollup/rollup-android-arm-eabi@4.60.3': + optional: true + + '@rollup/rollup-android-arm64@4.60.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.3': + optional: true + + '@rollup/rollup-darwin-x64@4.60.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.3': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.3': + optional: true + + '@supabase/auth-js@2.105.4': + dependencies: + tslib: 2.8.1 + + '@supabase/functions-js@2.105.4': + dependencies: + tslib: 2.8.1 + + '@supabase/phoenix@0.4.2': {} + + '@supabase/postgrest-js@2.105.4': + dependencies: + tslib: 2.8.1 + + '@supabase/realtime-js@2.105.4': + dependencies: + '@supabase/phoenix': 0.4.2 + tslib: 2.8.1 + + '@supabase/storage-js@2.105.4': + dependencies: + iceberg-js: 0.8.1 + tslib: 2.8.1 + + '@supabase/supabase-js@2.105.4': + dependencies: + '@supabase/auth-js': 2.105.4 + '@supabase/functions-js': 2.105.4 + '@supabase/postgrest-js': 2.105.4 + '@supabase/realtime-js': 2.105.4 + '@supabase/storage-js': 2.105.4 + + '@swc/core-darwin-arm64@1.6.13': + optional: true + + '@swc/core-darwin-x64@1.6.13': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.6.13': + optional: true + + '@swc/core-linux-arm64-gnu@1.6.13': + optional: true + + '@swc/core-linux-arm64-musl@1.6.13': + optional: true + + '@swc/core-linux-x64-gnu@1.6.13': + optional: true + + '@swc/core-linux-x64-musl@1.6.13': + optional: true + + '@swc/core-win32-arm64-msvc@1.6.13': + optional: true + + '@swc/core-win32-ia32-msvc@1.6.13': + optional: true + + '@swc/core-win32-x64-msvc@1.6.13': + optional: true + + '@swc/core@1.6.13': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.26 + optionalDependencies: + '@swc/core-darwin-arm64': 1.6.13 + '@swc/core-darwin-x64': 1.6.13 + '@swc/core-linux-arm-gnueabihf': 1.6.13 + '@swc/core-linux-arm64-gnu': 1.6.13 + '@swc/core-linux-arm64-musl': 1.6.13 + '@swc/core-linux-x64-gnu': 1.6.13 + '@swc/core-linux-x64-musl': 1.6.13 + '@swc/core-win32-arm64-msvc': 1.6.13 + '@swc/core-win32-ia32-msvc': 1.6.13 + '@swc/core-win32-x64-msvc': 1.6.13 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.26': + dependencies: + '@swc/counter': 0.1.3 + + '@trickfilm400/rollup-plugin-off-main-thread@3.0.0-pre1': + dependencies: + ejs: 3.1.10 + json5: 2.2.3 + magic-string: 0.30.21 + string.prototype.matchall: 4.0.12 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.9 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.9 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.8': {} + + '@types/estree@1.0.9': {} + + '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + hoist-non-react-statics: 3.3.2 + + '@types/json-schema@7.0.15': {} + + '@types/lodash@4.17.24': {} + + '@types/node@20.19.40': + dependencies: + undici-types: 6.21.0 + + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.15': {} + + '@types/react-dom@18.3.7(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + + '@types/react-transition-group@4.4.12(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + + '@types/react@18.3.28': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.2.3 + + '@types/resolve@1.20.2': {} + + '@types/trusted-types@2.0.7': {} + + '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@20.19.40)(terser@5.47.1))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 5.4.21(@types/node@20.19.40)(terser@5.47.1) + transitivePeerDependencies: + - supports-color + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + acorn-import-phases@1.0.4(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + agent-base@7.1.4: {} + + ajv-formats@2.1.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-keywords@5.1.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + fast-deep-equal: 3.1.3 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-colors@4.1.3: {} + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + async-function@1.0.0: {} + + async@3.2.6: {} + + at-least-node@1.0.0: {} + + autoprefixer@10.5.0(postcss@8.5.14): + dependencies: + browserslist: 4.28.2 + caniuse-lite: 1.0.30001792 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.14 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.106.2(@swc/core@1.6.13)(postcss@8.5.14)): + dependencies: + '@babel/core': 7.29.0 + find-cache-dir: 4.0.0 + schema-utils: 4.3.3 + webpack: 5.106.2(@swc/core@1.6.13)(postcss@8.5.14) + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.29.2 + cosmiconfig: 7.1.0 + resolve: 1.22.12 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.10.29: {} + + brace-expansion@2.1.0: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.29 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.353 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer-from@1.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001792: {} + + change-case@5.4.4: {} + + chrome-trace-event@1.0.4: {} + + clsx@2.1.1: {} + + colorette@1.4.0: {} + + comlink@4.4.2: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + common-path-prefix@3.0.0: {} + + common-tags@1.8.2: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + core-js-compat@3.49.0: + dependencies: + browserslist: 4.28.2 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-random-string@2.0.0: {} + + csstype@3.2.3: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@4.4.3(supports-color@10.2.2): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 10.2.2 + + deepmerge@2.2.1: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.29.2 + csstype: 3.2.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.4 + + electron-to-chromium@1.5.353: {} + + enhanced-resolve@5.21.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + eta@4.6.0: {} + + event-iterator@2.0.0: {} + + events@3.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.1.2: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-cache-dir@4.0.0: + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + + find-root@1.1.0: {} + + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + formik@2.4.9(@types/react@18.3.28)(react@18.3.1): + dependencies: + '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.28) + deepmerge: 2.2.1 + hoist-non-react-statics: 3.3.2 + lodash: 4.18.1 + lodash-es: 4.18.1 + react: 18.3.1 + react-fast-compare: 2.0.4 + tiny-warning: 1.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/react' + + fraction.js@5.3.4: {} + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.3 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + math-intrinsics: 1.1.0 + + get-own-enumerable-property-symbols@3.0.2: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.2.3 + minimatch: 10.2.5 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + https-proxy-agent@7.0.6(supports-color@10.2.2): + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + + iceberg-js@0.8.1: {} + + idb@7.1.1: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + index-to-position@1.2.0: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.3 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.3 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-module@1.0.0: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@1.0.1: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + is-regexp@1.0.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.19.40 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + js-levenshtein@1.1.6: {} + + js-logger@1.6.1: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpointer@5.0.1: {} + + leven@3.1.0: {} + + lines-and-columns@1.2.4: {} + + loader-runner@4.3.2: {} + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.18.1: {} + + lodash.debounce@4.0.8: {} + + lodash.sortby@4.7.0: {} + + lodash@4.18.1: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@11.3.6: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.54.0: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.0 + + minipass@7.1.3: {} + + ms@2.1.3: {} + + nanoid@3.3.12: {} + + neo-async@2.6.2: {} + + node-releases@2.0.38: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + openapi-typescript@7.13.0(typescript@5.9.3): + dependencies: + '@redocly/openapi-core': 1.34.14(supports-color@10.2.2) + ansi-colors: 4.1.3 + change-case: 5.4.4 + parse-json: 8.3.0 + supports-color: 10.2.2 + typescript: 5.9.3 + yargs-parser: 21.1.1 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.2 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.29.0 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + path-exists@5.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.6 + minipass: 7.1.3 + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pkg-dir@7.0.0: + dependencies: + find-up: 6.3.0 + + pluralize@8.0.0: {} + + possible-typed-array-names@1.1.0: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.5.14: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-bytes@5.6.0: {} + + pretty-bytes@6.1.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-fast-compare@2.0.4: {} + + react-is@16.13.1: {} + + react-is@19.2.6: {} + + react-refresh@0.17.0: {} + + react-router-dom@6.30.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.30.3(react@18.3.1) + + react-router@6.30.3(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.2 + react: 18.3.1 + + react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.29.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.1: + dependencies: + jsesc: 3.1.0 + + require-from-string@2.0.2: {} + + reselect@4.1.8: {} + + resolve-from@4.0.0: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rollup@4.60.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.3 + '@rollup/rollup-android-arm64': 4.60.3 + '@rollup/rollup-darwin-arm64': 4.60.3 + '@rollup/rollup-darwin-x64': 4.60.3 + '@rollup/rollup-freebsd-arm64': 4.60.3 + '@rollup/rollup-freebsd-x64': 4.60.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.3 + '@rollup/rollup-linux-arm-musleabihf': 4.60.3 + '@rollup/rollup-linux-arm64-gnu': 4.60.3 + '@rollup/rollup-linux-arm64-musl': 4.60.3 + '@rollup/rollup-linux-loong64-gnu': 4.60.3 + '@rollup/rollup-linux-loong64-musl': 4.60.3 + '@rollup/rollup-linux-ppc64-gnu': 4.60.3 + '@rollup/rollup-linux-ppc64-musl': 4.60.3 + '@rollup/rollup-linux-riscv64-gnu': 4.60.3 + '@rollup/rollup-linux-riscv64-musl': 4.60.3 + '@rollup/rollup-linux-s390x-gnu': 4.60.3 + '@rollup/rollup-linux-x64-gnu': 4.60.3 + '@rollup/rollup-linux-x64-musl': 4.60.3 + '@rollup/rollup-openbsd-x64': 4.60.3 + '@rollup/rollup-openharmony-arm64': 4.60.3 + '@rollup/rollup-win32-arm64-msvc': 4.60.3 + '@rollup/rollup-win32-ia32-msvc': 4.60.3 + '@rollup/rollup-win32-x64-gnu': 4.60.3 + '@rollup/rollup-win32-x64-msvc': 4.60.3 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) + + semver@6.3.1: {} + + serialize-javascript@7.0.5: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@4.1.0: {} + + smob@1.6.1: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + + strip-comments@2.0.1: {} + + stylis@4.2.0: {} + + supports-color@10.2.2: {} + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tapable@2.3.3: {} + + temp-dir@2.0.0: {} + + tempy@0.6.0: + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + + terser-webpack-plugin@5.6.0(@swc/core@1.6.13)(postcss@8.5.14)(webpack@5.106.2(@swc/core@1.6.13)(postcss@8.5.14)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.47.1 + webpack: 5.106.2(@swc/core@1.6.13)(postcss@8.5.14) + optionalDependencies: + '@swc/core': 1.6.13 + postcss: 8.5.14 + + terser@5.47.1: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + tiny-warning@1.0.3: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tslib@2.8.1: {} + + type-fest@0.16.0: {} + + type-fest@4.41.0: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.9.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universalify@2.0.1: {} + + upath@1.2.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js-replace@1.0.1: {} + + vite-plugin-pwa@0.19.8(vite@5.4.21(@types/node@20.19.40)(terser@5.47.1))(workbox-build@7.4.1(@types/babel__core@7.20.5))(workbox-window@7.4.1): + dependencies: + debug: 4.4.3(supports-color@10.2.2) + fast-glob: 3.3.3 + pretty-bytes: 6.1.1 + vite: 5.4.21(@types/node@20.19.40)(terser@5.47.1) + workbox-build: 7.4.1(@types/babel__core@7.20.5) + workbox-window: 7.4.1 + transitivePeerDependencies: + - supports-color + + vite@5.4.21(@types/node@20.19.40)(terser@5.47.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.14 + rollup: 4.60.3 + optionalDependencies: + '@types/node': 20.19.40 + fsevents: 2.3.3 + terser: 5.47.1 + + watchpack@2.5.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + webidl-conversions@4.0.2: {} + + webpack-sources@3.4.1: {} + + webpack@5.106.2(@swc/core@1.6.13)(postcss@8.5.14): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.9 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.16.0 + acorn-import-phases: 1.0.4(acorn@8.16.0) + browserslist: 4.28.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.21.2 + es-module-lexer: 2.1.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + loader-runner: 4.3.2 + mime-db: 1.54.0 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.3 + terser-webpack-plugin: 5.6.0(@swc/core@1.6.13)(postcss@8.5.14)(webpack@5.106.2(@swc/core@1.6.13)(postcss@8.5.14)) + watchpack: 2.5.1 + webpack-sources: 3.4.1 + transitivePeerDependencies: + - '@minify-html/node' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso + - esbuild + - html-minifier-terser + - lightningcss + - postcss + - uglify-js + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + workbox-background-sync@7.4.1: + dependencies: + idb: 7.1.1 + workbox-core: 7.4.1 + + workbox-broadcast-update@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-build@7.4.1(@types/babel__core@7.20.5): + dependencies: + '@apideck/better-ajv-errors': 0.3.7(ajv@8.20.0) + '@babel/core': 7.29.0 + '@babel/preset-env': 7.29.5(@babel/core@7.29.0) + '@babel/runtime': 7.29.2 + '@rollup/plugin-babel': 6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.3) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.3) + '@rollup/plugin-replace': 6.0.3(rollup@4.60.3) + '@rollup/plugin-terser': 1.0.0(rollup@4.60.3) + '@trickfilm400/rollup-plugin-off-main-thread': 3.0.0-pre1 + ajv: 8.20.0 + common-tags: 1.8.2 + eta: 4.6.0 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 11.1.0 + pretty-bytes: 5.6.0 + rollup: 4.60.3 + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 7.4.1 + workbox-broadcast-update: 7.4.1 + workbox-cacheable-response: 7.4.1 + workbox-core: 7.4.1 + workbox-expiration: 7.4.1 + workbox-google-analytics: 7.4.1 + workbox-navigation-preload: 7.4.1 + workbox-precaching: 7.4.1 + workbox-range-requests: 7.4.1 + workbox-recipes: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + workbox-streams: 7.4.1 + workbox-sw: 7.4.1 + workbox-window: 7.4.1 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-cacheable-response@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-core@7.4.1: {} + + workbox-expiration@7.4.1: + dependencies: + idb: 7.1.1 + workbox-core: 7.4.1 + + workbox-google-analytics@7.4.1: + dependencies: + workbox-background-sync: 7.4.1 + workbox-core: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + + workbox-navigation-preload@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-precaching@7.4.1: + dependencies: + workbox-core: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + + workbox-range-requests@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-recipes@7.4.1: + dependencies: + workbox-cacheable-response: 7.4.1 + workbox-core: 7.4.1 + workbox-expiration: 7.4.1 + workbox-precaching: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + + workbox-routing@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-strategies@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-streams@7.4.1: + dependencies: + workbox-core: 7.4.1 + workbox-routing: 7.4.1 + + workbox-sw@7.4.1: {} + + workbox-window@7.4.1: + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 7.4.1 + + yallist@3.1.1: {} + + yaml-ast-parser@0.0.43: {} + + yaml@1.10.3: {} + + yargs-parser@21.1.1: {} + + yocto-queue@1.2.2: {} diff --git a/supabase-example/frontend/pnpm-workspace.yaml b/supabase-example/frontend/pnpm-workspace.yaml new file mode 100644 index 0000000..d05a7e7 --- /dev/null +++ b/supabase-example/frontend/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - . diff --git a/supabase-example/frontend/public/favicon.ico b/supabase-example/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..918ca54eefddfbddd927a9b0558126afd2fc433f GIT binary patch literal 1576 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

tEs4H$a=ZS)m{ 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 Y!RBn|z+;l5Lg2&pwBxDjlRk0(1K`z}W&i*H literal 0 HcmV?d00001 diff --git a/supabase-example/frontend/public/icons/icon-384x384.png b/supabase-example/frontend/public/icons/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..af8be4dc69bf0e8c23086265359891438a794add GIT binary patch literal 74557 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 setConnectionAnchor(null)}> + {status?.connected || status?.connecting ? ( + { + setConnectionAnchor(null); + powerSync.disconnect(); + }}> + Disconnect + + ) : supabase ? ( + { + setConnectionAnchor(null); + powerSync.connect(supabase); + }}> + Connect + + ) : null} + + + + setOpenDrawer(false)}> + + + + {NAVIGATION_ITEMS.map((item) => ( + + { + await item.beforeNavigate?.(); + navigate(item.path); + setOpenDrawer(false); + }}> + {item.icon()} + + + + ))} + + + {children} + + ); +} + +namespace S { + export const MainBox = styled(Box)` + flex-grow: 1; + `; + + export const TopBar = styled(AppBar)` + margin-bottom: 20px; + `; + + export const PowerSyncLogo = styled('img')` + max-width: 250px; + max-height: 250px; + object-fit: contain; + padding: 20px; + `; +} diff --git a/supabase-example/frontend/src/app/views/sql-console/page.tsx b/supabase-example/frontend/src/app/views/sql-console/page.tsx new file mode 100644 index 0000000..4cb0e84 --- /dev/null +++ b/supabase-example/frontend/src/app/views/sql-console/page.tsx @@ -0,0 +1,125 @@ +import { NavigationPage } from '@/components/navigation/NavigationPage'; +import { Alert, Box, Button, Grid, TextField, styled } from '@mui/material'; +import { DataGrid } from '@mui/x-data-grid'; +import { useQuery } from '@powersync/react'; +import React from 'react'; + +export type LoginFormParams = { + email: string; + password: string; +}; + +const DEFAULT_QUERY = /* sql */ ` + SELECT + * + FROM + lists +`; + +const TableDisplay = React.memo(({ data }: { data: ReadonlyArray }) => { + const queryDataGridResult = React.useMemo(() => { + const firstItem = data?.[0]; + return { + columns: firstItem + ? Object.keys(firstItem).map((field) => ({ + field, + flex: 1 + })) + : [], + rows: data + }; + }, [data]); + + return ( + + ({ ...r, id: r.id ?? index })) ?? []} + columns={queryDataGridResult.columns} + initialState={{ + pagination: { + paginationModel: { + pageSize: 20 + } + } + }} + pageSizeOptions={[20]} + disableRowSelectionOnClick + /> + + ); +}); + +export default function SQLConsolePage() { + const inputRef = React.useRef(); + const [query, setQuery] = React.useState(DEFAULT_QUERY); + + const { data, error } = useQuery(query, [], { + /** + * We don't use the isFetching status here, we can avoid re-renders if we don't report on it. + */ + reportFetching: false, + /** + * The query here will only emit results when the query data set changes. + * Result sets are compared by serializing each item to JSON and comparing the strings. + */ + rowComparator: { + keyBy: (item: any) => JSON.stringify(item), + compareBy: (item: any) => JSON.stringify(item) + } + }); + + return ( + + + + + { + const inputValue = inputRef.current?.value; + if (e.key == 'Enter' && inputValue) { + setQuery(inputValue); + } + }} + /> + + + + + + {error ? {error.message} : null} + + + + ); +} + +namespace S { + export const MainContainer = styled(Box)` + padding: 20px; + `; + + export const QueryResultContainer = styled(Box)` + margin-top: 40px; + `; + + export const CenteredGrid = styled(Grid)` + display: flex; + justify-content: center; + align-items: center; + `; +} diff --git a/supabase-example/frontend/src/app/views/todo-lists/edit/page.tsx b/supabase-example/frontend/src/app/views/todo-lists/edit/page.tsx new file mode 100644 index 0000000..7a48879 --- /dev/null +++ b/supabase-example/frontend/src/app/views/todo-lists/edit/page.tsx @@ -0,0 +1,150 @@ +import { NavigationPage } from '@/components/navigation/NavigationPage'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import { TodoItemWidget } from '@/components/widgets/TodoItemWidget'; +import { LISTS_TABLE, TODOS_TABLE, TodoRecord } from '@/library/powersync/AppSchema'; +import AddIcon from '@mui/icons-material/Add'; +import { + Box, + Button, + CircularProgress, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, + List, + TextField, + Typography, + styled +} from '@mui/material'; +import Fab from '@mui/material/Fab'; +import { usePowerSync, useQuery } from '@powersync/react'; +import React, { Suspense } from 'react'; +import { useParams } from 'react-router-dom'; + +/** + * useSearchParams causes the entire element to fall back to client side rendering + * This is exposed as a separate React component in order to suspend its render + * and allow the root page to render on the server. + */ +const TodoEditSection = () => { + const powerSync = usePowerSync(); + const supabase = useSupabase(); + const { id: listID } = useParams(); + + const { + data: [listRecord] + } = useQuery<{ name: string }>( + /* sql */ ` + SELECT + name + FROM + ${LISTS_TABLE} + WHERE + id = ? + `, + [listID] + ); + + const { data: todos } = useQuery( + /* sql */ ` + SELECT + * + FROM + ${TODOS_TABLE} + WHERE + list_id = ? + ORDER BY + created_at DESC, + id + `, + [listID] + ); + + const [showPrompt, setShowPrompt] = React.useState(false); + const nameInputRef = React.createRef(); + + const createNewTodo = async (description: string) => { + const userID = supabase?.currentSession?.user.id; + if (!userID) { + throw new Error(`Could not get user ID.`); + } + + await powerSync.execute( + /* sql */ ` + INSERT INTO + ${TODOS_TABLE} (id, created_at, created_by, description, list_id) + VALUES + (uuid (), datetime (), ?, ?, ?) + `, + [userID, description, listID!] + ); + }; + + if (!listRecord) { + return ( + + No matching List found, please navigate back... + + ); + } + + return ( + + + setShowPrompt(true)}> + + + + + {todos.map((r) => ( + + ))} + + + {/* TODO use a dialog service in future, this is just a simple example app */} + setShowPrompt(false)} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description" + PaperProps={{ + component: 'form', + onSubmit: async (event: React.FormEvent) => { + event.preventDefault(); + await createNewTodo(nameInputRef.current!.value); + setShowPrompt(false); + } + }}> + {'Create Todo Item'} + + Enter a description for a new todo item + + + + + + + + + + ); +}; + +export default function TodoEditPage() { + return ( + + }> + + + + ); +} + +namespace S { + export const FloatingActionButton = styled(Fab)` + position: absolute; + bottom: 20px; + right: 20px; + `; +} diff --git a/supabase-example/frontend/src/app/views/todo-lists/page.tsx b/supabase-example/frontend/src/app/views/todo-lists/page.tsx new file mode 100644 index 0000000..edb168a --- /dev/null +++ b/supabase-example/frontend/src/app/views/todo-lists/page.tsx @@ -0,0 +1,100 @@ +import { NavigationPage } from '@/components/navigation/NavigationPage'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import { GuardBySync } from '@/components/widgets/GuardBySync'; +import { SearchBarWidget } from '@/components/widgets/SearchBarWidget'; +import { TodoListsWidget } from '@/components/widgets/TodoListsWidget'; +import { LISTS_TABLE } from '@/library/powersync/AppSchema'; +import AddIcon from '@mui/icons-material/Add'; +import { + Box, + Button, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, + TextField, + styled +} from '@mui/material'; +import Fab from '@mui/material/Fab'; +import { usePowerSync } from '@powersync/react'; +import React from 'react'; + +export default function TodoListsPage() { + const powerSync = usePowerSync(); + const supabase = useSupabase(); + + const [showPrompt, setShowPrompt] = React.useState(false); + const nameInputRef = React.createRef(); + + const createNewList = async (name: string) => { + const session = await supabase?.client.auth.getSession(); + const userID = session?.data.session?.user?.id; + if (!userID) { + throw new Error(`Could not create new lists, no userID found`); + } + + const res = await powerSync.execute( + /* sql */ ` + INSERT INTO + ${LISTS_TABLE} (id, created_at, name, owner_id) + VALUES + (uuid (), datetime (), ?, ?) RETURNING * + `, + [name, userID] + ); + + const resultRecord = res.rows?.item(0); + if (!resultRecord) { + throw new Error('Could not create list'); + } + }; + + return ( + + + setShowPrompt(true)}> + + + + + + + + + {/* TODO use a dialog service in future, this is just a simple example app */} + setShowPrompt(false)} + PaperProps={{ + component: 'form', + onSubmit: async (event: React.FormEvent) => { + event.preventDefault(); + await createNewList(nameInputRef.current!.value); + setShowPrompt(false); + } + }} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description"> + {'Create Todo List'} + + Enter a name for a new todo list + + + + + + + + + + ); +} + +namespace S { + export const FloatingActionButton = styled(Fab)` + position: absolute; + bottom: 20px; + right: 20px; + `; +} diff --git a/supabase-example/frontend/src/components/navigation/NavigationPage.tsx b/supabase-example/frontend/src/components/navigation/NavigationPage.tsx new file mode 100644 index 0000000..ac0cc30 --- /dev/null +++ b/supabase-example/frontend/src/components/navigation/NavigationPage.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { useNavigationPanel } from './NavigationPanelContext'; +import { Box, styled } from '@mui/material'; + +/** + * Wraps a component with automatic navigation panel title management + */ +export const NavigationPage: React.FC> = ({ title, children }) => { + const navigationPanel = useNavigationPanel(); + + React.useEffect(() => { + navigationPanel.setTitle(title); + + return () => navigationPanel.setTitle(''); + }, [title, navigationPanel]); + + return {children}; +}; + +namespace S { + export const Container = styled(Box)` + margin: 10px; + `; +} diff --git a/supabase-example/frontend/src/components/navigation/NavigationPanelContext.tsx b/supabase-example/frontend/src/components/navigation/NavigationPanelContext.tsx new file mode 100644 index 0000000..4745475 --- /dev/null +++ b/supabase-example/frontend/src/components/navigation/NavigationPanelContext.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +export type NavigationPanelController = { + setTitle: (title: string) => void; + title: string; +}; + +export const NavigationPanelContext = React.createContext({ + setTitle: () => { + throw new Error(`No NavigationPanelContext has been provided`); + }, + title: '' +}); + +export const NavigationPanelContextProvider = ({ children }: { children: React.ReactNode }) => { + const [title, setTitle] = React.useState(''); + + return {children}; +}; + +export const useNavigationPanel = () => React.useContext(NavigationPanelContext); diff --git a/supabase-example/frontend/src/components/providers/SystemProvider.tsx b/supabase-example/frontend/src/components/providers/SystemProvider.tsx new file mode 100644 index 0000000..f4e800b --- /dev/null +++ b/supabase-example/frontend/src/components/providers/SystemProvider.tsx @@ -0,0 +1,117 @@ +import { configureFts } from '@/app/utils/fts_setup'; +import { AppSchema, ListRecord, LISTS_TABLE, TODOS_TABLE } from '@/library/powersync/AppSchema'; +import { SupabaseConnector } from '@/library/powersync/SupabaseConnector'; +import { CircularProgress } from '@mui/material'; +import { PowerSyncContext } from '@powersync/react'; +import { + createBaseLogger, + DifferentialWatchedQuery, + LogLevel, + PowerSyncDatabase, + WASQLiteOpenFactory, + WASQLiteVFS +} from '@powersync/web'; +import React, { Suspense } from 'react'; +import { NavigationPanelContextProvider } from '../navigation/NavigationPanelContext'; + +declare const APP_VERSION: string; + +const SupabaseContext = React.createContext(null); +export const useSupabase = () => React.useContext(SupabaseContext); + +export const db = new PowerSyncDatabase({ + schema: AppSchema, + database: new WASQLiteOpenFactory({ + dbFilename: 'example.db', + vfs: WASQLiteVFS.OPFSCoopSyncVFS, + flags: { + enableMultiTabs: typeof SharedWorker !== 'undefined' + } + }), + flags: { + enableMultiTabs: typeof SharedWorker !== 'undefined' + } +}); + +export type EnhancedListRecord = ListRecord & { total_tasks: number; completed_tasks: number }; + +export type QueryStore = { + lists: DifferentialWatchedQuery; +}; + +const QueryStore = React.createContext(null); +export const useQueryStore = () => React.useContext(QueryStore); + +export const SystemProvider = ({ children }: { children: React.ReactNode }) => { + const [connector] = React.useState(() => new SupabaseConnector()); + const [powerSync] = React.useState(db); + + const [queryStore] = React.useState(() => { + const listsQuery = db + .query({ + sql: /* sql */ ` + SELECT + ${LISTS_TABLE}.*, + COUNT(${TODOS_TABLE}.id) AS total_tasks, + SUM( + CASE + WHEN ${TODOS_TABLE}.completed = true THEN 1 + ELSE 0 + END + ) as completed_tasks + FROM + ${LISTS_TABLE} + LEFT JOIN ${TODOS_TABLE} ON ${LISTS_TABLE}.id = ${TODOS_TABLE}.list_id + GROUP BY + ${LISTS_TABLE}.id; + ` + }) + .differentialWatch(); + + return { + lists: listsQuery + }; + }); + + React.useEffect(() => { + const logger = createBaseLogger(); + logger.useDefaults(); // eslint-disable-line + logger.setLevel(LogLevel.DEBUG); + // For console testing purposes + (window as any)._powersync = powerSync; + + powerSync.init(); + const l = connector.registerListener({ + initialized: () => {}, + sessionStarted: () => { + powerSync.connect(connector, { + appMetadata: { + app_version: APP_VERSION + } + }); + } + }); + + connector.init(); + + // Demo using SQLite Full-Text Search with PowerSync. + // See https://docs.powersync.com/usage-examples/full-text-search for more details + configureFts(); + + return () => l?.(); + }, [powerSync, connector]); + + return ( + }> + + + + {children} + + + + + ); +}; + +export default SystemProvider; diff --git a/supabase-example/frontend/src/components/providers/ThemeProviderContainer.tsx b/supabase-example/frontend/src/components/providers/ThemeProviderContainer.tsx new file mode 100644 index 0000000..9b9c1d6 --- /dev/null +++ b/supabase-example/frontend/src/components/providers/ThemeProviderContainer.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { createTheme, ThemeProvider } from '@mui/material/styles'; + +export const ThemeProviderContainer: React.FC> = ({ children }) => { + const theme = React.useMemo(() => { + return createTheme({ + palette: { + mode: 'dark', + primary: { + main: '#c44eff' + } + }, + typography: { + fontFamily: 'Rubik, sans-serif' + } + }); + }, []); + + return {children}; +}; diff --git a/supabase-example/frontend/src/components/widgets/GuardBySync.tsx b/supabase-example/frontend/src/components/widgets/GuardBySync.tsx new file mode 100644 index 0000000..57907eb --- /dev/null +++ b/supabase-example/frontend/src/components/widgets/GuardBySync.tsx @@ -0,0 +1,41 @@ +import { Box, LinearProgress, Stack, Typography } from '@mui/material'; +import { useStatus } from '@powersync/react'; +import { FC, ReactNode } from 'react'; + +/** + * A component that renders its child if the database has been synced at least once and shows + * a progress indicator otherwise. + */ +export const GuardBySync: FC<{ children: ReactNode; priority?: number }> = ({ children, priority }) => { + const status = useStatus(); + + const hasSynced = priority == null ? status.hasSynced : status.statusForPriority(priority).hasSynced; + if (hasSynced) { + return children; + } + + // If we haven't completed a sync yet, show a progress indicator! + const allProgress = status.downloadProgress; + const progress = priority == null ? allProgress : allProgress?.untilPriority(priority); + + return ( + + {progress != null ? ( + <> + + + {progress.downloadedOperations == progress.totalOperations ? ( + Applying server-side changes + ) : ( + + Downloaded {progress.downloadedOperations} out of {progress.totalOperations}. + + )} + + + ) : ( + + )} + + ); +}; diff --git a/supabase-example/frontend/src/components/widgets/ListItemWidget.tsx b/supabase-example/frontend/src/components/widgets/ListItemWidget.tsx new file mode 100644 index 0000000..e2ac183 --- /dev/null +++ b/supabase-example/frontend/src/components/widgets/ListItemWidget.tsx @@ -0,0 +1,93 @@ +import { + Avatar, + Box, + IconButton, + ListItem, + ListItemAvatar, + ListItemButton, + ListItemText, + Paper, + styled +} from '@mui/material'; +import React from 'react'; + +import { TODO_LISTS_ROUTE } from '@/app/router'; +import { LISTS_TABLE, TODOS_TABLE } from '@/library/powersync/AppSchema'; +import RightIcon from '@mui/icons-material/ArrowRightAlt'; +import DeleteIcon from '@mui/icons-material/DeleteOutline'; +import ListIcon from '@mui/icons-material/ListAltOutlined'; +import { usePowerSync } from '@powersync/react'; +import { useNavigate } from 'react-router-dom'; + +export type ListItemWidgetProps = { + id: string; + title: string; + description: string; + selected?: boolean; +}; + +export const ListItemWidget: React.FC = React.memo((props) => { + const { id, title, description, selected } = props; + + const powerSync = usePowerSync(); + const navigate = useNavigate(); + + const deleteList = React.useCallback(async () => { + await powerSync.writeTransaction(async (tx) => { + // Delete associated todos + await tx.execute( + /* sql */ ` + DELETE FROM ${TODOS_TABLE} + WHERE + list_id = ? + `, + [id] + ); + // Delete list record + await tx.execute( + /* sql */ ` + DELETE FROM ${LISTS_TABLE} + WHERE + id = ? + `, + [id] + ); + }); + }, [id]); + + const openList = React.useCallback(() => { + navigate(TODO_LISTS_ROUTE + '/' + id); + }, [id]); + + return ( + + + + + + + + + + }> + + + + + + + + + + + ); +}); + +export namespace S { + export const MainPaper = styled(Paper)` + margin-bottom: 10px; + `; +} diff --git a/supabase-example/frontend/src/components/widgets/LoginDetailsWidget.tsx b/supabase-example/frontend/src/components/widgets/LoginDetailsWidget.tsx new file mode 100644 index 0000000..bf2f72c --- /dev/null +++ b/supabase-example/frontend/src/components/widgets/LoginDetailsWidget.tsx @@ -0,0 +1,166 @@ +import React from 'react'; +import { Box, Button, ButtonGroup, FormGroup, Paper, TextField, Typography, styled } from '@mui/material'; +import { Formik, FormikErrors } from 'formik'; + +export type LoginDetailsFormValues = { + email: string; + password: string; +}; + +export type LoginAction = { + title: string; + onClick: (values: LoginDetailsFormValues) => any; +}; + +export type LoginDetailsWidgetProps = { + title: string; + secondaryActions: LoginAction[]; + onSubmit: (values: LoginDetailsFormValues) => any; + submitTitle: string; +}; + +export const LoginDetailsWidget: React.FC = (props) => { + return ( + + + {props.title} + + + + + + initialValues={{ email: '', password: '' }} + validateOnChange={false} + validateOnBlur={false} + validate={(values) => { + const errors: FormikErrors = {}; + if (!values.email) { + errors.email = 'Required'; + } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email)) { + errors.email = 'Invalid email address'; + } + + if (!values.password) { + errors.password = 'Required'; + } + return errors; + }} + onSubmit={async (values, { setSubmitting, setFieldError }) => { + try { + await props.onSubmit(values); + } catch (ex: any) { + console.error(ex); + setSubmitting(false); + setFieldError('password', ex.message); + } + }} + > + {({ values, errors, handleChange, handleBlur, isSubmitting, handleSubmit }) => ( +
+ + + + + + {props.secondaryActions.map((action) => { + return ( + + ); + })} + + +
+ )} + +
+
+ ); +}; + +namespace S { + export const MainContainer = styled(Box)` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + min-height: 100vh; + `; + + export const LoginContainer = styled(Paper)` + width: 100%; + padding: 20px; + display: flex; + flex-grow: 1; + flex-direction: column; + justify-content: center; + + ${(props) => props.theme.breakpoints.up('sm')} { + flex-grow: 0; + max-width: 600px; + } + `; + + export const LoginHeader = styled(Typography)` + margin-bottom: 20px; + `; + + export const LogoBox = styled(Box)` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: 40px; + `; + + export const Logo = styled('img')` + width: auto; + height: auto; + max-width: ${(props) => props.width}px; + max-height: ${(props) => props.height}px; + margin-bottom: 10px; + `; + + export const ActionButtonGroup = styled(ButtonGroup)` + margin-top: 20px; + width: 100%; + display: flex; + justify-content: end; + `; + + export const TextInput = styled(TextField)` + margin-bottom: 20px; + `; +} diff --git a/supabase-example/frontend/src/components/widgets/SearchBarWidget.tsx b/supabase-example/frontend/src/components/widgets/SearchBarWidget.tsx new file mode 100644 index 0000000..de2f947 --- /dev/null +++ b/supabase-example/frontend/src/components/widgets/SearchBarWidget.tsx @@ -0,0 +1,104 @@ +import { Autocomplete, Box, Card, CardContent, FormControl, TextField, Typography } from '@mui/material'; +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { usePowerSync } from '@powersync/react'; +import { LISTS_TABLE, ListRecord } from '@/library/powersync/AppSchema'; +import { SearchResult, searchTable } from '@/app/utils/fts_helpers'; +import { TODO_LISTS_ROUTE } from '@/app/router'; + +// This is a simple search bar widget that allows users to search for lists and todo items +export const SearchBarWidget: React.FC = () => { + const [searchResults, setSearchResults] = React.useState([]); + const [value, setValue] = React.useState(null); + + const navigate = useNavigate(); + const powersync = usePowerSync(); + + const handleInputChange = async (value: string) => { + if (value.length !== 0) { + let listsSearchResults: any[] = []; + const todoItemsSearchResults = await searchTable(value, 'todos'); + for (let i = 0; i < todoItemsSearchResults.length; i++) { + const res = await powersync.get(`SELECT * FROM ${LISTS_TABLE} WHERE id = ?`, [ + todoItemsSearchResults[i]['list_id'] + ]); + todoItemsSearchResults[i]['list_name'] = res.name; + } + if (!todoItemsSearchResults.length) { + listsSearchResults = await searchTable(value, 'lists'); + } + const formattedListResults: SearchResult[] = listsSearchResults.map( + (result) => new SearchResult(result['id'], result['name']) + ); + const formattedTodoItemsResults: SearchResult[] = todoItemsSearchResults.map((result) => { + return new SearchResult(result['list_id'], result['list_name'] ?? '', result['description']); + }); + setSearchResults([...formattedTodoItemsResults, ...formattedListResults]); + } + }; + + return ( +
+ + { + if (option instanceof SearchResult) { + return option.todoName ?? option.listName; + } + return option; + }} + renderOption={(props, option) => ( + + + + {option.listName && ( + + {option.listName} + + )} + {option.todoName && ( + + {'\u2022'} {option.todoName} + + )} + + + + )} + filterOptions={(x) => x} + onInputChange={(event, newInputValue, reason) => { + if (reason === 'clear') { + setValue(null); + setSearchResults([]); + return; + } + handleInputChange(newInputValue); + }} + onChange={(event, newValue, reason) => { + if (reason === 'selectOption') { + if (newValue instanceof SearchResult) { + navigate(TODO_LISTS_ROUTE + '/' + newValue.id); + } + } + }} + selectOnFocus + clearOnBlur + handleHomeEndKeys + renderInput={(params) => ( + + )} + /> + +
+ ); +}; diff --git a/supabase-example/frontend/src/components/widgets/TodoItemWidget.tsx b/supabase-example/frontend/src/components/widgets/TodoItemWidget.tsx new file mode 100644 index 0000000..d44418c --- /dev/null +++ b/supabase-example/frontend/src/components/widgets/TodoItemWidget.tsx @@ -0,0 +1,91 @@ +import { TODOS_TABLE } from '@/library/powersync/AppSchema'; +import CheckBoxIcon from '@mui/icons-material/CheckBox'; +import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'; +import DeleteIcon from '@mui/icons-material/DeleteOutline'; +import { Box, IconButton, ListItem, ListItemAvatar, ListItemButton, ListItemText, Paper, styled } from '@mui/material'; +import { usePowerSync } from '@powersync/react'; +import React from 'react'; +import { useSupabase } from '../providers/SystemProvider'; + +export type TodoItemWidgetProps = { + id: string; + description: string | null; + isComplete: boolean; +}; + +export const TodoItemWidget: React.FC = React.memo((props) => { + const { id, description, isComplete } = props; + + const powerSync = usePowerSync(); + const supabase = useSupabase(); + + const deleteTodo = React.useCallback(async () => { + await powerSync.writeTransaction(async (tx) => { + await tx.execute( + /* sql */ ` + DELETE FROM ${TODOS_TABLE} + WHERE + id = ? + `, + [id] + ); + }); + }, [id]); + + const toggleCompletion = React.useCallback(async () => { + let completedAt: String | null = null; + let completedBy: String | null = null; + + if (!isComplete) { + // Need to set to Completed. This requires a session. + const userID = supabase?.currentSession?.user.id; + if (!userID) { + throw new Error(`Could not get user ID.`); + } + completedAt = new Date().toISOString(); + completedBy = userID; + } + + await powerSync.execute( + /* sql */ ` + UPDATE ${TODOS_TABLE} + SET + completed = ?, + completed_at = ?, + completed_by = ? + WHERE + id = ? + `, + [!isComplete, completedAt, completedBy, id] + ); + }, [id, isComplete]); + + return ( + + + + + + + }> + + + + {props.isComplete ? : } + + + + + + + ); +}); + +namespace S { + export const MainPaper = styled(Paper)` + margin-bottom: 10px; + `; +} diff --git a/supabase-example/frontend/src/components/widgets/TodoListsWidget.tsx b/supabase-example/frontend/src/components/widgets/TodoListsWidget.tsx new file mode 100644 index 0000000..d2f12b9 --- /dev/null +++ b/supabase-example/frontend/src/components/widgets/TodoListsWidget.tsx @@ -0,0 +1,35 @@ +import { List } from '@mui/material'; +import { useWatchedQuerySubscription } from '@powersync/react'; +import { useQueryStore } from '../providers/SystemProvider'; +import { ListItemWidget } from './ListItemWidget'; + +export type TodoListsWidgetProps = { + selectedId?: string; +}; + +const description = (total: number, completed: number = 0) => { + return `${total - completed} pending, ${completed} completed`; +}; + +export function TodoListsWidget(props: TodoListsWidgetProps) { + const queries = useQueryStore(); + const { data: listRecords, isLoading } = useWatchedQuerySubscription(queries!.lists); + + if (isLoading && listRecords.length == 0) { + return
Loading...
; + } + + return ( + + {listRecords.map((r) => ( + + ))} + + ); +} diff --git a/supabase-example/frontend/src/generated/api.d.ts b/supabase-example/frontend/src/generated/api.d.ts new file mode 100644 index 0000000..35417f0 --- /dev/null +++ b/supabase-example/frontend/src/generated/api.d.ts @@ -0,0 +1,122 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/api/data": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Apply a transaction of CRUD operations */ + post: operations["postCrudTransaction"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + CrudTransaction: { + crud: components["schemas"]["CrudEntry"][]; + /** + * Format: int64 + * @description Groups changes from the same transaction; null if no explicit transaction + */ + transaction_id?: number; + }; + CrudEntry: { + /** + * Format: int64 + * @description Auto-incrementing client-side id + */ + client_id: number; + /** @description ID of the changed row */ + id: string; + /** + * @description Type of change + * @enum {string} + */ + op: "PUT" | "PATCH" | "DELETE"; + /** @description Table that contained the change */ + table: string; + /** + * Format: int64 + * @description Auto-incrementing transaction id + */ + transaction_id?: number; + /** @description Data associated with the change */ + op_data?: { + [key: string]: unknown; + }; + /** @description Previous values for UPDATE/DELETE (when trackPreviousValues is enabled) */ + previous_values?: { + [key: string]: unknown; + }; + /** @description Client-side metadata (when trackMetadata is enabled) */ + metadata?: string; + }; + TransactionResponse: { + /** + * @description success: entire transaction persisted, safe to complete. retryable_error: transient failure, transaction rolled back, + * client should retry. + * fatal_error: transaction rolled back due to a non-recoverable + * issue — see failed_operation for details. + * @enum {string} + */ + status: "success" | "retryable_error" | "fatal_error"; + /** @description Suggested retry delay in ms. Only meaningful for retryable_error. */ + retry_after_ms?: number; + /** @description Present when status is fatal_error. Identifies what caused the rollback. */ + failed_operation?: components["schemas"]["FailedOperation"]; + /** @description Human-readable summary for logging/debugging. */ + message?: string; + }; + FailedOperation: { + /** @description Machine-readable classification, e.g. CONFLICT, SCHEMA_MISMATCH, VALIDATION_ERROR, UNIQUE_VIOLATION, FOREIGN_KEY_VIOLATION. */ + error_code: string; + /** @description Human-readable error detail. */ + message?: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export interface operations { + postCrudTransaction: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CrudTransaction"]; + }; + }; + responses: { + /** @description Transaction result. Always returns 200 — the outcome is determined by the status field in the response body. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TransactionResponse"]; + }; + }; + }; + }; +} diff --git a/supabase-example/frontend/src/index.html b/supabase-example/frontend/src/index.html new file mode 100644 index 0000000..d719dfd --- /dev/null +++ b/supabase-example/frontend/src/index.html @@ -0,0 +1,12 @@ + + + + + + + + + +
+ + diff --git a/supabase-example/frontend/src/library/powersync/AppSchema.ts b/supabase-example/frontend/src/library/powersync/AppSchema.ts new file mode 100644 index 0000000..b2d12eb --- /dev/null +++ b/supabase-example/frontend/src/library/powersync/AppSchema.ts @@ -0,0 +1,35 @@ +import { column, Schema, Table } from '@powersync/web'; + +export const LISTS_TABLE = 'lists'; +export const TODOS_TABLE = 'todos'; + +const todos = new Table( + { + list_id: column.text, + created_at: column.text, + completed_at: column.text, + description: column.text, + created_by: column.text, + completed_by: column.text, + completed: column.integer + }, + { indexes: { list: ['list_id'] } } +); + +const lists = new Table({ + created_at: column.text, + name: column.text, + owner_id: column.text +}); + +export const AppSchema = new Schema({ + todos, + lists +}); + +export type Database = (typeof AppSchema)['types']; +export type TodoRecord = Database['todos']; +// OR: +// export type Todo = RowType; + +export type ListRecord = Database['lists']; diff --git a/supabase-example/frontend/src/library/powersync/SupabaseConnector.ts b/supabase-example/frontend/src/library/powersync/SupabaseConnector.ts new file mode 100644 index 0000000..59b34be --- /dev/null +++ b/supabase-example/frontend/src/library/powersync/SupabaseConnector.ts @@ -0,0 +1,137 @@ +import { + AbstractPowerSyncDatabase, + BaseObserver, + PowerSyncBackendConnector, + type PowerSyncCredentials +} from '@powersync/web'; + +import { Session, SupabaseClient, createClient } from '@supabase/supabase-js'; + +import type { components } from '../../generated/api'; + +export type SupabaseConfig = { + supabaseUrl: string; + supabaseAnonKey: string; + powersyncUrl: string; +}; + +export type SupabaseConnectorListener = { + initialized: () => void; + sessionStarted: (session: Session) => void; +}; + +export class SupabaseConnector extends BaseObserver implements PowerSyncBackendConnector { + readonly client: SupabaseClient; + readonly config: SupabaseConfig; + + ready: boolean; + + currentSession: Session | null; + + constructor() { + super(); + this.config = { + supabaseUrl: import.meta.env.VITE_SUPABASE_URL, + powersyncUrl: import.meta.env.VITE_POWERSYNC_URL, + supabaseAnonKey: import.meta.env.VITE_SUPABASE_ANON_KEY + }; + + this.client = createClient(this.config.supabaseUrl, this.config.supabaseAnonKey, { + auth: { + persistSession: true + } + }); + this.currentSession = null; + this.ready = false; + } + + async init() { + if (this.ready) { + return; + } + + const sessionResponse = await this.client.auth.getSession(); + this.updateSession(sessionResponse.data.session); + + this.ready = true; + this.iterateListeners((cb) => cb.initialized?.()); + } + + async login(username: string, password: string) { + const { + data: { session }, + error + } = await this.client.auth.signInWithPassword({ + email: username, + password: password + }); + + if (error) { + throw error; + } + + this.updateSession(session); + } + + async fetchCredentials() { + const { + data: { session }, + error + } = await this.client.auth.getSession(); + + if (!session || error) { + throw new Error(`Could not fetch Supabase credentials: ${error}`); + } + + console.debug('session expires at', session.expires_at); + + return { + endpoint: this.config.powersyncUrl, + token: session.access_token ?? '' + } satisfies PowerSyncCredentials; + } + + async uploadData(database: AbstractPowerSyncDatabase): Promise { + const transaction = await database.getNextCrudTransaction(); + if (!transaction) return; + + type CrudTransactionBody = components['schemas']['CrudTransaction']; + type ApiCrudEntry = components['schemas']['CrudEntry']; + type TransactionResponse = components['schemas']['TransactionResponse']; + + const body: CrudTransactionBody = { + crud: transaction.crud.map((op): ApiCrudEntry => ({ + client_id: op.clientId, + id: op.id, + op: op.op as ApiCrudEntry['op'], + table: op.table, + ...(op.transactionId != null && { transaction_id: op.transactionId }), + ...(op.opData != null && { op_data: op.opData }) + })), + ...(transaction.transactionId != null && { transaction_id: transaction.transactionId }) + }; + + const { data, error } = await this.client.functions.invoke('data', { body }); + if (error) throw error; + const result = data as TransactionResponse; + + switch (result.status) { + case 'success': + await transaction.complete(); + break; + case 'fatal_error': + console.error('Fatal error:', result.failed_operation?.error_code, result.message); + break; + case 'retryable_error': + throw new Error(result.message ?? 'Retryable error'); + } + } + + updateSession(session: Session | null) { + this.currentSession = session; + if (!session) { + return; + } + this.iterateListeners((cb) => cb.sessionStarted?.(session)); + } +} diff --git a/supabase-example/frontend/src/library/powersync/vite-env.d.ts b/supabase-example/frontend/src/library/powersync/vite-env.d.ts new file mode 100644 index 0000000..e3e71b5 --- /dev/null +++ b/supabase-example/frontend/src/library/powersync/vite-env.d.ts @@ -0,0 +1,11 @@ +/// + +interface ImportMetaEnv { + readonly VITE_SUPABASE_URL: string; + readonly VITE_SUPABASE_ANON_KEY: string; + readonly VITE_POWERSYNC_URL: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/supabase-example/frontend/tsconfig.json b/supabase-example/frontend/tsconfig.json new file mode 100644 index 0000000..dc0fde3 --- /dev/null +++ b/supabase-example/frontend/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "exclude": [ + "node_modules" + ] +} diff --git a/supabase-example/frontend/vite.config.mts b/supabase-example/frontend/vite.config.mts new file mode 100644 index 0000000..8af43b8 --- /dev/null +++ b/supabase-example/frontend/vite.config.mts @@ -0,0 +1,71 @@ +import { fileURLToPath, URL } from 'url'; + +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; +import { VitePWA } from 'vite-plugin-pwa'; + +// https://vitejs.dev/config/ +export default defineConfig({ + root: 'src', + build: { + outDir: '../dist', + rollupOptions: { + input: 'src/index.html' + }, + emptyOutDir: true + }, + resolve: { + alias: [{ find: '@', replacement: fileURLToPath(new URL('./src', import.meta.url)) }] + }, + define: { + APP_VERSION: JSON.stringify(process.env.npm_package_version) + }, + publicDir: '../public', + envDir: '..', // Use this dir for env vars, not 'src'. + optimizeDeps: { + // Don't optimize these packages as they contain web workers and WASM files. + // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 + exclude: ['@powersync/web'] + }, + plugins: [ + react(), + VitePWA({ + registerType: 'autoUpdate', + includeAssets: ['powersync-logo.svg', 'supabase-logo.png', 'favicon.ico'], + manifest: { + theme_color: '#c44eff', + background_color: '#c44eff', + display: 'standalone', + scope: '/', + start_url: '/', + name: 'PowerSync React Demo', + short_name: 'PowerSync React', + icons: [ + { + src: '/icons/icon-192x192.png', + sizes: '192x192', + type: 'image/png' + }, + { + src: '/icons/icon-256x256.png', + sizes: '256x256', + type: 'image/png' + }, + { + src: '/icons/icon-384x384.png', + sizes: '384x384', + type: 'image/png' + }, + { + src: '/icons/icon-512x512.png', + sizes: '512x512', + type: 'image/png' + } + ] + } + }) + ], + worker: { + format: 'es' + } +}); diff --git a/supabase-example/powersync/.env.template b/supabase-example/powersync/.env.template new file mode 100644 index 0000000..828192d --- /dev/null +++ b/supabase-example/powersync/.env.template @@ -0,0 +1,13 @@ +# ==================== Supabase Postgres ==================== +# The Supabase Postgres is reachable inside the supabase_network_powersync_demo +# network. Container name is `supabase_db_${project_id}`, where project_id is +# defined in ../supabase/config.toml (powersync_demo). +PG_DATABASE_HOSTNAME=supabase_db_powersync_demo +PG_DATABASE_NAME=postgres +PG_DATABASE_PORT=5432 +PG_DATABASE_USER=postgres +PG_DATABASE_PASSWORD=postgres +PS_DATA_SOURCE_URI=postgres://${PG_DATABASE_USER}:${PG_DATABASE_PASSWORD}@${PG_DATABASE_HOSTNAME}:${PG_DATABASE_PORT}/${PG_DATABASE_NAME} + +# ==================== PowerSync ==================== +PS_PORT=8080 diff --git a/supabase-example/powersync/.gitignore b/supabase-example/powersync/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/supabase-example/powersync/.gitignore @@ -0,0 +1 @@ +.env diff --git a/supabase-example/powersync/config/powersync.yaml b/supabase-example/powersync/config/powersync.yaml new file mode 100644 index 0000000..4d5f04c --- /dev/null +++ b/supabase-example/powersync/config/powersync.yaml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-schema@latest/json-schema/powersync-config.json + +# See https://docs.powersync.com/self-hosting/telemetry +telemetry: + # Opt out of reporting anonymized usage metrics to PowerSync telemetry service + disable_telemetry_sharing: false + +# Settings for source database replication +replication: + connections: + - type: postgresql + uri: !env PS_DATA_SOURCE_URI + + # SSL settings + sslmode: disable # 'verify-full' (default) or 'verify-ca' or 'disable' + +# Connection settings for sync bucket storage +storage: + type: mongodb + uri: !env PS_MONGO_URI + +# The port which the PowerSync API server will listen on +port: !env PS_PORT + +# Specify sync config +sync_config: + path: sync_rules.yaml + +# Client (application end user) authentication settings +client_auth: + # Enable Supabase Auth - PowerSync will fetch public keys from Supabase's JWKS endpoint + supabase: true + # Note: With asymmetric signing keys (ES256), the JWT secret is not needed. "kong" is Supabase's networking container + jwks_uri: http://kong:8000/auth/v1/.well-known/jwks.json + + # JWKS audience + audience: ["authenticated"] diff --git a/supabase-example/powersync/config/sync_rules.yaml b/supabase-example/powersync/config/sync_rules.yaml new file mode 100644 index 0000000..cdf7825 --- /dev/null +++ b/supabase-example/powersync/config/sync_rules.yaml @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=https://unpkg.com/@powersync/service-sync-rules@latest/schema/sync_rules.json +# +# See Documentation for more information: +# https://docs.powersync.com/usage/sync-rules +# +# Note that changes to this file are not watched. +# The service needs to be restarted for changes to take effect. + +config: + edition: 3 + +streams: + user_data: + auto_subscribe: true + queries: + - SELECT * FROM lists WHERE owner_id = auth.user_id() + - SELECT todos.* FROM todos INNER JOIN lists ON todos.list_id = lists.id WHERE lists.owner_id = auth.user_id() diff --git a/supabase-example/powersync/docker-compose.yaml b/supabase-example/powersync/docker-compose.yaml new file mode 100644 index 0000000..66e7877 --- /dev/null +++ b/supabase-example/powersync/docker-compose.yaml @@ -0,0 +1,64 @@ +services: + # MongoDB - PowerSync internal storage + mongo: + image: mongo:7.0 + command: --replSet rs0 --bind_ip_all --quiet + restart: unless-stopped + ports: + - "27017:27017" + volumes: + - mongo_storage:/data/db + + # Initializes the MongoDB replica set + mongo-rs-init: + image: mongo:7.0 + depends_on: + - mongo + restart: on-failure + entrypoint: + - bash + - -c + - 'mongosh --host mongo:27017 --eval ''try{rs.status().ok && quit(0)} catch {} rs.initiate({_id: "rs0", version: 1, members: [{ _id: 0, host : "mongo:27017" }]})''' + + # PowerSync service + powersync: + image: journeyapps/powersync-service:latest + restart: unless-stopped + command: ["start", "-r", "unified"] + depends_on: + mongo-rs-init: + condition: service_completed_successfully + volumes: + - ./config:/config + environment: + POWERSYNC_CONFIG_PATH: /config/powersync.yaml + NODE_OPTIONS: --max-old-space-size=1000 + PS_DATA_SOURCE_URI: ${PS_DATA_SOURCE_URI} + PS_MONGO_URI: mongodb://mongo:27017/powersync_demo + PS_PORT: ${PS_PORT} + healthcheck: + test: + [ + "CMD", + "node", + "-e", + "fetch('http://localhost:${PS_PORT}/probes/liveness').then(r => r.ok ? process.exit(0) : process.exit(1)).catch(() => process.exit(1))" + ] + interval: 5s + timeout: 1s + retries: 15 + ports: + - "${PS_PORT}:${PS_PORT}" + networks: + - default + - supabase_network_powersync_demo + +# Supabase exposes its services on this external network. +# Derived from `supabase_network_${project_id}` where project_id is set +# in ../supabase/config.toml. +networks: + supabase_network_powersync_demo: + external: true + +volumes: + mongo_storage: diff --git a/supabase-example/supabase/.branches/_current_branch b/supabase-example/supabase/.branches/_current_branch new file mode 100644 index 0000000..88d050b --- /dev/null +++ b/supabase-example/supabase/.branches/_current_branch @@ -0,0 +1 @@ +main \ No newline at end of file diff --git a/supabase-example/supabase/.env.local b/supabase-example/supabase/.env.local new file mode 100644 index 0000000..d612ce7 --- /dev/null +++ b/supabase-example/supabase/.env.local @@ -0,0 +1 @@ +SUPABASE_DB_URL=postgres://postgres:mypassword@host.docker.internal:5432/postgres diff --git a/supabase-example/supabase/.gitignore b/supabase-example/supabase/.gitignore new file mode 100644 index 0000000..0cc2f13 --- /dev/null +++ b/supabase-example/supabase/.gitignore @@ -0,0 +1,47 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# ide +.idea +.fleet +.vscode + +# PWA +**/public/workbox-*.js +**/public/sw.js +**/public/swe-worker-* +**/public/worker-*.js +**/public/fallback-*.js diff --git a/supabase-example/supabase/.temp/cli-latest b/supabase-example/supabase/.temp/cli-latest new file mode 100644 index 0000000..a333a1d --- /dev/null +++ b/supabase-example/supabase/.temp/cli-latest @@ -0,0 +1 @@ +v2.98.2 \ No newline at end of file diff --git a/supabase-example/supabase/config.toml b/supabase-example/supabase/config.toml new file mode 100644 index 0000000..970f871 --- /dev/null +++ b/supabase-example/supabase/config.toml @@ -0,0 +1,157 @@ +# A string used to distinguish different Supabase projects on the same host. Defaults to the +# working directory name when running `supabase init`. +project_id = "powersync_demo" + +[api] +enabled = true +# Port to use for the API URL. +port = 54321 +# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API +# endpoints. public and storage are always included. +schemas = ["public", "storage", "graphql_public"] +# Extra schemas to add to the search_path of every request. public is always included. +extra_search_path = ["public", "extensions"] +# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size +# for accidental or malicious requests. +max_rows = 1000 + +[db] +# Port to use for the local database URL. +port = 54322 +# Port used by db diff command to initialize the shadow database. +shadow_port = 54320 +# The database major version to use. This has to be the same as your remote database's. Run `SHOW +# server_version;` on the remote database to check. +major_version = 15 + +[db.pooler] +enabled = false +# Port to use for the local connection pooler. +port = 54329 +# Specifies when a server connection can be reused by other clients. +# Configure one of the supported pooler modes: `transaction`, `session`. +pool_mode = "transaction" +# How many server connections to allow per user/database pair. +default_pool_size = 20 +# Maximum number of client connections allowed. +max_client_conn = 100 + +[realtime] +enabled = true +# Bind realtime via either IPv4 or IPv6. (default: IPv6) +# ip_version = "IPv6" +# The maximum length in bytes of HTTP request headers. (default: 4096) +# max_header_length = 4096 + +[studio] +enabled = true +# Port to use for Supabase Studio. +port = 54323 +# External URL of the API server that frontend connects to. +api_url = "http://127.0.0.1" + +# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they +# are monitored, and you can view the emails that would have been sent from the web interface. +[inbucket] +enabled = true +# Port to use for the email testing server web interface. +port = 54324 +# Uncomment to expose additional ports for testing user applications that send emails. +# smtp_port = 54325 +# pop3_port = 54326 + +[storage] +enabled = true +# The maximum file size allowed (e.g. "5MB", "500KB"). +file_size_limit = "50MiB" + +[auth] +enabled = true +# Use asymmetric JWT signing keys (ES256) instead of legacy JWT secret +signing_keys_path = "./signing_key.json" +# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used +# in emails. +site_url = "http://127.0.0.1:3000" +# A list of *exact* URLs that auth providers are permitted to redirect to post authentication. +additional_redirect_urls = ["https://127.0.0.1:3000"] +# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week). +jwt_expiry = 3600 +# If disabled, the refresh token will never expire. +enable_refresh_token_rotation = true +# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds. +# Requires enable_refresh_token_rotation = true. +refresh_token_reuse_interval = 10 +# Allow/disallow new user signups to your project. +enable_signup = true + +[auth.email] +# Allow/disallow new user signups via email to your project. +enable_signup = true +# If enabled, a user will be required to confirm any email change on both the old, and new email +# addresses. If disabled, only the new email is required to confirm. +double_confirm_changes = false +# If enabled, users need to confirm their email address before signing in. +enable_confirmations = false + +# Uncomment to customize email template +# [auth.email.template.invite] +# subject = "You have been invited" +# content_path = "./supabase/templates/invite.html" + +[auth.sms] +# Allow/disallow new user signups via SMS to your project. +enable_signup = true +# If enabled, users need to confirm their phone number before signing in. +enable_confirmations = false +# Template for sending OTP to users +template = "Your code is {{ .Code }} ." + +# Use pre-defined map of phone number to OTP for testing. +[auth.sms.test_otp] +# 4152127777 = "123456" + +# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`. +[auth.sms.twilio] +enabled = false +account_sid = "" +message_service_sid = "" +# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead: +auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)" + +# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`, +# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `twitch`, +# `twitter`, `slack`, `spotify`, `workos`, `zoom`. +[auth.external.apple] +enabled = false +client_id = "" +# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead: +secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)" +# Overrides the default auth redirectUrl. +redirect_uri = "" +# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure, +# or any other third-party OIDC providers. +url = "" + +[analytics] +enabled = false +port = 54327 +vector_port = 54328 +# Configure one of the supported backends: `postgres`, `bigquery`. +backend = "postgres" + +# Experimental features may be deprecated any time +[experimental] +# Configures Postgres storage engine to use OrioleDB (S3) +orioledb_version = "" +# Configures S3 bucket URL, eg. .s3-.amazonaws.com +s3_host = "env(S3_HOST)" +# Configures S3 bucket region, eg. us-east-1 +s3_region = "env(S3_REGION)" +# Configures AWS_ACCESS_KEY_ID for S3 bucket +s3_access_key = "env(S3_ACCESS_KEY)" +# Configures AWS_SECRET_ACCESS_KEY for S3 bucket +s3_secret_key = "env(S3_SECRET_KEY)" + +[functions.data] +verify_jwt = false +import_map = "./deno.json" diff --git a/supabase-example/supabase/deno.json b/supabase-example/supabase/deno.json new file mode 100644 index 0000000..3dfd8cd --- /dev/null +++ b/supabase-example/supabase/deno.json @@ -0,0 +1,7 @@ +{ + "imports": { + "pg": "npm:pg@^8.11.3", + "@types/pg": "npm:@types/pg@^8.11.11", + "openapi-backend": "npm:openapi-backend@^5.10.6" + } +} diff --git a/supabase-example/supabase/deno.lock b/supabase-example/supabase/deno.lock new file mode 100644 index 0000000..a4f36a3 --- /dev/null +++ b/supabase-example/supabase/deno.lock @@ -0,0 +1,328 @@ +{ + "version": "5", + "specifiers": { + "npm:@types/pg@^8.11.11": "8.20.0", + "npm:openapi-backend@^5.10.6": "5.16.1", + "npm:pg@^8.11.3": "8.20.0" + }, + "npm": { + "@apidevtools/json-schema-ref-parser@11.9.3": { + "integrity": "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==", + "dependencies": [ + "@jsdevtools/ono", + "@types/json-schema", + "js-yaml" + ] + }, + "@jsdevtools/ono@7.1.3": { + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, + "@types/json-schema@7.0.15": { + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "@types/node@25.6.2": { + "integrity": "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==", + "dependencies": [ + "undici-types" + ] + }, + "@types/pg@8.20.0": { + "integrity": "sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==", + "dependencies": [ + "@types/node", + "pg-protocol", + "pg-types" + ] + }, + "ajv-formats@2.1.1_ajv@8.20.0": { + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": [ + "ajv" + ], + "optionalPeers": [ + "ajv" + ] + }, + "ajv@8.20.0": { + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dependencies": [ + "fast-deep-equal", + "fast-uri", + "json-schema-traverse", + "require-from-string" + ] + }, + "argparse@2.0.1": { + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "bath-es5@3.0.3": { + "integrity": "sha512-PdCioDToH3t84lP40kUFCKWCOCH389Dl1kbC8FGoqOwamxsmqxxnJSXdkTOsPoNHXjem4+sJ+bbNoQm5zeCqxg==" + }, + "call-bind-apply-helpers@1.0.2": { + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": [ + "es-errors", + "function-bind" + ] + }, + "call-bound@1.0.4": { + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": [ + "call-bind-apply-helpers", + "get-intrinsic" + ] + }, + "cookie@1.1.1": { + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==" + }, + "dereference-json-schema@0.2.2": { + "integrity": "sha512-w8dUsJyrzH4Zsj8W/tKcjLsmcTKXfdNf+n3BBm1SAfnqpaCodgEUWqQGJ+pNb9NOqPwYMGvUnZZ8nQfeFjJlbQ==" + }, + "dunder-proto@1.0.1": { + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": [ + "call-bind-apply-helpers", + "es-errors", + "gopd" + ] + }, + "es-define-property@1.0.1": { + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors@1.3.0": { + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms@1.1.1": { + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": [ + "es-errors" + ] + }, + "fast-deep-equal@3.1.3": { + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-uri@3.1.2": { + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==" + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic@1.3.0": { + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": [ + "call-bind-apply-helpers", + "es-define-property", + "es-errors", + "es-object-atoms", + "function-bind", + "get-proto", + "gopd", + "has-symbols", + "hasown", + "math-intrinsics" + ] + }, + "get-proto@1.0.1": { + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": [ + "dunder-proto", + "es-object-atoms" + ] + }, + "gopd@1.2.0": { + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, + "has-symbols@1.1.0": { + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "hasown@2.0.3": { + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "dependencies": [ + "function-bind" + ] + }, + "js-yaml@4.1.1": { + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dependencies": [ + "argparse" + ], + "bin": true + }, + "json-schema-traverse@1.0.0": { + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "lodash.merge@4.6.2": { + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash@4.18.1": { + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" + }, + "math-intrinsics@1.1.0": { + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, + "mock-json-schema@1.1.2": { + "integrity": "sha512-3IyduYlhfzPy+nFN8wxUjloUi1hM7l8lN5LITuauUNMQltynJIOfLf/DADwTAp2d6kvSBtWojly1EuxX5B0WkA==", + "dependencies": [ + "lodash" + ] + }, + "object-inspect@1.13.4": { + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" + }, + "openapi-backend@5.16.1": { + "integrity": "sha512-1tfLpC+7CajKv08vuFOLm4t8rJvJyqKuyau5IIIrGg3YuQYhmP7JqDL6p6WnbDCusmh3krCrKXoHB6hLF/iHcQ==", + "dependencies": [ + "@apidevtools/json-schema-ref-parser", + "ajv", + "bath-es5", + "cookie", + "dereference-json-schema", + "lodash", + "mock-json-schema", + "openapi-schema-validator", + "openapi-types", + "qs" + ] + }, + "openapi-schema-validator@12.1.3": { + "integrity": "sha512-xTHOmxU/VQGUgo7Cm0jhwbklOKobXby+/237EG967+3TQEYJztMgX9Q5UE2taZKwyKPUq0j11dngpGjUuxz1hQ==", + "dependencies": [ + "ajv", + "ajv-formats", + "lodash.merge", + "openapi-types" + ] + }, + "openapi-types@12.1.3": { + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==" + }, + "pg-cloudflare@1.3.0": { + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==" + }, + "pg-connection-string@2.12.0": { + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==" + }, + "pg-int8@1.0.1": { + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool@3.13.0_pg@8.20.0": { + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "dependencies": [ + "pg" + ] + }, + "pg-protocol@1.13.0": { + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==" + }, + "pg-types@2.2.0": { + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": [ + "pg-int8", + "postgres-array", + "postgres-bytea", + "postgres-date", + "postgres-interval" + ] + }, + "pg@8.20.0": { + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "dependencies": [ + "pg-connection-string", + "pg-pool", + "pg-protocol", + "pg-types", + "pgpass" + ], + "optionalDependencies": [ + "pg-cloudflare" + ] + }, + "pgpass@1.0.5": { + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": [ + "split2" + ] + }, + "postgres-array@2.0.0": { + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea@1.0.1": { + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==" + }, + "postgres-date@1.0.7": { + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval@1.2.0": { + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": [ + "xtend" + ] + }, + "qs@6.15.1": { + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "dependencies": [ + "side-channel" + ] + }, + "require-from-string@2.0.2": { + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "side-channel-list@1.0.1": { + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dependencies": [ + "es-errors", + "object-inspect" + ] + }, + "side-channel-map@1.0.1": { + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": [ + "call-bound", + "es-errors", + "get-intrinsic", + "object-inspect" + ] + }, + "side-channel-weakmap@1.0.2": { + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": [ + "call-bound", + "es-errors", + "get-intrinsic", + "object-inspect", + "side-channel-map" + ] + }, + "side-channel@1.1.0": { + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": [ + "es-errors", + "object-inspect", + "side-channel-list", + "side-channel-map", + "side-channel-weakmap" + ] + }, + "split2@4.2.0": { + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" + }, + "undici-types@7.19.2": { + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==" + }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + }, + "workspace": { + "dependencies": [ + "npm:@types/pg@^8.11.11", + "npm:openapi-backend@^5.10.6", + "npm:pg@^8.11.3" + ], + "packageJson": { + "dependencies": [ + "npm:openapi-typescript@^7.13.0" + ] + } + } +} diff --git a/supabase-example/supabase/functions/data/errors.ts b/supabase-example/supabase/functions/data/errors.ts new file mode 100644 index 0000000..0eecfd7 --- /dev/null +++ b/supabase-example/supabase/functions/data/errors.ts @@ -0,0 +1,16 @@ +/** Transient failure (deadlock, timeout, connection error). Client should retry. */ +export class RetryableError extends Error { + constructor(message: string) { + super(message); + } +} + +/** Non-recoverable failure (constraint violation, schema mismatch). Client should NOT retry. */ +export class FatalOperationError extends Error { + constructor( + public readonly errorCode: string, + message: string + ) { + super(message); + } +} diff --git a/supabase-example/supabase/functions/data/generated/api.ts b/supabase-example/supabase/functions/data/generated/api.ts new file mode 100644 index 0000000..35417f0 --- /dev/null +++ b/supabase-example/supabase/functions/data/generated/api.ts @@ -0,0 +1,122 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/api/data": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Apply a transaction of CRUD operations */ + post: operations["postCrudTransaction"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + CrudTransaction: { + crud: components["schemas"]["CrudEntry"][]; + /** + * Format: int64 + * @description Groups changes from the same transaction; null if no explicit transaction + */ + transaction_id?: number; + }; + CrudEntry: { + /** + * Format: int64 + * @description Auto-incrementing client-side id + */ + client_id: number; + /** @description ID of the changed row */ + id: string; + /** + * @description Type of change + * @enum {string} + */ + op: "PUT" | "PATCH" | "DELETE"; + /** @description Table that contained the change */ + table: string; + /** + * Format: int64 + * @description Auto-incrementing transaction id + */ + transaction_id?: number; + /** @description Data associated with the change */ + op_data?: { + [key: string]: unknown; + }; + /** @description Previous values for UPDATE/DELETE (when trackPreviousValues is enabled) */ + previous_values?: { + [key: string]: unknown; + }; + /** @description Client-side metadata (when trackMetadata is enabled) */ + metadata?: string; + }; + TransactionResponse: { + /** + * @description success: entire transaction persisted, safe to complete. retryable_error: transient failure, transaction rolled back, + * client should retry. + * fatal_error: transaction rolled back due to a non-recoverable + * issue — see failed_operation for details. + * @enum {string} + */ + status: "success" | "retryable_error" | "fatal_error"; + /** @description Suggested retry delay in ms. Only meaningful for retryable_error. */ + retry_after_ms?: number; + /** @description Present when status is fatal_error. Identifies what caused the rollback. */ + failed_operation?: components["schemas"]["FailedOperation"]; + /** @description Human-readable summary for logging/debugging. */ + message?: string; + }; + FailedOperation: { + /** @description Machine-readable classification, e.g. CONFLICT, SCHEMA_MISMATCH, VALIDATION_ERROR, UNIQUE_VIOLATION, FOREIGN_KEY_VIOLATION. */ + error_code: string; + /** @description Human-readable error detail. */ + message?: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export interface operations { + postCrudTransaction: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CrudTransaction"]; + }; + }; + responses: { + /** @description Transaction result. Always returns 200 — the outcome is determined by the status field in the response body. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["TransactionResponse"]; + }; + }; + }; + }; +} diff --git a/supabase-example/supabase/functions/data/index.ts b/supabase-example/supabase/functions/data/index.ts new file mode 100644 index 0000000..f1d99e7 --- /dev/null +++ b/supabase-example/supabase/functions/data/index.ts @@ -0,0 +1,69 @@ +import { OpenAPIBackend, type Document } from 'openapi-backend'; +import openapiDefinition from './openapi.json' with { type: 'json' }; +import { createPostgresPersister } from './persistance/postgres-persistance.ts'; +import { FatalOperationError, RetryableError } from './errors.ts'; +import type { OpBody, OpResponse } from './types.ts'; + +// SUPABASE_DB_URL is auto-injected by the Supabase CLI (`supabase functions serve`) +// and present in hosted Supabase Edge Functions. In production it should point at +// the Transaction Pooler (port 6543), not the direct DB. +const uri = Deno.env.get('SUPABASE_DB_URL'); +if (!uri) throw new Error('SUPABASE_DB_URL is required'); + +const { updateBatch } = createPostgresPersister(uri); + +const api = new OpenAPIBackend({ definition: openapiDefinition as Document }); +await api.init(); + +Deno.serve(async (req) => { + if (req.method !== 'POST') { + return new Response('Method Not Allowed', { status: 405 }); + } + + const body = await req.json(); + + const validation = api.validateRequest({ + method: 'post', + path: '/api/data', + body, + headers: Object.fromEntries(req.headers) + }); + if (!validation.valid) { + return Response.json({ + status: 'fatal_error', + message: 'Invalid request body', + failed_operation: { + error_code: 'VALIDATION_ERROR', + message: validation.errors?.map((e) => `${e.instancePath} ${e.message}`).join('; ') + } + } satisfies OpResponse<'postCrudTransaction'>); + } + + const typed = body as OpBody<'postCrudTransaction'>; + try { + await updateBatch(typed.crud); + return Response.json({ + status: 'success', + message: 'Transaction completed' + } satisfies OpResponse<'postCrudTransaction'>); + } catch (e) { + if (e instanceof FatalOperationError) { + return Response.json({ + status: 'fatal_error', + message: e.message, + failed_operation: { error_code: e.errorCode, message: e.message } + } satisfies OpResponse<'postCrudTransaction'>); + } + if (e instanceof RetryableError) { + return Response.json({ + status: 'retryable_error', + message: e.message + } satisfies OpResponse<'postCrudTransaction'>); + } + const msg = e instanceof Error ? e.message : String(e); + return Response.json({ + status: 'retryable_error', + message: msg + } satisfies OpResponse<'postCrudTransaction'>); + } +}); diff --git a/supabase-example/supabase/functions/data/mapping/default.ts b/supabase-example/supabase/functions/data/mapping/default.ts new file mode 100644 index 0000000..c3a2141 --- /dev/null +++ b/supabase-example/supabase/functions/data/mapping/default.ts @@ -0,0 +1,13 @@ +import type { EntryMapper } from './types.ts'; + +export const defaultMapper: EntryMapper = (entry) => { + const data = entry.op_data ?? {}; + const id = (entry.id ?? data.id) as string; + + if (entry.op === 'DELETE') { + return { table: entry.table, op: entry.op, id, data: {} }; + } + + const { id: _discardId, ...fields } = data; + return { table: entry.table, op: entry.op, id, data: fields }; +}; diff --git a/supabase-example/supabase/functions/data/mapping/index.ts b/supabase-example/supabase/functions/data/mapping/index.ts new file mode 100644 index 0000000..19a328c --- /dev/null +++ b/supabase-example/supabase/functions/data/mapping/index.ts @@ -0,0 +1,2 @@ +export type { MappedEntry, EntryMapper } from './types.ts'; +export { defaultMapper } from './default.ts'; diff --git a/supabase-example/supabase/functions/data/mapping/types.ts b/supabase-example/supabase/functions/data/mapping/types.ts new file mode 100644 index 0000000..2f3bb23 --- /dev/null +++ b/supabase-example/supabase/functions/data/mapping/types.ts @@ -0,0 +1,14 @@ +import type { CrudEntry } from '../types.ts'; + +export interface MappedEntry { + table: string; + op: 'PUT' | 'PATCH' | 'DELETE'; + id: string; + data: Record; +} + +/** + * Transforms a CrudEntry into a MappedEntry for persistence. + * Return null to skip the operation. + */ +export type EntryMapper = (entry: CrudEntry) => MappedEntry | null; diff --git a/supabase-example/supabase/functions/data/openapi.json b/supabase-example/supabase/functions/data/openapi.json new file mode 100644 index 0000000..f84ed3f --- /dev/null +++ b/supabase-example/supabase/functions/data/openapi.json @@ -0,0 +1,168 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "PowerSync Supabase Edge Function Slice", + "description": "Trimmed write-path slice served by a Supabase Edge Function.", + "version": "1.0.0" + }, + "servers": [ + { + "url": "http://localhost:54321/functions/v1", + "description": "Local Supabase functions" + } + ], + "paths": { + "/api/data": { + "post": { + "operationId": "postCrudTransaction", + "summary": "Apply a transaction of CRUD operations", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrudTransaction" + } + } + } + }, + "responses": { + "200": { + "description": "Transaction result. Always returns 200 — the outcome is determined by the status field in the response body.\n", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransactionResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "CrudTransaction": { + "type": "object", + "required": [ + "crud" + ], + "properties": { + "crud": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrudEntry" + } + }, + "transaction_id": { + "type": "integer", + "format": "int64", + "description": "Groups changes from the same transaction; null if no explicit transaction" + } + } + }, + "CrudEntry": { + "type": "object", + "required": [ + "client_id", + "id", + "op", + "table" + ], + "properties": { + "client_id": { + "type": "integer", + "format": "int64", + "description": "Auto-incrementing client-side id" + }, + "id": { + "type": "string", + "description": "ID of the changed row" + }, + "op": { + "type": "string", + "enum": [ + "PUT", + "PATCH", + "DELETE" + ], + "description": "Type of change" + }, + "table": { + "type": "string", + "description": "Table that contained the change" + }, + "transaction_id": { + "type": "integer", + "format": "int64", + "description": "Auto-incrementing transaction id" + }, + "op_data": { + "type": "object", + "additionalProperties": true, + "description": "Data associated with the change" + }, + "previous_values": { + "type": "object", + "additionalProperties": true, + "description": "Previous values for UPDATE/DELETE (when trackPreviousValues is enabled)" + }, + "metadata": { + "type": "string", + "description": "Client-side metadata (when trackMetadata is enabled)" + } + } + }, + "TransactionResponse": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "enum": [ + "success", + "retryable_error", + "fatal_error" + ], + "description": "success: entire transaction persisted, safe to complete. retryable_error: transient failure, transaction rolled back,\n client should retry.\nfatal_error: transaction rolled back due to a non-recoverable\n issue — see failed_operation for details.\n" + }, + "retry_after_ms": { + "type": "integer", + "description": "Suggested retry delay in ms. Only meaningful for retryable_error.\n" + }, + "failed_operation": { + "description": "Present when status is fatal_error. Identifies what caused the rollback.\n", + "allOf": [ + { + "$ref": "#/components/schemas/FailedOperation" + } + ] + }, + "message": { + "type": "string", + "description": "Human-readable summary for logging/debugging." + } + } + }, + "FailedOperation": { + "type": "object", + "required": [ + "error_code" + ], + "properties": { + "error_code": { + "type": "string", + "description": "Machine-readable classification, e.g. CONFLICT, SCHEMA_MISMATCH, VALIDATION_ERROR, UNIQUE_VIOLATION, FOREIGN_KEY_VIOLATION.\n" + }, + "message": { + "type": "string", + "description": "Human-readable error detail." + } + } + } + } + } +} \ No newline at end of file diff --git a/supabase-example/supabase/functions/data/openapi.yaml b/supabase-example/supabase/functions/data/openapi.yaml new file mode 100644 index 0000000..8da90fa --- /dev/null +++ b/supabase-example/supabase/functions/data/openapi.yaml @@ -0,0 +1,129 @@ +openapi: 3.0.3 +info: + title: PowerSync Supabase Edge Function Slice + description: Trimmed write-path slice served by a Supabase Edge Function. + version: 1.0.0 + +servers: + - url: http://localhost:54321/functions/v1 + description: Local Supabase functions + +paths: + /api/data: + post: + operationId: postCrudTransaction + summary: Apply a transaction of CRUD operations + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/CrudTransaction" + responses: + "200": + description: > + Transaction result. Always returns 200 — the outcome + is determined by the status field in the response body. + content: + application/json: + schema: + $ref: "#/components/schemas/TransactionResponse" + +components: + schemas: + CrudTransaction: + type: object + required: + - crud + properties: + crud: + type: array + items: + $ref: "#/components/schemas/CrudEntry" + transaction_id: + type: integer + format: int64 + description: Groups changes from the same transaction; null if no explicit transaction + + CrudEntry: + type: object + required: + - client_id + - id + - op + - table + properties: + client_id: + type: integer + format: int64 + description: Auto-incrementing client-side id + id: + type: string + description: ID of the changed row + op: + type: string + enum: + - PUT + - PATCH + - DELETE + description: Type of change + table: + type: string + description: Table that contained the change + transaction_id: + type: integer + format: int64 + description: Auto-incrementing transaction id + op_data: + type: object + additionalProperties: true + description: Data associated with the change + previous_values: + type: object + additionalProperties: true + description: Previous values for UPDATE/DELETE (when trackPreviousValues is enabled) + metadata: + type: string + description: Client-side metadata (when trackMetadata is enabled) + + TransactionResponse: + type: object + required: [status] + properties: + status: + type: string + enum: [success, retryable_error, fatal_error] + description: > + success: entire transaction persisted, safe to complete. + retryable_error: transient failure, transaction rolled back, + client should retry. + fatal_error: transaction rolled back due to a non-recoverable + issue — see failed_operation for details. + retry_after_ms: + type: integer + description: > + Suggested retry delay in ms. Only meaningful for + retryable_error. + failed_operation: + description: > + Present when status is fatal_error. Identifies what + caused the rollback. + allOf: + - $ref: "#/components/schemas/FailedOperation" + message: + type: string + description: Human-readable summary for logging/debugging. + + FailedOperation: + type: object + required: [error_code] + properties: + error_code: + type: string + description: > + Machine-readable classification, e.g. CONFLICT, + SCHEMA_MISMATCH, VALIDATION_ERROR, UNIQUE_VIOLATION, + FOREIGN_KEY_VIOLATION. + message: + type: string + description: Human-readable error detail. diff --git a/supabase-example/supabase/functions/data/persistance/postgres-persistance.ts b/supabase-example/supabase/functions/data/persistance/postgres-persistance.ts new file mode 100644 index 0000000..dd224ff --- /dev/null +++ b/supabase-example/supabase/functions/data/persistance/postgres-persistance.ts @@ -0,0 +1,116 @@ +// @deno-types="@types/pg" +import PG from 'pg'; +import type { Persister, CrudEntry } from '../types.ts'; +import { RetryableError, FatalOperationError } from '../errors.ts'; +import type { EntryMapper } from '../mapping/types.ts'; +import { defaultMapper } from '../mapping/default.ts'; + +const { Pool } = PG; + +function escapeIdentifier(identifier: string): string { + return `"${identifier.replace(/"/g, '""').replace(/\./g, '"."')}"`; +} + +export const createPostgresPersister = (uri: string, mapper: EntryMapper = defaultMapper): Persister => { + console.debug('Using Postgres Persister'); + + const pool = new Pool({ + connectionString: uri, + max: 1, + idleTimeoutMillis: 0 + }); + + pool.on('error', (err, client) => { + console.error('Pool connection failure to postgres:', err, client); + }); + + const persister: Persister = { + updateBatch: async (batch: CrudEntry[]) => { + const client = await pool.connect(); + try { + await client.query('BEGIN'); + + for (const op of batch) { + const mapped = mapper(op); + if (mapped === null) continue; + + const table = escapeIdentifier(mapped.table); + + if (mapped.op == 'PUT') { + const with_id = { ...mapped.data, id: mapped.id }; + + const columnsEscaped = Object.keys(with_id).map(escapeIdentifier); + const columnsJoined = columnsEscaped.join(', '); + + const updateClauses: string[] = []; + + for (const key of Object.keys(mapped.data)) { + if (key == 'id') { + continue; + } + updateClauses.push(`${escapeIdentifier(key)} = EXCLUDED.${escapeIdentifier(key)}`); + } + + const updateClause = updateClauses.length > 0 ? `DO UPDATE SET ${updateClauses.join(', ')}` : `DO NOTHING`; + + const statement = ` + WITH data_row AS ( + SELECT (json_populate_record(null::${table}, $1::json)).* + ) + INSERT INTO ${table} (${columnsJoined}) + SELECT ${columnsJoined} FROM data_row + ON CONFLICT(id) ${updateClause}`; + + await client.query(statement, [JSON.stringify(with_id)]); + } else if (mapped.op == 'PATCH') { + const with_id = { ...mapped.data, id: mapped.id }; + + const updateClauses: string[] = []; + + for (const key of Object.keys(mapped.data)) { + if (key == 'id') { + continue; + } + updateClauses.push(`${escapeIdentifier(key)} = data_row.${escapeIdentifier(key)}`); + } + + const statement = ` + WITH data_row AS ( + SELECT (json_populate_record(null::${table}, $1::json)).* + ) + UPDATE ${table} + SET ${updateClauses.join(', ')} + FROM data_row + WHERE ${table}.id = data_row.id`; + await client.query(statement, [JSON.stringify(with_id)]); + } else if (mapped.op == 'DELETE') { + const statement = ` + WITH data_row AS ( + SELECT (json_populate_record(null::${table}, $1::json)).* + ) + DELETE FROM ${table} + USING data_row + WHERE ${table}.id = data_row.id`; + await client.query(statement, [JSON.stringify({ id: mapped.id })]); + } + } + await client.query('COMMIT'); + } catch (e) { + await client.query('ROLLBACK'); + const err = e as Error & { code?: string }; + const code = err.code ?? ''; + if (code === '23505') { + throw new FatalOperationError('UNIQUE_VIOLATION', err.message); + } else if (code === '23503') { + throw new FatalOperationError('FOREIGN_KEY_VIOLATION', err.message); + } else if (code.startsWith('42')) { + throw new FatalOperationError('SCHEMA_MISMATCH', err.message); + } + throw new RetryableError(err.message); + } finally { + client.release(); + } + } + }; + return persister; +}; diff --git a/supabase-example/supabase/functions/data/types.ts b/supabase-example/supabase/functions/data/types.ts new file mode 100644 index 0000000..a0ed750 --- /dev/null +++ b/supabase-example/supabase/functions/data/types.ts @@ -0,0 +1,22 @@ +import type { components, operations } from './generated/api.ts'; + +export type CrudEntry = components['schemas']['CrudEntry']; +export type OpType = CrudEntry['op']; + +/** Extract the JSON request body type for a given operation */ +export type OpBody = operations[Op] extends { + requestBody: { content: { 'application/json': infer B } }; +} + ? B + : never; + +/** Extract the JSON 200 response body type for a given operation */ +export type OpResponse = operations[Op] extends { + responses: { 200: { content: { 'application/json': infer R } } }; +} + ? R + : never; + +export interface Persister { + updateBatch: (batch: CrudEntry[]) => Promise; +} diff --git a/supabase-example/supabase/node_modules/@types/pg b/supabase-example/supabase/node_modules/@types/pg new file mode 120000 index 0000000..4195c3a --- /dev/null +++ b/supabase-example/supabase/node_modules/@types/pg @@ -0,0 +1 @@ +../.deno/@types+pg@8.20.0/node_modules/@types/pg \ No newline at end of file diff --git a/supabase-example/supabase/node_modules/js-yaml b/supabase-example/supabase/node_modules/js-yaml new file mode 120000 index 0000000..f9656f3 --- /dev/null +++ b/supabase-example/supabase/node_modules/js-yaml @@ -0,0 +1 @@ +.pnpm/js-yaml@4.1.1/node_modules/js-yaml \ No newline at end of file diff --git a/supabase-example/supabase/node_modules/openapi-backend b/supabase-example/supabase/node_modules/openapi-backend new file mode 120000 index 0000000..effa8ee --- /dev/null +++ b/supabase-example/supabase/node_modules/openapi-backend @@ -0,0 +1 @@ +.deno/openapi-backend@5.16.1/node_modules/openapi-backend \ No newline at end of file diff --git a/supabase-example/supabase/node_modules/openapi-typescript b/supabase-example/supabase/node_modules/openapi-typescript new file mode 120000 index 0000000..7c2356c --- /dev/null +++ b/supabase-example/supabase/node_modules/openapi-typescript @@ -0,0 +1 @@ +.pnpm/openapi-typescript@7.13.0_typescript@5.9.3/node_modules/openapi-typescript \ No newline at end of file diff --git a/supabase-example/supabase/node_modules/pg b/supabase-example/supabase/node_modules/pg new file mode 120000 index 0000000..d43d6aa --- /dev/null +++ b/supabase-example/supabase/node_modules/pg @@ -0,0 +1 @@ +.deno/pg@8.20.0/node_modules/pg \ No newline at end of file diff --git a/supabase-example/supabase/package.json b/supabase-example/supabase/package.json new file mode 100644 index 0000000..02abbc9 --- /dev/null +++ b/supabase-example/supabase/package.json @@ -0,0 +1,12 @@ +{ + "name": "supabase-slice", + "version": "1.0.0", + "type": "module", + "scripts": { + "generate-types": "openapi-typescript ./functions/data/openapi.yaml -o ./functions/data/generated/api.ts && node ./scripts/yaml-to-json.mjs ./functions/data/openapi.yaml ./functions/data/openapi.json" + }, + "devDependencies": { + "js-yaml": "^4.1.0", + "openapi-typescript": "^7.13.0" + } +} diff --git a/supabase-example/supabase/pnpm-lock.yaml b/supabase-example/supabase/pnpm-lock.yaml new file mode 100644 index 0000000..9ba0b04 --- /dev/null +++ b/supabase-example/supabase/pnpm-lock.yaml @@ -0,0 +1,260 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + js-yaml: + specifier: ^4.1.0 + version: 4.1.1 + openapi-typescript: + specifier: ^7.13.0 + version: 7.13.0(typescript@5.9.3) + +packages: + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@redocly/ajv@8.11.2': + resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} + + '@redocly/config@0.22.0': + resolution: {integrity: sha512-gAy93Ddo01Z3bHuVdPWfCwzgfaYgMdaZPcfL7JZ7hWJoK9V0lXDbigTWkhiPFAaLWzbOJ+kbUQG1+XwIm0KRGQ==} + + '@redocly/openapi-core@1.34.14': + resolution: {integrity: sha512-y+xFx+Zz54Xhr8jUdnLENYnt7Y7GEDL6Q03ga7rTtX8DVwefX9H+hQEPgJp1nda7vdH+wJ9/HBVvyfBuW9x6rA==} + engines: {node: '>=18.17.0', npm: '>=9.5.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + openapi-typescript@7.13.0: + resolution: {integrity: sha512-EFP392gcqXS7ntPvbhBzbF8TyBA+baIYEm791Hy5YkjDYKTnk/Tn5OQeKm5BIZvJihpp8Zzr4hzx0Irde1LNGQ==} + hasBin: true + peerDependencies: + typescript: ^5.x + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + uri-js-replace@1.0.1: + resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} + + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + +snapshots: + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.28.5': {} + + '@redocly/ajv@8.11.2': + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js-replace: 1.0.1 + + '@redocly/config@0.22.0': {} + + '@redocly/openapi-core@1.34.14(supports-color@10.2.2)': + dependencies: + '@redocly/ajv': 8.11.2 + '@redocly/config': 0.22.0 + colorette: 1.4.0 + https-proxy-agent: 7.0.6(supports-color@10.2.2) + js-levenshtein: 1.1.6 + js-yaml: 4.1.1 + minimatch: 5.1.9 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + + ansi-colors@4.1.3: {} + + argparse@2.0.1: {} + + balanced-match@1.0.2: {} + + brace-expansion@2.1.0: + dependencies: + balanced-match: 1.0.2 + + change-case@5.4.4: {} + + colorette@1.4.0: {} + + debug@4.4.3(supports-color@10.2.2): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 10.2.2 + + fast-deep-equal@3.1.3: {} + + https-proxy-agent@7.0.6(supports-color@10.2.2): + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + + index-to-position@1.2.0: {} + + js-levenshtein@1.1.6: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@1.0.0: {} + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.0 + + ms@2.1.3: {} + + openapi-typescript@7.13.0(typescript@5.9.3): + dependencies: + '@redocly/openapi-core': 1.34.14(supports-color@10.2.2) + ansi-colors: 4.1.3 + change-case: 5.4.4 + parse-json: 8.3.0 + supports-color: 10.2.2 + typescript: 5.9.3 + yargs-parser: 21.1.1 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.29.0 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + picocolors@1.1.1: {} + + pluralize@8.0.0: {} + + require-from-string@2.0.2: {} + + supports-color@10.2.2: {} + + type-fest@4.41.0: {} + + typescript@5.9.3: {} + + uri-js-replace@1.0.1: {} + + yaml-ast-parser@0.0.43: {} + + yargs-parser@21.1.1: {} diff --git a/supabase-example/supabase/scripts/yaml-to-json.mjs b/supabase-example/supabase/scripts/yaml-to-json.mjs new file mode 100644 index 0000000..b7a1464 --- /dev/null +++ b/supabase-example/supabase/scripts/yaml-to-json.mjs @@ -0,0 +1,10 @@ +import { readFileSync, writeFileSync } from 'node:fs'; +import yaml from 'js-yaml'; + +const [, , input, output] = process.argv; +if (!input || !output) { + console.error('usage: yaml-to-json.mjs '); + process.exit(1); +} + +writeFileSync(output, JSON.stringify(yaml.load(readFileSync(input, 'utf8')), null, 2)); diff --git a/supabase-example/supabase/setup.sh b/supabase-example/supabase/setup.sh new file mode 100755 index 0000000..7f7a75c --- /dev/null +++ b/supabase-example/supabase/setup.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Helper for generating a Supabase ES256 signing key and starting Supabase. +# In production, use the Supabase CLI directly and store the signing key +# securely instead. + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SUPABASE_DIR="$SCRIPT_DIR/../supabase" +SIGNING_KEY_FILE="$SUPABASE_DIR/signing_key.json" + +echo "Generating ES256 signing key..." +echo "[]" > "$SIGNING_KEY_FILE" +(cd "$SUPABASE_DIR" && supabase gen signing-key --algorithm ES256 --append) +echo "Signing key generated at: $SIGNING_KEY_FILE" + +echo "Starting Supabase..." +cd "$SUPABASE_DIR" +supabase start diff --git a/supabase-example/supabase/signing_key.json b/supabase-example/supabase/signing_key.json new file mode 100644 index 0000000..2716035 --- /dev/null +++ b/supabase-example/supabase/signing_key.json @@ -0,0 +1,17 @@ +[ + { + "kty": "EC", + "kid": "cc7a4842-b156-46b8-9071-f6736301dcef", + "use": "sig", + "key_ops": [ + "sign", + "verify" + ], + "alg": "ES256", + "ext": true, + "d": "OmeO8UD_5zrRA5JDepyfBvJXfiV44ULjNVF63E_Q-go", + "crv": "P-256", + "x": "VP2ldQdk5z68M1tBLLpO89Pzt-BGH_WQzTehtOet3NQ", + "y": "iAt8PkPd147TA7cPERaU3Crj0L2CvBMCSOfync4TqdM" + } +] From dc08041c3602710c43094712ff645f6540bb6bc9 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Wed, 13 May 2026 13:02:19 +0200 Subject: [PATCH 2/4] Fix for edge function failure. --- supabase-example/README.md | 1 - supabase-example/diagram.png | Bin 0 -> 218617 bytes supabase-example/supabase/.gitignore | 7 ---- .../supabase/functions/data/index.ts | 7 +++- .../20240712064101_configure_powersync.sql | 30 ++++++++++++++++++ supabase-example/supabase/signing_key.json | 8 ++--- 6 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 supabase-example/diagram.png create mode 100644 supabase-example/supabase/migrations/20240712064101_configure_powersync.sql diff --git a/supabase-example/README.md b/supabase-example/README.md index 85c353c..f07fe82 100644 --- a/supabase-example/README.md +++ b/supabase-example/README.md @@ -15,7 +15,6 @@ supabase-example/ ```bash # 1. Start Supabase (generates signing key on first run) cd supabase && ./setup.sh -supabase functions serve data # 2. Start PowerSync + Mongo cd ../powersync && cp .env.template .env && docker compose up -d diff --git a/supabase-example/diagram.png b/supabase-example/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1b56a544016c59524da5cda33d318ead9e31cf GIT binary patch literal 218617 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 F`5!Sjq_Y43 literal 0 HcmV?d00001 diff --git a/supabase-example/supabase/.gitignore b/supabase-example/supabase/.gitignore index 0cc2f13..ebd2672 100644 --- a/supabase-example/supabase/.gitignore +++ b/supabase-example/supabase/.gitignore @@ -38,10 +38,3 @@ next-env.d.ts .idea .fleet .vscode - -# PWA -**/public/workbox-*.js -**/public/sw.js -**/public/swe-worker-* -**/public/worker-*.js -**/public/fallback-*.js diff --git a/supabase-example/supabase/functions/data/index.ts b/supabase-example/supabase/functions/data/index.ts index f1d99e7..123ae8e 100644 --- a/supabase-example/supabase/functions/data/index.ts +++ b/supabase-example/supabase/functions/data/index.ts @@ -7,8 +7,13 @@ import type { OpBody, OpResponse } from './types.ts'; // SUPABASE_DB_URL is auto-injected by the Supabase CLI (`supabase functions serve`) // and present in hosted Supabase Edge Functions. In production it should point at // the Transaction Pooler (port 6543), not the direct DB. -const uri = Deno.env.get('SUPABASE_DB_URL'); +let uri = Deno.env.get('SUPABASE_DB_URL'); if (!uri) throw new Error('SUPABASE_DB_URL is required'); +// `supabase start` injects a SUPABASE_DB_URL whose host is the db container name +// (e.g. supabase_db_powersync_demo). Deno's resolver rejects names with +// underscores per RFC 1035, surfacing as `getaddrinfo ENOTFOUND` though libc +// resolves them fine. Route through the host gateway instead. +uri = uri.replace(/supabase_db_[^:/]+:\d+/, 'host.docker.internal:54322'); const { updateBatch } = createPostgresPersister(uri); diff --git a/supabase-example/supabase/migrations/20240712064101_configure_powersync.sql b/supabase-example/supabase/migrations/20240712064101_configure_powersync.sql new file mode 100644 index 0000000..8c10057 --- /dev/null +++ b/supabase-example/supabase/migrations/20240712064101_configure_powersync.sql @@ -0,0 +1,30 @@ + +create table + public.lists ( + id uuid not null default gen_random_uuid (), + created_at timestamp with time zone not null default now(), + name text not null, + owner_id uuid not null, + constraint lists_pkey primary key (id), + constraint lists_owner_id_fkey foreign key (owner_id) references auth.users (id) on delete cascade + ) tablespace pg_default; + +create table + public.todos ( + id uuid not null default gen_random_uuid (), + created_at timestamp with time zone not null default now(), + completed_at timestamp with time zone null, + description text not null, + completed boolean not null default false, + created_by uuid null, + completed_by uuid null, + list_id uuid not null, + constraint todos_pkey primary key (id), + constraint todos_created_by_fkey foreign key (created_by) references auth.users (id) on delete set null, + constraint todos_completed_by_fkey foreign key (completed_by) references auth.users (id) on delete set null, + constraint todos_list_id_fkey foreign key (list_id) references lists (id) on delete cascade + ) tablespace pg_default; + +-- Create publication for powersync + +create publication powersync for table public.lists, public.todos; \ No newline at end of file diff --git a/supabase-example/supabase/signing_key.json b/supabase-example/supabase/signing_key.json index 2716035..a3d4e77 100644 --- a/supabase-example/supabase/signing_key.json +++ b/supabase-example/supabase/signing_key.json @@ -1,7 +1,7 @@ [ { "kty": "EC", - "kid": "cc7a4842-b156-46b8-9071-f6736301dcef", + "kid": "43fc0f70-864d-4fbe-b2fc-17dd74dcccca", "use": "sig", "key_ops": [ "sign", @@ -9,9 +9,9 @@ ], "alg": "ES256", "ext": true, - "d": "OmeO8UD_5zrRA5JDepyfBvJXfiV44ULjNVF63E_Q-go", + "d": "VnIeTdtp9XIIxIqPUCSRZyttoe2eIGRotuCRmZ8Rb5Y", "crv": "P-256", - "x": "VP2ldQdk5z68M1tBLLpO89Pzt-BGH_WQzTehtOet3NQ", - "y": "iAt8PkPd147TA7cPERaU3Crj0L2CvBMCSOfync4TqdM" + "x": "9z11FYpuqvctsjzYeeCDWpx-yrZr6Y-wsKwkLcyJr5c", + "y": "uBacpf30SJEA2QezJyJyZDqvpxMr0i_Z_PY9jjXKnXc" } ] From 324a74ab2e3897c63796735362dbb3dfd5846292 Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Wed, 20 May 2026 15:42:16 +0200 Subject: [PATCH 3/4] Supabase/PG JWT plan. --- rls-plan.md | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 rls-plan.md diff --git a/rls-plan.md b/rls-plan.md new file mode 100644 index 0000000..b1b947e --- /dev/null +++ b/rls-plan.md @@ -0,0 +1,216 @@ +# Row-Level Security across both write-API demos + +## Problem + +Both PoCs in this repo follow the same shape: a client posts a CRUD transaction to a write endpoint, the endpoint calls into a shared-style Postgres persister, and the persister opens a `pg` pool connection and runs `INSERT` / `UPDATE` / `DELETE` statements inside a single transaction. + +That pool connects as a privileged Postgres user (`postgres` in both setups). Postgres RLS does not apply to superusers or table owners, so every write today bypasses RLS regardless of what policies are on the tables. The write path therefore implicitly trusts whatever the client sends — including row-ownership columns like `lists.owner_id`. For a stack pitched at Supabase users (who expect RLS to be the source of truth for write authorization), this is the wrong default. + +We want the persister to apply the same RLS rules Postgres would apply to a direct client connection: the request must run as an unprivileged role, with the invoking user's JWT claims visible to policies via `request.jwt.claims`. The auth identity already exists in both demos — what is missing is the plumbing that carries it from the HTTP layer into each Postgres transaction. + +Two secondary constraints shape the design: + +1. **Keep the persister implementations symmetric.** The standalone backend and the Supabase edge function each have their own copy of `postgres-persistance.ts`; they should stay close to identical so the shared logic does not fork. +2. **Don't make RLS mandatory.** The PG persister must remain usable without RLS — both as an explicit service-role / background-job path, and because the other persisters in the backend (`mongo`, `mysql`, `mssql`) have no RLS concept and need to keep working under the same `Persister` interface. + +## Mechanism + +Postgres only enforces RLS when the current role isn't a superuser or table owner. The standard Supabase pattern is to keep the pool connected as `postgres` but, inside each request transaction, drop to `authenticated` with `SET LOCAL ROLE` and stash the JWT payload in a transaction-local GUC so `auth.uid()` / `auth.jwt()` can read it. + +When an auth context is supplied, each `updateBatch(...)` transaction grows three statements at the top: + +```sql +BEGIN; +SET LOCAL ROLE authenticated; +SELECT set_config('request.jwt.claims', $1, true); -- $1 = JSON-encoded JWT payload +-- existing INSERT / UPDATE / DELETE statements unchanged +COMMIT; +``` + +Both `SET LOCAL` and `set_config(..., true)` are transaction-scoped, so this works under the Supabase transaction pooler (Supavisor port 6543) as well as a direct connection. No session-level state is required. + +When `updateBatch` is called *without* an auth context, those two statements are simply skipped — the transaction runs exactly as it does today, as `postgres`, with RLS bypassed. + +## Optionality and the other persisters + +`AuthContext` is an optional second parameter on `Persister.updateBatch`. Concretely: + +- **PG persister with `auth`:** RLS-enforcing path. `SET LOCAL ROLE` + `set_config` are emitted; policies run. +- **PG persister without `auth`:** same as today. No role switch, no claims GUC, RLS bypassed. Useful for service-role / migration / background-job callers, and for any deployment that hasn't enabled RLS on its tables. +- **Mongo / MySQL / MSSQL persisters:** they implement the same `Persister` interface and accept the optional second arg, but ignore it. RLS is a Postgres concept; there's no equivalent to translate to. + +In practice this means the only callers that need to thread an `AuthContext` are the two HTTP entrypoints (`backend/src/api/data.ts` and `supabase/functions/data/index.ts`). Everything else — the persister factory map, the non-PG persisters, scripts that call the persister directly — keeps working with no changes. + +## End-to-end per demo + +### Demo 1 (`backend/`, standalone Node) + +- Frontend (`DemoConnector` / `OpenAPITransport`) must send the JWT issued by `/api/auth/token` as `Authorization: Bearer …` on every `POST /api/data`. It already fetches that token for PowerSync; the same token is reused. +- Express handler (`src/api/data.ts`) verifies the JWT against the local JWKS (the keys already loaded in `src/api/auth.ts`), decodes the payload, and calls `updateBatch(crud, { claims, role: 'authenticated' })`. +- If the request arrives without an `Authorization` header (e.g. during local debugging), the handler can choose to either reject or fall through to `updateBatch(crud)` — that decision is per-route policy, not a persister concern. +- Postgres (`init-scripts/setup.sql`) gets the bits Supabase ships with for free: an `authenticated` role, an `auth` schema with `auth.uid()`, table grants, RLS enabled, and policies. Identical policy shape to the Supabase demo so the two stay symmetric. + +### Demo 2 (`supabase-example/`, Supabase Edge Function) + +- Frontend (`SupabaseConnector.uploadData`) already calls `this.client.functions.invoke('data', { body })`. `supabase-js` attaches the session access token automatically — no client change. +- Edge function (`supabase/functions/data/index.ts`) reads `Authorization` from the incoming request. The Supabase platform has already verified the JWT (`verify_jwt = true` is the default in `config.toml`), so for the PoC we just base64-decode the payload and pass it through to the persister. +- A new migration enables RLS on `lists` and `todos` and adds policies. `authenticated`, `auth.uid()`, and `auth.jwt()` are already provided by Supabase, so no helper definitions are needed. + +## Persister changes (shared shape) + +Both `backend/src/persistance/postgres/postgres-persistance.ts` and `supabase-example/supabase/functions/data/persistance/postgres-persistance.ts` change identically. + +`types.ts` in each repo gains: + +```ts +export interface AuthContext { + /** Decoded JWT payload — written to request.jwt.claims for the duration of the tx. */ + claims: Record; + /** Postgres role to SET LOCAL to. Defaults to 'authenticated'. */ + role?: string; +} + +export interface Persister { + updateBatch(batch: CrudEntry[], auth?: AuthContext): Promise; +} +``` + +Inside `createPostgresPersister`, after `BEGIN` and before the CRUD loop: + +```ts +if (auth) { + await client.query(`SET LOCAL ROLE ${escapeIdentifier(auth.role ?? 'authenticated')}`); + await client.query(`SELECT set_config('request.jwt.claims', $1, true)`, [ + JSON.stringify(auth.claims), + ]); +} +``` + +PUT / PATCH / DELETE blocks and error mapping are unchanged. The only remaining diff between the two persister files is the existing `Pool` construction (URL parsing vs. connection string + `max: 1`), which stays as-is. + +The role name is wrapped in `escapeIdentifier` and must come from server config — never from request input. + +In `backend/src/persistance/persister-factories.ts` and the other persister files, the signature widens to accept `auth?: AuthContext`. The non-PG implementations simply don't reference it. + +## SQL deltas + +### `backend/init-scripts/setup.sql` — additions + +```sql +do $$ +begin + if not exists (select 1 from pg_roles where rolname = 'authenticated') then + create role authenticated nologin; + end if; +end$$; + +create schema if not exists auth; +create or replace function auth.uid() returns text +language sql stable as $$ + select nullif(current_setting('request.jwt.claims', true), '')::json->>'sub' +$$; + +grant usage on schema public to authenticated; +grant select, insert, update, delete on public.lists, public.todos to authenticated; + +alter table public.lists enable row level security; +alter table public.todos enable row level security; + +create policy lists_owner on public.lists + for all to authenticated + using (owner_id::text = auth.uid()) + with check (owner_id::text = auth.uid()); + +create policy todos_via_list on public.todos + for all to authenticated + using (exists ( + select 1 from public.lists l where l.id = todos.list_id and l.owner_id::text = auth.uid() + )) + with check (exists ( + select 1 from public.lists l where l.id = todos.list_id and l.owner_id::text = auth.uid() + )); +``` + +The cast to `text` keeps the helper signature simple (no JSON-to-uuid coercion). Switch to `returns uuid` and drop the casts if preferred — pick one and apply consistently. + +### `supabase-example/supabase/migrations/_enable_rls.sql` — new file + +```sql +alter table public.lists enable row level security; +alter table public.todos enable row level security; + +create policy lists_owner on public.lists + for all to authenticated + using (owner_id = auth.uid()) + with check (owner_id = auth.uid()); + +create policy todos_via_list on public.todos + for all to authenticated + using (exists ( + select 1 from public.lists l where l.id = todos.list_id and l.owner_id = auth.uid() + )) + with check (exists ( + select 1 from public.lists l where l.id = todos.list_id and l.owner_id = auth.uid() + )); +``` + +`owner_id` is already `uuid` here and Supabase's `auth.uid()` returns `uuid`, so no casts needed. + +## Concrete file changes + +### Shared (applied independently in each repo) + +- `types.ts` in each repo: add `AuthContext`, widen `Persister.updateBatch` signature. +- `postgres-persistance.ts` in each repo: conditionally emit `SET LOCAL ROLE` + `set_config('request.jwt.claims', …)` right after `BEGIN`. +- Backend only — `src/persistance/{mongo,mysql,mssql}/*-persistance.ts`: widen the signature to accept (and ignore) the optional `auth` arg so they continue to satisfy the `Persister` interface. + +### Demo 1 — `backend/` + +- `src/api/auth.ts`: export a `verifyJwt(token)` helper that returns the decoded payload, using the existing JWKS keys. +- `src/middleware/`: new `auth.ts` middleware that reads `Authorization: Bearer …`, calls `verifyJwt`, and attaches `req.auth = { claims }`. Mount before `/api/data`. +- `src/api/data.ts`: pass `req.auth` into `updateBatch(req.body.crud, req.auth)`. +- `frontend/src/library/powersync/DemoConnector.ts` + `OpenAPITransport.ts`: cache the token fetched in `fetchCredentials` and send it as `Authorization: Bearer …` on `/api/data` calls. +- `init-scripts/setup.sql`: the additions above. + +### Demo 2 — `supabase-example/` + +- `supabase/functions/data/index.ts`: read `Authorization` header, base64-decode the JWT payload, pass `{ claims, role: 'authenticated' }` into `updateBatch`. No re-verification needed in the PoC — the platform already verified. +- `supabase/migrations/_enable_rls.sql`: the migration above. +- `supabase-example/frontend/`: no changes — `supabase-js` already attaches the access token to `functions.invoke`. + +## Critical files + +- `backend/src/persistance/postgres/postgres-persistance.ts` +- `backend/src/api/data.ts` +- `backend/init-scripts/setup.sql` +- `backend/src/api/auth.ts` +- `supabase-example/supabase/functions/data/persistance/postgres-persistance.ts` +- `supabase-example/supabase/functions/data/index.ts` +- `supabase-example/supabase/migrations/.sql` + +## Gotchas + +- **`SET LOCAL ROLE` requires membership.** In both demos the pool connects as `postgres` (superuser), which can switch to any role — fine for PoC. If the app role ever stops being a superuser, it must be `GRANT`ed `authenticated` first. +- **RLS now enforces `owner_id`.** Today the client picks its own `owner_id`. Once `WITH CHECK (owner_id = auth.uid())` is in place, any forged owner is blocked. Confirm the create-list path uses the locally signed-in user id. +- **PowerSync JWT claim names.** Both demos put the user id in `sub`. As long as the persister always reads `sub`, policies are identical between repos (modulo the `uuid` vs `text` choice in `auth.uid()`). +- **Transaction pooler.** All state — role and `request.jwt.claims` — is set with `LOCAL` / `is_local = true`, so the pattern is safe on the Supabase Transaction Pooler. Resist moving any of it to session-level configuration. +- **Sync rules are separate.** RLS only governs the write path. Down-sync filtering is controlled by `sync_rules.yaml` (the Supabase demo already filters via `auth.user_id()`; the standalone demo's `SELECT * FROM lists` does not). Out of scope here, but worth filing as a follow-up so the two paths don't drift. +- **RLS-on tables vs. no-auth callers.** If RLS is enabled on a table and a caller invokes `updateBatch` without an `AuthContext`, the call still runs as the superuser pool user and therefore still bypasses RLS. That is the intended escape hatch, but it means "table has RLS" alone is not a safety net — the entrypoint has to decide whether to pass auth. Document this on the persister. + +## Verification + +1. Apply DB changes: + - Backend demo: `docker-compose down -v && docker-compose up` to re-run `setup.sql`. + - Supabase demo: `supabase db reset` to apply the new migration. +2. Sign in (or generate a token via `/api/auth/token?user_id=…`). Confirm the network request to the write endpoint carries `Authorization: Bearer …`. +3. Happy path: create a list, add a todo, toggle, delete — all succeed; rows land in Postgres. +4. RLS guard rail: use a second user (or hand-craft a JWT with a different `sub`) and attempt to insert a list with `owner_id` set to user A's id while authenticated as user B. Expect the insert to be rejected by the `WITH CHECK` clause. Same exercise for `todos` via a list owned by another user. +5. Service-role / no-auth path: call the persister directly from a script without an `AuthContext` and confirm it still writes successfully — confirms the optional path hasn't regressed. +6. Non-PG persisters: smoke-test mongo / mysql / mssql via `DATABASE_TYPE` swaps to confirm the signature widening hasn't broken them. + +## Future work (not in this PR) + +- Verify the Supabase JWT inside the edge function against `SUPABASE_JWT_SECRET` rather than trusting the platform's pre-validation. Belt and braces; useful if `verify_jwt = false` is ever set. +- Switch the standalone backend's app role away from `postgres` to a least-privileged role granted membership in `authenticated`, so a missing `SET LOCAL ROLE` would still fail safe. +- Bring sync-rule filtering on the standalone demo to parity with the Supabase one so down-sync is also user-scoped. +- Optional `requireAuth: true` flag on the PG persister factory that turns a missing `AuthContext` into a hard error, for deployments that want to disallow the service-role fallthrough. From 46a1cdcdcd87c412273c123e2d5d7c73e155ca2a Mon Sep 17 00:00:00 2001 From: Christiaan Landman Date: Thu, 21 May 2026 09:59:08 +0200 Subject: [PATCH 4/4] Added mapper plan. --- mapper-plan.md | 219 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 mapper-plan.md diff --git a/mapper-plan.md b/mapper-plan.md new file mode 100644 index 0000000..e74fdd8 --- /dev/null +++ b/mapper-plan.md @@ -0,0 +1,219 @@ +# Handling JSON / arrays / bytea / custom Postgres types in the write path + +## Context + +PowerSync stores complex Postgres types as plain `text` columns on the client +(https://docs.powersync.com/client-sdks/advanced/custom-types-arrays-and-json): + +- JSON / JSONB columns sync as JSON-encoded strings. +- Arrays (`text[]`, `uuid[]`, …) sync as the string form of a JSON array. +- Composite / custom types serialise as JSON object strings. +- Bytea is undocumented; the conventional approach is base64-as-text. + +When the dev mutates such a column locally and PowerSync flushes the CRUD +queue, the values arrive in `op_data` on the server as **strings**, not as +JSON objects/arrays/buffers. The current write-api persister can't tell them +apart from regular text values, so they either fail or get silently +corrupted. + +## What works today (for free) + +Both the backend (`backend/src/persistance/postgres/postgres-persistance.ts:60-66`) +and the supabase-example Edge Function +(`supabase-example/supabase/functions/data/persistance/postgres-persistance.ts:56-62`) +build their INSERT/UPDATE/DELETE statements around: + +```sql +WITH data_row AS ( + SELECT (json_populate_record(null::TABLE, $1::json)).* +) +INSERT INTO TABLE (...) SELECT ... FROM data_row +ON CONFLICT (id) DO UPDATE SET ... +``` + +`json_populate_record(null::TABLE, $1::json)` asks Postgres to materialise a +row of the target table from a JSON payload, using its own per-column input +parsers. This is the key reason the persister is schema-agnostic — it never +has to know what types the columns are. + +The types that *already* round-trip correctly through this: + +| PG column type | JSON value PG expects | Status | +|------------------------------------|----------------------------------------|--------| +| `text`, `varchar`, `uuid` | string | ✅ | +| `int*`, `numeric`, `float*` | number | ✅ | +| `bool` | boolean (also "true"/"false") | ✅ | +| `date`, `timestamp[tz]` | ISO string | ✅ | +| `json`, `jsonb` | a JSON object/array literal | ✅ if the value is a real JSON object — ❌ if it's a stringified one | +| Postgres arrays (`text[]`, …) | a JSON array | ✅ if real array — ❌ if stringified | +| enum | string | ✅ | +| composite types | nested JSON object | ✅ if real object — ❌ if stringified | +| domains | underlying type | ✅ | +| `bytea` | hex-escape string (`\xDEADBEEF`) | ⚠️ only that exact text format | + +## The actual breakage + +Because PowerSync hands us strings, the persister sees: + +```json +{ + "tags": "[\"a\",\"b\"]", + "metadata": "{\"foo\":1}", + "blob": "SGVsbG8=" +} +``` + +- `tags TEXT[]`: PG tries to parse `[\"a\",\"b\"]` as a PG array literal + (which wants `{a,b}`) → **fails**. +- `metadata JSONB`: PG stores it as a JSON **string scalar** `"{\"foo\":1}"` + rather than as an object → **silent corruption**. +- `blob BYTEA`: base64 isn't `\x…` format → **fails**. + +The current doc-recommended workaround is `jsonDecode` in `uploadData` per +column. That works but pushes schema knowledge into every app's connector, +and offers nothing for bytea. + +## Existing extension surface + +`createPostgresPersister` already accepts an `EntryMapper` +(`backend/src/mapping/types.ts:14`). The Mongo side uses this exact hook to +do type coercion: `mongoMapper` +(`backend/src/mapping/mongo.ts`) walks `op_data` through a declarative +per-table schema (`backend/src/persistance/mongo/mongo-schema.ts`) and +converts `string → Date`, `string → boolean`, etc. The shape is already in +place — the PG path just doesn't use it (it falls back to `defaultMapper`). + +The supabase-example connector +(`supabase-example/frontend/src/library/powersync/SupabaseConnector.ts:103-114`) +spreads `op.opData` straight into the body with no coercion at all. The +demo doesn't expose the problem only because its schema is entirely +`text/uuid/timestamptz/bool` columns. + +## Strategies + +Three places to intervene, ordered client → DB: + +### 1. Client `uploadData` (status quo) + +Dev calls `JSON.parse` for known JSON / array columns inside `uploadData`, +and base64-decodes bytea by hand. + +- **Pros:** simple, works today, no server change. +- **Cons:** schema knowledge duplicated in every app; nothing automatic; + bytea convention has to be invented per app. + +Keep this on the table as the no-server-change fallback, but it's not where +we want the default to live. + +### 2. Server-side mapper (recommended default) + +Both flavours fit the existing `EntryMapper` extension point. + +**2a. PG-introspection mapper.** At startup (or with a TTL cache), query +`information_schema.columns` for the tables being written. Cache +`{table → {column → {data_type, udt_name}}}`. In the mapper, before handing +the payload to `json_populate_record`: + +- if column is `ARRAY`, `json`, `jsonb`, or `USER-DEFINED` + (composite / enum / domain) AND value is a string → `JSON.parse(value)`; +- if column is `bytea` AND value is a string → assume base64 and rewrite to + `'\\x' + Buffer.from(v, 'base64').toString('hex')`; +- everything else: pass through untouched — `json_populate_record` already + handles it. + +The SQL doesn't change. The mapper only normalises the shape so PG's own +parsers can do the rest. + +- **Pros:** zero per-table dev work; generic across any PG schema; consistent + with how the Mongo path works. +- **Cons:** schema cache invalidation on DDL. For demos / dev: introspect + once at startup. For production: TTL or LISTEN/NOTIFY on schema events. + +**2b. Declarative per-table type map.** Mirror `mongoMapper`: the dev +declares which columns are JSON / array / bytea / composite, and the mapper +applies the same conversions. No DB roundtrip. + +- **Pros:** explicit; no DDL race; can be code-generated from migrations or + from the PowerSync schema. +- **Cons:** dev keeps a schema-in-app; another thing that can drift. + +### 3. DB-side mapping (escape hatch) + +For genuinely custom encodings — encrypted blobs, polymorphic columns, +domain-specific text-array conventions — push the transformation into +Postgres: + +- **Writable view + `INSTEAD OF` triggers.** Dev creates e.g. + `lists_writable` exposing the column in the text shape PowerSync produces; + the trigger casts to the real types on insert/update. The client (or a + server-side rewrite) targets the view rather than the base table. Then + `json_populate_record(null::lists_writable, …)` Just Works because the + view's column types match the wire shape. +- **`INSTEAD OF` triggers on the base table.** Possible but invasive — the + trigger has to handle every column unconditionally. +- **RPC / mutators.** Per `mutators-plan.md`: dev writes the SQL, including + casts, by hand. No generic coercion needed because the mutator body sees + raw args. This is the right tool when the operation isn't a plain table + write anyway. + +## Recommendation + +Treat **2a** as the default and **3** as the escape hatch. + +- Add a thin PG-introspection coercer in front of `json_populate_record` + inside `createPostgresPersister` (or as a `postgresMapper` factory), + covering JSON / JSONB / arrays / composites / bytea. This is the highest- + leverage change — it makes the 80% case "just work" and removes the most + common foot-gun. +- For `bytea`, declare and document the convention ("strings are base64"). + Devs who need a different encoding override per-table. +- For genuinely custom types, point devs at **writable views + + `INSTEAD OF` triggers** as the documented pattern. This keeps the + transformation next to the schema and lets the generic write path stay + generic. +- Mutators remain the answer when CRUD isn't the right abstraction. + +## Open implementation questions + +- **Wiring.** Should this be a postgres-specific wrapper around + `defaultMapper` (composed at factory time), or a new + `postgresMapper(uri)` factory that bundles introspection? Probably the + latter, to make it explicit at `createPostgresPersister` callsites which + policy is active. +- **Introspection lifecycle.** Startup-only is fine for the local + Edge-Function dev loop (`supabase functions serve` restarts on file + change). A deployed write-api probably wants either a TTL cache or + `LISTEN ddl_command_end` to catch online schema changes. +- **Bytea convention.** Standardise on base64? Or offer both base64 and hex + with a per-column hint? Default to base64 (interoperable with JS + `atob`/`Buffer`). +- **Composite types.** `json_populate_record` recurses into composites + automatically, but only if the nested value is a JSON object. The + coercer therefore needs to `JSON.parse` the string and pass an object; + it does not need to walk into the composite itself. + +## Verification + +1. Add an integration table to the dev DB with columns covering each case: + `tags text[]`, `metadata jsonb`, `props json`, `flags my_enum`, + `point (float8, float8)` composite, `blob bytea`. +2. On the client, expose each as a `text` column per the PowerSync docs; + mutate locally and confirm `uploadData` ships stringified payloads. +3. Without the coercer, observe the failure modes documented above. +4. With the coercer enabled, confirm: + - `text[]` round-trips as a real PG array (`SELECT array_length`). + - `jsonb` stores as an object, not a JSON scalar string + (`jsonb_typeof` = `'object'`). + - Custom composite materialises with non-null subfields. + - Bytea stores the decoded bytes (`octet_length` matches the pre-encode + length). +5. Re-run the supabase-example demo to confirm the existing scalar-only + schema is unaffected. + +## Out of scope for this plan + +- Mutator dispatch / `mutator_calls` table (see `mutators-plan.md`). +- Read-path / sync-down concerns — the PowerSync sync rules already + control how complex types arrive on the client. +- Non-Postgres persisters (Mongo already has its own coercer; MySQL/MSSQL + TBD).

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 p=RP7R+o276y=7e#g0~ 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/supabase-example/frontend/public/icons/icon.png b/supabase-example/frontend/public/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c254b17c691c79f0515dad398a83b1944e8d6ff1 GIT binary patch literal 76918 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 literal 0 HcmV?d00001 diff --git a/supabase-example/frontend/public/powersync-logo.svg b/supabase-example/frontend/public/powersync-logo.svg new file mode 100644 index 0000000..05e31b6 --- /dev/null +++ b/supabase-example/frontend/public/powersync-logo.svg @@ -0,0 +1 @@ + diff --git a/supabase-example/frontend/public/supabase-logo.png b/supabase-example/frontend/public/supabase-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8c18e18f13fc62e2dab81ef4f4a0dcb6394600 GIT binary patch literal 46427 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 literal 0 HcmV?d00001 diff --git a/supabase-example/frontend/src/app/auth/login/page.tsx b/supabase-example/frontend/src/app/auth/login/page.tsx new file mode 100644 index 0000000..2ed0b1c --- /dev/null +++ b/supabase-example/frontend/src/app/auth/login/page.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { LoginDetailsWidget } from '@/components/widgets/LoginDetailsWidget'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import { DEFAULT_ENTRY_ROUTE } from '@/app/router'; + +export default function LoginPage() { + const supabase = useSupabase(); + const navigate = useNavigate(); + + return ( + { + if (!supabase) { + throw new Error('Supabase has not been initialized yet'); + } + await supabase.login(values.email, values.password); + navigate(DEFAULT_ENTRY_ROUTE); + }} + secondaryActions={[ + { + title: 'Register', + onClick: () => { + navigate('/auth/register'); + } + } + ]} + /> + ); +} diff --git a/supabase-example/frontend/src/app/auth/register/page.tsx b/supabase-example/frontend/src/app/auth/register/page.tsx new file mode 100644 index 0000000..4f2010e --- /dev/null +++ b/supabase-example/frontend/src/app/auth/register/page.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import { LoginDetailsWidget } from '@/components/widgets/LoginDetailsWidget'; +import { DEFAULT_ENTRY_ROUTE, LOGIN_ROUTE } from '@/app/router'; + +export default function RegisterPage() { + const supabase = useSupabase(); + const navigate = useNavigate(); + + return ( + { + if (!supabase) { + throw new Error('Supabase has not been initialized yet'); + } + const { + data: { session }, + error + } = await supabase.client.auth.signUp({ email, password }); + if (error) { + throw new Error(error.message); + } + + if (session) { + supabase.updateSession(session); + navigate(DEFAULT_ENTRY_ROUTE); + return; + } + + // TODO better dialog + alert('Registration successful, please login'); + navigate(LOGIN_ROUTE); + }} + secondaryActions={[{ title: 'Back', onClick: () => navigate(LOGIN_ROUTE) }]} + /> + ); +} diff --git a/supabase-example/frontend/src/app/globals.css b/supabase-example/frontend/src/app/globals.css new file mode 100644 index 0000000..5ceb260 --- /dev/null +++ b/supabase-example/frontend/src/app/globals.css @@ -0,0 +1,12 @@ +:root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; +} + +body { + color: rgb(var(--foreground-rgb)); + min-height: 100vh; + margin: 0; + background: linear-gradient(to bottom, transparent, rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb)); +} diff --git a/supabase-example/frontend/src/app/index.tsx b/supabase-example/frontend/src/app/index.tsx new file mode 100644 index 0000000..e6aa8fa --- /dev/null +++ b/supabase-example/frontend/src/app/index.tsx @@ -0,0 +1,18 @@ +import { createRoot } from 'react-dom/client'; +import { RouterProvider } from 'react-router-dom'; +import { SystemProvider } from '@/components/providers/SystemProvider'; +import { ThemeProviderContainer } from '@/components/providers/ThemeProviderContainer'; +import { router } from '@/app/router'; + +const root = createRoot(document.getElementById('app')!); +root.render(); + +export function App() { + return ( + + + + + + ); +} diff --git a/supabase-example/frontend/src/app/page.tsx b/supabase-example/frontend/src/app/page.tsx new file mode 100644 index 0000000..f17886a --- /dev/null +++ b/supabase-example/frontend/src/app/page.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import { CircularProgress, Grid, styled } from '@mui/material'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import { useNavigate } from 'react-router-dom'; +import { DEFAULT_ENTRY_ROUTE, LOGIN_ROUTE } from '@/app/router'; + +export type LoginFormParams = { + email: string; + password: string; +}; + +/** + * This page shows a loading spinner we detect a session + * and redirect either to the app or auth flow. + */ +export default function EntryPage() { + const connector = useSupabase(); + const navigate = useNavigate(); + + const navigateToMainView = () => { + if (connector?.currentSession) { + navigate(DEFAULT_ENTRY_ROUTE); + } + }; + + React.useEffect(() => { + if (!connector) { + console.error(`No Supabase connector has been created yet.`); + return; + } + + if (!connector.ready) { + const l = connector.registerListener({ + initialized: () => { + /** + * Redirect if on the entry view + */ + if (connector.currentSession) { + navigate(DEFAULT_ENTRY_ROUTE); + } else { + navigate(LOGIN_ROUTE); + } + } + }); + return () => l?.(); + } + + // There should be a session at this point. The auth guard will navigate to the login if not + navigateToMainView(); + }, []); + + return ( + + + + + + ); +} + +namespace S { + export const CenteredGrid = styled(Grid)` + display: flex; + justify-content: center; + align-items: center; + `; + + export const MainGrid = styled(CenteredGrid)` + min-height: 100vh; + `; +} diff --git a/supabase-example/frontend/src/app/router.tsx b/supabase-example/frontend/src/app/router.tsx new file mode 100644 index 0000000..93647f6 --- /dev/null +++ b/supabase-example/frontend/src/app/router.tsx @@ -0,0 +1,99 @@ +import { Outlet, createBrowserRouter, useNavigate } from 'react-router-dom'; +import LoginPage from '@/app/auth/login/page'; +import RegisterPage from '@/app/auth/register/page'; +import EntryPage from '@/app/page'; +import TodoEditPage from '@/app/views/todo-lists/edit/page'; +import TodoListsPage from '@/app/views/todo-lists/page'; +import ViewsLayout from '@/app/views/layout'; +import SQLConsolePage from '@/app/views/sql-console/page'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import React from 'react'; + +export const TODO_LISTS_ROUTE = '/views/todo-lists'; +export const TODO_EDIT_ROUTE = '/views/todo-lists/:id'; +export const LOGIN_ROUTE = '/auth/login'; +export const REGISTER_ROUTE = '/auth/register'; +export const SQL_CONSOLE_ROUTE = '/sql-console'; + +interface AuthGuardProps { + children: JSX.Element; +} + +const AuthGuard = ({ children }: AuthGuardProps) => { + const connector = useSupabase() + + const navigate = useNavigate(); + React.useEffect(() => { + if (!connector) { + console.error(`No Supabase connector has been created yet.`); + return; + } + + connector.client.auth.onAuthStateChange(async (event, _session) => { + if (event === 'SIGNED_OUT') { + navigate(LOGIN_ROUTE); + } + }); + + const loginGuard = () => { + if (!connector.currentSession) { + navigate(LOGIN_ROUTE); + } + } + if (connector.ready) { + loginGuard(); + } else { + const l = connector.registerListener({ + initialized: () => { + loginGuard(); + } + }); + return () => l?.(); + } + + }, []); + return children; +}; + +/** + * Navigate to this route after authentication + */ +export const DEFAULT_ENTRY_ROUTE = '/views/todo-lists'; + +export const router = createBrowserRouter([ + { + path: '/', + element: + }, + { + path: LOGIN_ROUTE, + element: + }, + { + path: REGISTER_ROUTE, + element: + }, + { + element: ( + + + + + + ), + children: [ + { + path: TODO_LISTS_ROUTE, + element: + }, + { + path: TODO_EDIT_ROUTE, + element: + }, + { + path: SQL_CONSOLE_ROUTE, + element: + } + ] + } +]); \ No newline at end of file diff --git a/supabase-example/frontend/src/app/utils/fts_helpers.ts b/supabase-example/frontend/src/app/utils/fts_helpers.ts new file mode 100644 index 0000000..f2b4a68 --- /dev/null +++ b/supabase-example/frontend/src/app/utils/fts_helpers.ts @@ -0,0 +1,39 @@ +import { db } from '@/components/providers/SystemProvider'; + +/** + * adding * to the end of the search term will match any word that starts with the search term + * e.g. searching bl will match blue, black, etc. + * consult FTS5 Full-text Query Syntax documentation for more options + * @param searchTerm + * @returns a modified search term with options. + */ +function createSearchTermWithOptions(searchTerm: string): string { + const searchTermWithOptions: string = `${searchTerm}*`; + return searchTermWithOptions; +} + +/** + * Search the FTS table for the given searchTerm + * @param searchTerm + * @param tableName + * @returns results from the FTS table + */ +export async function searchTable(searchTerm: string, tableName: string): Promise { + const searchTermWithOptions = createSearchTermWithOptions(searchTerm); + return await db.getAll(`SELECT * FROM fts_${tableName} WHERE fts_${tableName} MATCH ? ORDER BY rank`, [ + searchTermWithOptions + ]); +} + +//Used to display the search results in the autocomplete text field +export class SearchResult { + id: string; + todoName: string | null; + listName: string; + + constructor(id: string, listName: string, todoName: string | null = null) { + this.id = id; + this.listName = listName; + this.todoName = todoName; + } +} diff --git a/supabase-example/frontend/src/app/utils/fts_setup.ts b/supabase-example/frontend/src/app/utils/fts_setup.ts new file mode 100644 index 0000000..ddf99c1 --- /dev/null +++ b/supabase-example/frontend/src/app/utils/fts_setup.ts @@ -0,0 +1,65 @@ +import { AppSchema } from '@/library/powersync/AppSchema'; +import { Table } from '@powersync/web'; +import { ExtractType, generateJsonExtracts } from './helpers'; +import { db } from '@/components/providers/SystemProvider'; + +/** + * Create a Full Text Search table for the given table and columns + * with an option to use a different tokenizer otherwise it defaults + * to unicode61. It also creates the triggers that keep the FTS table + * and the PowerSync table in sync. + * @param tableName + * @param columns + * @param tokenizationMethod + */ +async function createFtsTable(tableName: string, columns: string[], tokenizationMethod = 'unicode61'): Promise { + const internalName = (AppSchema.tables as Table[]).find((table) => table.name === tableName)?.internalName; + const stringColumns = columns.join(', '); + + return await db.writeTransaction(async (tx) => { + // Add FTS table + await tx.execute(` + CREATE VIRTUAL TABLE IF NOT EXISTS fts_${tableName} + USING fts5(id UNINDEXED, ${stringColumns}, tokenize='${tokenizationMethod}'); + `); + // Copy over records already in table + await tx.execute(` + INSERT OR REPLACE INTO fts_${tableName}(rowid, id, ${stringColumns}) + SELECT rowid, id, ${generateJsonExtracts(ExtractType.columnOnly, 'data', columns)} FROM ${internalName}; + `); + // Add INSERT, UPDATE and DELETE and triggers to keep fts table in sync with table + await tx.execute(` + CREATE TRIGGER IF NOT EXISTS fts_insert_trigger_${tableName} AFTER INSERT ON ${internalName} + BEGIN + INSERT INTO fts_${tableName}(rowid, id, ${stringColumns}) + VALUES ( + NEW.rowid, + NEW.id, + ${generateJsonExtracts(ExtractType.columnOnly, 'NEW.data', columns)} + ); + END; + `); + await tx.execute(` + CREATE TRIGGER IF NOT EXISTS fts_update_trigger_${tableName} AFTER UPDATE ON ${internalName} BEGIN + UPDATE fts_${tableName} + SET ${generateJsonExtracts(ExtractType.columnInOperation, 'NEW.data', columns)} + WHERE rowid = NEW.rowid; + END; + `); + await tx.execute(` + CREATE TRIGGER IF NOT EXISTS fts_delete_trigger_${tableName} AFTER DELETE ON ${internalName} BEGIN + DELETE FROM fts_${tableName} WHERE rowid = OLD.rowid; + END; + `); + }); +} + +/** + * This is where you can add more methods to generate FTS tables in this demo + * that correspond to the tables in your schema and populate them + * with the data you would like to search on + */ +export async function configureFts(): Promise { + await createFtsTable('lists', ['name'], 'porter unicode61'); + await createFtsTable('todos', ['description', 'list_id']); +} diff --git a/supabase-example/frontend/src/app/utils/helpers.ts b/supabase-example/frontend/src/app/utils/helpers.ts new file mode 100644 index 0000000..5a9054b --- /dev/null +++ b/supabase-example/frontend/src/app/utils/helpers.ts @@ -0,0 +1,36 @@ +type ExtractGenerator = (jsonColumnName: string, columnName: string) => string; + +export enum ExtractType { + columnOnly, + columnInOperation +} + +type ExtractGeneratorMap = Map; + +function _createExtract(jsonColumnName: string, columnName: string): string { + return `json_extract(${jsonColumnName}, '$.${columnName}')`; +} + +const extractGeneratorsMap: ExtractGeneratorMap = new Map([ + [ExtractType.columnOnly, (jsonColumnName: string, columnName: string) => _createExtract(jsonColumnName, columnName)], + [ + ExtractType.columnInOperation, + (jsonColumnName: string, columnName: string) => { + const extract = _createExtract(jsonColumnName, columnName); + return `${columnName} = ${extract}`; + } + ] +]); + +export const generateJsonExtracts = (type: ExtractType, jsonColumnName: string, columns: string[]): string => { + const generator = extractGeneratorsMap.get(type); + if (generator == null) { + throw new Error('Unexpected null generator for key: $type'); + } + + if (columns.length == 1) { + return generator(jsonColumnName, columns[0]); + } + + return columns.map((column) => generator(jsonColumnName, column)).join(', '); +}; diff --git a/supabase-example/frontend/src/app/views/layout.tsx b/supabase-example/frontend/src/app/views/layout.tsx new file mode 100644 index 0000000..f3a0d94 --- /dev/null +++ b/supabase-example/frontend/src/app/views/layout.tsx @@ -0,0 +1,159 @@ +import { LOGIN_ROUTE, SQL_CONSOLE_ROUTE, TODO_LISTS_ROUTE } from '@/app/router'; +import { useNavigationPanel } from '@/components/navigation/NavigationPanelContext'; +import { useSupabase } from '@/components/providers/SystemProvider'; +import ChecklistRtlIcon from '@mui/icons-material/ChecklistRtl'; +import ExitToAppIcon from '@mui/icons-material/ExitToApp'; +import MenuIcon from '@mui/icons-material/Menu'; +import NorthIcon from '@mui/icons-material/North'; +import SignalWifiOffIcon from '@mui/icons-material/SignalWifiOff'; +import SouthIcon from '@mui/icons-material/South'; +import TerminalIcon from '@mui/icons-material/Terminal'; +import WifiIcon from '@mui/icons-material/Wifi'; +import { + AppBar, + Box, + Divider, + Drawer, + IconButton, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + Menu, + MenuItem, + Toolbar, + Typography, + styled +} from '@mui/material'; +import { usePowerSync, useStatus } from '@powersync/react'; +import React from 'react'; +import { useNavigate } from 'react-router-dom'; + +export default function ViewsLayout({ children }: { children: React.ReactNode }) { + const powerSync = usePowerSync(); + const status = useStatus(); + const supabase = useSupabase(); + const navigate = useNavigate(); + + const [openDrawer, setOpenDrawer] = React.useState(false); + const { title } = useNavigationPanel(); + + const [connectionAnchor, setConnectionAnchor] = React.useState(null); + + const NAVIGATION_ITEMS = React.useMemo( + () => [ + { + path: SQL_CONSOLE_ROUTE, + title: 'SQL Console', + icon: () => + }, + { + path: TODO_LISTS_ROUTE, + title: 'TODO Lists', + icon: () => + }, + { + path: LOGIN_ROUTE, + title: 'Sign Out', + beforeNavigate: async () => { + await powerSync.disconnectAndClear(); + await supabase?.client.auth.signOut(); + }, + icon: () => + } + ], + [powerSync, supabase] + ); + + return ( + + + + setOpenDrawer(!openDrawer)}> + + + + {title} + + + + { + setConnectionAnchor(event.currentTarget); + }}> + {status?.connected ? : } + + {/* Allows for manual connection and disconnect for testing purposes */} +