From 6874f93be3f230488b5aa6ecd704127eb981f3a2 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Wed, 17 Sep 2025 15:16:08 +0200 Subject: [PATCH 1/4] Add copy --- .../.env.local.template | 5 + .../.gitignore | 47 + .../CHANGELOG.md | 296 ++++ .../LICENSE | 121 ++ .../README.md | 76 + .../package.json | 42 + .../public/favicon.ico | Bin 0 -> 1576 bytes .../public/icons/icon-192x192.png | Bin 0 -> 27110 bytes .../public/icons/icon-256x256.png | Bin 0 -> 42070 bytes .../public/icons/icon-384x384.png | Bin 0 -> 74557 bytes .../public/icons/icon-512x512.png | Bin 0 -> 109318 bytes .../public/icons/icon.png | Bin 0 -> 76918 bytes .../public/powersync-logo.svg | 1 + .../public/supabase-logo.png | Bin 0 -> 46427 bytes .../src/app/auth/login/page.tsx | 32 + .../src/app/auth/register/page.tsx | 40 + .../src/app/globals.css | 12 + .../src/app/index.tsx | 18 + .../src/app/page.tsx | 71 + .../src/app/router.tsx | 99 ++ .../src/app/utils/fts_helpers.ts | 39 + .../src/app/utils/fts_setup.ts | 65 + .../src/app/utils/helpers.ts | 36 + .../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 | 97 ++ .../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 | 37 + .../src/index.html | 12 + .../src/library/powersync/AppSchema.ts | 35 + .../library/powersync/SupabaseConnector.ts | 170 ++ .../src/library/powersync/vite-env.d.ts | 11 + .../tsconfig.json | 26 + .../vite.config.mts | 74 + pnpm-lock.yaml | 1419 +++++++++++------ 44 files changed, 3463 insertions(+), 512 deletions(-) create mode 100644 demos/react-supabase-todolist-sync-streams/.env.local.template create mode 100644 demos/react-supabase-todolist-sync-streams/.gitignore create mode 100644 demos/react-supabase-todolist-sync-streams/CHANGELOG.md create mode 100644 demos/react-supabase-todolist-sync-streams/LICENSE create mode 100644 demos/react-supabase-todolist-sync-streams/README.md create mode 100644 demos/react-supabase-todolist-sync-streams/package.json create mode 100644 demos/react-supabase-todolist-sync-streams/public/favicon.ico create mode 100644 demos/react-supabase-todolist-sync-streams/public/icons/icon-192x192.png create mode 100644 demos/react-supabase-todolist-sync-streams/public/icons/icon-256x256.png create mode 100644 demos/react-supabase-todolist-sync-streams/public/icons/icon-384x384.png create mode 100644 demos/react-supabase-todolist-sync-streams/public/icons/icon-512x512.png create mode 100644 demos/react-supabase-todolist-sync-streams/public/icons/icon.png create mode 100644 demos/react-supabase-todolist-sync-streams/public/powersync-logo.svg create mode 100644 demos/react-supabase-todolist-sync-streams/public/supabase-logo.png create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/auth/login/page.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/auth/register/page.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/globals.css create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/index.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/page.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/router.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/utils/fts_helpers.ts create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/utils/fts_setup.ts create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/utils/helpers.ts create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/views/layout.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/page.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/navigation/NavigationPage.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/navigation/NavigationPanelContext.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/providers/SystemProvider.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/providers/ThemeProviderContainer.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/widgets/GuardBySync.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/widgets/ListItemWidget.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/widgets/LoginDetailsWidget.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/widgets/SearchBarWidget.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoItemWidget.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx create mode 100644 demos/react-supabase-todolist-sync-streams/src/index.html create mode 100644 demos/react-supabase-todolist-sync-streams/src/library/powersync/AppSchema.ts create mode 100644 demos/react-supabase-todolist-sync-streams/src/library/powersync/SupabaseConnector.ts create mode 100644 demos/react-supabase-todolist-sync-streams/src/library/powersync/vite-env.d.ts create mode 100644 demos/react-supabase-todolist-sync-streams/tsconfig.json create mode 100644 demos/react-supabase-todolist-sync-streams/vite.config.mts diff --git a/demos/react-supabase-todolist-sync-streams/.env.local.template b/demos/react-supabase-todolist-sync-streams/.env.local.template new file mode 100644 index 000000000..dc4088ca7 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/.env.local.template @@ -0,0 +1,5 @@ +# Copy this template: `cp .env.local.template .env.local` +# Edit .env.local and enter your Supabase and PowerSync project details. +VITE_SUPABASE_URL=https://foo.supabase.co +VITE_SUPABASE_ANON_KEY=foo +VITE_POWERSYNC_URL=https://foo.powersync.journeyapps.com diff --git a/demos/react-supabase-todolist-sync-streams/.gitignore b/demos/react-supabase-todolist-sync-streams/.gitignore new file mode 100644 index 000000000..0cc2f139c --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/.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/demos/react-supabase-todolist-sync-streams/CHANGELOG.md b/demos/react-supabase-todolist-sync-streams/CHANGELOG.md new file mode 100644 index 000000000..ff00bb8c0 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/LICENSE b/demos/react-supabase-todolist-sync-streams/LICENSE new file mode 100644 index 000000000..1625c1793 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/README.md b/demos/react-supabase-todolist-sync-streams/README.md new file mode 100644 index 000000000..197f73fcd --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/README.md @@ -0,0 +1,76 @@ +# Sync streams demo + +## Overview + +This app is a fork of our [React Supabase Todolist Demo](../react-supabase-todolist/) to add support for sync streams. + +Sync streams are not a stable PowerSync feature yet, and most users should probably use the stable demo instead. + +To use this demo, deploy the following sync streams: + +```yaml +streams: + lists: + query: SELECT * FROM lists WHERE owner_id = auth.user_id() + auto_subscribe: true + todos: + query: SELECT * FROM todos WHERE list_id = subscription.parameter('list') AND list_id IN (SELECT id FROM lists WHERE owner_id = auth.user_id()) + +config: + edition: 2 +``` + +## Getting Started + +In the repo directory, use [pnpm](https://pnpm.io/installation) to install dependencies: + +```bash +pnpm install +pnpm build:packages +``` + +Then switch into the demo's directory: + +```bash +cd demos/react-supabase-todolist-sync-streams +``` + +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/demos/react-supabase-todolist-sync-streams/package.json b/demos/react-supabase-todolist-sync-streams/package.json new file mode 100644 index 000000000..41b859460 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/package.json @@ -0,0 +1,42 @@ +{ + "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" + }, + "dependencies": { + "@powersync/react": "workspace:*", + "@powersync/web": "workspace:*", + "@emotion/react": "11.11.4", + "@emotion/styled": "11.11.5", + "@journeyapps/wa-sqlite": "^1.3.1", + "@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", + "typescript": "^5.4.2", + "vite": "^5.1.5", + "vite-plugin-pwa": "^0.19.2", + "vite-plugin-top-level-await": "^1.4.1", + "vite-plugin-wasm": "^3.3.0" + } +} diff --git a/demos/react-supabase-todolist-sync-streams/public/favicon.ico b/demos/react-supabase-todolist-sync-streams/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..918ca54eefddfbddd927a9b0558126afd2fc433f GIT binary patch literal 1576 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

tEs4H$a=ZS)m{ zUEiu6iZSb@5vqk~s(Dy@_<|89(Wo4V0L$+ps>4Gs9^)X2EJEmjpaP3qWjFJ}D9^zM z;rd<3W1jNB4}UXgS-Zsfc_e+XBkd*iZR@0akAk zg`};jPNR54lf%kGZsb7Qn(Xd%wtcd2$nXIW%7R0-yo)dNtT~DFg<9%PHiqavFLrUE zpfvfD`Ho~!89y+#)kQ>6jrIK`_D1Jb*NL!Kb2m1z+Zl<}7my`-O(V*?koo;R7CX?m z1?I3Y1ZHYZ9QMn7<33eJg%2p`avviv9$Jz_4)hdijj4NTbvz& zaBRV#RU^?uJJC$foTytkgW}42OONYPA%??c>`t|uy5%bjh@His?}8-`T${q-}4GDikzo&|*|W&-5PRX9l6aUIrd7!uJkx!5^-rNuvWlDY9I$ zIt{m<1+#?1<2p&?WrJ}-=sN7*4J8KO8E=dEBX^O-WY*~1ooaVxqTdQ%Xd|&!y{Kql z`A0O7 zFNpwKYoMhNHG|hfNO|M!ZcfSN?3}5K?}Bi>-tHJo(Z4jy_?<_HeH&Y)-$0?H|z=)6XEj7OOblCpO#$nLmwUx?j zw-%HC)3GN);G9A<{P^wL^?{4kBoW4Q)vE0E=D^R4NEklmxaf2$te!xS^YwzmS za4Lyy5Y9PY#lqO~QT7v+G_m2Vo*WFbF^fSkNH)o3i7L#&?4YeP(Jyk(8T(Lk&7d?T z{oBOL6_b9xA5HkYMywQYAS*9LEP zEgS3Nc!Fdj!||*Kx7s|F?7k>MIWKf}w3U52*ebx1XC^LV-7)XaDQD{fW{=d$VHbT| z^9yFJr#xib;dc))J-wt`ibHN0U|_G;?Y_}aad^ANQr_9}K=FO@my8+4{10MuLHxZqU(Y+td7$Xa^yW)*)W<$r zB?m*z$s(NeJ))XvxoBlx_eRCJ0k*Rvv%Le-Uw9kS1>wbSbl#Lc&uk)65Retr`vI6J zTizk{Zy;I0)mDqAd!X_XbNshP&xC0^1gmQkWsFuGU?Woi?|Q<5%+qCXrCE4Yz(JdD zO@ue@y0Btw$gZMh28fHt07{f8-5IJ;=e6Mt4LZ27V?M>PcQQ5i2hv-jyi;@BC#004UV=66tm{cANM##63bOqevglibn$>J@I7p1Fgh4#JUVs=@A=r=Z?la&X z8PIS7@>}Z!3zz%}o%A)RqFHD$IQiCSSu=t*^?;VPjF!4S--gJ2ZCB3nB#IXtgyOGg zJ^wPyas7tUyo6bN9#{V)h^+(6wc>Pzrt`N-wg}g?nWEpUo8r>uAi8tU0lI7{67K_e zZE?=PxBQ@uSz_Dqq3wlNpDBATh%~5|A|DUMM48#Na<2C75aq-H@6ibwr%o85%XsH1 zkQgn8Ucq>A;fVWIe+DwB8tXkkDc=A2ig;j%TY#qEMX32q?^fdeP?q#IXqR&(;OSXO z){~^Oukd||_o2F@1&zASLYig%E%@KJ72c!Rk1I^%%qiHH zR7f;C95^nk7|xBW4D_j*?|oKO5K10AQ_*GD-YlssmDZ8Lb-r7rekM=v4}7NaL@PhY zD5|<_@@fR#^XpFKd-8`znNj9NkX~i=R{Z4^wLQkWxb#qRI+~>xLJJ>HWt!J4?$C70 z@Pb<+ct#I-%!fxQ*)P+Zj`bu&PdIW;V4^0w=z(;_zaiyXJEpoP4!nX%O#R85Sno(m z`wJh>zxv7PFE8RAVxL)Ht#>DOlj{xI;?cKSx8Xa|So?sr}pvVT82e8v>PkuNcMF}p)>#RnySW$RZi*qiha zR^(nSbIaFOG5L+kP91rS!ruGMH81F=a%Z#^Cg;hY#1VR#2v^h{l8j%dJ*QlgXfy@; zvfC6DKm@#1>+v}+;>5$WKzMJ6$Q5XuuW@{MefypyA4086LF;ts)eRrni*e#c6 z#+()*cJXTSx?#I}-)Lsw)=37$oVrHbjK%GmlSkNFRptPcktoJ)fz-#q)w<%4DGQc| zWn7k`P+V1WYr6vPF=k%stBG$I@U*$y%kpsf>EBK6qs?IU>EDD&g2z`3Y$i@b;{&w2 z+siTGMl!#Ja)0iO zd&bQVHcC=njtlTxy-Bb7bDcN~5~Gb8*`B)4Q!ii*ugaHwBuY&d+_Tn)FD+|ITP;a6Jn@NZxhl+f90g?9=(HIfAZpp_Fl2Z*puX$}5OOViY`A@LcO6_+$S`21DEy8sSUz zjc<)S3Urgf+^C&}k(`aLY{yJ}V@eMLb&2m;27qS>TeXtqpqr1#9Z;t}j`d`XIZT}| zBw@u>j97$kglOYSnW#zkgVdd8q$#OmIp2%COeB30FqUktOL>}lP5kjMeD?O*RWqXt zI55t4q>X@@y?2NiZq$lEZ|FPr)`>q(u7h9jl7)wzTm{T=>7_G=PJN%vrK}XGNGC1> zTnv*m$npF`Hf@g1hC{n(CVLWE*v>KoG{9(x?`9|`Gb(b#6N zLIB(|%lLQtYlhoB7k{>`D2*gQQ!eg8TVad>mdn@x*0-rIGfA0p_~-|W(|td~Ze(2J z0i~pR3~JTl(i*HY^Amj?tL{Q-1GdL~O-VLwYycVcaspx7o?Nk)$zmB&Zuu667(EYU zO<6=riMY}4|-86(= z0&hP$F|T-QxS~qVaEHmKPP(thFm>&78n}Nt(qk4*D<_8^&AEsVx<~rr{8AbDGat|@ zUW^`TPiSdFrrF`Y{D!H+Ch{xEbiey6L_wC^Bq;3H-(640ZyVyv?KXBM;{O~y+PfpGdEmcRShH{tvDlOCJD z_e>!3@y~`N+8f0|a`9PR4k-?+#o*1={m<(1w+=-}1oUlMLTH5ptb98A8MgLIcqPt) zd70D`jvu+`7F5VR`+d{;<(e%7RYgGR{T)^(wsy$kBFYtwv%VBY7So3>e@wqO#(GZ| zm$$bZ2xqbNAk7=E)Av7|LQNpxIp3HWjBF}U#q@}wh&`_)E*+&pD_kmU`;efb0oIb`lQ965=Hhv;*-xcO~KLNp9>NDJqtVMBU4f)FkrpFVN z#!gm+V!B7yzjund#1Nf#gMCSSRE+Xei=&W2-;It}MEODN-B3oUuAP(NU1 z*fFGpF~DC7Tc=!hin=Z=x+VG!x*^iBU1RQ&$oJXU|3GSpUZz~M9^g+CIsCZx&9FZi z#IiIim-$696Q{Q|#P?Co@s4Dg^Q2BM@TX*ihw-^fR^oc=d~a3%U$C#4jVQ*|Gop65 zbP2B`28g`kF38a$V)7_lhAumjRhErUwAU;Q-8dw+Xvz zpK@t=r?P*4zS0GfTAG_~ssvnf>kYL5n}-jBSm?;Fy-e+x}Zmeje!)lgn*wvAehs)Kg!~a1f}7x-FCLVFeXHuf75Aa`yEjlfuI?U zL`20SxOFu!t?Eunq8zLO^}`XK*QdL%2#?DN{ewXLv}nLHP|Y z>+h-&g&)ciQ;&^;O)*2k70}JNx*E{oC%%hwRUeYuH3Rs~+NIliztwvx4AO@GQGf zE6R%FgPvse^`k5k-CKnZkOi!7Ga?A%leXOe{d*!zddBrDEj!ZZLBsaR2hmprB8dK} zuPt&gbTqCi1-@G7S&&p?vL0uDdh|AqIA{v z0((RA&g3&< z+vJ>Bi!!Q*q|-?0Sl35Zx^Rqlc0Q`~_?%2kz*A??s7(FIDWSwjeRAob<-Mb5woBi0 zxXf*xrQ_R$`xQLJ$n^scdRSNWZ-GB((XKs_O1U!^YlQ} zhLk}3YMax*QUZ<<4CI<4A%uHq)hoql+U6Ks`=on!ody2!}jHJg6 z6%YyLHB2u~^O*So4+tni-AnN=6C)e{es*mob)Xa8f8y>`f=NfEK)^%Of1e;s0d`8= zy6L+RdU*H?PRCks-uml>RmgcFRoXB26al#beuP^vpLe8s*i(kNlZQ;H)ww^yi4e-} z`VUN<@^S>f1qIUJ-?s{*d0C%9Zo)L6B2x$V``=KT$wN4jbtae25dO(#M73_%=AkYP z2TwHpdU~3J@n;s7&}p=d_b?Gjc@SmVrQ6Eg8bRw1d4JxFd>6o9CpGYtryrx@9+~N{ z#J4*i9tQ7*nx7R08vhD!c=_<*@p?&7tO=XSe!r|P^c=5McvHoQfH7CxyO}l-z!A^T zo1f)V*)59a0);Brc%g4dDh(7Sd%TpL#A#P8etC!tH)XngT1A-t;jeM{0mA1*BaC5f z2Yp|oMQ&l)6elyZXiANix)zsto%{!1TAsXu1cbG`>K&XtoHHF2(T))=b5!5yYfZfT zthdENC5SD;=7vVLEf;)>;l(C@k0*!vG~el>@i)TDS$Tt^ZSfh-#&`hSA5Y+ANX#jH z<54iJ<7LI?aNH;J$vyfVhUpQ7@3RGWor8Fgs>fua1j&o%;A*U>h8GXn(><5IvO)A% z<3p{%37&Cp1L06DCFEZE15s|b_FKM8jcRSQ--{GCD9@1x+T>smmgMP_g$>f0wxgB$jPd+GkHcgjYEs*L`H zcNQ*_e_f75u>TEf9`SmeBS8I7Ks0{!Ne!_N@vUrQ?V;i6Ngh^jkz;MRX!t_+=&)7O z+7rb9LU%2ldC|J!ho6_tjHa}6yRQlp=SKHKEx(ApY2NnM-`d5j4F z5(dw813@@HuQ`2TCyFWOR482a<6zO=w`O#Ad?vo}O`;4>5%P2w^E7=5w~KxTU-;o~ znq}y{V(1l_h7QANRaYE@z@OKO!WdDve}8^CH-eC&;`Ar^z>w}s)iTaDlV9Y z0ashM%hl!s0w58yXn$g>#YVE`wJ{6(zdw{DPjk%2ttqYp8{5X%)2Q%hjQ&cfu7$8_ z{%LMn_|*5Vk;JLnpt@w~LtxISVkfCq<}I(q9V|M?+s+ z(yUv*79Ey!PDl~d#TZ=+7C%KKcl+aCmO`3-uVIKNdN9M$EJ`H4zl5Uaqe2w-T5)#5 zp2+2|;mvyV>dz8b&k69$#y9g2zqPGY!dKoQ@h%SsSAqhs0@~-diz4!mDb?=>Z&OZC@d-mrb>xO%4 zr900XTfm3r5+q1_gk2O}&}1#p)pdrCNJ<-Ai9KQEXdzvA7q{UE>i3y==Z{oQFZ1eGsRwi4^c zIL2pQ7vXG?m`dOUx?@<7^pXxTHDQ~Q+BK@yF^HUvpG{k*eiI_Le&z$U3fh`%+~9~@Tq58;z{$s>0e(~l+gJrP#Ww+3Y^yZcAaVW~GNT(RHWAbNSs@8c z(-EzP29r`fk6me@l83R5CD6c`&9mJ7gbT&y8G(|hZ6r_S&+<765``cj@P9rKem{Um4yBGdxr7F5eD>cj{AjZZ8*`Vx7s5l@|@Aa|>n&;kkKWSVegA5$9H4Dp$L?$yKy zO-gxG)k5FVa%_h(JpF9}xzv`-bm1q)QS_}InJO}uSn|h{dnCgT@juscCEGRCj~_XNbu(Fsl!&_EWNWT zf^-CB{VW7b<UKYD3I2z4`U=GvhzLIpdFa0 zT0842kI%i^QK0@Z_BGA>4ZzSkl*OJyQlqD+>~s^`{aP14^12H-;4S^ zk#?HTeOYoVsijq1p2Nxp^^>luZM;{9dYxmZ^y=9w_IYlWb>TL2+OwAqPTIFk&YNUN zKADTrj}L5LbNk?hoV~?a5NP^do=dkBb}O|^HrAsa7WjOaFx3~rnH`_;Cq*q98%bKl zYu}1QrK6N8hO^%P;%RyEK^woUJA(dluhZkxwLP+?sE3l)iC5cBnAz?Ko6|x^yhtAW zFsN@eL}IkxMEz2Qh~buq8s7oAyH}Wh7CYXZ8C!uO{*A(`>fBo)=WlrLaT_+g4PT>R zdz06^g#YGW`|P|t#O3(j{82_x(slB3$wWKL8-)6FpW3_ToMhJrzZ%K3_tfQ2_Lt+7 zg5dewO{E4^dQf@AoD~7gUu05|l%(3;-9OYQM6s~K!}BX{QJ3Pz<;c7gn39~szzYY= zfqhefUKf{^oFw5N8@!km$y>z0w}XQ|uDV>=-l1Il&GAUjTu@@t_byuuGj_uR|FmX= zRzmyhE8D&TG0G%YVhj@+qIUP6YTgOgX_@Zz*U;rZ#{E9c zk`aezc~C2VkY7>@pToY;U-iwm%5DK{$0e_ZcR z^uVy5_Y11^zM0@{Druh6U~z2P!0%u{?eXD_}9nUNC$&*k#d4)L2<>}Q&LbotQ@?!jjgfGKb#m+-7 zO)X|tg6ilQ<&m&7d4=`Xs~DPNzk4rpo4X~cNmS#(rw^>Y+1O%$G_z2OC7LaGSlz@= z0@Of^=h9M`jd%WS&~p8;+PcJ;2Gv!G^vdy7bxW?T!%h76(S^eNv@Xw+tQ#^OAmItvWi-JWnfb1u5eL`dSg&*-_5^nTP6Q-4`==~~LB z`|HQ6mH6Ryv7Wd4BF$90k?mdv1)$$lC^7{61@NYp$?BQZXsq~b=$9v?JVWgIC*Q37 ztcd056=g{%A4gMGk{?)*x>ebuZ);DEAAxuD`77DD_bk*S@^`04HBQ@t+V*U68&5%s z=+L1^1Y`QJt^XMLYFHhEfA>_9hfH(|Pt752)#FD8uiBdVb=Y6EklU{emJ10qxYLD3 zr_&2%-s6(^NLqzF+y2xncr@sCL2oM})naJl-YB_!D!tgxVO`1Ik8)}mM_F4s!pa-)lF)pmhi6&n?;%_ zCdkhiphf4I-dI-s;hj(2%VHzLR2^oW$rWFO+o@`GZ1+A&h6JEzXJs*Pa^k=PnF_YK z`=E0_?GA&TLnn!9Oo>U=P0ROuG;^kx7`8D6 z^bD~Tjsm&6WvfB_kC|1=`kSdI3HI5N5Jn&5uc!cyi0SD|7JC}MkC5AsHPy6C_(wVN zuF;NjVnC#C*Kr8EUAnbG`!mJ%Y`$?HW(l`i?6@4w!EYf(tVKT+Oy@|7CDuD?Gj+~l zmz*^gi>q9fcoj~!=9iUMV8}Zckv3p1PN$5O;tAa1Bcqz>`7$>4R?DGK>6y6LVDQyp z_9ec1*PEY`o(355xzpT%*#wH0MwT@0VaWlb;ZB3sadMy59uC!aTD+^@Z?NMyG=@V7 ztDFbDH%mC~i&>_Rh;@*nZcSs+A@~7lTjwaM)E$2iD6&J9ikRgVY>^;G4-~nAtPFPt;0GcEpyALLWbS zMQ<)fJc#~SEAHJIHmQbFqkvSIdB`Ke-Res`jM$!<*5bpeIKYLY3ZVr(bE0Px3nn47 zDPmU9PwmcTMcY{#8MA^~V|D#)-_z(^>8z(GL-BD2U*W7Glbg8*%lot_-G9{F$vQ6>(1^h4PCp&?65FLg8BP0}TpJQ3fzVl+}Ea*xZddZfdho)T4%gq|=ATr1N?N6#?=gxV#CnjE_ z;(NIV-Cyggv>s~3V=tqX+upk}TpT8TjodtZ)ErhK=!A%rpbFdHjA`N(kh)V2on~fH zBMAB95nsK3zqpZRy(pa=MRsm~uaH6NuB8Z@-=mA|YFB-6%_ZF}?%ylgbrhyLG89^j z>;HU=HlBLlo<4?R`#CLM2`bQEX^6g4NEBm_(doEoxU06&ioGoACD9G0b72TQEDF4G z4}kp{bce8pPI2Vk9TA<6QO16%jfhX3N&foF><+bmZ3oHtqjr)a8~*^*&;Bnl;~aPr zJhxId-xoObbQOWvYVC$s1bQBl)`S&)#LtcV=XHZcNXywIJliHi>H8{9mqOZa%S(7; z#OhpnC)~y9bY*mjCbtyADECuTpxL&REyTIMaDIDp1z=M-PxHfEt5q$sT;&${im#Tr zt*UizI}_~3PGKUepY*$4krW*wIFCFj3-x!;?;DO|?k#vsWvtdYyGJeC7W62u)d#Ml zx|A9|7^`0>HrOomiu8m{^uSxu%2KUteCTh?ecnCdoJO5qI~J?%B$3$_JL!SAstD8A z5Ydo$+t*()_?T9lI)^sI!H~*yW^ijGy&6l~N>J;IXDD?yY>2Vz$wxLA>EMfo!tAv$ z=W{PI%m&w}KmK%{l{&XFAy%$&+(@g%CPQlUbq(dp)Q&Yc<_CF5!Am5BNT=D`JoAJe zQ4>zG58I9Req6-j_d4WgZ5O688!Qqu5G3vM5<7U+$;-B_cWGg}pOI!k_r}wi_1r@u z1cWGKUk#@J88sw*q<=)8RUb+w*6mE@Scu&Dlm+xMTqJtX(`u=|2wV!^5SqCn%jwUR zE7$ckDrw zZ;1`}l74x3(Ay=GdIwkY`&F$vsae}{c{!|~F?3+&b{*TSBa?)h58l&h`+8U~U$O-q zUr`^J>YO)r?;sX+IJ6NR^IW5pt5-QHNwMsytc_sI+@JXcm03I1Me=L@Y^@f=yIap9 zQ_ubBNaD8srl6aPk{lpvp~L>{*=3$!p#S`&iJ*3$(J28oOKkgClOeNsh4akl1zv-W z;fuIwoM|x_bW=utBDXxg@k+sDmVzm~%=WT{_BgpSjLEqsGD#+oO`~;_V+c|=dz$y6 zg=auXht51+>z1N*TSz;Y(D}66GfiLJ4=Tko672pVNvhwDXnS_6AkkOBQRe&4qC#pL zZN<|1Zm-q{oq1bS_r$F4UmH9<^)h=$nbdIVQaXHwJ?j1)+JF0xx$T-`@1KQJ_lIcN zJ-b=ih5Ii84T{cY^^#Q*5`pxgz_|X2J*7l{o|kDp{(yv$NM`0oJ*L`y{lJ(>HSV^F z_JZCOV(2w3$=QpZI9Ymh^-==0#7a++$gl`;z7%hQ2F=ju`b8Y$hE+16pu!z>o9WYE zWC`~Sx`2_W!j{!}J+B_FAQ2csrg$c_RM^A&ap$6;*|f4`ty+5R4gR2DYk+H4NEEc= zS6QZrc_EQ|(KwS+mG~UUav)j@qVTs@w+M2Duc^v$^o(7}|B5McnrmC;%kkDh+2^bB zFZiQxw{T~G6~MFOpSKkkNt@4vMw#r@ z3anKEo8M*Q!W}ph;X6|#98af>O6ob>WJk>)Z}7PbB|->b4##!F3&Ula*Z#5!Qb#IP zzMV1eS=W!uqEVkp-(b}hyZZMM_ofnmh-rSHv>o^;9nYf{PKPbB08E(F(mpL32u>Vhs}>p%Tc@2=$+xmc-qVi2hz z;D3m(eKbI6#_hi(Wu{7Y(;o+PbSFh+bd$7Vb>eLAf7wN}L?(i|r^nM`Li_B8J*l*O zjr|_phEsaJW2xn=C@4llY9l3szIZ!Wz}T*Z;JYy~qkm83C3PC|ru2msNX(UJ6_Mp89idHwyrD_6UqJ9a4WV=MZgvzzqXaj*jdP;Nc4q8ahzEGmV9>( zC)2d5f-g&L+jo-mr~St(&e@J1dL40M$@Dz7KW^d^iN(5u?`w$YW+T=1k@`__%mDRqG+#^=O!q+s3O0S`6XS(d<*p*^!+_oFU8LIQ)%<$yJ)Oqin@UT&p3RBD z(G7EN{^|2a=80|WBq6tcD)yE=lR|HY8o6G~*HHpi$7Qi%P~vWhy6p$G*v&-Y=dm1o zU8u~AA0+7u2qJsBuO?3waz;ktJ%>rf2y?k)GerKuql4#eI=TEwg{-jbBER=PL>||r z2}UFiREqQv?@yUZS)c!1@bIy3-;SVBI8z=h!WXoziQOSTBV)Gvvz8n~;#*H!Pai&z zdU ziYr_EFZl{#Q5eH-<#s8L)y(w0RJ^Ny7$@Q0=q-qF@7T<(+-Dw>Ne4~iPyyYr4}QCF zi_N`G_>0(QA0JD{m$XVf->78I`U~;)RJ0d?pCy2ie@~_6DWWr~ZRHQNM_uNC{nm8i zY#9O=xXy(zjZ07kkzUe4RqHCh5bda_yQs7O9N{euoE&`Au7Znj_s4M8tdC$uz`&4U)+y1d>YorvOa!r@Z;f(`mNow(+0x!;{ zSZoT3{N7y~PF-PJ^G-Dm5N9$%B5}YX2{3%S&b`hhPkc^)Re(h6#r9U(f9IgDm+s$* z`dWzmN2Jvku-pPK+|>A-jK{XwTGG>r=AQ`pT{mCe=F?b$8Bn~S75UyN@FFnTf8ri# zxchB1N0W^ox%!nDAwdNTdpi967-x@A)1A{)Q2ZZ_X&dE8H~)%n{2}GzUOv`#9-QMp zil>^p7AzE5u6DjgA$lFx*2HvMuL=|bt=@f zS`}_O-3%08vF8kRlj6PYl;i25Osdeh;P&0ZAc9L6+!XJVKJjW zbel%(efzr1$BxMtr~bhO=dso7w? zBkzYT)LGrLNGz`8OFq5qPR7)q24PLOp{$^sN4kA|_t-uoS{;T(;Hb09*#irafF9Q8 zFNIB~XiXA5DWbBVJB!M?yLcLJ+2oLiRim%dWZ#C_2?7H*ZG2KxZcu=4#T1+c00(>L z87=G-P4QR{zCP+_zZ+RC$l_u|V<_AE*HH?Tie<@(6UfyK{m=9v2}a^~2kiHC>fK2fRd-b_O6Um_mZMv>QkcCC^g<&a8a3 ztB&7|pqXwGI@P^_xikg2C8%9vFS*$E41zf5Q`rA{)BKWBFEeGN?h+z+&5L*WKGQD8 zuc>Cxyt{e`9`~kd$DL}00C~QA9k4#n@mF|n<7LSF14N8U)%UG*$P+Vs_218ZkVdi` z1$=+CU|q~gwToLHM{|O2UOA*k4*)C7jFI#lh@Gfl1*_sD3P)x|ry`37!Z9ZGNez|GqiZsc7YIc5Y9l}iiB?iUV+aeDiIZ!i(T`tBt$-$7rMl2`bsjB$RWSl_ z)o9eHyxFQQ%KccjS&S|ZeIni_3z2Ggg0^2(Ay_Q5XdHraF5@; zf~`3Vawkm;X+oh5HQEQv1yNdbuU>Hs5Q}!M2ZaWRf0{iV+BK{pY+97E(>?E#0%9h` z*MBPy=Y5K=2fhz{PyC=1AjmvN2_@FB87Ls5@nXxC+>odiS!tS3i-uK!#z=x3^a|g+ zrS)eE&hx)=#omhfK8^U4NUG4R$7!j|JmT?!#b9N1y z`z}o#GJWYr6Z(DOVRIR-LVpN0v^BEWDw-m=cuW9@36(~YDh?39#!laRt)>4Xf6b<* z0eUYP$f}xw2^cFOKL1tmvBLNlqinTp=fQt!nyzl;nfnq}YMm|^7ItEZ<&S+YYw3MH zET)(yTJ5pi?4wtLEm^3C&tU1k4iEaVjX+7V{o55D5qr=-CxmeJS>U5h|3~uh0U!=3 zARL3Uk}YNG09&b#&*n?|Z*zCeGO`RrGK;6rxY~j3MO~T7-xTcllZW>FpqgeWXfodqT z9zz7haWc?i*>8TH16*6=uPKD06r1mg-VNQXag=h?&}rTm!3WKxH6;U6Es95lvG zWBZ&laB|3$ydlhlo+t_=%Qw`__S`50NrB!K=<_s^gC}of*b1nIax?CV1-yF-&f8z@ z19u6q#&Q|`$;e#rn0Mlc^9QiTq?xA~0^3eT{%l$jAAa14-R{=~V{Y{m~!8EMrgOb;>3U^bo=P9$wm*b zGE+DotMb3AQ|IsBfoYl(zlvzyJdV2_vxZQY+4D3AlrSE)Xg|z%wJt^2CTxH$8;6ER6J(#hpwi<7X?3=Q2(ey?c3J(&U-H^>K<6 z>=DY?2)B~&6V3vM(gxieB}`83uEBynxoMF&yJp#Zd+$I!XP~)wwQ==P5dD>2o6?m@%Q4EU6yCg^HM@dl!X)mX%x zc+68-0l68JX#&iGEBfYd3XfBy&8KQSsg;1a&n`AThx0S7qL6vAM8w~aYIh)G{IW@` zO-Z(;c(2TQ(9iipFP;IAuf$}q9e6wetY##k`mUDOL-XK!xHXJ&CmNZqx=N#Bpj=~O z!8P-UT_z?ks*iLta5c{KVQiU(!ex2#^t0kcQ9@o`R;I6OhaSz3W9RbMlm?xEt6PRr z=L2>v92itTIkO9`hswM}*g@(ImZ9&CdVV_ZVB|P4TA>Y7ptU35ESZd5Qt1{G{tJ?3Eu*; zFfao6CRJmZ^5UvF&<7YrU_W*F28Zgw1FE-GAM{svm-L{W>U-_gYv1s>a1+2KV?#u2 zZxl8TnI-C!wVin9rWgVSIiK>X1n?M>=qWf+QKFAs4#%k=_DXi-oMk$DZW)yH{dmWB7&Uewp5rZy`f?K8mHP;@r9=)Ka`!NQ*u-V&H@V)z0ET4fNeOkM9%LJNMV>6lV^vD zY*y2P=sG!PfYcWV6adEhTWqv+c9^~?%j1pQ=v*e>>8_{OaYu6kJOAR_NL0VcohKpX z8Go~m$jZU_e$`YPqgt(`V^MCBVVV0OhXBGJT{RJaWgfXZz&&H*U_UxdKCmbXjWhgI z)@%H$tcqu(3|Da!;5vpEKNOXjhz9h#G>#Ht_1TySeXQgY;{Pqc|IKv4E8+#UkE(}C z>V-U7>aVR3sD-z+jrC4AFYVwMu6_O}=eL?O*sbo~XHk6&QC0N;t2hyWx70GXJDDIXcc6l~=2 zVapeRl~9yilejoZ&BOf>t2?U@TEB!ZV{+c(i_`N;8yvPCX;n?51LgwZAa=OXAYr2Bj=F6AaEqaJh*A>Wq6ZHvMP&h1FrP9dLgnuuz7#ju@TERh2RJANn=4mx7P8v4;wap4N zeBtfZgRL`TXv_oi`BbOuDpZjkiqTlsPmzcqJ{Z5ETD09U;{|gTD8=rKwy)P!eZXTy zotyDOJm6-bQ)N$2xA0^dWVQ9z^mq9G(KTiPC>#E7omE}UbtA_N%YwF_vpg=FgI`WZW>lz`|SdMLAZ>L7u@?av=ctJ_?|bJCeppU;5l<@P_R<3)`&8 zhI(ETJl_R0W&{D>+J*t+zP#_vI&PnG;+Y9(^&d*GIiJyo<~MvcQu@s14)DutqIuVy z_q`0#ZeJ_k@4DGNv^-V;22lQQ4V_`))F<-Pw_*o-VE|2n0AbvptU!zk|4 zQE02t4>*Gp&z8*8v8S#C-iZNo@ z|2uu*$ZNYEBSve^wJ?%WC>JHvKl~tQmm|>+ep_y|HFL=K-8>pNWTc{rL126YH3&5$ zANf4~79e1`ZoOx8=rIJ+@$~&)U8UPV|6u@ygnQ*iMpzcGqykaN#OYxX7eHY?DInh# zEi&Ml;ZjI5-fJD+spCc4%hWsFLMc~n)1*DnT21N&<}MzyV|cbaW?(_Ba#g7un42(R zb`H}2dp^tq+!Ug+*1m%jRYN rea>oToKdaBn%#$D)l<6P*Mz4}Y(hVgdQILOcBJu8=Ru8%b;SPxULc+YcBFSuUA2cGQIOrRD8Eb0XvvG3)TfK0zwgvmSxRX8wlJ~m@ z9J<(gS>5z=adw5?^HbnHyW$>jOgb&fee>)RFDC_VV@>Uw%5I*vH>JU1U@>mROE+)c zl=pmLcTe|`>c1Zc-YIau^zw4QCo1ae>kIak1iN|Ki;Bz2%8H6fh)PI^09S}W{awAR z{6t)#JpbI}KlgcL3$^idaQAX>bG=Erua&i%x0eDpH|atD{rTs6dO6tr?@6xEe}@GO zP?Yo+QE{-C=zs4Gd{mxv_MVofgDvo6()|_1<???70h;m%S!28%={@&+14+8WU7^pA3{``?DhS4TL z+}IjEfmOA6BBrW&=jG3W=oo9QJJq+Y{}EAbr;`@`$SufU5S2u^Z?W2EvS@1GsNlOW zx$#Qtvn+P1!G3V`6{=w{EltwCC$ny0YRD}(W8@1226uxwl1*CLrX4!l!x(eE)kv0X z50;sPKUIWonVziI=zF*)kQb@lHbu(_Y6jT9Lzq@SeelVU%Vgk3R<6J8$Vw7A4ej2upLo zL$ct#j=teiF87fYIulD6?a{datGKntbrad!s_!4$o%d~-x`;~}u%Z7HyWlA8y6Smb zqOM;4+w!|ow5LLj#j?=YCs?w%_grg4A@Qq-?OUO5@a&=$nQu%67JfH4!H-~i;%FJ7 z-WdB9iVr+Ei0@vjt{>_(d)I>@G^oE2LP z-G1_I{a~MpyZZDV7;_=}G?$Ch)nHM$mZc+7j1l2jTPF;*X5^ekm=h$x=lGFK!C`8| zAf2MH|&K9Gu)#;jgpBt1sebIrJRgA3^>*@8a-3yE6wYLVR+ z=0(!|w6){o06jG`yZ|-2G|ch0ir14*W{M4K>I+i*OdBc-gSxg%{!ihHQu{WT^z%L% z6@L}uDb%LF@L<&}4`diQ$a$b*+#NQ|j95)BKB~$GQ5mxHCrvZv*eAU`FfeURc^nt4 z13paFwej%3iL$LuK^)ZyBdK^S!VsW%jC`62RcrEo`V0d%AtDBg25jXX`r+(4QV$vCS-EykHL_V=puR- zZY)(;AyNOw1YiZmQ-;z-M~B@I9!#Q9yG?XP=KJ!gm_ z`&N*s9mOW0w`bteFWMsE&?XfUtt_=uAfe2JrOK(DT`&^I{qUm$r&m6Lu$XEh!TMK= z?~52(O9S&Kx-sln^?pB? zsXLVMqsTO1MNbwhMwzX8ox>o&Iyj*}LqtUPd`&R%o+g~Nz_7RtxA;+1P|n+W>i8K? zz`Dd-h<5IA3yzS1WzSD;Hmd$Asay70);~7YU<@ORg3&5~v$;YJ9(*h+c+K+uCtFcB z==O2ZavitjfS$|Vtw9YJ5q<%SsTEbButjR^MkNQgN`x|;RlgnH-Lisu)LTev>G z(I100Tm%aJtjM$oQ6$5`w<>B&}4|tRP=kZ4FY&)Vh zCXLN1&0e)n(WqKx!1l24-vq&RLXm(L?tB1F{D?MREp1lYmwZxgA^?Q0`p4$$8x?47 z=XIaO4pcq80uw?37n4wu;21d$xo)%vomP3G9=5p5uhn9k^IYBQrs!|O;9mwN>OX0( zd#I!y0Pej~Pi5oR$y>a>$_I^`S2t%&;DxOSa(IxvKg)HqYC%=eXbp=snlNMdYP*(g zyV}0cyQ9moMD9MKqekmvUNDXt2r$!#lG^XkPxI4fNfr4uc}g9m6>ee5)QMl78z4297u5}1lz&D7;c#N# zeMa!tdO0LR`qA2((7QkYf~1bRj;2U-F)p=h8SJn%L2gB)8W30=$}qwQchNT>I&=(n z<&GzB@Lvs~DjN9b5fGA0x4vzakz&w<$faxx;Yd@HsnL{^g%hl*VT z(U%W2+vOWQ{7bk18_BEd-DYhOg^o7|=ySuJqBYSoc(%;X|NPIPmu!KWYP1*!xwTirqJ zKgQavB<~h?_Pm%diW^j!1J0Na)2)Ny#cNsc{AeoUq7B80E3b1(G_(sR-mH{0z-s)au2mlh}^L&6nr7GslA!i!*J{t zYnK6}h?Ntp(JwU{S+|oIpW6(CTuG%p-`~*EeL;8pmjgz?-0;tXj!0>I!D#G-@q#D} zNe`7$0>%Mj=rCra_bkl^J(K7S^%+_WP*r}hNXzlG;5(FSmd{*0j^R%HZ3EFr#p_!M z?y~v4R!EZD?+6~K67>xN!;42T^cMjq1yZEPuP258xD%sf>Nlal-1E+13ZAPW8#U8) z@Z73THVW_0ToojITAbb1M)nKbpSxU2MW9-7tXqnS+RyiFMs_54as!URtkIsEz79sw zBa^o!)soNBVDQqKoyE@+bGNj82R6Jl%*7SmH zGbbjuw)t7bit1nlp{d;jopE(C}ziw1LX^8kQ^!+#A) zfwVZm@9mMs>L^>YULoV29k5= z9XOcw+%)>gq+~Gc_EEH`ar2HMB#OvQlQ*k-Hni;cTy$wKkS=Qt10yiV+eZD-Uv$hF z7F<4A2vnk1RPM`o`d@l7)p2aLK8D8^aFM5?^?yv^yV)3P-S(k1KoFb*0HQh zdN$H*&d8ZNHi?mQrpHGTElB?afI&O^yF&P)HarGhBCX1tp|eH%YaPhUk}Rff!?$~c zTI}54-9vQIr&<^0mCi$$l&mVz6$3=f_&#G8MP+?V?caza85{_rlNqD^UfPV|0{(Zr7*sJ#E*BFLP!i7=_!;tvki`5>|`?3ui#hY%eTL7=_X9ch`@qVp5s;yi?I)YF+2@5Um@@~%R7R(vq2|~=5z(c^yL7MIE3x0M3ds(S!judpM{n!2H0qk zKIb{$;m!K6qUCi`M3kRBcQzqE@e)nEgqud95!M)ra2Q24bau z5)PEdrZ3t@ujWx;-jV#?w4xVI?$7w62h)hAfM$-O)UOd@FrOQjwgf+P4*h*()~<#I z()-({Q8O0`^veO=wSWq!tujmn@}|m{tjLJ<)~(ReD>?wnQNdYWub*wYRczNM2rn2^ zYT||NAxhGv!NqY5)qU0H-AxgEP?ZBy^MU1x{fv5U@TxLtGyvCaGDvTDv8br~xBLRy zk%JuI7bi4ll&paW5iKc?+umqToGNk`zpLH`I2DgSiC}qby@&l40MUM7du7Fc@Iq)- z5m+)HG>5*?Zr44g_*0bC(a^zgMYVi1-rcs21(IwZHDwKWIN(Bu0A%;hS$rsf1Of^p zr$Y^i>Gv(cJFfcxA^!Vdw+b{RO2`H}KP=uqEl9!P*5naSvq94!PbEWO4;$XR=;TN_ z;3=uD@ZxaU)Nvoa12u7_HQZ+%qcYWk$Re(Y0#gUe$D}-i@S_A)U#eO_495B!3y#Gr z*7W7}tXlJ`Gpcg|BFZ|Gh_&|ge=8Klt8}Q34fVk}fsSu-o4lbUV|*kPRII^uNin2b zi%_u-s2lGO9so1(s{#$Uu^}LHnEPYQjcuHc@zvm7z-1v2I}cM53js1dQz_4!_p|>4 z!;Sk1nu^yFcuy!Srq%{byezWd^ANX>KEC9j*HX<-U$<<}vR&+UE8(iBJn6D-5AGDQ zp7beZmkI_Y8vN+MPjyq=9YSH)p(Pv6Q%;D{0>D%)Y{$%QR0?7SmXx<~%si_(00`On z(5&T62+MpiJk%)}qH>kn2}|SNU2^-y6ZOv870l&-A@^*I*c(rhQUjB~Jx0zO0K_35 zNs=!Hf*xxV3sBOjgQU5`X>&)b%C6G0cX?Ax{i7 zP5e zf9LeRl?nl^EvY|4vW`ZCcSHVBDi8)c*ue7k;dFY7DC@9u3d!$pj1|AE+o8G1XK_Ve znLCzNH_To-94M8tcFR{EPxg|8`sCn&X;MyC!t57|59u4BGE_BL3(F0MFF zPYi5yQsi7NeynZ&8A=j!&^PM%al_8OZBrWvYsn?QstNv zU0JQgE=Q7JQ*|RI6>bG&Hca+vCU%x*_2nfa1b<_5l@4qYd&?~Bn>B^1ca?|_?LvSc zH+VL;BvojZv%9$C5gj-ZqY7!7&rk37z}!K#Q;;xOp?QZJWZUQ@ZY>G2IIUaKTpts< z8o8a`4&X>R1d+YCdL%EVx!D#l0gRC1P~>l9Te0G;C?FofNmnoxLQO(?p=&U@dQkLi zC5QTuM|aWhR6$mgFxq)uC@GuG@(GWr0SmY05sctNQEm2WNdeSpIL|Rc&GIW(@HlDn^XgUO`%N%;I#Xi0H@_a)rgDkiS50g6epS2Zs~p! z1g=S7>2V5yFRYn?xP{-fg7T(;WDnTK4ZQso5_kmcW9j);!9*U)=goHu;M!m)z>8}6E08n@pA!@~a?efO*ND_Y% z5*?KqBtz%)az)?&IqcJ;E&>~l?6p(8=O(H;Un4u=)24}KK(7QtAk|KE8yvt8^-~34iW0Ba%jDT`Al4#sd2q{ zNT3l=h${}BY>?R88NBUG*8>R{i1HMgFk^UG4h(2~4C4KwH1V$;S`7du z|Mg72>jt!GF%-X%)7(v?_{k3X1CdTfs0!xqf!bl&7j{&Rz#7NQp0r?!4H!5iI&Q!s6^!-(?gew1Uano27TJ?`iIMYxFruUV%3+2IKQ+V<2@@Q zQvKUYYZHzvUjMCz_Nrj5SRUINccq5?)pVG1sSTaphIb7y*5D|vSbaqT zy36$yhyf>91;#+3cTfl@JOe6bV1VEO$ECfqF#r>h)m|0FLJ(}>wmYHqmki#+&%|2d zupJp}5H8PJd^J7frs3t`uf-A(xy6)elEJjMZYd3G3WKjH;i#RQd0@9@sD^{j5599e7g=$z9Ctj03i z*R{TyyxrrCyl`=_3%t4^HTg1)|ek~1Atf)n_SjTCq=ETx)V%={RYUe>!( zKxJw-Huq;$W|BA8B72g3jowdRT}Ba{tANTLlJaT#6Z~VA_)6O>w6G7Ag%~oi|FWC5 zm%F>Q=rgwSS4Pu;-A>-W$cEg1ZHy6_lZQ3xGJtYBv@w!I`z830C18qa+5gi+OB~2O zlj9t5YRrUL#9F$M>*VpVns-#xk?}JBVISV;%3CcYB|7P&a~e?2=@pwx#NHs9vN8HI zL&DgJfou%)elOM46mI7>xPt2UZ8;NnY?!xB<7_oiv`WNh>Kp#-ioqE}1Gr_1x?b61 zfv~0|m^bU+=vtvY`q?L_^kaTm94}u_%P=ko$P1O|q~13`798$!N`g~J9%`Q`ucg5F zaq=LvXJ6={$wdQjWw9}q%T8H*>^ERR1H273i9$>^vyagfi_M7BJGoEGnmP9dl3Za- zmbU4G0+PNdCv?gur)v?da!QkpdP*rny{c@COjoOUlj8ac!K^#{NRi-C%yH4R=WB1ItLK+}$rS(?6pIsolec^B;M$8*>`a*nx`&Z~RA1 z39>O1?gVI#<7nLQ|G@q(ClpWAacrU%ppnhBvGK>0geyW3H4c`3ny@*Q&MD6He}{+s~y~DKcuS4V1^v ze@;JMt{8C%m#XGj9XmF=e(LBMw{6NgF+$P>fZCsFGQd90DxgEYZs!I67(_F2$>JoX zDSk7?JU0l85USdK>raQ2LeBn?9 z`Su7~Sg>Jm)mIk62`$M1Zk&$hA@($E%{&CshnN8!1}xq3xJt~($9&coDL|~y(G2b` zVuzkk)c7p2gvir7wp60KiZ!41gmP!3Tx6b9)=P9q%rLEDLk)HWvoh9$yr2 ziCG1Gm_3;SX}>DG1S)nw zgMg=d!#|?Y2!K?L=W1Gf7H{nWIyO)+g&}*Nk-hx*roi<^a|Hi4&~3VZ%i$6S_}clh z>ss5#m*@}2=c5JIf|+?vX3REMpDUd7uX5FEqH*4OwS!MR1UGXh3qbCW zLu9>Zkh7O2WWO~BrAEA(ZAYWzySH`tv1gg}MMw%&w=wvfn>-d97Da zPy2|~G@KEtdlcZ||IVcoFfF5SDcPGwXC*TJHIIg}4j=Nb8C%Bk09*wA1mnRh+}wXY zDs@N)=}-&RmwC|kdX%7E;U>g79MrG`;IgW|lmpk-rq361ztVzVu){b_h!zUDlwLve z?vOhQyIBIq+xpII`~G*HepLjVdCg5L&EeSH9}GUK)@#9KHgq#m19%h%?b67GDLHWy8B2`HW%95D|c>|u<+EdALe1QD)%qlC6$DM z#QKu;tWJXILiAq3bXnM(bprIGNqr7LqCZh&V%O$It_OkOw|{O`&+A%P&-r~?qm_F>5cRkL=UJ_7fOO?!g89)=`JDgnI>FHL)ZzL3S41OW9q z=m#p`(=Dhz-z>^#f{@A?v)cc+Kww&@;Cd7!lB?|gv-Yp%cL%ZOUW>Sa%JsyglcNcN zpk0*Sp?KEqdBudMG=$F=cQzq`{#5qRFM1-*Fa4?VIr(@VO9uONR1!NInaOW*1dLuH z4;y_@=YNS(@o>Fbh9g^1AQz!@D>sO)BQw+jT>kSz8SP_3O(8^8JYcSI)%m1#ACbZF zpK%Q>S6^41J%AhcerZ+*kp3DV8;%m3%**j^JE6sbalZh4{`dWE49BLP*l+MoPBRVo z;8mm{*trB_8HU}j6Hr+1TaPkMm{w7!8hW;~1Jw;Uw$VF09McJ7!=@eD zP~gYQ(P~y9%>&r$I0~=BAA?e&k}dZw9-{(g2oqD!)HSw>vf4MKy%sBM5}__@?@DXL zTjsIClsEQvIA?sp?VcJHD<(wOIf#>aJlXvwgK7_D_J}^5^&;^%&SUqL)cVof%c`XT zQEc`pe=gI+dFGJjbiGl2+j_pmlhO*63D;<=zqBm1Tb!0I91p0AC%atWd}QpBf0MQ-;qIPZko+{b}hIK-!T#cfh&LpQlNEA@2ul@xz^H zo9*#arqpy!D7SQgJh~-kgxjd8PF7nzo4A+MNC2}P(6_uh<$L_XB?IoMt&rpthVrcI z?$?EG5<;uGeUDwL=#i#@e7U}vKYxRFY0dvGcHC`8PhAxQg}iX_2Zsbo0bq_b+Cbj1 zhSbA!*~tUwXevQh)mbA^8Vkz8fQ+&*ZB0y9Zj<80%^LZS=pnz9ieHBI_x1>YNyzZy7>0LHsalYuvPa9pZdpwUx)!~~^%5s%4P2K$%8C-{f%@Bop79DYON1$Qz z&iIY?lKXlAqy2ha?GFgq*%?D}S@FJt(_fb)cIn}sY3Yc-B2G|a)C(RO2@Lk>s~dGx zIS-mMpXT$$N5cup+U`N9xg&aaP`8glmZBl1ZvgN{dqTt*zi8*J;;eSw;El)!N;i0d zm!W2(trK}Zw^dj$5OJPQ=D8~uuUW_ZSJ*kM9ygXAJ*Q{RAMbBnvm;s?D%26FwZ30{ zKf#@cYaN3Y=3Fp%`g5HsOu5y7>K~}sb5ijj=)yC5B*ifndnY%)o-HW+ci+Q^wrRO_ zExmge$U#$g`pCF8%5LdvL}{`XD0}qTu1I&>BQj*&ZA&w3?0pz3{RbBGSd`_+8K2Wf z{}=xp9QMe$U^7>(Zl;nN8MpaB9J$zA#^7OTxkZE+vhtK{u`a;@jq;z?ht+G~Q7>{( zc*J8g*V_v!-WFMWTpk5(}*YFj=&Vmn%S=huDnOkSVxsc8&oyzyvBNUyfPVasnr=hwIL z=D{(oT9Gc!iwaAcsk{@MgKV3xZ)PQEzar^=V@*GzIj!D!qU`g%DovB?Z{(A~q}(5_ zc_FOTls57Oj;D_Vg0_AL9FM))e0%k->+5Rg*DPJUOiV4IFrdlud7XT*Xv*&t?ez^$ zok$`rAkEJ@1fsQx%+OIN$m^j)V(e=*<0(-|kuDY3hed!)vudd&_vbERzBU*}kCLp<3vn880^KTETcyHV;Lc`Cs9X zgNePPH3heb{ILHJ;iSl^xtzR|0ToM~*d3Wrv1}C73`(o4Am~)y5q7i*mnC%)00e!H z%cQ(e{*6w_-9NXAeH45`k@~jR0>f`f_PzU7kqUAQ6pTcdd5)|{QR_~1iYT$gRZmsP z72)&$KDt*v@^u5w`E2>C%xuf=I5B3+R?9++^OBG63}P0F*}b4L2=5hUlr&+^HvPp$ z-o$cuHi(%?#$@GZgXxFeezK6t$kOU(%lr0uy9#~3Wg_~fW0Iru<}YRRiW^Olk$0`F zk4G#%Q#+yEvO211!F(sUg~&Wox}AG^_*`8}j^Q+U^Wwa>>}Z4>``0a>Cj;INIc42z z>*=GL*9+S7wp&eP3vOrkHm>of*nD+?(cH3C)>Vj;fByaY_^}z?0VVoc_2CaXJ`Y4z ze9jHkRb}@KxQbf7tHY>_kyyeBwxjEm12Qw|%KC@M)Ko(kdCPp((Uaf3y-e6dN)rMG zi&TSx7X)CmrE`SC43gB z$18dX)8A%JtsW=;G3a?teVvwI6^IO`lP>Y?039$x)b0@~e^H2uZE=|D_Ka6=tkegNxtYpmzWG(t z=|8u?+>W`z!~#l^cRM=X&0r?@QZgAT!fSf*&&F1go#ue{71M#hLF2aXZbs-pYE$@1aEz@nM@P0??~50S9*5(_ro{8{k*C-N{zb? zo-5Q-x}9S38FH|+-LBM04mrx*9rE?czdpNGFHMxuQr^#-hkAV4w4!hNyG1TfUlHWn z`_`o^cS`kjkh5ytQ4p6oAnY&;j?n_7iJ*^+D-Js+mdJ>Eub(^1K*6(Y@M93@hWRC7 zdc!4#9W=bg5hv=59)0H^r}drin!dhbZmt4oq)|j5@RxW`ZQOa-y1{MlXy()g;>;c> z1>IcuY&#K(4) zEDz&|MioCM2nimCyTX5NPWJ~HCvHL@1DF~3ujIQIe%+`b~QgK?8I)!4k^_7NLc4MQLF`lT2BM^sEd}XD}h^p#nLcL-(ENoeY*P)0BveM%VudT00wN)^!H1t06h z<9<=S!v*`TjmF@}9A2OCeq>lZgT<-KE9 z+P?3nS9xC3R_M4lPP7C%bq8N1QRx!vvKb}u?9&U7?7OTR+-(;oR456fR>e18-gfUf z(yeV}-(r0~X1Nf}LT9hAG6>Of;Mrj*W1aonTTi4livDexqMVJT1I4vcMLY9Jx$;7O z?eBcg$~?VF9Ho~VmvU#ad`EU)k(jpebRAA@z0u)6sW|bj+@~iT;y;f)$9kkX?LQsq z@oG)`ZZcio(V_5EGvlh!^tB~>&Q6uD6r z=+3+d=gIe#_ummpZH4XE?|N>hID#P-Dr|k!0h4q@4vOlz>_{a({}pRYl31~kxYhh% z==76>)>bXIR+Yt7>%1^nj{4f?I6&bndq{)rC6-p#rNQoGy<7dNM8S12 z=1LEBLpYn0Gu$l9%IXS}Vauq~>|=Q5=}R^j^v=#w>vzA&mbeuBPd#^28abs?#=T2y zDkhF#9W@Nc_6_+E_pJ*8$FkDntkYec1Gdjrk6MYSxXcq#_g+uE-EKw%w+|-9d}jkc zI(2_vv^&El|MUc>7oa5lM+FYf+Isk#ynHSzg3ziK0OcI3W$A;5T6L<$>@}#Ui=OnZ zzy9dQ)bC_K>^YnlXjbM-8bPK>`ERUrk)pf?M575%0}a?!aQKwu?4IgWv2J zeyDS;k@WeP-6~qsxX#v3eXGIu%(?2*Z<2~Bz)Q!1RT31PVU2p2nyfY0=i0*j>J z`1N^)%-m=eJTDCa&)oI5>0`k5)0;LF@BCR`$3vB2l9aBJI3h4Qb++xuN&}0(De~X5vT;MGF?WrL5 z!{m5>3Td#0DU-tC;@$njeN(ZFrmx;t|8xa5Q}$Y#XV$LZraiv*4m1bZIA2p6&(T|X zZ7puL!8k?M<+-%B$-JALB(rDTs?Ql<8vcE9OLz`myt;`O1WZ;rn0_0VWngsF$ayF$BNl zu+A$T?zHB!atofY%LV7iFFrv9n7o}`JQVvBh0S&^|BgLk+r3pEJNpgEcyA?1TC-?7 zg4aDOh+@)X&sbi;FNn>-Z5j12$i7@cvBmr(`CB7Of*I^wfB2J6w84a+IaA{i=D?lz!k1 zoUB-@m3fa6WgM{WK+Kh>-a%^!C=Cl|0N?2p+8|a_DhYZmY(vKoeFR9?K+$k7zpo{D z&r0@^8q@XlaClN+lIk}-cPBo**{-R1?Z>PoHRldmzEfjkIpf(9^xoy%qihhfdH2C^ zHYd|HSYvL(=N!k2!*dkp*S&6*x-8*Qen>2vE{90{KCV@7y}Ki2yUf#kWKHL5Ph?G%6}{b?*R%xmzSwp z)eptwp~VvhdY|c*Dg51*vY%+1wKrVB0kOxt6Zng7%gJ7t@AQVVZWrGQ#!>nz#ms7X zRkY*m^-o?pXmTX{>7tT$n=M*5Hv+R5>XN|yrbwlQ;jL!XW980;ot#oplyL<4XrwSzX z@Syd{+atM!iV?N&@7P&#q5-gdW55H`6A!9w~zE51G_QOrr02|;6_0v`tPZe z<{pacz7|(=)|ISmS_V2LHdLFE2Wg{z^y21T|H7;i%?`S$w5!F^myF&bO^Qi3Fm(k>tTHZ^sHRlfmw?v6TFbU%Q zU0J*H&QtY4nafQzV_E3dO@$Ax$1*gYFSprJ-ln+zE0YfJeecGO4fkw&TTue|dgG?~Vy5>^MV89=i54(Z6xxe*9BO3b0Lt7xNi<2|3z!MTBRc8@!i=zN;Keow$p2N3p*Jk&k0 z8M$6Lre1DW?Kl^$kF#u;K6skv=``zcbVkmHG`}i-5-?bp64=Ehc)n-E;yE{gTz_uSLjcUg|4e*;V zRNx`8B@(^Fv4!&A8ku1JZA2$awRfLEI^`{}e`r}sVYVA9 znfsDQ@s!VRl9S0}Wc{M(I`c1o6ZzZtdJUE6_u_#ru{poA8ecar#re_AoCu9YJ;siz zurAmuzRvzSJKE-5-n`S_(D(`cVQkq&_@c|}2h)`KdAmh!v+^9QXurjN1o2Do_sY%N zpRbnf%siaCmnC;WymNc>d>Dvw6fWLm7Na%5u3!IF*@W}qK)W0jR-Rf(`dqz|VnWcx zlfP`Mu48N0-I!jkH0{SA=2+gU&Ai(koBjIMB`4lOZ`AltMbNYwK^VM@-&k8e>h|Fm zUH+cQ%YQ*gimH6*Zp=UXcYubGUZUTN_G{NFOT79lyyTQ*9(jC&O>V!#&51v|TiV|A z8DRvp48l#BIrlNUtO9EhJl|$~*S^BpSla6p9s6VHWX}ctef*)wl5auFYnb9MkgNJy zZNWR-Y~w@N#&h@h+n-KAa%sx;0<;z1uTqSMvMbjEy{g2xX4_xQewTkasvTKsFD%at zQz)9Y`e^kju6sUGe>EkMtEPBelwJ0^FTWVN+{`~ick{x^s|mT>Ft^uh*A5&;KDqqd zVd}WdI0ZU-m#%LU5GX*~OAgvv5wp!nv&j{-!|xgEUk5iX2%XjqN^W`mdH{Eef;2XN+8K(#hk&<^1c!WjC2l z{duIJ#bPcC#?x$b6htXtuJ^VifQ5op(bRnlB_3jv4ny$N*&n#oC_NKutlGcXBx}VKV;< zQCX4C#1vFCby>;%*355GP|@D-m^6{|8)IHe6nF)HytfcHuObx}FxqWkGtw`eh$uuS9sTUs&=w6Yx z@ah3;`H@;ubChk^P}8mmq_~L;g`w1%8b!XNeM`PM?9)jtsT3tNar#>&^TSj7EUfpJ z`a@|y{79v{8>ileruUavPv)ki8plMSAjoXx+Dqu<6mh{ya*&_;skFKpFF!erV-Kd; zzoHrrq8hC2a@T{~18zt7KzZhhiw>@vjwo|Jb1R%1bH+wF9Car&NnSmgeZHt-c3THf zUdIpb+Qh<}JuPU``Hsao#O~Q|@#JzO*5X~KigWobyA) zcJhd1q4F5iIi|V!D;{L5Fs`nUuzmR_Kr7f>h0L>)wrz~G4|=D(oPF=y2R*Bm{^ZZk zkkwbuuNRE_D;^`)y?@AYL_wQ(rn~Mg0F2(ipaXN~^u<+&FJo4Gzdl~@->(1L;MO6z zb^1neS~a54vhW~HBX;ow0eL&*tN5B{JS+8y)wfN~(y##7L}AuLvp*tpnS}Zt=sM%-hC7QvAF@w`Fm5%BPCA z$NbUT2B($o!+)Cv6y`0;9+ou=>w5LLPttGYr@orzN^;^+(m1-yU)I-S;Qv1C^jzQo zV(a9nX694&D{$#jyzOz2Q`q5Bok#dRx>RwJVpIAQUV3y_gJ#qt)5hQX3V?DLtQg0#Xa%p)4B8&WL#MWu_w9CIe29#bmP`nmuK?hy`;LVcIimh0$BCQJ+}`9e(kB zkf36oO;d(Gwu7JCPve}%wAwW|tTOFrMkB-PRUdH zqG`42CHeSO*4z10^{&nK1b?gejlcG5oSpmg7U1uPQDV%+7QnV5TRM>3_&L2jquHbt zo1fe#=fWh95@5K|3rzi!ukDwyArGhr1N;g-fSpr{K=0<|51~41)k(5cF2N%5?1w(Y z`+ttVhQzUYe_N^}2loU!}4gC9#L%N0Lh#0Bg@^2zy5TyFp zQH-aX)KK1@fGunNm_~lk_~B~fwn2bKkkWq4x>bshcy8)m_0)3>|KQM^ z(-|#6w}S`c$sB~+UmE-7M^gR&)U(=&vqkrOZ##Max#O>#8beBdY23JnXd{)L&xd&V zqrwT(5TnuRF}7&VhYD;s>j6lui1AQgGO%NB-iOB?=IDiSvd zpbKl$Cbh%K_I#^cq}>^MXyN}YgwMjm`>@!9m0ImoNVe$XPc%cvr6;U;& z&rhcaFJJE*95v9m9UXwBzqq76W~!@>fZGN=VjgDXblRgbg5A5kNR~g><WM{VMc9K3V4)*3bX!tf&L+kJvwK5_aSmWrT$W8J=b zR4i4YpsB1Dq-BZUwQ*sb7YZgFKRf-9Ee+L*@4ELdqqFMK-2eckbVL>`7n5f&)ImXr zZ1~;JV1YjExeXobiE8viz=$x2C4A6phX55FAoeiXu3E*W`8Avh$e}Rhv0PnQluo~( zfu~pDoZ%h6(DZ!y76&jn0g3a)Ctec8X{*=0077wKG?PJx>+G16@uPns^OKmSd+m%} zU)ARBH)-&_GzJAe8wz8va@S`dJ+FP=s;;9h6N8v*BMk1I` zZedsAl4YQwtd92eJ&G`7jAc_t+U@b9=J}tKJPxO=yxgAt-;+9q_>eX*HvU8G6dqH^ z%TX=e)WDd8l<`@)Jlg&_7^1dL>>KYv8D5g)e8|XvO~ct{`^jaTt_)S zdZmy*i}|;w^4d{JkaobFugoLQ?K;k-U#6-*HkLFh5^8&k;xE6z;R4%7`{?coPY*s% z(y;(jeqN$KZ7}{^t=#PK$mHCX;Y-6CU2lt`V;B$Dp9@eG*j$#%i{-!m5hr?g;^V^A zQ{E4|4=h;OpfFQ+o0$C&+Fvi5ZAaPubiGllK5+XT+SPlIwxwU{*hLk)s8|(n9!K}(S*62Xv`X35|zW`4KkPq|)m@v*r=Aoii z$XgU|-;I41)2%s<8zmhs{3wrw`tnb%oNLeOZ|7%XsWu6P}6`R;`80lcUTMm#7*ZnM4zct6l8f`+O zvgR9S!}aXIS_RBw{2>!k>Q6RGB~Ip#mz5uRen6IM zu5K+g=UerWHhiM(Seq^{hzM^*5KBSleLJHBu%eif#@wt0%_FFgvnc;3t`S{{m3_8tL!E22KK7#oW@AQwr5-fh@KTK0r=~LZ;9rX-4)!I=OsvKtet^am<%fK{P_|+OI zBJS@p{4GvoRpS;0?nVtUl;$q{hZG zeu8uK6_FW+stK-}bzNKt9!zToc6IQX(AuSeRyrTPugT`h#Yyj1F4~v@C6%hFI({iR zGUH;DA~y0P-3!%NzRGx11sNtR4c)CgvL{pE8`y^t?aAGb* zu9G=q-3zpz(%5FCYb0bxg)~n`qryZ8(1AA9>j@)NKjNCfio8hZ)rS4u4{i01Et(slU1|5^SgzTJyU6|K!|PtK+6s4E%=_KTQEYDB zychl_THvcNJ|-SbKdWj5P5)d8zR940xdZ@^* z#@;dWf_*X)+PX=AN^VOb^PGkw2=_@;EsM?$VFyPmCF-!4`5-2qCq|}4pqnfM z`!e4+93sj;h~2exEh~pPXP3ir=Z(F%*Wx!g`v$L(adZ6@kWN4j%pksfmU<&HI!D9408Qh_W{7+5y@QoZ8^d)%FRpj>1$0I{C@f6G=5BAkABYc=**oq2jTCr$*4rmpHbLpy5+TWb zreyQ!M3xu!=%%_5UEpAqixc*`tgk5S5=%D7pOIV9q&E|~y!sq&R#gSWv2Q^LdVL(P zS!V?JnLx4h`_n-C=vOXmbxj*CNj!aeR@g+p-ylRbMHpff*Rz)2*JF}V9iU896^WUu zop!O-s8QiiA>6MQSkxAP4XjL7{lfR{_IXeAd1VMpHA#8dPdb)!5v!NPfzAwg#G}j< zJYVuef$p7;jr)~x)>nToN%*}CtI0kkG3O}D*qm23EQ_wkBXpQ>6~}~LtZRS2UC4g zww|vSZ)z3)qW};ZhheB$uf4?0+0g3yYN(>!j_TEu3oOY4rO=57-cu~zrnWyW+}fst z(>lvS59-UG9?;FJr~Q@(KuE69`5!lm{j-m5i_g@OzEH7#zu^;M_|8{TjxQvy6^vm1 ze{uoHasWtfv!qD!O-f35Onme*So)%{bO}W@VRF31bUPR?K08p`Kh}{ID2eovu&<$t zz!HLl?`_G2ap*C9kSyVHRp>$IpHFRF1l#?&ur(80t4aRIZJ!gw$Pya%R(XK_p$lcy z?%Vh=!vO0v9jcbB1!+4(x(NAa2gW8y9`U?Y(>$d&GvFB7%4I>kDj6*Uq%RkQV?h5x zEGteHizKE!wbR_18lwC@jh6l`%u^k^h*lxufHsZKXb{1mM|#toLtJ=f|-Tjh}d zjbvjy$8`zRmUC!jJ3t*7D$J=eLKZd%fIT^8_t@&UNldU1tfG}KUsILM(j=xXbRB4n zM7!OEcz%d`V-tKvwk1us9iS*bYPS3>LA(=(j)|62*`;2-y2Uwd2~-UGJtveORUNzz zf3i87@3s2)Yo4#*<4@gdO?jiM=39O9BrB0&zU5cL%m^DTMAKFpMZP=O6VTdQNeglgPC+vwUMI2dKL#MT;$TVWeUjXfG)owCv!GR?u4%g} z-gcT!^~~Dqs)p_7n2yk4UTi~t-AA`$L*lFYZ;o#!XIwTpaX+Li07FH+y|6%uIxBaB z{af{|JsYI&$7)!VJ$kK-U$pQ*uRe_zI*byA_g+<`+h!`g{NgUCsaBP00ROnEkY?=2 zS|?a4L_EL#aDG1_*=vbmH7@bk40Z61@$z_{M#~7Rb?DMsIXQ;nq(E%;&r??$SjM?e zX$H^bY`GLF_FkzGJ+77)H7`ss{n(8x2C`>W?Zt_v8t199TFm0CL8(vHOV_qy&WZCA zY)=$>8TL92V>u+9Q3X>1TkW@)(H5)s0}-dis}Eu~48S2X=GULz=9Y=#zf!HONrGR> zUI$RJe9+q=up=W5E;k=5GUyX~@R}TMm$1Dc;u*8lXVg?T-#AeTy{wmvNE$!38#(?i zMH^4lEi+O3!1=WzBa(3{bo+&7$XTLah7Fg|GOt|o&T(?qi@~bFMB3Gzig9B48UK{N zvh7ic1ua{3KYZ>)Vvs<>L^WUpqc!lyq7KA*CGo+`7&id)w1qB|)73f5G?M+&j6=Q+ zkA*x_|FqaYPz6m4o8Cr8vc_u~dvLUvm)$Vvl4h$4=92>6KfTK_E{ zpM^i@{6527v9%j|=Lym0f`42y2ZDAynqs>>x$#;i;HD@OaKBzn*21&$XVv@1ohYwc&&ygTzN0oW>$1~ceIF$fwFU6gz&#Ac_ zD6?{LG1RSveV=N?zy7TZo1f)6;lsp~dq-?|&$ne|^LxUbFM_DcJOInX-h&>oJ+@ch z+uS>X`Nvb89)NVP^qq_ifEP!{mT*rAQbX{J@bs<5 zzfh`gY%;c{)hmBSusppJEE2ZwqQ68E--N*1X+%(K|8dCCba*yp2@|<}`LwNi-Wdk~S~dt2xwL9-S*TaM{=Q&~AF~nE7YIcIH zM{YtG5AvMqadw*7HmNc9b5;UlcQQH#M&#SnH6(aDhY%k*KZ+?icZ*$$FILJKHc zlVLmp%gIlH<)l}CgR-!bfxAJsg}(YOMh$8gc-{QNXXMx*AR)^V8m}NS&)k{LfBW7~*Ts#W)pdltyMTs7 zQTAYK#NlbLPXCEyLW*bJzN4;?SYjyZAa$l>LaEvJN#5cE`#ZMf0O@lI%<6(&=V$%1 zQ>DyzFSbbFsp|$r{RwzJNoC71XI^(EomJ(68%M?dU37=(0jlMZXR1fkNYh`1is2bS z#%?Fj@Jtb&Lt6$EXJdxiRamST?1$@bxz$n#yB1HMaSHF(u@<7DtGu`?kXx8{rpdU4 z-=2oW%}aCwaqWx``~BE2T@xB;dg1+i=^Tg1PcD9@fC-LjW*~3de1s7;NY`q2_%bB7 z!iBYYsN7;qxFbxjG?Z}8&m{cfz4NurU#o=t)#E32JK!p8Ldv+4f~>$V(mf-SblkU3 zFMT!YFy2?3NRt=4QUV!BN@e(k?s;db_F+BvD6`Clw3(6}mAgI;o40*1g-Ir%w1B`B zYbFsT%o=gsyX~lbRf^wUh?=YB;EGz}O7uqtzSIg-Nx(a2$0J{(WG|z-jfF(&=AZO3 zz|zUD8(UwoBlQ~k7K5QAHb8bYmpC9^)T}wZtni~edZ7f=jC7GypCR%$!y-rkLu)@ItAA*tyBu) zFhcGRi`&hSHQ9q3g`NBcv*aKBmO>GE3J*qD;G`(0+m8}&pr6Vb0$#eGE~U&^o^Gi)l9|vfek*iFYp4KVET9hRt-C-(n zyiwE8*fzRa3Gqd(#91_XDtN(=@(f(CZfF zLsc64?X=-zMOii^woWW9SvK$%RjqNyP+z{Kw zEBRT`1)H=mnS=4R-HVw+h(i+y2rg{RDghE06Mr9eJQ_fJ%+;UB!pG;i9 znLRB{Po&5T6+4onkG*AuaHu66hw4>>iiDTR*Hc&4%u68#HhS{@#d&pf&)xvx_(UC~ zxa8=yxD{8mHtwV9RQy9}ciiE*wWCblk-3=DJ}KwcxVTp+@X<+7%j4o_nIHLmt~!_k zTF3twKvxc-laEV=X=B*szzG4bnY)axeRLMZM)-IaJ=?!p0AU&ibz7w*o?E;s@;nEHXRB zQ)RAtbnr612jUDZfJKt@#AE&^pew$hO8?JeQCk8cHZsT@xGJ~sz*W*is7^cC*cP?b z4K;94q|3Nr+C$O(Aax?m;88Q|5_xdSC&e>NH%rt3_5tm>RnzOggywL%O{E3^V8njF zSq(JT1=?6-!}?wtb3I+-51lEchJzz8d*4*BH*ydG7n|-k@(8OF20rq|(;k*B&)fPfj2YgHveN;sQj^Rpojj z>)NWZe}8>Nc_J!PJWwLN4;Abe{RL8i4;ctYDR{RxU$*qim2+977weH|W_&u41t)#3r@kbQVY0n0vhdoJz9HMgYCf{MG)ED3W z%P)oUtNAQGyGFt+0qe3;>`4+}=^2O^it3GJ{Zn0^V6V*P3#6Ck9jq}Y6w9vufnW1@ z9whZu*_HS2z^0Y)kz`ed#fl#h(9>)}y^dz;Elm;)u1^4TeWZ`>>)Z1g(O)j2TXb1d zqTMdAVEw?IQ0>zUq(HIRw(VAryF+2BA72tuzs9nPyoxdtjfwKYvdON6UK1VvM+%Gv z#^c1-Urfmt{Mr4ADcynB-((mLSnrKdtL#^l5CE|ivu1``$Dx;5`1ecJtuC3L1KKfW zuWe&qK^v{}cSd+%f>HFD5o$Q`h~pNet@6M9`Sj%JZTZ{~{udvnQt0z8nH;kA0FtUU zO3!bf{?6O2mEi`eVUV0F+_ur`v^$XLHg^MVsZq?!l4ql*7Xa(za5V54@)jQmYw6Tq zvwuUVk}bJ+=Q!;nNQiUbj|%bj!k2g9w|UAW?MUrzDdE;pmz%{h(N z4H@CC#`-CD!%bOxKo(GrU7(NhtzVH&+DD^R+u!%R!vC_#HNAv`w>?6qRqZ%1XKhD! zu0fbPk}_mGlllkr9x~yU=#Gj{s6gTH9A71tyd#Y1J?9WQD*AuWpcw|PXCIY8e0@RI z7jcrDH6sokZtu4#Yt>k*{F^W5%g=OSgb27hQ&Lx3{UuO;zHRuBEkoTlvWCEo>|oo2 z$KzGE@&2(w^BKoo(8XX}YpmYM>BjRK4CAllRRU)LN@&4f`;#_NQrT7=T1o4~Y$Rh7 z{3;%#Ms@mGCJ7e0s{v;k?|EGReDg;HoU*^SXf85yG5Hav?bD6e+UV(B3pH$gZ_y65Ukp%$Z!uTN>TBMs<-6!j)+~$q( z7UpJWqN9{-j!VvuOde)vPBoYd{8sfmL(Seo4ID+9rHNYL^1o{d31d;|_H2U*wq?MzWH+1P6p$_@>GsUXe4CY7^&2 zI$r#FAP;mW0ZG>3L3DvCGb}3bzRuc7Tid69M&|S5++NS0J`1KYr#;yS57^V-TY8KU zC?Aqomx9tS0Wn3i`kd$Qmlb!(|uSqyjh=CFFYY>gRW~U)C zwYlnbHAd4iKsV}pNsUSG&pSY=JbV0;v5{r0Xot|vsKp`?#THhUX$mALxU*{jw=m#! za!s%8ea`1_1U-=yphL#w?&;yimVf-b2KY<9%=;|t!&y8yUZPe^W+NR z|1*tL3MIHH^tGwHojqm=x@OTdkjsO*xgFYR58TBPSV?|9Hgs>%YCCJf!w^kHAyXmI z+7u~x#6jT9(w&jU4yp09mAa6#g1ZrD;`^6T{!pv=zkdSz_luO!-lt}JC?7Uf8a8l= zmDWiU*QuO$gLA(*=Vj}w4PF)3h7IX78~fTW zyS0U(fmnM`>kW=Wt>b35%k?MTED82eBC$(X-^!q!H~sX`^^c^y@vX710&3M*rVjmw zozn|RE!Q*F!Tb_b($gL$zx5l+i6DT_V&e|Co4q4Xarp z3O-<;_hGWN4VF@m3*Sw0zI!a3rUfdm|7QC^Mw_p^M~OMPFx_9}-Zj<7g%6V@;;KZi z$O+vmJ9r;1*t=_z@&tiV$EO-N+@IRV-pGqO(Rjo^O|5*g0d(-bvodNSUD)27o$~Pl zR#yR^0*clNknVnRl?8;2aks{MBH39m=DvDck6c5xGM>-|(f0RV(TA!Pd#9p1fpm59Bq1GSONX9t{u9Ml)fRxx2vO{K7m5AhCImTi#FXG+cle0^d6LUz z^Hb*iqT>&iH{{yyirRHV)-uYw&)3AwFF^eQvw4lhM>T61ggX4wt~QcJ1yVF8UHnGg zt*4|5@gF|Rx7kz@dW32`xU6paCRdD6w?-*byH0uL9QTgB*_O@@wa;@fi+`Kf{HZ4O zvT$7NfVkS@>*k_%ce|tR`Fn&YB{B+EhfvWR+A9n`r$s6GtFPaM~ zlS}}`TF~e`EO4uzfQ)WO@!kP{4bUtJ#_OmlQu(Dj3HNJ+zE1Ny1l1`RDpU-8hIHBe zf8!pibOv8{S}z8%*Ic)bPVjLRe#HmP@UO}x#ib_AibB9F{IU~ez-f+!(hHPR{v;O% z>+}_gz>n_^zTb^%{204+p~^}m{$O=f%0a1;$8hy+-Q?HwB!G!^SA-~2ZyG8DPLa%_ z0s@l)W?Pywkl>@Uvv^>+)=?MCFA<3Iw#zXxapeNswO`|V!ln!_{=1{YYhlsE={C2@ z`B}*~02=*Isg7L!SJ$u|Q4UIrZjdq>nC)I2$BX|BO(i@&wNo zLf-d!Mtqb5FIfECBkox$Hhu-Qi{MVT#xHZAwhp=FnuNZ3PH03-d|C*;Q%7CQ>1m8bi-OPR zJG`ue3uUu&obubsa0o#LaDHjT%EZUX&^4C=kNq>4?1MlTXtKVIf1%PVZVcR$V=%pd zwXsbQWCgrPcV!FDpS&MW2qsh$P~jX`CvM-`k{KIGM?#v9432$ZUS6>xbs({#_Jme6 zSINw|X%+EJ!B?m|kCaqUI|S%*Nwm8&LR-U`{!lc$dR6^O9thD`QRF_|uO_+r&5td? zu@g+6uR5X7GWGh>RaKpuEziNd$S!NUL~Kh0n4Hj#dmF^%-n%-UCW6JcZQN!i)wsRg z@~>H2m&7hCQpQ)f31f5mFyMG69KHnQsFvB~dsm%Mu)!`&2UiFRFX zg)_zZ9Er6Pq@gK0Yql*xnJwY>N^OT=;b9{RSrj=@68b*OHS$w$_3>Je%uyS^T6;eD zfiF4NajD?|m;R@IsbPj2>ECqiA&t#siU(?RUpHu@^ypLnhO*%@a^F&2k5jOIokB2w z%^DIy)!PVwHX8oB!C=$4_z!}`{FxqT&h5ni5a*8=ljvfJ?9vwE1PDN2hJEMLkd5(n zI%9u5VF(Q7^n7#7f|N@*n;~@cS?|jJF`0W4#Efol|1v<-6`%edtcU*^|LER&IAPqG zSiQMP)T|pez{gr^mLG@{2;G0q=S$jkhVBT$$m7Ut&|Smp^Mnq>Ie$Dqn2WnzxXRZW zW@bB|pAF&?4hb9FtHX2FkeWEG<(uB5`ZxA`R!7FI3bW$G^BVj~{l|Xvx2lua`zMtg z+W7rK7zQ}&kF#ci8Tr;dsSUKd@WACk3iDNu!>q<^kHhcKAE}jIIWunA@$_OP70CS4 zDrd~zLfpcX>o=G*3ds`2;KfrI6;s+}{}Uk%7L?*KAtB=;-}OB6m60U%)H$|aN+~yG zDkpUzHzM>EcIRU?H4i)uZi-1%KeXNo+SOy;+`KXv)ngs<`~=^p3#!J z`Mc=l73Masds-|{qn%8jq*%TEWq;Y~^Zl!r7;fCgpE)J*6!v=MjM#*j*tc&YZ|NAA zuO~ftD}CQ2MSC$aQrvAlcw{ta`{b0jtqk?@XoWYt`(H(>?p)amP}XE8QsSUGIX9#;^?x^6>?H=m(JRx^3FG!u6&^6_3vQ!ZiLe2pJR zw7TvJakt8h==r0CmRkK2No}6u)2#VlNUhrJ&I0Z;PfY!8#cj`7)2CDfZRlzjRl9Ix zh0iGwc-EFJh(4ZgR(b7I1V@)H+kLRyGHQKwY^rjfwuEjT_&DQ&C;eOx{4GXmAaxqJ zg5ybA(;UilbI_-Sh{|HKFxR=i8>^~M9c(t@G<`+41RNu+!_l|D@BD3WA- zBzW|xZ`dOi9gk%yNomxRbUej1lN_vLLk#N-pf$PriQ0C7W2Imry48L8GG*x!KNd{` zPB^trTz~fbA;d3PfPrE*JS{bg1?-+t%R;WoONw1(p~`k+S;WbeQ9 zr7rk+ouVqJ3XE8A-L1$cXa#C=rL7m4F;N~Dt+K^R9pdb5Ho&D{)OJ3AS8~YKG!bE8 z6HEg3!-m{v~#YfWDD01;G2r8QW6yJ_@?C6f z>#$0)Fv3Kzl&{YJ>L_Tw1sgfOISt0Vd|P)zeMP1g7sP$^>fIr6;PsTKN>T>kS-ql0QOI1bGgMGn5&aT_W*1`?u_)Os#ldBy%8pJ`N38Jmu&HQ^?Hq zf|-G8A;y2tVsgUveS??{H-Hf*yHR+g_qJQ~j}*+-^-R$;YItz8e36#?UCd z(?c;%8RzT?blv1mnE zTiqp|SGPp=QT@rphU0aW@}M&w;|)SwM{u`yy9y33P>x08od&j^9hScbz``KU*_Yqc zvMc622fwxNc?(C&A|*XOYI2~N+6Vobtl@tvI=M0mM$-sgH!j(YmE|ZQI!glgS2gy^ zw9_uA1D|p9nc?n9<^PUN`F>nvU) z(UWgc{___6ZKL(YZScpf5Y1iVmv}MnsVOJq1o?aLG|jSAXf||zjmG79xM>#7%82-4 zIrihTaRvb>khzaEu*>@zaJ3!#UgmA*DgWy=FVw%CFz(fm4%w%5d{^hXK*ZjnIr(R6 zj6d}K*8_d+i=HN`l|wfqdtVhaODPb&M3bB+E+uyTdK%K3G5iE_bn7}(v7e-ptmY6^ z8gizdLkTvGjmesiaX**=&V~vW60_Bg7IKS7oK4ekpWk^ZjBr9b#p`Ki)mBbv&lEjb zmU=hDjy78`x%K^1l@7dTJ1lk zkWX~n*n*Bs=5tl>^?L)6!N(-{#eQ3PB!n7Zu>XlKPoQIR$A+eiWgq8;N#^c;V@2Ql z-X7LbGUvW>5ga3wRQdspDO_MoEQ=LPD>F0CEm|LL>$Kus^tpMxR#?CCv6~8=fcAq) z`VOXc8y)PLRnk|I>Y?i!u%%4rLIF>4CheMkFUtGmJy9$tYwhwtv&#~~tAv`h=}J!g z#=CoP@Qd5c?N?xDrkDKTG>*`ZZ4^LC8mIwV8_np}SU9i{Ea%C!AD^#oo4T@-KUP`D zfxks|?N*EqXkn?b4zD9jdRi4;n|21iXE?E+ALW2$)_Tni>%~`Da zVp5&?=XI*#qXQ*eC`T^tRpNc)r#GiOh=Ky>wz$;5NL3@R&iS6=BHdwEDRsSwOUgCLnXdZYg{Kr7p zn6sBbIMKui=~@=Q%W__YF>U{t)))HsO(Eq;!K(BCoKK+IHQ?}qYNyoLN`3}B!cu+v zw1l0ND1Qfx@HOZ6e+oZBS`c06c-t`EMUqq4jv*4s- zu-BOyIwQ!khniFtyE=JkGm9~^#V(X1zJ3W^WHsJYRp^(?7bdhvU!r|Gp(}OfTf`S3 ze1ARdSg&BTT(*T-N0`pvMwx7T>Nmb= z?TQ2Pi>|QRkLCGhE9VbFUT-JDX7NH^3&*3Bhl}IHMSgV$N=&mrK!``%oc#S)$u74! zFq|v5Y3MoE1F6U$mD)v#RSOg6)pi_b6B)X@mcNeWiFzTl#(HwyFrFS}Q2WBk%+J(f zGd?va@-lZ?h~;8k2_nCxcKRW%0$#QW@+w{6{t`mlPf}gu4y!&&Iy`N6OzmnNpa~)u zmaNJCJozVO&;r4$y^-62HK=caQ;%zkz3A+lSX1QG67+u&um0@GN`ti*ltL>qNt&xM zpr38p_?zm3SYL^HTx%qu^Cjp2Us{GaOFVy02Mfjbqt<9%KYBZcPX_8a)Xo{|HY^Cg z7~Ax&e+c9Rruj84n9teWx>BeSXajFqYJOYqLz6CMhJ+7{c)hKc?UyAqO}PF_|7JXD z>Tn;}Y549}4~nPuQ8)ApT3$!dc^(9E*p`9f_fM4D29vkP=v9Fs_*a*hhY3B18fYEp zcEBB|SLIuo-(^&DU#@*ElYMOg=xhfF*##2NL4^&>kKeXPd+6SlwEF;|I>hHUC+OP| z4VPv5IXghxm_>797fRY6cHX~4s>qCg)(3;iY)tnVTBkNPSZVBPPXxk-e=VSAp`3wp z>ptj~-T3XC-8*aeG`rqPXjq=lxus-u)2#?pgyPr6cE89~PNTPwyKiiGs{)K=O8n|M zwrd9h3eAj~tCo~^ZhGd)l@X3OD?CnYD062atu?}|?O6~pm}y+4=EWtlyWGEXCClCVZ9j_e24>7Yjw_@yl>^k&1nGhhmAPP=23oZcbF3y zL}xv5!j+H&snQic4eHMnA2b5XiD|Z^FlT_9?Pdd|k<&X-Z^OPo?MBlEYANKIFwh%0 z`58t#fdl`{Px#QBNtNtF+t?7xueEZbWo=L!kz~2L2eD-@d8|(P7*NI$nvq5kqH*#4 zQsAY!p3eNCkiG4>2BF%e)98C_`?ZMK7!D_#&q7ZEkq`*6NVP7Ch`)@?q}Rzm`&Z_^ z1NCQYDf@L^c;4WhtfR_o-dP^x9%Jj$MCzwl;vJxHH6OLyg)^R1A?Ksn3=+11>z4r^Qj zFfb<}aL*9_S87~SI>$eZ{foy8tm2H9&RE&K7nl8Yc2ei>i+-lB823(x{9B1~W31Ig z5sOt0_(Gm0N*Fk+X{{jtID;0c^147Y{4Ds4em@NgPb`AIWcl-UKyG+*%r;&RGbB~K z=v8!4VWam*U+YM0&QaY3MVNDR_pAxq2Gl#q({}1XSGgorgb0bBUaCt6UEh!?Y58SP zKZ#cFpC7C}ckW(*VXUfq%G`KF$#!MI=rJs^!iac*k^8L?)!^GSU&+yC!*c_s0#!4C zCu+7lYo&Q^Wf5cFJ2wSG*_T3_=6h}!At%^H-JBscZt9Zmza1$myA87O3uz&LDy<&4 z?gsZ8T2)07o?4$&9gH_GALf-bV@tp zOuR{T;h6sRma19W_W6H5vLpg42WDK|iUBu~`0**ntfcb8+P|Z;cjg3rn}Eg@#M;to zyI&s;xJGrbigC!Gz6E%@v3IS=_5%4YF;e=qheP5Y;CalCy#4_H0o{z>PgE)&*(prM zm6x0J!21L2tav*%WJx?5-=ByItsVw$(R*Eqne%^6XN z%umc47*Rra^$^|tCD@r(Ke~RmaYnjM+6)dj%1yP;`qZ#$xBtno;$xspyuZ3$`?->e ztGyM58jFQ<=C3-%*VKTylS2;dF7)yg54MANtpg|r4vO1N_Wq6cuPA1hzA;xn>D0=e zeX2#H`=I)mEXyb6GCP@&ff`}+|tY1!Y-9;u7be{ASygc#D5P-7h$r&;iQqsYV5J!#2!$=3 zHaf8>K5!G!+#ILu&CigZ=UWq76#7d$e6G1IF#UO4KyVUmb$V1YBmD7~(%27qYoSP) z;|=i~Zk;<7l6O#$$5H?G9ZtnN%P;!Fv4o!@QCWlYZ0xxi>hoQxKzpQOkt|(wwVDY1 z?P$Abwp|5ZyfF5q6&?avO~r2`cbPKFf%g4 zv}%9?*Hs!b`0+vHTtc%ozJ*u``=Eu$HX8bi8W|k}ml<<;*_b!Uw;sTtae5G|?u&BX zR-)W@MyT=|c@}f!fmNP|sTi??J0U&fy3KA>)(rY+WN1=jwdSw=>0)$qBjDY?{w!K$7QbPI(N#_1<<8A9g7{lcs{ zZI>11bq4)qv#ay#?a!^Z=`Jay2h3MQ^*W#)*!DQoV$|8P5{9>|ry2OQfH3A?@>vno z#pu3O(A$MX!ilPE;q070<)fVNW6iw_DP4kvW}{wzk2Bvt34Vh592ukB0Xy<2vUqG@ z_~n;Q_NjmEsWda#J&Ubtatiaca!8=7b4sxYU!9p%(FE)dDr-st%_pp6>2D7Bp`!P^ z#s{Viw(rH2qzwd1YVISaH-B87fkNvEmD-*mk{;)3r#8_>x3Rp@lRv+W;r!o5P>Bu` zOE*gSj&q{EQ05nS{8ERJu8)%;C%^tCXVc^NTEEjMT_xm-_}4OT+bb6<>*Qvi#Cd10 zB5#eQoP5`tJ1xd`<%#&uOI_Skl6UMd9Kh)CPv+}PtY=5K{3>=a#)rG^3Yt_qZ9P{W zy{zdouU67>K6U2H!1Z98dU4w=*XgOmr+ZVV9%M=Q-S-n_zZX!N?1VQtP4C-8f1XuY zXQ89JxbZ+o+eEYBfOZ0!D{5;<*mnX$pZ=+Y_Uz6$fu*u0i@}+gN|DFx6_e6xr?W08 z{;_SVx(t(8tNs9-n?e1Le;WrIn`pa)#P1#fK1bf9 z60YhW2Qq<=9HUqpKHFYEA7%D`S|Pp)U)@bgoIAZ@zWIK=ZcajL8pFGtJt1mkh!f=< zYfp9UgL-l@SudMg1TQIx-~1HQ^q8Q3$~9S^i}{1$M5lO3C8848s;vBw=gOj(zMMV6 zw#Iw4A1n_vLmM!!LEFFHoIWl9DVH<>S&LhV;O5=%)w$UijJWE2Ko7?I;L*`}Fu ztnELnX^`~`ST{nR#IoaWY^W0QvIY|sL(hv9oPA<{igA{l7B%LeUpcAMar7|Og76;u zZ-bxkX^|}RZ1#%ItzSQt_JN7luSRI>t=hI9Oj(%bF&mq0G&TzLVD=r{RF=K7Xr5Tb zo^yHXt`q#4s8YW5btj^eUX0aR z>k2xKN1gNB!KjX;Jo#By0C=avA}_Dac*D?&=V0jF!rP71RZ|z!iSV&=h=pH2iwB6O z_O5T#T4{&|Y&C416K^f54-43pFt^8uN2;;e#ev+KmubwHrMd2taYQ$wS1F&wxRD&N zlC*xEPVH2;Y|CVVe!{k+f*$Z8yB&0X$+J?)4k`Hrj4qAuR)~7U>N(t!0Xks)n9TwE*?Gq;q0Q>7iASUKT5ww@cg;*77)?6C;=Jz6_#y`aVM zl`f0@QS!TWm5yyn3g7S__3`72lb!!tn{}^|<+cMmrDZp0>YN}>%{5$!87i@ay45w1 zMU$!YGN545tDD6E#4cLSoFc7f^X!l6X+5?{o~u6oGXd#Zc>|CC`*J+vpxNPEJeSVF6p{Un~i@EqxDieeGb>(}cO<KE>3o2(+BqwmIOl{>L1(%P zVy$c!?FD9fb+dt9y@z_Deq&GNYxQx&V!59Mu)`z%-$VUZ_B{0qgdEs-f8=Xn8wXT1{q9`%>m?B#49B zh3**7Y!oUvq5L8RQI1;&2$5*Fms6Sey+wax9~2pzn|_fHvY&T(ZA4> zu|$Q$7+W)za;6h9VUUTTkkgDANzvFNo#*o%=RCjb`TguOdB0!xji$g) z3-SjBc-Aq7A?hI+dLLRt@Xt*T6(613Go0E?mg(Ey?k)0DmNqbNJSwu-GW4Cl66E?sJKQ{TpYl{=h^(@GmOS?GIAN@Y%>)un$>)Qd{py$U7}4uN+FqER z0gTlmM_z}pa~}0+K2#`b``_R1Ml5OJ&^v2>zZSOB@(M2CFgJS83q2u~E}KL?94>W) z@ER>H!q|my9L}`7VVqL4^uv0bj&uGU-|0+Xtm8a0k1>_8Cgba`P;_#796#yXdD7iW zhWxy^wBJ*#YT0Lf^ufMysWWye?tgoC}cCZEqz)w}@KkP0i4*ijSl=kEu*UB08` zon$%LGMpcQd>#G`74gV9zs_uB)a-3n(Y4kq;>^a)#KJlWhpJVvK73 z5p2&jf0piiVOtWAQNAHq0!nGz`UM+K{JhP55QVn+VB0N9psnTm#%C6-+b<$=c`I?IDe4_AN}i19s+%HNzl+9XCw%Ee(f|gTu)4O& zBp0GI$hPQm+ZN`g$4#18!Z_8Xu~xeg+_h1x-3@tghc(YMf~sm1z$DMHAe|2Stiim* z&lH)(M_T=u3b?0q$3lDVr@nz_*{lRq?!e%uGmC2;vJ})2R=oKuKilx)=muc7_TQx^ zq!M0bEv|f%5wa2WKV`!@-l>-o!nUW_9JiN%Dq+ebNPA$xH28a?c}jLL`U3xKaR`qw zkR92pr3-L~=Nx#La8^zgVH4Io{kmuHN@3Q@(35S_YH_!JKWLVgKL6;LUbDtf7^%rgn*fW> zkj^bDT4Pq$Qav^W6ixrUNX|ngo=>3Ly&$2jyT8v|Cnq@tR1`5b|3$+dMh@@CT9hK- zH_D5prY1GKh8w(E<1UcV@%x)ORQ^#$gj*Vj#Ft3(AWr`t+LFw1VK>aP7ZD{FL8~sO z$o3Ut@X|a5vBsREUyvbM>ArNmb~Y>U`*$LS*c zrROGQ?g4uD$xN{?8K|~%W3I_qsvHSrwR)V|px?IQTA3aDpGacPHR&cuCDNe5Z7=+{ z52nQ!aTtT8+T_l7etk#A<`H&(4?^4vz3(^F*#}T3%VRZUIgeRx$f}6)%#}Oifz(0? z67b=Vr=ynPuteJ^C-T6<0Pt!pY5b)@JZ9!2G0t#O-={P8wbV^T zU|#XxT{{Yx7wsr}H^MgMnWAON0NV3M#=LgN1+tbQQHt2eJJcP^?LI0K4+jWWMN-n9 zq91)SS?;^cpIf5&yT^=99H= zI_AMenH37<`_8rX28ailD?LD@nw6E+>4&;BMkwvE4q-om)2isO6yRj$#44ACaK<8B>lM!d+_%D9GqAq3k|XXa$0!kgwyzk8_7p{ z$pNM!50yu1sL7chLxRk!Gi#CN5P#IF8-}Ltrd1s5V0H6ABX!KF6UpiB{LWI`l;f~>YgdZxkP z-6QCyTwq=_CrCVye*f5MXp!4}t)*2KNiK4~Xp@luVYQx2KEpINk`U0KK$tjFi_Y^6 zJ6yf`uCHb1lIxygVk17_dGbxB%gF`ugLc@?&b!_BW@&0CHTjzZaD@S&gzh(`hq~lT zkie6fgGxQ$`%!}|X0ZNOL!n(UzuoB^Q~=yk2LA-h1NV?SkQ=$2k>L7Wx1*ni@} zO5L(V*{`8+;+HDuUVz34{MG)45K7bF{q3AqQ#GMwQWMaD1oZ{!+^;5I42$UTsf27$ zGLk28U=0B1MCnkdz38mJdnVyQ!esO`3TfOC-Vz^n8YSQwAOOHTWowZF_1%T>A7aT9 zuxSa|SBr#qe&S$e!8#*Xuh|m~8k6S?W9cewjd`q8W|5GR^vp!botGLl$i<;g47A;j zp<|mBSrO75ztJH`>l_vqDqN^}GCquLkOf*sb@9q=8M<$GOQ!NmJwzb554A;*1i=rv zzJXdM>Fp17yc?3AzQuflVz>{L8=#ligT;A+u%{PP7>VZPg-?7#Cn4;sK`ng@5|71+ z?HR~#NkX|ta*4kh6yYa%_kH7Z3x$bywyJ(2uEARrqE6nZK;$9=;j(wZd+Uf)p`9X~ zH8=etUlVV}03=y|d_9)m4M{!s0p( zXcR#K%s1B#(#rkwNzxt`<+HMgaPvV!J#@cOrUEHn0aR(=($p^eA2o5~4XV+#4UJfD zaX}7SVW=-lmB-3f8wyrVj+2N{uf&3H7*9o3LE%1W2- zv3dPrU(eBo^K5{2?Q++DIty7>Jy3Cxy&#>dI=0Sv^B!4jv{7e_LN6xGHYZfHvDGP+ zkw7;bJi^}|{mRcw!mPvhNItsPc~}oBpc7Xkq<}cWXikNrq^NfG4V>Dy;E2Y(U-7c1 zq-3t%lHqiXSsxSaztxj@&P&7reRBr;K&<3ATdj~t&l}CBL$1gGl{cv%Hq7>OgdnaP zb1Yn|@W+qgl=`lbXFC` zK+mH_L1kj`&ynz#q>(Rim5d?P)<{WQ<{fs2li zW^t7suoQf)Ve@JjKhJkd19Np0nE}Trr}Zor^Vy|!%RQnaQRdnyAKU$TJs#AFUtBBG zUHF%50bg!^>gL%xci_P`=L1OvHW$wkyxEEfJ|L)tvp*kV#Cs4{Wqpw@cd_{n?)vwW>%F^;Hfr!+BpV7$WKJAqP`Wc+s}l z=)vM#)!e~)(=Ft%USOow4EDT6P-hEhe_<$td62-Biy5f3&rfAG*bDEhCf{O6H_SB( z+^A{2L$-1Q|F)iGnY5ny27j1EvCUZA1`+y1A{7&hrT23FC=w<{g{}flAy9| zlqpu?#SUgj%$sZ`t0u1hCkfzaY_rIl4QpIB&cBQizn}AVO5Vvgdv)7g^^w%Rv?>3z zsSPOR+pk91T{M8%u7o7-RP~y2hlai5)JMl!!J}^(VqGa=6;W4Lyly1=3r{;vz>N$w z$2YmeDK?zA-F6KuZ{a+o_@H<+$`K4@=HD$1ip9v+K(rs=7SqJjA#eOm7JG`@b1+&J z$+t?ryHdJ8=K|n$;e?!MqkA$VHV4eE zn9H=tL%djGK#Nol!Wn*cq_W4nd_+Ndx+>6Y^H6IDEirP(+JCDn)d?Bqe6W@UU<&U6 zfhnkSO!LKjJyt>Q1QtTGziUBjNSAtM&H1~`@y_}&m0`V1MuiyA-(S==QqR0%aF=;C zYOh@jvk{j-YmUUXVkB4x8^mflAQ*q9R(He@09GAe|p(k%iiS6i#r}=iw6IF_~x&_ zPqZfGZQC+v?lq?oo$)GbLkeq$cP0cFY4$%dE|~1fRiwkQiOS0@rmk4HXRKnt2f0KR zo!J5lDkLd@U;&v3$GW2THC0n`E-Lg9z+atEL=5W2CaF*RZec|zA=l;1g38iwM$|L= zX#CQ~C7FF$+2~f`JR9DoES+u-DC(#2u;{lyBZ8L5qODe)7TCC&NGbcMJ|hQ38SlWJ zpwP+Z$I9U3%!qmh4osJfd*NwS^vzhpLeqjpV|zzf=1t==qf>lWGFJ3DjnY9CD+ghQ zei!=wbK;iSPdguIJlU0yaq1)?uDp389ldejKj3tXUa$u_^q9NYtm74b-i)us(ly=v z1n5}HoDJFPwI?wd0S(D#C~|)Yv@aBBD5-Iv)m^Xulj=Itve5#MNTYX>^7;BfuAdK@ zcx(<{r!_!A+P!DV5{Dv@N7v*iOt}2r;siiQpvhk0DatK+QYSP#9XkQSX8Z*&o zNX;>pBJL#VRXZk3mBzbOW&kfx9MHv z${dB_6QmQ(X?{@7=|gE#)lJp2K+>RA32nHP?f-YS+!q)*ij^MM15Fp`6QCY=0@=PS zXUN*EChis(wk+&&!1nmZIX~5VExd@)9iP7)2nSf;Y*0X8XZ0YarE0u(LMtzvqna2; ze{gzTp+peoqKzcjzg-ht`-GaMGpS?Bt;kh%cNi^C>J(|V;E-Hx)^W>uNa zwzgelhjILeir^MI((`RZl}pdO9ougk>;ac6@fpa&s&4WE9i{SML%>h#+FdWK0A?<< zr0gI0INH8km3@?eO00tWcCLD8Xm(VCpKhG{2lauDxLeKO^xO*jYl9zIPf0oGL(Rw*G|MeMeW!*~FCWm>^v-Dp2Qb<>Fkhw$g#et47%I%6!~Zs3Wxz*}uod^9 zbd1N~zHWtOBRWW_^NILN7GCHS`*DK(&h5-?&(R-JVBwh{+JNWS0WL8wfK6)STbpx7?K94%Q6*6*=ZEl+>iSrtxG-^72KzhT~PcZVphP zDYT(`3UR=+WM~v=P6>t|9-m-m{uQ4ab{gvO{H4P1-47G(NUhdkI@NGa%F396yJI5U z$b~p{6rdgINia;yQG*Isb+M@w)%xe-tsK96bVd5U=-EkkA?Z`G4#WGHT+>8I6?Sy% ziI@CN5r~5S(z=orM(!|C=QIeik|TeZ@GMB_M*;m|3d9N5E4yKt@v}WLIRD7dfg#_v z7K_At@BHZ)pCfX$Gg`+_KheD>HGb}mu9(uuU!CYb#q3&IGb)?F(Volr_Ad?OGo7NW zz5U*(CEkY~1CrvWrvkENAkjGePsp7GF=qdFDb+-&V2BN-F|}z&3}$6ZEkOHYO_h{D z<&xTf7WEA?)dm^k_ky2bASBf(q6?&<%GSyV>4sCJq*YhTkL}@uz`He+vO2o+|1C0M z-oV@cSDg$~JOvX8_ds5O-vawLx16vfx>x-P+IoDQ!QR%G-!RBFD7;SO`0ndYkk! zZKxrfM|rRsDVkA=!JoZtdLV7R;$>Mui`|XV=NQ_d07W7Mobldid zYH?rd!()cEC>Mh`HGx!-sWU^ox20jKxl`TpVNJxa1r$VvblPVCBmO~C zzkKDCvF=44sdKzBg-XGUx(xju!;ZOi)RyKk zV;)HCla^Y5_#(@_IDW+!A7}gSMx6;2PRTea1;#-Ne?|i+^e=g}!`@-zAYzt`M2|JS zL8b-m={uP=x2Y0>cJ@a=FEVCzeas1S#~}4XV+Y)DsInBUZnVBkEi0z4jLm3=%K+5eL!e)wN&zK9ITFi|5z|wr4#Y>vbR>tgP4Zcx( zi%vcB&-8~1w!r{+*y=#jBybah&Cvyv1DB(gUS&z=M3caZm2|>QlX`|?uTVbL$oFtb;{8VqG3! z5-b>G8b5?{@9tr#m3!2{o1H;03|s;A>0giuC%a`r% z_S;mK<5c*{|L+edh|P5Y38qNYdb!Xgm)n4sinKK-pgGVE4;W2F)H^^m(Y;&sCa-x$ zvfomBJqy78xo(=7u>XM%4Zb;CFZ0lVKuxzAQmbq(Z88U9oYw&w z$5?R-H({r_9H+rb1-H4eaIZA~k%M|1)8d#Vm{%Q?jA9j}h-=LHfdTa#&=SVZ z?FnmOVzvP1TA8rj!Q73>O&mK1BRqw#ZgULWzKo)y^4@Ox+`a2@ar8h&sPLhxn^oH= z{g>5pTU4{K_rM6`KRean*Hz3)`aCwQ^-%tbgJ)hMdo)~YP%CAf5f3^^I@0wM^%+3w z0yh36OA-tvcm&(}p3u_l!@vVh77D$V9En(ne~JJyZ3@5b!C@s9CE<_~xmr)H`rF@< Y!RBn|z+;l5Lg2&pwBxDjlRk0(1K`z}W&i*H literal 0 HcmV?d00001 diff --git a/demos/react-supabase-todolist-sync-streams/public/icons/icon-384x384.png b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx new file mode 100644 index 000000000..4cb0e84fb --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx new file mode 100644 index 000000000..7a488792f --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/page.tsx new file mode 100644 index 000000000..edb168a2b --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/navigation/NavigationPage.tsx b/demos/react-supabase-todolist-sync-streams/src/components/navigation/NavigationPage.tsx new file mode 100644 index 000000000..ac0cc3072 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/navigation/NavigationPanelContext.tsx b/demos/react-supabase-todolist-sync-streams/src/components/navigation/NavigationPanelContext.tsx new file mode 100644 index 000000000..4745475d3 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/providers/SystemProvider.tsx b/demos/react-supabase-todolist-sync-streams/src/components/providers/SystemProvider.tsx new file mode 100644 index 000000000..8a3f3c209 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/src/components/providers/SystemProvider.tsx @@ -0,0 +1,97 @@ +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 } from '@powersync/web'; +import React, { Suspense } from 'react'; +import { NavigationPanelContextProvider } from '../navigation/NavigationPanelContext'; + +const SupabaseContext = React.createContext(null); +export const useSupabase = () => React.useContext(SupabaseContext); + +export const db = new PowerSyncDatabase({ + schema: AppSchema, + database: { + dbFilename: 'example.db' + } +}); + +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); + } + }); + + 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/demos/react-supabase-todolist-sync-streams/src/components/providers/ThemeProviderContainer.tsx b/demos/react-supabase-todolist-sync-streams/src/components/providers/ThemeProviderContainer.tsx new file mode 100644 index 000000000..9b9c1d61f --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/widgets/GuardBySync.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/GuardBySync.tsx new file mode 100644 index 000000000..57907eb3b --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/widgets/ListItemWidget.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/ListItemWidget.tsx new file mode 100644 index 000000000..e2ac183ef --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/widgets/LoginDetailsWidget.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/LoginDetailsWidget.tsx new file mode 100644 index 000000000..bf2f72c79 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/widgets/SearchBarWidget.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/SearchBarWidget.tsx new file mode 100644 index 000000000..de2f94727 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoItemWidget.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoItemWidget.tsx new file mode 100644 index 000000000..d44418c4a --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx new file mode 100644 index 000000000..eb202789f --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx @@ -0,0 +1,37 @@ +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) => { + return ( + + ); + })} + + ); +} diff --git a/demos/react-supabase-todolist-sync-streams/src/index.html b/demos/react-supabase-todolist-sync-streams/src/index.html new file mode 100644 index 000000000..d719dfd50 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/src/index.html @@ -0,0 +1,12 @@ + + + + + + + + + +
+ + diff --git a/demos/react-supabase-todolist-sync-streams/src/library/powersync/AppSchema.ts b/demos/react-supabase-todolist-sync-streams/src/library/powersync/AppSchema.ts new file mode 100644 index 000000000..b2d12ebae --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/library/powersync/SupabaseConnector.ts b/demos/react-supabase-todolist-sync-streams/src/library/powersync/SupabaseConnector.ts new file mode 100644 index 000000000..07472b7e0 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/src/library/powersync/SupabaseConnector.ts @@ -0,0 +1,170 @@ +import { + AbstractPowerSyncDatabase, + BaseObserver, + CrudEntry, + PowerSyncBackendConnector, + UpdateType, + type PowerSyncCredentials +} from '@powersync/web'; + +import { Session, SupabaseClient, createClient } from '@supabase/supabase-js'; + +export type SupabaseConfig = { + supabaseUrl: string; + supabaseAnonKey: string; + powersyncUrl: string; +}; + +/// Postgres Response codes that we cannot recover from by retrying. +const FATAL_RESPONSE_CODES = [ + // Class 22 — Data Exception + // Examples include data type mismatch. + new RegExp('^22...$'), + // Class 23 — Integrity Constraint Violation. + // Examples include NOT NULL, FOREIGN KEY and UNIQUE violations. + new RegExp('^23...$'), + // INSUFFICIENT PRIVILEGE - typically a row-level security violation + new RegExp('^42501$') +]; + +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; + } + + let lastOp: CrudEntry | null = null; + try { + // Note: If transactional consistency is important, use database functions + // or edge functions to process the entire transaction in a single call. + for (const op of transaction.crud) { + lastOp = op; + const table = this.client.from(op.table); + let result: any; + switch (op.op) { + case UpdateType.PUT: + const record = { ...op.opData, id: op.id }; + result = await table.upsert(record); + break; + case UpdateType.PATCH: + result = await table.update(op.opData).eq('id', op.id); + break; + case UpdateType.DELETE: + result = await table.delete().eq('id', op.id); + break; + } + + if (result.error) { + console.error(result.error); + result.error.message = `Could not update Supabase. Received error: ${result.error.message}`; + throw result.error; + } + } + + await transaction.complete(); + } catch (ex: any) { + console.debug(ex); + if (typeof ex.code == 'string' && FATAL_RESPONSE_CODES.some((regex) => regex.test(ex.code))) { + /** + * Instead of blocking the queue with these errors, + * discard the (rest of the) transaction. + * + * Note that these errors typically indicate a bug in the application. + * If protecting against data loss is important, save the failing records + * elsewhere instead of discarding, and/or notify the user. + */ + console.error('Data upload error - discarding:', lastOp, ex); + await transaction.complete(); + } else { + // Error may be retryable - e.g. network error or temporary server error. + // Throwing an error here causes this call to be retried after a delay. + throw ex; + } + } + } + + updateSession(session: Session | null) { + this.currentSession = session; + if (!session) { + return; + } + this.iterateListeners((cb) => cb.sessionStarted?.(session)); + } +} diff --git a/demos/react-supabase-todolist-sync-streams/src/library/powersync/vite-env.d.ts b/demos/react-supabase-todolist-sync-streams/src/library/powersync/vite-env.d.ts new file mode 100644 index 000000000..e3e71b5ba --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/tsconfig.json b/demos/react-supabase-todolist-sync-streams/tsconfig.json new file mode 100644 index 000000000..744ba768e --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/tsconfig.json @@ -0,0 +1,26 @@ +{ + "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"], + "references": [ + { + "path": "../../packages/web" + } + ] +} diff --git a/demos/react-supabase-todolist-sync-streams/vite.config.mts b/demos/react-supabase-todolist-sync-streams/vite.config.mts new file mode 100644 index 000000000..ab0b7d202 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/vite.config.mts @@ -0,0 +1,74 @@ +import wasm from 'vite-plugin-wasm'; +import topLevelAwait from 'vite-plugin-top-level-await'; +import { fileURLToPath, URL } from 'url'; + +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +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)) }] + }, + 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: ['@journeyapps/wa-sqlite', '@powersync/web'], + include: [] + }, + plugins: [ + wasm(), + topLevelAwait(), + 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', + plugins: () => [wasm(), topLevelAwait()] + } +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4166c4365..f3eed9cc8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: 12.1.4(rollup@4.14.3)(tslib@2.8.1)(typescript@5.9.2) '@vitest/browser': specifier: ^3.2.4 - version: 3.2.4(playwright@1.52.0)(vite@6.3.5(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vitest@3.2.4) + version: 3.2.4(playwright@1.52.0)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vitest@3.2.4) husky: specifier: ^9.0.11 version: 9.1.7 @@ -113,10 +113,10 @@ importers: devDependencies: '@angular-builders/custom-webpack': specifier: ^19.0.0 - version: 19.0.1(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17)(tsx@4.19.4)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0) + version: 19.0.1(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(tsx@4.19.4)(typescript@5.5.4)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0) '@angular-devkit/build-angular': specifier: ^19.2.5 - version: 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17)(tsx@4.19.4)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0) + version: 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(tsx@4.19.4)(typescript@5.5.4)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0) '@angular/cli': specifier: ^19.2.5 version: 19.2.14(@types/node@22.15.29)(chokidar@4.0.3) @@ -143,7 +143,7 @@ importers: version: 4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) '@expo/vector-icons': specifier: ^14.0.0 - version: 14.1.0(wm3bvfp4qcetscjld4hplpimri) + version: 14.1.0(a6850416216e8b64df60af23d5183c0b) '@journeyapps/react-native-quick-sqlite': specifier: ^2.4.9 version: 2.4.9(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -164,7 +164,7 @@ importers: version: 0.1.11(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@react-navigation/drawer': specifier: ^7.1.1 - version: 7.4.1(j6abyuabi5plzpedpvxbnwhrsi) + version: 7.4.1(1d85788bd68a0e12619f848d71cbac62) '@react-navigation/native': specifier: ^7.0.14 version: 7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -188,7 +188,7 @@ importers: version: 2.1.10 expo-router: specifier: 4.0.21 - version: 4.0.21(xdzi7taj2dri7edfzwov6a63va) + version: 4.0.21(e063c8109134fcdd1c97e4d6a4caf625) expo-splash-screen: specifier: ~0.29.22 version: 0.29.24(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)) @@ -236,7 +236,7 @@ importers: version: 10.2.0 react-navigation-stack: specifier: ^2.10.4 - version: 2.10.4(4a23q4g4mav7ddr6jlhxnyzzo4) + version: 2.10.4(1b7f2cbbd098c1646b3c5f57acc57915) typed-async-storage: specifier: ^3.1.2 version: 3.1.2 @@ -568,10 +568,10 @@ importers: version: 10.4.21(postcss@8.5.4) babel-loader: specifier: ^9.1.3 - version: 9.2.1(@babel/core@7.26.10)(webpack@5.99.9) + version: 9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) css-loader: specifier: ^6.11.0 - version: 6.11.0(@rspack/core@1.3.13)(webpack@5.99.9) + version: 6.11.0(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) eslint: specifier: ^8.57.0 version: 8.57.1 @@ -586,13 +586,13 @@ importers: version: 1.89.1 sass-loader: specifier: ^13.3.3 - version: 13.3.3(sass@1.89.1)(webpack@5.99.9) + version: 13.3.3(sass@1.89.1)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) style-loader: specifier: ^3.3.4 - version: 3.3.4(webpack@5.99.9) + version: 3.3.4(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) tailwindcss: specifier: ^3.4.3 - version: 3.4.17(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + version: 3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/node@20.17.57)(typescript@5.9.2)) demos/example-node: dependencies: @@ -659,10 +659,10 @@ importers: devDependencies: '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4(webpack@5.99.9)) + version: 5.28.5(webpack-cli@5.1.4) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.3(@rspack/core@1.3.13)(webpack@5.99.9(webpack-cli@5.1.4)) + version: 5.6.3(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9) serve: specifier: ^14.2.1 version: 14.2.4 @@ -747,7 +747,7 @@ importers: version: 0.19.8(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) vite-plugin-top-level-await: specifier: ^1.4.1 - version: 1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + version: 1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) vite-plugin-wasm: specifier: ^3.3.0 version: 3.4.1(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) @@ -805,7 +805,7 @@ importers: version: 0.77.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10)) '@react-native/eslint-config': specifier: 0.77.0 - version: 0.77.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(prettier@3.5.3)(typescript@5.9.2) + version: 0.77.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)))(prettier@3.5.3)(typescript@5.9.2) '@react-native/metro-config': specifier: 0.77.0 version: 0.77.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10)) @@ -889,7 +889,7 @@ importers: version: 7.0.5(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) expo-router: specifier: 4.0.21 - version: 4.0.21(cpo3xaw6yrjernjvkkkt7bisia) + version: 4.0.21(b0bddf53ba1689b30337428eee4dc275) expo-splash-screen: specifier: ~0.29.22 version: 0.29.24(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)) @@ -962,7 +962,7 @@ importers: version: 1.0.2 '@expo/vector-icons': specifier: ^14.0.3 - version: 14.1.0(wm3bvfp4qcetscjld4hplpimri) + version: 14.1.0(a6850416216e8b64df60af23d5183c0b) '@journeyapps/react-native-quick-sqlite': specifier: ^2.4.9 version: 2.4.9(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -983,7 +983,7 @@ importers: version: 0.1.11(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@react-navigation/drawer': specifier: ^7.1.1 - version: 7.4.1(j6abyuabi5plzpedpvxbnwhrsi) + version: 7.4.1(1d85788bd68a0e12619f848d71cbac62) '@react-navigation/native': specifier: ^7.0.14 version: 7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -1007,7 +1007,7 @@ importers: version: 0.13.3(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)) expo-camera: specifier: ~16.0.18 - version: 16.0.18(hml277kvlorqbj6gijmq6joh24) + version: 16.0.18(55c6da9df988ca7f1678935d82e9238e) expo-constants: specifier: ~17.0.8 version: 17.0.8(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) @@ -1022,7 +1022,7 @@ importers: version: 7.0.5(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) expo-router: specifier: 4.0.21 - version: 4.0.21(xdzi7taj2dri7edfzwov6a63va) + version: 4.0.21(e063c8109134fcdd1c97e4d6a4caf625) expo-secure-store: specifier: ~14.0.1 version: 14.0.1(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)) @@ -1064,7 +1064,7 @@ importers: version: 4.4.0(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) react-navigation-stack: specifier: ^2.10.4 - version: 2.10.4(4a23q4g4mav7ddr6jlhxnyzzo4) + version: 2.10.4(1b7f2cbbd098c1646b3c5f57acc57915) devDependencies: '@babel/core': specifier: ^7.26.10 @@ -1101,7 +1101,7 @@ importers: version: 4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) '@expo/vector-icons': specifier: ^14.0.2 - version: 14.1.0(wm3bvfp4qcetscjld4hplpimri) + version: 14.1.0(a6850416216e8b64df60af23d5183c0b) '@journeyapps/react-native-quick-sqlite': specifier: ^2.4.9 version: 2.4.9(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -1128,7 +1128,7 @@ importers: version: 7.3.14(@react-navigation/native@7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native-screens@4.4.0(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@react-navigation/drawer': specifier: ^7.1.1 - version: 7.4.1(j6abyuabi5plzpedpvxbnwhrsi) + version: 7.4.1(1d85788bd68a0e12619f848d71cbac62) '@react-navigation/native': specifier: ^7.0.14 version: 7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -1149,7 +1149,7 @@ importers: version: 14.0.3(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) expo-camera: specifier: ~16.0.18 - version: 16.0.18(hml277kvlorqbj6gijmq6joh24) + version: 16.0.18(55c6da9df988ca7f1678935d82e9238e) expo-constants: specifier: ~17.0.5 version: 17.0.8(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) @@ -1167,7 +1167,7 @@ importers: version: 7.0.5(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) expo-router: specifier: 4.0.21 - version: 4.0.21(xdzi7taj2dri7edfzwov6a63va) + version: 4.0.21(e063c8109134fcdd1c97e4d6a4caf625) expo-secure-store: specifier: ^14.0.1 version: 14.0.1(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)) @@ -1182,7 +1182,7 @@ importers: version: 0.2.2(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)) expo-system-ui: specifier: ~4.0.8 - version: 4.0.9(l76mjoke3yk4s56nokhxoxxpou) + version: 4.0.9(fa4ab2ddb2d13a20299c682fc53644db) expo-web-browser: specifier: ~14.0.2 version: 14.0.2(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) @@ -1240,10 +1240,10 @@ importers: version: 18.3.1 jest: specifier: ^29.2.1 - version: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + version: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) jest-expo: specifier: ~52.0.3 - version: 52.0.6(hjrfme3xxu7xcbl6wzt3m2hgh4) + version: 52.0.6(3635c191458c5fa90af52243d15b5fda) react-test-renderer: specifier: 18.3.1 version: 18.3.1(react@18.3.1) @@ -1421,6 +1421,91 @@ importers: specifier: ^3.3.0 version: 3.4.1(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + demos/react-supabase-todolist-sync-streams: + dependencies: + '@emotion/react': + specifier: 11.11.4 + version: 11.11.4(@types/react@18.3.23)(react@18.3.1) + '@emotion/styled': + specifier: 11.11.5 + version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1) + '@journeyapps/wa-sqlite': + specifier: ^1.3.1 + version: 1.3.1 + '@mui/icons-material': + specifier: ^5.15.12 + version: 5.17.1(@mui/material@5.17.1(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.23)(react@18.3.1) + '@mui/material': + specifier: ^5.15.12 + version: 5.17.1(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(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.17.1(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.17.1(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@powersync/react': + specifier: workspace:* + version: link:../../packages/react + '@powersync/web': + specifier: workspace:* + version: link:../../packages/web + '@supabase/supabase-js': + specifier: ^2.39.7 + version: 2.49.9 + formik: + specifier: ^2.4.6 + version: 2.4.6(react@18.3.1) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + 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.1(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.17 + '@types/node': + specifier: ^20.11.25 + version: 20.17.57 + '@types/react': + specifier: ^18.2.64 + version: 18.3.23 + '@types/react-dom': + specifier: ^18.2.21 + version: 18.3.6(@types/react@18.3.23) + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.5.0(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + autoprefixer: + specifier: ^10.4.18 + version: 10.4.21(postcss@8.5.4) + babel-loader: + specifier: ^9.1.3 + version: 9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.6.13)) + typescript: + specifier: ^5.4.2 + version: 5.9.2 + vite: + specifier: ^5.1.5 + version: 5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) + vite-plugin-pwa: + specifier: ^0.19.2 + version: 0.19.8(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) + vite-plugin-top-level-await: + specifier: ^1.4.1 + version: 1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + vite-plugin-wasm: + specifier: ^3.3.0 + version: 3.4.1(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + demos/vue-supabase-todolist: dependencies: '@mdi/font': @@ -1471,7 +1556,7 @@ importers: version: 1.3.1(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(@babel/parser@7.27.4)(rollup@4.41.1)(vue@3.4.21(typescript@5.9.2)) + version: 0.26.0(@babel/parser@7.27.4)(rollup@2.79.2)(vue@3.4.21(typescript@5.9.2)) vite: specifier: ^5.2.0 version: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) @@ -1480,7 +1565,7 @@ importers: version: 0.19.8(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) vite-plugin-top-level-await: specifier: ^1.4.1 - version: 1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + version: 1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) vite-plugin-vuetify: specifier: ^2.0.3 version: 2.1.1(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8) @@ -1604,10 +1689,10 @@ importers: dependencies: '@docusaurus/core': specifier: ^3.7.0 - version: 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + version: 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/preset-classic': specifier: ^3.7.0 - version: 3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + version: 3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) '@mdx-js/react': specifier: ^3.1.0 version: 3.1.0(@types/react@19.1.6)(react@18.3.1) @@ -1626,19 +1711,19 @@ importers: devDependencies: '@docusaurus/faster': specifier: ^3.7.0 - version: 3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13) '@docusaurus/module-type-aliases': specifier: ^3.7.0 - version: 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/theme-classic': specifier: ^3.7.0 - version: 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + version: 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/tsconfig': specifier: 3.7.0 version: 3.7.0 '@docusaurus/types': specifier: 3.7.0 - version: 3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/node': specifier: ^20.17.12 version: 20.17.57 @@ -1776,7 +1861,7 @@ importers: version: 20.17.57 drizzle-orm: specifier: ^0.35.2 - version: 0.35.3(@libsql/client-wasm@0.15.8)(@op-engineering/op-sqlite@14.0.2(react@19.0.0))(@types/react@19.1.6)(@types/sql.js@1.4.9)(kysely@0.28.2)(react@19.0.0)(sql.js@1.13.0) + version: 0.35.3(@libsql/client-wasm@0.15.8)(@op-engineering/op-sqlite@14.0.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli-server-api@15.1.3)(@types/react@19.1.6)(react@19.0.0))(react@19.0.0))(@types/react@19.1.6)(@types/sql.js@1.4.9)(kysely@0.28.2)(react@19.0.0)(sql.js@1.13.0) vite: specifier: ^6.1.0 version: 6.3.5(@types/node@20.17.57)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0) @@ -1844,7 +1929,7 @@ importers: version: 1.4.2 drizzle-orm: specifier: ^0.35.2 - version: 0.35.3(@libsql/client-wasm@0.15.8)(@op-engineering/op-sqlite@14.0.2(react@19.0.0))(@types/react@19.1.6)(@types/sql.js@1.4.9)(kysely@0.28.2)(react@19.0.0)(sql.js@1.13.0) + version: 0.35.3(@libsql/client-wasm@0.15.8)(@op-engineering/op-sqlite@14.0.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli-server-api@15.1.3)(@types/react@19.1.6)(react@19.0.0))(react@19.0.0))(@types/react@19.1.6)(@types/sql.js@1.4.9)(kysely@0.28.2)(react@19.0.0)(sql.js@1.13.0) rollup: specifier: 4.14.3 version: 4.14.3 @@ -2076,13 +2161,13 @@ importers: version: 4.0.1 source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.99.9(webpack-cli@5.1.4)) + version: 5.0.0(webpack@5.99.9) stream-browserify: specifier: ^3.0.0 version: 3.0.0 terser-webpack-plugin: specifier: ^5.3.9 - version: 5.3.14(webpack@5.99.9(webpack-cli@5.1.4)) + version: 5.3.14(webpack@5.99.9) uuid: specifier: ^9.0.1 version: 9.0.1 @@ -2282,7 +2367,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10)) '@react-native/eslint-config': specifier: 0.78.0 - version: 0.78.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)))(prettier@2.8.8)(typescript@5.0.4) + version: 0.78.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)))(prettier@2.8.8)(typescript@5.0.4) '@react-native/metro-config': specifier: 0.78.0 version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10)) @@ -2324,7 +2409,7 @@ importers: version: 4.1.0 detox: specifier: ^20.34.4 - version: 20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))) + version: 20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))) eslint: specifier: ^8.19.0 version: 8.57.1 @@ -2333,7 +2418,7 @@ importers: version: 3.3.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + version: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) prettier: specifier: 2.8.8 version: 2.8.8 @@ -2342,7 +2427,7 @@ importers: version: 19.0.0(react@19.0.0) ts-jest: specifier: ^29.2.6 - version: 29.3.4(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4) + version: 29.3.4(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4) typescript: specifier: 5.0.4 version: 5.0.4 @@ -21046,11 +21131,11 @@ snapshots: - chokidar - typescript - '@angular-builders/custom-webpack@19.0.1(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17)(tsx@4.19.4)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0)': + '@angular-builders/custom-webpack@19.0.1(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(tsx@4.19.4)(typescript@5.5.4)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0)': dependencies: '@angular-builders/common': 3.0.1(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.5.4) '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - '@angular-devkit/build-angular': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17)(tsx@4.19.4)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0) + '@angular-devkit/build-angular': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(tsx@4.19.4)(typescript@5.5.4)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0) '@angular-devkit/core': 19.2.14(chokidar@4.0.3) '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) lodash: 4.17.21 @@ -21099,13 +21184,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17)(tsx@4.19.4)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0)': + '@angular-devkit/build-angular@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/node@22.15.29)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(jiti@2.4.2)(lightningcss@1.30.1)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(tsx@4.19.4)(typescript@5.5.4)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))(yaml@2.8.0)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.1902.14(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)))(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + '@angular-devkit/build-webpack': 0.1902.14(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.11.29)))(webpack@5.98.0(@swc/core@1.11.29)) '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular/build': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(postcss@8.5.2)(tailwindcss@3.4.17)(terser@5.39.0)(tsx@4.19.4)(typescript@5.5.4)(yaml@2.8.0) + '@angular/build': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(postcss@8.5.2)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(terser@5.39.0)(tsx@4.19.4)(typescript@5.5.4)(yaml@2.8.0) '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) '@babel/core': 7.26.10 '@babel/generator': 7.26.10 @@ -21117,14 +21202,14 @@ snapshots: '@babel/preset-env': 7.26.9(@babel/core@7.26.10) '@babel/runtime': 7.26.10 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0)) + '@ngtools/webpack': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0)) ansi-colors: 4.1.3 autoprefixer: 10.4.20(postcss@8.5.2) - babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0(@swc/core@1.11.29)) browserslist: 4.25.0 - copy-webpack-plugin: 12.0.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) - css-loader: 7.1.2(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + copy-webpack-plugin: 12.0.2(webpack@5.98.0(@swc/core@1.11.29)) + css-loader: 7.1.2(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)) esbuild-wasm: 0.25.4 fast-glob: 3.3.3 http-proxy-middleware: 3.0.5 @@ -21132,38 +21217,38 @@ snapshots: jsonc-parser: 3.3.1 karma-source-map-support: 1.4.0 less: 4.2.2 - less-loader: 12.2.0(@rspack/core@1.3.13)(less@4.2.2)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) - license-webpack-plugin: 4.0.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + less-loader: 12.2.0(@rspack/core@1.3.13)(less@4.2.2)(webpack@5.98.0(@swc/core@1.11.29)) + license-webpack-plugin: 4.0.2(webpack@5.98.0(@swc/core@1.11.29)) loader-utils: 3.3.1 - mini-css-extract-plugin: 2.9.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + mini-css-extract-plugin: 2.9.2(webpack@5.98.0(@swc/core@1.11.29)) open: 10.1.0 ora: 5.4.1 picomatch: 4.0.2 piscina: 4.8.0 postcss: 8.5.2 - postcss-loader: 8.1.1(@rspack/core@1.3.13)(postcss@8.5.2)(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + postcss-loader: 8.1.1(@rspack/core@1.3.13)(postcss@8.5.2)(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.85.0 - sass-loader: 16.0.5(@rspack/core@1.3.13)(sass@1.85.0)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + sass-loader: 16.0.5(@rspack/core@1.3.13)(sass@1.85.0)(webpack@5.98.0(@swc/core@1.11.29)) semver: 7.7.1 - source-map-loader: 5.0.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + source-map-loader: 5.0.0(webpack@5.98.0(@swc/core@1.11.29)) source-map-support: 0.5.21 terser: 5.39.0 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 5.5.4 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) - webpack-dev-middleware: 7.4.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) - webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + webpack-dev-middleware: 7.4.2(webpack@5.98.0(@swc/core@1.11.29)) + webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.11.29)) webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(webpack@5.98.0(@swc/core@1.11.29)) optionalDependencies: '@angular/service-worker': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) esbuild: 0.25.4 - jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0) + jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) jest-environment-jsdom: 29.7.0 - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) transitivePeerDependencies: - '@angular/compiler' - '@rspack/core' @@ -21187,12 +21272,12 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.1902.14(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)))(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4))': + '@angular-devkit/build-webpack@0.1902.14(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.11.29)))(webpack@5.98.0(@swc/core@1.11.29))': dependencies: '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) rxjs: 7.8.1 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) - webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + webpack-dev-server: 5.2.0(webpack@5.98.0(@swc/core@1.11.29)) transitivePeerDependencies: - chokidar @@ -21223,7 +21308,7 @@ snapshots: '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/build@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(postcss@8.5.2)(tailwindcss@3.4.17)(terser@5.39.0)(tsx@4.19.4)(typescript@5.5.4)(yaml@2.8.0)': + '@angular/build@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/service-worker@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(postcss@8.5.2)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)))(terser@5.39.0)(tsx@4.19.4)(typescript@5.5.4)(yaml@2.8.0)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) @@ -21259,7 +21344,7 @@ snapshots: less: 4.2.2 lmdb: 3.2.6 postcss: 8.5.2 - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) transitivePeerDependencies: - '@types/node' - chokidar @@ -23025,7 +23110,7 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/babel@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/core': 7.26.10 '@babel/generator': 7.27.3 @@ -23038,7 +23123,7 @@ snapshots: '@babel/runtime-corejs3': 7.27.4 '@babel/traverse': 7.27.4 '@docusaurus/logger': 3.8.0 - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.0 tslib: 2.8.1 @@ -23052,34 +23137,34 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/bundler@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: '@babel/core': 7.26.10 - '@docusaurus/babel': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/babel': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/cssnano-preset': 3.8.0 '@docusaurus/logger': 3.8.0 - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.11.29)) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.99.9(@swc/core@1.11.29)) - css-loader: 6.11.0(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.11.29)) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(lightningcss@1.30.1)(webpack@5.99.9(@swc/core@1.11.29)) + copy-webpack-plugin: 11.0.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) + css-loader: 6.11.0(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(lightningcss@1.30.1)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) cssnano: 6.1.2(postcss@8.5.4) - file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29)) + file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.2(webpack@5.99.9(@swc/core@1.11.29)) - null-loader: 4.0.1(webpack@5.99.9(@swc/core@1.11.29)) + mini-css-extract-plugin: 2.9.2(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) + null-loader: 4.0.1(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) postcss: 8.5.4 - postcss-loader: 7.3.4(postcss@8.5.4)(typescript@5.9.2)(webpack@5.99.9(@swc/core@1.11.29)) + postcss-loader: 7.3.4(postcss@8.5.4)(typescript@5.9.2)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) postcss-preset-env: 10.2.0(postcss@8.5.4) - terser-webpack-plugin: 5.3.14(@swc/core@1.11.29)(webpack@5.99.9(@swc/core@1.11.29)) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.29(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29)))(webpack@5.99.9(@swc/core@1.11.29)) - webpack: 5.99.9(@swc/core@1.11.29) - webpackbar: 6.0.1(webpack@5.99.9(@swc/core@1.11.29)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) + webpackbar: 6.0.1(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) optionalDependencies: - '@docusaurus/faster': 3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/faster': 3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -23096,15 +23181,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/core@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/babel': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/bundler': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/babel': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/bundler': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.0 - '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/react': 3.1.0(@types/react@19.1.6)(react@18.3.1) boxen: 6.2.1 chalk: 4.1.2 @@ -23120,7 +23205,7 @@ snapshots: execa: 5.1.1 fs-extra: 11.3.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.3(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.11.29)) + html-webpack-plugin: 5.6.3(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) leven: 3.1.0 lodash: 4.17.21 open: 8.4.2 @@ -23130,7 +23215,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.99.9(@swc/core@1.11.29)) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -23139,9 +23224,9 @@ snapshots: tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(debug@4.4.1)(webpack@5.99.9(@swc/core@1.11.29)) + webpack-dev-server: 4.15.2(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -23168,17 +23253,17 @@ snapshots: postcss-sort-media-queries: 5.2.0(postcss@8.5.4) tslib: 2.8.1 - '@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13)': dependencies: - '@docusaurus/types': 3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rspack/core': 1.3.13 - '@swc/core': 1.11.29 + '@docusaurus/types': 3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + '@swc/core': 1.11.29(@swc/helpers@0.5.13) '@swc/html': 1.11.29 browserslist: 4.25.0 lightningcss: 1.30.1 - swc-loader: 0.2.6(@swc/core@1.11.29)(webpack@5.99.9(@swc/core@1.11.29)) + swc-loader: 0.2.6(@swc/core@1.11.29(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) tslib: 2.8.1 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/helpers' - esbuild @@ -23190,16 +23275,16 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/mdx-loader@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@docusaurus/logger': 3.8.0 - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/mdx': 3.1.0(acorn@8.14.1) '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.4.0 - file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29)) + file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) fs-extra: 11.3.0 image-size: 2.0.2 mdast-util-mdx: 3.0.0 @@ -23215,9 +23300,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29)))(webpack@5.99.9(@swc/core@1.11.29)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) vfile: 6.0.3 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/core' - acorn @@ -23226,9 +23311,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.23 '@types/react-router-config': 5.0.11 @@ -23245,17 +23330,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-content-blog@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.0 - '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.3.0 @@ -23267,7 +23352,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -23287,17 +23372,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.0 - '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.3.0 @@ -23308,7 +23393,7 @@ snapshots: schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -23328,18 +23413,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-content-pages@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -23359,11 +23444,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-css-cascade-layers@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -23386,11 +23471,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-debug@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -23415,11 +23500,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-google-analytics@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -23442,11 +23527,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-google-gtag@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -23470,11 +23555,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-google-tag-manager@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -23497,14 +23582,14 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-sitemap@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.0 - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -23529,18 +23614,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-svgr@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@svgr/core': 8.1.0(typescript@5.9.2) '@svgr/webpack': 8.1.0(typescript@5.9.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -23560,23 +23645,23 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': - dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-blog': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-pages': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-css-cascade-layers': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-debug': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-google-analytics': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-google-gtag': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-google-tag-manager': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-sitemap': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-svgr': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-classic': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-search-algolia': 3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/preset-classic@3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-blog': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-pages': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-css-cascade-layers': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-debug': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-analytics': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-gtag': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-tag-manager': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-sitemap': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-svgr': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-classic': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-search-algolia': 3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -23606,21 +23691,21 @@ snapshots: '@types/react': 18.3.23 react: 18.3.1 - '@docusaurus/theme-classic@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/theme-classic@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.0 - '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-pages': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-pages': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/theme-translations': 3.8.0 - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/react': 3.1.0(@types/react@19.1.6)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 @@ -23655,13 +23740,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/theme-common@3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.23 '@types/react-router-config': 5.0.11 @@ -23680,16 +23765,16 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': + '@docusaurus/theme-search-algolia@3.8.0(@algolia/client-search@5.25.0)(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/react@19.1.6)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': dependencies: '@docsearch/react': 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.0 - '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13)(@swc/core@1.11.29)(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.0(@docusaurus/plugin-content-docs@3.8.0(@docusaurus/faster@3.8.0(@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.13))(@mdx-js/react@3.1.0(@types/react@19.1.6)(react@18.3.1))(@rspack/core@1.3.13(@swc/helpers@0.5.13))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(lightningcss@1.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/theme-translations': 3.8.0 - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) algoliasearch: 5.25.0 algoliasearch-helper: 3.25.0(algoliasearch@5.25.0) clsx: 2.1.1 @@ -23729,7 +23814,7 @@ snapshots: '@docusaurus/tsconfig@3.7.0': {} - '@docusaurus/types@3.7.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.7.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.14.1) '@types/history': 4.7.11 @@ -23740,7 +23825,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' utility-types: 3.11.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -23750,7 +23835,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/types@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.14.1) '@types/history': 4.7.11 @@ -23761,7 +23846,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' utility-types: 3.11.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -23771,9 +23856,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-common@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -23785,11 +23870,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-validation@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@docusaurus/logger': 3.8.0 - '@docusaurus/utils': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -23805,14 +23890,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils@3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@docusaurus/logger': 3.8.0 - '@docusaurus/types': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.0(@swc/core@1.11.29(@swc/helpers@0.5.13))(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29)) + file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) fs-extra: 11.3.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -23825,9 +23910,9 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29)))(webpack@5.99.9(@swc/core@1.11.29)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) utility-types: 3.11.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/core' - acorn @@ -25279,13 +25364,13 @@ snapshots: '@expo/timeago.js@1.0.0': {} - '@expo/vector-icons@14.1.0(ka6rgkktlsuut5gotrymd2sdni)': + '@expo/vector-icons@14.1.0(99f35dc9d27b76831378288730881035)': dependencies: expo-font: 13.0.4(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react@18.3.1) react: 18.3.1 react-native: 0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1) - '@expo/vector-icons@14.1.0(wm3bvfp4qcetscjld4hplpimri)': + '@expo/vector-icons@14.1.0(a6850416216e8b64df60af23d5183c0b)': dependencies: expo-font: 13.0.4(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react@18.3.1) react: 18.3.1 @@ -25635,7 +25720,77 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.57 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.57 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -25649,7 +25804,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -25669,8 +25824,9 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -25684,7 +25840,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -25704,6 +25860,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true '@jest/create-cache-key-function@29.7.0': dependencies: @@ -26287,7 +26444,7 @@ snapshots: '@module-federation/manifest': 0.13.1(typescript@5.9.2)(vue-tsc@2.0.6(typescript@5.9.2)) '@module-federation/runtime-tools': 0.13.1 '@module-federation/sdk': 0.13.1 - '@rspack/core': 1.3.13 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) btoa: 1.2.1 optionalDependencies: typescript: 5.9.2 @@ -26678,7 +26835,7 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.3': optional: true - '@ngtools/webpack@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4))': + '@ngtools/webpack@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29))': dependencies: '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) typescript: 5.5.4 @@ -28433,7 +28590,7 @@ snapshots: - supports-color - typescript - '@react-native/eslint-config@0.77.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(prettier@3.5.3)(typescript@5.9.2)': + '@react-native/eslint-config@0.77.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)))(prettier@3.5.3)(typescript@5.9.2)': dependencies: '@babel/core': 7.26.10 '@babel/eslint-parser': 7.27.1(@babel/core@7.26.10)(eslint@8.57.1) @@ -28444,7 +28601,7 @@ snapshots: eslint-config-prettier: 8.10.0(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.27.1(@babel/core@7.26.10)(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(typescript@5.9.2) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)))(typescript@5.9.2) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) eslint-plugin-react-native: 4.1.0(eslint@8.57.1) @@ -28454,7 +28611,7 @@ snapshots: - supports-color - typescript - '@react-native/eslint-config@0.78.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)))(prettier@2.8.8)(typescript@5.0.4)': + '@react-native/eslint-config@0.78.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)))(prettier@2.8.8)(typescript@5.0.4)': dependencies: '@babel/core': 7.26.10 '@babel/eslint-parser': 7.27.1(@babel/core@7.26.10)(eslint@8.57.1) @@ -28465,7 +28622,7 @@ snapshots: eslint-config-prettier: 8.10.0(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.27.1(@babel/core@7.26.10)(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) eslint-plugin-react-native: 4.1.0(eslint@8.57.1) @@ -28563,7 +28720,9 @@ snapshots: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - bufferutil - supports-color + - utf-8-validate '@react-native/normalize-color@2.1.0': {} @@ -28688,7 +28847,7 @@ snapshots: use-latest-callback: 0.2.3(react@18.3.1) use-sync-external-store: 1.5.0(react@18.3.1) - '@react-navigation/drawer@7.4.1(j6abyuabi5plzpedpvxbnwhrsi)': + '@react-navigation/drawer@7.4.1(1d85788bd68a0e12619f848d71cbac62)': dependencies: '@react-navigation/elements': 2.4.3(@react-navigation/native@7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@react-navigation/native': 7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -28704,7 +28863,7 @@ snapshots: transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/drawer@7.4.1(nyxmcqdttlojx3ihgax6eihdpu)': + '@react-navigation/drawer@7.4.1(f2502081aada8c22c3fd2dbf46b9d114)': dependencies: '@react-navigation/elements': 2.4.3(@react-navigation/native@7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) '@react-navigation/native': 7.1.10(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) @@ -28948,14 +29107,6 @@ snapshots: optionalDependencies: rollup: 4.14.3 - '@rollup/pluginutils@5.1.4(rollup@4.41.1)': - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.41.1 - '@rollup/rollup-android-arm-eabi@4.14.3': optional: true @@ -29160,11 +29311,13 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.3.13 '@rspack/binding-win32-x64-msvc': 1.3.13 - '@rspack/core@1.3.13': + '@rspack/core@1.3.13(@swc/helpers@0.5.13)': dependencies: '@module-federation/runtime-tools': 0.14.3 '@rspack/binding': 1.3.13 '@rspack/lite-tapable': 1.0.1 + optionalDependencies: + '@swc/helpers': 0.5.13 '@rspack/lite-tapable@1.0.1': {} @@ -29515,7 +29668,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.6.13': optional: true - '@swc/core@1.11.29': + '@swc/core@1.11.29(@swc/helpers@0.5.13)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.21 @@ -29530,6 +29683,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.11.29 '@swc/core-win32-ia32-msvc': 1.11.29 '@swc/core-win32-x64-msvc': 1.11.29 + '@swc/helpers': 0.5.13 '@swc/core@1.6.13': dependencies: @@ -31079,7 +31233,7 @@ snapshots: dependencies: vue: 2.7.16 - '@types/webpack@5.28.5(webpack-cli@5.1.4(webpack@5.99.9))': + '@types/webpack@5.28.5(webpack-cli@5.1.4)': dependencies: '@types/node': 20.17.57 tapable: 2.2.2 @@ -31579,6 +31733,10 @@ snapshots: dependencies: vite: 6.2.7(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0) + '@vitejs/plugin-basic-ssl@1.2.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0) + '@vitejs/plugin-react@4.5.0(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))': dependencies: '@babel/core': 7.26.10 @@ -31614,26 +31772,6 @@ snapshots: - msw - utf-8-validate - vite - optional: true - - '@vitest/browser@3.2.4(playwright@1.52.0)(vite@6.3.5(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vitest@3.2.4)': - dependencies: - '@testing-library/dom': 10.4.0 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) - '@vitest/utils': 3.2.4 - magic-string: 0.30.17 - sirv: 3.0.1 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/browser@3.2.4)(jsdom@24.1.3)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) - ws: 8.18.2 - optionalDependencies: - playwright: 1.52.0 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite '@vitest/expect@3.2.4': dependencies: @@ -31651,14 +31789,6 @@ snapshots: optionalDependencies: vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) - '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))': - dependencies: - '@vitest/spy': 3.2.4 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0) - '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 @@ -31815,7 +31945,7 @@ snapshots: vue: 3.4.21(typescript@5.9.2) vue-demi: 0.13.11(vue@3.4.21(typescript@5.9.2)) - '@vuetify/loader-shared@2.1.0(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8(typescript@5.9.2)(vite-plugin-vuetify@2.1.1)(vue@3.4.21(typescript@5.9.2)))': + '@vuetify/loader-shared@2.1.0(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8)': dependencies: upath: 2.0.1 vue: 3.4.21(typescript@5.9.2) @@ -31946,17 +32076,17 @@ snapshots: - vue-tsc - webpack-cli - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.99.9))(webpack@5.99.9(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.99.9)': dependencies: webpack: 5.99.9(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.99.9) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.99.9))(webpack@5.99.9(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.99.9)': dependencies: webpack: 5.99.9(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.99.9) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.99.9))(webpack@5.99.9(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.99.9)': dependencies: webpack: 5.99.9(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.99.9) @@ -31969,10 +32099,10 @@ snapshots: optionalDependencies: expect: 29.7.0 - '@wix-pilot/detox@1.0.11(@wix-pilot/core@3.3.2(expect@29.7.0))(detox@20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))))(expect@29.7.0)': + '@wix-pilot/detox@1.0.11(@wix-pilot/core@3.3.2(expect@29.7.0))(detox@20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))))(expect@29.7.0)': dependencies: '@wix-pilot/core': 3.3.2(expect@29.7.0) - detox: 20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))) + detox: 20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))) expect: 29.7.0 '@xmldom/xmldom@0.7.13': {} @@ -32470,19 +32600,19 @@ snapshots: find-up: 5.0.0 webpack: 5.99.9(@swc/core@1.6.13) - babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: '@babel/core': 7.26.10 find-cache-dir: 4.0.0 schema-utils: 4.3.2 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) - babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.11.29)): + babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: '@babel/core': 7.26.10 find-cache-dir: 4.0.0 schema-utils: 4.3.2 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.99.9(@swc/core@1.6.13)): dependencies: @@ -32491,13 +32621,6 @@ snapshots: schema-utils: 4.3.2 webpack: 5.99.9(@swc/core@1.6.13) - babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.99.9): - dependencies: - '@babel/core': 7.26.10 - find-cache-dir: 4.0.0 - schema-utils: 4.3.2 - webpack: 5.99.9 - babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.7 @@ -33588,7 +33711,7 @@ snapshots: copy-text-to-clipboard@3.2.0: {} - copy-webpack-plugin@11.0.0(webpack@5.99.9(@swc/core@1.11.29)): + copy-webpack-plugin@11.0.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -33596,9 +33719,9 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) - copy-webpack-plugin@12.0.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + copy-webpack-plugin@12.0.2(webpack@5.98.0(@swc/core@1.11.29)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -33719,13 +33842,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + create-jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -33734,13 +33857,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)): + create-jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -33749,6 +33872,38 @@ snapshots: - supports-color - ts-node + create-jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + optional: true + + create-jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + optional: true + create-require@1.1.1: {} crelt@1.0.6: {} @@ -33838,7 +33993,7 @@ snapshots: dependencies: hyphenate-style-name: 1.1.0 - css-loader@6.11.0(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.11.29)): + css-loader@6.11.0(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 @@ -33849,10 +34004,10 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.3.13 - webpack: 5.99.9(@swc/core@1.11.29) + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) - css-loader@6.11.0(@rspack/core@1.3.13)(webpack@5.99.9): + css-loader@6.11.0(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.11.29)): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 @@ -33863,10 +34018,10 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.3.13 - webpack: 5.99.9 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + webpack: 5.99.9(@swc/core@1.11.29) - css-loader@7.1.2(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + css-loader@7.1.2(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 @@ -33877,7 +34032,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.3.13 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) css-loader@7.1.2(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.6.13)): @@ -33891,10 +34046,10 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.3.13 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) webpack: 5.99.9(@swc/core@1.6.13) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(lightningcss@1.30.1)(webpack@5.99.9(@swc/core@1.11.29)): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(lightningcss@1.30.1)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: '@jridgewell/trace-mapping': 0.3.25 cssnano: 6.1.2(postcss@8.5.4) @@ -33902,7 +34057,7 @@ snapshots: postcss: 8.5.4 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) optionalDependencies: clean-css: 5.3.3 lightningcss: 1.30.1 @@ -34254,10 +34409,10 @@ snapshots: transitivePeerDependencies: - supports-color - detox@20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))): + detox@20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))): dependencies: '@wix-pilot/core': 3.3.2(expect@29.7.0) - '@wix-pilot/detox': 1.0.11(@wix-pilot/core@3.3.2(expect@29.7.0))(detox@20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))))(expect@29.7.0) + '@wix-pilot/detox': 1.0.11(@wix-pilot/core@3.3.2(expect@29.7.0))(detox@20.39.0(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(expect@29.7.0)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))))(expect@29.7.0) ajv: 8.17.1 bunyan: 1.8.15 bunyan-debug-stream: 3.1.1(bunyan@1.8.15) @@ -34269,7 +34424,7 @@ snapshots: funpermaproxy: 1.1.0 glob: 8.1.0 ini: 1.3.8 - jest-environment-emit: 1.0.8(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))) + jest-environment-emit: 1.0.8(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))) json-cycle: 1.5.0 lodash: 4.17.21 multi-sort-stream: 1.0.4 @@ -34294,7 +34449,7 @@ snapshots: yargs-parser: 21.1.1 yargs-unparser: 2.0.0 optionalDependencies: - jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) transitivePeerDependencies: - '@jest/environment' - '@jest/types' @@ -34427,7 +34582,7 @@ snapshots: dotenv@16.5.0: {} - drizzle-orm@0.35.3(@libsql/client-wasm@0.15.8)(@op-engineering/op-sqlite@14.0.2(react@19.0.0))(@types/react@19.1.6)(@types/sql.js@1.4.9)(kysely@0.28.2)(react@19.0.0)(sql.js@1.13.0): + drizzle-orm@0.35.3(@libsql/client-wasm@0.15.8)(@op-engineering/op-sqlite@14.0.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli-server-api@15.1.3)(@types/react@19.1.6)(react@19.0.0))(react@19.0.0))(@types/react@19.1.6)(@types/sql.js@1.4.9)(kysely@0.28.2)(react@19.0.0)(sql.js@1.13.0): dependencies: '@libsql/client-wasm': 0.15.8 optionalDependencies: @@ -35208,24 +35363,24 @@ snapshots: - supports-color - typescript - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.0.4) eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4) - jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0))(typescript@5.9.2): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)))(typescript@5.9.2): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0) + jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) transitivePeerDependencies: - supports-color - typescript @@ -35653,7 +35808,7 @@ snapshots: expo: 52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) semver: 7.7.2 - expo-camera@16.0.18(hml277kvlorqbj6gijmq6joh24): + expo-camera@16.0.18(55c6da9df988ca7f1678935d82e9238e): dependencies: expo: 52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) invariant: 2.2.4 @@ -35813,7 +35968,7 @@ snapshots: dependencies: invariant: 2.2.4 - expo-router@4.0.21(cpo3xaw6yrjernjvkkkt7bisia): + expo-router@4.0.21(b0bddf53ba1689b30337428eee4dc275): dependencies: '@expo/metro-runtime': 4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) '@expo/server': 0.5.3 @@ -35834,7 +35989,7 @@ snapshots: semver: 7.6.3 server-only: 0.0.1 optionalDependencies: - '@react-navigation/drawer': 7.4.1(nyxmcqdttlojx3ihgax6eihdpu) + '@react-navigation/drawer': 7.4.1(f2502081aada8c22c3fd2dbf46b9d114) react-native-reanimated: 3.16.7(@babel/core@7.26.10)(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@react-native-masked-view/masked-view' @@ -35843,7 +35998,7 @@ snapshots: - react-native - supports-color - expo-router@4.0.21(xdzi7taj2dri7edfzwov6a63va): + expo-router@4.0.21(e063c8109134fcdd1c97e4d6a4caf625): dependencies: '@expo/metro-runtime': 4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) '@expo/server': 0.5.3 @@ -35864,7 +36019,7 @@ snapshots: semver: 7.6.3 server-only: 0.0.1 optionalDependencies: - '@react-navigation/drawer': 7.4.1(j6abyuabi5plzpedpvxbnwhrsi) + '@react-navigation/drawer': 7.4.1(1d85788bd68a0e12619f848d71cbac62) react-native-reanimated: 3.16.7(@babel/core@7.26.10)(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@react-native-masked-view/masked-view' @@ -35906,7 +36061,7 @@ snapshots: expo: 52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) sf-symbols-typescript: 2.1.0 - expo-system-ui@4.0.9(l76mjoke3yk4s56nokhxoxxpou): + expo-system-ui@4.0.9(fa4ab2ddb2d13a20299c682fc53644db): dependencies: '@react-native/normalize-colors': 0.76.8 debug: 4.4.1(supports-color@8.1.1) @@ -35934,7 +36089,7 @@ snapshots: '@expo/config-plugins': 9.0.17 '@expo/fingerprint': 0.11.11 '@expo/metro-config': 0.19.12 - '@expo/vector-icons': 14.1.0(ka6rgkktlsuut5gotrymd2sdni) + '@expo/vector-icons': 14.1.0(99f35dc9d27b76831378288730881035) babel-preset-expo: 12.0.11(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10)) expo-asset: 11.0.5(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) expo-constants: 17.0.8(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) @@ -35970,7 +36125,7 @@ snapshots: '@expo/config-plugins': 9.0.17 '@expo/fingerprint': 0.11.11 '@expo/metro-config': 0.19.12 - '@expo/vector-icons': 14.1.0(wm3bvfp4qcetscjld4hplpimri) + '@expo/vector-icons': 14.1.0(a6850416216e8b64df60af23d5183c0b) babel-preset-expo: 12.0.11(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10)) expo-asset: 11.0.5(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) expo-constants: 17.0.8(expo@52.0.46(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)))(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.12.5(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1)) @@ -36173,11 +36328,11 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29)): + file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) file-uri-to-path@1.0.0: {} @@ -37053,7 +37208,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)): + html-webpack-plugin@5.6.3(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -37061,11 +37216,10 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.2 optionalDependencies: - '@rspack/core': 1.3.13 - webpack: 5.98.0(@swc/core@1.11.29) - optional: true + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) - html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.11.29)): + html-webpack-plugin@5.6.3(@rspack/core@1.3.13(@swc/helpers@0.5.13))(webpack@5.99.9): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -37073,10 +37227,10 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.2 optionalDependencies: - '@rspack/core': 1.3.13 - webpack: 5.99.9(@swc/core@1.11.29) + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + webpack: 5.99.9(webpack-cli@5.1.4) - html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.99.9(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -37084,8 +37238,20 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.2 optionalDependencies: - '@rspack/core': 1.3.13 - webpack: 5.99.9(webpack-cli@5.1.4) + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) + optional: true + + html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.99.9(@swc/core@1.11.29)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.2 + optionalDependencies: + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) + webpack: 5.99.9(@swc/core@1.11.29) htmlparser2@10.0.0: dependencies: @@ -37789,16 +37955,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + jest-cli@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + create-jest: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + jest-config: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -37808,16 +37974,35 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0): + jest-cli@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + create-jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -37828,16 +38013,16 @@ snapshots: - ts-node optional: true - jest-cli@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)): + jest-cli@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + create-jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest-config: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -37846,8 +38031,40 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true + + jest-config@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.57 + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color - jest-config@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + jest-config@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 @@ -37873,12 +38090,44 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.57 - ts-node: 10.9.2(@types/node@20.17.57)(typescript@5.9.2) + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)): + jest-config@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.57 + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + optional: true + + jest-config@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 @@ -37904,12 +38153,76 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.57 - ts-node: 10.9.2(@types/node@22.15.29)(typescript@5.0.4) + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true + + jest-config@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.15.29 + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.15.29 + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + optional: true - jest-config@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)): + jest-config@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 @@ -37935,10 +38248,11 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.29 - ts-node: 10.9.2(@types/node@22.15.29)(typescript@5.0.4) + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-diff@29.7.0: dependencies: @@ -37959,7 +38273,7 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 - jest-environment-emit@1.0.8(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4))): + jest-environment-emit@1.0.8(@jest/environment@29.7.0)(@jest/types@29.6.3)(@types/bunyan@1.8.11)(jest-environment-jsdom@29.7.0)(jest-environment-node@29.7.0)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4))): dependencies: bunyamin: 1.6.3(@types/bunyan@1.8.11)(bunyan@2.0.5) bunyan: 2.0.5 @@ -37972,7 +38286,7 @@ snapshots: optionalDependencies: '@jest/environment': 29.7.0 '@jest/types': 29.6.3 - jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) jest-environment-jsdom: 29.7.0 jest-environment-node: 29.7.0 transitivePeerDependencies: @@ -38002,7 +38316,7 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - jest-expo@52.0.6(hjrfme3xxu7xcbl6wzt3m2hgh4): + jest-expo@52.0.6(3635c191458c5fa90af52243d15b5fda): dependencies: '@expo/config': 10.0.11 '@expo/json-file': 9.1.4 @@ -38015,11 +38329,11 @@ snapshots: jest-environment-jsdom: 29.7.0 jest-snapshot: 29.7.0 jest-watch-select-projects: 2.0.0 - jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2))) + jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2))) json5: 2.2.3 lodash: 4.17.21 react-native: 0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1) - react-server-dom-webpack: 19.0.0-rc-6230622a1a-20240610(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.9) + react-server-dom-webpack: 19.0.0-rc-6230622a1a-20240610(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.9(@swc/core@1.11.29)) react-test-renderer: 18.3.1(react@18.3.1) server-only: 0.0.1 stacktrace-js: 2.0.2 @@ -38221,11 +38535,11 @@ snapshots: chalk: 3.0.0 prompts: 2.4.2 - jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2))): + jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2))): dependencies: ansi-escapes: 6.2.1 chalk: 4.1.2 - jest: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + jest: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) jest-regex-util: 29.6.3 jest-watcher: 29.7.0 slash: 5.1.0 @@ -38256,24 +38570,36 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + jest@29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.57)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + jest-cli: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0): + jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0) + jest-cli: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -38281,17 +38607,18 @@ snapshots: - ts-node optional: true - jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)): + jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest-cli: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node + optional: true jimp-compact@0.16.1: {} @@ -38622,11 +38949,11 @@ snapshots: dependencies: readable-stream: 2.3.8 - less-loader@12.2.0(@rspack/core@1.3.13)(less@4.2.2)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + less-loader@12.2.0(@rspack/core@1.3.13)(less@4.2.2)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: less: 4.2.2 optionalDependencies: - '@rspack/core': 1.3.13 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) less@4.2.2: @@ -38656,7 +38983,7 @@ snapshots: dependencies: isomorphic.js: 0.2.5 - license-webpack-plugin@4.0.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + license-webpack-plugin@4.0.2(webpack@5.98.0(@swc/core@1.11.29)): dependencies: webpack-sources: 3.3.0 optionalDependencies: @@ -40378,17 +40705,17 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + mini-css-extract-plugin@2.9.2(webpack@5.98.0(@swc/core@1.11.29)): dependencies: schema-utils: 4.3.2 tapable: 2.2.2 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) - mini-css-extract-plugin@2.9.2(webpack@5.99.9(@swc/core@1.11.29)): + mini-css-extract-plugin@2.9.2(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: schema-utils: 4.3.2 tapable: 2.2.2 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) mini-css-extract-plugin@2.9.2(webpack@5.99.9(@swc/core@1.6.13)): dependencies: @@ -40928,11 +41255,11 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.99.9(@swc/core@1.11.29)): + null-loader@4.0.1(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) nullthrows@1.1.1: {} @@ -41638,32 +41965,41 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.4) postcss: 8.5.4 - postcss-load-config@4.0.2(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + postcss-load-config@4.0.2(postcss@8.5.4)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/node@20.17.57)(typescript@5.9.2)): dependencies: lilconfig: 3.1.3 yaml: 2.8.0 optionalDependencies: postcss: 8.5.4 - ts-node: 10.9.2(@types/node@20.17.57)(typescript@5.9.2) + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2) - postcss-loader@7.3.4(postcss@8.5.4)(typescript@5.9.2)(webpack@5.99.9(@swc/core@1.11.29)): + postcss-load-config@4.0.2(postcss@8.5.4)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.0 + optionalDependencies: + postcss: 8.5.4 + ts-node: 10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4) + optional: true + + postcss-loader@7.3.4(postcss@8.5.4)(typescript@5.9.2)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: cosmiconfig: 8.3.6(typescript@5.9.2) jiti: 1.21.7 postcss: 8.5.4 semver: 7.7.2 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) transitivePeerDependencies: - typescript - postcss-loader@8.1.1(@rspack/core@1.3.13)(postcss@8.5.2)(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + postcss-loader@8.1.1(@rspack/core@1.3.13)(postcss@8.5.2)(typescript@5.5.4)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: cosmiconfig: 9.0.0(typescript@5.5.4) jiti: 1.21.7 postcss: 8.5.2 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.3.13 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) transitivePeerDependencies: - typescript @@ -42410,11 +42746,11 @@ snapshots: dependencies: react: 18.3.1 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.99.9(@swc/core@1.11.29)): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: '@babel/runtime': 7.27.6 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) react-native-builder-bob@0.30.3(typescript@5.9.2): dependencies: @@ -43080,7 +43416,7 @@ snapshots: - supports-color - utf-8-validate - react-navigation-stack@2.10.4(4a23q4g4mav7ddr6jlhxnyzzo4): + react-navigation-stack@2.10.4(1b7f2cbbd098c1646b3c5f57acc57915): dependencies: '@react-native-community/masked-view': 0.1.11(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.9.2))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1) color: 3.2.1 @@ -43166,13 +43502,13 @@ snapshots: '@remix-run/router': 1.23.0 react: 18.3.1 - react-server-dom-webpack@19.0.0-rc-6230622a1a-20240610(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.9): + react-server-dom-webpack@19.0.0-rc-6230622a1a-20240610(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.9(@swc/core@1.11.29)): dependencies: acorn-loose: 8.5.0 neo-async: 2.6.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - webpack: 5.99.9 + webpack: 5.99.9(@swc/core@1.11.29) react-shallow-renderer@16.15.0(react@18.3.1): dependencies: @@ -43878,18 +44214,18 @@ snapshots: dependencies: truncate-utf8-bytes: 1.0.2 - sass-loader@13.3.3(sass@1.89.1)(webpack@5.99.9): + sass-loader@13.3.3(sass@1.89.1)(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: neo-async: 2.6.2 - webpack: 5.99.9 + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) optionalDependencies: sass: 1.89.1 - sass-loader@16.0.5(@rspack/core@1.3.13)(sass@1.85.0)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + sass-loader@16.0.5(@rspack/core@1.3.13)(sass@1.85.0)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: neo-async: 2.6.2 optionalDependencies: - '@rspack/core': 1.3.13 + '@rspack/core': 1.3.13(@swc/helpers@0.5.13) sass: 1.85.0 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) @@ -44317,13 +44653,13 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + source-map-loader@5.0.0(webpack@5.98.0(@swc/core@1.11.29)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) - source-map-loader@5.0.0(webpack@5.99.9(webpack-cli@5.1.4)): + source-map-loader@5.0.0(webpack@5.99.9): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 @@ -44667,6 +45003,10 @@ snapshots: structured-headers@0.4.1: {} + style-loader@3.3.4(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): + dependencies: + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) + style-loader@3.3.4(webpack@5.99.9(@swc/core@1.11.29)): dependencies: webpack: 5.99.9(@swc/core@1.11.29) @@ -44675,10 +45015,6 @@ snapshots: dependencies: webpack: 5.99.9(@swc/core@1.6.13) - style-loader@3.3.4(webpack@5.99.9): - dependencies: - webpack: 5.99.9 - style-to-js@1.1.16: dependencies: style-to-object: 1.0.8 @@ -44794,11 +45130,11 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 - swc-loader@0.2.6(@swc/core@1.11.29)(webpack@5.99.9(@swc/core@1.11.29)): + swc-loader@0.2.6(@swc/core@1.11.29(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) '@swc/counter': 0.1.3 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) symbol-observable@4.0.0: {} @@ -44810,7 +45146,34 @@ snapshots: tabbable@6.2.0: {} - tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/node@20.17.57)(typescript@5.9.2)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.4 + postcss-import: 15.1.0(postcss@8.5.4) + postcss-js: 4.0.1(postcss@8.5.4) + postcss-load-config: 4.0.2(postcss@8.5.4)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.13))(@types/node@20.17.57)(typescript@5.9.2)) + postcss-nested: 6.2.0(postcss@8.5.4) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -44829,13 +45192,14 @@ snapshots: postcss: 8.5.4 postcss-import: 15.1.0(postcss@8.5.4) postcss-js: 4.0.1(postcss@8.5.4) - postcss-load-config: 4.0.2(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + postcss-load-config: 4.0.2(postcss@8.5.4)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4)) postcss-nested: 6.2.0(postcss@8.5.4) postcss-selector-parser: 6.1.2 resolve: 1.22.10 sucrase: 3.35.0 transitivePeerDependencies: - ts-node + optional: true tamagui@1.79.6(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react-native-web@0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.9(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))(@react-native-community/cli@15.1.3(typescript@5.3.3))(@types/react@18.3.23)(encoding@0.1.13)(react@18.3.1))(react@18.3.1): dependencies: @@ -44986,29 +45350,28 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.14(@swc/core@1.11.29)(esbuild@0.25.4)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + terser-webpack-plugin@5.3.14(@swc/core@1.11.29(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.40.0 - webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) optionalDependencies: - '@swc/core': 1.11.29 - esbuild: 0.25.4 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) - terser-webpack-plugin@5.3.14(@swc/core@1.11.29)(webpack@5.98.0(@swc/core@1.11.29)): + terser-webpack-plugin@5.3.14(@swc/core@1.11.29)(esbuild@0.25.4)(webpack@5.98.0(@swc/core@1.11.29)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.40.0 - webpack: 5.98.0(@swc/core@1.11.29) + webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) optionalDependencies: - '@swc/core': 1.11.29 - optional: true + '@swc/core': 1.11.29(@swc/helpers@0.5.13) + esbuild: 0.25.4 terser-webpack-plugin@5.3.14(@swc/core@1.11.29)(webpack@5.99.9(@swc/core@1.11.29)): dependencies: @@ -45019,7 +45382,7 @@ snapshots: terser: 5.40.0 webpack: 5.99.9(@swc/core@1.11.29) optionalDependencies: - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) terser-webpack-plugin@5.3.14(@swc/core@1.6.13)(webpack@5.99.9(@swc/core@1.6.13)): dependencies: @@ -45032,15 +45395,6 @@ snapshots: optionalDependencies: '@swc/core': 1.6.13 - terser-webpack-plugin@5.3.14(webpack@5.99.9(webpack-cli@5.1.4)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - terser: 5.40.0 - webpack: 5.99.9(webpack-cli@5.1.4) - terser-webpack-plugin@5.3.14(webpack@5.99.9): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -45048,7 +45402,7 @@ snapshots: schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.40.0 - webpack: 5.99.9 + webpack: 5.99.9(webpack-cli@5.1.4) terser@5.39.0: dependencies: @@ -45217,12 +45571,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.3.4(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4): + ts-jest@29.3.4(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)))(typescript@5.0.4): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4)) + jest: 29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -45247,27 +45601,28 @@ snapshots: typescript: 5.9.2 webpack: 5.99.9(@swc/core@1.11.29) - ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.3.3): + ts-node@10.9.2(@swc/core@1.11.29)(@types/node@20.17.57)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.29 + '@types/node': 20.17.57 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 + typescript: 5.9.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) + optional: true - ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4): + ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.0.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -45281,13 +45636,14 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.0.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) + optional: true - ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2): + ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -45301,40 +45657,40 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.9.2 + typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) - ts-node@10.9.2(@swc/core@1.6.13)(@types/node@20.17.57)(typescript@4.5.5): + ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.57 + '@types/node': 22.15.29 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.5.5 + typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.6.13 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) - ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2): + ts-node@10.9.2(@swc/core@1.11.29)(@types/node@22.15.29)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.57 + '@types/node': 22.15.29 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -45344,26 +45700,28 @@ snapshots: typescript: 5.9.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optional: true + optionalDependencies: + '@swc/core': 1.11.29(@swc/helpers@0.5.13) - ts-node@10.9.2(@types/node@22.15.29)(typescript@5.0.4): + ts-node@10.9.2(@swc/core@1.6.13)(@types/node@20.17.57)(typescript@4.5.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.29 + '@types/node': 20.17.57 acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.0.4 + typescript: 4.5.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optional: true + optionalDependencies: + '@swc/core': 1.6.13 ts-object-utils@0.0.5: {} @@ -45709,10 +46067,10 @@ snapshots: unplugin: 2.0.0-beta.1 vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) - unplugin-vue-components@0.26.0(@babel/parser@7.27.4)(rollup@4.41.1)(vue@3.4.21(typescript@5.9.2)): + unplugin-vue-components@0.26.0(@babel/parser@7.27.4)(rollup@2.79.2)(vue@3.4.21(typescript@5.9.2)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.4(rollup@4.41.1) + '@rollup/pluginutils': 5.1.4(rollup@2.79.2) chokidar: 3.6.0 debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 @@ -45800,14 +46158,14 @@ snapshots: url-join@4.0.1: {} - url-loader@4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29)))(webpack@5.99.9(@swc/core@1.11.29)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) optionalDependencies: - file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29)) + file-loader: 6.2.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) url-parse@1.5.10: dependencies: @@ -45978,12 +46336,12 @@ snapshots: - vue - webpack-cli - vite-plugin-top-level-await@1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)): + vite-plugin-top-level-await@1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@2.79.2) - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) uuid: 10.0.0 - vite: 5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) + vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) transitivePeerDependencies: - '@swc/helpers' - rollup @@ -45991,7 +46349,7 @@ snapshots: vite-plugin-top-level-await@1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.41.1) - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) uuid: 10.0.0 vite: 5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) transitivePeerDependencies: @@ -46001,7 +46359,7 @@ snapshots: vite-plugin-top-level-await@1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.41.1) - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) uuid: 10.0.0 vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) transitivePeerDependencies: @@ -46011,7 +46369,7 @@ snapshots: vite-plugin-top-level-await@1.5.0(rollup@4.41.1)(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.41.1) - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) uuid: 10.0.0 vite: 6.3.5(@types/node@20.17.57)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0) transitivePeerDependencies: @@ -46021,7 +46379,7 @@ snapshots: vite-plugin-top-level-await@1.5.0(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.41.1) - '@swc/core': 1.11.29 + '@swc/core': 1.11.29(@swc/helpers@0.5.13) uuid: 10.0.0 vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0) transitivePeerDependencies: @@ -46030,7 +46388,7 @@ snapshots: vite-plugin-vuetify@2.1.1(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8): dependencies: - '@vuetify/loader-shared': 2.1.0(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8(typescript@5.9.2)(vite-plugin-vuetify@2.1.1)(vue@3.4.21(typescript@5.9.2))) + '@vuetify/loader-shared': 2.1.0(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8) debug: 4.4.1(supports-color@8.1.1) upath: 2.0.1 vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) @@ -46116,6 +46474,25 @@ snapshots: tsx: 4.19.4 yaml: 2.8.0 + vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.85.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.41.1 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.15.29 + fsevents: 2.3.3 + jiti: 2.4.2 + less: 4.2.2 + lightningcss: 1.30.1 + sass: 1.85.0 + terser: 5.39.0 + tsx: 4.19.4 + yaml: 2.8.0 + vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0): dependencies: esbuild: 0.25.5 @@ -46317,9 +46694,9 @@ snapshots: webpack-cli@5.1.4(webpack@5.99.9): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.99.9))(webpack@5.99.9(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.99.9))(webpack@5.99.9(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.99.9))(webpack@5.99.9(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.99.9) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.99.9) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.99.9) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -46331,6 +46708,15 @@ snapshots: webpack: 5.99.9(webpack-cli@5.1.4) webpack-merge: 5.10.0 + webpack-dev-middleware@5.3.4(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.2 + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) + webpack-dev-middleware@5.3.4(webpack@5.99.9(@swc/core@1.11.29)): dependencies: colorette: 2.0.20 @@ -46340,7 +46726,7 @@ snapshots: schema-utils: 4.3.2 webpack: 5.99.9(@swc/core@1.11.29) - webpack-dev-middleware@7.4.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + webpack-dev-middleware@7.4.2(webpack@5.98.0(@swc/core@1.11.29)): dependencies: colorette: 2.0.20 memfs: 4.17.2 @@ -46391,7 +46777,47 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + webpack-dev-server@4.15.2(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.22 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.21.2 + graceful-fs: 4.2.11 + html-entities: 2.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.22)(debug@4.4.1) + ipaddr.js: 2.2.0 + launch-editor: 2.10.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.3.2 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 5.3.4(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) + ws: 8.18.2 + optionalDependencies: + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-dev-server@5.2.0(webpack@5.98.0(@swc/core@1.11.29)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -46418,7 +46844,7 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + webpack-dev-middleware: 7.4.2(webpack@5.98.0(@swc/core@1.11.29)) ws: 8.18.2 optionalDependencies: webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) @@ -46444,7 +46870,7 @@ snapshots: webpack-sources@3.3.0: {} - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(@rspack/core@1.3.13)(webpack@5.98.0(@swc/core@1.11.29)))(webpack@5.98.0(@swc/core@1.11.29)): dependencies: typed-assert: 1.0.9 webpack: 5.98.0(@swc/core@1.11.29)(esbuild@0.25.4) @@ -46453,37 +46879,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.98.0(@swc/core@1.11.29): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.25.0 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.11.29)(webpack@5.98.0(@swc/core@1.11.29)) - watchpack: 2.4.4 - webpack-sources: 3.3.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - optional: true - webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4): dependencies: '@types/eslint-scope': 3.7.7 @@ -46506,7 +46901,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.11.29)(esbuild@0.25.4)(webpack@5.98.0(@swc/core@1.11.29)(esbuild@0.25.4)) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.29)(esbuild@0.25.4)(webpack@5.98.0(@swc/core@1.11.29)) watchpack: 2.4.4 webpack-sources: 3.3.0 transitivePeerDependencies: @@ -46514,7 +46909,7 @@ snapshots: - esbuild - uglify-js - webpack@5.99.9: + webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -46537,7 +46932,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(webpack@5.99.9) + terser-webpack-plugin: 5.3.14(@swc/core@1.11.29(@swc/helpers@0.5.13))(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))) watchpack: 2.4.4 webpack-sources: 3.3.0 transitivePeerDependencies: @@ -46630,7 +47025,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(webpack@5.99.9(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.14(webpack@5.99.9) watchpack: 2.4.4 webpack-sources: 3.3.0 optionalDependencies: @@ -46640,7 +47035,7 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.99.9(@swc/core@1.11.29)): + webpackbar@6.0.1(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13))): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -46649,7 +47044,7 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.9.0 - webpack: 5.99.9(@swc/core@1.11.29) + webpack: 5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.13)) wrap-ansi: 7.0.0 websocket-driver@0.7.4: From 0cbe200ccf8b445ce7a5fb233016982a340c1373 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Wed, 17 Sep 2025 16:46:23 +0200 Subject: [PATCH 2/4] Add todolist demo --- .../src/app/views/todo-lists/edit/page.tsx | 15 +++++++++------ .../src/components/providers/SystemProvider.tsx | 10 ++++++++-- .../src/components/widgets/TodoListsWidget.tsx | 16 ++++++++++++++-- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx index 7a488792f..c34e00d9b 100644 --- a/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx +++ b/demos/react-supabase-todolist-sync-streams/src/app/views/todo-lists/edit/page.tsx @@ -58,7 +58,8 @@ const TodoEditSection = () => { created_at DESC, id `, - [listID] + [listID], + { streams: [{ name: 'todos', parameters: { list: listID } }] } ); const [showPrompt, setShowPrompt] = React.useState(false); @@ -96,11 +97,13 @@ const TodoEditSection = () => { - - {todos.map((r) => ( - - ))} - + {todos && ( + + {todos.map((r) => ( + + ))} + + )} {/* TODO use a dialog service in future, this is just a simple example app */} { const l = connector.registerListener({ initialized: () => {}, sessionStarted: () => { - powerSync.connect(connector); + powerSync.connect(connector, { clientImplementation: SyncClientImplementation.RUST }); } }); diff --git a/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx b/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx index eb202789f..89b357b8a 100644 --- a/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx +++ b/demos/react-supabase-todolist-sync-streams/src/components/widgets/TodoListsWidget.tsx @@ -1,5 +1,5 @@ import { List } from '@mui/material'; -import { useWatchedQuerySubscription } from '@powersync/react'; +import { usePowerSync, useStatus, useWatchedQuerySubscription } from '@powersync/react'; import { useQueryStore } from '../providers/SystemProvider'; import { ListItemWidget } from './ListItemWidget'; @@ -12,6 +12,8 @@ const description = (total: number, completed: number = 0) => { }; export function TodoListsWidget(props: TodoListsWidgetProps) { + const db = usePowerSync(); + const status = useStatus(); const queries = useQueryStore(); const { data: listRecords, isLoading } = useWatchedQuerySubscription(queries!.lists); @@ -22,12 +24,22 @@ export function TodoListsWidget(props: TodoListsWidgetProps) { return ( {listRecords.map((r) => { + const listStatus = status.forStream({ name: 'todos', parameters: { list: r.id } }); + let listDescription = ''; + if (listStatus == null || !listStatus.subscription.active) { + listDescription = 'Items in this list not loaded - open list for details.'; + } else if (!listStatus.subscription.hasSynced) { + listDescription = 'Loading items in this list...'; + } else { + listDescription = description(r.total_tasks, r.completed_tasks); + } + return ( ); From 35a051d17e0a0c62809624096b0c38ccfd9b2743 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Wed, 17 Sep 2025 17:40:29 +0200 Subject: [PATCH 3/4] Remove changelog --- .../CHANGELOG.md | 297 +----------------- 1 file changed, 1 insertion(+), 296 deletions(-) diff --git a/demos/react-supabase-todolist-sync-streams/CHANGELOG.md b/demos/react-supabase-todolist-sync-streams/CHANGELOG.md index ff00bb8c0..4fdbdb731 100644 --- a/demos/react-supabase-todolist-sync-streams/CHANGELOG.md +++ b/demos/react-supabase-todolist-sync-streams/CHANGELOG.md @@ -1,296 +1 @@ -# 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 +# react-supabase-todolist-sync-streams From b294bedce3e776772eb088cf414782e62094573b Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 29 Sep 2025 11:04:58 +0200 Subject: [PATCH 4/4] Update lockfile --- pnpm-lock.yaml | 58 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f3eed9cc8..87295be68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: 12.1.4(rollup@4.14.3)(tslib@2.8.1)(typescript@5.9.2) '@vitest/browser': specifier: ^3.2.4 - version: 3.2.4(playwright@1.52.0)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vitest@3.2.4) + version: 3.2.4(playwright@1.52.0)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0))(vitest@3.2.4) husky: specifier: ^9.0.11 version: 9.1.7 @@ -747,7 +747,7 @@ importers: version: 0.19.8(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) vite-plugin-top-level-await: specifier: ^1.4.1 - version: 1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + version: 1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) vite-plugin-wasm: specifier: ^3.3.0 version: 3.4.1(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) @@ -1431,7 +1431,7 @@ importers: version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1) '@journeyapps/wa-sqlite': specifier: ^1.3.1 - version: 1.3.1 + version: 1.3.2 '@mui/icons-material': specifier: ^5.15.12 version: 5.17.1(@mui/material@5.17.1(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react@18.3.1))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.23)(react@18.3.1) @@ -1556,7 +1556,7 @@ importers: version: 1.3.1(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(@babel/parser@7.27.4)(rollup@2.79.2)(vue@3.4.21(typescript@5.9.2)) + version: 0.26.0(@babel/parser@7.27.4)(rollup@4.41.1)(vue@3.4.21(typescript@5.9.2)) vite: specifier: ^5.2.0 version: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) @@ -1565,7 +1565,7 @@ importers: version: 0.19.8(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) vite-plugin-top-level-await: specifier: ^1.4.1 - version: 1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) + version: 1.5.0(rollup@4.41.1)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)) vite-plugin-vuetify: specifier: ^2.0.3 version: 2.1.1(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0))(vue@3.4.21(typescript@5.9.2))(vuetify@3.6.8) @@ -28707,9 +28707,7 @@ snapshots: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - - bufferutil - supports-color - - utf-8-validate '@react-native/metro-config@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.27.2(@babel/core@7.26.10))': dependencies: @@ -28720,9 +28718,7 @@ snapshots: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - - bufferutil - supports-color - - utf-8-validate '@react-native/normalize-color@2.1.0': {} @@ -29107,6 +29103,14 @@ snapshots: optionalDependencies: rollup: 4.14.3 + '@rollup/pluginutils@5.1.4(rollup@4.41.1)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.41.1 + '@rollup/rollup-android-arm-eabi@4.14.3': optional: true @@ -31772,6 +31776,26 @@ snapshots: - msw - utf-8-validate - vite + optional: true + + '@vitest/browser@3.2.4(playwright@1.52.0)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0))(vitest@3.2.4)': + dependencies: + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) + '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0)) + '@vitest/utils': 3.2.4 + magic-string: 0.30.17 + sirv: 3.0.1 + tinyrainbow: 2.0.0 + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/browser@3.2.4)(jsdom@24.1.3)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) + ws: 8.18.2 + optionalDependencies: + playwright: 1.52.0 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite '@vitest/expect@3.2.4': dependencies: @@ -31789,6 +31813,14 @@ snapshots: optionalDependencies: vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) + '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)(tsx@4.19.4)(yaml@2.8.0) + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 @@ -46067,10 +46099,10 @@ snapshots: unplugin: 2.0.0-beta.1 vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) - unplugin-vue-components@0.26.0(@babel/parser@7.27.4)(rollup@2.79.2)(vue@3.4.21(typescript@5.9.2)): + unplugin-vue-components@0.26.0(@babel/parser@7.27.4)(rollup@4.41.1)(vue@3.4.21(typescript@5.9.2)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@rollup/pluginutils': 5.1.4(rollup@4.41.1) chokidar: 3.6.0 debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 @@ -46336,12 +46368,12 @@ snapshots: - vue - webpack-cli - vite-plugin-top-level-await@1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)): + vite-plugin-top-level-await@1.5.0(rollup@2.79.2)(vite@5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@2.79.2) '@swc/core': 1.11.29(@swc/helpers@0.5.13) uuid: 10.0.0 - vite: 5.4.19(@types/node@22.15.29)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) + vite: 5.4.19(@types/node@20.17.57)(less@4.2.2)(lightningcss@1.30.1)(sass@1.89.1)(terser@5.40.0) transitivePeerDependencies: - '@swc/helpers' - rollup

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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/demos/react-supabase-todolist-sync-streams/public/icons/icon.png b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/public/powersync-logo.svg b/demos/react-supabase-todolist-sync-streams/public/powersync-logo.svg new file mode 100644 index 000000000..05e31b6ed --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/public/powersync-logo.svg @@ -0,0 +1 @@ + diff --git a/demos/react-supabase-todolist-sync-streams/public/supabase-logo.png b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/auth/login/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/auth/login/page.tsx new file mode 100644 index 000000000..2ed0b1ce6 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/auth/register/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/auth/register/page.tsx new file mode 100644 index 000000000..4f2010ec4 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/globals.css b/demos/react-supabase-todolist-sync-streams/src/app/globals.css new file mode 100644 index 000000000..5ceb26045 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/index.tsx b/demos/react-supabase-todolist-sync-streams/src/app/index.tsx new file mode 100644 index 000000000..e6aa8fae0 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/page.tsx new file mode 100644 index 000000000..f17886aac --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/router.tsx b/demos/react-supabase-todolist-sync-streams/src/app/router.tsx new file mode 100644 index 000000000..93647f6a9 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/utils/fts_helpers.ts b/demos/react-supabase-todolist-sync-streams/src/app/utils/fts_helpers.ts new file mode 100644 index 000000000..f2b4a6898 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/utils/fts_setup.ts b/demos/react-supabase-todolist-sync-streams/src/app/utils/fts_setup.ts new file mode 100644 index 000000000..ddf99c162 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/utils/helpers.ts b/demos/react-supabase-todolist-sync-streams/src/app/utils/helpers.ts new file mode 100644 index 000000000..5a9054bd6 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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/demos/react-supabase-todolist-sync-streams/src/app/views/layout.tsx b/demos/react-supabase-todolist-sync-streams/src/app/views/layout.tsx new file mode 100644 index 000000000..f3a0d9404 --- /dev/null +++ b/demos/react-supabase-todolist-sync-streams/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 */} +