diff --git a/.env.example b/.env.example
index 448fc72d..0affb039 100644
--- a/.env.example
+++ b/.env.example
@@ -76,9 +76,12 @@ CLERK_SECRET_KEY=""
# Clerk Dashboard > [app] > Organizations Settings
NEXT_PUBLIC_ORGANIZATIONS_ENABLED="false"
-# || NOTE: NEXT_PUBLIC_AUTH_PROVIDER was removed in Relivator 1.2.6
-# || To switch the provider from Neon, modify `reliverse.config.ts`
-# || Automatic switcher coming in Relivator 1.3.x version.
+# || NOTE: NEXT_PUBLIC_AUTH_PROVIDER was removed in Relivator 1.2.6.
+# || To switch the provider from Neon, modify `reliverse.config.ts`.
+# || Automatic switcher coming in the release of Relivator v1.3.0 GA.
+
+# || Auth.js Guide: https://nextjs.org/learn/dashboard-app/adding-authentication
+# || Clerk Guide: https://clerk.com/docs/quickstarts/nextjs
# ====================================================
# PAYMENT SYSTEM
@@ -105,11 +108,11 @@ STRIPE_ENTERPRISE_SUBSCRIPTION_PRICE_ID=""
# || Currently, "next dev --turbo" does not read the .env file after launch.
# || So, you need to close the application using Cmd/Ctrl+C and run it again.
-# Set to true if you want to enable addons/reliverse/relimter/python/index.ts
-# Note: addons/reliverse/relimter/python/index.ts is a more stable version.
+# Set to true if you want to enable addons/scripts/reliverse/relimter/python/index.ts
+# Note: addons/scripts/reliverse/relimter/python/index.ts is a more stable version.
PYTHON_INSTALLED="false"
-# Set to true if you want to enable addons/reliverse/toolbar/index.ts toolbar
+# Set to true if you want to enable addons/scripts/reliverse/toolbar/index.ts toolbar
# https://vercel.com/docs/workflow-collaboration/vercel-toolbar
ENABLE_VERCEL_TOOLBAR="false"
ENABLE_VT_ON_PRODUCTION="false"
@@ -150,6 +153,11 @@ NEXT_PUBLIC_RESEND_API_KEY=""
# Set email: https://resend.com/domains or use Resend's test email
NEXT_PUBLIC_RESEND_EMAIL_FROM="onboarding@resend.dev"
+# https://novu.co
+NOVU_SECRET_KEY=""
+# https://your-live-domain.com/api/novu
+NOVU_BRIDGE_URL=""
+
# ====================================================
# ADDITIONAL
# ====================================================
@@ -164,6 +172,9 @@ LOGLIB_ID=""
# Open your server settings > Integrations > New Webhook > obtain the URL.
DISCORD_WEBHOOK_URL=""
+# Do not enable it, it's used exclusively by https://relivator.bleverse.com
+DEMO_NOTES_ENABLED="false"
+
# ====================================================
# STRIPE INSTRUCTIONS
# ====================================================
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 40df0a30..a53d356a 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -1,8 +1,10 @@
# Changelog
-
+
## What's Happening
@@ -37,7 +39,7 @@ Neon PostgreSQL is now the default database instead of PlanetScale MySQL, as the
### Security and Code Improvements
- **Type Safety and Editor Autocomplete**: This update enhances type safety and editor autocomplete for Drizzle ORM libraries.
-- **Prettier Replaced by Biome**: Prettier has been removed in favor of Biome. The Pterrier's config will be removed in the next version from the `addons\terminal\reliverse\relimter\core\temp` folder. You can re-add it by running the `reliverse` command starting from Relivator 1.3.0.
+- **Prettier Replaced by Biome**: Prettier has been removed in favor of Biome. The Pterrier's config will be removed in the next version from the `addons\scripts\reliverse\relimter\core\temp` folder. You can re-add it by running the `reliverse` command starting from Relivator 1.3.0.
### Reliverse Scripts Transition
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
index eafdf5ef..83950dde 100644
--- a/.github/CODE_OF_CONDUCT.md
+++ b/.github/CODE_OF_CONDUCT.md
@@ -1,8 +1,10 @@
# Code of Conduct
-
+
## Our Pledge
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 19b98ce2..e626ce43 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -1,8 +1,10 @@
# Contributing
-
+
[![Join the Reliverse Discord](https://discordapp.com/api/guilds/1075533942096150598/widget.png?style=banner2)][bleverse-discord]
diff --git a/.github/GITGUIDE.md b/.github/GITGUIDE.md
index 06e840d1..a5d7e29a 100644
--- a/.github/GITGUIDE.md
+++ b/.github/GITGUIDE.md
@@ -1,8 +1,10 @@
# The Detailed Git Guide
-
+
*It is recommended to install Relivator according to the detailed instructions in [README.md](https://github.com/blefnk/relivator#readme) to feel more confident when starting to learn Git.*
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
index 4be5bd97..954d1d57 100644
--- a/.github/SECURITY.md
+++ b/.github/SECURITY.md
@@ -1,8 +1,10 @@
# Security Policy
-
+
## Supported Versions
diff --git a/.github/TEMPLATE.md b/.github/TEMPLATE.md
index 40ad5e82..624ae408 100644
--- a/.github/TEMPLATE.md
+++ b/.github/TEMPLATE.md
@@ -2,9 +2,11 @@ Here's the corrected version of your text:
# Add Your Commit Title Here
-
+
*This is the current repository's starting point for `git commit` messages. Feel free to edit this template to suit your needs. For more information about `git commit` messages, visit: [Git Commit Message Guidelines](https://github.com/joelparkerhenderson/git_commit_message)*
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index 366355bd..529a996d 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -1,8 +1,10 @@
# Contributing Guidelines for Our Documentation
-
+
[📖 Docs](https://docs.bleverse.com)
diff --git a/.github/funding.yml b/.github/funding.yml
index b3f553ae..aa45a888 100644
--- a/.github/funding.yml
+++ b/.github/funding.yml
@@ -4,3 +4,4 @@ buy_me_a_coffee: blefnk
custom:
- https://paypal.me/blefony
- https://ko-fi.com/blefnk
+ - https://donatello.to/blefnk
diff --git a/.github/workflows/NOVU.txt b/.github/workflows/NOVU.txt
new file mode 100644
index 00000000..539fee82
--- /dev/null
+++ b/.github/workflows/NOVU.txt
@@ -0,0 +1,27 @@
+name: Novu Sync
+
+on:
+ workflow_dispatch:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ # https://github.com/novuhq/actions-novu-sync
+ - name: Sync State to Novu
+ uses: novuhq/actions-novu-sync@v2
+ with:
+ # The secret key used to authenticate with Novu Cloud
+ # To get the secret key, go to https://web.novu.co/api-keys.
+ # Required.
+ secret-key: ${{ secrets.NOVU_SECRET_KEY }}
+
+ # The publicly available endpoint hosting the bridge application
+ # where notification entities (eg. workflows, topics) are defined.
+ # Required.
+ bridge-url: ${{ secrets.NOVU_BRIDGE_URL }}
+
+ # The Novu Cloud API URL to sync with.
+ # Optional.
+ # Defaults to https://api.novu.co
+ api-url: https://api.novu.co
diff --git a/.putout.json b/.putout.json
index 61461d84..557ec458 100644
--- a/.putout.json
+++ b/.putout.json
@@ -167,12 +167,12 @@
"addons/.output",
"addons/browser/reliverse/tools/components/ReliverseToolbar.tsx",
"addons/cluster/reliverse/ui/cluster-readme.tsx",
- "addons/reliverse/academy/fileHandler.ts",
- "addons/reliverse/academy/leaders.ts",
- "addons/reliverse/relicon/setup/prompt/appts.ts",
- "addons/reliverse/relicon/setup/prompt/canary/json.ts",
- "addons/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/reliverse/relimter/putout/tasks/index.ts",
+ "addons/scripts/reliverse/academy/fileHandler.ts",
+ "addons/scripts/reliverse/academy/leaders.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/appts.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/canary/json.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/relimter/putout/tasks/index.ts",
"src/app/[locale]/blog/new/**/*.tsx",
"src/components/Common/loading-button.tsx",
"src/components/Common/password-input.tsx",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 326da7b1..7a1a7980 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -66,6 +66,8 @@
"debug.toolBarLocation": "docked",
"diffEditor.experimental.showMoves": true,
"diffEditor.hideUnchangedRegions.enabled": true,
+ "editor.acceptSuggestionOnCommitCharacter": true,
+ "editor.acceptSuggestionOnEnter": "on",
"editor.bracketPairColorization.enabled": true,
"editor.bracketPairColorization.independentColorPoolPerBracketType": true,
"editor.codeActionsOnSave": {
@@ -105,12 +107,22 @@
"editor.minimap.enabled": true,
"editor.minimap.renderCharacters": false,
"editor.multiCursorModifier": "alt",
+ "editor.parameterHints.enabled": true,
+ "editor.quickSuggestions": {
+ "comments": true,
+ "other": true,
+ "strings": true
+ },
+ "editor.quickSuggestionsDelay": 10,
"editor.rulers": [54, 74, 119],
"editor.smoothScrolling": true,
"editor.snippets.codeActions.enabled": true,
"editor.stickyScroll.enabled": true,
"editor.suggest.insertMode": "insert",
- "editor.suggestSelection": "recentlyUsed",
+ "editor.suggest.localityBonus": true,
+ "editor.suggestOnTriggerCharacters": true,
+ "editor.suggestSelection": "first",
+ "editor.tabCompletion": "off",
"editor.tabSize": 2,
"editor.tokenColorCustomizations": {
"comments": "#746f68"
@@ -146,6 +158,7 @@
"editor.unicodeHighlight.allowedLocales": {
"tr": true
},
+ "editor.wordBasedSuggestions": "matchingDocuments",
"editor.wordWrap": "on",
"eslint.codeActionsOnSave.mode": "problems",
"eslint.enable": true,
@@ -299,7 +312,7 @@
"faq.3.summary"
],
"i18n-ally.keystyle": "nested",
- "i18n-ally.localesPaths": ["messages"],
+ "i18n-ally.localesPaths": ["addons/messages/reliverse"],
"i18n-ally.sourceLanguage": "en",
"indentRainbow.colors": [
"rgba(58, 12, 163,0.15)",
@@ -382,6 +395,24 @@
"ruff.lineLength": 88,
"ruff.nativeServer": true,
"scm.inputFontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
+ "search.exclude": {
+ "**/*.lock": true,
+ "**/.eslintcache": true,
+ "**/.idea": true,
+ "**/.next": true,
+ "**/.pnp.*": true,
+ "**/.venv": true,
+ "**/.yarn": true,
+ "**/build": true,
+ "**/dist": true,
+ "**/next-env.d.ts": true,
+ "**/package-lock.json": true,
+ "**/pnpm-lock.yaml": true,
+ "**/reset.d.ts": true,
+ "**/tsconfig.tsbuildinfo": true,
+ "**/yarn-error.log": true
+ },
+ "search.useIgnoreFiles": false,
"tailwindCSS.classAttributes": ["class", "className", "classNames"],
"tailwindCSS.experimental.classRegex": [
["(?:'|\"|`)([^']*)(?:'|\"|`)", "cx\\(([^)]*)\\)"],
@@ -424,6 +455,7 @@
"typescript.preferences.includePackageJsonAutoImports": "on",
"typescript.referencesCodeLens.enabled": true,
"typescript.reportStyleChecksAsWarnings": true,
+ "typescript.tsdk": "node_modules\\typescript\\lib",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.validate.enable": true,
"window.autoDetectColorScheme": true,
diff --git a/README.md b/README.md
index bf7b5181..ccdcf36b 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,16 @@
# Relivator 1.2.6: Next.js 15, React 19, TailwindCSS Template
-
+
-[🌐 Demo](https://relivator.bleverse.com) | [👋 Introduction](#introduction) | [🏗️ Installation](#installation) | [🩷 Sponsors](#sponsors) | [⚙️ Scripts](#scripts) | [🤔 FAQ](#faq) | [🔍 Details](#details) | [✅ Roadmap](#roadmap) | [📖 Changelog](#changelog)
+[🌐 Demo](https://relivator.bleverse.com) | [👋 Introduction](#introduction) | [🏗️ Installation](#installation) | [🩷 Sponsors](#sponsors)
+
+[⚙️ Scripts](#scripts) | [🤔 FAQ](#faq) | [🔍 Details](#details) | [✅ Roadmap](#roadmap) | [📖 Changelog](#changelog)
@@ -14,22 +18,33 @@
-Stop jumping from one starter to the next. With [Relivator](https://github.com/blefnk/relivator-nextjs-template#readme), your possibilities are endless! You can create anything you want; all the tools are ready and waiting for you. Please take a moment to read through the information below. You'll find helpful details about how everything works in the project, as well as an extensive list of features.
+Stop jumping from one starter to the next. With [Relivator](https://github.com/blefnk/relivator-nextjs-template#readme), your possibilities are endless! You can create anything you want; all the tools are ready and waiting for you.
The entire Relivator project was developed by one person, [Nazar Kornienko (blefnk)](https://github.com/blefnk)! Some people have already contributed, and you’re welcome to do the same—any contributions at all are appreciated! Your contributions will not be forgotten; [our awesome community](https://discord.gg/Pb8uKbwpsJ) value them highly, and you might even receive financial gratitude from the project's creator in the future. Let's come together to create the most coolest Next.js template in the world! This will be a joint effort and a shared victory, a true win-win. Thank you all for your contributions and [financial support](#sponsors)!
+Please take a moment to read through the information below. You'll find helpful details about how everything works in the project, as well as an extensive list of features.
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[![Discord chat][badge-discord]][link-discord]
@@ -42,28 +57,28 @@ The entire Relivator project was developed by one person, [Nazar Kornienko (blef
> *«I couldn't find the ~~sports car~~ Next.js starter of my dreams, so I built it myself.»* © ~~Ferdinand Porsche~~ [@blefnk](https://github.com/blefnk)
-Our goal is to create the world's most feature-rich and globally accessible Next.js starter. It offers more than just code—it's an experience. It's stable and production-ready. Scroll down to see the impressive list of project features, including the ability to switch between Clerk/NextAuth.js and Drizzle's MySQL/PostgreSQL on the fly. Welcome to the Relivator starter and the Reliverse community!
+Our goal is to create the world's most feature-rich and globally accessible Next.js starter. It offers more than just code—it's an experience. Scroll down to see the impressive list of project features, including the ability to switch between Clerk/Auth.js (next-auth@beta/NextAuth.js) and Drizzle's MySQL/PostgreSQL on the fly. Welcome to the Relivator starter and the Reliverse community!
-
+
## Introduction
@@ -83,48 +98,52 @@ Relivator 1.2.6 was released on August 4, 2024! We are now actively working on t
*The fastest released version will be called: Relivator v1.3.0-canary.0*.
-**🔥 [Important note]: Please note that currently, v1.2.6 requires specifying Clerk environment variables keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect, meaning something is broken somewhere, please let us know.**
+**🔥 Important Note:** Relivator currently requires specifying Clerk environment variable keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect and something is broken, please let us know.
## What About the Future?! Any News on 1.3.0?
-**🎉 The upcoming Relivator 1.3.0 will have as few dependencies as possible! Yeah, finally!**
+**🎉 The upcoming Relivator 1.3.0 will have as few dependencies as possible! Finally!**
-I'm ([blefnk](https://github.com/blefnk)) working to automate the Relivator's developer experience as much as possible, including the installation process. The upcoming version 1.3.0 will feature a significant automated installation. If you wish to try the initial alpha version of one of my many automation scripts, use the `pnpm deps:install` (or `pnpm deps:install-all`) command. This script already allows you to install and remove project packages, and it also works as a linter. You can check the comprehensive number of predefined commands configured inside the 'scripts' section of the 'package.json' file. However, before running this script, you should manually install the essentials:
+I'm ([blefnk](https://github.com/blefnk)) working to automate the Relivator's developer experience as much as possible, including the installation process. The upcoming version 1.3.0 will feature significant automated installation. If you wish to try the initial alpha version of one of my many automation scripts, use the `pnpm deps:install` (or `pnpm deps:install-all`) command. This script already allows you to install and remove project packages, and it also works as a linter. You can check the comprehensive number of predefined commands configured inside the 'scripts' section of the 'package.json' file. However, before running this script, you should manually install the essentials:
-- npx nypm add typescript tsx nypm @mnrendra/read-package @clack/prompts
-- npx nypm add pathe fast-npm-meta semver @types/semver redrun axios
-- bun|yarn|pnpm dlx jsr add @reliverse/core (or: npx jsr add @reliverse/core)
+- `npx npm add typescript tsx npm @mnrendra/read-package @clack/prompts`
+- `npx npm add pathe fast-npm-meta semver @types/semver redrun axios`
+- `bun|yarn|pnpm dlx jsr add @reliverse/core` (or: `npx jsr add @reliverse/core`)
-Thanks to @reliverse/addons, everything will now work seamlessly with minimal dependencies. Each specific functionality and component is separated into its own library and published on [npmjs](https://npmjs.com) and/or [jsr](https://jsr.io), allowing you to install only what you need. With Relivator 1.3.0, you can say goodbye to the frustration of unnecessary components in templates. You get the core package and can add functionality and UI components as needed.
+Thanks to @reliverse/addons, everything now works smoothly with fewer dependencies. In the future, each feature and component will be split into its own library and published on [npmjs](https://npmjs.com) and/or [jsr](https://jsr.io), so you can install only what you need. With the future Relivator 1.3.0 version, you won't have to deal with unnecessary components in web templates anymore. You get the core package and can add features and UI components as you need them.
-The 'addons' folder is divided into two contexts: the browser and the terminal. The 'terminal' folder contains functions used by the CLI, while the 'src' folder is dedicated exclusively to the browser context, as the browser doesn't support certain features. So, the 'terminal' supports everything what contains 'browser', but not vice versa, unfortunately.
+The 'addons' folder is divided into two parts: terminal context and browser context (it's everything, excluding the 'addons/scripts' folder). The 'addons/scripts' folder contains functions used by the CLI (command line interface), while the 'src' and 'addons/*' folders (excluding 'addons/scripts') are for the browser, since the browser doesn't support certain JS features. So, while 'addons/scripts' has everything needed for the whole app, not everything can import from 'addons/scripts'.
You’ll have two installation options: the classic method using 'package.json' or a new approach inspired by shadcn/ui, where you keep all the content directly in your project (currently in test mode in Relivator 1.2.6—check the `addons` folder or run `pnpm addons`). While the classic method is recommended for most cases, feel free to explore the new approach!
The 'addons' folder is already packed with many exciting features, especially related to codemods, and includes the **@reliverse/academy game**. This game allows you to test your knowledge of JavaScript/TypeScript, React/Next.js, Relivator/Reliverse (make food/tea/coffee before trying this test—it has a lot of questions!), and even ESLint v9 ecosystems. It features a leaderboard, enabling you to compete with others by sharing `data/players.json` and `data/progress.json` save files. Plus, an achievement system keeps you motivated!
-I can’t wait for you to experience the new and improved Relivator 1.3.0! By the way, the items in the [✅ Roadmap](#roadmap) section will finally be checked off! But to make 1.3.0 truly stable and great, let's first work together on Relivator v1.3.0-canary.0, which is coming soon! If you want to get it even faster, there is now a 'dev' branch. We recently opened the project pages on financial support platforms, and currently, any contribution grants you access to the 'dev' branch. Thank you for your attention!
+I can’t wait for you to experience the new and improved Relivator 1.3.0! By the way, the items in the [✅ Roadmap](#roadmap) section will finally be checked off! But to make 1.3.0 truly stable, production-ready, and just great, let's first work together on Relivator v1.3.0-canary.0, which is coming soon! If you want to get it even faster, there is now a 'dev' branch. We recently opened the project pages on financial support platforms, and currently, any contribution grants you access to the 'dev' branch. Thank you for your attention!
## Sponsors
**[We're Growing Fast! A Huge Thanks to All Our Supporters!](https://github.com/blefnk/relivator-nextjs-template/stargazers)**
-Developing something as ambitious as Relivator obviously takes a lot of time, especially since the project is primarily developed by just one person. The development could be significantly accelerated by hiring additional developers. Therefore, @blefnk Nazar Kornienko, the author of this project, will be immensely grateful to anyone who can donate to the project in any amount. A big thank you to everyone in advance!
+Developing something as ambitious as Relivator takes a lot of time, especially since the project is primarily developed by just one person. The development could be significantly accelerated by hiring additional developers. Therefore, @blefnk (Nazar Kornienko), the author of this project, would be immensely grateful to anyone who can donate to the project in any amount. A big thank you to everyone in advance!
+
+**[Visit the "Donate to Relivator" page to learn more.](https://relivator.bleverse.com/en/donate)**
-*The Relivator is currently sponsored by the following awesome people/organizations:*
+*Relivator is currently sponsored by the following awesome people/organizations:*
### 💚 [GitHub Sponsors](https://github.com/sponsors/blefnk) 🩵 [PayPal](https://paypal.me/blefony) 🧡 [Patreon](https://patreon.com/blefnk) 💛 [Buy Me a Coffee](https://buymeacoffee.com/blefnk) 🩷 [Ko-fi](https://ko-fi.com/blefnk)
*Love using this project? If you find this project useful, I'd appreciate a cup of coffee. You'll get Reliverse Pro, access to some private repositories, pre-release downloads, and the ability to influence my project planning. Please click on the donation platforms above to learn more. Thank you, everyone, for any kind of support!*
-- @devmarauda *(Discord: kongkong86)*
-- @svict4
-- [@mfpiano](https://youtube.com/@mfpiano)
+*I retrieve your data from donation and related platforms. If you do not wish for certain information about you to be included here, please contact me.*
+
+- [@devmarauda](https://github.com/devmarauda) *(Discord: kongkong86 | Name: Daniel Humphreys)*
+- [@svict4](https://github.com/svict4) *(Discord: svict4 | Name: Simon Victory)*
+- [@mfpiano](https://youtube.com/@mfpiano) *(Discord: mfpiano | Name: Petro Melnyk)*
### 💜 [Discord Server Boost](https://discord.gg/C4Z46fHKQ8)
-- @Saif-V *(Discord: Gh0st)*
-- @demiroo *(Discord: demiroezkan)*
+- [@Saif-V](https://github.com/Saif-V) *(Discord: Gh0st | Name: Saif Al-Hashar)*
+- [@demiroo](https://github.com/demiroo) *(Discord: demiroezkan | Name: Özkan Demir)*
## 🖥️ Hire Me
@@ -159,39 +178,43 @@ Currently, I’m in a challenging financial situation, so I would greatly apprec
**By The Way:** *Sometimes, we gift [`Reliverse Pro: Backers` pledge](https://patreon.com/blefnk), which gives you early access to the Reliverse projects ecosystem, including Relivator, as well as upcoming plugins, to randomly selected individuals. We also give away other interesting things. Simply `star this repository` and [let us know how to reach you](https://forms.gle/NXZ6QHpwrxh52VA36). To join the discussion, hop into [the project's Discord](https://discord.gg/Pb8uKbwpsJ).*
-### One-click Installation
+### One-click Installation Method (**find recommended method below**)
-**🔥 [Important note]: Please note that currently, v1.2.6 requires specifying Clerk environment variables keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect, meaning something is broken somewhere, please let us know.**
+**🔥 Important Note:** Relivator currently requires specifying Clerk environment variable keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect and something is broken, please let us know.
By using this method, you will get only the front-end, with all the functionality disabled (learn how to enable it by reading the manual instructions below):
-[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fblefnk%2Frelivator-nextjs-template\&project-name=relivator\&repository-name=relivator)
+[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fblefnk%2Frelivator-nextjs-template&project-name=relivator&repository-name=my-new-repository-name)
+
+**Please note:** As of version 1.2.6 and 1.3.0 (dev and canary), it is recommended to use Clerk as the authProvider (specified in the `reliverse.config.ts` file) since this version has been more thoroughly tested with Clerk. We are working on fixing and improving the stability of Auth.js (next-auth@beta/NextAuth.js) as an authentication provider.
-**Please note, as of version 1.2.6, it is better to use Clerk as the authProvider (specified in the `reliverse.config.ts` file) since this version has been more thoroughly tested with Clerk. We are working on fixing and improving the stability of NextAuth.js as an authentication provider.**
+### Manual Installation: Short Method (**find recommended method below**)
-### Manual Installation: Short Version (for speedrunners)
+**🔥 Important Note:** Relivator currently requires specifying Clerk environment variable keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect and something is broken, please let us know.
-1. **Tools**: Node.js LTS ([Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis)) ➞ `corepack enable pnpm` ➞ [*VSCode*](https://code.visualstudio.com) ➞ [*Git*](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git) ➞ *GitHub Desktop* ([Windows/macOS](https://desktop.github.com) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)) ➞ [Stripe CLI](https://docs.stripe.com/stripe-cli). Windows only: [PowerShell 7.4+](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4#installing-the-msi-package).
-2. **[Fork the repo](https://github.com/blefnk/relivator-nextjs-template/fork)**: Download your fork using GitHub Desktop.
-3. **Setup**: `pnpm install && install:global && pnpm reli:setup` ➞ `pnpm reli:vscode` ➞ `cp .env.example .env` ➞ fill in the values inside of `.env` ➞ `pnpm db:push` ➞ `reliverse.config.ts`.
-4. **Run, Build, Deploy**: Use `pnpm dev` to run the app. Stop with `Ctrl+C`. Build with `pnpm build`. Run `pnpm appts` to check the code. Upload to GitHub with GitHub Desktop. Deploy on [Vercel](https://vercel.com/new).
+1. **Node.js LTS**: **(A)** classical method - [Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis); **(B)** nvm - [Windows](https://github.com/coreybutler/nvm-windows?tab=readme-ov-file#install-nvm-windows) | [macOS/Linux](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating); **(C)** [fnm](https://github.com/Schniz/fnm#readme).
+2. **Tools**: `corepack enable pnpm` ➞ [*VSCode*](https://code.visualstudio.com) ➞ [*Git*](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git) ➞ *GitHub Desktop* ([Windows/macOS](https://desktop.github.com) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)) ➞ [Stripe CLI](https://docs.stripe.com/stripe-cli). Windows only: [PowerShell 7.4+](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4#installing-the-msi-package).
+3. **[Fork the repo](https://github.com/blefnk/relivator-nextjs-template/fork)**: Download your fork using GitHub Desktop.
+4. **Setup**: `pnpm install && install:global && pnpm reli:setup` ➞ `pnpm reli:vscode` ➞ `cp .env.example .env` ➞ fill in the values inside of `.env` ➞ `pnpm db:push` ➞ `reliverse.config.ts`.
+5. **Run, Build, Deploy**: Use `pnpm dev` to run the app. Stop with `Ctrl+C`. Build with `pnpm build`. Run `pnpm appts` to check the code. Upload to GitHub with GitHub Desktop. Deploy on [Vercel](https://vercel.com/new).
-### Manual Installation: Detailed Version (recommended)
+### Manual Installation: Detailed Method (recommended)
-**🔥 [Important note]: Please note that currently, v1.2.6 requires specifying Clerk environment variables keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect, meaning something is broken somewhere, please let us know.**
+**🔥 Important Note:** Relivator currently requires specifying Clerk environment variable keys, as its API has changed. We are working on making Clerk optional again. However, all other environment variables are optional. If this statement is incorrect and something is broken, please let us know.
▲ Hotline: [Email](mailto:blefnk@gmail.com) | [Discord](https://discord.gg/Pb8uKbwpsJ) | [Slack](https://join.slack.com/t/reliverse/shared_invite/zt-2mq703yro-hKnLmsgbIQul0wX~gLxRPA) | [Cal.com](https://cal.com/blefnk/reliverse)
> I'm ([blefnk](https://github.com/blefnk)) working to automate the Relivator's installation process as much as possible. The upcoming version 1.3.0 will feature a significant automated installation. If you wish to try the alpha version of one of my many automation scripts, use the `pnpm deps:install` (or `pnpm deps:install-all`) command. However, before running this script, you should manually install the essentials (edit 'pnpm dlx jsr' if needed): `npx nypm add typescript tsx @clack/prompts @mnrendra/read-package nypm ora pathe fast-npm-meta semver @types/semver redrun && pnpm dlx jsr add @reliverse/core`.
-**Please note, as of version 1.2.6, it is better to use Clerk as the authProvider (specified in the `reliverse.config.ts` file) since this version has been more thoroughly tested with Clerk. We are working on fixing and improving the stability of NextAuth.js as an authentication provider.**
+**Please note**: As of version 1.2.6 and 1.3.0 (dev and canary), it is recommended to use Clerk as the authProvider (specified in the `reliverse.config.ts` file) since this version has been more thoroughly tested with Clerk. We are working on fixing and improving the stability of Auth.js (next-auth@beta/NextAuth.js) as an authentication provider.
-1. **Essential Tools**: Ensure you have *Node.js LTS* ([Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis)) installed. Then, run `corepack enable pnpm` to install [*pnpm*](https://pnpm.io/installation). Also, install [*VSCode*](https://code.visualstudio.com), [*Git*](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git), *GitHub Desktop* ([Windows/macOS](https://desktop.github.com) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)), and [Stripe CLI](https://docs.stripe.com/stripe-cli). If you're a Windows user: install [PowerShell 7.4+](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4#installing-the-msi-package) as well.
-2. **Project Cloning**: [*Fork the repository*](https://github.com/blefnk/relivator-nextjs-template/fork) or click on the `Use this template` button. Use GitHub Desktop to download it to your device. The project size is about 12MB, but ensure you have at least 7GB of disk space for comfortable work, as the `node_modules` and `.next` folders require it.
-3. **Configuration**: Open the project folder in VSCode. Install the recommended extensions from [.vscode/extensions.json](.vscode/extensions.json) and/or install the advanced VSCode configurations by using `pnpm reli:vscode` (choose the `default` preset for the best experience or the `ultimate` preset for the best experience). You can also refer to the [⚙️ Scripts](#scripts) and [🤔 FAQ](#faq) *RQ19* below to learn more about this script and its configurations. You can press `Cmd/Ctrl+F` and search for "`Q19`/`Q20`" if you want to install more extensions and settings (remember, more extensions mean slower VSCode). Then click `File > Exit` (VSCode will save all your open windows). Open VSCode again. Press `Ctrl+Shift+P` (or just `F1`) and search for `>Create New Terminal`, or just press **Cmd/Ctrl+Shift+~** *(on Windows make sure that it uses PowerShell 7.4+, click the arrow next to + ➞ Select Default Profile ➞ PowerShell)*. If VSCode prompts you to allow the usage of the project's TypeScript version, allow it if you're a Windows user. On other operating systems, you may or may not encounter path issues.
-4. **Environment**: Run `pnpm install` (or `npx nypm install`) and/or, optionally, `install:global` to install the required packages. It is also recommended to configure `reliverse.config.ts` file. Then, optionally, you can use `pnpm deps:install-all`—especially `pnpm deps:install-all` (*this is currently an alpha script*)—to unlock some additional features, like the `eslint.config.ultimate.ts` preset (which will have a `.txt` extension by default starting with Relivator v1.3.0). (NOTE: As of Relivator v1.2.6, the `ultimate` preset is configured by default, so no action is required). Next, configure Relivator to meet your needs using the `pnpm reli:setup` and/or `pnpm reli:vscode` commands, and relaunch VSCode. You have two options: deploy with zero values in the `.env` file (resulting in just the frontend without features related to auth, database, pricing, etc.), or copy the `.env.example` file to a new `.env` file and fill in the values you want (everything is optional starting with Relivator v1.2.6). It is highly recommended to fill in the `DATABASE_URL` field. Then, set the database provider in `drizzle.config.ts` and make changes in related files if needed. Finally, send the database schema to the database using `pnpm db:push`. You can learn more about databases below in the current `README.md` file.
-5. **Run, Stop, Build**: Run the app with `pnpm dev` or `pnpm turbo:dev` (interactive but unstable). Visit to check it out. Stop it by focusing on the console and pressing `Ctrl+C`. After making changes, build the app using `pnpm build` or `pnpm turbo:build`. *Don't worry if you see warnings related to Clerk, React Compiler, Babel, next-auth, etc. when running the build; these are known issues not related to Relivator.* Note that when using the pnpm [turbo:build](https://turbo.build) command, the VSCode terminal may not exit automatically. If this happens, press Cmd/Ctrl+C to close the process manually.
-6. **Check, Commit, Deploy**: To check if the current codebase meets [@reliverse/standard](https://github.com/reliverse/standard), run `pnpm appts` (or `pnpm appts:noputout`, or `pnpm turbo:appts`, or `pnpm appts:nobuild`). Learn more about project scripts in the next section. If everything is fine, upload the project to your GitHub profile using GitHub Desktop. Finally, deploy it by importing the project into [Vercel](https://vercel.com/new), making the website publicly accessible on the internet. Alternatively, you can use `pnpm deploy` or just `vercel` to preview and inspect the local deployment without committing to GitHub every time.
+1. **Node.js LTS**: Ensure you have *Node.js LTS* installed using: **(a)** classical method - [Windows/macOS](https://nodejs.org) | [Linux](https://youtu.be/NS3aTgKztis); **(b)** nvm - [Windows](https://github.com/coreybutler/nvm-windows?tab=readme-ov-file#install-nvm-windows) | [macOS/Linux](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating); **(c)** [fnm](https://github.com/Schniz/fnm#readme).
+2. **Essential Tools**: Then, run `corepack enable pnpm` to install [*pnpm*](https://pnpm.io/installation). Also, install [*VSCode*](https://code.visualstudio.com), [Git](https://learn.microsoft.com/en-us/devops/develop/git/install-and-set-up-git), *GitHub Desktop* ([Windows/macOS](https://desktop.github.com) | [Linux](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69)), and [Stripe CLI](https://docs.stripe.com/stripe-cli). If you're a Windows user: install [PowerShell 7.4+](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4#installing-the-msi-package) as well.
+3. **Project Cloning**: [*Fork the repository*](https://github.com/blefnk/relivator-nextjs-template/fork) or click on the `Use this template` button. Use GitHub Desktop to download it to your device. The project size is about 12MB, but ensure you have at least 7GB of disk space for comfortable work, as the `node_modules` and `.next` folders require it.
+4. **Configuration**: Open the project folder in VSCode. Install the recommended extensions from [.vscode/extensions.json](.vscode/extensions.json) and/or install the advanced VSCode configurations by using `pnpm reli:vscode` (choose the `default` preset for the best experience or the `ultimate` preset for the best experience). You can also refer to the [⚙️ Scripts](#scripts) and [🤔 FAQ](#faq) *RQ19* below to learn more about this script and its configurations. You can press `Cmd/Ctrl+F` and search for "`Q19`/`Q20`" if you want to install more extensions and settings (remember, more extensions mean slower VSCode). Then click `File > Exit` (VSCode will save all your open windows). Open VSCode again. Press `Ctrl+Shift+P` (or just `F1`) and search for `>Create New Terminal`, or just press **Cmd/Ctrl+Shift+~** *(on Windows make sure that it uses PowerShell 7.4+, click the arrow next to + ➞ Select Default Profile ➞ PowerShell)*. If VSCode prompts you to allow the usage of the project's TypeScript version, allow it if you're a Windows user. On other operating systems, you may or may not encounter path issues.
+5. **Environment**: Run `pnpm install` (or `npx nypm install`) and/or, optionally, `install:global` to install the required packages. It is also recommended to configure `reliverse.config.ts` file. Then, optionally, you can use `pnpm deps:install-all`—especially `pnpm deps:install-all` (*this is currently an alpha script*)—to unlock some additional features, like the `eslint.config.ultimate.ts` preset (which will have a `.txt` extension by default starting with Relivator v1.3.0). (NOTE: As of Relivator v1.2.6, the `ultimate` preset is configured by default, so no action is required). Next, configure Relivator to meet your needs using the `pnpm reli:setup` and/or `pnpm reli:vscode` commands, and relaunch VSCode. You have two options: deploy with zero values in the `.env` file (resulting in just the frontend without features related to auth, database, pricing, etc.), or copy the `.env.example` file to a new `.env` file and fill in the values you want (everything is optional starting with Relivator v1.2.6). It is highly recommended to fill in the `DATABASE_URL` field. Then, set the database provider in `drizzle.config.ts` and make changes in related files if needed. Finally, send the database schema to the database using `pnpm db:push`. You can learn more about databases below in the current `README.md` file.
+6. **Run, Stop, Build**: Run the app with `pnpm dev` or `pnpm turbo:dev` (interactive but unstable). Visit to check it out. Stop it by focusing on the console and pressing `Ctrl+C`. After making changes, build the app using `pnpm build` or `pnpm turbo:build`. *Don't worry if you see warnings related to Clerk, React Compiler, Babel, next-auth, etc. when running the build; these are known issues not related to Relivator.* Note that when using the pnpm [turbo:build](https://turbo.build) command, the VSCode terminal may not exit automatically. If this happens, press Cmd/Ctrl+C to close the process manually.
+7. **Check, Commit, Deploy**: To check if the current codebase meets [@reliverse/standard](https://github.com/reliverse/standard), run `pnpm appts` (or `pnpm appts:noputout`, or `pnpm turbo:appts`, or `pnpm appts:nobuild`). Learn more about project scripts in the next section. If everything is fine, upload the project to your GitHub profile using GitHub Desktop. Finally, deploy it by importing the project into [Vercel](https://vercel.com/new), making the website publicly accessible on the internet. Alternatively, you can use `pnpm deploy` or just `vercel` to preview and inspect the local deployment without committing to GitHub every time.
**It is recommended:** From time to time, run `pnpm reli:prepare`. This script executes `pnpm install`, which checks for issues or installs/removes manually added/removed dependencies in your `package.json` file. It also executes `pnpm latest`, which installs the latest versions of project dependencies. Finally, it runs `pnpm appts`, which will do its best to improve your code and check for any errors. **Note:** Since `pnpm latest` updates all packages to their latest versions, be aware that something in the code might break, especially if considerable time has passed since the last version of Relivator was released. Therefore, you can use, for example, the VSCode extension `Open Multiple Files` to easily find and fix broken code, or reach out to the [Relivator Discord server](https://discord.gg/Pb8uKbwpsJ) for assistance, or create a [GitHub Issue](https://github.com/blefnk/relivator-nextjs-template/issues). You can learn more about those scripts and the mentioned extension below in the current `README.md` file.
@@ -206,8 +229,8 @@ By using this method, you will get only the front-end, with all the functionalit
The project includes various scripts designed to enhance your developer experience. You can run any script using your terminal. Please note that some CLI scripts may require you to adjust the height of your terminal window to avoid UI anomalies. The Relivator allows you to use the following:
1. **💪 Native Scripts**: These are commands configured in [package.json](package.json) and run by the package manager like [pnpm](https://pnpm.io), [bun](https://bun.sh), [yarn](https://yarnpkg.com), or [npm](https://nodejs.org/en/learn/getting-started/an-introduction-to-the-npm-package-manager). You can run these "native" scripts using commands like `pnpm [dev|build]` and `pnpm db:[push|studio]`.
-2. **⚙️ Custom-Built Scripts**: These scripts are written in TypeScript and Python by Reliverse and the community and are mostly located in the `addons` folder. 🔥 *Please be cautious when using transformation scripts, as they are all in their initial versions. Ensure you commit your changes to your [version control provider](https://about.gitlab.com/topics/version-control) (such as [GitHub](https://github.com)) before using any of them.* They can be executed via the command line using `[appts|addons|reli|lint|fix]:*` or manually via `pnpm tsx path/to/file` or `py path/to/file` (e.g., `py addons/reliverse/relimter/python/tasks/math-to-mathjs.py`).
-3. **🐍 Python Script Manager**: Can be executed using `reli:manager` or `py addons/reliverse/relimter/python/index.py`. Before running it, please read the [🐍 Python](#python) section below to learn how to prepare your workspace to run this manager.
+2. **⚙️ Custom-Built Scripts**: These scripts are written in TypeScript and Python by Reliverse and the community and are mostly located in the `addons` folder. 🔥 *Please be cautious when using transformation scripts, as they are all in their initial versions. Ensure you commit your changes to your [version control provider](https://about.gitlab.com/topics/version-control) (such as [GitHub](https://github.com)) before using any of them.* They can be executed via the command line using `[appts|addons|reli|lint|fix]:*` or manually via `pnpm tsx path/to/file` or `py path/to/file` (e.g., `py addons/scripts/reliverse/relimter/python/tasks/math-to-mathjs.py`).
+3. **🐍 Python Script Manager**: Can be executed using `reli:manager` or `py addons/scripts/reliverse/relimter/python/index.py`. Before running it, please read the [🐍 Python](#python) section below to learn how to prepare your workspace to run this manager.
### package.json
@@ -218,7 +241,7 @@ Below are some scripts configured in the `scripts` section of the `package.json`
- **`pnpm db:[push|studio|generate|migrate]`**: `push` converts the TypeScript Drizzle schema to SQL and sends it to the DATABASE_URL; `studio` runs Drizzle Studio on ; `migrate` applies migrations generated by the `generate` command (you may not need this command anymore), based on the `drizzle.config.ts` file.
- **`pnpm stripe:listen`**: Runs the Stripe webhook listener and helps set up Stripe environment variables. The [Stripe CLI](https://docs.stripe.com/stripe-cli) must be installed for this command to work.
- **`pnpm addons`**: This command allows you to headlessly run some of the scripts located in the `addons` folder. Many scripts are still not added there, so please check the `addons` folder and run them manually using `pnpm tsx path/to/file` or `py path/to/file`. This also includes the game @reliverse/academy. In the future, it will have many different interesting features. Currently, it is a quiz with a leaderboard and achievements where you can test your knowledge of Relivator, JavaScript, TypeScript, React, and even ESLint.
-- **`reli:manager`**: Learn more in the [🐍 Python](#python) section below. This is the alias for the `py addons/reliverse/relimter/python/index.py` command.
+- **`reli:manager`**: Learn more in the [🐍 Python](#python) section below. This is the alias for the `py addons/scripts/reliverse/relimter/python/index.py` command.
- **`pnpm latest`**: Updates all project packages to their latest stable versions, including some specific packages to their latest versions on rc/beta/alpha/next/canary branches.
- **`pnpm reli:vscode [nothing|minimal|default|ultimate]`**: Enhances VSCode settings with presets by Reliverse. This script adjusts your `settings.json`, `extensions.json`, and `launch.json` files. It will prompt for confirmation before overriding current files. Use `RQ20` to learn more about `.vscode` presets and font installation for the `ultimate` preset, or use the `default` preset (which doesn't contain custom fonts and themes). Choose `default`, `minimal`, or `nothing` if your PC or virtual machine is very slow.
- **`pnpm reli:help`**: Displays useful information about Relivator and Reliverse.
@@ -243,7 +266,7 @@ Below are some scripts configured in the `scripts` section of the `package.json`
👋 Hello, dear friend! Nice to see you here! I (@blefnk Nazar Kornienko) have a dream of making the open-source world better and of higher quality. I aspire to leave my mark in history by ensuring people genuinely enjoy programming and create quality products. I'm particularly passionate about clean code. The book "Clean Code" by Robert Martin is a must-have!
-That's why I've developed numerous tools in Relivator. Over the past few months leading up to Relivator 1.2.6, I've learned a lot. To avoid manually rewriting code, I've developed a unified script manager. The current version of the manager is still very unstable. You can visit the `addons/reliverse/relimter/python/index.py` file to learn more about how this script manager works.
+That's why I've developed numerous tools in Relivator. Over the past few months leading up to Relivator 1.2.6, I've learned a lot. To avoid manually rewriting code, I've developed a unified script manager. The current version of the manager is still very unstable. You can visit the `addons/scripts/reliverse/relimter/python/index.py` file to learn more about how this script manager works.
If you want to use this `Python Script Manager` (refer to [⚙️ Script](#scripts) to read the introduction), then please ensure your workspace is properly prepared for it. Please note that most scripts are largely untested. Commit your code before running any script. Increase your VSCode terminal window size to avoid UI glitches. Need help? Visit our [Discord](https://discord.gg/Pb8uKbwpsJ). Follow the steps below to get started (scroll down to learn even more Python commands):
@@ -254,7 +277,7 @@ If you want to use this `Python Script Manager` (refer to [⚙️ Script](#scrip
3. Please note, VSCode's terminal automatically activates the environment after each launch. You can verify this by hovering over a [pwsh|bash|cmd] button in VSCode's terminal and looking for something like "`Python`: Activated environment for `.\.venv\Scripts\python.exe`". However, if you are using another IDE or an external terminal, you may need to activate the virtual environment manually: [Windows] `.venv/Scripts/activate`; [macOS/Linux] `source .venv/bin/activate`.
4. Ensure all requirement are installed correctly, just run `pip install -r requirements.txt`.
-🐍 Everything ready? Nice! Congratulations! Try running the `Python Script Manager` now by executing: `reli:manager` or `py addons/reliverse/relimter/python/index.py`
+🐍 Everything ready? Nice! Congratulations! Try running the `Python Script Manager` now by executing: `reli:manager` or `py addons/scripts/reliverse/relimter/python/index.py`
### Useful Python Commands
@@ -316,13 +339,13 @@ pip freeze > requirements.txt
- **RQ15:** How can I grant admin rights to myself or another user? **RA15:** Run `pnpm db:studio`, navigate to the `${databasePrefix}_user` table, and set `role: admin` for the desired user. In the future, if you have admin rights, you will be able to change user privileges directly from the frontend admin page.
-- **RQ16:** What does the `DEV_DEMO_NOTES` environment variable mean? **RA16:** Do not use it. It is only used on the official [Relivator demo website](https://relivator.bleverse.com) to showcase certain features that are not needed in real-world applications.
+- **RQ16:** What does the `DEMO_NOTES_ENABLED` environment variable mean? **RA16:** Do not use it. It is only used on the official [Relivator demo website](https://relivator.bleverse.com) to showcase certain features that are not needed in real-world applications.
- **RQ17:** I'm using PlanetScale as my database provider. After taking a break from the project, I'm now encountering an "unable to connect to branch" error. How can I fix this? **RA17:** Go to the PlanetScale dashboard and click on the `wake up` button. Please contact us if the database is not asleep and the problem persists.
- **RQ18:** I have build/runtime errors indicating that Node.js utilities like `net`, `tls`, `perf_hooks`, and `fs` are not found. What should I do? **RA18:** Do not install these utilities; it won't fix the issue. Remember, never keep code in the `utils` folder that *can only run on the server*. Otherwise, you will encounter anomalies during the project build. For example, an error like `node:` and `file:` not found, or the package `fs`, `crypto`, etc. not found. Want to see the error for yourself? Move the file `src/server/api/uploadthing/react.ts` to `src/utils`, import it in this file, run `pnpm build`, get scared, remove the import, and move the file back to its place. You may find on the web the solutions suggesting to add configurations like `"node": { "net": "empty", "tls": "empty", "perf_hooks": "empty", "fs": "empty" }` or `"browser": { "net": false, "tls": false, "perf_hooks": false, "fs": false }` into `package.json` or to the webpack config, but these may not help you. **The main issue likely lies in the following:** You've triggered client-side code. For example, you might have a hook file in the `utils` folder with a corresponding `useEffect` React hook. To debug, try using the global search functionality in the IDE. Note that commenting out the lines may not be the quickest solution in this case, unlike in other debugging scenarios.
-- **RQ19:** I love all kinds of interesting things! Can you recommend any cool VSCode extensions? **RA19:** Of course! Just replace the current code in `.vscode/extensions.json` with the one from `addons/reliverse/presets/vscode/[default|minimal|ultimate]/extensions.json`. Remember, performance issues are possible, so you can just install what you want. Alternatively, you can just run the `pnpm reli:vscode` command to switch easily, and use `Cmd/Ctrl+Shift+P` ➞ `>Extensions: Show Recommended Extensions`.
+- **RQ19:** I love all kinds of interesting things! Can you recommend any cool VSCode extensions? **RA19:** Of course! Just replace the current code in `.vscode/extensions.json` with the one from `addons/scripts/reliverse/presets/vscode/[default|minimal|ultimate]/extensions.json`. Remember, performance issues are possible, so you can just install what you want. Alternatively, you can just run the `pnpm reli:vscode` command to switch easily, and use `Cmd/Ctrl+Shift+P` ➞ `>Extensions: Show Recommended Extensions`.
The best way to install this opinionated list of extensions, which are in the `ultimate` preset (although `default` is recommended by us), is to open the project folder in VSCode. Then, install them by using `Ctrl+Shift+P` (or just `F1`) and typing `>Extensions: Show Recommended Extensions`. Click on the cloud icon (`Install Workspace Recommended Extensions`). Wait for the completion. Click `File > Exit` (this will save all your open windows). Open VSCode again, and you are ready to go. The configuration for these extensions is already prepared for you. You can learn more about these extensions, which the `ultimate` preset contains, on the corresponding pages.
@@ -561,7 +584,7 @@ For development databases without important data, you can use `pnpm db:push`. Fo
*The instructions below may be outdated, so please double-check them! We will fully update this README.md with the Relivator 1.3.0 release.*
-Relivator is designed to effortlessly support both MySQL and PostgreSQL databases. While PostgreSQL and [Neon](https://neon.tech) are the default configurations, switching to MySQL provided by [Railway](https://railway.app?referralCode=sATgpf) or [PlanetScale](https://planetscale.com), or to PostgreSQL provided by [Railway](https://railway.app?referralCode=sATgpf) or [Vercel](https://vercel.com/storage/postgres) is straightforward. Adjust the database configuration inside [drizzle.config.ts](./drizzle.config.ts) and the `src/db/*` files accordingly. Although Relivator is optimized for these providers, other providers compatible with Drizzle and NextAuth.js might also work with some additional setup. Full SQLite support is coming soon.
+Relivator is designed to effortlessly support both MySQL and PostgreSQL databases. While PostgreSQL and [Neon](https://neon.tech) are the default configurations, switching to MySQL provided by [Railway](https://railway.app?referralCode=sATgpf) or [PlanetScale](https://planetscale.com), or to PostgreSQL provided by [Railway](https://railway.app?referralCode=sATgpf) or [Vercel](https://vercel.com/storage/postgres) is straightforward. Adjust the database configuration inside [drizzle.config.ts](./drizzle.config.ts) and the `src/db/*` files accordingly. Although Relivator is optimized for these providers, other providers compatible with Drizzle and Auth.js (next-auth@beta/NextAuth.js) might also work with some additional setup. Full SQLite support is coming soon.
To set up the `DATABASE_URL` in the `.env` file, refer to `.env.example`. Initiate a new database or propagate schema changes by executing the `pnpm db:push` command. This ensures that all changes made to the schema files in `src/db/*` are mirrored in the selected database provider.
@@ -790,7 +813,7 @@ Alternatively, check the GitHub docs on [how to create a pull request](https://h
- [x] 8. Optimize the [Next.js Metadata API](https://nextjs.org/docs/app/building-the-application/optimizing/metadata) for SEO, integrating file-system handlers.
- [x] 9. Integrate a TailwindCSS screen size indicator for local project runs.
- [x] 10. Implement extensive internationalization in 11 languages (English, German, Spanish, Persian, French, Hindi, Italian, Polish, Turkish, Ukrainian, Chinese) using the [next-intl](https://next-intl-docs.vercel.app) library, which works on both server and client, and include support for `next dev --turbo`.
-- [x] 11. Implement authentication through **both [Clerk](https://clerk.com) and [NextAuth.js](https://authjs.dev)**.
+- [x] 11. Implement authentication through **both [Clerk](https://clerk.com) and [Auth.js (next-auth@beta/NextAuth.js)](https://authjs.dev)**.
- [x] 12. Implement [tRPC](https://trpc.io) and [TanStack Query](https://tanstack.com/query) (with [React Normy](https://github.com/klis87/normy#readme)) for advanced server and client data fetching.
- [x] 13. Establish a user subscription and checkout system using [Stripe](https://github.com/stripe/stripe-node#readme).
- [x] 14. Ensure type-safety validations for project schemas and UI fields using the [zod](https://zod.dev) library.
@@ -813,7 +836,7 @@ Alternatively, check the GitHub docs on [how to create a pull request](https://h
- [ ] 31. Optimize all app elements to improve dev cold start and build speeds.
- [ ] 32. Move each related system to its special folder (into the `src/core` folder), so any system can be easily removed from the project as needed.
- [ ] 33. Move component styles to .css or .scss files, or use packages that provide "syntactic sugar" for styles in .tsx files by using [tokenami](https://github.com/tokenami/tokenami#readme) CSS library. Implement possibility to implement [Figma Tokens System](https://blog.devgenius.io/link-figma-and-react-using-figma-tokens-89e6cc874b4d) to work seamlessly with the project. Tip: go to point #90 of this roadmap to learn more about new ways to use CSS-in-JS.
-- [ ] 34. Migrate to NextAuth.js' [next-auth@beta](https://npmjs.com/package/next-auth?activeTab=versions) ([discussions](https://github.com/nextauthjs/next-auth/releases/tag/next-auth%405.0.0-beta.4)), and to [React 19](https://19.react.dev/blog/2024/04/25/react-19).
+- [ ] 34. Migrate to Auth.js (next-auth@beta/NextAuth.js)' [next-auth@beta](https://npmjs.com/package/next-auth?activeTab=versions) ([discussions](https://github.com/nextauthjs/next-auth/releases/tag/next-auth%405.0.0-beta.4)), and to [React 19](https://19.react.dev/blog/2024/04/25/react-19).
- [ ] 35. Manage email verification, newsletter sign-ups, and email marketing via [Resend](https://resend.com) and [React Email](https://react.email).
- [ ] 36. Make sure each page and the middleware are green or yellow, but not red, upon build in the development terminal.
- [ ] 37. Make each environment variable optional, allowing the app to operate without anything configured, simply omitting specific code sections as necessary.
@@ -909,7 +932,7 @@ We are excited to announce the release of Relivator 1.2.6! This version marks th
### Major Changes and Improvements
-- **Database Updates**: This is the last release that simultaneously supports PostgreSQL/MySQL and NextAuth.js/Clerk integrations.
+- **Database Updates**: This is the last release that simultaneously supports PostgreSQL/MySQL and Auth.js (next-auth@beta/NextAuth.js)/Clerk integrations.
- **React 19 Preparation**: Work has commenced on upgrading from React 18 to React 19.
- **Updated Libraries**: The project now uses next-auth v5, clerk v5 and optionally supports tailwindcss v4. Refer to the updated README.md for more details.
@@ -926,7 +949,7 @@ Neon PostgreSQL is now the default database instead of PlanetScale MySQL, as the
### Security and Code Improvements
- **Type Safety and Editor Autocomplete**: This update enhances type safety and editor autocomplete for Drizzle ORM libraries.
-- **Prettier Replaced by Biome**: Prettier has been removed in favor of Biome. The Prettier config will be removed in the next version from the `addons\terminal\reliverse\relimter\core\temp` folder. You can re-add it by running the `reliverse` command starting from Relivator 1.3.0.
+- **Prettier Replaced by Biome**: Prettier has been removed in favor of Biome. The Prettier config will be removed in the next version from the `addons\scripts\reliverse\relimter\core\temp` folder. You can re-add it by running the `reliverse` command starting from Relivator 1.3.0.
### Reliverse Scripts Transition
@@ -1014,7 +1037,7 @@ p.s. 1.2.1 is the first commit to the Relivator repository that no longer contai
In this version, significant attention was focused on stability, security, performance optimization, and a substantial improvements in design—both visually, UX, and the logic of how the app works. A lot was really done, too much to list everything! Be sure to install it and check it out!
-By the way, you can now enjoy a finely-tuned ESLint Flat Config! Also, it's worth noting that Clerk, since version 1.1.0, is no longer considered deprecated in the Relivator project. Thanks to 1.2.0, Clerk now works seamlessly with an easy switch to NextAuth.js when needed, all on the fly. Plus, full support for Turbopack (next dev --turbo) is finally here, even for next-intl!
+By the way, you can now enjoy a finely-tuned ESLint Flat Config! Also, it's worth noting that Clerk, since version 1.1.0, is no longer considered deprecated in the Relivator project. Thanks to 1.2.0, Clerk now works seamlessly with an easy switch to Auth.js (next-auth@beta/NextAuth.js) when needed, all on the fly. Plus, full support for Turbopack (next dev --turbo) is finally here, even for next-intl!
As for next-intl, finally, we can now enjoy internationalization that works not only on the client-side but also on the server! Only the 404 page has client-side i18n messages, all other pages and components use i18n as server-first. And this is really cool!
@@ -1039,7 +1062,7 @@ Here it is! Relivator has been updated to version 1.1.0!
**Now it's even more feature-rich, with cleaner code, and a more stable Next.js starter.**
-Ever dreamed of having both MySQL/PostgreSQL and Clerk/NextAuth.js in one project with the ability to switch on the fly? And even if you hadn't thought about it – now it's possible. Mix and match at will – even more possibilities for on-the-fly switching are coming soon in the next releases of Relivator.
+Ever dreamed of having both MySQL/PostgreSQL and Clerk/Auth.js (next-auth@beta/NextAuth.js) in one project with the ability to switch on the fly? And even if you hadn't thought about it – now it's possible. Mix and match at will – even more possibilities for on-the-fly switching are coming soon in the next releases of Relivator.
Among many other new and fixed things, Stripe is now fully functional and comes with extensive docs in the form of comments within the relevant files.
@@ -1084,7 +1107,7 @@ Check out [our other free Next.js 15 starter](https://github.com/blefnk/relivers
> 🚀 **Ready to launch?** Start building your project with Relivator and Reliverse as soon as possible! With one-click deploy on Vercel:
-[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fblefnk%2Frelivator-nextjs-template\&project-name=relivator\&repository-name=relivator)
+[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fblefnk%2Frelivator-nextjs-template&project-name=relivator&repository-name=my-new-repository-name)
> 💻 **Prefer manual installation?** Refer to the [🏗️ Installation](#installation) section or just clone the project using the most classical way:
diff --git a/addons/actions/index.ts b/addons/actions/index.ts
new file mode 100644
index 00000000..6483a24f
--- /dev/null
+++ b/addons/actions/index.ts
@@ -0,0 +1,39 @@
+export * from "./reliverse/cart";
+
+export * from "./reliverse/generate";
+
+export * from "./reliverse/notification";
+
+export * from "./reliverse/order";
+
+export * from "./reliverse/post";
+
+export * from "./reliverse/product";
+
+// export * from "./reliverse/product-old";
+
+export * from "./reliverse/signin";
+
+export * from "./reliverse/store";
+
+export * from "./reliverse/validations/auth";
+
+export * from "./reliverse/validations/cart";
+
+export * from "./reliverse/validations/notification";
+
+export * from "./reliverse/validations/og";
+
+export * from "./reliverse/validations/order";
+
+export * from "./reliverse/validations/parameters";
+
+export * from "./reliverse/validations/product";
+
+export * from "./reliverse/validations/store";
+
+// export * from "./reliverse/validations/product-old";
+
+export * from "./reliverse/validations/store";
+
+export * from "./reliverse/validations/user";
diff --git a/addons/server/reliverse/actions/cart.ts b/addons/actions/reliverse/cart.ts
similarity index 97%
rename from addons/server/reliverse/actions/cart.ts
rename to addons/actions/reliverse/cart.ts
index a00bd2a5..6a37abb0 100644
--- a/addons/server/reliverse/actions/cart.ts
+++ b/addons/actions/reliverse/cart.ts
@@ -1,22 +1,22 @@
import { revalidatePath } from "next/cache";
+import type { CartLineItem } from "@/types";
import type { z } from "zod";
import { getCartId } from "@/server/reliverse/cart";
-import {
- cartItemSchema,
- deleteCartItemSchema,
- deleteCartItemsSchema,
-} from "@/server/reliverse/validations/cart";
import { and, asc, desc, eq, inArray, sql } from "drizzle-orm";
import { databaseDialect } from "reliverse.config";
-import type { CartLineItem } from "~/types";
-
import { authjs } from "~/auth/authjs";
import { db } from "~/db";
import { carts, products, stores, users } from "~/db/schema";
+import {
+ cartItemSchema,
+ deleteCartItemSchema,
+ deleteCartItemsSchema,
+} from "./validations/cart";
+
const isNumber = (a: unknown): a is number => typeof a === "number";
export async function getCartAction(storeId?: number): Promise {
@@ -70,8 +70,10 @@ export async function getCartAction(storeId?: number): Promise {
.execute()
.then((items) => {
return items.map((item) => {
- const quantity = // @ts-expect-error TODO: fix
- cart?.items?.find((cartItem) => cartItem.productId === item.id) && // @ts-expect-error TODO: fix
+ const quantity =
+ // @ts-expect-error TODO: fix id type
+ cart?.items?.find((cartItem) => cartItem.productId === item.id) &&
+ // @ts-expect-error TODO: fix id type
cart.items.find((cartItem) => cartItem.productId === item.id)
.quantity;
diff --git a/addons/server/reliverse/actions/generate.ts b/addons/actions/reliverse/generate.ts
similarity index 100%
rename from addons/server/reliverse/actions/generate.ts
rename to addons/actions/reliverse/generate.ts
diff --git a/addons/server/reliverse/actions/notification.ts b/addons/actions/reliverse/notification.ts
similarity index 79%
rename from addons/server/reliverse/actions/notification.ts
rename to addons/actions/reliverse/notification.ts
index d987a5a2..a8fc6a01 100644
--- a/addons/server/reliverse/actions/notification.ts
+++ b/addons/actions/reliverse/notification.ts
@@ -2,9 +2,7 @@
import { revalidatePath } from "next/cache";
-import type { UpdateNotificationSchema } from "@/server/reliverse/validations/notification";
-
-import { errorMessage } from "@/server/reliverse/errors";
+import { getErrorMessage } from "@/server";
import { resend } from "@/server/reliverse/resend";
import { eq } from "drizzle-orm";
@@ -14,6 +12,8 @@ import { db } from "~/db";
import { notifications } from "~/db/schema";
import { env } from "~/env";
+import type { UpdateNotificationSchema } from "./validations/notification";
+
export async function updateNotification(input: UpdateNotificationSchema) {
try {
const notification = await db
@@ -33,10 +33,10 @@ export async function updateNotification(input: UpdateNotificationSchema) {
if (input.newsletter && !notification.newsletter) {
await resend.emails.send({
- from: env.NEXT_PUBLIC_RESEND_EMAIL_FROM ?? "blefnk@gmail.com",
+ from: env.NEXT_PUBLIC_RESEND_EMAIL_FROM || "blefnk@gmail.com",
react: NewsletterWelcomeEmail({
- firstName: user?.name ?? undefined,
- fromEmail: env.NEXT_PUBLIC_RESEND_EMAIL_FROM ?? "blefnk@gmail.com",
+ firstName: user?.name || undefined,
+ fromEmail: env.NEXT_PUBLIC_RESEND_EMAIL_FROM || "blefnk@gmail.com",
token: input.token,
}),
subject: "Welcome to Reliverse Weekly!",
@@ -61,7 +61,7 @@ export async function updateNotification(input: UpdateNotificationSchema) {
} catch (error) {
return {
data: null,
- error: errorMessage(error),
+ error: getErrorMessage(error),
};
}
}
diff --git a/addons/server/reliverse/actions/order.ts b/addons/actions/reliverse/order.ts
similarity index 96%
rename from addons/server/reliverse/actions/order.ts
rename to addons/actions/reliverse/order.ts
index 28f2f1b3..52ea6d39 100644
--- a/addons/server/reliverse/actions/order.ts
+++ b/addons/actions/reliverse/order.ts
@@ -1,17 +1,18 @@
-import type { getOrderLineItemsSchema } from "@/server/reliverse/validations/order";
+import type { CartLineItem, CheckoutItem } from "@/types";
import type Stripe from "stripe";
import { getCartId } from "@/server/reliverse/cart";
-import { checkoutItemSchema } from "@/server/reliverse/validations/cart";
import destr from "destr";
import { desc, eq, inArray } from "drizzle-orm";
import { z } from "zod";
-import type { CartLineItem, CheckoutItem } from "~/types";
-
import { db } from "~/db";
import { carts, orders, payments, products } from "~/db/schema";
+import type { getOrderLineItemsSchema } from "./validations/order";
+
+import { checkoutItemSchema } from "./validations/cart";
+
export async function getOrderLineItemsAction(
input: {
paymentIntent?: null | Stripe.Response;
diff --git a/addons/server/reliverse/actions/post.ts b/addons/actions/reliverse/post.ts
similarity index 84%
rename from addons/server/reliverse/actions/post.ts
rename to addons/actions/reliverse/post.ts
index 81304b9d..dd5c1bd0 100644
--- a/addons/server/reliverse/actions/post.ts
+++ b/addons/actions/reliverse/post.ts
@@ -8,5 +8,5 @@ export const createPost = protectedAction
}),
)
.mutation(async () => {
- // TODO: Do something with the input
+ // TODO: implement the input
});
diff --git a/addons/server/reliverse/actions/product.ts b/addons/actions/reliverse/product-old.ts
similarity index 99%
rename from addons/server/reliverse/actions/product.ts
rename to addons/actions/reliverse/product-old.ts
index 187ee93b..c71c9e6e 100644
--- a/addons/server/reliverse/actions/product.ts
+++ b/addons/actions/reliverse/product-old.ts
@@ -1,10 +1,5 @@
import { revalidatePath } from "next/cache";
-import {
- getProductSchema,
- getProductsSchema,
- productSchema,
-} from "@/server/reliverse/validations/product";
import {
and,
asc,
@@ -26,6 +21,12 @@ import type { Product } from "~/db/schema";
import { db } from "~/db";
import { products } from "~/db/schema";
+import {
+ getProductSchema,
+ getProductsSchema,
+ productSchema,
+} from "./validations/product-old";
+
export async function filterProductsAction(query: string) {
if (query.length === 0) {
return null;
diff --git a/addons/actions/reliverse/product.ts b/addons/actions/reliverse/product.ts
new file mode 100644
index 00000000..1039b9ab
--- /dev/null
+++ b/addons/actions/reliverse/product.ts
@@ -0,0 +1,204 @@
+"use server";
+
+import { unstable_noStore as noStore, revalidatePath } from "next/cache";
+
+import type {
+ CreateProductSchema,
+ createProductSchema,
+ updateProductRatingSchema,
+} from "@/actions";
+import type { StoredFile } from "@/types";
+import type { z } from "zod";
+
+import { getErrorMessage } from "@/server";
+import { and, eq } from "drizzle-orm";
+
+import { db } from "~/db";
+import { products } from "~/db/schema";
+
+export async function filterProducts({ query }: { query: string }) {
+ noStore();
+ try {
+ if (query.length === 0) {
+ return {
+ data: null,
+ error: null,
+ };
+ }
+
+ // @ts-expect-error TODO: fix
+ const categoriesWithProducts = await db.query.categories.findMany({
+ columns: {
+ id: true,
+ name: true,
+ },
+ with: {
+ products: {
+ columns: {
+ id: true,
+ name: true,
+ },
+ },
+ },
+
+ // This doesn't do anything
+ // @ts-expect-error TODO: fix
+ where: (table, { sql }) => sql`position(${query} in ${table.name}) > 0`,
+ });
+
+ return {
+ data: categoriesWithProducts,
+ error: null,
+ };
+ } catch (error) {
+ return {
+ data: null,
+ error: getErrorMessage(error),
+ };
+ }
+}
+
+export async function addProduct(
+ input: {
+ images: StoredFile[];
+ storeId: string;
+ } & Omit,
+) {
+ try {
+ const productWithSameName = await db.query.products.findFirst({
+ columns: {
+ id: true,
+ },
+ where: eq(products.name, input.name),
+ });
+
+ if (productWithSameName) {
+ throw new Error("Product name already taken.");
+ }
+
+ // @ts-expect-error TODO: fix
+ await db.insert(products).values({
+ ...input,
+ images: JSON.stringify(input.images) as unknown as StoredFile[],
+ });
+
+ revalidatePath(`/dashboard/stores/${input.storeId}/products.`);
+
+ return {
+ data: null,
+ error: null,
+ };
+ } catch (error) {
+ return {
+ data: null,
+ error: getErrorMessage(error),
+ };
+ }
+}
+
+export async function updateProduct(
+ input: { id: string; storeId: string } & z.infer,
+) {
+ try {
+ const product = await db.query.products.findFirst({
+ where: and(
+ eq(products.id, input.id),
+ // @ts-expect-error TODO: fix
+ eq(products.storeId, input.storeId),
+ ),
+ });
+
+ if (!product) {
+ throw new Error("Product not found.");
+ }
+
+ await db
+ .update(products)
+ // @ts-expect-error TODO: fix
+ .set({
+ ...input,
+ images: JSON.stringify(input.images) as unknown as StoredFile[],
+ })
+ .where(eq(products.id, input.id));
+
+ revalidatePath(`/dashboard/stores/${input.storeId}/products/${input.id}`);
+
+ return {
+ data: null,
+ error: null,
+ };
+ } catch (error) {
+ return {
+ data: null,
+ error: getErrorMessage(error),
+ };
+ }
+}
+
+export async function updateProductRating(
+ input: z.infer,
+) {
+ try {
+ const product = await db.query.products.findFirst({
+ columns: {
+ id: true,
+ rating: true,
+ },
+ where: eq(products.id, input.id),
+ });
+
+ if (!product) {
+ throw new Error("Product not found.");
+ }
+
+ await db
+ .update(products)
+ .set({ rating: input.rating })
+ .where(eq(products.id, input.id));
+
+ revalidatePath("/");
+
+ return {
+ data: null,
+ error: null,
+ };
+ } catch (error) {
+ return {
+ data: null,
+ error: getErrorMessage(error),
+ };
+ }
+}
+
+export async function deleteProduct(input: { id: string; storeId: string }) {
+ try {
+ const product = await db.query.products.findFirst({
+ columns: {
+ id: true,
+ },
+ where: and(
+ eq(products.id, input.id),
+ // @ts-expect-error TODO: fix
+ eq(products.storeId, input.storeId),
+ ),
+ });
+
+ if (!product) {
+ throw new Error("Product not found.");
+ }
+
+ await db.delete(products).where(eq(products.id, input.id));
+
+ revalidatePath(`/dashboard/stores/${input.storeId}/products`);
+
+ return {
+ data: null,
+ error: null,
+ };
+ } catch (error) {
+ return {
+ data: null,
+ error: getErrorMessage(error),
+ };
+ }
+}
diff --git a/addons/server/reliverse/actions/signin.ts b/addons/actions/reliverse/signin.ts
similarity index 100%
rename from addons/server/reliverse/actions/signin.ts
rename to addons/actions/reliverse/signin.ts
diff --git a/addons/server/reliverse/actions/store.ts b/addons/actions/reliverse/store.ts
similarity index 96%
rename from addons/server/reliverse/actions/store.ts
rename to addons/actions/reliverse/store.ts
index d5584e4b..aeb80165 100644
--- a/addons/server/reliverse/actions/store.ts
+++ b/addons/actions/reliverse/store.ts
@@ -1,11 +1,9 @@
import { revalidatePath } from "next/cache";
-import type { getStoreSchema } from "@/server/reliverse/validations/store";
+import type { getStoreSchema } from "@/actions";
-import {
- getStoresSchema,
- storeSchema,
-} from "@/server/reliverse/validations/store";
+import { getStoresSchema, storeSchema } from "@/actions";
+import { slugify } from "@/utils";
import { and, asc, desc, eq, gt, isNull, lt, not, sql } from "drizzle-orm";
import { z } from "zod";
@@ -13,7 +11,6 @@ import type { Store } from "~/db/schema";
import { db } from "~/db";
import { products, stores } from "~/db/schema";
-import { slugify } from "~/utils";
const isString = (a: unknown): a is string => typeof a === "string";
const isNumber = (a: unknown): a is number => typeof a === "number";
diff --git a/addons/server/reliverse/validations/auth.ts b/addons/actions/reliverse/validations/auth.ts
similarity index 100%
rename from addons/server/reliverse/validations/auth.ts
rename to addons/actions/reliverse/validations/auth.ts
diff --git a/addons/server/reliverse/validations/cart.ts b/addons/actions/reliverse/validations/cart.ts
similarity index 100%
rename from addons/server/reliverse/validations/cart.ts
rename to addons/actions/reliverse/validations/cart.ts
diff --git a/addons/server/reliverse/validations/notification.ts b/addons/actions/reliverse/validations/notification.ts
similarity index 100%
rename from addons/server/reliverse/validations/notification.ts
rename to addons/actions/reliverse/validations/notification.ts
diff --git a/addons/server/reliverse/validations/og.ts b/addons/actions/reliverse/validations/og.ts
similarity index 100%
rename from addons/server/reliverse/validations/og.ts
rename to addons/actions/reliverse/validations/og.ts
diff --git a/addons/server/reliverse/validations/order.ts b/addons/actions/reliverse/validations/order.ts
similarity index 86%
rename from addons/server/reliverse/validations/order.ts
rename to addons/actions/reliverse/validations/order.ts
index 17056f24..52144bf1 100644
--- a/addons/server/reliverse/validations/order.ts
+++ b/addons/actions/reliverse/validations/order.ts
@@ -1,6 +1,7 @@
-import { checkoutItemSchema } from "@/server/reliverse/validations/cart";
import * as z from "zod";
+import { checkoutItemSchema } from "./cart";
+
export const getOrderedProductsSchema = z.object({
checkoutItems: z.array(checkoutItemSchema),
});
diff --git a/addons/server/reliverse/validations/parameters.ts b/addons/actions/reliverse/validations/parameters.ts
similarity index 100%
rename from addons/server/reliverse/validations/parameters.ts
rename to addons/actions/reliverse/validations/parameters.ts
diff --git a/addons/server/reliverse/validations/product.ts b/addons/actions/reliverse/validations/product-old.ts
similarity index 100%
rename from addons/server/reliverse/validations/product.ts
rename to addons/actions/reliverse/validations/product-old.ts
diff --git a/addons/actions/reliverse/validations/product.ts b/addons/actions/reliverse/validations/product.ts
new file mode 100644
index 00000000..f9d0d7df
--- /dev/null
+++ b/addons/actions/reliverse/validations/product.ts
@@ -0,0 +1,80 @@
+import * as z from "zod";
+
+export const createProductSchema = z.object({
+ name: z.string().min(1, {
+ message: "Must be at least 1 character",
+ }),
+ description: z.string().optional(),
+ categoryId: z.string(),
+ subcategoryId: z.string().optional().nullable(),
+ price: z.string().regex(/^\d+(\.\d{1,2})?$/, {
+ message: "Must be a valid price",
+ }),
+ inventory: z.number(),
+ images: z
+ .custom()
+ .optional()
+ .nullable()
+ .default(null),
+});
+
+export const updateProductSchema = z.object({
+ id: z.string(),
+ name: z.string().min(1, {
+ message: "Must be at least 1 character",
+ }),
+ description: z.string().optional(),
+ categoryId: z.string(),
+ subcategoryId: z.string().optional().nullable(),
+ price: z.string().regex(/^\d+(\.\d{1,2})?$/, {
+ message: "Must be a valid price",
+ }),
+ inventory: z.number(),
+ images: z
+ .custom()
+ .optional()
+ .nullable()
+ .default(null),
+});
+
+export const filterProductsSchema = z.object({
+ query: z.string(),
+});
+
+export const getProductInventorySchema = z.object({
+ id: z.string(),
+});
+
+export const getProductsSchema = z.object({
+ page: z.coerce.number().default(1),
+ per_page: z.coerce.number().default(10),
+ sort: z.string().optional().default("createdAt.desc"),
+ categories: z.string().optional(),
+ subcategory: z.string().optional(),
+ subcategories: z.string().optional(),
+ price_range: z.string().optional(),
+ store_ids: z.string().optional(),
+ store_page: z.coerce.number().default(1),
+ active: z.string().optional().default("true"),
+});
+
+export const updateProductRatingSchema = z.object({
+ id: z.string(),
+ rating: z.number(),
+});
+
+export type CreateProductSchema = z.infer;
+
+export type UpdateProductSchema = z.infer;
+
+export type FilterProductsSchema = z.infer;
+
+export type GetProductInventorySchema = z.infer<
+ typeof getProductInventorySchema
+>;
+
+export type GetProductsSchema = z.infer;
+
+export type UpdateProductRatingSchema = z.infer<
+ typeof updateProductRatingSchema
+>;
diff --git a/addons/server/reliverse/validations/store.ts b/addons/actions/reliverse/validations/store.ts
similarity index 100%
rename from addons/server/reliverse/validations/store.ts
rename to addons/actions/reliverse/validations/store.ts
diff --git a/addons/server/reliverse/validations/user.ts b/addons/actions/reliverse/validations/user.ts
similarity index 100%
rename from addons/server/reliverse/validations/user.ts
rename to addons/actions/reliverse/validations/user.ts
diff --git a/addons/browser/shared/utils/files.ts b/addons/browser/shared/utils/files.ts
deleted file mode 100644
index f110a040..00000000
--- a/addons/browser/shared/utils/files.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { dirname } from "pathe";
-import { fileURLToPath } from "url";
-
-// __dirname for ES module context
-export function getCurrentDirname(metaUrl: string): string {
- return dirname(fileURLToPath(metaUrl));
-}
diff --git a/addons/cluster/reliverse/components/Onboarding.md b/addons/cluster/components/Onboarding.md
similarity index 100%
rename from addons/cluster/reliverse/components/Onboarding.md
rename to addons/cluster/components/Onboarding.md
diff --git a/addons/cluster/reliverse/components/Onboarding.tsx b/addons/cluster/components/Onboarding.tsx
similarity index 99%
rename from addons/cluster/reliverse/components/Onboarding.tsx
rename to addons/cluster/components/Onboarding.tsx
index 4c87952a..ee699a28 100644
--- a/addons/cluster/reliverse/components/Onboarding.tsx
+++ b/addons/cluster/components/Onboarding.tsx
@@ -1,6 +1,6 @@
import Image from "next/image";
-import { Separator } from "@/browser/reliverse/ui/Separator";
+import { Separator } from "@/components/ui/separator";
import { Head } from "@react-email/head";
import { Html } from "@react-email/html";
import { Img } from "@react-email/img";
diff --git a/addons/cluster/reliverse/ui/cluster-readme.tsx b/addons/cluster/components/ui/cluster-readme.tsx
similarity index 96%
rename from addons/cluster/reliverse/ui/cluster-readme.tsx
rename to addons/cluster/components/ui/cluster-readme.tsx
index 0d2bc2da..e2a1a35e 100644
--- a/addons/cluster/reliverse/ui/cluster-readme.tsx
+++ b/addons/cluster/components/ui/cluster-readme.tsx
@@ -1,4 +1,4 @@
-// !! export { Button } from "@/browser/reliverse/ui/button";
+// !! export { Button } from "@/components/ui/button";
// eslint-disable-next-line @stylistic/max-len
// Try not to modify the original shadcn components manually (only @reliverse/addons-relimter codemods scripts are allowed to modify them). If you want to change shadcn components, for example, the `Button`, then do it in this file. This way, you can safely make changes without losing your work when updates are released in the future. If you don't want to change anything about the Button, just leave this re-export as it is.
// ?| README.md:
diff --git a/src/components/Combobox/ComboboxContext.tsx b/addons/cluster/temp/ComboboxOld/ComboboxContext.tsx.txt
similarity index 100%
rename from src/components/Combobox/ComboboxContext.tsx
rename to addons/cluster/temp/ComboboxOld/ComboboxContext.tsx.txt
diff --git a/src/components/Combobox/ComboboxHandler.tsx b/addons/cluster/temp/ComboboxOld/ComboboxHandler.tsx.txt
similarity index 97%
rename from src/components/Combobox/ComboboxHandler.tsx
rename to addons/cluster/temp/ComboboxOld/ComboboxHandler.tsx.txt
index 3f223a11..8e65ed4f 100644
--- a/src/components/Combobox/ComboboxHandler.tsx
+++ b/addons/cluster/temp/ComboboxOld/ComboboxHandler.tsx.txt
@@ -8,11 +8,11 @@ import {
CommandInput,
CommandList,
CommandSeparator,
-} from "@/browser/reliverse/ui/Command";
+} from "@/components/ui/command";
+import { cn } from "@/utils";
import { useComboboxDialog } from "~/components/Combobox/ComboboxContext";
import ThemeCommands from "~/components/Combobox/ThemeCommands";
-import { cn } from "~/utils";
// import useHotkey from "~/hooks/react-client/useHotkey";
type ComboboxHandlerProps = {
diff --git a/src/components/Combobox/Combobox.tsx b/addons/cluster/temp/ComboboxOld/ComboboxOld.tsx.txt
similarity index 97%
rename from src/components/Combobox/Combobox.tsx
rename to addons/cluster/temp/ComboboxOld/ComboboxOld.tsx.txt
index 2aafebf5..369ad992 100644
--- a/src/components/Combobox/Combobox.tsx
+++ b/addons/cluster/temp/ComboboxOld/ComboboxOld.tsx.txt
@@ -1,6 +1,6 @@
"use client";
-import { Button } from "@/browser/reliverse/ui/Button";
+import { Button } from "@/components/ui/button";
import { useComboboxDialog } from "~/components/Combobox/ComboboxContext";
import ComboboxHandler from "~/components/Combobox/ComboboxHandler";
diff --git a/src/components/Combobox/ProductList.tsx b/addons/cluster/temp/ComboboxOld/ProductList.tsx.txt
similarity index 93%
rename from src/components/Combobox/ProductList.tsx
rename to addons/cluster/temp/ComboboxOld/ProductList.tsx.txt
index 4b6c8566..cfbfa432 100644
--- a/src/components/Combobox/ProductList.tsx
+++ b/addons/cluster/temp/ComboboxOld/ProductList.tsx.txt
@@ -1,6 +1,6 @@
import { useRouter } from "next/navigation";
-import { CommandGroup, CommandItem } from "@/browser/reliverse/ui/Command";
+import { CommandGroup, CommandItem } from "@/components/ui/command";
import type { Product } from "~/db/schema";
diff --git a/src/components/Combobox/ThemeCommands.tsx b/addons/cluster/temp/ComboboxOld/ThemeCommands.tsx.txt
similarity index 94%
rename from src/components/Combobox/ThemeCommands.tsx
rename to addons/cluster/temp/ComboboxOld/ThemeCommands.tsx.txt
index fc79c076..aeaf3511 100644
--- a/src/components/Combobox/ThemeCommands.tsx
+++ b/addons/cluster/temp/ComboboxOld/ThemeCommands.tsx.txt
@@ -1,4 +1,4 @@
-import { CommandGroup, CommandItem } from "@/browser/reliverse/ui/Command";
+import { CommandGroup, CommandItem } from "@/components/ui/command";
import { CloudMoon, MonitorSmartphone, Sun } from "lucide-react";
import { useTheme } from "next-themes";
diff --git a/addons/cluster/temp/eslint.config.deprecated.b.txt b/addons/cluster/temp/eslint.config.deprecated.b.txt
index aa64c3ce..06833a82 100644
--- a/addons/cluster/temp/eslint.config.deprecated.b.txt
+++ b/addons/cluster/temp/eslint.config.deprecated.b.txt
@@ -300,7 +300,7 @@ export default tseslint.config(
applyDefaultIgnorePatterns: true,
beforeBlockComment: true,
beforeLineComment: true,
- ignorePattern: "@type\\s.+|@ts-expect-error",
+ ignorePattern: "@type\\s.+|@ts-expect-error|biome-ignore",
},
],
diff --git a/src/hooks/react-generic/useSiteNavigation.ts b/addons/cluster/temp/useSiteNavigation.ts.txt
similarity index 99%
rename from src/hooks/react-generic/useSiteNavigation.ts
rename to addons/cluster/temp/useSiteNavigation.ts.txt
index 38fa9dc0..6234143a 100644
--- a/src/hooks/react-generic/useSiteNavigation.ts
+++ b/addons/cluster/temp/useSiteNavigation.ts.txt
@@ -1,14 +1,13 @@
import type { HTMLAttributeAnchorTarget } from "react";
-import type { RichTranslationValues } from "next-intl";
-
-import { useTranslations } from "next-intl";
-
import type {
FormattedMessage,
NavigationEntry,
NavigationKeys,
-} from "~/types";
+} from "@/types";
+import type { RichTranslationValues } from "next-intl";
+
+import { useTranslations } from "next-intl";
const isString = (a: unknown) => typeof a === "string";
diff --git a/addons/browser/reliverse/ui/Accordion.tsx b/addons/components/ui/accordion.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Accordion.tsx
rename to addons/components/ui/accordion.tsx
index ab934a69..874daec1 100644
--- a/addons/browser/reliverse/ui/Accordion.tsx
+++ b/addons/components/ui/accordion.tsx
@@ -3,11 +3,10 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as AccordionPrimitive from "@radix-ui/react-accordion";
import { ChevronDown } from "lucide-react";
-import { cn } from "~/utils";
-
const Accordion = AccordionPrimitive.Root;
const AccordionItem = forwardRef<
diff --git a/addons/browser/reliverse/ui/Alert-Dialog.tsx b/addons/components/ui/alert-dialog.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Alert-Dialog.tsx
rename to addons/components/ui/alert-dialog.tsx
index fcef1e57..495b257e 100644
--- a/addons/browser/reliverse/ui/Alert-Dialog.tsx
+++ b/addons/components/ui/alert-dialog.tsx
@@ -7,11 +7,10 @@ import type {
} from "react";
import { forwardRef } from "react";
-import { buttonVariants } from "@/browser/reliverse/ui/Button";
+import { buttonVariants } from "@/components/ui/button";
+import { cn } from "@/utils";
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
-import { cn } from "~/utils";
-
const AlertDialog = AlertDialogPrimitive.Root;
const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
diff --git a/addons/browser/reliverse/ui/Alert.tsx b/addons/components/ui/alert.tsx
similarity index 93%
rename from addons/browser/reliverse/ui/Alert.tsx
rename to addons/components/ui/alert.tsx
index 7fc5ce31..0e9fa263 100644
--- a/addons/browser/reliverse/ui/Alert.tsx
+++ b/addons/components/ui/alert.tsx
@@ -3,10 +3,9 @@ import { forwardRef } from "react";
import type { VariantProps } from "class-variance-authority";
+import { cn } from "@/utils";
import { cva } from "class-variance-authority";
-import { cn } from "~/utils";
-
const alertVariants = cva(
`
relative w-full rounded-lg border px-4 py-3 text-sm
@@ -18,9 +17,6 @@ const alertVariants = cva(
[&>svg~*]:pl-7
`,
{
- defaultVariants: {
- variant: "default",
- },
variants: {
variant: {
default: "bg-background text-foreground",
@@ -33,6 +29,9 @@ const alertVariants = cva(
`,
},
},
+ defaultVariants: {
+ variant: "default",
+ },
},
);
@@ -41,14 +40,9 @@ const Alert = forwardRef<
HTMLAttributes & VariantProps
>(({ className, variant, ...props }, ref) => (
));
@@ -61,8 +55,8 @@ const AlertTitle = forwardRef<
>(({ className, ...props }, ref) => (
// eslint-disable-next-line jsx-a11y/heading-has-content
));
@@ -74,6 +68,7 @@ const AlertDescription = forwardRef<
HTMLAttributes
>(({ className, ...props }, ref) => (
));
diff --git a/addons/browser/reliverse/ui/Aspect-Ratio.tsx b/addons/components/ui/aspect-ratio.tsx
similarity index 100%
rename from addons/browser/reliverse/ui/Aspect-Ratio.tsx
rename to addons/components/ui/aspect-ratio.tsx
diff --git a/addons/browser/reliverse/ui/Avatar.tsx b/addons/components/ui/avatar.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Avatar.tsx
rename to addons/components/ui/avatar.tsx
index 01df3883..f86c4fdc 100644
--- a/addons/browser/reliverse/ui/Avatar.tsx
+++ b/addons/components/ui/avatar.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef, Ref } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as AvatarPrimitive from "@radix-ui/react-avatar";
-import { cn } from "~/utils";
-
type AvatarProps = {
className?: string;
ref?: Ref>;
diff --git a/addons/browser/reliverse/ui/Badge.tsx b/addons/components/ui/badge.tsx
similarity index 97%
rename from addons/browser/reliverse/ui/Badge.tsx
rename to addons/components/ui/badge.tsx
index 0fb9ef3b..4af1bcdf 100644
--- a/addons/browser/reliverse/ui/Badge.tsx
+++ b/addons/components/ui/badge.tsx
@@ -2,10 +2,9 @@ import type { HTMLAttributes } from "react";
import type { VariantProps } from "class-variance-authority";
+import { cn } from "@/utils";
import { cva } from "class-variance-authority";
-import { cn } from "~/utils";
-
const badgeVariants = cva(
`
inline-flex items-center rounded-lg border px-2.5 py-0.5 text-xs
diff --git a/addons/components/ui/breadcrumb.tsx b/addons/components/ui/breadcrumb.tsx
new file mode 100644
index 00000000..e8bdbbae
--- /dev/null
+++ b/addons/components/ui/breadcrumb.tsx
@@ -0,0 +1,139 @@
+import type {
+ ComponentProps,
+ ComponentPropsWithoutRef,
+ ReactNode,
+} from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+import { ChevronRightIcon, DotsHorizontalIcon } from "@radix-ui/react-icons";
+import { Slot } from "@radix-ui/react-slot";
+
+const Breadcrumb = forwardRef<
+ HTMLElement,
+ {
+ separator?: ReactNode;
+ } & ComponentPropsWithoutRef<"nav">
+>(({ ...props }, ref) => );
+
+Breadcrumb.displayName = "Breadcrumb";
+
+const BreadcrumbList = forwardRef<
+ HTMLOListElement,
+ ComponentPropsWithoutRef<"ol">
+>(({ className, ...props }, ref) => (
+
+));
+
+BreadcrumbList.displayName = "BreadcrumbList";
+
+const BreadcrumbItem = forwardRef<
+ HTMLLIElement,
+ ComponentPropsWithoutRef<"li">
+>(({ className, ...props }, ref) => (
+
+));
+
+BreadcrumbItem.displayName = "BreadcrumbItem";
+
+const BreadcrumbLink = forwardRef<
+ HTMLAnchorElement,
+ {
+ asChild?: boolean;
+ } & ComponentPropsWithoutRef<"a">
+>(({ asChild, className, ...props }, ref) => {
+ const Comp = asChild ? Slot : "a";
+
+ return (
+
+ );
+});
+
+BreadcrumbLink.displayName = "BreadcrumbLink";
+
+const BreadcrumbPage = forwardRef<
+ HTMLSpanElement,
+ ComponentPropsWithoutRef<"span">
+>(({ className, ...props }, ref) => (
+
+));
+
+BreadcrumbPage.displayName = "BreadcrumbPage";
+
+const BreadcrumbSeparator = ({
+ children,
+ className,
+ ...props
+}: ComponentProps<"li">) => (
+ svg]:size-3.5", className)}
+ {...props}
+ >
+ {children || }
+
+);
+
+BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
+
+const BreadcrumbEllipsis = ({
+ className,
+ ...props
+}: ComponentProps<"span">) => (
+
+
+ More
+
+);
+
+BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
+
+export {
+ Breadcrumb,
+ BreadcrumbEllipsis,
+ BreadcrumbItem,
+ BreadcrumbLink,
+ BreadcrumbList,
+ BreadcrumbPage,
+ BreadcrumbSeparator,
+};
diff --git a/addons/browser/reliverse/ui/Button.tsx b/addons/components/ui/button.tsx
similarity index 68%
rename from addons/browser/reliverse/ui/Button.tsx
rename to addons/components/ui/button.tsx
index ce007191..0c04b5be 100644
--- a/addons/browser/reliverse/ui/Button.tsx
+++ b/addons/components/ui/button.tsx
@@ -3,60 +3,59 @@ import { forwardRef } from "react";
import type { VariantProps } from "class-variance-authority";
-import { cn } from "@/browser/shared/utils";
+import { cn } from "@/utils";
import { Slot } from "@radix-ui/react-slot";
import { cva } from "class-variance-authority";
const buttonVariants = cva(
`
inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm
- font-medium ring-offset-background transition-colors
+ font-medium transition-colors
disabled:pointer-events-none disabled:opacity-50
- focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
- focus-visible:ring-offset-2
+ focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring
`,
{
- defaultVariants: {
- size: "default",
- variant: "default",
- },
variants: {
- size: {
- default: "h-10 px-4 py-2",
- icon: "h-10 w-10",
- lg: "h-11 rounded-md px-8",
- sm: "h-9 rounded-md px-3",
- },
variant: {
default: `
- bg-primary text-primary-foreground
+ bg-primary text-primary-foreground shadow
hover:bg-primary/90
`,
destructive: `
- bg-destructive text-destructive-foreground
+ bg-destructive text-destructive-foreground shadow-sm
hover:bg-destructive/90
`,
- ghost: "hover:bg-accent hover:text-accent-foreground",
- link: `
- text-primary underline-offset-4
-
- hover:underline
- `,
outline: `
- border border-input bg-background
+ border border-input bg-background shadow-sm
hover:bg-accent hover:text-accent-foreground
`,
secondary: `
- bg-secondary text-secondary-foreground
+ bg-secondary text-secondary-foreground shadow-sm
hover:bg-secondary/80
`,
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: `
+ text-primary underline-offset-4
+
+ hover:underline
+ `,
},
+ size: {
+ default: "h-9 px-4 py-2",
+ sm: "h-8 rounded-md px-3 text-xs",
+ lg: "h-10 rounded-md px-8",
+ icon: "size-9",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
},
},
);
@@ -67,12 +66,12 @@ export type ButtonProps = {
VariantProps;
const Button = forwardRef(
- ({ asChild = false, className, size, variant, ...props }, ref) => {
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
const Comp = asChild ? Slot : "button";
return (
diff --git a/addons/browser/reliverse/ui/Calendar.tsx b/addons/components/ui/calendar.tsx
similarity index 96%
rename from addons/browser/reliverse/ui/Calendar.tsx
rename to addons/components/ui/calendar.tsx
index 5b77c394..6b022081 100644
--- a/addons/browser/reliverse/ui/Calendar.tsx
+++ b/addons/components/ui/calendar.tsx
@@ -1,14 +1,12 @@
-import { buttonVariants } from "@/browser/reliverse/ui/Button";
-
-("use client");
+"use client";
import type { ComponentProps } from "react";
import { DayPicker } from "react-day-picker";
+import { buttonVariants } from "@/components/ui/button";
+import { cn } from "@/utils";
import { ChevronLeft, ChevronRight } from "lucide-react";
-import { cn } from "~/utils";
-
export type CalendarProps = ComponentProps;
function Calendar({
diff --git a/addons/browser/reliverse/ui/CardUI.tsx b/addons/components/ui/card.tsx
similarity index 97%
rename from addons/browser/reliverse/ui/CardUI.tsx
rename to addons/components/ui/card.tsx
index d8162c96..d18517b4 100644
--- a/addons/browser/reliverse/ui/CardUI.tsx
+++ b/addons/components/ui/card.tsx
@@ -1,7 +1,7 @@
import type { HTMLAttributes, HtmlHTMLAttributes } from "react";
import { forwardRef } from "react";
-import { cn } from "@/browser/shared/utils";
+import { cn } from "@/utils";
const Card = forwardRef>(
({ className, ...props }, ref) => (
diff --git a/addons/browser/reliverse/ui/Carousel.tsx b/addons/components/ui/carousel.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Carousel.tsx
rename to addons/components/ui/carousel.tsx
index 0a0aad8d..0c9ec0e3 100644
--- a/addons/browser/reliverse/ui/Carousel.tsx
+++ b/addons/components/ui/carousel.tsx
@@ -12,12 +12,11 @@ import {
import type { UseEmblaCarouselType } from "embla-carousel-react";
-import { Button } from "@/browser/reliverse/ui/Button";
+import { Button } from "@/components/ui/button";
+import { cn } from "@/utils";
import { ArrowLeftIcon, ArrowRightIcon } from "@radix-ui/react-icons";
import useEmblaCarousel from "embla-carousel-react";
-import { cn } from "~/utils";
-
type CarouselApi = UseEmblaCarouselType["1"];
type UseCarouselParameters = Parameters;
diff --git a/addons/browser/reliverse/ui/Chart.tsx b/addons/components/ui/chart.tsx
similarity index 92%
rename from addons/browser/reliverse/ui/Chart.tsx
rename to addons/components/ui/chart.tsx
index 67d09efb..b43591c1 100644
--- a/addons/browser/reliverse/ui/Chart.tsx
+++ b/addons/components/ui/chart.tsx
@@ -1,8 +1,14 @@
"use client";
-import * as React from "react";
-
-import { cn } from "@/browser/shared/utils";
+import type {
+ ComponentProps,
+ ComponentType,
+ CSSProperties,
+ ReactNode,
+} from "react";
+import { createContext, forwardRef, useContext, useId, useMemo } from "react";
+
+import { cn } from "@/utils";
import * as RechartsPrimitive from "recharts";
// Format: { THEME_NAME: CSS_SELECTOR }
@@ -10,8 +16,8 @@ const THEMES = { dark: ".dark", light: "" } as const;
export type ChartConfig = {
[k in string]: {
- icon?: React.ComponentType;
- label?: React.ReactNode;
+ icon?: ComponentType;
+ label?: ReactNode;
} & (
| { color?: never; theme: Record }
| { color?: string; theme?: never }
@@ -22,10 +28,10 @@ type ChartContextProps = {
config: ChartConfig;
};
-const ChartContext = React.createContext(null);
+const ChartContext = createContext(null);
function useChart() {
- const context = React.useContext(ChartContext);
+ const context = useContext(ChartContext);
if (!context) {
throw new Error("useChart must be used within a ");
@@ -34,16 +40,16 @@ function useChart() {
return context;
}
-const ChartContainer = React.forwardRef<
+const ChartContainer = forwardRef<
HTMLDivElement,
{
- children: React.ComponentProps<
+ children: ComponentProps<
typeof RechartsPrimitive.ResponsiveContainer
>["children"];
config: ChartConfig;
- } & React.ComponentProps<"div">
+ } & ComponentProps<"div">
>(({ id, children, className, config, ...props }, ref) => {
- const uniqueId = React.useId();
+ const uniqueId = useId();
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
return (
@@ -130,7 +136,7 @@ ${colorConfig
const ChartTooltip = RechartsPrimitive.Tooltip;
-const ChartTooltipContent = React.forwardRef<
+const ChartTooltipContent = forwardRef<
HTMLDivElement,
{
hideIndicator?: boolean;
@@ -138,8 +144,8 @@ const ChartTooltipContent = React.forwardRef<
indicator?: "dashed" | "dot" | "line";
labelKey?: string;
nameKey?: string;
- } & React.ComponentProps<"div"> &
- React.ComponentProps
+ } & ComponentProps<"div"> &
+ ComponentProps
>(
(
{
@@ -161,7 +167,7 @@ const ChartTooltipContent = React.forwardRef<
) => {
const { config } = useChart();
- const tooltipLabel = React.useMemo(() => {
+ const tooltipLabel = useMemo(() => {
if (hideLabel || !payload?.length) {
return null;
}
@@ -259,7 +265,7 @@ const ChartTooltipContent = React.forwardRef<
{
"--color-bg": indicatorColor,
"--color-border": indicatorColor,
- } as React.CSSProperties
+ } as CSSProperties
}
/>
)
@@ -301,13 +307,13 @@ ChartTooltipContent.displayName = "ChartTooltip";
const ChartLegend = RechartsPrimitive.Legend;
-const ChartLegendContent = React.forwardRef<
+const ChartLegendContent = forwardRef<
HTMLDivElement,
{
hideIcon?: boolean;
nameKey?: string;
- } & Pick &
- React.ComponentProps<"div">
+ } & ComponentProps<"div"> &
+ Pick
>(
(
{ className, hideIcon = false, nameKey, payload, verticalAlign = "bottom" },
diff --git a/addons/browser/reliverse/ui/Checkbox.tsx b/addons/components/ui/checkbox.tsx
similarity index 97%
rename from addons/browser/reliverse/ui/Checkbox.tsx
rename to addons/components/ui/checkbox.tsx
index e9bf79e1..8baa1243 100644
--- a/addons/browser/reliverse/ui/Checkbox.tsx
+++ b/addons/components/ui/checkbox.tsx
@@ -3,11 +3,10 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
import { CheckIcon } from "@radix-ui/react-icons";
-import { cn } from "~/utils";
-
const Checkbox = forwardRef<
ComponentRef,
ComponentPropsWithoutRef
diff --git a/addons/browser/reliverse/ui/Command.tsx b/addons/components/ui/command.tsx
similarity index 95%
rename from addons/browser/reliverse/ui/Command.tsx
rename to addons/components/ui/command.tsx
index ebdbbf0f..f73b62a4 100644
--- a/addons/browser/reliverse/ui/Command.tsx
+++ b/addons/components/ui/command.tsx
@@ -7,20 +7,15 @@ import type {
} from "react";
import { forwardRef } from "react";
-import type { DialogPosition } from "@/browser/reliverse/ui/Dialog";
+import type { DialogPosition } from "@/components/ui/dialog";
import type { DialogProps } from "@radix-ui/react-dialog";
-import {
- Dialog,
- DialogContent,
- DialogTitle,
-} from "@/browser/reliverse/ui/Dialog";
-import { Separator } from "@/browser/reliverse/ui/Separator";
+import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog";
+import { Separator } from "@/components/ui/separator";
+import { cn } from "@/utils";
import { MagnifyingGlassIcon } from "@radix-ui/react-icons";
import { Command as CommandPrimitive } from "cmdk";
-import { cn } from "~/utils";
-
const Command = forwardRef<
ComponentRef,
ComponentPropsWithoutRef
diff --git a/addons/browser/reliverse/ui/Dialog.tsx b/addons/components/ui/dialog.tsx
similarity index 99%
rename from addons/browser/reliverse/ui/Dialog.tsx
rename to addons/components/ui/dialog.tsx
index 1170e6cb..64c830a8 100644
--- a/addons/browser/reliverse/ui/Dialog.tsx
+++ b/addons/components/ui/dialog.tsx
@@ -7,11 +7,10 @@ import type {
} from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as DialogPrimitive from "@radix-ui/react-dialog";
import { Cross2Icon } from "@radix-ui/react-icons";
-import { cn } from "~/utils";
-
export type DialogPosition = {
position?: "default" | "top";
};
diff --git a/addons/browser/reliverse/ui/Drawer.tsx b/addons/components/ui/drawer.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Drawer.tsx
rename to addons/components/ui/drawer.tsx
index 6641d075..3f45aa2e 100644
--- a/addons/browser/reliverse/ui/Drawer.tsx
+++ b/addons/components/ui/drawer.tsx
@@ -7,10 +7,9 @@ import type {
} from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import { Drawer as DrawerPrimitive } from "vaul";
-import { cn } from "~/utils";
-
const Drawer = DrawerPrimitive.Root;
const DrawerTrigger = DrawerPrimitive.Trigger;
diff --git a/addons/components/ui/dropdown-menu.tsx b/addons/components/ui/dropdown-menu.tsx
new file mode 100644
index 00000000..fef55a1d
--- /dev/null
+++ b/addons/components/ui/dropdown-menu.tsx
@@ -0,0 +1,281 @@
+"use client";
+
+import type {
+ ComponentPropsWithoutRef,
+ ElementRef,
+ HTMLAttributes,
+} from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
+import {
+ CheckIcon,
+ ChevronRightIcon,
+ DotFilledIcon,
+} from "@radix-ui/react-icons";
+
+const DropdownMenu = DropdownMenuPrimitive.Root;
+
+const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
+
+const DropdownMenuGroup = DropdownMenuPrimitive.Group;
+
+const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
+
+const DropdownMenuSub = DropdownMenuPrimitive.Sub;
+
+const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
+
+const DropdownMenuSubTrigger = forwardRef<
+ ElementRef,
+ {
+ inset?: boolean;
+ } & ComponentPropsWithoutRef
+>(({ className, inset, children, ...props }, ref) => (
+
+ {children}
+
+
+));
+
+DropdownMenuSubTrigger.displayName =
+ DropdownMenuPrimitive.SubTrigger.displayName;
+
+const DropdownMenuSubContent = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+DropdownMenuSubContent.displayName =
+ DropdownMenuPrimitive.SubContent.displayName;
+
+const DropdownMenuContent = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, sideOffset = 4, ...props }, ref) => (
+
+
+
+));
+
+DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
+
+const DropdownMenuItem = forwardRef<
+ ElementRef,
+ {
+ inset?: boolean;
+ } & ComponentPropsWithoutRef
+>(({ className, inset, ...props }, ref) => (
+
+));
+
+DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
+
+const DropdownMenuCheckboxItem = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, children, checked, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+));
+
+DropdownMenuCheckboxItem.displayName =
+ DropdownMenuPrimitive.CheckboxItem.displayName;
+
+const DropdownMenuRadioItem = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+));
+
+DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
+
+const DropdownMenuLabel = forwardRef<
+ ElementRef,
+ {
+ inset?: boolean;
+ } & ComponentPropsWithoutRef
+>(({ className, inset, ...props }, ref) => (
+
+));
+
+DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
+
+const DropdownMenuSeparator = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
+
+const DropdownMenuShortcut = ({
+ className,
+ ...props
+}: HTMLAttributes) => {
+ return (
+
+ );
+};
+
+DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
+
+export {
+ DropdownMenu,
+ DropdownMenuCheckboxItem,
+ DropdownMenuContent,
+ DropdownMenuGroup,
+ DropdownMenuItem,
+ DropdownMenuLabel,
+ DropdownMenuPortal,
+ DropdownMenuRadioGroup,
+ DropdownMenuRadioItem,
+ DropdownMenuSeparator,
+ DropdownMenuShortcut,
+ DropdownMenuSub,
+ DropdownMenuSubContent,
+ DropdownMenuSubTrigger,
+ DropdownMenuTrigger,
+};
diff --git a/addons/browser/reliverse/ui/Dropdown.tsx b/addons/components/ui/dropdown.tsx
similarity index 99%
rename from addons/browser/reliverse/ui/Dropdown.tsx
rename to addons/components/ui/dropdown.tsx
index ef432e93..9beafba7 100644
--- a/addons/browser/reliverse/ui/Dropdown.tsx
+++ b/addons/components/ui/dropdown.tsx
@@ -7,6 +7,7 @@ import type {
} from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
import {
CheckIcon,
@@ -14,8 +15,6 @@ import {
DotFilledIcon,
} from "@radix-ui/react-icons";
-import { cn } from "~/utils";
-
const DropdownMenu = DropdownMenuPrimitive.Root;
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
diff --git a/addons/browser/reliverse/ui/Form.tsx b/addons/components/ui/form.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Form.tsx
rename to addons/components/ui/form.tsx
index 2ab15c1a..0c112b47 100644
--- a/addons/browser/reliverse/ui/Form.tsx
+++ b/addons/components/ui/form.tsx
@@ -11,11 +11,10 @@ import { Controller, FormProvider, useFormContext } from "react-hook-form";
import type * as LabelPrimitive from "@radix-ui/react-label";
-import { Label } from "@/browser/reliverse/ui/Label";
+import { Label } from "@/components/ui/label";
+import { cn } from "@/utils";
import { Slot } from "@radix-ui/react-slot";
-import { cn } from "~/utils";
-
const Form = FormProvider;
type FormFieldContextValue<
diff --git a/addons/components/ui/grid.tsx b/addons/components/ui/grid.tsx
new file mode 100644
index 00000000..d3f33802
--- /dev/null
+++ b/addons/components/ui/grid.tsx
@@ -0,0 +1,34 @@
+import type { HTMLAttributes } from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+
+type GridProps = {
+ columns?: number;
+ gap?: number;
+} & HTMLAttributes;
+
+const Grid = forwardRef(
+ ({ children, columns = 2, gap = 4, className, ...props }, ref) => {
+ const gridClass = cn(
+ `
+ grid
+
+ grid-cols-${columns}
+
+ gap-${gap}
+ `,
+ className,
+ );
+
+ return (
+
+ {children}
+
+ );
+ },
+);
+
+Grid.displayName = "Grid";
+
+export { Grid };
diff --git a/addons/components/ui/heading.tsx b/addons/components/ui/heading.tsx
new file mode 100644
index 00000000..f5ca9a20
--- /dev/null
+++ b/addons/components/ui/heading.tsx
@@ -0,0 +1,60 @@
+import type { ReactNode } from "react";
+import Balancer from "react-wrap-balancer";
+
+import { cn } from "@/utils";
+import { cva } from "class-variance-authority";
+
+const headingVariants = cva("font-bold transition-colors", {
+ variants: {
+ variant: {
+ h1: `
+ scroll-m-20 border-b pb-2 text-3xl font-extrabold tracking-tight
+ `,
+ h2: `
+ scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight
+ transition-colors
+
+ first:mt-0
+ `,
+ h3: "scroll-m-20 text-2xl font-semibold tracking-tight",
+ h4: "scroll-m-20 text-xl font-semibold tracking-tight",
+ },
+ size: {
+ sm: "text-sm",
+ md: "text-base",
+ lg: "text-lg",
+ },
+ },
+ defaultVariants: {
+ variant: "h2",
+ size: "md",
+ },
+});
+
+// TODO: do we need something like this? 🤔
+// import type { VariantProps } from "class-variance-authority";
+// export type HeadingVariantsProps = VariantProps;
+// export { headingVariants };
+
+type HeadingProps = {
+ as?: "h1" | "h2" | "h3" | "h4";
+ children: ReactNode;
+ className?: string;
+};
+
+export function Heading({ className = "", children, as = "h2" }: HeadingProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/addons/components/ui/hover-card.tsx b/addons/components/ui/hover-card.tsx
new file mode 100644
index 00000000..c2118097
--- /dev/null
+++ b/addons/components/ui/hover-card.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import type { ComponentPropsWithoutRef, ElementRef } from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
+
+const HoverCard = HoverCardPrimitive.Root;
+
+const HoverCardTrigger = HoverCardPrimitive.Trigger;
+
+const HoverCardContent = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
+
+));
+
+HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
+
+export { HoverCard, HoverCardContent, HoverCardTrigger };
diff --git a/addons/browser/reliverse/ui/Icon.tsx b/addons/components/ui/icon.tsx
similarity index 100%
rename from addons/browser/reliverse/ui/Icon.tsx
rename to addons/components/ui/icon.tsx
diff --git a/addons/components/ui/input-otp.tsx b/addons/components/ui/input-otp.tsx
new file mode 100644
index 00000000..ac9b820b
--- /dev/null
+++ b/addons/components/ui/input-otp.tsx
@@ -0,0 +1,97 @@
+"use client";
+
+import type { ComponentPropsWithoutRef, ElementRef } from "react";
+import { forwardRef, useContext } from "react";
+
+import { cn } from "@/utils";
+import { DashIcon } from "@radix-ui/react-icons";
+import { OTPInput, OTPInputContext } from "input-otp";
+
+const InputOTP = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, containerClassName, ...props }, ref) => (
+
+));
+
+InputOTP.displayName = "InputOTP";
+
+const InputOTPGroup = forwardRef<
+ ElementRef<"div">,
+ ComponentPropsWithoutRef<"div">
+>(({ className, ...props }, ref) => (
+
+));
+
+InputOTPGroup.displayName = "InputOTPGroup";
+
+const InputOTPSlot = forwardRef<
+ ElementRef<"div">,
+ { index: number } & ComponentPropsWithoutRef<"div">
+>(({ index, className, ...props }, ref) => {
+ const inputOTPContext = useContext(OTPInputContext);
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index] || {};
+
+ return (
+
+ {char}
+ {hasFakeCaret && (
+
+ )}
+
+ );
+});
+
+InputOTPSlot.displayName = "InputOTPSlot";
+
+const InputOTPSeparator = forwardRef<
+ ElementRef<"div">,
+ ComponentPropsWithoutRef<"div">
+>(({ ...props }, ref) => (
+ // biome-ignore lint/a11y/useAriaPropsForRole:
+
+
+
+));
+
+InputOTPSeparator.displayName = "InputOTPSeparator";
+
+export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
diff --git a/addons/browser/reliverse/ui/Input.tsx b/addons/components/ui/input.tsx
similarity index 96%
rename from addons/browser/reliverse/ui/Input.tsx
rename to addons/components/ui/input.tsx
index e243c160..aa94a182 100644
--- a/addons/browser/reliverse/ui/Input.tsx
+++ b/addons/components/ui/input.tsx
@@ -3,7 +3,7 @@
import type { InputHTMLAttributes } from "react";
import { forwardRef } from "react";
-import { cn } from "~/utils";
+import { cn } from "@/utils";
type InputProps = InputHTMLAttributes;
diff --git a/addons/components/ui/kbd.tsx b/addons/components/ui/kbd.tsx
new file mode 100644
index 00000000..fb654346
--- /dev/null
+++ b/addons/components/ui/kbd.tsx
@@ -0,0 +1,62 @@
+import type { ComponentPropsWithoutRef } from "react";
+import { forwardRef } from "react";
+
+import type { VariantProps } from "class-variance-authority";
+
+import { cn } from "@/utils";
+import { cva } from "class-variance-authority";
+
+const kbdVariants = cva(
+ `
+ select-none rounded border px-1.5 py-px font-mono text-[0.7rem] font-normal
+ shadow-sm
+
+ disabled:opacity-50
+ `,
+ {
+ variants: {
+ variant: {
+ default: "bg-accent text-accent-foreground",
+ outline: "bg-background text-foreground",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ },
+);
+
+export type KbdProps = {
+ /**
+ * The title of the `abbr` element inside the `kbd` element.
+ * @default undefined
+ * @type string | undefined
+ * @example title="Command"
+ */
+ abbrTitle?: string;
+} & ComponentPropsWithoutRef<"kbd"> &
+ VariantProps;
+
+const Kbd = forwardRef(
+ ({ abbrTitle, children, className, variant, ...props }, ref) => {
+ return (
+
+ {abbrTitle ? (
+
+ {children}
+
+ ) : (
+ children
+ )}
+
+ );
+ },
+);
+
+Kbd.displayName = "Kbd";
+
+export { Kbd };
diff --git a/addons/browser/reliverse/ui/Label.tsx b/addons/components/ui/label.tsx
similarity index 96%
rename from addons/browser/reliverse/ui/Label.tsx
rename to addons/components/ui/label.tsx
index fd5aa8ee..74b864b7 100644
--- a/addons/browser/reliverse/ui/Label.tsx
+++ b/addons/components/ui/label.tsx
@@ -5,11 +5,10 @@ import { forwardRef } from "react";
import type { VariantProps } from "class-variance-authority";
+import { cn } from "@/utils";
import * as LabelPrimitive from "@radix-ui/react-label";
import { cva } from "class-variance-authority";
-import { cn } from "~/utils";
-
const labelVariants = cva(`
text-sm font-medium leading-none
diff --git a/addons/components/ui/link.tsx b/addons/components/ui/link.tsx
new file mode 100644
index 00000000..f32fff31
--- /dev/null
+++ b/addons/components/ui/link.tsx
@@ -0,0 +1,67 @@
+import type { ReactNode } from "react";
+
+import NextLink from "next/link";
+
+import { buttonVariants } from "@/components/ui/button";
+import { cn } from "@/utils";
+
+type LinkProps = {
+ variant?:
+ | "default"
+ | "destructive"
+ | "ghost"
+ | "link"
+ | "outline"
+ | "secondary";
+ children: ReactNode;
+ className?: string;
+ href: string;
+ rel?: string;
+ sameTab?: boolean;
+ size?: "default" | "icon" | "lg" | "sm";
+ target?: "_blank" | "_parent" | "_self" | "_top";
+};
+
+export function Link({
+ href,
+ className = "",
+ children,
+ target = "_self",
+ variant = "secondary",
+ size = "default",
+ sameTab = false,
+}: LinkProps) {
+ // Determine if the link is external
+ const isExternal = /^https?:\/\//.test(href);
+
+ // Set target and rel based on whether the link is external and sameTab is false
+ const linkTarget = isExternal && !sameTab ? "_blank" : target;
+ // eslint-disable-next-line unicorn/prevent-abbreviations
+ const linkRel = isExternal && !sameTab ? "noopener noreferrer" : undefined;
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/addons/components/ui/main.tsx b/addons/components/ui/main.tsx
new file mode 100644
index 00000000..b32bceba
--- /dev/null
+++ b/addons/components/ui/main.tsx
@@ -0,0 +1,57 @@
+import type { ComponentPropsWithoutRef, ReactNode } from "react";
+
+import { cn } from "@/utils";
+import { cva } from "class-variance-authority";
+
+const mainVariants = cva(
+ "container my-12 flex max-w-screen-xl flex-col items-center space-y-8 p-4",
+ {
+ variants: {
+ variant: {
+ default: "text-base leading-7",
+ centered: "text-center",
+ justified: "text-justify",
+ },
+ size: {
+ sm: "text-sm",
+ md: "text-base",
+ lg: "text-lg",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "md",
+ },
+ },
+);
+
+type MainProps = {
+ children: ReactNode;
+ className?: string;
+ size?: "lg" | "md" | "sm";
+ variant?: "centered" | "default" | "justified";
+} & ComponentPropsWithoutRef<"main">;
+
+export function Main({
+ className = "",
+ children,
+ size = "md",
+ variant = "default",
+ ...props
+}: MainProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/addons/components/ui/navigation-menu.tsx b/addons/components/ui/navigation-menu.tsx
new file mode 100644
index 00000000..decf9f56
--- /dev/null
+++ b/addons/components/ui/navigation-menu.tsx
@@ -0,0 +1,189 @@
+import type { ComponentPropsWithoutRef, ElementRef } from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+import { ChevronDownIcon } from "@radix-ui/react-icons";
+import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
+import { cva } from "class-variance-authority";
+
+const NavigationMenu = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+
+));
+
+NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
+
+const NavigationMenuList = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
+
+const NavigationMenuItem = NavigationMenuPrimitive.Item;
+
+const navigationMenuTriggerStyle = cva(
+ `
+ group inline-flex h-9 w-max items-center justify-center rounded-md
+ bg-background px-4 py-2 text-sm font-medium transition-colors
+
+ data-[active]:bg-accent/50
+
+ data-[state=open]:bg-accent/50
+
+ disabled:pointer-events-none disabled:opacity-50
+
+ focus:bg-accent focus:text-accent-foreground focus:outline-none
+
+ hover:bg-accent hover:text-accent-foreground
+ `,
+);
+
+const NavigationMenuTrigger = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}{" "}
+
+
+));
+
+NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
+
+const NavigationMenuContent = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
+
+const NavigationMenuLink = NavigationMenuPrimitive.Link;
+
+const NavigationMenuViewport = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+));
+
+NavigationMenuViewport.displayName =
+ NavigationMenuPrimitive.Viewport.displayName;
+
+const NavigationMenuIndicator = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+));
+
+NavigationMenuIndicator.displayName =
+ NavigationMenuPrimitive.Indicator.displayName;
+
+export {
+ NavigationMenu,
+ NavigationMenuContent,
+ NavigationMenuIndicator,
+ NavigationMenuItem,
+ NavigationMenuLink,
+ NavigationMenuList,
+ NavigationMenuTrigger,
+ navigationMenuTriggerStyle,
+ NavigationMenuViewport,
+};
diff --git a/addons/components/ui/pagination.tsx b/addons/components/ui/pagination.tsx
new file mode 100644
index 00000000..9a98a9bc
--- /dev/null
+++ b/addons/components/ui/pagination.tsx
@@ -0,0 +1,135 @@
+import type { ComponentProps } from "react";
+import { forwardRef } from "react";
+
+import Link from "next/link";
+
+import type { ButtonProps } from "@/components/ui/button";
+
+import { buttonVariants } from "@/components/ui/button";
+import { cn } from "@/utils";
+import {
+ ChevronLeftIcon,
+ ChevronRightIcon,
+ DotsHorizontalIcon,
+} from "@radix-ui/react-icons";
+
+const Pagination = ({ className, ...props }: ComponentProps<"nav">) => (
+
+);
+
+Pagination.displayName = "Pagination";
+
+const PaginationContent = forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+);
+
+PaginationContent.displayName = "PaginationContent";
+
+const PaginationItem = forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+);
+
+PaginationItem.displayName = "PaginationItem";
+
+type PaginationLinkProps = {
+ isActive?: boolean;
+} & ComponentProps &
+ Pick;
+
+const PaginationLink = ({
+ className,
+ href,
+ isActive = false,
+ size = "icon",
+ ...props
+}: PaginationLinkProps) => {
+ return (
+
+ );
+};
+
+PaginationLink.displayName = "PaginationLink";
+
+const PaginationPrevious = ({
+ className,
+ ...props
+}: ComponentProps) => (
+
+
+ Previous
+
+);
+
+PaginationPrevious.displayName = "PaginationPrevious";
+
+const PaginationNext = ({
+ className,
+ ...props
+}: ComponentProps) => (
+
+ Next
+
+
+);
+
+PaginationNext.displayName = "PaginationNext";
+
+const PaginationEllipsis = ({
+ className,
+ ...props
+}: ComponentProps<"span">) => (
+
+
+ More pages
+
+);
+
+PaginationEllipsis.displayName = "PaginationEllipsis";
+
+export {
+ Pagination,
+ PaginationContent,
+ PaginationEllipsis,
+ PaginationItem,
+ PaginationLink,
+ PaginationNext,
+ PaginationPrevious,
+};
diff --git a/addons/components/ui/paragraph.tsx b/addons/components/ui/paragraph.tsx
new file mode 100644
index 00000000..3df28169
--- /dev/null
+++ b/addons/components/ui/paragraph.tsx
@@ -0,0 +1,56 @@
+import type { ComponentPropsWithoutRef, ReactNode } from "react";
+import Balancer from "react-wrap-balancer";
+
+import { cn } from "@/utils";
+import { cva } from "class-variance-authority";
+
+const paragraphVariants = cva("", {
+ variants: {
+ variant: {
+ p: `
+ text-4xl leading-7
+
+ [&:not(:first-child)]:mt-6
+ `,
+ },
+ size: {
+ sm: "text-sm",
+ md: "text-base",
+ lg: "text-lg",
+ },
+ },
+ defaultVariants: {
+ variant: "p",
+ size: "md",
+ },
+});
+
+type ParagraphProps = {
+ children: ReactNode;
+ className?: string;
+ size?: "lg" | "md" | "sm";
+} & ComponentPropsWithoutRef<"p">;
+
+export function Paragraph({
+ className = "",
+ children,
+ size = "lg",
+ ...props
+}: ParagraphProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/addons/browser/reliverse/ui/Password.tsx b/addons/components/ui/password.tsx
similarity index 91%
rename from addons/browser/reliverse/ui/Password.tsx
rename to addons/components/ui/password.tsx
index a902d4c0..721b61bc 100644
--- a/addons/browser/reliverse/ui/Password.tsx
+++ b/addons/components/ui/password.tsx
@@ -3,11 +3,11 @@
import type { InputHTMLAttributes } from "react";
import { forwardRef, useState } from "react";
-import { Button } from "@/browser/reliverse/ui/Button";
-import { Input } from "@/browser/reliverse/ui/Input";
+import { Button } from "@/components/ui/button";
+import { Input } from "@/components/ui/input";
+import { cn } from "@/utils";
import { Icons } from "~/components/Common/Icons";
-import { cn } from "~/utils";
type PasswordInputProps = {
className?: string;
diff --git a/addons/browser/reliverse/ui/Popover.tsx b/addons/components/ui/popover.tsx
similarity index 97%
rename from addons/browser/reliverse/ui/Popover.tsx
rename to addons/components/ui/popover.tsx
index 327fe73c..485c3ded 100644
--- a/addons/browser/reliverse/ui/Popover.tsx
+++ b/addons/components/ui/popover.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as PopoverPrimitive from "@radix-ui/react-popover";
-import { cn } from "~/utils";
-
const Popover = PopoverPrimitive.Root;
const PopoverTrigger = PopoverPrimitive.Trigger;
diff --git a/addons/browser/reliverse/ui/Popup.tsx b/addons/components/ui/popup.tsx
similarity index 94%
rename from addons/browser/reliverse/ui/Popup.tsx
rename to addons/components/ui/popup.tsx
index 7168a278..b7961d9b 100644
--- a/addons/browser/reliverse/ui/Popup.tsx
+++ b/addons/components/ui/popup.tsx
@@ -9,7 +9,7 @@ import {
SheetHeader,
SheetTitle,
SheetTrigger,
-} from "@/browser/reliverse/ui/Sheet";
+} from "@/components/ui/sheet";
export const Popup = () => {
const [isOpen, setIsOpen] = useState(false);
diff --git a/addons/components/ui/progress.tsx b/addons/components/ui/progress.tsx
new file mode 100644
index 00000000..986c452c
--- /dev/null
+++ b/addons/components/ui/progress.tsx
@@ -0,0 +1,30 @@
+"use client";
+
+import type { ComponentPropsWithoutRef, ElementRef } from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+import * as ProgressPrimitive from "@radix-ui/react-progress";
+
+const Progress = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
+>(({ className, value, ...props }, ref) => (
+
+
+
+));
+
+Progress.displayName = ProgressPrimitive.Root.displayName;
+
+export { Progress };
diff --git a/addons/browser/reliverse/ui/Scroll-Area.tsx b/addons/components/ui/scroll-area.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Scroll-Area.tsx
rename to addons/components/ui/scroll-area.tsx
index d02e6d1f..6fa9d1fc 100644
--- a/addons/browser/reliverse/ui/Scroll-Area.tsx
+++ b/addons/components/ui/scroll-area.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
-import { cn } from "~/utils";
-
const ScrollArea = forwardRef<
ComponentRef,
{
diff --git a/addons/components/ui/section.tsx b/addons/components/ui/section.tsx
new file mode 100644
index 00000000..3a122579
--- /dev/null
+++ b/addons/components/ui/section.tsx
@@ -0,0 +1,76 @@
+import type { ComponentPropsWithoutRef, ReactNode } from "react";
+
+import { cn } from "@/utils";
+import { cva } from "class-variance-authority";
+
+const sectionVariants = cva(
+ "container my-12 flex max-w-screen-xl flex-col items-center space-y-8 p-4",
+ {
+ variants: {
+ variant: {
+ default: "text-base leading-7",
+ centered: "text-center",
+ justified: "text-justify",
+ },
+ size: {
+ sm: "text-sm",
+ md: "text-base",
+ lg: "text-lg",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "md",
+ },
+ },
+);
+
+type SectionProps = {
+ children: ReactNode;
+ className?: string;
+ mb?: string;
+ mt?: string;
+ my?: string;
+ size?: "lg" | "md" | "sm";
+ variant?: "centered" | "default" | "justified";
+} & ComponentPropsWithoutRef<"section">;
+
+// TODO: fix mt, mb, my
+export function Section({
+ className = "",
+ children,
+ size = "md",
+ variant = "default",
+ mt,
+ mb,
+ my,
+ ...props
+}: SectionProps) {
+ return (
+
+ );
+}
diff --git a/addons/browser/reliverse/ui/Select.tsx b/addons/components/ui/select.tsx
similarity index 99%
rename from addons/browser/reliverse/ui/Select.tsx
rename to addons/components/ui/select.tsx
index e674536f..0cfaaa65 100644
--- a/addons/browser/reliverse/ui/Select.tsx
+++ b/addons/components/ui/select.tsx
@@ -3,11 +3,10 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import { CaretSortIcon, CheckIcon } from "@radix-ui/react-icons";
import * as SelectPrimitive from "@radix-ui/react-select";
-import { cn } from "~/utils";
-
const Select = SelectPrimitive.Root;
const SelectGroup = SelectPrimitive.Group;
diff --git a/addons/browser/reliverse/ui/Separator.tsx b/addons/components/ui/separator.tsx
similarity index 96%
rename from addons/browser/reliverse/ui/Separator.tsx
rename to addons/components/ui/separator.tsx
index 8078ec01..ce7ac48d 100644
--- a/addons/browser/reliverse/ui/Separator.tsx
+++ b/addons/components/ui/separator.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as SeparatorPrimitive from "@radix-ui/react-separator";
-import { cn } from "~/utils";
-
const Separator = forwardRef<
ComponentRef,
ComponentPropsWithoutRef
diff --git a/addons/browser/reliverse/ui/Sheet.tsx b/addons/components/ui/sheet.tsx
similarity index 85%
rename from addons/browser/reliverse/ui/Sheet.tsx
rename to addons/components/ui/sheet.tsx
index 796f990b..70d94009 100644
--- a/addons/browser/reliverse/ui/Sheet.tsx
+++ b/addons/components/ui/sheet.tsx
@@ -2,18 +2,17 @@
import type {
ComponentPropsWithoutRef,
- ComponentRef,
+ ElementRef,
HTMLAttributes,
} from "react";
import { forwardRef } from "react";
import type { VariantProps } from "class-variance-authority";
+import { cn } from "@/utils";
import * as SheetPrimitive from "@radix-ui/react-dialog";
-import { Cross2Icon } from "@radix-ui/react-icons";
import { cva } from "class-variance-authority";
-
-import { cn } from "~/utils";
+import { X } from "lucide-react";
const Sheet = SheetPrimitive.Root;
@@ -21,20 +20,16 @@ const SheetTrigger = SheetPrimitive.Trigger;
const SheetClose = SheetPrimitive.Close;
-const SheetPortal = ({ ...props }: SheetPrimitive.DialogPortalProps) => (
-
-);
-
-SheetPortal.displayName = SheetPrimitive.Portal.displayName;
+const SheetPortal = SheetPrimitive.Portal;
const SheetOverlay = forwardRef<
- ComponentRef,
+ ElementRef,
ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
;
const SheetContent = forwardRef<
- ComponentRef,
+ ElementRef,
SheetContentProps
->(({ children, className, side = "right", ...props }, ref) => (
+>(({ side = "right", className, children, ...props }, ref) => (
{children}
@@ -136,7 +126,7 @@ const SheetContent = forwardRef<
hover:opacity-100
`}
>
-
+
Close
@@ -184,12 +174,12 @@ const SheetFooter = ({
SheetFooter.displayName = "SheetFooter";
const SheetTitle = forwardRef<
- ComponentRef,
+ ElementRef,
ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
));
@@ -197,12 +187,12 @@ const SheetTitle = forwardRef<
SheetTitle.displayName = SheetPrimitive.Title.displayName;
const SheetDescription = forwardRef<
- ComponentRef,
+ ElementRef,
ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
));
@@ -216,6 +206,8 @@ export {
SheetDescription,
SheetFooter,
SheetHeader,
+ SheetOverlay,
+ SheetPortal,
SheetTitle,
SheetTrigger,
};
diff --git a/addons/browser/reliverse/ui/Skeleton.tsx b/addons/components/ui/skeleton.tsx
similarity index 90%
rename from addons/browser/reliverse/ui/Skeleton.tsx
rename to addons/components/ui/skeleton.tsx
index 88bbd75c..439e1666 100644
--- a/addons/browser/reliverse/ui/Skeleton.tsx
+++ b/addons/components/ui/skeleton.tsx
@@ -1,6 +1,6 @@
import type { HTMLAttributes } from "react";
-import { cn } from "~/utils";
+import { cn } from "@/utils";
function Skeleton({ className, ...props }: HTMLAttributes) {
return (
diff --git a/addons/browser/reliverse/ui/Slider.tsx b/addons/components/ui/slider.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Slider.tsx
rename to addons/components/ui/slider.tsx
index 238b98b5..9a138455 100644
--- a/addons/browser/reliverse/ui/Slider.tsx
+++ b/addons/components/ui/slider.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as SliderPrimitive from "@radix-ui/react-slider";
-import { cn } from "~/utils";
-
const Slider = forwardRef<
ComponentRef,
{
diff --git a/addons/components/ui/span.tsx b/addons/components/ui/span.tsx
new file mode 100644
index 00000000..2a186f56
--- /dev/null
+++ b/addons/components/ui/span.tsx
@@ -0,0 +1,52 @@
+import type { ComponentPropsWithoutRef, ReactNode } from "react";
+import Balancer from "react-wrap-balancer";
+
+import { cn } from "@/utils";
+import { cva } from "class-variance-authority";
+
+const spanVariants = cva("", {
+ variants: {
+ variant: {
+ span: "text-3xl",
+ },
+ size: {
+ sm: "text-sm",
+ md: "text-base",
+ lg: "text-lg",
+ },
+ },
+ defaultVariants: {
+ variant: "span",
+ size: "md",
+ },
+});
+
+type SpanProps = {
+ as?: "span";
+ children: ReactNode;
+ className?: string;
+ size?: "lg" | "md" | "sm";
+} & ComponentPropsWithoutRef<"span">;
+
+export function Span({
+ className = "",
+ children,
+ size = "lg",
+ ...props
+}: SpanProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/addons/browser/reliverse/ui/Switch.tsx b/addons/components/ui/switch.tsx
similarity index 97%
rename from addons/browser/reliverse/ui/Switch.tsx
rename to addons/components/ui/switch.tsx
index 57d6f3e6..b4419635 100644
--- a/addons/browser/reliverse/ui/Switch.tsx
+++ b/addons/components/ui/switch.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as SwitchPrimitives from "@radix-ui/react-switch";
-import { cn } from "~/utils";
-
const Switch = forwardRef<
ComponentRef,
ComponentPropsWithoutRef
diff --git a/addons/browser/reliverse/ui/Table.tsx b/addons/components/ui/table.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Table.tsx
rename to addons/components/ui/table.tsx
index 62b0261c..52a8f508 100644
--- a/addons/browser/reliverse/ui/Table.tsx
+++ b/addons/components/ui/table.tsx
@@ -1,7 +1,7 @@
import type { HTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from "react";
import { forwardRef } from "react";
-import { cn } from "~/utils";
+import { cn } from "@/utils";
const Table = forwardRef>(
({ className, ...props }, ref) => (
diff --git a/addons/browser/reliverse/ui/Tabs.tsx b/addons/components/ui/tabs.tsx
similarity index 98%
rename from addons/browser/reliverse/ui/Tabs.tsx
rename to addons/components/ui/tabs.tsx
index 732ec3e3..dd0111ed 100644
--- a/addons/browser/reliverse/ui/Tabs.tsx
+++ b/addons/components/ui/tabs.tsx
@@ -3,10 +3,9 @@
import type { ComponentPropsWithoutRef, ComponentRef } from "react";
import { forwardRef } from "react";
+import { cn } from "@/utils";
import * as TabsPrimitive from "@radix-ui/react-tabs";
-import { cn } from "~/utils";
-
const Tabs = TabsPrimitive.Root;
const TabsList = forwardRef<
diff --git a/addons/browser/reliverse/ui/Text-Area.tsx b/addons/components/ui/text-area.tsx
similarity index 96%
rename from addons/browser/reliverse/ui/Text-Area.tsx
rename to addons/components/ui/text-area.tsx
index 0524802f..c2cc4083 100644
--- a/addons/browser/reliverse/ui/Text-Area.tsx
+++ b/addons/components/ui/text-area.tsx
@@ -1,7 +1,7 @@
import type { TextareaHTMLAttributes } from "react";
import { forwardRef } from "react";
-import { cn } from "~/utils";
+import { cn } from "@/utils";
type TextareaProps = TextareaHTMLAttributes;
diff --git a/addons/components/ui/textarea.tsx b/addons/components/ui/textarea.tsx
new file mode 100644
index 00000000..7d86203b
--- /dev/null
+++ b/addons/components/ui/textarea.tsx
@@ -0,0 +1,35 @@
+import type { TextareaHTMLAttributes } from "react";
+import { forwardRef } from "react";
+
+import { cn } from "@/utils";
+
+export type TextareaProps = {} & TextareaHTMLAttributes;
+
+const Textarea = forwardRef(
+ ({ className, ...props }, ref) => {
+ return (
+
+ );
+ },
+);
+
+Textarea.displayName = "Textarea";
+
+export { Textarea };
diff --git a/addons/browser/reliverse/ui/Toast.tsx b/addons/components/ui/toast.tsx
similarity index 78%
rename from addons/browser/reliverse/ui/Toast.tsx
rename to addons/components/ui/toast.tsx
index a0c0276d..f0fe03d6 100644
--- a/addons/browser/reliverse/ui/Toast.tsx
+++ b/addons/components/ui/toast.tsx
@@ -1,19 +1,20 @@
"use client";
-import * as React from "react";
+import type { ComponentPropsWithoutRef, ElementRef, ReactElement } from "react";
+import { forwardRef } from "react";
import type { VariantProps } from "class-variance-authority";
-import { cn } from "@/browser/shared/utils";
+import { cn } from "@/utils";
import * as ToastPrimitives from "@radix-ui/react-toast";
import { cva } from "class-variance-authority";
import { X } from "lucide-react";
const ToastProvider = ToastPrimitives.Provider;
-const ToastViewport = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
+const ToastViewport = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
,
- React.ComponentPropsWithoutRef &
+const Toast = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef &
VariantProps
>(({ className, variant, ...props }, ref) => {
return (
@@ -85,9 +86,9 @@ const Toast = React.forwardRef<
Toast.displayName = ToastPrimitives.Root.displayName;
-const ToastAction = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
+const ToastAction = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
,
- React.ComponentPropsWithoutRef
+const ToastClose = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
,
- React.ComponentPropsWithoutRef
+const ToastTitle = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
,
- React.ComponentPropsWithoutRef
+const ToastDescription = forwardRef<
+ ElementRef,
+ ComponentPropsWithoutRef
>(({ className, ...props }, ref) => (
;
+type ToastProps = ComponentPropsWithoutRef;
-type ToastActionElement = React.ReactElement;
+type ToastActionElement = ReactElement;
export {
Toast,
diff --git a/addons/browser/reliverse/ui/Toaster.tsx b/addons/components/ui/toaster.tsx
similarity index 90%
rename from addons/browser/reliverse/ui/Toaster.tsx
rename to addons/components/ui/toaster.tsx
index 4cc4fec3..8ae307ba 100644
--- a/addons/browser/reliverse/ui/Toaster.tsx
+++ b/addons/components/ui/toaster.tsx
@@ -1,6 +1,6 @@
"use client";
-import { useToast } from "@/browser/reliverse/ui/use-toast";
+import { useToast } from "@/hooks-react/use-toast";
import {
Toast,
@@ -9,7 +9,7 @@ import {
ToastProvider,
ToastTitle,
ToastViewport,
-} from "./Toast";
+} from "./toast";
export function Toaster() {
const { toasts } = useToast();
diff --git a/addons/browser/reliverse/ui/Tooltip.tsx b/addons/components/ui/tooltip.tsx
similarity index 96%
rename from addons/browser/reliverse/ui/Tooltip.tsx
rename to addons/components/ui/tooltip.tsx
index 5005a9ab..8e17f0b8 100644
--- a/addons/browser/reliverse/ui/Tooltip.tsx
+++ b/addons/components/ui/tooltip.tsx
@@ -3,7 +3,7 @@
import type { ComponentPropsWithoutRef, ElementRef } from "react";
import { forwardRef } from "react";
-import { cn } from "@/browser/shared/utils";
+import { cn } from "@/utils";
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
const TooltipProvider = TooltipPrimitive.Provider;
diff --git a/addons/hooks-react/use-at-bottom.ts b/addons/hooks-react/use-at-bottom.ts
new file mode 100644
index 00000000..0e458057
--- /dev/null
+++ b/addons/hooks-react/use-at-bottom.ts
@@ -0,0 +1,23 @@
+import { useEffect, useState } from "react";
+
+export function useAtBottom(offset = 0) {
+ const [isAtBottom, setIsAtBottom] = useState(false);
+
+ useEffect(() => {
+ const handleScroll = () => {
+ setIsAtBottom(
+ window.innerHeight + window.scrollY >=
+ document.body.offsetHeight - offset,
+ );
+ };
+
+ window.addEventListener("scroll", handleScroll, { passive: true });
+ handleScroll();
+
+ return () => {
+ window.removeEventListener("scroll", handleScroll);
+ };
+ }, [offset]);
+
+ return isAtBottom;
+}
diff --git a/addons/hooks-react/use-callback-ref.ts b/addons/hooks-react/use-callback-ref.ts
new file mode 100644
index 00000000..0d89edcd
--- /dev/null
+++ b/addons/hooks-react/use-callback-ref.ts
@@ -0,0 +1,20 @@
+import { useEffect, useMemo, useRef } from "react";
+
+/**
+ * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a
+ * prop or avoid re-executing effects when passed as a dependency
+ */
+function useCallbackRef unknown>(
+ callback: T | undefined,
+): T {
+ const callbackRef = useRef(callback);
+
+ useEffect(() => {
+ callbackRef.current = callback;
+ });
+
+ // https://github.com/facebook/react/issues/19240
+ return useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);
+}
+
+export { useCallbackRef };
diff --git a/addons/hooks-react/use-click-outside.ts b/addons/hooks-react/use-click-outside.ts
new file mode 100644
index 00000000..4f1f639f
--- /dev/null
+++ b/addons/hooks-react/use-click-outside.ts
@@ -0,0 +1,29 @@
+import type { RefObject } from "react";
+import { useEffect } from "react";
+
+type UseClickOutsideProps = {
+ handler: (event: MouseEvent | TouchEvent) => void;
+ ref: RefObject;
+};
+
+export function useClickOutside({ ref, handler }: UseClickOutsideProps) {
+ useEffect(() => {
+ const listener = (event: MouseEvent | TouchEvent) => {
+ const element = ref?.current;
+
+ if (!element || element.contains((event?.target as Node) || null)) {
+ return;
+ }
+
+ handler(event);
+ };
+
+ document.addEventListener("mousedown", listener);
+ document.addEventListener("touchstart", listener);
+
+ return () => {
+ document.removeEventListener("mousedown", listener);
+ document.removeEventListener("touchstart", listener);
+ };
+ }, [ref, handler]);
+}
diff --git a/src/hooks/react-client/useClipboard.ts b/addons/hooks-react/use-clipboard.ts
similarity index 100%
rename from src/hooks/react-client/useClipboard.ts
rename to addons/hooks-react/use-clipboard.ts
diff --git a/addons/hooks-react/use-controllable-state.ts b/addons/hooks-react/use-controllable-state.ts
new file mode 100644
index 00000000..563dfc0b
--- /dev/null
+++ b/addons/hooks-react/use-controllable-state.ts
@@ -0,0 +1,66 @@
+import type { Dispatch, SetStateAction } from "react";
+import { useCallback, useEffect, useRef, useState } from "react";
+
+import { useCallbackRef } from "@/hooks-react/use-callback-ref";
+
+type UseControllableStateParams = {
+ defaultProp?: T | undefined;
+ prop?: T | undefined;
+ onChange?: (state: T) => void;
+};
+
+type SetStateFunction = (previousState?: T) => T;
+
+function useControllableState({
+ prop,
+ defaultProp,
+ onChange = () => {},
+}: UseControllableStateParams) {
+ const [uncontrolledProperty, setUncontrolledProperty] = useUncontrolledState({
+ defaultProp,
+ onChange,
+ });
+ const isControlled = prop !== undefined;
+ const value = isControlled ? prop : uncontrolledProperty;
+ const handleChange = useCallbackRef(onChange);
+
+ const setValue: Dispatch> = useCallback(
+ (nextValue) => {
+ if (isControlled) {
+ const setter = nextValue as SetStateFunction;
+ const value =
+ typeof nextValue === "function" ? setter(prop) : nextValue;
+
+ if (value !== prop) {
+ handleChange(value as T);
+ }
+ } else {
+ setUncontrolledProperty(nextValue);
+ }
+ },
+ [isControlled, prop, setUncontrolledProperty, handleChange],
+ );
+
+ return [value, setValue] as const;
+}
+
+function useUncontrolledState({
+ defaultProp,
+ onChange,
+}: Omit, "prop">) {
+ const uncontrolledState = useState(defaultProp);
+ const [value] = uncontrolledState;
+ const previousValueRef = useRef(value);
+ const handleChange = useCallbackRef(onChange);
+
+ useEffect(() => {
+ if (previousValueRef.current !== value) {
+ handleChange(value as T);
+ previousValueRef.current = value;
+ }
+ }, [value, previousValueRef, handleChange]);
+
+ return uncontrolledState;
+}
+
+export { useControllableState };
diff --git a/addons/hooks-react/use-data-table.ts b/addons/hooks-react/use-data-table.ts
new file mode 100644
index 00000000..26463cda
--- /dev/null
+++ b/addons/hooks-react/use-data-table.ts
@@ -0,0 +1,346 @@
+"use client";
+
+import { useCallback, useEffect, useMemo, useState } from "react";
+
+import { usePathname, useRouter, useSearchParams } from "next/navigation";
+
+import type { DataTableFilterField } from "@/types";
+import type {
+ ColumnDef,
+ ColumnFiltersState,
+ PaginationState,
+ SortingState,
+ VisibilityState,
+} from "@tanstack/react-table";
+
+import { useDebounce } from "@/hooks-react/use-debounce";
+import {
+ getCoreRowModel,
+ getFacetedRowModel,
+ getFacetedUniqueValues,
+ getFilteredRowModel,
+ getPaginationRowModel,
+ getSortedRowModel,
+ useReactTable,
+} from "@tanstack/react-table";
+import destr from "destr";
+import { z } from "zod";
+
+/* eslint-disable @stylistic/max-len */
+type UseDataTableProps = {
+ /**
+ * The columns of the table.
+ * @default []
+ * @type ColumnDef[]
+ */
+ columns: ColumnDef[];
+
+ /**
+ * The data for the table.
+ * @default []
+ * @type TData[]
+ */
+ data: TData[];
+
+ /**
+ * The default number of rows per page.
+ * @default 10
+ * @type number | undefined
+ * @example 20
+ */
+ defaultPerPage?: number;
+
+ /**
+ * The default sort order.
+ * @default "createdAt.desc"
+ * @type `${Extract}.${"asc" | "desc"}` | undefined
+ * @example "updatedAt.desc"
+ */
+ defaultSort?: `${Extract}.${"asc" | "desc"}`;
+
+ /**
+ * Enable notion like column filters.
+ * Advanced filters and column filters cannot be used at the same time.
+ * @default false
+ * @type boolean
+ */
+ enableAdvancedFilter?: boolean;
+
+ /**
+ * Defines filter fields for the table. Supports both dynamic faceted filters and search filters.
+ * - Faceted filters are rendered when `options` are provided for a filter field.
+ * - Otherwise, search filters are rendered.
+ *
+ * The indie filter field `value` represents the corresponding column name in the database table.
+ * @default []
+ * @type { label: string, value: keyof TData, placeholder?: string, options?: { label: string, value: string, icon?: ComponentType<{ className?: string }> }[] }[]
+ * @example
+ * ```ts
+ * // Render a search filter
+ * const filterFields = [
+ * { label: "Title", value: "title", placeholder: "Search titles" }
+ * ];
+ * // Render a faceted filter
+ * const filterFields = [
+ * {
+ * label: "Status",
+ * value: "status",
+ * options: [
+ * { label: "Todo", value: "todo" },
+ * { label: "In Progress", value: "in-progress" },
+ * { label: "Done", value: "done" },
+ * { label: "Canceled", value: "canceled" }
+ * ]
+ * }
+ * ];
+ * ```
+ */
+ filterFields?: DataTableFilterField[];
+
+ /**
+ * The number of pages in the table.
+ * @type number
+ */
+ pageCount: number;
+};
+
+const schema = z.object({
+ page: z.coerce.number().default(1),
+ per_page: z.coerce.number().optional(),
+ sort: z.string().optional(),
+});
+
+export function useDataTable({
+ data,
+ columns,
+ pageCount,
+ defaultPerPage = 10,
+ defaultSort = "createdAt.desc" as `${Extract}.${"asc" | "desc"}`,
+ filterFields = [],
+ enableAdvancedFilter = false,
+}: UseDataTableProps) {
+ const router = useRouter();
+ const pathname = usePathname();
+ const searchParams = useSearchParams();
+
+ // Search params
+ const search = schema.parse(Object.fromEntries(searchParams));
+ const page = search.page;
+ const perPage = search.per_page || defaultPerPage;
+ const sort = search.sort || defaultSort;
+ const [column, order] = sort?.split(".") || [];
+
+ // Memoize computation of searchableColumns and filterableColumns
+ const { searchableColumns, filterableColumns } = useMemo(() => {
+ return {
+ searchableColumns: filterFields.filter((field) => !field.options),
+ filterableColumns: filterFields.filter((field) => field.options),
+ };
+ }, [filterFields]);
+
+ // Create query string
+ const createQueryString = useCallback(
+ (params: Record) => {
+ const newSearchParams = new URLSearchParams(searchParams?.toString());
+
+ for (const [key, value] of Object.entries(params)) {
+ if (value === null) {
+ newSearchParams.delete(key);
+ } else {
+ newSearchParams.set(key, String(value));
+ }
+ }
+
+ return newSearchParams.toString();
+ },
+ [searchParams],
+ );
+
+ // Initial column filters
+ const initialColumnFilters: ColumnFiltersState = useMemo(() => {
+ return [...searchParams.entries()].reduce(
+ (filters, [key, value]) => {
+ const filterableColumn = filterableColumns.find(
+ (column) => column.value === key,
+ );
+
+ const searchableColumn = searchableColumns.find(
+ (column) => column.value === key,
+ );
+
+ if (filterableColumn) {
+ filters.push({
+ id: key,
+ value: value.split("."),
+ });
+ } else if (searchableColumn) {
+ filters.push({
+ id: key,
+ value: [value],
+ });
+ }
+
+ return filters;
+ },
+ [],
+ );
+ }, [filterableColumns, searchableColumns, searchParams]);
+
+ // Table states
+ const [rowSelection, setRowSelection] = useState({});
+ const [columnVisibility, setColumnVisibility] = useState({});
+
+ const [columnFilters, setColumnFilters] =
+ useState(initialColumnFilters);
+
+ // Handle server-side pagination
+ const [{ pageIndex, pageSize }, setPagination] = useState({
+ pageIndex: page - 1,
+ pageSize: perPage,
+ });
+
+ const pagination = useMemo(
+ () => ({
+ pageIndex,
+ pageSize,
+ }),
+ [pageIndex, pageSize],
+ );
+
+ useEffect(() => {
+ router.push(
+ `${pathname}?${createQueryString({
+ page: pageIndex + 1,
+ per_page: pageSize,
+ })}`,
+ {
+ scroll: false,
+ },
+ );
+ }, [pageIndex, pageSize]);
+
+ // Handle server-side sorting
+ const [sorting, setSorting] = useState([
+ {
+ id: column || "",
+ desc: order === "desc",
+ },
+ ]);
+
+ useEffect(() => {
+ router.push(
+ `${pathname}?${createQueryString({
+ page,
+ sort: sorting[0]?.id
+ ? `${sorting[0]?.id}.${sorting[0]?.desc ? "desc" : "asc"}`
+ : null,
+ })}`,
+ );
+ }, [sorting]);
+
+ // Handle server-side filtering
+ const debouncedSearchableColumnFilters = destr(
+ useDebounce(
+ JSON.stringify(
+ columnFilters.filter((filter) => {
+ return searchableColumns.find((column) => column.value === filter.id);
+ }),
+ ),
+ 500,
+ ),
+ ) as ColumnFiltersState;
+
+ const filterableColumnFilters = columnFilters.filter((filter) => {
+ return filterableColumns.find((column) => column.value === filter.id);
+ });
+
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => {
+ // Opt out when advanced filter is enabled, because it contains additional params
+ if (enableAdvancedFilter) {
+ return;
+ }
+
+ // Prevent resetting the page on initial render
+ if (!mounted) {
+ setMounted(true);
+
+ return;
+ }
+
+ // Initialize new params
+ const newParamsObject = {
+ page: 1,
+ };
+
+ // Handle debounced searchable column filters
+ for (const column of debouncedSearchableColumnFilters) {
+ if (typeof column.value === "string") {
+ Object.assign(newParamsObject, {
+ [column.id]: typeof column.value === "string" ? column.value : null,
+ });
+ }
+ }
+
+ // Handle filterable column filters
+ for (const column of filterableColumnFilters) {
+ if (typeof column.value === "object" && Array.isArray(column.value)) {
+ Object.assign(newParamsObject, { [column.id]: column.value.join(".") });
+ }
+ }
+
+ // Remove deleted values
+ for (const key of searchParams.keys()) {
+ if (
+ (searchableColumns.some((column) => column.value === key) &&
+ !debouncedSearchableColumnFilters.some(
+ (column) => column.id === key,
+ )) ||
+ (filterableColumns.some((column) => column.value === key) &&
+ !filterableColumnFilters.some((column) => column.id === key))
+ ) {
+ Object.assign(newParamsObject, { [key]: null });
+ }
+ }
+
+ // After cumulating all the changes, push new params
+ router.push(`${pathname}?${createQueryString(newParamsObject)}`);
+
+ table.setPageIndex(0);
+ }, [
+ JSON.stringify(debouncedSearchableColumnFilters),
+
+ JSON.stringify(filterableColumnFilters),
+ ]);
+
+ const table = useReactTable({
+ data,
+ columns,
+ pageCount: pageCount || -1,
+ state: {
+ pagination,
+ sorting,
+ columnVisibility,
+ rowSelection,
+ columnFilters,
+ },
+ enableRowSelection: true,
+ onRowSelectionChange: setRowSelection,
+ onPaginationChange: setPagination,
+ onSortingChange: setSorting,
+ onColumnFiltersChange: setColumnFilters,
+ onColumnVisibilityChange: setColumnVisibility,
+ getCoreRowModel: getCoreRowModel(),
+ getFilteredRowModel: getFilteredRowModel(),
+ getPaginationRowModel: getPaginationRowModel(),
+ getSortedRowModel: getSortedRowModel(),
+ getFacetedRowModel: getFacetedRowModel(),
+ getFacetedUniqueValues: getFacetedUniqueValues(),
+ manualPagination: true,
+ manualSorting: true,
+ manualFiltering: true,
+ });
+
+ return { table };
+}
diff --git a/src/hooks/react-client/useDebounce.ts b/addons/hooks-react/use-debounce.ts
similarity index 79%
rename from src/hooks/react-client/useDebounce.ts
rename to addons/hooks-react/use-debounce.ts
index 4ebd17eb..24907dfc 100644
--- a/src/hooks/react-client/useDebounce.ts
+++ b/addons/hooks-react/use-debounce.ts
@@ -1,8 +1,6 @@
-"use client";
-
import { useEffect, useState } from "react";
-export default function useDebounce(value: T, delay?: number): T {
+export function useDebounce(value: T, delay?: number): T {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
diff --git a/addons/hooks-react/use-enter-submit.ts b/addons/hooks-react/use-enter-submit.ts
new file mode 100644
index 00000000..a0f4325e
--- /dev/null
+++ b/addons/hooks-react/use-enter-submit.ts
@@ -0,0 +1,22 @@
+import { useRef } from "react";
+import type { KeyboardEvent, RefObject } from "react";
+
+export function useEnterSubmit(): {
+ formRef: RefObject;
+ onKeyDown: (event: KeyboardEvent) => void;
+} {
+ const formRef = useRef(null);
+
+ const handleKeyDown = (event: KeyboardEvent): void => {
+ if (
+ event.key === "Enter" &&
+ !event.shiftKey &&
+ !event.nativeEvent.isComposing
+ ) {
+ formRef.current?.requestSubmit();
+ event.preventDefault();
+ }
+ };
+
+ return { formRef, onKeyDown: handleKeyDown };
+}
diff --git a/src/hooks/react-client/useEvent.ts b/addons/hooks-react/use-event.ts
similarity index 85%
rename from src/hooks/react-client/useEvent.ts
rename to addons/hooks-react/use-event.ts
index 1bf0e9e2..304d1106 100644
--- a/src/hooks/react-client/useEvent.ts
+++ b/addons/hooks-react/use-event.ts
@@ -2,7 +2,7 @@
import { useCallback, useRef } from "react";
-import { useIsomorphicLayoutEffect } from "~/hooks/react-client/useIsomorphic";
+import { useIsomorphicLayoutEffect } from "@/hooks-react/use-isomorphic";
export function useEvent any>(
handler: T,
diff --git a/src/hooks/react-client/useIds.ts b/addons/hooks-react/use-ids.ts
similarity index 100%
rename from src/hooks/react-client/useIds.ts
rename to addons/hooks-react/use-ids.ts
diff --git a/src/hooks/react-client/useInterval.ts b/addons/hooks-react/use-interval.ts
similarity index 100%
rename from src/hooks/react-client/useInterval.ts
rename to addons/hooks-react/use-interval.ts
diff --git a/src/hooks/react-client/useIsomorphic.ts b/addons/hooks-react/use-isomorphic.ts
similarity index 100%
rename from src/hooks/react-client/useIsomorphic.ts
rename to addons/hooks-react/use-isomorphic.ts
diff --git a/src/hooks/react-client/useLocalStorage.ts b/addons/hooks-react/use-local-storage.ts
similarity index 84%
rename from src/hooks/react-client/useLocalStorage.ts
rename to addons/hooks-react/use-local-storage.ts
index a11e5806..0f3720f7 100644
--- a/src/hooks/react-client/useLocalStorage.ts
+++ b/addons/hooks-react/use-local-storage.ts
@@ -3,10 +3,8 @@
import type { Dispatch, SetStateAction } from "react";
import { useEffect, useState } from "react";
+import useOnMount from "@/hooks-react/use-on-mount";
import destr from "destr";
-import superjson from "superjson";
-
-import { useOnMount } from "~/hooks";
const noop = () => {};
@@ -22,7 +20,7 @@ const useLocalStorage = (
return destr(item) as T;
}
- localStorage.setItem(key, superjson.stringify(initialValue));
+ localStorage.setItem(key, JSON.stringify(initialValue));
return initialValue;
} catch {
diff --git a/addons/hooks-react/use-media-query.ts b/addons/hooks-react/use-media-query.ts
new file mode 100644
index 00000000..ad97678d
--- /dev/null
+++ b/addons/hooks-react/use-media-query.ts
@@ -0,0 +1,22 @@
+import { useEffect, useState } from "react";
+
+export function useMediaQuery(query: string) {
+ const [value, setValue] = useState(false);
+
+ useEffect(() => {
+ function onChange(event: MediaQueryListEvent) {
+ setValue(event.matches);
+ }
+
+ const result = matchMedia(query);
+
+ result.addEventListener("change", onChange);
+ setValue(result.matches);
+
+ return () => {
+ result.removeEventListener("change", onChange);
+ };
+ }, [query]);
+
+ return value;
+}
diff --git a/addons/hooks-react/use-mounted.ts b/addons/hooks-react/use-mounted.ts
new file mode 100644
index 00000000..27fdb31b
--- /dev/null
+++ b/addons/hooks-react/use-mounted.ts
@@ -0,0 +1,15 @@
+import { useEffect, useState } from "react";
+
+export function useMounted() {
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => {
+ setMounted(true);
+
+ return () => {
+ setMounted(false);
+ };
+ }, []);
+
+ return mounted;
+}
diff --git a/src/hooks/react-client/useOnMount.ts b/addons/hooks-react/use-on-mount.ts
similarity index 100%
rename from src/hooks/react-client/useOnMount.ts
rename to addons/hooks-react/use-on-mount.ts
diff --git a/src/hooks/react-client/useOptimisticBoard.ts b/addons/hooks-react/use-optimistic-board.ts
similarity index 98%
rename from src/hooks/react-client/useOptimisticBoard.ts
rename to addons/hooks-react/use-optimistic-board.ts
index ddf50f1e..3177db34 100644
--- a/src/hooks/react-client/useOptimisticBoard.ts
+++ b/addons/hooks-react/use-optimistic-board.ts
@@ -2,11 +2,11 @@
import { useOptimistic } from "react";
+import { invariant } from "@/utils";
+
import type { BoardWithColumns } from "~/data/other/boards";
import type { Column, Item } from "~/db/schema";
-import { invariant } from "~/utils";
-
type UpdCol = {
color: string;
intent: "updClr";
diff --git a/addons/hooks-react/use-optimistic.ts b/addons/hooks-react/use-optimistic.ts
new file mode 100644
index 00000000..daef62dc
--- /dev/null
+++ b/addons/hooks-react/use-optimistic.ts
@@ -0,0 +1,28 @@
+import { useOptimistic as useOptimisticReact } from "react";
+
+export function useOptimistic(data: TData[]) {
+ const [optimisticData, setOptimisticData] = useOptimisticReact(
+ data,
+ (
+ state,
+ {
+ action,
+ item,
+ }: {
+ action: "add" | "delete" | "update";
+ item: TData;
+ },
+ ) => {
+ switch (action) {
+ case "delete":
+ return state.filter((index) => index.id !== item.id);
+ case "update":
+ return state.map((index) => (index.id === item.id ? item : index));
+ default:
+ return [...state, item];
+ }
+ },
+ );
+
+ return [optimisticData, setOptimisticData] as const;
+}
diff --git a/src/hooks/react-client/usePromise.ts b/addons/hooks-react/use-promise.ts
similarity index 100%
rename from src/hooks/react-client/usePromise.ts
rename to addons/hooks-react/use-promise.ts
diff --git a/src/hooks/react-client/useRenderCount.ts b/addons/hooks-react/use-render-count.ts
similarity index 100%
rename from src/hooks/react-client/useRenderCount.ts
rename to addons/hooks-react/use-render-count.ts
diff --git a/src/hooks/react-client/useSignalState.ts b/addons/hooks-react/use-signal-state.ts
similarity index 97%
rename from src/hooks/react-client/useSignalState.ts
rename to addons/hooks-react/use-signal-state.ts
index b00dae11..e794168a 100644
--- a/src/hooks/react-client/useSignalState.ts
+++ b/addons/hooks-react/use-signal-state.ts
@@ -3,10 +3,9 @@
import type { Dispatch, SetStateAction } from "react";
import { useRef, useState } from "react";
+import { useEvent } from "@/hooks-react/use-event";
import { shrinkToValue } from "@/server/reliverse/funcs/s-to-v";
-import { useEvent } from "~/hooks/react-client/useEvent";
-
// 🔴 DEPRECATED AND POSSIBLY WILL BE REMOVED IN RELIVATOR 1.3.0 🔴 ||
// ================================================================= ||
// safely change useState to useSignalState
diff --git a/addons/browser/reliverse/ui/use-toast.ts b/addons/hooks-react/use-toast.ts
similarity index 92%
rename from addons/browser/reliverse/ui/use-toast.ts
rename to addons/hooks-react/use-toast.ts
index db1c3213..8c10047c 100644
--- a/addons/browser/reliverse/ui/use-toast.ts
+++ b/addons/hooks-react/use-toast.ts
@@ -1,21 +1,18 @@
"use client";
-// Inspired by react-hot-toast library
-import * as React from "react";
+import type { ReactNode } from "react";
+import { useEffect, useState } from "react";
-import type {
- ToastActionElement,
- ToastProps,
-} from "@/browser/reliverse/ui/Toast";
+import type { ToastActionElement, ToastProps } from "@/components/ui/toast";
const TOAST_LIMIT = 1;
const TOAST_REMOVE_DELAY = 1000000;
type ToasterToast = {
action?: ToastActionElement;
- description?: React.ReactNode;
+ description?: ReactNode;
id: string;
- title?: React.ReactNode;
+ title?: ReactNode;
} & ToastProps;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -182,9 +179,9 @@ function toast({ ...props }: Toast) {
}
function useToast() {
- const [state, setState] = React.useState(memoryState);
+ const [state, setState] = useState(memoryState);
- React.useEffect(() => {
+ useEffect(() => {
listeners.push(setState);
return () => {
diff --git a/addons/hooks-react/use-upload-file.ts b/addons/hooks-react/use-upload-file.ts
new file mode 100644
index 00000000..3ac5dc92
--- /dev/null
+++ b/addons/hooks-react/use-upload-file.ts
@@ -0,0 +1,68 @@
+import { useState } from "react";
+
+import type { OurFileRouter } from "@/server";
+import type { StoredFile } from "@/types";
+import type { UploadFilesOptions } from "uploadthing/types";
+
+import { getErrorMessage, uploadFiles } from "@/server";
+import consola from "consola";
+
+type UseUploadFileProps = {
+ defaultUploadedFiles?: StoredFile[];
+} & Pick<
+ UploadFilesOptions,
+ "headers" | "onUploadBegin" | "onUploadProgress" | "skipPolling"
+>;
+
+export function useUploadFile(
+ endpoint: keyof OurFileRouter,
+ { defaultUploadedFiles = [], ...props }: UseUploadFileProps = {},
+) {
+ const [uploadedFiles, setUploadedFiles] =
+ useState(defaultUploadedFiles);
+
+ const [progresses, setProgresses] = useState>({});
+ const [isUploading, setIsUploading] = useState(false);
+
+ async function uploadThings(files: File[]) {
+ setIsUploading(true);
+ try {
+ const res = await uploadFiles(endpoint, {
+ ...props,
+ files,
+ onUploadProgress: ({ file, progress }) => {
+ setProgresses((previous) => {
+ return {
+ ...previous,
+ [file]: progress,
+ };
+ });
+ },
+ });
+
+ const formattedRes: StoredFile[] = res.map((file) => {
+ return {
+ id: file.key,
+ name: file.name,
+ url: file.url,
+ };
+ });
+
+ setUploadedFiles((previous) =>
+ previous ? [...previous, ...formattedRes] : formattedRes,
+ );
+ } catch (error) {
+ consola.error(getErrorMessage(error));
+ } finally {
+ setProgresses({});
+ setIsUploading(false);
+ }
+ }
+
+ return {
+ uploadedFiles,
+ progresses,
+ uploadFiles: uploadThings,
+ isUploading,
+ };
+}
diff --git a/src/hooks/react-client/useUrlState.ts b/addons/hooks-react/use-url-state.ts
similarity index 100%
rename from src/hooks/react-client/useUrlState.ts
rename to addons/hooks-react/use-url-state.ts
diff --git a/addons/messages/relivator/de.json b/addons/messages/relivator/de.json
new file mode 100644
index 00000000..dc7475fa
--- /dev/null
+++ b/addons/messages/relivator/de.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Noch kein Konto?",
+ "signup": "Hier erstellen.",
+ "title": "Einloggen",
+ "welcome-back": "Willkommen zurück!"
+ },
+ "RegisterForm": {
+ "have-account": "Bereits ein Konto?",
+ "signin": "Hier einloggen.",
+ "title": "Konto erstellen"
+ },
+ "account-page": {
+ "Settings": "Kontoeinstellungen",
+ "loggedIn": "Sie sind eingeloggt",
+ "loggedOut": "Sie sind ausgeloggt",
+ "login": "Einloggen",
+ "logout": "Ausloggen",
+ "title": "Mein Konto"
+ },
+ "auth": {
+ "error": {
+ "default": "Bitte versuchen Sie ein anderes Konto.",
+ "email": "E-Mail nicht gefunden. Versuchen Sie einen anderen Anbieter.",
+ "oauthNotLinked": "Melden Sie sich mit Ihrem ursprünglichen Konto an, um Ihre Identität zu bestätigen.",
+ "unknown": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.",
+ "unknown-error": "Etwas ist schief gelaufen. Kontaktieren Sie den Support für Hilfe."
+ },
+ "legal": "Mit der Nutzung dieser Schaltflächen stimmen Sie unseren",
+ "legal-and": "und",
+ "legal-privacy": "Datenschutzbestimmungen",
+ "legal-terms": "Nutzungsbedingungen"
+ },
+ "auth-provider": {
+ "please-wait": "Laden, bitte warten..."
+ },
+ "checkout": {
+ "CartDetails": "Warenkorbdetails",
+ "Demo": "Verwenden Sie Testdaten: 4242424242424242 | 12/34 | 567",
+ "Description": "Überprüfen Sie Ihre Artikel vor dem Bezahlen",
+ "EmptyCartDescription": "Ihr Warenkorb ist leer. Fügen Sie Artikel hinzu, um fortzufahren.",
+ "EmptyCartHeading": "Ihr Warenkorb ist leer",
+ "Pay": "Jetzt bezahlen",
+ "Title": "Kasse",
+ "backToCart": "Zurück zum Warenkorb",
+ "backToCartSingle": "Zurück",
+ "calculated": "Beim Bezahlen berechnet",
+ "cart": "Einkaufswagen",
+ "cartIsEmpty": "Ihr Warenkorb ist derzeit leer",
+ "continueShopping": "Weiter einkaufen",
+ "free": "Kostenlos",
+ "notConnectedDescription": "Verbinden Sie Ihren Shop mit Stripe, um Zahlungen zu akzeptieren.",
+ "notConnectedHeading": "Shop nicht mit Stripe verbunden",
+ "shipping": "Versand",
+ "taxes": "Steuern",
+ "total": "Gesamtbetrag",
+ "viewTheCart": "Warenkorb ansehen"
+ },
+ "components": {
+ "command": {
+ "dark": "Dunkelmodus",
+ "light": "Hellmodus",
+ "system": "Systemstandard",
+ "theme": "Thema"
+ },
+ "search": {
+ "placeholder": "Produkte suchen...",
+ "title": "Suche"
+ }
+ },
+ "contact": {
+ "submit": "Absenden"
+ },
+ "demo": {
+ "aria-label-goto": "Gehe zu",
+ "launch": "Dashboard"
+ },
+ "faq": {
+ "1": {
+ "details": "Für die neuesten Informationen und wie Sie schnell anfangen können, lesen Sie unseren Leitfaden im Hilfebereich von Relivator.",
+ "summary": "Wie kann ich schnell mit dem Einkaufen beginnen?"
+ },
+ "2": {
+ "details": "Relivator bietet eine breite Palette von Produkten und Funktionen, die das Einkaufen einfach und angenehm machen.",
+ "summary": "Warum Relivator für Ihren Online-Einkauf wählen?"
+ },
+ "3": {
+ "details": "Relivator wird ständig aktualisiert, um Ihr Einkaufserlebnis zu verbessern. Ihre Unterstützung hilft uns, unsere Plattform zu erweitern. Vielen Dank für Ihren Einkauf bei uns!",
+ "summary": "Wie kann ich die Entwicklung von Relivator unterstützen?"
+ }
+ },
+ "landing": {
+ "about": "Willkommen bei Relivator, Ihrem One-Stop-Shop für alle Ihre Bedürfnisse. Entdecken Sie unser breites Produktsortiment und genießen Sie ein nahtloses Einkaufserlebnis.",
+ "buy-now": "Katalog durchsuchen",
+ "features": {
+ "auth": {
+ "description": "Einfache und sichere Anmeldeoptionen für alle Benutzer.",
+ "title": "Einfache Anmeldung"
+ },
+ "database": {
+ "description": "Greifen Sie auf eine Vielzahl von Produkten mit zuverlässigem Service zu.",
+ "title": "Breites Produktsortiment"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator bietet endlose Möglichkeiten mit allen benötigten Werkzeugen.",
+ "description": "Abonnieren Sie unsere Newsletter für die neuesten Updates und Angebote.",
+ "title": "Exklusive Angebote"
+ },
+ "interface": {
+ "description": "Genießen Sie eine benutzerfreundliche Oberfläche für ein großartiges Einkaufserlebnis.",
+ "title": "Benutzerfreundliche Oberfläche"
+ },
+ "nextjs": {
+ "description": "Navigieren Sie nahtlos durch unsere Website.",
+ "title": "Nahtlose Navigation"
+ },
+ "text": {
+ "description": "Erleben Sie eine moderne und effiziente Einkaufsplattform.",
+ "title": "Effizientes Einkaufen"
+ }
+ },
+ "footer-cta": "Bereit zum Einkaufen?",
+ "get-started-button": "Zum Dashboard",
+ "main-cta": "Besuchen Sie GitHub",
+ "sell-now": "Zum Dashboard"
+ },
+ "metadata": {
+ "description": "Verbessern Sie Ihr Einkaufserlebnis mit Relivator: Die Kombination aus fortschrittlicher Technologie und benutzerfreundlichem Design.",
+ "title": {
+ "home": "Startseite"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "Die Seite, die Sie suchen, wurde möglicherweise verschoben, umbenannt oder existiert nicht mehr. Bitte überprüfen Sie die URL oder verwenden Sie das Menü zur Navigation.",
+ "go-home": "Zurück zur Startseite",
+ "title": "Seite nicht gefunden!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Kaufen Sie {category} von Top-Shops",
+ "buyTheBest": "Beste {category} Produkte"
+ },
+ "products": {
+ "addToCart": "In den Warenkorb",
+ "buyProductsFromOurStores": "Kaufen Sie in unseren Shops ein",
+ "catalogue": "Produktkatalog",
+ "description": "Produktbeschreibung",
+ "moreProductsFrom": "Mehr Produkte von {storeName}",
+ "noDescription": "Keine Beschreibung verfügbar.",
+ "products": "Produkte",
+ "productsCatalogue": "Produktekatalog"
+ },
+ "stores": {
+ "buy-products": "Kaufen Sie in unseren Shops ein",
+ "stores": "Shops"
+ }
+ }
+}
diff --git a/addons/messages/relivator/en.json b/addons/messages/relivator/en.json
new file mode 100644
index 00000000..01a2285c
--- /dev/null
+++ b/addons/messages/relivator/en.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Don't have an account?",
+ "signup": "Create one here.",
+ "title": "Sign In",
+ "welcome-back": "Welcome Back!"
+ },
+ "RegisterForm": {
+ "have-account": "Already have an account?",
+ "signin": "Log in here.",
+ "title": "Create Account"
+ },
+ "account-page": {
+ "Settings": "Account Settings",
+ "loggedIn": "You are logged in",
+ "loggedOut": "You are logged out",
+ "login": "Sign In",
+ "logout": "Log Out",
+ "title": "My Account"
+ },
+ "auth": {
+ "error": {
+ "default": "Please try a different account.",
+ "email": "Email not found. Try another provider.",
+ "oauthNotLinked": "Sign in with your original account to confirm your identity.",
+ "unknown": "An error occurred. Please try again.",
+ "unknown-error": "Something went wrong. Contact support for help."
+ },
+ "legal": "By using these buttons, you agree to our",
+ "legal-and": "and",
+ "legal-privacy": "Privacy Policy",
+ "legal-terms": "Terms of Service"
+ },
+ "auth-provider": {
+ "please-wait": "Loading, please wait..."
+ },
+ "checkout": {
+ "CartDetails": "Cart Details",
+ "Demo": "Use test data: 4242424242424242 | 12/34 | 567",
+ "Description": "Review your items before checkout",
+ "EmptyCartDescription": "Your cart is empty. Add items to proceed.",
+ "EmptyCartHeading": "Your cart is empty",
+ "Pay": "Pay Now",
+ "Title": "Checkout",
+ "backToCart": "Back to Cart",
+ "backToCartSingle": "Back",
+ "calculated": "Calculated at checkout",
+ "cart": "Shopping Cart",
+ "cartIsEmpty": "Your cart is currently empty",
+ "continueShopping": "Continue Shopping",
+ "free": "Free",
+ "notConnectedDescription": "Connect your store to Stripe to accept payments.",
+ "notConnectedHeading": "Store not connected to Stripe",
+ "shipping": "Shipping",
+ "taxes": "Taxes",
+ "total": "Total Amount",
+ "viewTheCart": "View Cart"
+ },
+ "components": {
+ "command": {
+ "dark": "Dark Mode",
+ "light": "Light Mode",
+ "system": "System Default",
+ "theme": "Theme"
+ },
+ "search": {
+ "placeholder": "Search products...",
+ "title": "Search"
+ }
+ },
+ "contact": {
+ "submit": "Submit"
+ },
+ "demo": {
+ "aria-label-goto": "Go to",
+ "launch": "Dashboard"
+ },
+ "faq": {
+ "1": {
+ "details": "For the latest information and how to get started, check our guide in the Relivator help section.",
+ "summary": "How can I start shopping quickly?"
+ },
+ "2": {
+ "details": "Relivator offers a wide range of products and features that make shopping easy and enjoyable.",
+ "summary": "Why choose Relivator for your online shopping?"
+ },
+ "3": {
+ "details": "Relivator is constantly being updated to improve your shopping experience. Your support helps us enhance our platform. Thank you for shopping with us!",
+ "summary": "How can I support the development of Relivator?"
+ }
+ },
+ "landing": {
+ "about": "Welcome to Relivator, your one-stop shop for all your needs. Explore our wide range of products and enjoy a seamless shopping experience.",
+ "buy-now": "Browse Catalogue",
+ "features": {
+ "auth": {
+ "description": "Easy and secure sign-in options for all users.",
+ "title": "Easy Sign-In"
+ },
+ "database": {
+ "description": "Access a wide variety of products with reliable service.",
+ "title": "Wide Product Range"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator offers endless possibilities with all the tools you need.",
+ "description": "Subscribe to our newsletters for the latest updates and offers.",
+ "title": "Exclusive Offers"
+ },
+ "interface": {
+ "description": "Enjoy a user-friendly interface for a great shopping experience.",
+ "title": "User-Friendly Interface"
+ },
+ "nextjs": {
+ "description": "Navigate seamlessly through our website.",
+ "title": "Seamless Navigation"
+ },
+ "text": {
+ "description": "Experience a modern and efficient shopping platform.",
+ "title": "Efficient Shopping"
+ }
+ },
+ "footer-cta": "Ready to start shopping?",
+ "get-started-button": "Go to Dashboard",
+ "main-cta": "Visit GitHub",
+ "sell-now": "Go to Dashboard"
+ },
+ "metadata": {
+ "description": "Enhance your shopping experience with Relivator: Combining the power of advanced technology and user-friendly design.",
+ "title": {
+ "home": "Home"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "The page you are looking for might have been moved, renamed, or no longer exists. Please check the URL or use the menu to navigate.",
+ "go-home": "Return to Home",
+ "title": "Page not found!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Shop {category} from top stores",
+ "buyTheBest": "Best {category} products"
+ },
+ "products": {
+ "addToCart": "Add to Cart",
+ "buyProductsFromOurStores": "Shop from our stores",
+ "catalogue": "Product Catalogue",
+ "description": "Product Description",
+ "moreProductsFrom": "More products from {storeName}",
+ "noDescription": "No description available.",
+ "products": "Products",
+ "productsCatalogue": "Products Catalogue"
+ },
+ "stores": {
+ "buy-products": "Shop from our stores",
+ "stores": "Stores"
+ }
+ }
+}
diff --git a/addons/messages/relivator/es.json b/addons/messages/relivator/es.json
new file mode 100644
index 00000000..0b34a5e2
--- /dev/null
+++ b/addons/messages/relivator/es.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "¿No tienes una cuenta?",
+ "signup": "Crea una aquí.",
+ "title": "Iniciar Sesión",
+ "welcome-back": "¡Bienvenido de nuevo!"
+ },
+ "RegisterForm": {
+ "have-account": "¿Ya tienes una cuenta?",
+ "signin": "Inicia sesión aquí.",
+ "title": "Crear Cuenta"
+ },
+ "account-page": {
+ "Settings": "Configuración de la cuenta",
+ "loggedIn": "Has iniciado sesión",
+ "loggedOut": "Has cerrado sesión",
+ "login": "Iniciar Sesión",
+ "logout": "Cerrar Sesión",
+ "title": "Mi Cuenta"
+ },
+ "auth": {
+ "error": {
+ "default": "Por favor, intenta con otra cuenta.",
+ "email": "Correo no encontrado. Intenta con otro proveedor.",
+ "oauthNotLinked": "Inicia sesión con tu cuenta original para confirmar tu identidad.",
+ "unknown": "Ocurrió un error. Por favor, inténtalo de nuevo.",
+ "unknown-error": "Algo salió mal. Contacta al soporte para obtener ayuda."
+ },
+ "legal": "Al usar estos botones, aceptas nuestros",
+ "legal-and": "y",
+ "legal-privacy": "Política de Privacidad",
+ "legal-terms": "Términos de Servicio"
+ },
+ "auth-provider": {
+ "please-wait": "Cargando, por favor espera..."
+ },
+ "checkout": {
+ "CartDetails": "Detalles del Carrito",
+ "Demo": "Usa datos de prueba: 4242424242424242 | 12/34 | 567",
+ "Description": "Revisa tus artículos antes de pagar",
+ "EmptyCartDescription": "Tu carrito está vacío. Agrega artículos para continuar.",
+ "EmptyCartHeading": "Tu carrito está vacío",
+ "Pay": "Pagar Ahora",
+ "Title": "Pago",
+ "backToCart": "Volver al Carrito",
+ "backToCartSingle": "Volver",
+ "calculated": "Calculado en el pago",
+ "cart": "Carrito de Compras",
+ "cartIsEmpty": "Tu carrito está actualmente vacío",
+ "continueShopping": "Seguir Comprando",
+ "free": "Gratis",
+ "notConnectedDescription": "Conecta tu tienda con Stripe para aceptar pagos.",
+ "notConnectedHeading": "Tienda no conectada a Stripe",
+ "shipping": "Envío",
+ "taxes": "Impuestos",
+ "total": "Monto Total",
+ "viewTheCart": "Ver Carrito"
+ },
+ "components": {
+ "command": {
+ "dark": "Modo Oscuro",
+ "light": "Modo Claro",
+ "system": "Predeterminado del Sistema",
+ "theme": "Tema"
+ },
+ "search": {
+ "placeholder": "Buscar productos...",
+ "title": "Buscar"
+ }
+ },
+ "contact": {
+ "submit": "Enviar"
+ },
+ "demo": {
+ "aria-label-goto": "Ir a",
+ "launch": "Panel"
+ },
+ "faq": {
+ "1": {
+ "details": "Para obtener la información más reciente y cómo empezar, consulta nuestra guía en la sección de ayuda de Relivator.",
+ "summary": "¿Cómo puedo empezar a comprar rápidamente?"
+ },
+ "2": {
+ "details": "Relivator ofrece una amplia gama de productos y características que hacen que comprar sea fácil y agradable.",
+ "summary": "¿Por qué elegir Relivator para tus compras en línea?"
+ },
+ "3": {
+ "details": "Relivator se actualiza constantemente para mejorar tu experiencia de compra. Tu apoyo nos ayuda a mejorar nuestra plataforma. ¡Gracias por comprar con nosotros!",
+ "summary": "¿Cómo puedo apoyar el desarrollo de Relivator?"
+ }
+ },
+ "landing": {
+ "about": "Bienvenido a Relivator, tu tienda única para todas tus necesidades. Explora nuestra amplia gama de productos y disfruta de una experiencia de compra sin interrupciones.",
+ "buy-now": "Explorar Catálogo",
+ "features": {
+ "auth": {
+ "description": "Opciones de inicio de sesión fáciles y seguras para todos los usuarios.",
+ "title": "Inicio de Sesión Fácil"
+ },
+ "database": {
+ "description": "Accede a una amplia variedad de productos con un servicio confiable.",
+ "title": "Amplia Variedad de Productos"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator ofrece posibilidades infinitas con todas las herramientas que necesitas.",
+ "description": "Suscríbete a nuestros boletines para recibir las últimas actualizaciones y ofertas.",
+ "title": "Ofertas Exclusivas"
+ },
+ "interface": {
+ "description": "Disfruta de una interfaz fácil de usar para una gran experiencia de compra.",
+ "title": "Interfaz Amigable"
+ },
+ "nextjs": {
+ "description": "Navega sin problemas por nuestro sitio web.",
+ "title": "Navegación Fluida"
+ },
+ "text": {
+ "description": "Experimenta una plataforma de compras moderna y eficiente.",
+ "title": "Compras Eficientes"
+ }
+ },
+ "footer-cta": "¿Listo para empezar a comprar?",
+ "get-started-button": "Ir al Panel",
+ "main-cta": "Visitar GitHub",
+ "sell-now": "Ir al Panel"
+ },
+ "metadata": {
+ "description": "Mejora tu experiencia de compra con Relivator: Combinando el poder de la tecnología avanzada y un diseño fácil de usar.",
+ "title": {
+ "home": "Inicio"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "La página que buscas puede haber sido movida, renombrada o ya no existe. Por favor, verifica la URL o usa el menú para navegar.",
+ "go-home": "Volver al Inicio",
+ "title": "¡Página no encontrada!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Compra {category} de las mejores tiendas",
+ "buyTheBest": "Mejores productos de {category}"
+ },
+ "products": {
+ "addToCart": "Añadir al Carrito",
+ "buyProductsFromOurStores": "Compra en nuestras tiendas",
+ "catalogue": "Catálogo de Productos",
+ "description": "Descripción del Producto",
+ "moreProductsFrom": "Más productos de {storeName}",
+ "noDescription": "No hay descripción disponible.",
+ "products": "Productos",
+ "productsCatalogue": "Catálogo de Productos"
+ },
+ "stores": {
+ "buy-products": "Compra en nuestras tiendas",
+ "stores": "Tiendas"
+ }
+ }
+}
diff --git a/addons/messages/relivator/fa.json b/addons/messages/relivator/fa.json
new file mode 100644
index 00000000..95778a9c
--- /dev/null
+++ b/addons/messages/relivator/fa.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "حساب کاربری ندارید؟",
+ "signup": "اینجا ثبتنام کنید.",
+ "title": "ورود",
+ "welcome-back": "خوش آمدید!"
+ },
+ "RegisterForm": {
+ "have-account": "حساب کاربری دارید؟",
+ "signin": "اینجا وارد شوید.",
+ "title": "ایجاد حساب کاربری"
+ },
+ "account-page": {
+ "Settings": "تنظیمات حساب کاربری",
+ "loggedIn": "شما وارد شدهاید",
+ "loggedOut": "شما خارج شدهاید",
+ "login": "ورود",
+ "logout": "خروج",
+ "title": "حساب من"
+ },
+ "auth": {
+ "error": {
+ "default": "لطفاً یک حساب کاربری دیگر را امتحان کنید.",
+ "email": "ایمیل یافت نشد. لطفاً یک ارائهدهنده دیگر را امتحان کنید.",
+ "oauthNotLinked": "برای تأیید هویت، با حساب کاربری اصلی خود وارد شوید.",
+ "unknown": "خطایی رخ داد. لطفاً دوباره تلاش کنید.",
+ "unknown-error": "مشکلی پیش آمد. برای کمک با پشتیبانی تماس بگیرید."
+ },
+ "legal": "با استفاده از این دکمهها، شما موافقت میکنید با",
+ "legal-and": "و",
+ "legal-privacy": "سیاست حفظ حریم خصوصی",
+ "legal-terms": "شرایط خدمات"
+ },
+ "auth-provider": {
+ "please-wait": "لطفاً منتظر بمانید..."
+ },
+ "checkout": {
+ "CartDetails": "جزئیات سبد خرید",
+ "Demo": "استفاده از دادههای آزمایشی: 4242424242424242 | 12/34 | 567",
+ "Description": "اقلام خود را قبل از پرداخت بررسی کنید",
+ "EmptyCartDescription": "سبد خرید شما خالی است. برای ادامه مواردی اضافه کنید.",
+ "EmptyCartHeading": "سبد خرید شما خالی است",
+ "Pay": "پرداخت اکنون",
+ "Title": "پرداخت",
+ "backToCart": "بازگشت به سبد خرید",
+ "backToCartSingle": "بازگشت",
+ "calculated": "در پرداخت محاسبه شده",
+ "cart": "سبد خرید",
+ "cartIsEmpty": "سبد خرید شما در حال حاضر خالی است",
+ "continueShopping": "ادامه خرید",
+ "free": "رایگان",
+ "notConnectedDescription": "فروشگاه خود را به Stripe متصل کنید تا پرداختها را بپذیرید.",
+ "notConnectedHeading": "فروشگاه به Stripe متصل نیست",
+ "shipping": "حمل و نقل",
+ "taxes": "مالیات",
+ "total": "مجموع مبلغ",
+ "viewTheCart": "مشاهده سبد خرید"
+ },
+ "components": {
+ "command": {
+ "dark": "حالت تاریک",
+ "light": "حالت روشن",
+ "system": "پیشفرض سیستم",
+ "theme": "تم"
+ },
+ "search": {
+ "placeholder": "جستجوی محصولات...",
+ "title": "جستجو"
+ }
+ },
+ "contact": {
+ "submit": "ارسال"
+ },
+ "demo": {
+ "aria-label-goto": "برو به",
+ "launch": "داشبورد"
+ },
+ "faq": {
+ "1": {
+ "details": "برای آخرین اطلاعات و نحوه شروع، راهنمای ما را در بخش کمک Relivator بررسی کنید.",
+ "summary": "چگونه میتوانم به سرعت خرید کنم؟"
+ },
+ "2": {
+ "details": "Relivator مجموعهای گسترده از محصولات و ویژگیهایی را ارائه میدهد که خرید را آسان و لذتبخش میکند.",
+ "summary": "چرا Relivator را برای خرید آنلاین انتخاب کنیم؟"
+ },
+ "3": {
+ "details": "Relivator به طور مداوم بهروزرسانی میشود تا تجربه خرید شما را بهبود بخشد. حمایت شما به ما کمک میکند پلتفرم خود را گسترش دهیم. از خرید شما متشکریم!",
+ "summary": "چگونه میتوانم از توسعه Relivator حمایت کنم؟"
+ }
+ },
+ "landing": {
+ "about": "به Relivator خوش آمدید، فروشگاه یکمرحلهای شما برای تمامی نیازهایتان. مجموعه گسترده محصولات ما را کاوش کنید و از یک تجربه خرید بدون وقفه لذت ببرید.",
+ "buy-now": "مرور کاتالوگ",
+ "features": {
+ "auth": {
+ "description": "گزینههای ورود آسان و ایمن برای تمامی کاربران.",
+ "title": "ورود آسان"
+ },
+ "database": {
+ "description": "دسترسی به مجموعه گستردهای از محصولات با خدمات قابل اعتماد.",
+ "title": "مجموعه گسترده محصولات"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator امکانات بیپایانی با تمامی ابزارهای مورد نیاز شما ارائه میدهد.",
+ "description": "برای دریافت آخرین بهروزرسانیها و پیشنهادات به خبرنامه ما مشترک شوید.",
+ "title": "پیشنهادات ویژه"
+ },
+ "interface": {
+ "description": "از یک رابط کاربری دوستانه برای یک تجربه خرید عالی لذت ببرید.",
+ "title": "رابط کاربری دوستانه"
+ },
+ "nextjs": {
+ "description": "بهطور بیوقفه از وبسایت ما پیمایش کنید.",
+ "title": "پیمایش بیوقفه"
+ },
+ "text": {
+ "description": "یک پلتفرم خرید مدرن و کارآمد را تجربه کنید.",
+ "title": "خرید کارآمد"
+ }
+ },
+ "footer-cta": "آماده خرید هستید؟",
+ "get-started-button": "برو به داشبورد",
+ "main-cta": "بازدید از GitHub",
+ "sell-now": "برو به داشبورد"
+ },
+ "metadata": {
+ "description": "تجربه خرید خود را با Relivator بهبود بخشید: ترکیبی از قدرت فناوری پیشرفته و طراحی کاربرپسند.",
+ "title": {
+ "home": "خانه"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "صفحهای که به دنبال آن هستید ممکن است جابجا شده، تغییر نام داده شده یا دیگر وجود نداشته باشد. لطفاً آدرس URL را بررسی کنید یا از منو برای پیمایش استفاده کنید.",
+ "go-home": "بازگشت به خانه",
+ "title": "صفحه پیدا نشد!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "{category} را از بهترین فروشگاهها بخرید",
+ "buyTheBest": "بهترین محصولات {category}"
+ },
+ "products": {
+ "addToCart": "افزودن به سبد خرید",
+ "buyProductsFromOurStores": "از فروشگاههای ما خرید کنید",
+ "catalogue": "کاتالوگ محصولات",
+ "description": "توضیحات محصول",
+ "moreProductsFrom": "محصولات بیشتر از {storeName}",
+ "noDescription": "توضیحاتی موجود نیست.",
+ "products": "محصولات",
+ "productsCatalogue": "کاتالوگ محصولات"
+ },
+ "stores": {
+ "buy-products": "از فروشگاههای ما خرید کنید",
+ "stores": "فروشگاهها"
+ }
+ }
+}
diff --git a/addons/messages/relivator/fr.json b/addons/messages/relivator/fr.json
new file mode 100644
index 00000000..1eeddfcb
--- /dev/null
+++ b/addons/messages/relivator/fr.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Pas de compte?",
+ "signup": "Créez-en un ici.",
+ "title": "Se connecter",
+ "welcome-back": "Bon retour!"
+ },
+ "RegisterForm": {
+ "have-account": "Vous avez déjà un compte?",
+ "signin": "Connectez-vous ici.",
+ "title": "Créer un compte"
+ },
+ "account-page": {
+ "Settings": "Paramètres du compte",
+ "loggedIn": "Vous êtes connecté",
+ "loggedOut": "Vous êtes déconnecté",
+ "login": "Se connecter",
+ "logout": "Se déconnecter",
+ "title": "Mon compte"
+ },
+ "auth": {
+ "error": {
+ "default": "Veuillez essayer un autre compte.",
+ "email": "E-mail introuvable. Essayez un autre fournisseur.",
+ "oauthNotLinked": "Connectez-vous avec votre compte d'origine pour confirmer votre identité.",
+ "unknown": "Une erreur s'est produite. Veuillez réessayer.",
+ "unknown-error": "Un problème est survenu. Contactez le support pour obtenir de l'aide."
+ },
+ "legal": "En utilisant ces boutons, vous acceptez nos",
+ "legal-and": "et",
+ "legal-privacy": "Politique de confidentialité",
+ "legal-terms": "Conditions d'utilisation"
+ },
+ "auth-provider": {
+ "please-wait": "Chargement, veuillez patienter..."
+ },
+ "checkout": {
+ "CartDetails": "Détails du panier",
+ "Demo": "Utilisez les données de test : 4242424242424242 | 12/34 | 567",
+ "Description": "Vérifiez vos articles avant de payer",
+ "EmptyCartDescription": "Votre panier est vide. Ajoutez des articles pour continuer.",
+ "EmptyCartHeading": "Votre panier est vide",
+ "Pay": "Payer maintenant",
+ "Title": "Paiement",
+ "backToCart": "Retour au panier",
+ "backToCartSingle": "Retour",
+ "calculated": "Calculé au paiement",
+ "cart": "Panier",
+ "cartIsEmpty": "Votre panier est actuellement vide",
+ "continueShopping": "Continuer vos achats",
+ "free": "Gratuit",
+ "notConnectedDescription": "Connectez votre boutique à Stripe pour accepter les paiements.",
+ "notConnectedHeading": "Boutique non connectée à Stripe",
+ "shipping": "Expédition",
+ "taxes": "Taxes",
+ "total": "Montant total",
+ "viewTheCart": "Voir le panier"
+ },
+ "components": {
+ "command": {
+ "dark": "Mode sombre",
+ "light": "Mode clair",
+ "system": "Par défaut du système",
+ "theme": "Thème"
+ },
+ "search": {
+ "placeholder": "Rechercher des produits...",
+ "title": "Rechercher"
+ }
+ },
+ "contact": {
+ "submit": "Envoyer"
+ },
+ "demo": {
+ "aria-label-goto": "Aller à",
+ "launch": "Tableau de bord"
+ },
+ "faq": {
+ "1": {
+ "details": "Pour les dernières informations et comment démarrer, consultez notre guide dans la section d'aide de Relivator.",
+ "summary": "Comment puis-je commencer à acheter rapidement?"
+ },
+ "2": {
+ "details": "Relivator offre une large gamme de produits et de fonctionnalités qui rendent les achats faciles et agréables.",
+ "summary": "Pourquoi choisir Relivator pour vos achats en ligne?"
+ },
+ "3": {
+ "details": "Relivator est constamment mis à jour pour améliorer votre expérience d'achat. Votre soutien nous aide à améliorer notre plateforme. Merci de faire vos achats avec nous!",
+ "summary": "Comment puis-je soutenir le développement de Relivator?"
+ }
+ },
+ "landing": {
+ "about": "Bienvenue chez Relivator, votre boutique unique pour tous vos besoins. Explorez notre large gamme de produits et profitez d'une expérience d'achat fluide.",
+ "buy-now": "Parcourir le catalogue",
+ "features": {
+ "auth": {
+ "description": "Options de connexion faciles et sécurisées pour tous les utilisateurs.",
+ "title": "Connexion facile"
+ },
+ "database": {
+ "description": "Accédez à une large variété de produits avec un service fiable.",
+ "title": "Large gamme de produits"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator offre des possibilités infinies avec tous les outils dont vous avez besoin.",
+ "description": "Abonnez-vous à nos newsletters pour recevoir les dernières mises à jour et offres.",
+ "title": "Offres exclusives"
+ },
+ "interface": {
+ "description": "Profitez d'une interface conviviale pour une excellente expérience d'achat.",
+ "title": "Interface conviviale"
+ },
+ "nextjs": {
+ "description": "Naviguez sans interruption sur notre site.",
+ "title": "Navigation fluide"
+ },
+ "text": {
+ "description": "Découvrez une plateforme d'achat moderne et efficace.",
+ "title": "Achats efficaces"
+ }
+ },
+ "footer-cta": "Prêt à commencer vos achats?",
+ "get-started-button": "Aller au tableau de bord",
+ "main-cta": "Visiter GitHub",
+ "sell-now": "Aller au tableau de bord"
+ },
+ "metadata": {
+ "description": "Améliorez votre expérience d'achat avec Relivator : combinant la puissance de la technologie avancée et un design convivial.",
+ "title": {
+ "home": "Accueil"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "La page que vous recherchez a peut-être été déplacée, renommée ou n'existe plus. Veuillez vérifier l'URL ou utiliser le menu pour naviguer.",
+ "go-home": "Retour à l'accueil",
+ "title": "Page non trouvée!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Achetez {category} des meilleures boutiques",
+ "buyTheBest": "Meilleurs produits de {category}"
+ },
+ "products": {
+ "addToCart": "Ajouter au panier",
+ "buyProductsFromOurStores": "Achetez dans nos boutiques",
+ "catalogue": "Catalogue de produits",
+ "description": "Description du produit",
+ "moreProductsFrom": "Plus de produits de {storeName}",
+ "noDescription": "Aucune description disponible.",
+ "products": "Produits",
+ "productsCatalogue": "Catalogue de produits"
+ },
+ "stores": {
+ "buy-products": "Achetez dans nos boutiques",
+ "stores": "Boutiques"
+ }
+ }
+}
diff --git a/addons/messages/relivator/hi.json b/addons/messages/relivator/hi.json
new file mode 100644
index 00000000..14929b20
--- /dev/null
+++ b/addons/messages/relivator/hi.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "खाता नहीं है?",
+ "signup": "यहाँ साइन अप करें।",
+ "title": "लॉग इन करें",
+ "welcome-back": "वापसी पर स्वागत है!"
+ },
+ "RegisterForm": {
+ "have-account": "क्या आपके पास खाता है?",
+ "signin": "यहाँ लॉग इन करें।",
+ "title": "खाता बनाएं"
+ },
+ "account-page": {
+ "Settings": "खाता सेटिंग्स",
+ "loggedIn": "आपने लॉग इन कर लिया है",
+ "loggedOut": "आपने लॉग आउट कर लिया है",
+ "login": "लॉग इन करें",
+ "logout": "लॉग आउट करें",
+ "title": "मेरा खाता"
+ },
+ "auth": {
+ "error": {
+ "default": "कृपया एक अन्य खाता आज़माएं।",
+ "email": "ईमेल नहीं मिला। कृपया एक अन्य प्रदाता आज़माएं।",
+ "oauthNotLinked": "पहचान की पुष्टि के लिए अपने मूल खाते से साइन इन करें।",
+ "unknown": "एक त्रुटि हुई। कृपया पुनः प्रयास करें।",
+ "unknown-error": "कुछ गलत हो गया। सहायता के लिए समर्थन से संपर्क करें।"
+ },
+ "legal": "इन बटनों का उपयोग करके, आप हमारे",
+ "legal-and": "और",
+ "legal-privacy": "गोपनीयता नीति",
+ "legal-terms": "सेवा की शर्तों से सहमत होते हैं"
+ },
+ "auth-provider": {
+ "please-wait": "कृपया प्रतीक्षा करें..."
+ },
+ "checkout": {
+ "CartDetails": "कार्ट विवरण",
+ "Demo": "परीक्षण डेटा का उपयोग करें: 4242424242424242 | 12/34 | 567",
+ "Description": "भुगतान से पहले अपने आइटम की समीक्षा करें",
+ "EmptyCartDescription": "आपकी कार्ट खाली है। आगे बढ़ने के लिए आइटम जोड़ें।",
+ "EmptyCartHeading": "आपकी कार्ट खाली है",
+ "Pay": "अभी भुगतान करें",
+ "Title": "चेकआउट",
+ "backToCart": "कार्ट पर वापस जाएं",
+ "backToCartSingle": "वापस जाएं",
+ "calculated": "भुगतान पर गणना की गई",
+ "cart": "खरीदारी की कार्ट",
+ "cartIsEmpty": "आपकी कार्ट वर्तमान में खाली है",
+ "continueShopping": "खरीदारी जारी रखें",
+ "free": "मुफ्त",
+ "notConnectedDescription": "भुगतान स्वीकार करने के लिए अपने स्टोर को Stripe से जोड़ें।",
+ "notConnectedHeading": "स्टोर Stripe से कनेक्ट नहीं है",
+ "shipping": "शिपिंग",
+ "taxes": "कर",
+ "total": "कुल राशि",
+ "viewTheCart": "कार्ट देखें"
+ },
+ "components": {
+ "command": {
+ "dark": "डार्क मोड",
+ "light": "लाइट मोड",
+ "system": "सिस्टम डिफ़ॉल्ट",
+ "theme": "थीम"
+ },
+ "search": {
+ "placeholder": "उत्पाद खोजें...",
+ "title": "खोजें"
+ }
+ },
+ "contact": {
+ "submit": "प्रस्तुत करें"
+ },
+ "demo": {
+ "aria-label-goto": "पर जाएं",
+ "launch": "डैशबोर्ड"
+ },
+ "faq": {
+ "1": {
+ "details": "नवीनतम जानकारी और कैसे जल्दी से शुरू करें के लिए, Relivator सहायता अनुभाग में हमारी गाइड देखें।",
+ "summary": "मैं जल्दी से खरीदारी कैसे शुरू कर सकता हूँ?"
+ },
+ "2": {
+ "details": "Relivator एक व्यापक उत्पाद और सुविधाओं की पेशकश करता है जो खरीदारी को आसान और सुखद बनाता है।",
+ "summary": "ऑनलाइन खरीदारी के लिए Relivator क्यों चुनें?"
+ },
+ "3": {
+ "details": "Relivator आपके खरीदारी अनुभव को बेहतर बनाने के लिए लगातार अपडेट होता है। आपका समर्थन हमें अपने प्लेटफ़ॉर्म को सुधारने में मदद करता है। हमारे साथ खरीदारी के लिए धन्यवाद!",
+ "summary": "मैं Relivator के विकास का समर्थन कैसे कर सकता हूँ?"
+ }
+ },
+ "landing": {
+ "about": "Relivator में आपका स्वागत है, आपकी सभी आवश्यकताओं के लिए एकमात्र स्टोर। हमारे विस्तृत उत्पाद रेंज का अन्वेषण करें और एक सहज खरीदारी अनुभव का आनंद लें।",
+ "buy-now": "कैटलॉग ब्राउज़ करें",
+ "features": {
+ "auth": {
+ "description": "सभी उपयोगकर्ताओं के लिए आसान और सुरक्षित साइन-इन विकल्प।",
+ "title": "आसान साइन-इन"
+ },
+ "database": {
+ "description": "भरोसेमंद सेवा के साथ उत्पादों की एक विस्तृत श्रृंखला का उपयोग करें।",
+ "title": "विस्तृत उत्पाद रेंज"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator आपके लिए सभी आवश्यक उपकरणों के साथ असीम संभावनाएं प्रदान करता है।",
+ "description": "नवीनतम अपडेट और ऑफ़र प्राप्त करने के लिए हमारे न्यूज़लेटर की सदस्यता लें।",
+ "title": "विशेष ऑफ़र"
+ },
+ "interface": {
+ "description": "शानदार खरीदारी अनुभव के लिए एक उपयोगकर्ता-मित्रवत इंटरफ़ेस का आनंद लें।",
+ "title": "उपयोगकर्ता-मित्रवत इंटरफ़ेस"
+ },
+ "nextjs": {
+ "description": "हमारी वेबसाइट पर निर्बाध रूप से नेविगेट करें।",
+ "title": "निर्बाध नेविगेशन"
+ },
+ "text": {
+ "description": "एक आधुनिक और कुशल खरीदारी प्लेटफ़ॉर्म का अनुभव करें।",
+ "title": "कुशल खरीदारी"
+ }
+ },
+ "footer-cta": "क्या आप खरीदारी के लिए तैयार हैं?",
+ "get-started-button": "डैशबोर्ड पर जाएं",
+ "main-cta": "GitHub पर जाएं",
+ "sell-now": "डैशबोर्ड पर जाएं"
+ },
+ "metadata": {
+ "description": "उन्नत तकनीक और उपयोगकर्ता-मित्रवत डिज़ाइन की शक्ति को मिलाकर Relivator के साथ अपने खरीदारी अनुभव को बढ़ाएं।",
+ "title": {
+ "home": "होम"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "संभवतः संसाधन को स्थानांतरित किया गया है, पुनः नामित किया गया है, या हो सकता है कि मौजूद न हो। कृपया URL सत्यापित करें या नेविगेट करने के लिए मेनू का उपयोग करें।",
+ "go-home": "होम पर लौटें",
+ "title": "पृष्ठ नहीं मिला!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "शीर्ष स्टोर्स से {category} खरीदें",
+ "buyTheBest": "सर्वश्रेष्ठ {category} उत्पाद"
+ },
+ "products": {
+ "addToCart": "कार्ट में जोड़ें",
+ "buyProductsFromOurStores": "हमारे स्टोर्स से खरीदें",
+ "catalogue": "उत्पाद कैटलॉग",
+ "description": "उत्पाद विवरण",
+ "moreProductsFrom": "{storeName} से और उत्पाद",
+ "noDescription": "कोई विवरण उपलब्ध नहीं है।",
+ "products": "उत्पाद",
+ "productsCatalogue": "उत्पाद कैटलॉग"
+ },
+ "stores": {
+ "buy-products": "हमारे स्टोर्स से खरीदें",
+ "stores": "स्टोर्स"
+ }
+ }
+}
diff --git a/addons/messages/relivator/it.json b/addons/messages/relivator/it.json
new file mode 100644
index 00000000..5807ac9e
--- /dev/null
+++ b/addons/messages/relivator/it.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Non hai un account?",
+ "signup": "Creane uno qui.",
+ "title": "Accedi",
+ "welcome-back": "Bentornato!"
+ },
+ "RegisterForm": {
+ "have-account": "Hai già un account?",
+ "signin": "Accedi qui.",
+ "title": "Crea un account"
+ },
+ "account-page": {
+ "Settings": "Impostazioni dell'account",
+ "loggedIn": "Sei connesso",
+ "loggedOut": "Sei disconnesso",
+ "login": "Accedi",
+ "logout": "Disconnetti",
+ "title": "Il mio account"
+ },
+ "auth": {
+ "error": {
+ "default": "Per favore, prova un altro account.",
+ "email": "Email non trovata. Prova un altro provider.",
+ "oauthNotLinked": "Accedi con il tuo account originale per confermare la tua identità.",
+ "unknown": "Si è verificato un errore. Per favore, riprova.",
+ "unknown-error": "Qualcosa è andato storto. Contatta il supporto per assistenza."
+ },
+ "legal": "Utilizzando questi pulsanti, accetti i nostri",
+ "legal-and": "e",
+ "legal-privacy": "Politica sulla Privacy",
+ "legal-terms": "Termini di Servizio"
+ },
+ "auth-provider": {
+ "please-wait": "Caricamento, attendere prego..."
+ },
+ "checkout": {
+ "CartDetails": "Dettagli del Carrello",
+ "Demo": "Usa i dati di prova: 4242424242424242 | 12/34 | 567",
+ "Description": "Rivedi i tuoi articoli prima di pagare",
+ "EmptyCartDescription": "Il tuo carrello è vuoto. Aggiungi articoli per procedere.",
+ "EmptyCartHeading": "Il tuo carrello è vuoto",
+ "Pay": "Paga Ora",
+ "Title": "Cassa",
+ "backToCart": "Torna al Carrello",
+ "backToCartSingle": "Torna indietro",
+ "calculated": "Calcolato al pagamento",
+ "cart": "Carrello",
+ "cartIsEmpty": "Il tuo carrello è attualmente vuoto",
+ "continueShopping": "Continua a fare acquisti",
+ "free": "Gratuito",
+ "notConnectedDescription": "Collega il tuo negozio a Stripe per accettare i pagamenti.",
+ "notConnectedHeading": "Negozio non connesso a Stripe",
+ "shipping": "Spedizione",
+ "taxes": "Tasse",
+ "total": "Importo Totale",
+ "viewTheCart": "Visualizza il Carrello"
+ },
+ "components": {
+ "command": {
+ "dark": "Modalità Scura",
+ "light": "Modalità Chiara",
+ "system": "Predefinito di Sistema",
+ "theme": "Tema"
+ },
+ "search": {
+ "placeholder": "Cerca prodotti...",
+ "title": "Cerca"
+ }
+ },
+ "contact": {
+ "submit": "Invia"
+ },
+ "demo": {
+ "aria-label-goto": "Vai a",
+ "launch": "Dashboard"
+ },
+ "faq": {
+ "1": {
+ "details": "Per le informazioni più recenti e come iniziare, consulta la nostra guida nella sezione di assistenza di Relivator.",
+ "summary": "Come posso iniziare a fare acquisti velocemente?"
+ },
+ "2": {
+ "details": "Relivator offre una vasta gamma di prodotti e funzionalità che rendono lo shopping facile e piacevole.",
+ "summary": "Perché scegliere Relivator per i tuoi acquisti online?"
+ },
+ "3": {
+ "details": "Relivator viene costantemente aggiornato per migliorare la tua esperienza di acquisto. Il tuo supporto ci aiuta a migliorare la nostra piattaforma. Grazie per fare acquisti con noi!",
+ "summary": "Come posso supportare lo sviluppo di Relivator?"
+ }
+ },
+ "landing": {
+ "about": "Benvenuto su Relivator, il tuo negozio unico per tutte le tue esigenze. Esplora la nostra vasta gamma di prodotti e goditi un'esperienza di acquisto senza interruzioni.",
+ "buy-now": "Sfoglia il Catalogo",
+ "features": {
+ "auth": {
+ "description": "Opzioni di accesso facili e sicure per tutti gli utenti.",
+ "title": "Accesso Facile"
+ },
+ "database": {
+ "description": "Accedi a una vasta gamma di prodotti con un servizio affidabile.",
+ "title": "Ampia Gamma di Prodotti"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator offre possibilità infinite con tutti gli strumenti di cui hai bisogno.",
+ "description": "Iscriviti alle nostre newsletter per ricevere gli ultimi aggiornamenti e offerte.",
+ "title": "Offerte Esclusive"
+ },
+ "interface": {
+ "description": "Goditi un'interfaccia intuitiva per una grande esperienza di acquisto.",
+ "title": "Interfaccia Intuitiva"
+ },
+ "nextjs": {
+ "description": "Naviga senza interruzioni nel nostro sito web.",
+ "title": "Navigazione Fluida"
+ },
+ "text": {
+ "description": "Scopri una piattaforma di acquisto moderna ed efficiente.",
+ "title": "Acquisti Efficienti"
+ }
+ },
+ "footer-cta": "Pronto per iniziare a fare acquisti?",
+ "get-started-button": "Vai al Dashboard",
+ "main-cta": "Visita GitHub",
+ "sell-now": "Vai al Dashboard"
+ },
+ "metadata": {
+ "description": "Migliora la tua esperienza di acquisto con Relivator: combinando la potenza della tecnologia avanzata e un design intuitivo.",
+ "title": {
+ "home": "Home"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "La pagina che stai cercando potrebbe essere stata spostata, rinominata o potrebbe non esistere più. Verifica l'URL o utilizza il menu per navigare.",
+ "go-home": "Torna alla Home",
+ "title": "Pagina non trovata!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Acquista {category} dai migliori negozi",
+ "buyTheBest": "I migliori prodotti di {category}"
+ },
+ "products": {
+ "addToCart": "Aggiungi al Carrello",
+ "buyProductsFromOurStores": "Acquista nei nostri negozi",
+ "catalogue": "Catalogo Prodotti",
+ "description": "Descrizione del Prodotto",
+ "moreProductsFrom": "Altri prodotti di {storeName}",
+ "noDescription": "Nessuna descrizione disponibile.",
+ "products": "Prodotti",
+ "productsCatalogue": "Catalogo Prodotti"
+ },
+ "stores": {
+ "buy-products": "Acquista nei nostri negozi",
+ "stores": "Negozi"
+ }
+ }
+}
diff --git a/addons/messages/relivator/pl.json b/addons/messages/relivator/pl.json
new file mode 100644
index 00000000..f96bb8d5
--- /dev/null
+++ b/addons/messages/relivator/pl.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Nie masz konta?",
+ "signup": "Zarejestruj się tutaj.",
+ "title": "Zaloguj się",
+ "welcome-back": "Witamy ponownie!"
+ },
+ "RegisterForm": {
+ "have-account": "Masz już konto?",
+ "signin": "Zaloguj się tutaj.",
+ "title": "Utwórz konto"
+ },
+ "account-page": {
+ "Settings": "Ustawienia konta",
+ "loggedIn": "Jesteś zalogowany",
+ "loggedOut": "Jesteś wylogowany",
+ "login": "Zaloguj się",
+ "logout": "Wyloguj się",
+ "title": "Moje konto"
+ },
+ "auth": {
+ "error": {
+ "default": "Proszę spróbować inne konto.",
+ "email": "E-mail nie znaleziony. Spróbuj innego dostawcy.",
+ "oauthNotLinked": "Zaloguj się przy użyciu oryginalnego konta, aby potwierdzić tożsamość.",
+ "unknown": "Wystąpił błąd. Proszę spróbować ponownie.",
+ "unknown-error": "Coś poszło nie tak. Skontaktuj się z pomocą techniczną, aby uzyskać pomoc."
+ },
+ "legal": "Korzystając z tych przycisków, zgadzasz się na nasze",
+ "legal-and": "i",
+ "legal-privacy": "Polityka prywatności",
+ "legal-terms": "Warunki korzystania z usługi"
+ },
+ "auth-provider": {
+ "please-wait": "Proszę czekać..."
+ },
+ "checkout": {
+ "CartDetails": "Szczegóły koszyka",
+ "Demo": "Użyj danych testowych: 4242424242424242 | 12/34 | 567",
+ "Description": "Przejrzyj swoje przedmioty przed dokonaniem płatności",
+ "EmptyCartDescription": "Twój koszyk jest pusty. Dodaj przedmioty, aby kontynuować.",
+ "EmptyCartHeading": "Twój koszyk jest pusty",
+ "Pay": "Zapłać teraz",
+ "Title": "Kasa",
+ "backToCart": "Wróć do koszyka",
+ "backToCartSingle": "Wróć",
+ "calculated": "Obliczone przy kasie",
+ "cart": "Koszyk zakupowy",
+ "cartIsEmpty": "Twój koszyk jest obecnie pusty",
+ "continueShopping": "Kontynuuj zakupy",
+ "free": "Darmowy",
+ "notConnectedDescription": "Połącz swój sklep ze Stripe, aby akceptować płatności.",
+ "notConnectedHeading": "Sklep nie jest połączony ze Stripe",
+ "shipping": "Wysyłka",
+ "taxes": "Podatki",
+ "total": "Całkowita kwota",
+ "viewTheCart": "Zobacz koszyk"
+ },
+ "components": {
+ "command": {
+ "dark": "Tryb ciemny",
+ "light": "Tryb jasny",
+ "system": "Domyślnie systemowe",
+ "theme": "Motyw"
+ },
+ "search": {
+ "placeholder": "Szukaj produktów...",
+ "title": "Szukaj"
+ }
+ },
+ "contact": {
+ "submit": "Wyślij"
+ },
+ "demo": {
+ "aria-label-goto": "Idź do",
+ "launch": "Panel"
+ },
+ "faq": {
+ "1": {
+ "details": "Aby uzyskać najnowsze informacje i jak zacząć, zapoznaj się z naszym przewodnikiem w sekcji pomocy Relivator.",
+ "summary": "Jak mogę szybko rozpocząć zakupy?"
+ },
+ "2": {
+ "details": "Relivator oferuje szeroką gamę produktów i funkcji, które sprawiają, że zakupy są łatwe i przyjemne.",
+ "summary": "Dlaczego warto wybrać Relivator do zakupów online?"
+ },
+ "3": {
+ "details": "Relivator jest stale aktualizowany, aby poprawić Twoje doświadczenia zakupowe. Twoje wsparcie pomaga nam ulepszać naszą platformę. Dziękujemy za zakupy u nas!",
+ "summary": "Jak mogę wesprzeć rozwój Relivator?"
+ }
+ },
+ "landing": {
+ "about": "Witamy w Relivator, Twoim jednym sklepie na wszystkie potrzeby. Przeglądaj naszą szeroką gamę produktów i ciesz się płynnym doświadczeniem zakupowym.",
+ "buy-now": "Przeglądaj katalog",
+ "features": {
+ "auth": {
+ "description": "Łatwe i bezpieczne opcje logowania dla wszystkich użytkowników.",
+ "title": "Łatwe logowanie"
+ },
+ "database": {
+ "description": "Uzyskaj dostęp do szerokiej gamy produktów z niezawodną obsługą.",
+ "title": "Szeroki zakres produktów"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator oferuje nieskończone możliwości ze wszystkimi niezbędnymi narzędziami.",
+ "description": "Zapisz się do naszych newsletterów, aby otrzymywać najnowsze aktualizacje i oferty.",
+ "title": "Ekskluzywne oferty"
+ },
+ "interface": {
+ "description": "Ciesz się przyjaznym interfejsem użytkownika dla doskonałych doświadczeń zakupowych.",
+ "title": "Przyjazny interfejs"
+ },
+ "nextjs": {
+ "description": "Przeglądaj naszą stronę bez przerw.",
+ "title": "Płynna nawigacja"
+ },
+ "text": {
+ "description": "Doświadcz nowoczesnej i wydajnej platformy zakupowej.",
+ "title": "Wydajne zakupy"
+ }
+ },
+ "footer-cta": "Gotowy na zakupy?",
+ "get-started-button": "Idź do panelu",
+ "main-cta": "Odwiedź GitHub",
+ "sell-now": "Idź do panelu"
+ },
+ "metadata": {
+ "description": "Ulepsz swoje doświadczenia zakupowe z Relivator: Połączenie mocy zaawansowanej technologii i przyjaznego dla użytkownika projektu.",
+ "title": {
+ "home": "Strona główna"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "Zasób mógł zostać przeniesiony, przemianowany lub może nie istnieć. Zweryfikuj adres URL lub użyj menu, aby nawigować.",
+ "go-home": "Wróć do strony głównej",
+ "title": "Strona nie znaleziona!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Kup {category} od najlepszych sklepów",
+ "buyTheBest": "Najlepsze produkty {category}"
+ },
+ "products": {
+ "addToCart": "Dodaj do koszyka",
+ "buyProductsFromOurStores": "Kupuj w naszych sklepach",
+ "catalogue": "Katalog produktów",
+ "description": "Opis produktu",
+ "moreProductsFrom": "Więcej produktów od {storeName}",
+ "noDescription": "Brak dostępnego opisu.",
+ "products": "Produkty",
+ "productsCatalogue": "Katalog produktów"
+ },
+ "stores": {
+ "buy-products": "Kupuj w naszych sklepach",
+ "stores": "Sklepy"
+ }
+ }
+}
diff --git a/addons/messages/relivator/tr.json b/addons/messages/relivator/tr.json
new file mode 100644
index 00000000..82e6f048
--- /dev/null
+++ b/addons/messages/relivator/tr.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Hesabınız yok mu?",
+ "signup": "Buradan kaydolun.",
+ "title": "Giriş Yap",
+ "welcome-back": "Tekrar hoş geldiniz!"
+ },
+ "RegisterForm": {
+ "have-account": "Zaten hesabınız var mı?",
+ "signin": "Buradan giriş yapın.",
+ "title": "Hesap Oluştur"
+ },
+ "account-page": {
+ "Settings": "Hesap Ayarları",
+ "loggedIn": "Giriş yaptınız",
+ "loggedOut": "Çıkış yaptınız",
+ "login": "Giriş Yap",
+ "logout": "Çıkış Yap",
+ "title": "Hesabım"
+ },
+ "auth": {
+ "error": {
+ "default": "Lütfen farklı bir hesap deneyin.",
+ "email": "E-posta bulunamadı. Başka bir sağlayıcı deneyin.",
+ "oauthNotLinked": "Kimliğinizi doğrulamak için orijinal hesabınızla giriş yapın.",
+ "unknown": "Bir hata oluştu. Lütfen tekrar deneyin.",
+ "unknown-error": "Bir şeyler ters gitti. Yardım için destek ekibiyle iletişime geçin."
+ },
+ "legal": "Bu butonları kullanarak,",
+ "legal-and": "ve",
+ "legal-privacy": "Gizlilik Politikamızı",
+ "legal-terms": "Hizmet Şartlarımızı kabul etmiş olursunuz"
+ },
+ "auth-provider": {
+ "please-wait": "Lütfen bekleyin..."
+ },
+ "checkout": {
+ "CartDetails": "Sepet Detayları",
+ "Demo": "Test verilerini kullanın: 4242424242424242 | 12/34 | 567",
+ "Description": "Ödeme yapmadan önce ürünlerinizi gözden geçirin",
+ "EmptyCartDescription": "Sepetiniz boş. Devam etmek için ürün ekleyin.",
+ "EmptyCartHeading": "Sepetiniz boş",
+ "Pay": "Şimdi Öde",
+ "Title": "Ödeme",
+ "backToCart": "Sepete Dön",
+ "backToCartSingle": "Geri Dön",
+ "calculated": "Ödeme sırasında hesaplanacak",
+ "cart": "Alışveriş Sepeti",
+ "cartIsEmpty": "Sepetiniz şu anda boş",
+ "continueShopping": "Alışverişe Devam Et",
+ "free": "Ücretsiz",
+ "notConnectedDescription": "Ödemeleri kabul etmek için mağazanızı Stripe'a bağlayın.",
+ "notConnectedHeading": "Mağaza Stripe'a bağlı değil",
+ "shipping": "Kargo",
+ "taxes": "Vergiler",
+ "total": "Toplam Tutar",
+ "viewTheCart": "Sepeti Görüntüle"
+ },
+ "components": {
+ "command": {
+ "dark": "Karanlık Mod",
+ "light": "Aydınlık Mod",
+ "system": "Sistem Varsayılanı",
+ "theme": "Tema"
+ },
+ "search": {
+ "placeholder": "Ürün ara...",
+ "title": "Ara"
+ }
+ },
+ "contact": {
+ "submit": "Gönder"
+ },
+ "demo": {
+ "aria-label-goto": "Git",
+ "launch": "Kontrol Paneli"
+ },
+ "faq": {
+ "1": {
+ "details": "En son bilgiler ve nasıl başlayacağınız hakkında, Relivator yardım bölümümüzdeki kılavuzumuzu inceleyin.",
+ "summary": "Hızlı bir şekilde alışverişe nasıl başlayabilirim?"
+ },
+ "2": {
+ "details": "Relivator, alışverişi kolay ve keyifli hale getiren geniş bir ürün yelpazesi ve özellikler sunar.",
+ "summary": "Online alışveriş için neden Relivator'u seçmeliyim?"
+ },
+ "3": {
+ "details": "Relivator, alışveriş deneyiminizi iyileştirmek için sürekli olarak güncellenir. Destekleriniz, platformumuzu geliştirmemize yardımcı olur. Bizimle alışveriş yaptığınız için teşekkür ederiz!",
+ "summary": "Relivator'un gelişimini nasıl destekleyebilirim?"
+ }
+ },
+ "landing": {
+ "about": "Relivator'a hoş geldiniz, tüm ihtiyaçlarınız için tek durak mağazanız. Geniş ürün yelpazemizi keşfedin ve kesintisiz alışveriş deneyiminin tadını çıkarın.",
+ "buy-now": "Kataloğu İncele",
+ "features": {
+ "auth": {
+ "description": "Tüm kullanıcılar için kolay ve güvenli giriş seçenekleri.",
+ "title": "Kolay Giriş"
+ },
+ "database": {
+ "description": "Güvenilir hizmet ile geniş bir ürün yelpazesine erişin.",
+ "title": "Geniş Ürün Yelpazesi"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator, ihtiyacınız olan tüm araçlarla sınırsız olanaklar sunar.",
+ "description": "En son güncellemeler ve teklifler için bültenlerimize abone olun.",
+ "title": "Özel Teklifler"
+ },
+ "interface": {
+ "description": "Harika bir alışveriş deneyimi için kullanıcı dostu bir arayüzün keyfini çıkarın.",
+ "title": "Kullanıcı Dostu Arayüz"
+ },
+ "nextjs": {
+ "description": "Web sitemizde kesintisiz gezinin.",
+ "title": "Kesintisiz Gezinme"
+ },
+ "text": {
+ "description": "Modern ve verimli bir alışveriş platformunun tadını çıkarın.",
+ "title": "Verimli Alışveriş"
+ }
+ },
+ "footer-cta": "Alışverişe hazır mısınız?",
+ "get-started-button": "Kontrol Paneline Git",
+ "main-cta": "GitHub'ı Ziyaret Et",
+ "sell-now": "Kontrol Paneline Git"
+ },
+ "metadata": {
+ "description": "Gelişmiş teknoloji ve kullanıcı dostu tasarımın gücünü bir araya getirerek Relivator ile alışveriş deneyiminizi geliştirin.",
+ "title": {
+ "home": "Anasayfa"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "Kaynak taşınmış, yeniden adlandırılmış veya mevcut olmayabilir. Lütfen URL'yi doğrulayın veya gezinmek için menüyü kullanın.",
+ "go-home": "Anasayfaya Dön",
+ "title": "Sayfa bulunamadı!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "{category} en iyi mağazalardan satın alın",
+ "buyTheBest": "En iyi {category} ürünleri"
+ },
+ "products": {
+ "addToCart": "Sepete Ekle",
+ "buyProductsFromOurStores": "Mağazalarımızdan satın alın",
+ "catalogue": "Ürün Kataloğu",
+ "description": "Ürün Açıklaması",
+ "moreProductsFrom": "{storeName} daha fazla ürün",
+ "noDescription": "Açıklama mevcut değil.",
+ "products": "Ürünler",
+ "productsCatalogue": "Ürün Kataloğu"
+ },
+ "stores": {
+ "buy-products": "Mağazalarımızdan satın alın",
+ "stores": "Mağazalar"
+ }
+ }
+}
diff --git a/addons/messages/relivator/uk.json b/addons/messages/relivator/uk.json
new file mode 100644
index 00000000..d67a7f50
--- /dev/null
+++ b/addons/messages/relivator/uk.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "Немає акаунта?",
+ "signup": "Зареєструватися тут.",
+ "title": "Увійти",
+ "welcome-back": "Ласкаво просимо назад!"
+ },
+ "RegisterForm": {
+ "have-account": "Вже маєте акаунт?",
+ "signin": "Увійти тут.",
+ "title": "Створити акаунт"
+ },
+ "account-page": {
+ "Settings": "Налаштування акаунта",
+ "loggedIn": "Ви увійшли",
+ "loggedOut": "Ви вийшли",
+ "login": "Увійти",
+ "logout": "Вийти",
+ "title": "Мій акаунт"
+ },
+ "auth": {
+ "error": {
+ "default": "Будь ласка, спробуйте інший акаунт.",
+ "email": "Електронну пошту не знайдено. Спробуйте інший провайдер.",
+ "oauthNotLinked": "Увійдіть за допомогою оригінального акаунта для підтвердження особи.",
+ "unknown": "Сталася помилка. Будь ласка, спробуйте ще раз.",
+ "unknown-error": "Щось пішло не так. Зверніться до підтримки за допомогою."
+ },
+ "legal": "Користуючись цими кнопками, ви погоджуєтеся з нашими",
+ "legal-and": "та",
+ "legal-privacy": "Політикою конфіденційності",
+ "legal-terms": "Умовами користування"
+ },
+ "auth-provider": {
+ "please-wait": "Будь ласка, зачекайте..."
+ },
+ "checkout": {
+ "CartDetails": "Деталі кошика",
+ "Demo": "Використовуйте тестові дані: 4242424242424242 | 12/34 | 567",
+ "Description": "Перегляньте свої товари перед оплатою",
+ "EmptyCartDescription": "Ваш кошик порожній. Додайте товари, щоб продовжити.",
+ "EmptyCartHeading": "Ваш кошик порожній",
+ "Pay": "Сплатити зараз",
+ "Title": "Оформлення замовлення",
+ "backToCart": "Повернутися до кошика",
+ "backToCartSingle": "Назад",
+ "calculated": "Розраховано під час оформлення замовлення",
+ "cart": "Кошик покупок",
+ "cartIsEmpty": "Ваш кошик наразі порожній",
+ "continueShopping": "Продовжити покупки",
+ "free": "Безкоштовно",
+ "notConnectedDescription": "Підключіть ваш магазин до Stripe для прийому платежів.",
+ "notConnectedHeading": "Магазин не підключено до Stripe",
+ "shipping": "Доставка",
+ "taxes": "Податки",
+ "total": "Загальна сума",
+ "viewTheCart": "Переглянути кошик"
+ },
+ "components": {
+ "command": {
+ "dark": "Темний режим",
+ "light": "Світлий режим",
+ "system": "Системний за замовчуванням",
+ "theme": "Тема"
+ },
+ "search": {
+ "placeholder": "Шукати продукти...",
+ "title": "Пошук"
+ }
+ },
+ "contact": {
+ "submit": "Надіслати"
+ },
+ "demo": {
+ "aria-label-goto": "Перейти до",
+ "launch": "Панель керування"
+ },
+ "faq": {
+ "1": {
+ "details": "Для отримання найновішої інформації та як почати, перегляньте наш посібник у розділі допомоги Relivator.",
+ "summary": "Як швидко почати купувати?"
+ },
+ "2": {
+ "details": "Relivator пропонує широкий асортимент продуктів та функцій, які роблять покупки легкими та приємними.",
+ "summary": "Чому варто обрати Relivator для онлайн-покупок?"
+ },
+ "3": {
+ "details": "Relivator постійно оновлюється, щоб покращити ваш досвід покупок. Ваша підтримка допомагає нам вдосконалювати нашу платформу. Дякуємо за покупки у нас!",
+ "summary": "Як я можу підтримати розвиток Relivator?"
+ }
+ },
+ "landing": {
+ "about": "Ласкаво просимо до Relivator, вашого єдиного магазину для всіх ваших потреб. Досліджуйте наш широкий асортимент продуктів і насолоджуйтеся безперебійним покупок.",
+ "buy-now": "Переглянути каталог",
+ "features": {
+ "auth": {
+ "description": "Прості та безпечні варіанти входу для всіх користувачів.",
+ "title": "Легкий вхід"
+ },
+ "database": {
+ "description": "Отримайте доступ до широкого асортименту продуктів із надійним сервісом.",
+ "title": "Широкий асортимент продуктів"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator пропонує безмежні можливості з усіма необхідними інструментами.",
+ "description": "Підпишіться на наші новини, щоб отримувати останні оновлення та пропозиції.",
+ "title": "Ексклюзивні пропозиції"
+ },
+ "interface": {
+ "description": "Насолоджуйтесь зручним інтерфейсом для чудового досвіду покупок.",
+ "title": "Зручний інтерфейс"
+ },
+ "nextjs": {
+ "description": "Безперебійно переглядайте наш сайт.",
+ "title": "Безперебійна навігація"
+ },
+ "text": {
+ "description": "Відкрийте для себе сучасну та ефективну платформу для покупок.",
+ "title": "Ефективні покупки"
+ }
+ },
+ "footer-cta": "Готові до покупок?",
+ "get-started-button": "Перейти до панелі керування",
+ "main-cta": "Відвідати GitHub",
+ "sell-now": "Перейти до панелі керування"
+ },
+ "metadata": {
+ "description": "Покращуйте свій досвід покупок з Relivator: поєднання потужних технологій та зручного дизайну.",
+ "title": {
+ "home": "Головна"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "Ресурс може бути переміщено, перейменовано або не існує. Перевірте URL або використовуйте меню для навігації.",
+ "go-home": "Повернутися на головну",
+ "title": "Сторінку не знайдено!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "Купуйте {category} у найкращих магазинах",
+ "buyTheBest": "Найкращі продукти {category}"
+ },
+ "products": {
+ "addToCart": "Додати до кошика",
+ "buyProductsFromOurStores": "Купуйте у наших магазинах",
+ "catalogue": "Каталог продуктів",
+ "description": "Опис продукту",
+ "moreProductsFrom": "Більше продуктів від {storeName}",
+ "noDescription": "Опис відсутній.",
+ "products": "Продукти",
+ "productsCatalogue": "Каталог продуктів"
+ },
+ "stores": {
+ "buy-products": "Купуйте у наших магазинах",
+ "stores": "Магазини"
+ }
+ }
+}
diff --git a/addons/messages/relivator/zh.json b/addons/messages/relivator/zh.json
new file mode 100644
index 00000000..a0e56020
--- /dev/null
+++ b/addons/messages/relivator/zh.json
@@ -0,0 +1,160 @@
+{
+ "LoginForm": {
+ "no-account": "没有账户?",
+ "signup": "在这里注册。",
+ "title": "登录",
+ "welcome-back": "欢迎回来!"
+ },
+ "RegisterForm": {
+ "have-account": "已有账户?",
+ "signin": "在这里登录。",
+ "title": "创建账户"
+ },
+ "account-page": {
+ "Settings": "账户设置",
+ "loggedIn": "您已登录",
+ "loggedOut": "您已登出",
+ "login": "登录",
+ "logout": "登出",
+ "title": "我的账户"
+ },
+ "auth": {
+ "error": {
+ "default": "请尝试其他账户。",
+ "email": "未找到邮箱。请尝试其他提供商。",
+ "oauthNotLinked": "请使用原账户登录以确认身份。",
+ "unknown": "发生错误。请再试一次。",
+ "unknown-error": "出了点问题。请联系支持。"
+ },
+ "legal": "使用这些按钮即表示您同意我们的",
+ "legal-and": "和",
+ "legal-privacy": "隐私政策",
+ "legal-terms": "服务条款"
+ },
+ "auth-provider": {
+ "please-wait": "请稍候..."
+ },
+ "checkout": {
+ "CartDetails": "购物车详情",
+ "Demo": "使用测试数据:4242424242424242 | 12/34 | 567",
+ "Description": "支付前请检查您的商品",
+ "EmptyCartDescription": "您的购物车是空的。添加商品以继续。",
+ "EmptyCartHeading": "您的购物车是空的",
+ "Pay": "现在支付",
+ "Title": "结账",
+ "backToCart": "返回购物车",
+ "backToCartSingle": "返回",
+ "calculated": "结账时计算",
+ "cart": "购物车",
+ "cartIsEmpty": "您的购物车目前是空的",
+ "continueShopping": "继续购物",
+ "free": "免费",
+ "notConnectedDescription": "连接您的商店到Stripe以接受支付。",
+ "notConnectedHeading": "商店未连接到Stripe",
+ "shipping": "运费",
+ "taxes": "税费",
+ "total": "总计",
+ "viewTheCart": "查看购物车"
+ },
+ "components": {
+ "command": {
+ "dark": "黑暗模式",
+ "light": "光明模式",
+ "system": "系统默认",
+ "theme": "主题"
+ },
+ "search": {
+ "placeholder": "搜索产品...",
+ "title": "搜索"
+ }
+ },
+ "contact": {
+ "submit": "提交"
+ },
+ "demo": {
+ "aria-label-goto": "前往",
+ "launch": "控制面板"
+ },
+ "faq": {
+ "1": {
+ "details": "有关最新信息和如何快速开始,请查看Relivator帮助部分中的指南。",
+ "summary": "如何快速开始购物?"
+ },
+ "2": {
+ "details": "Relivator提供广泛的产品和功能,使购物变得轻松愉快。",
+ "summary": "为什么选择Relivator进行在线购物?"
+ },
+ "3": {
+ "details": "Relivator不断更新,以改善您的购物体验。您的支持有助于我们改进平台。感谢您在我们这里购物!",
+ "summary": "如何支持Relivator的发展?"
+ }
+ },
+ "landing": {
+ "about": "欢迎来到Relivator,您的单一商店满足所有需求。探索我们广泛的产品系列,享受无缝购物体验。",
+ "buy-now": "浏览目录",
+ "features": {
+ "auth": {
+ "description": "为所有用户提供简单且安全的登录选项。",
+ "title": "轻松登录"
+ },
+ "database": {
+ "description": "通过可靠的服务访问广泛的产品。",
+ "title": "广泛的产品系列"
+ },
+ "devtools": {
+ "ambitions-description": "Relivator提供无限可能,拥有您所需的所有工具。",
+ "description": "订阅我们的新闻邮件,以获取最新更新和优惠。",
+ "title": "独家优惠"
+ },
+ "interface": {
+ "description": "享受用户友好的界面,带来极好的购物体验。",
+ "title": "用户友好界面"
+ },
+ "nextjs": {
+ "description": "无缝浏览我们的网站。",
+ "title": "无缝导航"
+ },
+ "text": {
+ "description": "体验现代高效的购物平台。",
+ "title": "高效购物"
+ }
+ },
+ "footer-cta": "准备好开始购物了吗?",
+ "get-started-button": "前往控制面板",
+ "main-cta": "访问GitHub",
+ "sell-now": "前往控制面板"
+ },
+ "metadata": {
+ "description": "通过Relivator提升您的购物体验:结合先进技术和用户友好的设计。",
+ "title": {
+ "home": "首页"
+ }
+ },
+ "pages": {
+ "not-found": {
+ "description": "资源可能已被移动、重命名或不存在。请验证URL或使用菜单进行导航。",
+ "go-home": "返回首页",
+ "title": "页面未找到!"
+ }
+ },
+ "store": {
+ "categories": {
+ "buyFromCategories": "从顶级商店购买{category}",
+ "buyTheBest": "最好的{category}产品"
+ },
+ "products": {
+ "addToCart": "添加到购物车",
+ "buyProductsFromOurStores": "从我们的商店购买",
+ "catalogue": "产品目录",
+ "description": "产品描述",
+ "moreProductsFrom": "更多来自{storeName}的产品",
+ "noDescription": "没有可用描述。",
+ "products": "产品",
+ "productsCatalogue": "产品目录"
+ },
+ "stores": {
+ "buy-products": "从我们的商店购买",
+ "stores": "商店"
+ }
+ }
+}
diff --git a/messages/de.json b/addons/messages/reliverse/de.json
similarity index 100%
rename from messages/de.json
rename to addons/messages/reliverse/de.json
diff --git a/messages/en.json b/addons/messages/reliverse/en.json
similarity index 88%
rename from messages/en.json
rename to addons/messages/reliverse/en.json
index e27ac1ba..4c39a788 100644
--- a/messages/en.json
+++ b/addons/messages/reliverse/en.json
@@ -85,12 +85,12 @@
"summary": "Why choose Relivator for Next.js 15 & React 19?"
},
"3": {
- "details": "Development is mainly by one person. Donations can help speed up the process. Click below to donate. Thank you for your support! 🩷",
+ "details": "Development is mainly by one person. Donations can help speed up the process. Click below to donate. Or visit the Donate to Relivator (https://relivator.bleverse.com/en/donate) page to learn more details. Thank you for your support! 🩷",
"summary": "Can the release of Relivator v1.3.0 be sped up?"
}
},
"landing": {
- "about": "Creating the most feature-rich, global Next.js starter. Explore powerful features. More than just code, it's a journey. Stable and production-ready.",
+ "about": "Stop jumping from one starter to the next. With Relivator, your possibilities are endless! You can create anything you want; all the tools are ready and waiting for you. Our goal is to create the world's most feature-rich and globally accessible Next.js starter. It offers more than just code—it's an experience.",
"buy-now": "Catalogue",
"features": {
"auth": {
@@ -125,7 +125,7 @@
"sell-now": "Dashboard"
},
"metadata": {
- "description": "Enhance your eCommerce with Relivator: Power of shadcn/ui, Next.js 15, and React 19",
+ "description": "Build More Efficient, Engaging, and Profitable Online Stores: Relivator Enhances your eCommerce with the Power of shadcn/ui, Next.js 15, React 19, and more",
"title": {
"home": "Home"
}
diff --git a/messages/es.json b/addons/messages/reliverse/es.json
similarity index 100%
rename from messages/es.json
rename to addons/messages/reliverse/es.json
diff --git a/messages/fa.json b/addons/messages/reliverse/fa.json
similarity index 100%
rename from messages/fa.json
rename to addons/messages/reliverse/fa.json
diff --git a/messages/fr.json b/addons/messages/reliverse/fr.json
similarity index 100%
rename from messages/fr.json
rename to addons/messages/reliverse/fr.json
diff --git a/messages/hi.json b/addons/messages/reliverse/hi.json
similarity index 100%
rename from messages/hi.json
rename to addons/messages/reliverse/hi.json
diff --git a/messages/it.json b/addons/messages/reliverse/it.json
similarity index 100%
rename from messages/it.json
rename to addons/messages/reliverse/it.json
diff --git a/messages/pl.json b/addons/messages/reliverse/pl.json
similarity index 100%
rename from messages/pl.json
rename to addons/messages/reliverse/pl.json
diff --git a/messages/tr.json b/addons/messages/reliverse/tr.json
similarity index 100%
rename from messages/tr.json
rename to addons/messages/reliverse/tr.json
diff --git a/messages/uk.json b/addons/messages/reliverse/uk.json
similarity index 100%
rename from messages/uk.json
rename to addons/messages/reliverse/uk.json
diff --git a/messages/zh.json b/addons/messages/reliverse/zh.json
similarity index 100%
rename from messages/zh.json
rename to addons/messages/reliverse/zh.json
diff --git a/addons/terminal/index.ts b/addons/scripts/index.ts
similarity index 96%
rename from addons/terminal/index.ts
rename to addons/scripts/index.ts
index 41c8cd9f..dd58be3e 100644
--- a/addons/terminal/index.ts
+++ b/addons/scripts/index.ts
@@ -1,5 +1,5 @@
-import { getRandomQuote } from "@/terminal/reliverse/quotes";
-import { defineAddon } from "@/terminal/shared/utils";
+import { getRandomQuote } from "@/scripts/reliverse/quotes";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import { debugEnabled } from "reliverse.config";
@@ -75,7 +75,7 @@ const handleAddonSelection = async () => {
const addon = defineAddon(
"📦",
"@reliverse/addons",
- "addon to run",
+ "which addon to run",
"",
);
diff --git a/addons/terminal/reliverse/academy/achievements.ts b/addons/scripts/reliverse/academy/achievements.ts
similarity index 89%
rename from addons/terminal/reliverse/academy/achievements.ts
rename to addons/scripts/reliverse/academy/achievements.ts
index d347d1c4..ff34dec8 100644
--- a/addons/terminal/reliverse/academy/achievements.ts
+++ b/addons/scripts/reliverse/academy/achievements.ts
@@ -1,10 +1,10 @@
import type {
AcademyPlayer,
Achievement,
-} from "@/terminal/reliverse/academy/types";
+} from "@/scripts/reliverse/academy/types";
-import { errorMessage } from "@/server/reliverse/errors";
-import { getPlayerById, savePlayer } from "@/terminal/reliverse/academy/player";
+import { getPlayerById, savePlayer } from "@/scripts/reliverse/academy/player";
+import { getErrorMessage } from "@/server";
import consola from "consola";
import pc from "picocolors";
@@ -83,7 +83,7 @@ export const updateAchievements = async (playerId: string): Promise => {
}
} catch (error) {
consola.error(
- `Failed to update achievements for player ${playerId}: ${errorMessage(error)}`,
+ `Failed to update achievements for player ${playerId}: ${getErrorMessage(error)}`,
);
}
};
@@ -110,6 +110,6 @@ export const displayAchievements = async (playerId: string): Promise => {
);
}
} catch (error) {
- consola.error(`Failed to display achievements: ${errorMessage(error)}`);
+ consola.error(`Failed to display achievements: ${getErrorMessage(error)}`);
}
};
diff --git a/addons/terminal/reliverse/academy/checkJsonFiles.ts b/addons/scripts/reliverse/academy/checkJsonFiles.ts
similarity index 96%
rename from addons/terminal/reliverse/academy/checkJsonFiles.ts
rename to addons/scripts/reliverse/academy/checkJsonFiles.ts
index 7dcffaa4..3edf8b64 100644
--- a/addons/terminal/reliverse/academy/checkJsonFiles.ts
+++ b/addons/scripts/reliverse/academy/checkJsonFiles.ts
@@ -1,6 +1,7 @@
-import type { AcademyQuestion } from "@/terminal/reliverse/academy/types";
+import type { AcademyQuestion } from "@/scripts/reliverse/academy/types";
import type { JSONSchemaType } from "ajv";
+import { getCurrentDirname } from "@/scripts/utils";
import Ajv from "ajv";
import addFormats from "ajv-formats";
import { loadConfig } from "c12";
@@ -10,8 +11,6 @@ import fs from "fs-extra";
import path from "pathe";
import { debugEnabled } from "reliverse.config";
-import { getCurrentDirname } from "~/utils";
-
const currentDirname = getCurrentDirname(import.meta.url);
const playerJsonFile = "data/players.json";
@@ -130,7 +129,10 @@ export const validateJsonSchema = async (): Promise => {
for (const file of jsonFiles) {
const dataPath = path.join(questionsDirectory, file);
const relativePath = path.relative(currentDirname, dataPath);
- const jsonFilePath = path.join("addons/reliverse/academy", relativePath);
+ const jsonFilePath = path.join(
+ "addons/scripts/reliverse/academy",
+ relativePath,
+ );
try {
const data: AcademyQuestion[] =
diff --git a/addons/terminal/reliverse/academy/config.json b/addons/scripts/reliverse/academy/config.json
similarity index 100%
rename from addons/terminal/reliverse/academy/config.json
rename to addons/scripts/reliverse/academy/config.json
diff --git a/addons/terminal/reliverse/academy/data/players.json b/addons/scripts/reliverse/academy/data/players.json
similarity index 100%
rename from addons/terminal/reliverse/academy/data/players.json
rename to addons/scripts/reliverse/academy/data/players.json
diff --git a/addons/terminal/reliverse/academy/data/progress.json b/addons/scripts/reliverse/academy/data/progress.json
similarity index 100%
rename from addons/terminal/reliverse/academy/data/progress.json
rename to addons/scripts/reliverse/academy/data/progress.json
diff --git a/addons/terminal/reliverse/academy/data/schema-players.json b/addons/scripts/reliverse/academy/data/schema-players.json
similarity index 100%
rename from addons/terminal/reliverse/academy/data/schema-players.json
rename to addons/scripts/reliverse/academy/data/schema-players.json
diff --git a/addons/terminal/reliverse/academy/data/schema-progress.json b/addons/scripts/reliverse/academy/data/schema-progress.json
similarity index 100%
rename from addons/terminal/reliverse/academy/data/schema-progress.json
rename to addons/scripts/reliverse/academy/data/schema-progress.json
diff --git a/addons/terminal/reliverse/academy/fileHandler.ts b/addons/scripts/reliverse/academy/fileHandler.ts
similarity index 79%
rename from addons/terminal/reliverse/academy/fileHandler.ts
rename to addons/scripts/reliverse/academy/fileHandler.ts
index dc24dfb3..551e0d93 100644
--- a/addons/terminal/reliverse/academy/fileHandler.ts
+++ b/addons/scripts/reliverse/academy/fileHandler.ts
@@ -1,10 +1,9 @@
-import { errorMessage } from "@/server/reliverse/errors";
+import { getCurrentDirname } from "@/scripts/utils";
+import { getErrorMessage } from "@/server";
import { destr } from "destr";
import fs from "fs-extra";
import { join } from "pathe";
-import { getCurrentDirname } from "~/utils";
-
const currentDirname = getCurrentDirname(import.meta.url);
const getFilePath = (filename: string): string =>
@@ -14,7 +13,7 @@ const readFile = async (filePath: string): Promise => {
try {
return await fs.readFile(filePath, "utf8");
} catch (error) {
- throw new Error(`Failed to read file: ${errorMessage(error)}`);
+ throw new Error(`Failed to read file: ${getErrorMessage(error)}`);
}
};
@@ -22,7 +21,7 @@ const writeFile = async (filePath: string, data: string): Promise => {
try {
await fs.writeFile(filePath, data, "utf8");
} catch (error) {
- throw new Error(`Failed to write file: ${errorMessage(error)}`);
+ throw new Error(`Failed to write file: ${getErrorMessage(error)}`);
}
};
diff --git a/addons/terminal/reliverse/academy/fileProcessor.ts b/addons/scripts/reliverse/academy/fileProcessor.ts
similarity index 89%
rename from addons/terminal/reliverse/academy/fileProcessor.ts
rename to addons/scripts/reliverse/academy/fileProcessor.ts
index e3f7a0a4..938d46a9 100644
--- a/addons/terminal/reliverse/academy/fileProcessor.ts
+++ b/addons/scripts/reliverse/academy/fileProcessor.ts
@@ -1,12 +1,11 @@
-import type { AcademyQuestion } from "@/terminal/reliverse/academy/types";
+import type { AcademyQuestion } from "@/scripts/reliverse/academy/types";
+import { getCurrentDirname } from "@/scripts/utils";
import { destr } from "destr";
import fs from "fs-extra";
import { join } from "pathe";
-import { getCurrentDirname } from "~/utils";
-
-// import { decryptAnswer } from "@/terminal/reliverse/academy/crypto";
+// import { decryptAnswer } from "@/scripts/reliverse/academy/crypto";
const currentDirname = getCurrentDirname(import.meta.url);
const isQuestionArray = (data: unknown): data is AcademyQuestion[] => {
@@ -56,7 +55,7 @@ export const processFileAnswers = async (
// answer = decryptAnswer(answer);
// } catch (error) {
// consola.error(
- // `Answer is not encrypted or failed to decrypt: ${errorMessage(error)} in file ${file}`,
+ // `Answer is not encrypted or failed to decrypt: ${getErrorMessage(error)} in file ${file}`,
// );
// }
return {
diff --git a/addons/terminal/reliverse/academy/game.ts b/addons/scripts/reliverse/academy/game.ts
similarity index 94%
rename from addons/terminal/reliverse/academy/game.ts
rename to addons/scripts/reliverse/academy/game.ts
index 8c2080b2..e34fd68f 100644
--- a/addons/terminal/reliverse/academy/game.ts
+++ b/addons/scripts/reliverse/academy/game.ts
@@ -1,16 +1,16 @@
import type {
AcademyDifficultyLevels,
AcademyQuestion,
-} from "@/terminal/reliverse/academy/types";
+} from "@/scripts/reliverse/academy/types";
-import { errorMessage } from "@/server/reliverse/errors";
-import { updateAchievements } from "@/terminal/reliverse/academy/achievements";
+import { updateAchievements } from "@/scripts/reliverse/academy/achievements";
import {
readJsonFile,
writeJsonFile,
-} from "@/terminal/reliverse/academy/fileHandler";
-import { updatePlayerScore } from "@/terminal/reliverse/academy/player";
-import { AcademyCategoryEnum } from "@/terminal/reliverse/academy/types";
+} from "@/scripts/reliverse/academy/fileHandler";
+import { updatePlayerScore } from "@/scripts/reliverse/academy/player";
+import { AcademyCategoryEnum } from "@/scripts/reliverse/academy/types";
+import { getErrorMessage } from "@/server";
import { select } from "@inquirer/prompts";
import consola from "consola";
import pc from "picocolors";
@@ -44,7 +44,7 @@ const categoriesList = [
];
const handleGameError = (error: unknown, context: string): void => {
- consola.error(`${context}: ${errorMessage(error)}`);
+ consola.error(`${context}: ${getErrorMessage(error)}`);
};
const getProgress = async (): Promise<
diff --git a/addons/terminal/reliverse/academy/index.ts b/addons/scripts/reliverse/academy/index.ts
similarity index 73%
rename from addons/terminal/reliverse/academy/index.ts
rename to addons/scripts/reliverse/academy/index.ts
index b0585903..3c8f4c86 100644
--- a/addons/terminal/reliverse/academy/index.ts
+++ b/addons/scripts/reliverse/academy/index.ts
@@ -1,16 +1,16 @@
-import { errorMessage } from "@/server/reliverse/errors";
-import { displayAchievements } from "@/terminal/reliverse/academy/achievements";
-import { validateJsonSchema } from "@/terminal/reliverse/academy/checkJsonFiles";
-import { playGame } from "@/terminal/reliverse/academy/game";
-import { displayLeaderboard } from "@/terminal/reliverse/academy/leaders";
-import { addPlayer, findPlayer } from "@/terminal/reliverse/academy/player";
-import { openSettings } from "@/terminal/reliverse/academy/settings";
+import { displayAchievements } from "@/scripts/reliverse/academy/achievements";
+import { validateJsonSchema } from "@/scripts/reliverse/academy/checkJsonFiles";
+import { playGame } from "@/scripts/reliverse/academy/game";
+import { displayLeaderboard } from "@/scripts/reliverse/academy/leaders";
+import { addPlayer, findPlayer } from "@/scripts/reliverse/academy/player";
+import { openSettings } from "@/scripts/reliverse/academy/settings";
+import { getErrorMessage } from "@/server";
import { input, select } from "@inquirer/prompts";
import consola from "consola";
import pc from "picocolors";
// TODO: Move the implementation of this game to the separate package
-// import { decryptAll, hashAll } from "@/terminal/reliverse/academy/hash";
+// import { decryptAll, hashAll } from "@/scripts/reliverse/academy/hash";
// const args = new Set(process.argv.slice(2));
// const isHashMode = args.has("--hash");
// const isDecryptMode = args.has("--decrypt");
@@ -71,7 +71,7 @@ const mainMenu = async (
await mainMenu(playerId, playerName);
} catch (error) {
- consola.error(`Failed to navigate main menu: ${errorMessage(error)}`);
+ consola.error(`Failed to navigate main menu: ${getErrorMessage(error)}`);
}
};
@@ -97,7 +97,7 @@ const start = async (): Promise => {
await mainMenu(player.id, player.name);
} catch (error) {
- consola.error(`Failed to start the game: ${errorMessage(error)}`);
+ consola.error(`Failed to start the game: ${getErrorMessage(error)}`);
}
};
@@ -114,11 +114,11 @@ const run = async (): Promise => {
// }
await start();
} catch (error) {
- consola.error(`Failed to run application: ${errorMessage(error)}`);
+ consola.error(`Failed to run application: ${getErrorMessage(error)}`);
process.exit(1); // Exit the process with an error code
}
};
run().catch((error: unknown) => {
- consola.error(`Failed to run the game: ${errorMessage(error)}`);
+ consola.error(`Failed to run the game: ${getErrorMessage(error)}`);
});
diff --git a/addons/terminal/reliverse/academy/leaders.ts b/addons/scripts/reliverse/academy/leaders.ts
similarity index 80%
rename from addons/terminal/reliverse/academy/leaders.ts
rename to addons/scripts/reliverse/academy/leaders.ts
index b05174d3..78b8b2db 100644
--- a/addons/terminal/reliverse/academy/leaders.ts
+++ b/addons/scripts/reliverse/academy/leaders.ts
@@ -1,5 +1,5 @@
-import { errorMessage } from "@/server/reliverse/errors";
-import { getPlayers } from "@/terminal/reliverse/academy/player";
+import { getPlayers } from "@/scripts/reliverse/academy/player";
+import { getErrorMessage } from "@/server";
import consola from "consola";
export const displayLeaderboard = async (): Promise => {
@@ -31,6 +31,6 @@ export const displayLeaderboard = async (): Promise => {
consola.info(`${index + 1}. ${player.name}: ${totalScore} points`);
}
} catch (error) {
- consola.error(`Failed to display leaderboard: ${errorMessage(error)}`);
+ consola.error(`Failed to display leaderboard: ${getErrorMessage(error)}`);
}
};
diff --git a/addons/terminal/reliverse/academy/player.ts b/addons/scripts/reliverse/academy/player.ts
similarity index 83%
rename from addons/terminal/reliverse/academy/player.ts
rename to addons/scripts/reliverse/academy/player.ts
index abf9fdb8..39f47e2d 100644
--- a/addons/terminal/reliverse/academy/player.ts
+++ b/addons/scripts/reliverse/academy/player.ts
@@ -1,10 +1,10 @@
-import type { AcademyPlayer } from "@/terminal/reliverse/academy/types";
+import type { AcademyPlayer } from "@/scripts/reliverse/academy/types";
-import { errorMessage } from "@/server/reliverse/errors";
import {
readJsonFile,
writeJsonFile,
-} from "@/terminal/reliverse/academy/fileHandler";
+} from "@/scripts/reliverse/academy/fileHandler";
+import { getErrorMessage } from "@/server";
import tryToCatch from "try-to-catch";
import { v4 as uuidv4 } from "uuid";
@@ -18,7 +18,7 @@ export const getPlayers = async (): Promise => {
return data.players;
} catch (error) {
- throw new Error(`Failed to get players: ${errorMessage(error)}`);
+ throw new Error(`Failed to get players: ${getErrorMessage(error)}`);
}
};
@@ -28,7 +28,7 @@ const savePlayers = async (players: AcademyPlayer[]): Promise => {
});
if (error) {
- throw new Error(`Failed to save players: ${errorMessage(error)}`);
+ throw new Error(`Failed to save players: ${getErrorMessage(error)}`);
}
};
@@ -40,7 +40,7 @@ export const getPlayerById = async (
return players.find((p) => p.id === id);
} catch (error) {
- throw new Error(`Failed to get player by id: ${errorMessage(error)}`);
+ throw new Error(`Failed to get player by id: ${getErrorMessage(error)}`);
}
};
@@ -56,7 +56,7 @@ export const savePlayer = async (player: AcademyPlayer): Promise => {
throw new Error(`Player not found: ${player.id}`);
}
} catch (error) {
- throw new Error(`Failed to save player: ${errorMessage(error)}`);
+ throw new Error(`Failed to save player: ${getErrorMessage(error)}`);
}
};
diff --git a/addons/terminal/reliverse/academy/questions/bonus.json b/addons/scripts/reliverse/academy/questions/bonus.json
similarity index 100%
rename from addons/terminal/reliverse/academy/questions/bonus.json
rename to addons/scripts/reliverse/academy/questions/bonus.json
diff --git a/addons/terminal/reliverse/academy/questions/eslint.json b/addons/scripts/reliverse/academy/questions/eslint.json
similarity index 100%
rename from addons/terminal/reliverse/academy/questions/eslint.json
rename to addons/scripts/reliverse/academy/questions/eslint.json
diff --git a/addons/terminal/reliverse/academy/questions/javascript.json b/addons/scripts/reliverse/academy/questions/javascript.json
similarity index 100%
rename from addons/terminal/reliverse/academy/questions/javascript.json
rename to addons/scripts/reliverse/academy/questions/javascript.json
diff --git a/addons/terminal/reliverse/academy/questions/react.json b/addons/scripts/reliverse/academy/questions/react.json
similarity index 100%
rename from addons/terminal/reliverse/academy/questions/react.json
rename to addons/scripts/reliverse/academy/questions/react.json
diff --git a/addons/terminal/reliverse/academy/questions/reliverse.json b/addons/scripts/reliverse/academy/questions/reliverse.json
similarity index 99%
rename from addons/terminal/reliverse/academy/questions/reliverse.json
rename to addons/scripts/reliverse/academy/questions/reliverse.json
index 9432c3eb..7520eed1 100644
--- a/addons/terminal/reliverse/academy/questions/reliverse.json
+++ b/addons/scripts/reliverse/academy/questions/reliverse.json
@@ -225,7 +225,7 @@
},
{
"id": "17",
- "question": "What is the purpose of the DEV_DEMO_NOTES environment variable?",
+ "question": "What is the purpose of the DEMO_NOTES_ENABLED environment variable?",
"difficulty": "medium",
"hint": "It's associated with a demonstration environment.",
"answer": "It is used for the official Relivator demo website.",
diff --git a/addons/terminal/reliverse/academy/questions/typescript.json b/addons/scripts/reliverse/academy/questions/typescript.json
similarity index 100%
rename from addons/terminal/reliverse/academy/questions/typescript.json
rename to addons/scripts/reliverse/academy/questions/typescript.json
diff --git a/addons/terminal/reliverse/academy/schema.json b/addons/scripts/reliverse/academy/schema.json
similarity index 100%
rename from addons/terminal/reliverse/academy/schema.json
rename to addons/scripts/reliverse/academy/schema.json
diff --git a/addons/terminal/reliverse/academy/settings.ts b/addons/scripts/reliverse/academy/settings.ts
similarity index 73%
rename from addons/terminal/reliverse/academy/settings.ts
rename to addons/scripts/reliverse/academy/settings.ts
index d97463c3..10c7b2dd 100644
--- a/addons/terminal/reliverse/academy/settings.ts
+++ b/addons/scripts/reliverse/academy/settings.ts
@@ -1,5 +1,5 @@
-import { errorMessage } from "@/server/reliverse/errors";
-import { resetPlayerScore } from "@/terminal/reliverse/academy/player";
+import { resetPlayerScore } from "@/scripts/reliverse/academy/player";
+import { getErrorMessage } from "@/server";
import { select } from "@inquirer/prompts";
import consola from "consola";
@@ -24,6 +24,6 @@ export const openSettings = async (playerId: string) => {
consola.success("Score reset successfully.");
}
} catch (error) {
- consola.error(`Failed to open settings: ${errorMessage(error)}`);
+ consola.error(`Failed to open settings: ${getErrorMessage(error)}`);
}
};
diff --git a/addons/terminal/reliverse/academy/types.ts b/addons/scripts/reliverse/academy/types.ts
similarity index 100%
rename from addons/terminal/reliverse/academy/types.ts
rename to addons/scripts/reliverse/academy/types.ts
diff --git a/addons/terminal/reliverse/disabler/index.ts b/addons/scripts/reliverse/disabler/index.ts
similarity index 98%
rename from addons/terminal/reliverse/disabler/index.ts
rename to addons/scripts/reliverse/disabler/index.ts
index 1a8455d2..4633cb7c 100644
--- a/addons/terminal/reliverse/disabler/index.ts
+++ b/addons/scripts/reliverse/disabler/index.ts
@@ -1,20 +1,11 @@
-// 👉 pnpm reli:disabler
-// ? Hi, and welcome! The @reliverse/disabler addon can zip project folders
-// ? you choose, allowing for faster builds when you don't need specific folders during development.
-// ? To use this script, Knip and Putout RulesDisabled versions will be activated.
-// ? This will overwrite your current configurations! But don't worry, we'll archive your current configs as well.
-// ? You can extract these folders and configs when needed. Currently, works only with src/app/[locale]/* folders.
-// ! 🔥 PLEASE MAKE A COMMIT BEFORE USING THIS SCRIPT, AS IT IS STILL EXPERIMENTAL !!!
import type { TarFileItem } from "nanotar";
-// import { debugEnabled } from "reliverse.config";
-import { getCurrentDirname } from "@/browser/shared/utils";
import {
getFoldersInDirectory,
getRootDirname,
removeFile,
removeFolder,
-} from "@/terminal/shared/utils";
+} from "@/scripts/utils";
import { checkbox, confirm, input, select, Separator } from "@inquirer/prompts";
import { directoryExists } from "@metamask/utils/node";
import { consola } from "consola";
@@ -23,9 +14,14 @@ import { createTarGzip, parseTarGzip } from "nanotar";
import { dirname, join } from "pathe";
import pc from "picocolors";
-const currentDirname = getCurrentDirname(import.meta.url);
-
-const rootDirectory = getRootDirname(currentDirname, 4);
+// 👉 pnpm reli:disabler
+// ? Hi, and welcome! The @reliverse/disabler addon can zip project folders
+// ? you choose, allowing for faster builds when you don't need specific folders during development.
+// ? To use this script, Knip and Putout RulesDisabled versions will be activated.
+// ? This will overwrite your current configurations! But don't worry, we'll archive your current configs as well.
+// ? You can extract these folders and configs when needed. Currently, works only with src/app/[locale]/* folders.
+// ! 🔥 PLEASE MAKE A COMMIT BEFORE USING THIS SCRIPT, AS IT IS STILL EXPERIMENTAL !!!
+const rootDirectory = getRootDirname(import.meta.url, 4);
// const configsFolder = join(currentDirname, "../relicon/setup/configs");
// const knipConfig = join(rootDirectory, "knip.json");
diff --git a/addons/terminal/reliverse/gitutils/index.ts b/addons/scripts/reliverse/gitutils/index.ts
similarity index 100%
rename from addons/terminal/reliverse/gitutils/index.ts
rename to addons/scripts/reliverse/gitutils/index.ts
diff --git a/addons/terminal/reliverse/gitutils/utils/index.ts b/addons/scripts/reliverse/gitutils/utils/index.ts
similarity index 100%
rename from addons/terminal/reliverse/gitutils/utils/index.ts
rename to addons/scripts/reliverse/gitutils/utils/index.ts
diff --git a/addons/terminal/reliverse/gitutils/utils/release.ts b/addons/scripts/reliverse/gitutils/utils/release.ts
similarity index 88%
rename from addons/terminal/reliverse/gitutils/utils/release.ts
rename to addons/scripts/reliverse/gitutils/utils/release.ts
index f437ece9..d7a879a4 100644
--- a/addons/terminal/reliverse/gitutils/utils/release.ts
+++ b/addons/scripts/reliverse/gitutils/utils/release.ts
@@ -1,4 +1,4 @@
-import { throwIfStagedChanges } from "@/terminal/reliverse/gitutils/utils/shell";
+import { throwIfStagedChanges } from "@/scripts/reliverse/gitutils/utils/shell";
import consola from "consola";
import log4js from "log4js";
import { getCurrentWorkingDirectory } from "packageJson";
diff --git a/addons/terminal/reliverse/gitutils/utils/shell.ts b/addons/scripts/reliverse/gitutils/utils/shell.ts
similarity index 100%
rename from addons/terminal/reliverse/gitutils/utils/shell.ts
rename to addons/scripts/reliverse/gitutils/utils/shell.ts
diff --git a/addons/terminal/shared/micro/db.ts b/addons/scripts/reliverse/presets/drizzle/index.ts
similarity index 100%
rename from addons/terminal/shared/micro/db.ts
rename to addons/scripts/reliverse/presets/drizzle/index.ts
diff --git a/addons/terminal/reliverse/presets/index.ts b/addons/scripts/reliverse/presets/index.ts
similarity index 92%
rename from addons/terminal/reliverse/presets/index.ts
rename to addons/scripts/reliverse/presets/index.ts
index a9d8f98b..daa44ccb 100644
--- a/addons/terminal/reliverse/presets/index.ts
+++ b/addons/scripts/reliverse/presets/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
diff --git a/addons/terminal/reliverse/presets/utils/index.ts b/addons/scripts/reliverse/presets/utils/index.ts
similarity index 100%
rename from addons/terminal/reliverse/presets/utils/index.ts
rename to addons/scripts/reliverse/presets/utils/index.ts
diff --git a/addons/terminal/reliverse/presets/utils/vscode.ts b/addons/scripts/reliverse/presets/utils/vscode.ts
similarity index 89%
rename from addons/terminal/reliverse/presets/utils/vscode.ts
rename to addons/scripts/reliverse/presets/utils/vscode.ts
index 2a2cb803..72eceb6f 100644
--- a/addons/terminal/reliverse/presets/utils/vscode.ts
+++ b/addons/scripts/reliverse/presets/utils/vscode.ts
@@ -1,22 +1,19 @@
-import { getRootDirname } from "@/terminal/shared/utils";
+import { getRootDirname } from "@/scripts/utils";
import consola from "consola";
import fs from "fs-extra";
import { join } from "pathe";
import pc from "picocolors";
import task from "tasuku";
-import { getCurrentDirname } from "~/utils";
-
// Please visit the Scripts section in README.md file to learn more about script
// Just run `pnpm reli:relicon` from the root folder to run the switcher script
// TODO: Implement Backup Logic
-const currentDirname = getCurrentDirname(import.meta.url);
-const projectRoot = getRootDirname(currentDirname, 5);
+const projectRoot = getRootDirname(import.meta.url, 5);
const vscodeDirectory = join(projectRoot, ".vscode");
const presetsDirectory = join(
vscodeDirectory,
- "../addons/reliverse/presets/vscode",
+ "../addons/scripts/reliverse/presets/vscode",
);
// Preset types (using `as const` to enable autocompletion)
diff --git a/addons/terminal/reliverse/presets/vscode/default/extensions.json b/addons/scripts/reliverse/presets/vscode/default/extensions.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/default/extensions.json
rename to addons/scripts/reliverse/presets/vscode/default/extensions.json
diff --git a/addons/terminal/reliverse/presets/vscode/default/launch.json b/addons/scripts/reliverse/presets/vscode/default/launch.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/default/launch.json
rename to addons/scripts/reliverse/presets/vscode/default/launch.json
diff --git a/addons/terminal/reliverse/presets/vscode/default/settings.json b/addons/scripts/reliverse/presets/vscode/default/settings.json
similarity index 69%
rename from addons/terminal/reliverse/presets/vscode/default/settings.json
rename to addons/scripts/reliverse/presets/vscode/default/settings.json
index f7de3967..7a1a7980 100644
--- a/addons/terminal/reliverse/presets/vscode/default/settings.json
+++ b/addons/scripts/reliverse/presets/vscode/default/settings.json
@@ -59,11 +59,15 @@
"tson"
],
"cSpell.words": ["callout", "combobox", "reliverse", "utapi"],
+ "chat.editor.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
"css.lint.important": "ignore",
"css.lint.unknownAtRules": "ignore",
+ "debug.console.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
"debug.toolBarLocation": "docked",
"diffEditor.experimental.showMoves": true,
"diffEditor.hideUnchangedRegions.enabled": true,
+ "editor.acceptSuggestionOnCommitCharacter": true,
+ "editor.acceptSuggestionOnEnter": "on",
"editor.bracketPairColorization.enabled": true,
"editor.bracketPairColorization.independentColorPoolPerBracketType": true,
"editor.codeActionsOnSave": {
@@ -75,12 +79,18 @@
"source.organizeImports.biome": "never",
"source.removeUnused": "never"
},
+ "editor.codeLensFontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
"editor.colorDecorators": true,
"editor.cursorBlinking": "phase",
"editor.cursorSmoothCaretAnimation": "on",
"editor.cursorStyle": "line",
"editor.defaultFormatter": "biomejs.biome",
"editor.detectIndentation": false,
+ "editor.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
+ "editor.fontLigatures": true,
+ "editor.fontSize": 14,
+ "editor.fontVariations": true,
+ "editor.fontWeight": "normal",
"editor.formatOnPaste": false,
"editor.formatOnSave": true,
"editor.formatOnSaveMode": "file",
@@ -88,6 +98,7 @@
"editor.guides.bracketPairs": true,
"editor.guides.indentation": false,
"editor.hideCursorInOverviewRuler": false,
+ "editor.inlayHints.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
"editor.inlineSuggest.enabled": true,
"editor.inlineSuggest.showToolbar": "always",
"editor.insertSpaces": true,
@@ -96,12 +107,22 @@
"editor.minimap.enabled": true,
"editor.minimap.renderCharacters": false,
"editor.multiCursorModifier": "alt",
+ "editor.parameterHints.enabled": true,
+ "editor.quickSuggestions": {
+ "comments": true,
+ "other": true,
+ "strings": true
+ },
+ "editor.quickSuggestionsDelay": 10,
"editor.rulers": [54, 74, 119],
"editor.smoothScrolling": true,
"editor.snippets.codeActions.enabled": true,
"editor.stickyScroll.enabled": true,
"editor.suggest.insertMode": "insert",
- "editor.suggestSelection": "recentlyUsed",
+ "editor.suggest.localityBonus": true,
+ "editor.suggestOnTriggerCharacters": true,
+ "editor.suggestSelection": "first",
+ "editor.tabCompletion": "off",
"editor.tabSize": 2,
"editor.tokenColorCustomizations": {
"comments": "#746f68"
@@ -137,6 +158,7 @@
"editor.unicodeHighlight.allowedLocales": {
"tr": true
},
+ "editor.wordBasedSuggestions": "matchingDocuments",
"editor.wordWrap": "on",
"eslint.codeActionsOnSave.mode": "problems",
"eslint.enable": true,
@@ -162,52 +184,48 @@
],
"eslint.rules.customizations": [
{
- "rule": "@typescript-eslint/consistent-type-imports",
- "severity": "off"
- },
- {
- "rule": "import-x/newline-after-import",
- "severity": "off"
+ "rule": "@stylistic/*",
+ "severity": "info"
},
{
- "rule": "readable-tailwind/*",
- "severity": "off"
+ "rule": "perfectionist/*",
+ "severity": "info"
},
{
- "rule": "import-x/no-duplicates",
- "severity": "off"
+ "rule": "@typescript-eslint/consistent-type-imports",
+ "severity": "info"
},
{
- "rule": "perfectionist/*",
- "severity": "off"
+ "rule": "import-x/newline-after-import",
+ "severity": "info"
},
{
- "rule": "@stylistic/*",
- "severity": "off"
+ "rule": "readable-tailwind/*",
+ "severity": "info"
},
{
"rule": "curly",
- "severity": "off"
+ "severity": "info"
},
{
"rule": "no-lonely-if",
- "severity": "off"
+ "severity": "info"
},
{
"rule": "@stylistic/linebreak-style",
- "severity": "off"
+ "severity": "info"
},
{
"rule": "jsonc/indent",
- "severity": "off"
+ "severity": "info"
},
{
"rule": "RULES-BELOW-ARE-NOT-AUTOFIXABLE",
- "severity": "default"
+ "severity": "warn"
},
{
"rule": "@typescript-eslint/no-unused-vars",
- "severity": "info"
+ "severity": "warn"
},
{
"rule": "@stylistic/no-tabs",
@@ -227,7 +245,7 @@
},
{
"rule": "@stylistic/max-len",
- "severity": "info"
+ "severity": "error"
},
{
"rule": "@stylistic/line-comment-position",
@@ -281,6 +299,7 @@
"git.confirmSync": false,
"git.enableSmartCommit": true,
"git.openRepositoryInParentFolders": "never",
+ "github.copilot.editor.enableAutoCompletions": true,
"html.format.indentInnerHtml": true,
"i18n-ally.displayLanguage": "en",
"i18n-ally.enabledFrameworks": ["general", "next-intl", "react"],
@@ -293,8 +312,20 @@
"faq.3.summary"
],
"i18n-ally.keystyle": "nested",
- "i18n-ally.localesPaths": ["src/messages"],
+ "i18n-ally.localesPaths": ["addons/messages/reliverse"],
"i18n-ally.sourceLanguage": "en",
+ "indentRainbow.colors": [
+ "rgba(58, 12, 163,0.15)",
+ "rgba(63, 55, 201,0.05)",
+ "rgba(63, 55, 201,0.025)",
+ "rgba(63, 55, 201,0.1)",
+ "rgba(63, 55, 201,0.15)",
+ "rgba(72, 12, 168,0.15)",
+ "rgba(86, 11, 173,0.15)",
+ "rgba(114, 9, 183, 0.15)",
+ "rgba(181, 23, 158,0.15)",
+ "rgba(247, 37, 133,0.15)"
+ ],
"javascript.format.semicolons": "insert",
"javascript.inlayHints.enumMemberValues.enabled": true,
"javascript.inlayHints.functionLikeReturnTypes.enabled": true,
@@ -304,6 +335,7 @@
"javascript.updateImportsOnFileMove.enabled": "always",
"json.validate.enable": false,
"markdown.extension.preview.autoShowPreviewToSide": false,
+ "markdown.preview.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
"markdown.preview.scrollEditorWithPreview": true,
"markdown.preview.scrollPreviewWithEditor": true,
"markdownlint.config": {
@@ -311,11 +343,13 @@
"MD041": false
},
"mdx.server.enable": true,
+ "notebook.output.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
"openMultipleFiles.exclude": [
"**/*.gif",
"**/*.jpeg",
"**/*.png",
"**/*.svg",
+ "**/*.txt",
"**/.git",
"**/.idea",
"**/.million",
@@ -341,11 +375,44 @@
"openMultipleFiles.ignore": [".gitignore"],
"openMultipleFiles.limit": 1000,
"outline.problems.badges": false,
+ "pop-icon-theme.files.associations": {
+ "*.astro": "astro",
+ "*.hbs": "handlebars",
+ "*.tson": "typescript",
+ "*.txt": "plaintext",
+ ".env.example": "properties",
+ "error.tsx": "console",
+ "layout.tsx": "mjml",
+ "loading.tsx": "dotjs",
+ "package.json": "json",
+ "page.tsx": "url"
+ },
+ "pop-icon-theme.hidesExplorerArrows": true,
+ "prettify-ts.viewNestedTypes": true,
"problems.defaultViewMode": "table",
"problems.showCurrentInStatus": true,
"problems.sortOrder": "position",
"ruff.lineLength": 88,
"ruff.nativeServer": true,
+ "scm.inputFontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
+ "search.exclude": {
+ "**/*.lock": true,
+ "**/.eslintcache": true,
+ "**/.idea": true,
+ "**/.next": true,
+ "**/.pnp.*": true,
+ "**/.venv": true,
+ "**/.yarn": true,
+ "**/build": true,
+ "**/dist": true,
+ "**/next-env.d.ts": true,
+ "**/package-lock.json": true,
+ "**/pnpm-lock.yaml": true,
+ "**/reset.d.ts": true,
+ "**/tsconfig.tsbuildinfo": true,
+ "**/yarn-error.log": true
+ },
+ "search.useIgnoreFiles": false,
"tailwindCSS.classAttributes": ["class", "className", "classNames"],
"tailwindCSS.experimental.classRegex": [
["(?:'|\"|`)([^']*)(?:'|\"|`)", "cx\\(([^)]*)\\)"],
@@ -360,7 +427,22 @@
"vscode",
"vscode-insiders"
],
+ "terminal.integrated.fontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
+ "terminal.integrated.fontSize": 12,
"terminal.integrated.smoothScrolling": true,
+ "totalTypeScript.hideAllTips": true,
+ "totalTypeScript.hideBasicTips": true,
+ "tsEssentialPlugins.arrayMethodsSnippets.enable": true,
+ "tsEssentialPlugins.fixSuggestionsSorting": true,
+ "tsEssentialPlugins.globalLibCompletions.action": "mark",
+ "tsEssentialPlugins.jsxEmmet.modernize": true,
+ "tsEssentialPlugins.outline.arraysTuplesNumberedItems": true,
+ "tsEssentialPlugins.patchOutline": true,
+ "tsEssentialPlugins.renameImportNameOfFileRename": true,
+ "tsEssentialPlugins.signatureHelp.excludeBlockScope": true,
+ "tsEssentialPlugins.skipNodeModulesReferences": true,
+ "tsEssentialPlugins.suggestions.localityBonus": true,
+ "tsEssentialPlugins.tupleHelpSignature": true,
"typescript.enablePromptUseWorkspaceTsdk": true,
"typescript.format.semicolons": "insert",
"typescript.inlayHints.enumMemberValues.enabled": true,
@@ -373,6 +455,7 @@
"typescript.preferences.includePackageJsonAutoImports": "on",
"typescript.referencesCodeLens.enabled": true,
"typescript.reportStyleChecksAsWarnings": true,
+ "typescript.tsdk": "node_modules\\typescript\\lib",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.validate.enable": true,
"window.autoDetectColorScheme": true,
@@ -398,9 +481,15 @@
"terminalCursor.background": "#868690",
"terminalCursor.foreground": "#43444D"
},
+ "workbench.colorTheme": "Houston",
"workbench.editor.enablePreview": false,
+ "workbench.iconTheme": "pop-icon-theme",
"workbench.layoutControl.enabled": true,
"workbench.panel.defaultLocation": "bottom",
+ "workbench.preferredDarkColorTheme": "Default Dark Modern",
+ "workbench.preferredHighContrastColorTheme": "GitHub Dark High Contrast",
+ "workbench.preferredHighContrastLightColorTheme": "GitHub Light High Contrast",
+ "workbench.preferredLightColorTheme": "Default Light Modern",
"workbench.sideBar.location": "left",
"workbench.statusBar.visible": true
}
diff --git a/addons/terminal/reliverse/presets/vscode/index.ts b/addons/scripts/reliverse/presets/vscode/index.ts
similarity index 84%
rename from addons/terminal/reliverse/presets/vscode/index.ts
rename to addons/scripts/reliverse/presets/vscode/index.ts
index 0a3e0cf5..e6bb06e9 100644
--- a/addons/terminal/reliverse/presets/vscode/index.ts
+++ b/addons/scripts/reliverse/presets/vscode/index.ts
@@ -1,5 +1,5 @@
-import { activateVSCodePreset } from "@/terminal/reliverse/presets/utils";
-import { defineAddon } from "@/terminal/shared/utils";
+import { activateVSCodePreset } from "@/scripts/reliverse/presets/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
diff --git a/addons/terminal/reliverse/presets/vscode/minimal/extensions.json b/addons/scripts/reliverse/presets/vscode/minimal/extensions.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/minimal/extensions.json
rename to addons/scripts/reliverse/presets/vscode/minimal/extensions.json
diff --git a/addons/terminal/reliverse/presets/vscode/minimal/launch.json b/addons/scripts/reliverse/presets/vscode/minimal/launch.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/minimal/launch.json
rename to addons/scripts/reliverse/presets/vscode/minimal/launch.json
diff --git a/addons/terminal/reliverse/presets/vscode/minimal/settings.json b/addons/scripts/reliverse/presets/vscode/minimal/settings.json
similarity index 93%
rename from addons/terminal/reliverse/presets/vscode/minimal/settings.json
rename to addons/scripts/reliverse/presets/vscode/minimal/settings.json
index a1f4387c..7a5e4032 100644
--- a/addons/terminal/reliverse/presets/vscode/minimal/settings.json
+++ b/addons/scripts/reliverse/presets/vscode/minimal/settings.json
@@ -180,7 +180,7 @@
},
{
"rule": "@typescript-eslint/no-unused-vars",
- "severity": "info"
+ "severity": "warn"
},
{
"rule": "@stylistic/no-tabs",
@@ -265,7 +265,7 @@
"faq.3.summary"
],
"i18n-ally.keystyle": "nested",
- "i18n-ally.localesPaths": ["src/messages"],
+ "i18n-ally.localesPaths": ["addons/messages/reliverse"],
"i18n-ally.sourceLanguage": "en",
"javascript.format.semicolons": "insert",
"javascript.inlayHints.enumMemberValues.enabled": true,
@@ -286,6 +286,24 @@
"problems.defaultViewMode": "table",
"problems.showCurrentInStatus": true,
"problems.sortOrder": "position",
+ "search.exclude": {
+ "**/*.lock": true,
+ "**/.eslintcache": true,
+ "**/.idea": true,
+ "**/.next": true,
+ "**/.pnp.*": true,
+ "**/.venv": true,
+ "**/.yarn": true,
+ "**/build": true,
+ "**/dist": true,
+ "**/next-env.d.ts": true,
+ "**/package-lock.json": true,
+ "**/pnpm-lock.yaml": true,
+ "**/reset.d.ts": true,
+ "**/tsconfig.tsbuildinfo": true,
+ "**/yarn-error.log": true
+ },
+ "search.useIgnoreFiles": false,
"tailwindCSS.classAttributes": ["class", "className", "classNames"],
"tailwindCSS.experimental.classRegex": [
["[\"'`]([^\"'`]*).*?[\"'`]", "cva\\(([^)]*)\\)"],
@@ -311,6 +329,7 @@
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.preferences.includePackageJsonAutoImports": "on",
"typescript.referencesCodeLens.enabled": true,
+ "typescript.tsdk": "node_modules\\typescript\\lib",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.validate.enable": true,
"window.commandCenter": true,
diff --git a/addons/terminal/reliverse/presets/vscode/nothing/extensions.json b/addons/scripts/reliverse/presets/vscode/nothing/extensions.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/nothing/extensions.json
rename to addons/scripts/reliverse/presets/vscode/nothing/extensions.json
diff --git a/addons/terminal/reliverse/presets/vscode/nothing/launch.json b/addons/scripts/reliverse/presets/vscode/nothing/launch.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/nothing/launch.json
rename to addons/scripts/reliverse/presets/vscode/nothing/launch.json
diff --git a/addons/terminal/reliverse/presets/vscode/nothing/settings.json b/addons/scripts/reliverse/presets/vscode/nothing/settings.json
similarity index 60%
rename from addons/terminal/reliverse/presets/vscode/nothing/settings.json
rename to addons/scripts/reliverse/presets/vscode/nothing/settings.json
index a86a5ec3..fa513eb7 100644
--- a/addons/terminal/reliverse/presets/vscode/nothing/settings.json
+++ b/addons/scripts/reliverse/presets/vscode/nothing/settings.json
@@ -10,6 +10,8 @@
"faq.3.summary"
],
"i18n-ally.keystyle": "nested",
- "i18n-ally.localesPaths": ["src/messages"],
- "i18n-ally.sourceLanguage": "en"
+ "i18n-ally.localesPaths": ["addons/messages/reliverse"],
+ "i18n-ally.sourceLanguage": "en",
+ "typescript.enablePromptUseWorkspaceTsdk": true,
+ "typescript.tsdk": "node_modules\\typescript\\lib"
}
diff --git a/addons/terminal/reliverse/presets/vscode/ultimate/extensions.json b/addons/scripts/reliverse/presets/vscode/ultimate/extensions.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/ultimate/extensions.json
rename to addons/scripts/reliverse/presets/vscode/ultimate/extensions.json
diff --git a/addons/terminal/reliverse/presets/vscode/ultimate/launch.json b/addons/scripts/reliverse/presets/vscode/ultimate/launch.json
similarity index 100%
rename from addons/terminal/reliverse/presets/vscode/ultimate/launch.json
rename to addons/scripts/reliverse/presets/vscode/ultimate/launch.json
diff --git a/addons/terminal/reliverse/presets/vscode/ultimate/settings.json b/addons/scripts/reliverse/presets/vscode/ultimate/settings.json
similarity index 92%
rename from addons/terminal/reliverse/presets/vscode/ultimate/settings.json
rename to addons/scripts/reliverse/presets/vscode/ultimate/settings.json
index f12451af..649a60b9 100644
--- a/addons/terminal/reliverse/presets/vscode/ultimate/settings.json
+++ b/addons/scripts/reliverse/presets/vscode/ultimate/settings.json
@@ -66,6 +66,8 @@
"debug.toolBarLocation": "docked",
"diffEditor.experimental.showMoves": true,
"diffEditor.hideUnchangedRegions.enabled": true,
+ "editor.acceptSuggestionOnCommitCharacter": true,
+ "editor.acceptSuggestionOnEnter": "on",
"editor.bracketPairColorization.enabled": true,
"editor.bracketPairColorization.independentColorPoolPerBracketType": true,
"editor.codeActionsOnSave": {
@@ -105,12 +107,22 @@
"editor.minimap.enabled": true,
"editor.minimap.renderCharacters": false,
"editor.multiCursorModifier": "alt",
+ "editor.parameterHints.enabled": true,
+ "editor.quickSuggestions": {
+ "comments": true,
+ "other": true,
+ "strings": true
+ },
+ "editor.quickSuggestionsDelay": 10,
"editor.rulers": [54, 74, 119],
"editor.smoothScrolling": true,
"editor.snippets.codeActions.enabled": true,
"editor.stickyScroll.enabled": true,
"editor.suggest.insertMode": "insert",
- "editor.suggestSelection": "recentlyUsed",
+ "editor.suggest.localityBonus": true,
+ "editor.suggestOnTriggerCharacters": true,
+ "editor.suggestSelection": "first",
+ "editor.tabCompletion": "off",
"editor.tabSize": 2,
"editor.tokenColorCustomizations": {
"comments": "#746f68"
@@ -146,6 +158,7 @@
"editor.unicodeHighlight.allowedLocales": {
"tr": true
},
+ "editor.wordBasedSuggestions": "matchingDocuments",
"editor.wordWrap": "on",
"eslint.codeActionsOnSave.mode": "problems",
"eslint.enable": true,
@@ -216,7 +229,7 @@
},
{
"rule": "@typescript-eslint/no-unused-vars",
- "severity": "info"
+ "severity": "warn"
},
{
"rule": "@stylistic/no-tabs",
@@ -303,7 +316,7 @@
"faq.3.summary"
],
"i18n-ally.keystyle": "nested",
- "i18n-ally.localesPaths": ["src/messages"],
+ "i18n-ally.localesPaths": ["addons/messages/reliverse"],
"i18n-ally.sourceLanguage": "en",
"indentRainbow.colors": [
"rgba(58, 12, 163,0.15)",
@@ -385,6 +398,24 @@
"ruff.lineLength": 88,
"ruff.nativeServer": true,
"scm.inputFontFamily": "'JetBrains Mono', 'Geist Mono', 'Monaspace Argon Var', Menlo, Monaco, 'Courier New', monospace",
+ "search.exclude": {
+ "**/*.lock": true,
+ "**/.eslintcache": true,
+ "**/.idea": true,
+ "**/.next": true,
+ "**/.pnp.*": true,
+ "**/.venv": true,
+ "**/.yarn": true,
+ "**/build": true,
+ "**/dist": true,
+ "**/next-env.d.ts": true,
+ "**/package-lock.json": true,
+ "**/pnpm-lock.yaml": true,
+ "**/reset.d.ts": true,
+ "**/tsconfig.tsbuildinfo": true,
+ "**/yarn-error.log": true
+ },
+ "search.useIgnoreFiles": false,
"tailwindCSS.classAttributes": ["class", "className", "classNames"],
"tailwindCSS.experimental.classRegex": [
["(?:'|\"|`)([^']*)(?:'|\"|`)", "cx\\(([^)]*)\\)"],
@@ -427,6 +458,7 @@
"typescript.preferences.includePackageJsonAutoImports": "on",
"typescript.referencesCodeLens.enabled": true,
"typescript.reportStyleChecksAsWarnings": true,
+ "typescript.tsdk": "node_modules\\typescript\\lib",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.validate.enable": true,
"window.autoDetectColorScheme": true,
diff --git a/addons/terminal/reliverse/quotes/index.ts b/addons/scripts/reliverse/quotes/index.ts
similarity index 86%
rename from addons/terminal/reliverse/quotes/index.ts
rename to addons/scripts/reliverse/quotes/index.ts
index f6c11706..135a81a4 100644
--- a/addons/terminal/reliverse/quotes/index.ts
+++ b/addons/scripts/reliverse/quotes/index.ts
@@ -1,4 +1,4 @@
-import type { TLevel } from "@/terminal/reliverse/quotes/types";
+import type { TLevel } from "@/scripts/reliverse/quotes/types";
import {
getRandomElement,
@@ -7,8 +7,8 @@ import {
personalQuotes,
tsLearningQuotes,
wiseQuotes,
-} from "@/terminal/reliverse/quotes/lines";
-import { advancedTsLearningQuotes } from "@/terminal/reliverse/quotes/more";
+} from "@/scripts/reliverse/quotes/lines";
+import { advancedTsLearningQuotes } from "@/scripts/reliverse/quotes/more";
import consola from "consola";
import { ofetch } from "ofetch";
// @ts-expect-error missing types
@@ -114,15 +114,15 @@ async function fetchProgrammingQuote(): Promise {
return `${quote.quote} © ${quote.author}`;
} catch (error) {
if (debugEnabled) {
- let errorMessage = "An unknown error occurred in @reliverse/quotes";
+ let getErrorMessage = "An unknown error occurred in @reliverse/quotes";
if (error instanceof Error) {
- errorMessage = error.message;
+ getErrorMessage = error.message;
} else if (isString(error)) {
- errorMessage = error;
+ getErrorMessage = error;
}
- consola.error("Failed to fetch programming quote:", errorMessage);
+ consola.error("Failed to fetch programming quote:", getErrorMessage);
}
// Fallback to display a random quote again
diff --git a/addons/terminal/reliverse/quotes/lines.ts b/addons/scripts/reliverse/quotes/lines.ts
similarity index 99%
rename from addons/terminal/reliverse/quotes/lines.ts
rename to addons/scripts/reliverse/quotes/lines.ts
index fc3e0393..b5fe8a58 100644
--- a/addons/terminal/reliverse/quotes/lines.ts
+++ b/addons/scripts/reliverse/quotes/lines.ts
@@ -1,4 +1,4 @@
-import type { TLevel } from "@/terminal/reliverse/quotes/types";
+import type { TLevel } from "@/scripts/reliverse/quotes/types";
import { config } from "@reliverse/core";
diff --git a/addons/terminal/reliverse/quotes/more.ts b/addons/scripts/reliverse/quotes/more.ts
similarity index 100%
rename from addons/terminal/reliverse/quotes/more.ts
rename to addons/scripts/reliverse/quotes/more.ts
diff --git a/addons/terminal/reliverse/quotes/types.ts b/addons/scripts/reliverse/quotes/types.ts
similarity index 100%
rename from addons/terminal/reliverse/quotes/types.ts
rename to addons/scripts/reliverse/quotes/types.ts
diff --git a/addons/terminal/reliverse/relicon/crud/index.ts b/addons/scripts/reliverse/relicon/crud/index.ts
similarity index 97%
rename from addons/terminal/reliverse/relicon/crud/index.ts
rename to addons/scripts/reliverse/relicon/crud/index.ts
index 14592072..bf7916b2 100644
--- a/addons/terminal/reliverse/relicon/crud/index.ts
+++ b/addons/scripts/reliverse/relicon/crud/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
diff --git a/addons/terminal/reliverse/relicon/crud/prompts.ts b/addons/scripts/reliverse/relicon/crud/prompts.ts
similarity index 100%
rename from addons/terminal/reliverse/relicon/crud/prompts.ts
rename to addons/scripts/reliverse/relicon/crud/prompts.ts
diff --git a/addons/terminal/reliverse/relicon/index.ts b/addons/scripts/reliverse/relicon/index.ts
similarity index 94%
rename from addons/terminal/reliverse/relicon/index.ts
rename to addons/scripts/reliverse/relicon/index.ts
index d72ad9b8..934691e6 100644
--- a/addons/terminal/reliverse/relicon/index.ts
+++ b/addons/scripts/reliverse/relicon/index.ts
@@ -1,5 +1,5 @@
-import { patchGitignore } from "@/terminal/reliverse/relimter/core/tasks/patch-gitignore-file";
-import { sortArgs } from "@/terminal/shared/utils";
+import { patchGitignore } from "@/scripts/reliverse/relimter/core/tasks/patch-gitignore-file";
+import { sortArgs } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/terminal/reliverse/relicon/setup/configs/.putout.recommended.json b/addons/scripts/reliverse/relicon/setup/configs/.putout.recommended.json
similarity index 98%
rename from addons/terminal/reliverse/relicon/setup/configs/.putout.recommended.json
rename to addons/scripts/reliverse/relicon/setup/configs/.putout.recommended.json
index 61461d84..557ec458 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/.putout.recommended.json
+++ b/addons/scripts/reliverse/relicon/setup/configs/.putout.recommended.json
@@ -167,12 +167,12 @@
"addons/.output",
"addons/browser/reliverse/tools/components/ReliverseToolbar.tsx",
"addons/cluster/reliverse/ui/cluster-readme.tsx",
- "addons/reliverse/academy/fileHandler.ts",
- "addons/reliverse/academy/leaders.ts",
- "addons/reliverse/relicon/setup/prompt/appts.ts",
- "addons/reliverse/relicon/setup/prompt/canary/json.ts",
- "addons/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/reliverse/relimter/putout/tasks/index.ts",
+ "addons/scripts/reliverse/academy/fileHandler.ts",
+ "addons/scripts/reliverse/academy/leaders.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/appts.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/canary/json.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/relimter/putout/tasks/index.ts",
"src/app/[locale]/blog/new/**/*.tsx",
"src/components/Common/loading-button.tsx",
"src/components/Common/password-input.tsx",
diff --git a/addons/terminal/reliverse/relicon/setup/configs/.putout.rules-disabled.json b/addons/scripts/reliverse/relicon/setup/configs/.putout.rules-disabled.json
similarity index 98%
rename from addons/terminal/reliverse/relicon/setup/configs/.putout.rules-disabled.json
rename to addons/scripts/reliverse/relicon/setup/configs/.putout.rules-disabled.json
index 51d479ae..fa8f6e06 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/.putout.rules-disabled.json
+++ b/addons/scripts/reliverse/relicon/setup/configs/.putout.rules-disabled.json
@@ -167,12 +167,12 @@
"addons/.output",
"addons/browser/reliverse/tools/components/ReliverseToolbar.tsx",
"addons/cluster/reliverse/ui/cluster-readme.tsx",
- "addons/reliverse/academy/fileHandler.ts",
- "addons/reliverse/academy/leaders.ts",
- "addons/reliverse/relicon/setup/prompt/appts.ts",
- "addons/reliverse/relicon/setup/prompt/canary/json.ts",
- "addons/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/reliverse/relimter/putout/tasks/index.ts",
+ "addons/scripts/reliverse/academy/fileHandler.ts",
+ "addons/scripts/reliverse/academy/leaders.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/appts.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/canary/json.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/relimter/putout/tasks/index.ts",
"src/app/[locale]/blog/new/**/*.tsx",
"src/components/Common/loading-button.tsx",
"src/components/Common/password-input.tsx",
diff --git a/addons/terminal/reliverse/relicon/setup/configs/biome.recommended.json b/addons/scripts/reliverse/relicon/setup/configs/biome.recommended.json
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/configs/biome.recommended.json
rename to addons/scripts/reliverse/relicon/setup/configs/biome.recommended.json
diff --git a/addons/terminal/reliverse/relicon/setup/configs/biome.rules-disabled.json b/addons/scripts/reliverse/relicon/setup/configs/biome.rules-disabled.json
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/configs/biome.rules-disabled.json
rename to addons/scripts/reliverse/relicon/setup/configs/biome.rules-disabled.json
diff --git a/addons/terminal/reliverse/relicon/setup/configs/env.recommended.ts b/addons/scripts/reliverse/relicon/setup/configs/env.recommended.ts
similarity index 97%
rename from addons/terminal/reliverse/relicon/setup/configs/env.recommended.ts
rename to addons/scripts/reliverse/relicon/setup/configs/env.recommended.ts
index b3492f3d..dd037e4e 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/env.recommended.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/env.recommended.ts
@@ -27,7 +27,7 @@ const _knownVariables = {
"AUTH_SECRET",
"CLERK_SECRET_KEY",
"DATABASE_URL",
- "DEV_DEMO_NOTES",
+ "DEMO_NOTES_ENABLED",
"DISCORD_CLIENT_ID",
"DISCORD_CLIENT_SECRET",
"DISCORD_WEBHOOK_URL",
@@ -57,7 +57,7 @@ const _knownVariables = {
],
};
-// @see addons/reliverse/relimter/core/env
+// @see addons/scripts/reliverse/relimter/core/env
const _recommendedEnvVariables = {
authjs: [
"AUTH_DISCORD_SECRET",
@@ -82,7 +82,7 @@ const _env = createEnv({
//
client: {
NEXT_PUBLIC_APP_URL: z.preprocess(
- (str) => process.env.VERCEL_URL ?? str,
+ (str) => process.env.VERCEL_URL || str,
process.env.VERCEL ? z.string() : z.string().url(),
),
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: z.string().optional(),
@@ -124,7 +124,7 @@ const _env = createEnv({
AUTH_SECRET: process.env.AUTH_SECRET,
CLERK_SECRET_KEY: process.env.CLERK_SECRET_KEY,
DATABASE_URL: process.env.DATABASE_URL,
- DEV_DEMO_NOTES: process.env.DEV_DEMO_NOTES,
+ DEMO_NOTES_ENABLED: process.env.DEMO_NOTES_ENABLED,
DISCORD_CLIENT_ID: process.env.DISCORD_CLIENT_ID,
DISCORD_CLIENT_SECRET: process.env.DISCORD_CLIENT_SECRET,
DISCORD_WEBHOOK_URL: process.env.DISCORD_WEBHOOK_URL,
@@ -174,7 +174,7 @@ const _env = createEnv({
: z.string().optional(),
CLERK_SECRET_KEY: z.string().optional(),
DATABASE_URL: z.string().url(),
- DEV_DEMO_NOTES: z.string().optional(),
+ DEMO_NOTES_ENABLED: z.string().optional(),
DISCORD_CLIENT_ID: z.string(),
DISCORD_CLIENT_SECRET: z.string(),
DISCORD_WEBHOOK_URL: z.string().optional(),
diff --git a/addons/terminal/reliverse/relicon/setup/configs/env.rules-disabled.ts b/addons/scripts/reliverse/relicon/setup/configs/env.rules-disabled.ts
similarity index 97%
rename from addons/terminal/reliverse/relicon/setup/configs/env.rules-disabled.ts
rename to addons/scripts/reliverse/relicon/setup/configs/env.rules-disabled.ts
index c90b8302..4afb9186 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/env.rules-disabled.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/env.rules-disabled.ts
@@ -27,7 +27,7 @@ const _knownVariables = {
"AUTH_SECRET",
"CLERK_SECRET_KEY",
"DATABASE_URL",
- "DEV_DEMO_NOTES",
+ "DEMO_NOTES_ENABLED",
"DISCORD_CLIENT_ID",
"DISCORD_CLIENT_SECRET",
"DISCORD_WEBHOOK_URL",
@@ -57,7 +57,7 @@ const _knownVariables = {
],
};
-// @see addons/reliverse/relimter/core/env
+// @see addons/scripts/reliverse/relimter/core/env
const _recommendedEnvVariables = {
authjs: [
"AUTH_DISCORD_SECRET",
@@ -121,7 +121,7 @@ const _env = createEnv({
AUTH_SECRET: process.env.AUTH_SECRET,
CLERK_SECRET_KEY: process.env.CLERK_SECRET_KEY,
DATABASE_URL: process.env.DATABASE_URL,
- DEV_DEMO_NOTES: process.env.DEV_DEMO_NOTES,
+ DEMO_NOTES_ENABLED: process.env.DEMO_NOTES_ENABLED,
DISCORD_CLIENT_ID: process.env.DISCORD_CLIENT_ID,
DISCORD_CLIENT_SECRET: process.env.DISCORD_CLIENT_SECRET,
DISCORD_WEBHOOK_URL: process.env.DISCORD_WEBHOOK_URL,
@@ -168,7 +168,7 @@ const _env = createEnv({
AUTH_SECRET: z.string().optional(),
CLERK_SECRET_KEY: z.string().optional(),
DATABASE_URL: z.string().url().optional(),
- DEV_DEMO_NOTES: z.string().optional(),
+ DEMO_NOTES_ENABLED: z.string().optional(),
DISCORD_CLIENT_ID: z.string().optional(),
DISCORD_CLIENT_SECRET: z.string().optional(),
DISCORD_WEBHOOK_URL: z.string().optional(),
diff --git a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.medium.ts b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.medium.ts
similarity index 93%
rename from addons/terminal/reliverse/relicon/setup/configs/eslint.config.medium.ts
rename to addons/scripts/reliverse/relicon/setup/configs/eslint.config.medium.ts
index ebf5530a..85a4a966 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.medium.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.medium.ts
@@ -6,7 +6,7 @@ import tseslint from "typescript-eslint";
// The current Relivator 1.2.6 version comes with many predefined ESLint configs.
// Run the `pnpm reli:setup` to easily switch between them and set up other tooling.
-// Current: addons\terminal\reliverse\relicon\setup\configs\eslint.config.medium.ts
+// Current: addons\scripts\reliverse\relicon\setup\configs\eslint.config.medium.ts
//
const stylisticConfig = stylistic.configs.customize({
indent: 2,
@@ -63,7 +63,7 @@ export default tseslint.config(
},
project: true,
tsconfigRootDir: import.meta.dirname,
- warnOnUnsupportedTypeScriptVersion: true,
+ warnOnUnsupportedTypeScriptVersion: false,
},
},
linterOptions: {
@@ -240,7 +240,7 @@ export default tseslint.config(
applyDefaultIgnorePatterns: true,
beforeBlockComment: true,
beforeLineComment: true,
- ignorePattern: "@type\\s.+|@ts-expect-error",
+ ignorePattern: "@type\\s.+|@ts-expect-error|biome-ignore",
},
],
@@ -871,9 +871,14 @@ export default tseslint.config(
},
],
"no-restricted-imports": [
- "error",
+ "warn",
{
paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
{
name: "process",
importNames: ["env"],
@@ -895,51 +900,8 @@ export default tseslint.config(
},
{
name: "fs",
- importNames: [
- "copy",
- "emptyDir",
- "ensureFile",
- "ensureDir",
- "ensureLink",
- "ensureSymlink",
- "mkdirp",
- "mkdirs",
- "move",
- "outputFile",
- "outputJson",
- "pathExists",
- "readJson",
- "remove",
- "writeJson",
- "copySync",
- "emptyDirSync",
- "ensureFileSync",
- "ensureDirSync",
- "ensureLinkSync",
- "ensureSymlinkSync",
- "mkdirpSync",
- "mkdirsSync",
- "moveSync",
- "outputFileSync",
- "outputJsonSync",
- "pathExistsSync",
- "readJsonSync",
- "removeSync",
- "writeJsonSync",
- ],
message:
- "Please use fs-extra instead (https://npmjs.com/package/fs-extra)",
- },
- {
- name: "fs-extra",
- importNames: [
- "readdirSync",
- "readFileSync",
- "realpathSync",
- "existsSync",
- ],
- message:
- "Looks like fs-extra does not provide this module, use import from regular fs instead",
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
},
{
name: "path",
@@ -1273,14 +1235,50 @@ export default tseslint.config(
files: ["{src,addons}/**/*.{ts,tsx}", "next.config.js"],
rules: {
"no-restricted-imports": [
- "error",
+ "warn",
{
patterns: [
{
message:
// eslint-disable-next-line @stylistic/max-len
- "\n\n⛔ Importing from '@/terminal' is not allowed in this file. The import from 'addons/terminal' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
- regex: "^@/terminal",
+ "\n\n⛔ Importing from '@/scripts' is not allowed in this file. The import from 'addons/scripts' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
+ regex: "^@/scripts",
+ },
+ ],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
},
],
},
@@ -1289,7 +1287,7 @@ export default tseslint.config(
},
{
name: "@reliverse/eslint-config/etc",
- files: ["addons/terminal/**/*.{ts,tsx}"],
+ files: ["addons/scripts/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
"error",
diff --git a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.minimal.ts b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.minimal.ts
similarity index 85%
rename from addons/terminal/reliverse/relicon/setup/configs/eslint.config.minimal.ts
rename to addons/scripts/reliverse/relicon/setup/configs/eslint.config.minimal.ts
index 49d2b6c2..0721e5b5 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.minimal.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.minimal.ts
@@ -6,7 +6,7 @@ import tseslint from "typescript-eslint";
// The current Relivator 1.2.6 version comes with many predefined ESLint configs.
// Run the `pnpm reli:setup` to easily switch between them and set up other tooling.
-// Current: addons\terminal\reliverse\relicon\setup\configs\eslint.config.minimal.ts
+// Current: addons\scripts\reliverse\relicon\setup\configs\eslint.config.minimal.ts
//
const stylisticConfig = stylistic.configs.customize({
indent: 2,
@@ -63,7 +63,7 @@ export default tseslint.config(
},
project: true,
tsconfigRootDir: import.meta.dirname,
- warnOnUnsupportedTypeScriptVersion: true,
+ warnOnUnsupportedTypeScriptVersion: false,
},
},
linterOptions: {
@@ -102,8 +102,8 @@ export default tseslint.config(
{
message:
// eslint-disable-next-line @stylistic/max-len
- "\n\n⛔ Importing from '@/terminal' is not allowed in this file. The import from 'addons/terminal' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
- regex: "^@/terminal",
+ "\n\n⛔ Importing from '@/scripts' is not allowed in this file. The import from 'addons/scripts' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
+ regex: "^@/scripts",
},
],
},
@@ -112,7 +112,7 @@ export default tseslint.config(
},
{
name: "@reliverse/eslint-config/etc",
- files: ["addons/terminal/**/*.{ts,tsx}"],
+ files: ["addons/scripts/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
"error",
diff --git a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts
similarity index 94%
rename from addons/terminal/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts
rename to addons/scripts/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts
index 5d39d388..98bc8607 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts
@@ -46,7 +46,7 @@ import tseslint from "typescript-eslint";
// The current Relivator 1.2.6 version comes with many predefined ESLint configs.
// Run the `pnpm reli:setup` to easily switch between them and set up other tooling.
-// Current: addons\terminal\reliverse\relicon\setup\configs\eslint.config.rules-disabled.ts
+// Current: addons\scripts\reliverse\relicon\setup\configs\eslint.config.rules-disabled.ts
//
const stylisticConfig = stylistic.configs.customize({
indent: 2,
@@ -112,7 +112,7 @@ export default tseslint.config(
},
project: true,
tsconfigRootDir: import.meta.dirname,
- warnOnUnsupportedTypeScriptVersion: true,
+ warnOnUnsupportedTypeScriptVersion: false,
},
},
linterOptions: {
@@ -331,7 +331,7 @@ export default tseslint.config(
applyDefaultIgnorePatterns: true,
beforeBlockComment: true,
beforeLineComment: true,
- ignorePattern: "@type\\s.+|@ts-expect-error",
+ ignorePattern: "@type\\s.+|@ts-expect-error|biome-ignore",
},
],
@@ -1095,6 +1095,11 @@ export default tseslint.config(
"off",
{
paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
{
name: "process",
importNames: ["env"],
@@ -1116,51 +1121,8 @@ export default tseslint.config(
},
{
name: "fs",
- importNames: [
- "copy",
- "emptyDir",
- "ensureFile",
- "ensureDir",
- "ensureLink",
- "ensureSymlink",
- "mkdirp",
- "mkdirs",
- "move",
- "outputFile",
- "outputJson",
- "pathExists",
- "readJson",
- "remove",
- "writeJson",
- "copySync",
- "emptyDirSync",
- "ensureFileSync",
- "ensureDirSync",
- "ensureLinkSync",
- "ensureSymlinkSync",
- "mkdirpSync",
- "mkdirsSync",
- "moveSync",
- "outputFileSync",
- "outputJsonSync",
- "pathExistsSync",
- "readJsonSync",
- "removeSync",
- "writeJsonSync",
- ],
message:
- "Please use fs-extra instead (https://npmjs.com/package/fs-extra)",
- },
- {
- name: "fs-extra",
- importNames: [
- "readdirSync",
- "readFileSync",
- "realpathSync",
- "existsSync",
- ],
- message:
- "Looks like fs-extra does not provide this module, use import from regular fs instead",
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
},
{
name: "path",
@@ -1821,8 +1783,44 @@ export default tseslint.config(
{
message:
// eslint-disable-next-line @stylistic/max-len
- "\n\n⛔ Importing from '@/terminal' is not allowed in this file. The import from 'addons/terminal' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
- regex: "^@/terminal",
+ "\n\n⛔ Importing from '@/scripts' is not allowed in this file. The import from 'addons/scripts' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
+ regex: "^@/scripts",
+ },
+ ],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
},
],
},
@@ -1831,12 +1829,48 @@ export default tseslint.config(
},
{
name: "@reliverse/eslint-config/etc",
- files: ["addons/terminal/**/*.{ts,tsx}"],
+ files: ["addons/scripts/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
"off",
{
patterns: [],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
+ },
+ ],
},
],
},
@@ -2352,7 +2386,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-academy",
// @reliverse/academy
- files: ["addons/reliverse/academy/**/*.json"],
+ files: ["addons/scripts/reliverse/academy/**/*.json"],
rules: {
"jsonc/sort-array-values": "off",
"jsonc/sort-keys": "off",
@@ -2384,7 +2418,7 @@ export default tseslint.config(
{
// @see https://github.com/coderaiser/putout#readme
name: "@reliverse/config-eslint/addons-putout",
- files: ["addons/terminal/reliverse/academy/**/*.json"],
+ files: ["addons/scripts/reliverse/academy/**/*.json"],
rules: {
"jsonc/sort-array-values": "off",
"jsonc/sort-keys": "off",
@@ -2412,7 +2446,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-remotion",
// @see https://remotion.dev/docs/contributing/formatting#eslint
- files: ["addons/reliverse/remotion/*.{ts,tsx}"],
+ files: ["addons/scripts/reliverse/remotion/*.{ts,tsx}"],
rules: {
"no-relative-import-paths/no-relative-import-paths": "off",
},
@@ -2434,7 +2468,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-no-comments",
// @see https://npmjs.com/package/eslint-plugin-no-comments
- files: ["addons/reliverse/template/index.ts"],
+ files: ["addons/scripts/reliverse/template/index.ts"],
plugins: {
"no-comments": noComments,
},
diff --git a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.ultimate.ts b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.ultimate.ts
similarity index 94%
rename from addons/terminal/reliverse/relicon/setup/configs/eslint.config.ultimate.ts
rename to addons/scripts/reliverse/relicon/setup/configs/eslint.config.ultimate.ts
index 71504496..9dcbfc16 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/eslint.config.ultimate.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/eslint.config.ultimate.ts
@@ -46,7 +46,7 @@ import tseslint from "typescript-eslint";
// The current Relivator 1.2.6 version comes with many predefined ESLint configs.
// Run the `pnpm reli:setup` to easily switch between them and set up other tooling.
-// Current: addons\terminal\reliverse\relicon\setup\configs\eslint.config.ultimate.ts
+// Current: addons\scripts\reliverse\relicon\setup\configs\eslint.config.ultimate.ts
//
const stylisticConfig = stylistic.configs.customize({
indent: 2,
@@ -112,7 +112,7 @@ export default tseslint.config(
},
project: true,
tsconfigRootDir: import.meta.dirname,
- warnOnUnsupportedTypeScriptVersion: true,
+ warnOnUnsupportedTypeScriptVersion: false,
},
},
linterOptions: {
@@ -331,7 +331,7 @@ export default tseslint.config(
applyDefaultIgnorePatterns: true,
beforeBlockComment: true,
beforeLineComment: true,
- ignorePattern: "@type\\s.+|@ts-expect-error",
+ ignorePattern: "@type\\s.+|@ts-expect-error|biome-ignore",
},
],
@@ -1092,9 +1092,14 @@ export default tseslint.config(
},
],
"no-restricted-imports": [
- "error",
+ "warn",
{
paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
{
name: "process",
importNames: ["env"],
@@ -1116,51 +1121,8 @@ export default tseslint.config(
},
{
name: "fs",
- importNames: [
- "copy",
- "emptyDir",
- "ensureFile",
- "ensureDir",
- "ensureLink",
- "ensureSymlink",
- "mkdirp",
- "mkdirs",
- "move",
- "outputFile",
- "outputJson",
- "pathExists",
- "readJson",
- "remove",
- "writeJson",
- "copySync",
- "emptyDirSync",
- "ensureFileSync",
- "ensureDirSync",
- "ensureLinkSync",
- "ensureSymlinkSync",
- "mkdirpSync",
- "mkdirsSync",
- "moveSync",
- "outputFileSync",
- "outputJsonSync",
- "pathExistsSync",
- "readJsonSync",
- "removeSync",
- "writeJsonSync",
- ],
message:
- "Please use fs-extra instead (https://npmjs.com/package/fs-extra)",
- },
- {
- name: "fs-extra",
- importNames: [
- "readdirSync",
- "readFileSync",
- "realpathSync",
- "existsSync",
- ],
- message:
- "Looks like fs-extra does not provide this module, use import from regular fs instead",
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
},
{
name: "path",
@@ -1815,14 +1777,50 @@ export default tseslint.config(
files: ["{src,addons}/**/*.{ts,tsx}", "next.config.js"],
rules: {
"no-restricted-imports": [
- "error",
+ "warn",
{
patterns: [
{
message:
// eslint-disable-next-line @stylistic/max-len
- "\n\n⛔ Importing from '@/terminal' is not allowed in this file. The import from 'addons/terminal' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
- regex: "^@/terminal",
+ "\n\n⛔ Importing from '@/scripts' is not allowed in this file. The import from 'addons/scripts' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
+ regex: "^@/scripts",
+ },
+ ],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
},
],
},
@@ -1831,12 +1829,48 @@ export default tseslint.config(
},
{
name: "@reliverse/eslint-config/etc",
- files: ["addons/terminal/**/*.{ts,tsx}"],
+ files: ["addons/scripts/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
- "error",
+ "warn",
{
patterns: [],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
+ },
+ ],
},
],
},
@@ -2352,7 +2386,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-academy",
// @reliverse/academy
- files: ["addons/reliverse/academy/**/*.json"],
+ files: ["addons/scripts/reliverse/academy/**/*.json"],
rules: {
"jsonc/sort-array-values": "off",
"jsonc/sort-keys": "off",
@@ -2384,7 +2418,7 @@ export default tseslint.config(
{
// @see https://github.com/coderaiser/putout#readme
name: "@reliverse/config-eslint/addons-putout",
- files: ["addons/terminal/reliverse/academy/**/*.json"],
+ files: ["addons/scripts/reliverse/academy/**/*.json"],
rules: {
"jsonc/sort-array-values": "off",
"jsonc/sort-keys": "off",
@@ -2412,7 +2446,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-remotion",
// @see https://remotion.dev/docs/contributing/formatting#eslint
- files: ["addons/reliverse/remotion/*.{ts,tsx}"],
+ files: ["addons/scripts/reliverse/remotion/*.{ts,tsx}"],
rules: {
"no-relative-import-paths/no-relative-import-paths": "off",
},
@@ -2434,7 +2468,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-no-comments",
// @see https://npmjs.com/package/eslint-plugin-no-comments
- files: ["addons/reliverse/template/index.ts"],
+ files: ["addons/scripts/reliverse/template/index.ts"],
plugins: {
"no-comments": noComments,
},
diff --git a/addons/terminal/reliverse/relicon/setup/configs/knip.recommended.json b/addons/scripts/reliverse/relicon/setup/configs/knip.recommended.json
similarity index 63%
rename from addons/terminal/reliverse/relicon/setup/configs/knip.recommended.json
rename to addons/scripts/reliverse/relicon/setup/configs/knip.recommended.json
index 327b1fc8..32f966b1 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/knip.recommended.json
+++ b/addons/scripts/reliverse/relicon/setup/configs/knip.recommended.json
@@ -2,12 +2,43 @@
"$schema": "https://unpkg.com/knip@5/schema.json",
"entry": [
"addons/**/{index,types,tasks,prompts,canary,utils,comments-transformer,console-consola-switcher,convert,db-compare,islands-to-components,linebreak-crlf-to-lf,move-eslint-disable-to-top,removeEmptyLines,seed-db,switcher,build,debug,deploy,hello,two,com,misc,cliA,cliB,mainCLI,switch-drizzle-driver}.ts",
- "addons/reliverse/academy/{achievements,fileProcessor}.ts",
- "addons/reliverse/relicon/setup/configs/{eslint.config.{recommended,minimal,rules-disabled},next.config.{recommended,minimal},env.{recommended,rules-disabled}}.ts",
- "addons/reliverse/relicon/setup/prompt/{appts,canary/json}.ts",
- "addons/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/reliverse/toolbar/{index,components}.ts",
+ "addons/actions/reliverse/product-old.ts",
+ "addons/actions/reliverse/validations/product-old.ts",
+ "addons/components/ui/kbd.tsx",
+ "addons/components/ui/section.tsx",
+ "addons/components/ui/span.tsx",
+ "addons/hooks-react/use-at-bottom.ts",
+ "addons/hooks-react/use-callback-ref.ts",
+ "addons/hooks-react/use-click-outside.ts",
+ "addons/hooks-react/use-clipboard.ts",
+ "addons/hooks-react/use-controllable-state.ts",
+ "addons/hooks-react/use-data-table.ts",
+ "addons/hooks-react/use-enter-submit.ts",
+ "addons/hooks-react/use-event.ts",
+ "addons/hooks-react/use-ids.ts",
+ "addons/hooks-react/use-interval.ts",
+ "addons/hooks-react/use-isomorphic.ts",
+ "addons/hooks-react/use-local-storage.ts",
+ "addons/hooks-react/use-media-query.ts",
+ "addons/hooks-react/use-mounted.ts",
+ "addons/hooks-react/use-on-mount.ts",
+ "addons/hooks-react/use-optimistic.ts",
+ "addons/hooks-react/use-optimistic-board.ts",
+ "addons/hooks-react/use-promise.ts",
+ "addons/hooks-react/use-signal-state.ts",
+ "addons/hooks-react/use-toast.ts",
+ "addons/hooks-react/use-upload-file.ts",
+ "addons/hooks-react/use-url-state.ts",
+ "addons/scripts/reliverse/academy/{achievements,fileProcessor}.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/{eslint.config.{recommended,minimal,rules-disabled},next.config.{recommended,minimal},env.{recommended,rules-disabled}}.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/{appts,canary/json}.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/toolbar/{index,components}.ts",
"addons/server/reliverse/errors/modern.ts",
+ "addons/trpc/api/root.ts",
+ "addons/trpc/react.tsx",
+ "addons/trpc/server.ts",
+ "reliverse.addons.ts",
"remotion.config.ts",
"src/{auth,i18n}.ts",
"src/{config,db,hooks,server,types,core,data,utils}/index.ts",
@@ -23,6 +54,7 @@
"src/components/Application/Experimental/Admin/{card,column,board}.tsx",
"src/components/Application/Navigation/{SidebarNavigation/{index,WithSecondaryNavigation}.tsx,VerticalNavigation/{index,WithIcons}.tsx}",
"src/components/Checkout/{CheckoutButton,index,VerifyOrderForm,CheckoutShell}.tsx",
+ "src/components/Checkout/UpdateCart.tsx",
"src/components/Combobox/Combobox.tsx",
"src/components/Combobox/ComboboxHandler.tsx",
"src/components/Combobox/ProductList.tsx",
@@ -53,6 +85,20 @@
"src/components/Wrappers/{DialogShell,index,OrdersTableShell,GeneralShell,ProductsTableShell,Toaster}.tsx",
"src/config/{theme,stores}.ts",
"src/core/{link/index.tsx,mail/resend.ts,stripe/{handlers,helpers,loading,stripe}.ts,trpc/{infer,server,trpc2,index,react}.tsx,wn/{config,index,winston}.ts,auth/authjs/{index-old,shared/index}.ts,auth/authjs/components/sign-out-button.tsx,auth/clerkjs/other/checks.tsx,auth/clerkjs/components/user-profile-clerk.tsx,auth/shared/components/auth-pages-content-client.tsx,mail/templates/onboard.tsx,stripe/actions.ts,trpc/routers/{todo2,todo3,trpc-auth,trpc-user,type,webhook}.ts,trpc/tanstack/{blog-comments-server,blog-posts-client,products-admin}.tsx,trpc/trpc.ts}",
+ "src/core/novu/emails/novu-onboarding-email.tsx",
+ "src/core/trpc-old/index.ts",
+ "src/core/trpc-old/react.tsx",
+ "src/core/trpc-old/routers/todo2.ts",
+ "src/core/trpc-old/routers/todo3.ts",
+ "src/core/trpc-old/routers/trpc-auth.ts",
+ "src/core/trpc-old/routers/trpc-user.ts",
+ "src/core/trpc-old/routers/type.ts",
+ "src/core/trpc-old/routers/webhook.ts",
+ "src/core/trpc-old/server.tsx",
+ "src/core/trpc-old/tanstack/blog-comments-server.tsx",
+ "src/core/trpc-old/tanstack/blog-posts-client.tsx",
+ "src/core/trpc-old/trpc.ts",
+ "src/core/trpc-old/trpc2.ts",
"src/data/mail/{auth-user,newsletter}.tsx",
"src/data/meta/builder.ts",
"src/data/other/countries/typescript/{countries,getAllCountries,getCountriesByCallingCode,getCountriesByName,getCountryByCca2,getCountryByPhoneNumber,inputMask,types}.ts",
@@ -62,7 +108,7 @@
"src/hooks/react-client/{useLocalStorage,useOptimisticBoard,useSignalState,useToast}.ts",
"src/hooks/server.ts",
"src/mdx-components.tsx",
- "src/server/{queries,media,mw,query,string,utapi,actions/{auth,order,cart,product,generate,signin},api/uploadthing/react,cart,etc/currency/{currencyValidation,errorMessage},funcs/client,trpc,validations/{og,order,user,auth,notification,parameters,product}}.ts",
+ "src/server/{queries,media,mw,query,string,utapi,actions/{auth,order,cart,product,generate,signin},api/uploadthing/react,cart,etc/currency/{currencyValidation,getErrorMessage},funcs/client,trpc,validations/{og,order,user,auth,notification,parameters,product}}.ts",
"src/server/queries/{product,store,user}.ts",
"src/types/config.ts",
"src/utils/errors/{index,plugin,test,helpers/{field,server/{index,unauthorized-error,validation-error}}}.ts",
@@ -92,39 +138,88 @@
"addons/browser/reliverse/ui/Tooltip.tsx",
"addons/browser/reliverse/ui/use-toast.ts",
"addons/browser/shared/utils/math.ts",
+ "addons/cluster/components/Onboarding.tsx",
+ "addons/cluster/components/ui/cluster-readme.tsx",
"addons/cluster/reliverse/components/Onboarding.tsx",
"addons/cluster/reliverse/ui/cluster-readme.tsx",
- "addons/reliverse/toolbar/index.tsx",
+ "addons/components/ui/alert.tsx",
+ "addons/components/ui/alert-dialog.tsx",
+ "addons/components/ui/aspect-ratio.tsx",
+ "addons/components/ui/avatar.tsx",
+ "addons/components/ui/badge.tsx",
+ "addons/components/ui/breadcrumb.tsx",
+ "addons/components/ui/button.tsx",
+ "addons/components/ui/calendar.tsx",
+ "addons/components/ui/carousel.tsx",
+ "addons/components/ui/chart.tsx",
+ "addons/components/ui/checkbox.tsx",
+ "addons/components/ui/command.tsx",
+ "addons/components/ui/dialog.tsx",
+ "addons/components/ui/drawer.tsx",
+ "addons/components/ui/dropdown.tsx",
+ "addons/components/ui/dropdown-menu.tsx",
+ "addons/components/ui/form.tsx",
+ "addons/components/ui/hover-card.tsx",
+ "addons/components/ui/icon.tsx",
+ "addons/components/ui/input.tsx",
+ "addons/components/ui/input-otp.tsx",
+ "addons/components/ui/navigation-menu.tsx",
+ "addons/components/ui/pagination.tsx",
+ "addons/components/ui/password.tsx",
+ "addons/components/ui/popover.tsx",
+ "addons/components/ui/popup.tsx",
+ "addons/components/ui/progress.tsx",
+ "addons/components/ui/scroll-area.tsx",
+ "addons/components/ui/select.tsx",
+ "addons/components/ui/separator.tsx",
+ "addons/components/ui/sheet.tsx",
+ "addons/components/ui/skeleton.tsx",
+ "addons/components/ui/slider.tsx",
+ "addons/components/ui/switch.tsx",
+ "addons/components/ui/table.tsx",
+ "addons/components/ui/tabs.tsx",
+ "addons/components/ui/text-area.tsx",
+ "addons/components/ui/textarea.tsx",
+ "addons/components/ui/toast.tsx",
+ "addons/components/ui/toaster.tsx",
+ "addons/components/ui/tooltip.tsx",
+ "addons/components/ui/use-toast.ts",
+ "addons/scripts/helpers/helpers/db.ts",
+ "addons/scripts/reliverse/academy/achievements.ts",
+ "addons/scripts/reliverse/academy/fileProcessor.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/env.recommended.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/env.rules-disabled.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.medium.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.minimal.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.ultimate.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/next.config.clean.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/next.config.minimal.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/next.config.recommended.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/env.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/relimter/core/tasks/no-unresolved-links.ts",
+ "addons/scripts/reliverse/toolbar/index.tsx",
"addons/server/reliverse/errors/helpers/field.ts",
"addons/server/reliverse/errors/plugin.ts",
"addons/server/reliverse/errors/test.ts",
"addons/server/reliverse/execa/execute.ts",
"addons/server/reliverse/execa/test.ts",
- "addons/terminal/reliverse/academy/achievements.ts",
- "addons/terminal/reliverse/academy/fileProcessor.ts",
- "addons/terminal/reliverse/relicon/setup/configs/env.recommended.ts",
- "addons/terminal/reliverse/relicon/setup/configs/env.rules-disabled.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.medium.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.minimal.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.ultimate.ts",
- "addons/terminal/reliverse/relicon/setup/configs/next.config.clean.ts",
- "addons/terminal/reliverse/relicon/setup/configs/next.config.minimal.ts",
- "addons/terminal/reliverse/relicon/setup/configs/next.config.recommended.ts",
- "addons/terminal/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/terminal/reliverse/relimter/core/tasks/no-unresolved-links.ts",
- "addons/terminal/shared/micro/db.ts",
+ "addons/trpc/server.ts",
+ "addons/types/reliverse/config.ts",
"postcss.config.js",
"reliverse.config.ts",
"src/app/[locale]/dashboard/onboarding/OnboardContent.tsx",
"src/auth/authjs.ts",
"src/auth/migrate.ts",
"src/cluster/Onboarding.tsx",
+ "src/components/Application/ReliverseToolbar.tsx",
"src/components/Combobox/ComboboxContext.tsx",
"src/components/Emails/Onboarding.tsx",
"src/components/Navigation/NavMenu.tsx",
"src/components/Playground/Boards/BoardList.tsx",
"src/components/Providers/Tooltip.tsx",
+ "src/core/novu/emails/novu-onboarding-email.tsx",
"src/data/other/boards.ts",
"src/db/schema/mysql/categories.ts",
"src/db/schema/mysql/customers.ts",
@@ -152,16 +247,15 @@
],
"ignoreBinaries": ["codemod", "eslint_d", "py", "ruff", "stripe", "vercel"],
"ignoreDependencies": [
- "@million/lint",
- "@next/bundle-analyzer",
"@putout/.+",
"@radix-ui/react-alert-dialog",
+ "@radix-ui/react-hover-card",
+ "@radix-ui/react-progress",
"@remotion/.+",
"@tailwindcss/.+",
"@types/eslint",
"@types/try-catch",
"@vercel/flags",
- "@vercel/toolbar",
"@xyflow/react",
"autoprefixer",
"commander",
@@ -170,9 +264,8 @@
"dotenv-cli",
"eslint-plugin-mdx",
"eslint-plugin-putout",
+ "input-otp",
"jsonc-eslint-parser",
- "mathjs",
- "million",
"montag",
"next-superjson-plugin",
"node-fetch-native",
diff --git a/addons/terminal/reliverse/relicon/setup/configs/knip.rules-disabled.json b/addons/scripts/reliverse/relicon/setup/configs/knip.rules-disabled.json
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/configs/knip.rules-disabled.json
rename to addons/scripts/reliverse/relicon/setup/configs/knip.rules-disabled.json
diff --git a/addons/terminal/reliverse/relicon/setup/configs/next.config.clean.ts b/addons/scripts/reliverse/relicon/setup/configs/next.config.clean.ts
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/configs/next.config.clean.ts
rename to addons/scripts/reliverse/relicon/setup/configs/next.config.clean.ts
diff --git a/addons/terminal/reliverse/relicon/setup/configs/next.config.minimal.ts b/addons/scripts/reliverse/relicon/setup/configs/next.config.minimal.ts
similarity index 83%
rename from addons/terminal/reliverse/relicon/setup/configs/next.config.minimal.ts
rename to addons/scripts/reliverse/relicon/setup/configs/next.config.minimal.ts
index 87b12064..6a0a3c64 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/next.config.minimal.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/next.config.minimal.ts
@@ -12,7 +12,7 @@ import remarkGfm from "remark-gfm";
await import("~/env.js");
-// Uncomment the following lines to enable the Vercel Toolbar (and component in LocaleLayout)
+// Uncomment the following lines to enable the Vercel Toolbar (and component in RootLocaleLayout)
// import withVercelToolbar from "@vercel/toolbar/plugins/next";
//
// The whitelist list of domains that are allowed to show media content
@@ -45,14 +45,15 @@ const nextConfig = {
mdxRs: true,
optimizePackageImports: ["lucide-react", "@radix-ui/react-icons"],
ppr: false, // true - supported by next@canary only
- swcPlugins: [
- [
- "next-superjson-plugin",
- {
- excluded: [],
- },
- ],
- ],
+ // uncomment if you use superjson in 'browser' context
+ // swcPlugins: [
+ // [
+ // "next-superjson-plugin",
+ // {
+ // excluded: [],
+ // },
+ // ],
+ // ],
},
images: {
formats: ["image/avif", "image/webp"],
@@ -62,6 +63,13 @@ const nextConfig = {
})),
},
pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"],
+
+ // Adobe React Spectrum (next dev --turbo is not supported)
+ // transpilePackages: [
+ // "@adobe/react-spectrum",
+ // "@react-spectrum/*",
+ // "@spectrum-icons/*",
+ // ].flatMap((spec) => glob.sync(spec, { cwd: "node_modules/" })),
};
// Create a config wrapper required to integrate a modern Next.js MDX support
@@ -78,7 +86,7 @@ const withMDX = createMDX({
// @see https://next-intl-docs.vercel.app/docs/getting-started/app-router/with-i18n-routing
const withIntl = createNextIntlPlugin("./src/i18n.ts");
-// Uncomment the following lines to enable the Vercel Toolbar (and component in LocaleLayout)
+// Uncomment the following lines to enable the Vercel Toolbar (and component in RootLocaleLayout)
//
// const reliverseConfig = withIntl(withMDX(nextConfig));
// const reliverseConfigWithVercelToolbar = withVercelToolbar()(reliverseConfig);
diff --git a/addons/terminal/reliverse/relicon/setup/configs/next.config.recommended.ts b/addons/scripts/reliverse/relicon/setup/configs/next.config.recommended.ts
similarity index 92%
rename from addons/terminal/reliverse/relicon/setup/configs/next.config.recommended.ts
rename to addons/scripts/reliverse/relicon/setup/configs/next.config.recommended.ts
index 6b5aa0fa..6441c13a 100644
--- a/addons/terminal/reliverse/relicon/setup/configs/next.config.recommended.ts
+++ b/addons/scripts/reliverse/relicon/setup/configs/next.config.recommended.ts
@@ -57,6 +57,15 @@ const nextConfig = {
],
optimizeServerReact: true,
ppr: false, // true - supported by next@canary only
+ // uncomment if you use superjson in 'browser' context
+ // swcPlugins: [
+ // [
+ // "next-superjson-plugin",
+ // {
+ // excluded: [],
+ // },
+ // ],
+ // ],
serverMinification: true,
},
images: {
@@ -68,6 +77,13 @@ const nextConfig = {
},
pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"],
serverExternalPackages: ["mysql2"],
+
+ // Adobe React Spectrum (next dev --turbo is not supported)
+ // transpilePackages: [
+ // "@adobe/react-spectrum",
+ // "@react-spectrum/*",
+ // "@spectrum-icons/*",
+ // ].flatMap((spec) => glob.sync(spec, { cwd: "node_modules/" })),
};
// Create a config wrapper required to integrate a modern Next.js MDX support
diff --git a/addons/terminal/reliverse/relicon/setup/configs/ts.config.default.json b/addons/scripts/reliverse/relicon/setup/configs/ts.config.default.json
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/configs/ts.config.default.json
rename to addons/scripts/reliverse/relicon/setup/configs/ts.config.default.json
diff --git a/addons/terminal/reliverse/relicon/setup/configs/ts.config.minimal.json b/addons/scripts/reliverse/relicon/setup/configs/ts.config.minimal.json
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/configs/ts.config.minimal.json
rename to addons/scripts/reliverse/relicon/setup/configs/ts.config.minimal.json
diff --git a/addons/terminal/reliverse/relicon/setup/index.ts b/addons/scripts/reliverse/relicon/setup/index.ts
similarity index 93%
rename from addons/terminal/reliverse/relicon/setup/index.ts
rename to addons/scripts/reliverse/relicon/setup/index.ts
index dc2f3380..1b43266a 100644
--- a/addons/terminal/reliverse/relicon/setup/index.ts
+++ b/addons/scripts/reliverse/relicon/setup/index.ts
@@ -1,4 +1,3 @@
-import { getCurrentDirname } from "@/browser/shared/utils";
import {
configureBiome,
configureEnv,
@@ -6,9 +5,9 @@ import {
configureKnip,
configureNext,
configurePutout,
-} from "@/terminal/reliverse/relicon/setup/prompt";
-import { configureAppts } from "@/terminal/reliverse/relicon/setup/prompt/appts";
-import { getRootDirname } from "@/terminal/shared/utils";
+} from "@/scripts/reliverse/relicon/setup/prompt";
+import { configureAppts } from "@/scripts/reliverse/relicon/setup/prompt/appts";
+import { getCurrentDirname, getRootDirname } from "@/scripts/utils";
import { confirm } from "@clack/prompts";
import { config } from "@reliverse/core";
import consola from "consola";
@@ -19,7 +18,7 @@ import { siteConfig } from "~/app";
export async function runReliverseSetup() {
const currentDirname = getCurrentDirname(import.meta.url);
- const rootDirectory = getRootDirname(currentDirname, 5);
+ const rootDirectory = getRootDirname(import.meta.url, 5);
const srcDirectory = join(currentDirname, `${currentDirname}/src`);
const configsFolder = join(currentDirname, "configs");
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/appts.ts b/addons/scripts/reliverse/relicon/setup/prompt/appts.ts
similarity index 97%
rename from addons/terminal/reliverse/relicon/setup/prompt/appts.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/appts.ts
index 30e04e78..ec6c8300 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/appts.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/appts.ts
@@ -1,6 +1,6 @@
-import type { ApptsConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { ApptsConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists } from "@/terminal/shared/utils";
+import { fileExists } from "@/scripts/utils";
import { confirm, text } from "@clack/prompts";
import { config } from "@reliverse/core";
import consola from "consola";
@@ -116,7 +116,7 @@ export async function configureAppts({ apptsConfig }: ApptsConfig) {
for (const prompt of prompts) {
results[prompt.key] = await askForText(
prompt.message,
- currentConfig[prompt.key] ?? prompt.default,
+ currentConfig[prompt.key] || prompt.default,
);
}
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/biome.ts b/addons/scripts/reliverse/relicon/setup/prompt/biome.ts
similarity index 92%
rename from addons/terminal/reliverse/relicon/setup/prompt/biome.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/biome.ts
index 22372a9b..4906dc69 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/biome.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/biome.ts
@@ -1,6 +1,6 @@
-import type { BiomeConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { BiomeConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists, removeFile } from "@/terminal/shared/utils";
+import { fileExists, removeFile } from "@/scripts/utils";
import { select } from "@clack/prompts";
import consola from "consola";
import fs from "fs-extra";
diff --git a/addons/scripts/reliverse/relicon/setup/prompt/env.ts b/addons/scripts/reliverse/relicon/setup/prompt/env.ts
new file mode 100644
index 00000000..591e3046
--- /dev/null
+++ b/addons/scripts/reliverse/relicon/setup/prompt/env.ts
@@ -0,0 +1,209 @@
+import { getRootDirname } from "@/scripts/utils";
+import { confirm, input, password } from "@inquirer/prompts";
+import fs from "fs-extra";
+import { join } from "pathe";
+
+// TODO: 🐞 Still in development! Please use at own risk!
+
+const rootDirname = getRootDirname(import.meta.url, 6);
+const envFilePath = join(rootDirname, ".env");
+
+type PromptType = "confirm" | "input" | "password";
+
+type Question = {
+ default?: boolean | string;
+ key: string;
+ message: string;
+ type: PromptType;
+};
+
+function createPrompt(
+ type: PromptType,
+ message: string,
+ defaultValue?: boolean | string,
+) {
+ const options: { default?: boolean | string; message: string } = { message };
+
+ if (defaultValue !== undefined) {
+ options.default = defaultValue;
+ }
+
+ if (type === "input") {
+ return input(options as { default?: string; message: string });
+ } else if (type === "password") {
+ return password(options as { default?: string; message: string });
+ } else {
+ return confirm(options as { default?: boolean; message: string });
+ }
+}
+
+async function askQuestions() {
+ const questions: Question[] = [
+ {
+ type: "input",
+ key: "NEXT_PUBLIC_APP_URL",
+ message: "Specify the website domain in production",
+ default: "http://localhost:3000",
+ },
+ { type: "input", key: "DATABASE_URL", message: "Database URL" },
+ {
+ type: "password",
+ key: "AUTH_SECRET",
+ message:
+ "Auth Secret (e.g.: EnsureUseSomethingRandomHere44CharactersLong)",
+ },
+ {
+ type: "password",
+ key: "AUTH_DISCORD_SECRET",
+ message: "Auth Discord Secret",
+ },
+ { type: "input", key: "AUTH_DISCORD_ID", message: "Auth Discord ID" },
+ {
+ type: "password",
+ key: "AUTH_GITHUB_SECRET",
+ message: "Auth GitHub Secret",
+ },
+ { type: "input", key: "AUTH_GITHUB_ID", message: "Auth GitHub ID" },
+ {
+ type: "password",
+ key: "AUTH_GOOGLE_SECRET",
+ message: "Auth Google Secret",
+ },
+ { type: "input", key: "AUTH_GOOGLE_ID", message: "Auth Google ID" },
+ {
+ type: "input",
+ key: "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY",
+ message: "Clerk Publishable Key",
+ },
+ { type: "password", key: "CLERK_SECRET_KEY", message: "Clerk Secret Key" },
+ {
+ type: "confirm",
+ key: "NEXT_PUBLIC_ORGANIZATIONS_ENABLED",
+ message: "Organizations Enabled",
+ default: false,
+ },
+ {
+ type: "input",
+ key: "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY",
+ message: "Stripe Publishable Key",
+ },
+ {
+ type: "password",
+ key: "STRIPE_SECRET_KEY",
+ message: "Stripe Secret Key",
+ },
+ {
+ type: "password",
+ key: "STRIPE_WEBHOOK_SIGNING_SECRET",
+ message: "Stripe Webhook Signing Secret",
+ },
+ {
+ type: "input",
+ key: "STRIPE_PROFESSIONAL_SUBSCRIPTION_PRICE_ID",
+ message: "Stripe Professional Subscription Price ID",
+ },
+ {
+ type: "input",
+ key: "STRIPE_ENTERPRISE_SUBSCRIPTION_PRICE_ID",
+ message: "Stripe Enterprise Subscription Price ID",
+ },
+ {
+ type: "confirm",
+ key: "PYTHON_INSTALLED",
+ message: "Python Installed",
+ default: false,
+ },
+ {
+ type: "confirm",
+ key: "ENABLE_VERCEL_TOOLBAR",
+ message: "Enable Vercel Toolbar",
+ default: false,
+ },
+ {
+ type: "confirm",
+ key: "ENABLE_VT_ON_PRODUCTION",
+ message: "Enable VT on Production",
+ default: false,
+ },
+ {
+ type: "confirm",
+ key: "ENABLE_FEATURE_FLAGS",
+ message: "Enable Feature Flags",
+ default: false,
+ },
+ { type: "password", key: "FLAGS_SECRET", message: "Flags Secret" },
+ {
+ type: "password",
+ key: "REMOTION_GITHUB_TOKEN",
+ message: "Remotion GitHub Token",
+ },
+ {
+ type: "password",
+ key: "UPLOADTHING_SECRET",
+ message: "Uploadthing Secret",
+ },
+ { type: "input", key: "UPLOADTHING_APP_ID", message: "Uploadthing App ID" },
+ {
+ type: "input",
+ key: "NEXT_PUBLIC_RESEND_API_KEY",
+ message: "Resend API Key",
+ },
+ {
+ type: "input",
+ key: "NEXT_PUBLIC_RESEND_EMAIL_FROM",
+ message: "Resend Email From",
+ default: "onboarding@resend.dev",
+ },
+ { type: "input", key: "LOGLIB_ID", message: "Loglib ID" },
+ {
+ type: "input",
+ key: "DISCORD_WEBHOOK_URL",
+ message: "Discord Webhook URL",
+ },
+ ];
+
+ const answers: Record = {};
+
+ for (const question of questions) {
+ const answer = await createPrompt(
+ question.type,
+ question.message,
+ question.default,
+ );
+
+ answers[question.key] = answer;
+ }
+
+ return answers;
+}
+
+function generateEnvContent(answers: Record) {
+ const keys = Object.keys(answers);
+
+ return keys.map((key) => `${key}="${answers[key]}"`).join("\n");
+}
+
+async function main() {
+ try {
+ const answers = await askQuestions();
+
+ console.log("\nPlease review your answers:");
+ console.log(generateEnvContent(answers));
+
+ const confirmed = await confirm({
+ message: "Do you want to save these settings to .env file?",
+ default: true,
+ });
+
+ if (confirmed) {
+ fs.writeFileSync(envFilePath, generateEnvContent(answers).trim());
+ console.log(`.env file has been generated at ${envFilePath}`);
+ } else {
+ console.log("Aborted! The .env file was not generated.");
+ }
+ } catch (error) {
+ console.error("An error occurred:", error);
+ }
+}
+
+main();
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/envjs.ts b/addons/scripts/reliverse/relicon/setup/prompt/envjs.ts
similarity index 95%
rename from addons/terminal/reliverse/relicon/setup/prompt/envjs.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/envjs.ts
index 769272fd..5302de1b 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/envjs.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/envjs.ts
@@ -1,6 +1,6 @@
-import type { EnvJsConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { EnvJsConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists, removeFile } from "@/terminal/shared/utils";
+import { fileExists, removeFile } from "@/scripts/utils";
import { select } from "@clack/prompts";
import consola from "consola";
import { readFile, writeFile } from "fs/promises";
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/eslint.ts b/addons/scripts/reliverse/relicon/setup/prompt/eslint.ts
similarity index 95%
rename from addons/terminal/reliverse/relicon/setup/prompt/eslint.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/eslint.ts
index 68e5d7b6..39997b42 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/eslint.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/eslint.ts
@@ -1,6 +1,6 @@
-import type { EslintConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { EslintConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists, removeFile } from "@/terminal/shared/utils";
+import { fileExists, removeFile } from "@/scripts/utils";
import { select } from "@clack/prompts";
import { config } from "@reliverse/core";
import consola from "consola";
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/index.ts b/addons/scripts/reliverse/relicon/setup/prompt/index.ts
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/prompt/index.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/index.ts
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/knip.ts b/addons/scripts/reliverse/relicon/setup/prompt/knip.ts
similarity index 92%
rename from addons/terminal/reliverse/relicon/setup/prompt/knip.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/knip.ts
index c77f5f6a..1ff37e16 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/knip.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/knip.ts
@@ -1,6 +1,6 @@
-import type { KnipConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { KnipConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists, removeFile } from "@/terminal/shared/utils";
+import { fileExists, removeFile } from "@/scripts/utils";
import { select } from "@clack/prompts";
import consola from "consola";
import fs from "fs-extra";
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/nextjs.ts b/addons/scripts/reliverse/relicon/setup/prompt/nextjs.ts
similarity index 95%
rename from addons/terminal/reliverse/relicon/setup/prompt/nextjs.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/nextjs.ts
index b4c7a4fb..4ab6e894 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/nextjs.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/nextjs.ts
@@ -1,6 +1,6 @@
-import type { NextJsConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { NextJsConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists, removeFile } from "@/terminal/shared/utils";
+import { fileExists, removeFile } from "@/scripts/utils";
import { select } from "@clack/prompts";
import consola from "consola";
import { readFile, writeFile } from "fs/promises";
diff --git a/addons/terminal/reliverse/relicon/setup/prompt/putout.ts b/addons/scripts/reliverse/relicon/setup/prompt/putout.ts
similarity index 92%
rename from addons/terminal/reliverse/relicon/setup/prompt/putout.ts
rename to addons/scripts/reliverse/relicon/setup/prompt/putout.ts
index e6f5938b..fea15e42 100644
--- a/addons/terminal/reliverse/relicon/setup/prompt/putout.ts
+++ b/addons/scripts/reliverse/relicon/setup/prompt/putout.ts
@@ -1,6 +1,6 @@
-import type { PutoutConfig } from "@/terminal/reliverse/relicon/setup/types";
+import type { PutoutConfig } from "@/scripts/reliverse/relicon/setup/types";
-import { fileExists, removeFile } from "@/terminal/shared/utils";
+import { fileExists, removeFile } from "@/scripts/utils";
import { select } from "@clack/prompts";
import consola from "consola";
import fs from "fs-extra";
diff --git a/addons/terminal/reliverse/relicon/setup/types.ts b/addons/scripts/reliverse/relicon/setup/types.ts
similarity index 100%
rename from addons/terminal/reliverse/relicon/setup/types.ts
rename to addons/scripts/reliverse/relicon/setup/types.ts
diff --git a/addons/terminal/reliverse/relimter/astx/index.ts b/addons/scripts/reliverse/relimter/astx/index.ts
similarity index 86%
rename from addons/terminal/reliverse/relimter/astx/index.ts
rename to addons/scripts/reliverse/relimter/astx/index.ts
index 4c4aea84..3c52a3b0 100644
--- a/addons/terminal/reliverse/relimter/astx/index.ts
+++ b/addons/scripts/reliverse/relimter/astx/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
@@ -28,8 +28,7 @@ const main = defineCommand({
// TODO: Consider
// case "":
// await import("..");
- // await import("@/terminal/reliverse/relimter");
- // await execa`pnpm reli:relimter`;
+ // await import("@/scripts/reliverse/relimter");
// break;
case "all":
await import("./tasks");
diff --git a/addons/terminal/reliverse/relimter/astx/tasks/block-to-line-comments.ts b/addons/scripts/reliverse/relimter/astx/tasks/block-to-line-comments.ts
similarity index 56%
rename from addons/terminal/reliverse/relimter/astx/tasks/block-to-line-comments.ts
rename to addons/scripts/reliverse/relimter/astx/tasks/block-to-line-comments.ts
index 4f89af44..371f3a67 100644
--- a/addons/terminal/reliverse/relimter/astx/tasks/block-to-line-comments.ts
+++ b/addons/scripts/reliverse/relimter/astx/tasks/block-to-line-comments.ts
@@ -2,5 +2,5 @@ import consola from "consola";
consola.info(
// eslint-disable-next-line @stylistic/max-len
- "Canceled. We still working on this task. Please wait for the next update.\n\nYou can try `py addons/reliverse/relimter/python/tasks/block-to-line-comments.py` at the moment.",
+ "Canceled. We still working on this task. Please wait for the next update.\n\nYou can try `py addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py` at the moment.",
);
diff --git a/addons/terminal/reliverse/relimter/astx/tasks/index.ts b/addons/scripts/reliverse/relimter/astx/tasks/index.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/astx/tasks/index.ts
rename to addons/scripts/reliverse/relimter/astx/tasks/index.ts
diff --git a/addons/terminal/reliverse/relimter/canary.ts b/addons/scripts/reliverse/relimter/canary.ts
similarity index 95%
rename from addons/terminal/reliverse/relimter/canary.ts
rename to addons/scripts/reliverse/relimter/canary.ts
index 893d56d7..0202e7fc 100644
--- a/addons/terminal/reliverse/relimter/canary.ts
+++ b/addons/scripts/reliverse/relimter/canary.ts
@@ -1,10 +1,10 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
// Relivator v1.3.0-canary.x Edition
-// pnpm tsx addons/reliverse/relimter/canary.ts
+// pnpm tsx addons/scripts/reliverse/relimter/canary.ts
// TODO: Fix "Cannot convert a Symbol value to a string" when using Cmd/Ctrl+C
const flagsList = [
{
diff --git a/addons/terminal/reliverse/relimter/codeup/tasks/index.ts b/addons/scripts/reliverse/relimter/codeup/index.ts
similarity index 96%
rename from addons/terminal/reliverse/relimter/codeup/tasks/index.ts
rename to addons/scripts/reliverse/relimter/codeup/index.ts
index 1dc1df0e..acb3c869 100644
--- a/addons/terminal/reliverse/relimter/codeup/tasks/index.ts
+++ b/addons/scripts/reliverse/relimter/codeup/index.ts
@@ -1,4 +1,4 @@
-import type { TCodeupUtils } from "@/terminal/reliverse/relimter/codeup/types";
+import type { TCodeupUtils } from "@/scripts/reliverse/relimter/codeup/types";
import type { ActionContext } from "codeup";
import { defineAction } from "codeup";
diff --git a/addons/terminal/reliverse/relimter/codeup/index.ts b/addons/scripts/reliverse/relimter/codeup/tasks/index.ts
similarity index 96%
rename from addons/terminal/reliverse/relimter/codeup/index.ts
rename to addons/scripts/reliverse/relimter/codeup/tasks/index.ts
index 1dc1df0e..acb3c869 100644
--- a/addons/terminal/reliverse/relimter/codeup/index.ts
+++ b/addons/scripts/reliverse/relimter/codeup/tasks/index.ts
@@ -1,4 +1,4 @@
-import type { TCodeupUtils } from "@/terminal/reliverse/relimter/codeup/types";
+import type { TCodeupUtils } from "@/scripts/reliverse/relimter/codeup/types";
import type { ActionContext } from "codeup";
import { defineAction } from "codeup";
diff --git a/addons/terminal/reliverse/relimter/codeup/types.ts b/addons/scripts/reliverse/relimter/codeup/types.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/codeup/types.ts
rename to addons/scripts/reliverse/relimter/codeup/types.ts
diff --git a/addons/terminal/reliverse/relimter/core/env/check-missing-variables.ts b/addons/scripts/reliverse/relimter/core/env/check-missing-variables.ts
similarity index 88%
rename from addons/terminal/reliverse/relimter/core/env/check-missing-variables.ts
rename to addons/scripts/reliverse/relimter/core/env/check-missing-variables.ts
index af62d9ce..2a5b9bc4 100644
--- a/addons/terminal/reliverse/relimter/core/env/check-missing-variables.ts
+++ b/addons/scripts/reliverse/relimter/core/env/check-missing-variables.ts
@@ -1,9 +1,9 @@
-import loadEnv from "@/terminal/reliverse/relimter/core/env/env-loader";
+import loadEnv from "@/scripts/reliverse/relimter/core/env/env-loader";
import {
checkAuthConditions,
getMissingVariables,
-} from "@/terminal/reliverse/relimter/core/env/get-missing";
-import { logMessages } from "@/terminal/reliverse/relimter/core/env/log-messages";
+} from "@/scripts/reliverse/relimter/core/env/get-missing";
+import { logMessages } from "@/scripts/reliverse/relimter/core/env/log-messages";
import consola from "consola";
import pc from "picocolors";
import { authProvider, debugEnabled } from "reliverse.config";
diff --git a/addons/terminal/reliverse/relimter/core/env/check-unexpected-variables.ts b/addons/scripts/reliverse/relimter/core/env/check-unexpected-variables.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/env/check-unexpected-variables.ts
rename to addons/scripts/reliverse/relimter/core/env/check-unexpected-variables.ts
diff --git a/addons/terminal/reliverse/relimter/core/env/components/MissingVariables.tsx b/addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx
similarity index 97%
rename from addons/terminal/reliverse/relimter/core/env/components/MissingVariables.tsx
rename to addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx
index 5da329af..79ad9939 100644
--- a/addons/terminal/reliverse/relimter/core/env/components/MissingVariables.tsx
+++ b/addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx
@@ -3,12 +3,12 @@ import {
AccordionContent,
AccordionItem,
AccordionTrigger,
-} from "@/browser/reliverse/ui/Accordion";
-import { Card, CardContent } from "@/browser/reliverse/ui/CardUI";
+} from "@/components/ui/accordion";
+import { Card, CardContent } from "@/components/ui/card";
import {
checkAuthConditions,
getMissingVariables,
-} from "@/terminal/reliverse/relimter/core/env/get-missing";
+} from "@/scripts/reliverse/relimter/core/env/get-missing";
import { config } from "@reliverse/core";
import { authProvider, debugEnabled, hideEnvInfo } from "reliverse.config";
diff --git a/addons/terminal/reliverse/relimter/core/env/env-loader.ts b/addons/scripts/reliverse/relimter/core/env/env-loader.ts
similarity index 72%
rename from addons/terminal/reliverse/relimter/core/env/env-loader.ts
rename to addons/scripts/reliverse/relimter/core/env/env-loader.ts
index 1d8fb4c5..4716ec26 100644
--- a/addons/terminal/reliverse/relimter/core/env/env-loader.ts
+++ b/addons/scripts/reliverse/relimter/core/env/env-loader.ts
@@ -1,11 +1,9 @@
-import { getCurrentDirname } from "@/browser/shared/utils";
-import { getRootDirname } from "@/terminal/shared/utils";
+import { getRootDirname } from "@/scripts/utils";
import fs from "fs-extra";
import { join } from "pathe";
const loadEnv = async () => {
- const currentDirname = getCurrentDirname(import.meta.url);
- const rootDirectory = getRootDirname(currentDirname, 6);
+ const rootDirectory = getRootDirname(import.meta.url, 6);
const envFilePath = join(rootDirectory, ".env");
if (fs.existsSync(envFilePath)) {
diff --git a/addons/terminal/reliverse/relimter/core/env/get-missing.ts b/addons/scripts/reliverse/relimter/core/env/get-missing.ts
similarity index 95%
rename from addons/terminal/reliverse/relimter/core/env/get-missing.ts
rename to addons/scripts/reliverse/relimter/core/env/get-missing.ts
index 45039f47..a2593ecf 100644
--- a/addons/terminal/reliverse/relimter/core/env/get-missing.ts
+++ b/addons/scripts/reliverse/relimter/core/env/get-missing.ts
@@ -1,4 +1,4 @@
-import { convertEmptyStringToUndefined } from "@/terminal/reliverse/relimter/core/env/helpers";
+import { convertEmptyStringToUndefined } from "@/scripts/reliverse/relimter/core/env/helpers";
import consola from "consola";
import { authProvider, debugEnabled } from "reliverse.config";
diff --git a/addons/terminal/reliverse/relimter/core/env/helpers.ts b/addons/scripts/reliverse/relimter/core/env/helpers.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/env/helpers.ts
rename to addons/scripts/reliverse/relimter/core/env/helpers.ts
diff --git a/addons/terminal/reliverse/relimter/core/env/index.ts b/addons/scripts/reliverse/relimter/core/env/index.ts
similarity index 60%
rename from addons/terminal/reliverse/relimter/core/env/index.ts
rename to addons/scripts/reliverse/relimter/core/env/index.ts
index f760668e..b696fb55 100644
--- a/addons/terminal/reliverse/relimter/core/env/index.ts
+++ b/addons/scripts/reliverse/relimter/core/env/index.ts
@@ -1,15 +1,13 @@
-import { getCurrentDirname } from "@/browser/shared/utils";
-import { checkMissingEnvVariables } from "@/terminal/reliverse/relimter/core/env/check-missing-variables";
-import { checkUnexpectedEnvVariables } from "@/terminal/reliverse/relimter/core/env/check-unexpected-variables";
-import { fileExists, getRootDirname } from "@/terminal/shared/utils";
+import { checkMissingEnvVariables } from "@/scripts/reliverse/relimter/core/env/check-missing-variables";
+import { checkUnexpectedEnvVariables } from "@/scripts/reliverse/relimter/core/env/check-unexpected-variables";
+import { fileExists, getRootDirname } from "@/scripts/utils";
import consola from "consola";
import { join } from "pathe";
import { hideEnvInfo } from "reliverse.config";
const main = async () => {
try {
- const currentDirname = getCurrentDirname(import.meta.url);
- const rootDirectory = getRootDirname(currentDirname, 6);
+ const rootDirectory = getRootDirname(import.meta.url, 6);
const envFilePath = join(rootDirectory, ".env");
const envExampleFilePath = join(rootDirectory, ".env.example");
diff --git a/addons/terminal/reliverse/relimter/core/env/log-messages.ts b/addons/scripts/reliverse/relimter/core/env/log-messages.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/env/log-messages.ts
rename to addons/scripts/reliverse/relimter/core/env/log-messages.ts
diff --git a/addons/terminal/reliverse/relimter/core/index.ts b/addons/scripts/reliverse/relimter/core/index.ts
similarity index 93%
rename from addons/terminal/reliverse/relimter/core/index.ts
rename to addons/scripts/reliverse/relimter/core/index.ts
index d621c3a0..a619c0fc 100644
--- a/addons/terminal/reliverse/relimter/core/index.ts
+++ b/addons/scripts/reliverse/relimter/core/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/terminal/reliverse/relimter/core/tasks/! USE AT OWN RISK !/.gitkeep b/addons/scripts/reliverse/relimter/core/tasks/! USE AT OWN RISK !/.gitkeep
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/! USE AT OWN RISK !/.gitkeep
rename to addons/scripts/reliverse/relimter/core/tasks/! USE AT OWN RISK !/.gitkeep
diff --git a/addons/terminal/reliverse/relimter/core/tasks/comments-transformer.ts b/addons/scripts/reliverse/relimter/core/tasks/comments-transformer.ts
similarity index 94%
rename from addons/terminal/reliverse/relimter/core/tasks/comments-transformer.ts
rename to addons/scripts/reliverse/relimter/core/tasks/comments-transformer.ts
index be0511ab..b1caa0fc 100644
--- a/addons/terminal/reliverse/relimter/core/tasks/comments-transformer.ts
+++ b/addons/scripts/reliverse/relimter/core/tasks/comments-transformer.ts
@@ -1,5 +1,4 @@
-import { getCurrentDirname } from "@/browser/shared/utils";
-import { getRootDirname } from "@/terminal/shared/utils";
+import { getRootDirname } from "@/scripts/utils";
import { confirm } from "@inquirer/prompts";
import { getErrorMessage, wrapError } from "@metamask/utils/node";
import { consola } from "consola";
@@ -8,10 +7,9 @@ import { join, relative } from "pathe";
import pc from "picocolors";
import { createInterface } from "readline";
-// ⛔ UNSTABLE 👉 pnpm tsx addons/reliverse/relimter/core/tasks/scripts/comments-transformer.ts
-// ✅ (More stable version: `py addons/reliverse/relimter/python/tasks/block-to-line-comments.py`)
-const currentDirname = getCurrentDirname(import.meta.url);
-const rootDirectory = getRootDirname(currentDirname, 6);
+// ⛔ UNSTABLE 👉 pnpm tsx addons/scripts/reliverse/relimter/core/tasks/scripts/comments-transformer.ts
+// ✅ (More stable version: `py addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py`)
+const rootDirectory = getRootDirname(import.meta.url, 6);
const COMMENT_FILE = join(rootDirectory, "addons/.output/fix-comments.log");
const excludedDirectories = [
@@ -24,8 +22,8 @@ const excludedDirectories = [
const supportedExtensions = [".js", ".ts", ".mjs"];
const excludedRelativeFiles = new Set([
- "addons/reliverse/relimter/core/tasks/scripts/comments-transformer.ts",
- "addons/reliverse/disabler/index.ts",
+ "addons/scripts/reliverse/relimter/core/tasks/scripts/comments-transformer.ts",
+ "addons/scripts/reliverse/disabler/index.ts",
"next-env.d.ts",
]);
diff --git a/addons/terminal/reliverse/relimter/core/tasks/console-consola-switcher.ts b/addons/scripts/reliverse/relimter/core/tasks/console-consola-switcher.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/console-consola-switcher.ts
rename to addons/scripts/reliverse/relimter/core/tasks/console-consola-switcher.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/convert.ts b/addons/scripts/reliverse/relimter/core/tasks/convert.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/convert.ts
rename to addons/scripts/reliverse/relimter/core/tasks/convert.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/db-compare.ts b/addons/scripts/reliverse/relimter/core/tasks/db-compare.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/db-compare.ts
rename to addons/scripts/reliverse/relimter/core/tasks/db-compare.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/index.ts b/addons/scripts/reliverse/relimter/core/tasks/index.ts
similarity index 95%
rename from addons/terminal/reliverse/relimter/core/tasks/index.ts
rename to addons/scripts/reliverse/relimter/core/tasks/index.ts
index 14922e3f..c6fb0837 100644
--- a/addons/terminal/reliverse/relimter/core/tasks/index.ts
+++ b/addons/scripts/reliverse/relimter/core/tasks/index.ts
@@ -1,5 +1,5 @@
-import { patchGitignore } from "@/terminal/reliverse/relimter/core/tasks/patch-gitignore-file";
-import { sortArgs } from "@/terminal/shared/utils";
+import { patchGitignore } from "@/scripts/reliverse/relimter/core/tasks/patch-gitignore-file";
+import { sortArgs } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/terminal/reliverse/relimter/core/tasks/islands-to-components.ts b/addons/scripts/reliverse/relimter/core/tasks/islands-to-components.ts
similarity index 98%
rename from addons/terminal/reliverse/relimter/core/tasks/islands-to-components.ts
rename to addons/scripts/reliverse/relimter/core/tasks/islands-to-components.ts
index 25db9b85..7e1c944c 100644
--- a/addons/terminal/reliverse/relimter/core/tasks/islands-to-components.ts
+++ b/addons/scripts/reliverse/relimter/core/tasks/islands-to-components.ts
@@ -5,7 +5,7 @@ import path from "pathe";
// src/tools/unstable/codemods-reliverse/components-to-components.py
// !! 🔴 USE THIS SCRIPT AT YOUR OWN RISK UNTIL WE FINISH WORKING ON IT 🏹🦵
// !! 🐍 PLEASE TRY TO USE PYTHON VERSION FIRST, WHICH IS MORE STABLE
-// py addons/reliverse/relimter/python/tasks/components-to-components.py
+// py addons/scripts/reliverse/relimter/python/tasks/components-to-components.py
// !! 🐞 This UNTESTED TOO MUCH codemod does the following:
// 1. Reads all .ts and .tsx files in the src directory.
// 2. Looks for ES imports and updates paths.
diff --git a/addons/terminal/reliverse/relimter/core/tasks/linebreak-crlf-to-lf.ts b/addons/scripts/reliverse/relimter/core/tasks/linebreak-crlf-to-lf.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/linebreak-crlf-to-lf.ts
rename to addons/scripts/reliverse/relimter/core/tasks/linebreak-crlf-to-lf.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/move-eslint-disable-to-top.ts b/addons/scripts/reliverse/relimter/core/tasks/move-eslint-disable-to-top.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/move-eslint-disable-to-top.ts
rename to addons/scripts/reliverse/relimter/core/tasks/move-eslint-disable-to-top.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/no-unresolved-links.ts b/addons/scripts/reliverse/relimter/core/tasks/no-unresolved-links.ts
similarity index 87%
rename from addons/terminal/reliverse/relimter/core/tasks/no-unresolved-links.ts
rename to addons/scripts/reliverse/relimter/core/tasks/no-unresolved-links.ts
index 105dc837..c947afa0 100644
--- a/addons/terminal/reliverse/relimter/core/tasks/no-unresolved-links.ts
+++ b/addons/scripts/reliverse/relimter/core/tasks/no-unresolved-links.ts
@@ -1,16 +1,14 @@
// 🐞 Still in the production and may not work as expected! Please use at own risk!
-// ▶️ pnpm tsx addons\terminal\reliverse\relimter\core\tasks\no-unresolved-links.ts
+// ▶️ pnpm tsx addons\scripts\reliverse\relimter\core\tasks\no-unresolved-links.ts
-import { getCurrentDirname } from "@/browser/shared/utils";
-import { getRootDirname } from "@/terminal/shared/utils";
+import { getRootDirname } from "@/scripts/utils";
import { log } from "@clack/prompts";
import fs from "fs-extra";
import * as readline from "node:readline";
import { fetch } from "node-fetch-native";
import * as path from "pathe";
-const currentDirectory = getCurrentDirname(import.meta.url);
-const rootDirectory = getRootDirname(currentDirectory, 6);
+const rootDirectory = getRootDirname(import.meta.url, 6);
const SRC_FOLDER = path.join(rootDirectory, "src");
const APP_FOLDER = path.join(SRC_FOLDER, "app");
@@ -90,7 +88,7 @@ const processFile = async (filePath: string) => {
if (!found) {
log.error(`Unresolved relative link found in ${filePath}: ${href}`);
}
- } else if (!(await checkExternalLink(href ?? ""))) {
+ } else if (!(await checkExternalLink(href || ""))) {
log.error(`Unresolved external link found in ${filePath}: ${href}`);
}
}
diff --git a/addons/terminal/reliverse/relimter/core/tasks/patch-gitignore-file.ts b/addons/scripts/reliverse/relimter/core/tasks/patch-gitignore-file.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/patch-gitignore-file.ts
rename to addons/scripts/reliverse/relimter/core/tasks/patch-gitignore-file.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/removeEmptyLines.ts b/addons/scripts/reliverse/relimter/core/tasks/removeEmptyLines.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/removeEmptyLines.ts
rename to addons/scripts/reliverse/relimter/core/tasks/removeEmptyLines.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/seed-db.ts b/addons/scripts/reliverse/relimter/core/tasks/seed-db.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/seed-db.ts
rename to addons/scripts/reliverse/relimter/core/tasks/seed-db.ts
diff --git a/addons/terminal/reliverse/relimter/core/tasks/switcher.ts b/addons/scripts/reliverse/relimter/core/tasks/switcher.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/core/tasks/switcher.ts
rename to addons/scripts/reliverse/relimter/core/tasks/switcher.ts
diff --git a/addons/terminal/reliverse/relimter/eslint/index.ts b/addons/scripts/reliverse/relimter/eslint/index.ts
similarity index 94%
rename from addons/terminal/reliverse/relimter/eslint/index.ts
rename to addons/scripts/reliverse/relimter/eslint/index.ts
index 2ed9875d..e865816e 100644
--- a/addons/terminal/reliverse/relimter/eslint/index.ts
+++ b/addons/scripts/reliverse/relimter/eslint/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/scripts/reliverse/relimter/eslint/tasks/index.ts b/addons/scripts/reliverse/relimter/eslint/tasks/index.ts
new file mode 100644
index 00000000..802bc537
--- /dev/null
+++ b/addons/scripts/reliverse/relimter/eslint/tasks/index.ts
@@ -0,0 +1,42 @@
+import { getRandomQuote } from "@/scripts/reliverse/quotes";
+import { getCurrentDirname, getRootDirname } from "@/scripts/utils";
+import { config } from "@reliverse/core";
+import consola from "consola";
+import fs from "fs-extra";
+import * as path from "pathe";
+import pc from "picocolors";
+
+// 🀄 @reliverse/addons-relimter [v0.0.0]: Reliverse Formatter Linter
+const currentDirname = getCurrentDirname(import.meta.url);
+const rootDirname = getRootDirname(import.meta.url, 6);
+
+// TODO: Move technical things to a separate package called `@reliverse/addons-relimter`
+// export async function runRelimter(): Promise {
+// consola.warn("eslintCacheFilePath:", eslintCacheFilePath);
+const eslintCacheFilePath = path.join(
+ currentDirname,
+ `${rootDirname}/.eslintcache`,
+);
+
+if (fs.existsSync(eslintCacheFilePath)) {
+ await getRandomQuote();
+
+ consola.info(
+ ` If you or your company are using ${config.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n${pc.green("💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk")} \n`,
+ );
+
+ consola.info(
+ `${pc.dim("@reliverse/addons-relimter/eslint")} ⌛ Please wait, ESLint is processing your files...`,
+ );
+} else {
+ await getRandomQuote();
+
+ consola.info(
+ ` If you or your company are using ${config.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n${pc.green("💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk")} \n`,
+ );
+
+ consola.info(
+ // eslint-disable-next-line @stylistic/max-len
+ `${pc.dim("@reliverse/addons-relimter/eslint")} ⌛ Linting and fixing issues with ESLint can take a while on the first run, sometimes a few minutes if there are many problems to resolve. This is especially true when using the fix:putout-unstable command. Please be patient, as subsequent runs will be much faster.\n`,
+ );
+}
diff --git a/addons/terminal/reliverse/relimter/index.ts b/addons/scripts/reliverse/relimter/index.ts
similarity index 98%
rename from addons/terminal/reliverse/relimter/index.ts
rename to addons/scripts/reliverse/relimter/index.ts
index 62a48cb7..20e7faf4 100644
--- a/addons/terminal/reliverse/relimter/index.ts
+++ b/addons/scripts/reliverse/relimter/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/terminal/reliverse/relimter/magicast/index.ts b/addons/scripts/reliverse/relimter/magicast/index.ts
similarity index 94%
rename from addons/terminal/reliverse/relimter/magicast/index.ts
rename to addons/scripts/reliverse/relimter/magicast/index.ts
index dbf0210e..24868c9e 100644
--- a/addons/terminal/reliverse/relimter/magicast/index.ts
+++ b/addons/scripts/reliverse/relimter/magicast/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/terminal/reliverse/relimter/magicast/tasks/index.ts b/addons/scripts/reliverse/relimter/magicast/tasks/index.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/magicast/tasks/index.ts
rename to addons/scripts/reliverse/relimter/magicast/tasks/index.ts
diff --git a/addons/terminal/reliverse/relimter/magicast/tasks/switch-drizzle-driver.ts b/addons/scripts/reliverse/relimter/magicast/tasks/switch-drizzle-driver.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/magicast/tasks/switch-drizzle-driver.ts
rename to addons/scripts/reliverse/relimter/magicast/tasks/switch-drizzle-driver.ts
diff --git a/addons/terminal/reliverse/relimter/magicast/tasks/tests/index.ts b/addons/scripts/reliverse/relimter/magicast/tasks/tests/index.ts
similarity index 91%
rename from addons/terminal/reliverse/relimter/magicast/tasks/tests/index.ts
rename to addons/scripts/reliverse/relimter/magicast/tasks/tests/index.ts
index 3b04df03..e0bdef46 100644
--- a/addons/terminal/reliverse/relimter/magicast/tasks/tests/index.ts
+++ b/addons/scripts/reliverse/relimter/magicast/tasks/tests/index.ts
@@ -1,4 +1,4 @@
-import { getCurrentDirname } from "@/browser/shared/utils";
+import { getCurrentDirname } from "@/scripts/utils";
import consola from "consola";
import { loadFile, writeFile } from "magicast";
import { join, relative } from "pathe";
diff --git a/addons/terminal/reliverse/relimter/putout/index.ts b/addons/scripts/reliverse/relimter/putout/index.ts
similarity index 93%
rename from addons/terminal/reliverse/relimter/putout/index.ts
rename to addons/scripts/reliverse/relimter/putout/index.ts
index cac13eab..3f548458 100644
--- a/addons/terminal/reliverse/relimter/putout/index.ts
+++ b/addons/scripts/reliverse/relimter/putout/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
import pc from "picocolors";
diff --git a/addons/terminal/reliverse/relimter/putout/tasks/canary.ts b/addons/scripts/reliverse/relimter/putout/tasks/canary.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/putout/tasks/canary.ts
rename to addons/scripts/reliverse/relimter/putout/tasks/canary.ts
diff --git a/addons/terminal/reliverse/relimter/putout/tasks/index.ts b/addons/scripts/reliverse/relimter/putout/tasks/index.ts
similarity index 100%
rename from addons/terminal/reliverse/relimter/putout/tasks/index.ts
rename to addons/scripts/reliverse/relimter/putout/tasks/index.ts
diff --git a/addons/terminal/reliverse/relimter/python/data/find-eslint-dep-rules.json b/addons/scripts/reliverse/relimter/python/data/find-eslint-dep-rules.json
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/data/find-eslint-dep-rules.json
rename to addons/scripts/reliverse/relimter/python/data/find-eslint-dep-rules.json
diff --git a/addons/terminal/reliverse/relimter/python/data/script-manager-filter.json b/addons/scripts/reliverse/relimter/python/data/script-manager-filter.json
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/data/script-manager-filter.json
rename to addons/scripts/reliverse/relimter/python/data/script-manager-filter.json
diff --git a/addons/terminal/reliverse/relimter/python/index.py b/addons/scripts/reliverse/relimter/python/index.py
similarity index 92%
rename from addons/terminal/reliverse/relimter/python/index.py
rename to addons/scripts/reliverse/relimter/python/index.py
index 95724bfb..9967788e 100644
--- a/addons/terminal/reliverse/relimter/python/index.py
+++ b/addons/scripts/reliverse/relimter/python/index.py
@@ -2,19 +2,19 @@
# 🔥 Before learning this file, please ensure you've read "Python" section in README.md
# 👋 Please read the instruction below to learn even more on how to use this script manager
-# 👉 Run script manager using: py addons/reliverse/relimter/python/index.py
+# 👉 Run script manager using: py addons/scripts/reliverse/relimter/python/index.py
# This is a Python script that runs a Python script from a list of Python scripts in a directory.
-# This one may be a useful alternative to `addons/reliverse/relimter/python/index.ts` when it's failing.
+# This one may be a useful alternative to `addons/scripts/reliverse/relimter/python/index.ts` when it's failing.
# Please note that both script manager implementations are not fully finished and not fully tested.
-# Ensure you have the ".venv" folder located in the "addons/reliverse/relimter/python/tasks" folder (🔥 EXAMPLE FOR WINDOWS):
-# [1] Install https://astral.sh and run "venv" inside "cd addons/reliverse/relimter/python/tasks" folder.
+# Ensure you have the ".venv" folder located in the "addons/scripts/reliverse/relimter/python/tasks" folder (🔥 EXAMPLE FOR WINDOWS):
+# [1] Install https://astral.sh and run "venv" inside "cd addons/scripts/reliverse/relimter/python/tasks" folder.
# [2] Install the Python and Ruff extensions for VSCode.
# [3] Press "Ctrl+Shift+P" in VSCode --> ">Python: Select Interpreter" --> set this path (example for Windows):
# ".venv/Scripts/python.exe"
# [4] Run .venv/Scripts/activate from the root to activate the virtual environment.
-# [5] Navigate to the "addons/reliverse/relimter/python/tasks" directory by using the "cd" command in the terminal.
+# [5] Navigate to the "addons/scripts/reliverse/relimter/python/tasks" directory by using the "cd" command in the terminal.
# [6] And, finally, run "pip sync requirements.txt" command.
# Almost all scripts are untested. Please commit your code before running any script, just in case.
# No worries! We'll test if you have everything set up correctly.
@@ -73,7 +73,7 @@ def instructions() -> str:
# current_directory = (
# "addons\\reliverse\\relimter\\python\\tasks"
# if is_windows
- # else "addons/reliverse/relimter/python/tasks"
+ # else "addons/scripts/reliverse/relimter/python/tasks"
# )
# venv_path = ".venv\\Scripts\\python.exe" if is_windows else ".venv/bin/python3"
# venv_path_activate = (
@@ -86,7 +86,7 @@ def instructions() -> str:
"I'm particularly passionate about clean code. The book 'Clean Code' by Robert Martin is a must-have!\n"
"That's why I've developed numerous tools in Relivator. Over the past few months leading to Relivator 1.2.6, I've learned a lot.\n"
"To avoid manually rewriting code, I'm developing a unified script manager, @reliverse/relimter/python. This version is still very unstable.\n"
- "You can visit the 'addons/reliverse/relimter/python/index.py' file to learn more about how this script manager works.\n\n"
+ "You can visit the 'addons/scripts/reliverse/relimter/python/index.py' file to learn more about how this script manager works.\n\n"
"🔥 Most scripts are untested. Commit your code before running any script.\n"
"🌐 Need help? Visit our [Discord](https://discord.gg/Pb8uKbwpsJ).\n"
"🔧 Increase your VSCode terminal window size to avoid UI glitches.\n"
@@ -189,7 +189,7 @@ def main(script_index):
choices=[
"- Menu Mode (✅ recommended)",
"- Automatic Mode (⛔ Unstable | Runs all scripts one by one)",
- "- Configure Exclusions (💡 addons/reliverse/relimter/python/data/script-manager-filter.json)",
+ "- Configure Exclusions (💡 addons/scripts/reliverse/relimter/python/data/script-manager-filter.json)",
],
).execute()
if with_flag:
@@ -200,12 +200,12 @@ def main(script_index):
automatic_mode()
elif (
mode
- == "- Configure Exclusions (💡 addons/reliverse/relimter/python/data/script-manager-filter.json)"
+ == "- Configure Exclusions (💡 addons/scripts/reliverse/relimter/python/data/script-manager-filter.json)"
):
configure_exclusions()
else:
print(
- "⛔ Something went wrong. Please check def main(script_index) in addons/reliverse/relimter/python/index.py file."
+ "⛔ Something went wrong. Please check def main(script_index) in addons/scripts/reliverse/relimter/python/index.py file."
)
@@ -232,7 +232,7 @@ def automatic_mode_message() -> str:
"At the moment, this may (or may not) break your codebase, and additional manual work in the code may (or may not) be required. \n"
"If you are ready to take responsibility, press to proceed. Press to exit.\n\n"
"✅ P.S. In Relivator 1.2.6, only safe scripts are executed in this Automatic Mode, so you can try this mode if you \nhaven't changed exclusions in the following file (🔥 it's still highly recommended to commit your code first): \n"
- "addons/reliverse/relimter/python/data/script-manager-filter.json \n"
+ "addons/scripts/reliverse/relimter/python/data/script-manager-filter.json \n"
)
diff --git a/addons/terminal/reliverse/relimter/python/tasks/! USE AT OWN RISK !/.gitkeep b/addons/scripts/reliverse/relimter/python/tasks/! USE AT OWN RISK !/.gitkeep
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/! USE AT OWN RISK !/.gitkeep
rename to addons/scripts/reliverse/relimter/python/tasks/! USE AT OWN RISK !/.gitkeep
diff --git a/addons/terminal/reliverse/relimter/python/tasks/add-missing-ref-import.py b/addons/scripts/reliverse/relimter/python/tasks/add-missing-ref-import.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/add-missing-ref-import.py
rename to addons/scripts/reliverse/relimter/python/tasks/add-missing-ref-import.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/add-missing-url-import.py b/addons/scripts/reliverse/relimter/python/tasks/add-missing-url-import.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/add-missing-url-import.py
rename to addons/scripts/reliverse/relimter/python/tasks/add-missing-url-import.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py b/addons/scripts/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
similarity index 97%
rename from addons/terminal/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
rename to addons/scripts/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
index b411bc62..fb5b7a71 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
@@ -3,7 +3,7 @@
#
# Please make sure to back up your codebase before running this script.
#
-# ▶️ py addons/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
+# ▶️ py addons/scripts/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py
# This script automatically refactors JavaScript/TypeScript codebase to replace hard-coded numbers with named constants. The script will scan through files with specific extensions, detect hard-coded numbers, and replace them with meaningful named constants.
# @see https://blog.codacy.com/what-is-clean-code
diff --git a/addons/terminal/reliverse/relimter/python/tasks/barrel-files-to-direct-paths.py b/addons/scripts/reliverse/relimter/python/tasks/barrel-files-to-direct-paths.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/barrel-files-to-direct-paths.py
rename to addons/scripts/reliverse/relimter/python/tasks/barrel-files-to-direct-paths.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py b/addons/scripts/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py
similarity index 97%
rename from addons/terminal/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py
rename to addons/scripts/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py
index 88a4b658..1b8494dd 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py
@@ -29,7 +29,7 @@ def update_imports(file_path):
import_extension = match.group(3)
# Only update if the path contains a deeper directory structure within ~/components/Primitives
- if import_path.startswith("@/browser/reliverse/ui/"):
+ if import_path.startswith("@/components/ui/"):
new_import_path = "/".join(import_path.split("/")[:3])
new_import_statement = (
f"{import_statement}{new_import_path}{import_extension}"
diff --git a/addons/terminal/reliverse/relimter/python/tasks/block-to-line-comments.py b/addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py
similarity index 97%
rename from addons/terminal/reliverse/relimter/python/tasks/block-to-line-comments.py
rename to addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py
index 7579ede4..2ea226f1 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/block-to-line-comments.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py
@@ -1,5 +1,5 @@
# ⛔ WARNING: Not finished. Use at your own risk.
-# py addons/reliverse/relimter/python/tasks/block-to-line-comments.py
+# py addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py
import os
import re
diff --git a/addons/terminal/reliverse/relimter/python/tasks/check-non-existing-paths.py b/addons/scripts/reliverse/relimter/python/tasks/check-non-existing-paths.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/check-non-existing-paths.py
rename to addons/scripts/reliverse/relimter/python/tasks/check-non-existing-paths.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/check-path-existence.py b/addons/scripts/reliverse/relimter/python/tasks/check-path-existence.py
similarity index 96%
rename from addons/terminal/reliverse/relimter/python/tasks/check-path-existence.py
rename to addons/scripts/reliverse/relimter/python/tasks/check-path-existence.py
index af9ff8b8..5ee296f0 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/check-path-existence.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/check-path-existence.py
@@ -1,7 +1,7 @@
# 🐞 not fully finished and tested
# This script searches for the presence of specific patterns in TypeScript files.
# The script searches for join() usage and import statements of join from specific paths.
-# ▶️ py addons\terminal\reliverse\relimter\python\tasks\check-path-existence.py
+# ▶️ py addons\scripts\reliverse\relimter\python\tasks\check-path-existence.py
import os
import re
diff --git a/addons/terminal/reliverse/relimter/python/tasks/correct-comments-location.py b/addons/scripts/reliverse/relimter/python/tasks/correct-comments-location.py
similarity index 95%
rename from addons/terminal/reliverse/relimter/python/tasks/correct-comments-location.py
rename to addons/scripts/reliverse/relimter/python/tasks/correct-comments-location.py
index 5f0f28cd..a736f2ab 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/correct-comments-location.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/correct-comments-location.py
@@ -1,5 +1,5 @@
# 🐞 Please commit the changes to the repository before running the script.
-# >> py addons/reliverse/relimter/python/tasks/correct-comments-location.py
+# >> py addons/scripts/reliverse/relimter/python/tasks/correct-comments-location.py
import os
import re
diff --git a/addons/terminal/reliverse/relimter/python/tasks/crypto-to-uncrypto.py b/addons/scripts/reliverse/relimter/python/tasks/crypto-to-uncrypto.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/crypto-to-uncrypto.py
rename to addons/scripts/reliverse/relimter/python/tasks/crypto-to-uncrypto.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/cspell-remove-unused.py b/addons/scripts/reliverse/relimter/python/tasks/cspell-remove-unused.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/cspell-remove-unused.py
rename to addons/scripts/reliverse/relimter/python/tasks/cspell-remove-unused.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/database-compare.py b/addons/scripts/reliverse/relimter/python/tasks/database-compare.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/database-compare.py
rename to addons/scripts/reliverse/relimter/python/tasks/database-compare.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/database-convert.py b/addons/scripts/reliverse/relimter/python/tasks/database-convert.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/database-convert.py
rename to addons/scripts/reliverse/relimter/python/tasks/database-convert.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/error-to-modern.py b/addons/scripts/reliverse/relimter/python/tasks/error-to-modern.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/error-to-modern.py
rename to addons/scripts/reliverse/relimter/python/tasks/error-to-modern.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/eslint-find-off.py b/addons/scripts/reliverse/relimter/python/tasks/eslint-find-off.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/eslint-find-off.py
rename to addons/scripts/reliverse/relimter/python/tasks/eslint-find-off.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/extract-pages-keywords.py b/addons/scripts/reliverse/relimter/python/tasks/extract-pages-keywords.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/extract-pages-keywords.py
rename to addons/scripts/reliverse/relimter/python/tasks/extract-pages-keywords.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/find-deprecated-code.py b/addons/scripts/reliverse/relimter/python/tasks/find-deprecated-code.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/find-deprecated-code.py
rename to addons/scripts/reliverse/relimter/python/tasks/find-deprecated-code.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/find-eslint-dep-rules.py b/addons/scripts/reliverse/relimter/python/tasks/find-eslint-dep-rules.py
similarity index 95%
rename from addons/terminal/reliverse/relimter/python/tasks/find-eslint-dep-rules.py
rename to addons/scripts/reliverse/relimter/python/tasks/find-eslint-dep-rules.py
index 97eab945..01b18887 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/find-eslint-dep-rules.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/find-eslint-dep-rules.py
@@ -44,7 +44,7 @@ def print_rule_with_location(file_path, line_num, rule, why, index):
def main():
- json_file = "addons/reliverse/relimter/python/data/find-eslint-dep-rules.json"
+ json_file = "addons/scripts/reliverse/relimter/python/data/find-eslint-dep-rules.json"
eslint_config = "eslint.config.js"
deprecated_rules = read_json(json_file)
diff --git a/addons/terminal/reliverse/relimter/python/tasks/fix-import-paths-case.py b/addons/scripts/reliverse/relimter/python/tasks/fix-import-paths-case.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/fix-import-paths-case.py
rename to addons/scripts/reliverse/relimter/python/tasks/fix-import-paths-case.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/fix-type-imports.py b/addons/scripts/reliverse/relimter/python/tasks/fix-type-imports.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/fix-type-imports.py
rename to addons/scripts/reliverse/relimter/python/tasks/fix-type-imports.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/fix-use-directives.py b/addons/scripts/reliverse/relimter/python/tasks/fix-use-directives.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/fix-use-directives.py
rename to addons/scripts/reliverse/relimter/python/tasks/fix-use-directives.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/fs-to-fs-extra.py b/addons/scripts/reliverse/relimter/python/tasks/fs-to-fs-extra.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/fs-to-fs-extra.py
rename to addons/scripts/reliverse/relimter/python/tasks/fs-to-fs-extra.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/import-comments.py b/addons/scripts/reliverse/relimter/python/tasks/import-comments.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/import-comments.py
rename to addons/scripts/reliverse/relimter/python/tasks/import-comments.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/improve-seo-indexing.py b/addons/scripts/reliverse/relimter/python/tasks/improve-seo-indexing.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/improve-seo-indexing.py
rename to addons/scripts/reliverse/relimter/python/tasks/improve-seo-indexing.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/islands-to-components.py b/addons/scripts/reliverse/relimter/python/tasks/islands-to-components.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/islands-to-components.py
rename to addons/scripts/reliverse/relimter/python/tasks/islands-to-components.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/json-parse-to-destr.py b/addons/scripts/reliverse/relimter/python/tasks/json-parse-to-destr.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/json-parse-to-destr.py
rename to addons/scripts/reliverse/relimter/python/tasks/json-parse-to-destr.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/json-to-superjson.py b/addons/scripts/reliverse/relimter/python/tasks/json-to-superjson.py
similarity index 96%
rename from addons/terminal/reliverse/relimter/python/tasks/json-to-superjson.py
rename to addons/scripts/reliverse/relimter/python/tasks/json-to-superjson.py
index c35f4d2c..a16e2fb7 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/json-to-superjson.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/json-to-superjson.py
@@ -39,7 +39,7 @@ def process_file(file_path):
for line in content:
new_line = re.sub(r"\bJSON\.stringify\b", "superjson.stringify", line)
- new_line = re.sub(r"\bJSON\.parse\b", "superjson.parse", new_line)
+ # new_line = re.sub(r"\bJSON\.parse\b", "superjson.parse", new_line)
if new_line != line:
modified = True
total_replacements += 1
diff --git a/addons/terminal/reliverse/relimter/python/tasks/knip-remove-ignores.py b/addons/scripts/reliverse/relimter/python/tasks/knip-remove-ignores.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/knip-remove-ignores.py
rename to addons/scripts/reliverse/relimter/python/tasks/knip-remove-ignores.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/linebreak-crlf-to-lf.py b/addons/scripts/reliverse/relimter/python/tasks/linebreak-crlf-to-lf.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/linebreak-crlf-to-lf.py
rename to addons/scripts/reliverse/relimter/python/tasks/linebreak-crlf-to-lf.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/list-disable-directives.py b/addons/scripts/reliverse/relimter/python/tasks/list-disable-directives.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/list-disable-directives.py
rename to addons/scripts/reliverse/relimter/python/tasks/list-disable-directives.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/list-variables-types.py b/addons/scripts/reliverse/relimter/python/tasks/list-variables-types.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/list-variables-types.py
rename to addons/scripts/reliverse/relimter/python/tasks/list-variables-types.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/math-to-mathjs.py b/addons/scripts/reliverse/relimter/python/tasks/math-to-mathjs.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/math-to-mathjs.py
rename to addons/scripts/reliverse/relimter/python/tasks/math-to-mathjs.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/migrate-from-barrel-fix-imports.py b/addons/scripts/reliverse/relimter/python/tasks/migrate-from-barrel-fix-imports.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/migrate-from-barrel-fix-imports.py
rename to addons/scripts/reliverse/relimter/python/tasks/migrate-from-barrel-fix-imports.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/move-use-client-to-top.py b/addons/scripts/reliverse/relimter/python/tasks/move-use-client-to-top.py
similarity index 92%
rename from addons/terminal/reliverse/relimter/python/tasks/move-use-client-to-top.py
rename to addons/scripts/reliverse/relimter/python/tasks/move-use-client-to-top.py
index 2bd29917..f028888c 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/move-use-client-to-top.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/move-use-client-to-top.py
@@ -1,5 +1,5 @@
# 🐞 Please commit the changes to the repository before running the script.
-# >> py addons/reliverse/relimter/python/tasks/move-use-client-to-top.py
+# >> py addons/scripts/reliverse/relimter/python/tasks/move-use-client-to-top.py
import os
diff --git a/addons/terminal/reliverse/relimter/python/tasks/named-imports.py b/addons/scripts/reliverse/relimter/python/tasks/named-imports.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/named-imports.py
rename to addons/scripts/reliverse/relimter/python/tasks/named-imports.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/node-fetch-native.py b/addons/scripts/reliverse/relimter/python/tasks/node-fetch-native.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/node-fetch-native.py
rename to addons/scripts/reliverse/relimter/python/tasks/node-fetch-native.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/parse-content.py b/addons/scripts/reliverse/relimter/python/tasks/parse-content.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/parse-content.py
rename to addons/scripts/reliverse/relimter/python/tasks/parse-content.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/path-to-pathe.py b/addons/scripts/reliverse/relimter/python/tasks/path-to-pathe.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/path-to-pathe.py
rename to addons/scripts/reliverse/relimter/python/tasks/path-to-pathe.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/print-project-tree.py b/addons/scripts/reliverse/relimter/python/tasks/print-project-tree.py
similarity index 97%
rename from addons/terminal/reliverse/relimter/python/tasks/print-project-tree.py
rename to addons/scripts/reliverse/relimter/python/tasks/print-project-tree.py
index 3bed6b37..390ce3bb 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/print-project-tree.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/print-project-tree.py
@@ -104,7 +104,7 @@ def main():
md_file.write(
"# Project Tree Structure\n\n"
"Use `Cmd/Ctrl+Shift+P -> >Markdown: Open Preview` to view this file in VSCode (ensure you've Markdown extension installed)\n\n"
- "Run the following script to update this tree: `py addons/reliverse/relimter/python/tasks/scripts/print-project-tree.py`\n\n"
+ "Run the following script to update this tree: `py addons/scripts/reliverse/relimter/python/tasks/scripts/print-project-tree.py`\n\n"
"```md\n"
)
md_file.write(f"{root_directory}\n")
diff --git a/addons/scripts/reliverse/relimter/python/tasks/relimter-template-script.py b/addons/scripts/reliverse/relimter/python/tasks/relimter-template-script.py
new file mode 100644
index 00000000..967502ba
--- /dev/null
+++ b/addons/scripts/reliverse/relimter/python/tasks/relimter-template-script.py
@@ -0,0 +1,4 @@
+# Relimter Template Script
+
+# pnpm tsx addons/scripts/reliverse/relimter/python --template
+print("Hello, Reliverse!")
diff --git a/addons/terminal/reliverse/relimter/python/tasks/remove-duplicates-comments.py b/addons/scripts/reliverse/relimter/python/tasks/remove-duplicates-comments.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/remove-duplicates-comments.py
rename to addons/scripts/reliverse/relimter/python/tasks/remove-duplicates-comments.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/remove-empty-lines.py b/addons/scripts/reliverse/relimter/python/tasks/remove-empty-lines.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/remove-empty-lines.py
rename to addons/scripts/reliverse/relimter/python/tasks/remove-empty-lines.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/remove-unused-cn-imports.py b/addons/scripts/reliverse/relimter/python/tasks/remove-unused-cn-imports.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/remove-unused-cn-imports.py
rename to addons/scripts/reliverse/relimter/python/tasks/remove-unused-cn-imports.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/save-file-multiple-times.py b/addons/scripts/reliverse/relimter/python/tasks/save-file-multiple-times.py
similarity index 94%
rename from addons/terminal/reliverse/relimter/python/tasks/save-file-multiple-times.py
rename to addons/scripts/reliverse/relimter/python/tasks/save-file-multiple-times.py
index f5b1c117..64cff5d3 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/save-file-multiple-times.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/save-file-multiple-times.py
@@ -1,4 +1,4 @@
-# 👉 use "py addons/reliverse/relimter/python/tasks/save-file-multiple-times.py" instead 👈
+# 👉 use "py addons/scripts/reliverse/relimter/python/tasks/save-file-multiple-times.py" instead 👈
import sys
import time
diff --git a/addons/terminal/reliverse/relimter/python/tasks/search-used-brands.py b/addons/scripts/reliverse/relimter/python/tasks/search-used-brands.py
similarity index 98%
rename from addons/terminal/reliverse/relimter/python/tasks/search-used-brands.py
rename to addons/scripts/reliverse/relimter/python/tasks/search-used-brands.py
index b728dd0b..f440d6d8 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/search-used-brands.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/search-used-brands.py
@@ -1,5 +1,5 @@
# Extract brands, websites, NPM libs, and etc used in the project
-# py addons/reliverse/relimter/python/tasks/search-used-brands.py
+# py addons/scripts/reliverse/relimter/python/tasks/search-used-brands.py
import fnmatch
import json
diff --git a/addons/scripts/reliverse/relimter/python/tasks/tags-to-components.py b/addons/scripts/reliverse/relimter/python/tasks/tags-to-components.py
new file mode 100644
index 00000000..0ce82f40
--- /dev/null
+++ b/addons/scripts/reliverse/relimter/python/tasks/tags-to-components.py
@@ -0,0 +1,87 @@
+# 🐞 NOT FINISHED 🔥 USE AT OWN RISK
+
+import os
+import re
+import glob
+
+def replace_tags(content):
+ # Replacing with
+ content, p_replaced = re.subn(r']*)>', r'', content)
+ content, _ = re.subn(r'
', r' ', content)
+
+ # Replacing with
+ content, span_replaced = re.subn(r']*)>', r'', content)
+ content, _ = re.subn(r' ', r' ', content)
+
+ # Replacing to with to
+ h_replaced = False
+ for i in range(1, 5):
+ content, h_replaced_tmp = re.subn(f']*)>', f'', content)
+ content, _ = re.subn(f' ', ' ', content)
+ h_replaced = h_replaced or h_replaced_tmp > 0
+
+ # Replacing with
+ content, link_replaced = re.subn(r' ]*)>', r' ', content)
+ content, _ = re.subn(r'', r'', content)
+
+ # Replacing with
+ content, a_replaced = re.subn(r' ]*)>', r' ', content)
+ content, _ = re.subn(r' ', r'', content)
+
+ # Replacing with
+ content, header_replaced = re.subn(r']*)>', r'', content)
+ content, _ = re.subn(r' ', r' ', content)
+
+ # Replacing with
+ content, footer_replaced = re.subn(r']*)>', r'', content)
+ content, _ = re.subn(r' ', r' ', content)
+
+ replacements_made = p_replaced > 0 or span_replaced > 0 or h_replaced or link_replaced > 0 or a_replaced > 0 or header_replaced > 0 or footer_replaced > 0
+
+ return content, replacements_made
+
+def add_imports(content):
+ imports = {
+ 'Paragraph': 'import { Paragraph } from "@/components/ui/paragraph";',
+ 'Span': 'import { Span } from "@/components/ui/span";',
+ 'Heading': 'import { Heading } from "@/components/ui/heading";',
+ 'Link': 'import { Link } from "@/components/ui/link";',
+ 'Header': 'import { Header } from "@/components/ui/header";',
+ 'Footer': 'import { Footer } from "@/components/ui/footer";'
+ }
+
+ new_imports = []
+ for component, import_statement in imports.items():
+ if component in content and import_statement not in content:
+ new_imports.append(import_statement)
+
+ if new_imports:
+ import_section = '\n'.join(new_imports) + '\n'
+ if 'import ' in content:
+ content = re.sub(r'(import [^\n]+;[\n]*)', r'\1' + import_section, content, count=1)
+ else:
+ content = import_section + content
+
+ return content
+
+def process_files(root_folder):
+ # Glob pattern to find .tsx files
+ pattern = os.path.join(root_folder, '**', '*.tsx')
+ files = glob.glob(pattern, recursive=True)
+
+ for file_path in files:
+ with open(file_path, 'r', encoding='utf-8') as file:
+ content = file.read()
+
+ updated_content, replacements_made = replace_tags(content)
+
+ if replacements_made:
+ updated_content = add_imports(updated_content)
+ with open(file_path, 'w', encoding='utf-8') as file:
+ file.write(updated_content)
+
+if __name__ == "__main__":
+ # Process the src and addons folders
+ for folder in ['src', 'addons']:
+ process_files(folder)
+ print("Tag replacement and import addition completed.")
diff --git a/addons/terminal/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py b/addons/scripts/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py
rename to addons/scripts/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/transform-classnames-cn-to-string.py b/addons/scripts/reliverse/relimter/python/tasks/transform-classnames-cn-to-string.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/transform-classnames-cn-to-string.py
rename to addons/scripts/reliverse/relimter/python/tasks/transform-classnames-cn-to-string.py
diff --git a/addons/terminal/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py b/addons/scripts/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py
similarity index 96%
rename from addons/terminal/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py
rename to addons/scripts/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py
index f5b7051b..d58799ef 100644
--- a/addons/terminal/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py
+++ b/addons/scripts/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py
@@ -29,7 +29,7 @@ def process_file(filepath):
line_parts.insert(1, "cn,")
lines[utils_import_line] = " ".join(line_parts) + "\n"
elif not cn_imported:
- lines.insert(0, 'import { cn } from "@/browser/shared/utils";\n')
+ lines.insert(0, 'import { cn } from "@/utils";\n')
for line in lines:
match = class_name_pattern.search(line.strip())
diff --git a/addons/terminal/reliverse/relimter/python/tasks/types-info.py b/addons/scripts/reliverse/relimter/python/tasks/types-info.py
similarity index 100%
rename from addons/terminal/reliverse/relimter/python/tasks/types-info.py
rename to addons/scripts/reliverse/relimter/python/tasks/types-info.py
diff --git a/addons/terminal/reliverse/remotion/Content.tsx b/addons/scripts/reliverse/remotion/Content.tsx
similarity index 100%
rename from addons/terminal/reliverse/remotion/Content.tsx
rename to addons/scripts/reliverse/remotion/Content.tsx
diff --git a/addons/terminal/reliverse/remotion/Main.tsx b/addons/scripts/reliverse/remotion/Main.tsx
similarity index 100%
rename from addons/terminal/reliverse/remotion/Main.tsx
rename to addons/scripts/reliverse/remotion/Main.tsx
diff --git a/addons/terminal/reliverse/remotion/Root.tsx b/addons/scripts/reliverse/remotion/Root.tsx
similarity index 100%
rename from addons/terminal/reliverse/remotion/Root.tsx
rename to addons/scripts/reliverse/remotion/Root.tsx
diff --git a/addons/terminal/reliverse/remotion/cache.ts b/addons/scripts/reliverse/remotion/cache.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/cache.ts
rename to addons/scripts/reliverse/remotion/cache.ts
diff --git a/addons/terminal/reliverse/remotion/constants.ts b/addons/scripts/reliverse/remotion/constants.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/constants.ts
rename to addons/scripts/reliverse/remotion/constants.ts
diff --git a/addons/terminal/reliverse/remotion/fetch-data.ts b/addons/scripts/reliverse/remotion/fetch-data.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/fetch-data.ts
rename to addons/scripts/reliverse/remotion/fetch-data.ts
diff --git a/addons/terminal/reliverse/remotion/gh-styles.css b/addons/scripts/reliverse/remotion/gh-styles.css
similarity index 100%
rename from addons/terminal/reliverse/remotion/gh-styles.css
rename to addons/scripts/reliverse/remotion/gh-styles.css
diff --git a/addons/terminal/reliverse/remotion/index.ts b/addons/scripts/reliverse/remotion/index.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/index.ts
rename to addons/scripts/reliverse/remotion/index.ts
diff --git a/addons/terminal/reliverse/remotion/repo.tsx b/addons/scripts/reliverse/remotion/repo.tsx
similarity index 100%
rename from addons/terminal/reliverse/remotion/repo.tsx
rename to addons/scripts/reliverse/remotion/repo.tsx
diff --git a/addons/terminal/reliverse/remotion/utils.ts b/addons/scripts/reliverse/remotion/utils.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/utils.ts
rename to addons/scripts/reliverse/remotion/utils.ts
diff --git a/addons/terminal/reliverse/remotion/via-graphql.ts b/addons/scripts/reliverse/remotion/via-graphql.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/via-graphql.ts
rename to addons/scripts/reliverse/remotion/via-graphql.ts
diff --git a/addons/terminal/reliverse/remotion/via-rest.ts b/addons/scripts/reliverse/remotion/via-rest.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/via-rest.ts
rename to addons/scripts/reliverse/remotion/via-rest.ts
diff --git a/addons/terminal/reliverse/remotion/wait-for-no-input.ts b/addons/scripts/reliverse/remotion/wait-for-no-input.ts
similarity index 100%
rename from addons/terminal/reliverse/remotion/wait-for-no-input.ts
rename to addons/scripts/reliverse/remotion/wait-for-no-input.ts
diff --git a/addons/terminal/reliverse/template/index.ts b/addons/scripts/reliverse/template/index.ts
similarity index 96%
rename from addons/terminal/reliverse/template/index.ts
rename to addons/scripts/reliverse/template/index.ts
index f094b006..23f83c1e 100644
--- a/addons/terminal/reliverse/template/index.ts
+++ b/addons/scripts/reliverse/template/index.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
diff --git a/addons/scripts/utils/addon.ts b/addons/scripts/utils/addon.ts
new file mode 100644
index 00000000..e5ca3588
--- /dev/null
+++ b/addons/scripts/utils/addon.ts
@@ -0,0 +1,189 @@
+import type {
+ InstallCommand,
+ PackageManagerRunner,
+ PackageManagerType,
+} from "@/types";
+import type { Resolvable } from "citty";
+
+import { getRootDirname } from "@/scripts/utils";
+import {
+ findInstallCommand,
+ findPackageManagerRunner,
+ findPackageManagerType,
+ readPackageJson,
+} from "@/scripts/utils/pm";
+import { log } from "@clack/prompts";
+import fs from "fs-extra";
+import { cwd } from "node:process";
+import { join } from "pathe";
+import pc from "picocolors";
+import prettyjson from "prettyjson";
+
+export const defineAddon = (
+ emoji: string,
+ title: string,
+ action: string,
+ keys: string,
+) => {
+ // eslint-disable-next-line @stylistic/max-len
+ return `${emoji} ${pc.dim(title)} Choose ${pc.cyan(action)} by pressing ${pc.cyan(`${keys} (or press to exit)`)}\n`;
+};
+
+export const defineTask = (emoji: string, title: string, action: string) => {
+ return `${emoji} ${pc.dim(title)} Please wait until ${action}.\n`;
+};
+
+export function sortArgs>(arguments_: T): T {
+ return Object.fromEntries(
+ Object.entries(arguments_ as any).sort(([a], [b]) => a.localeCompare(b)),
+ ) as T;
+}
+
+export const formatError = (error: any) =>
+ error ? `\n${prettyjson.render(error)}` : "";
+
+export function wait(ms: number) {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
+
+let pmFetched = false;
+let pm: PackageManagerType = "npm";
+let pmCommand: InstallCommand = "install";
+let pmRunner: PackageManagerRunner = "npx";
+
+export function getPMAndCommand() {
+ if (pmFetched) {
+ return {
+ command: pmCommand,
+ installCommand: `${pm} ${pmCommand}`,
+ pm,
+ runner: pmRunner,
+ };
+ }
+
+ const directory = getRootDirname(import.meta.url, 2);
+
+ pm = findPackageManagerType(directory, "npm") as PackageManagerType;
+ pmCommand = findInstallCommand(pm) as InstallCommand;
+ pmFetched = true;
+ pmRunner = findPackageManagerRunner(directory) as PackageManagerRunner;
+
+ return {
+ command: pmCommand,
+ installCommand: `${pm} ${pmCommand}`,
+ pm,
+ runner: pmRunner,
+ };
+}
+
+// function readDirRecursively(dir: string): string[] {
+// const entries = readdirSync(dir, { withFileTypes: true });
+
+// return entries.flatMap((entry) => {
+// const fullPath = join(dir, entry.name);
+
+// return entry.isDirectory() ? readDirRecursively(fullPath) : [fullPath];
+// });
+// }
+
+export async function getLocalDependencies() {
+ const packageJsonPath = join(cwd(), "package.json");
+
+ if (!fs.existsSync(packageJsonPath)) {
+ log.error("Missing package.json");
+
+ return [];
+ }
+
+ let packageJson: {
+ dependencies?: Record;
+ devDependencies?: Record;
+ } = {};
+
+ const dependencies = packageJson.dependencies || {};
+
+ try {
+ packageJson = await readPackageJson();
+ } catch (error) {
+ log.error("Invalid package.json, JSON parsing failed");
+ console.error("json parse error:", error);
+
+ return [];
+ }
+
+ if (Object.keys(dependencies).length === 0) {
+ log.error("Missing dependencies section in package.json");
+
+ return [];
+ }
+
+ for (const [key, value] of Object.entries(dependencies)) {
+ if (typeof value !== "string") {
+ log.error(
+ `Invalid dependency ${key}: ${value}, expected string, got ${typeof value}`,
+ );
+
+ return [];
+ }
+ }
+
+ const nodeModulesPath = join(cwd(), "node_modules");
+
+ if (!fs.existsSync(nodeModulesPath)) {
+ const pm = findPackageManagerType(
+ getRootDirname(import.meta.url, 2),
+ "npm",
+ );
+ const installCmd = findInstallCommand(pm);
+
+ log.error(`Missing node_modules folder, please run ${pm} ${installCmd}`);
+
+ return [];
+ }
+
+ let anyInvalid = false;
+ const dependenciesObject = await Promise.all(
+ Object.entries(dependencies).map(async ([key, value]) => {
+ const dependencyFolderPath = join(nodeModulesPath, key);
+
+ if (!fs.existsSync(dependencyFolderPath)) {
+ anyInvalid = true;
+ const pm = findPackageManagerType(
+ getRootDirname(import.meta.url, 2),
+ "npm",
+ );
+ const installCmd = findInstallCommand(pm);
+
+ log.error(`Missing dependency ${key}, please run ${pm} ${installCmd}`);
+
+ return { name: key, version: value };
+ }
+
+ // try {
+ // const files = readDirRecursively(dependencyFolderPath);
+ // } catch (error) {
+ // log.error(`Error reading node_modules files for ${key} package`);
+ // console.error(error);
+
+ // return null;
+ // }
+
+ return {
+ name: key,
+ version: value,
+ };
+ }),
+ ).catch(() => []);
+
+ if (anyInvalid) {
+ console.error("Some dependencies are missing", dependenciesObject || []);
+
+ return [];
+ }
+
+ return dependenciesObject as {
+ name: string;
+ native: boolean;
+ version: string;
+ }[];
+}
diff --git a/addons/scripts/utils/files.ts b/addons/scripts/utils/files.ts
new file mode 100644
index 00000000..a31930b0
--- /dev/null
+++ b/addons/scripts/utils/files.ts
@@ -0,0 +1,63 @@
+import fs from "fs-extra";
+import { dirname, join } from "pathe";
+import { fileURLToPath } from "url";
+
+export function getCurrentDirname(importMetaUrl: string) {
+ return dirname(fileURLToPath(importMetaUrl));
+}
+
+export function getRootDirname(
+ importMetaUrl: string,
+ doubleDotsRepeat: number,
+) {
+ const currentDirname = getCurrentDirname(importMetaUrl);
+ const backPath = "../".repeat(doubleDotsRepeat);
+
+ // @see https://daily.dev/blog/join-method-javascript-best-practices
+ return join(currentDirname, backPath);
+}
+
+export async function removeFile(filePath: string) {
+ try {
+ await fs.unlink(filePath);
+ } catch (error) {
+ throw new Error("⛔ Could not read the file.", {
+ cause: error,
+ });
+ }
+}
+
+export async function fileExists(path: string): Promise {
+ try {
+ await fs.access(path);
+
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+export function getFoldersInDirectory(directory: string): string[] {
+ return fs
+ .readdirSync(directory, {
+ withFileTypes: true,
+ })
+ .filter((dirent) => dirent.isDirectory())
+ .map((dirent) => dirent.name);
+}
+
+export async function removeFolder(folderPath: string) {
+ const files = fs.readdirSync(folderPath);
+
+ for (const file of files) {
+ const filePath = join(folderPath, file);
+
+ if (fs.lstatSync(filePath).isDirectory()) {
+ await removeFolder(filePath);
+ } else {
+ fs.unlinkSync(filePath);
+ }
+ }
+
+ fs.rmdirSync(folderPath);
+}
diff --git a/addons/browser/shared/utils/index.ts b/addons/scripts/utils/index.ts
similarity index 50%
rename from addons/browser/shared/utils/index.ts
rename to addons/scripts/utils/index.ts
index 6d05f5fa..1635fb77 100644
--- a/addons/browser/shared/utils/index.ts
+++ b/addons/scripts/utils/index.ts
@@ -1,3 +1,3 @@
-export * from "./cn";
+export * from "./addon";
export * from "./files";
diff --git a/addons/scripts/utils/pm.ts b/addons/scripts/utils/pm.ts
new file mode 100644
index 00000000..ad333546
--- /dev/null
+++ b/addons/scripts/utils/pm.ts
@@ -0,0 +1,93 @@
+import destr from "destr";
+import fs from "fs-extra";
+import { getCurrentWorkingDirectory } from "packageJson";
+import { join } from "pathe";
+
+type PackageJson = {
+ [key: string]: any;
+ dependencies?: Record;
+ devDependencies?: Record;
+};
+
+export const findPackageManagerType = (
+ path = ".",
+ defaultPackageManager = "unknown",
+) => {
+ const bunPath = `${path}/bun.lockb`;
+ const pnpmPath = `${path}/pnpm-lock.yaml`;
+ const yarnPath = `${path}/yarn.lock`;
+ const npmPath = `${path}/package-lock.json`;
+
+ if (fs.existsSync(bunPath)) {
+ return "bun";
+ }
+
+ if (fs.existsSync(pnpmPath)) {
+ return "pnpm";
+ }
+
+ if (fs.existsSync(yarnPath)) {
+ return "yarn";
+ }
+
+ if (fs.existsSync(npmPath)) {
+ return "npm";
+ }
+
+ return defaultPackageManager;
+};
+
+export const findInstallCommand = (
+ packageManagerType = findPackageManagerType(),
+ prefix = false,
+) => {
+ switch (packageManagerType) {
+ case "bun":
+ return prefix ? "bun install" : "install";
+ case "npm":
+ return prefix ? "npm install" : "install";
+ case "pnpm":
+ return prefix ? "pnpm install" : "install";
+ case "unknown":
+ return prefix ? "unknown unknown" : "unknown";
+ case "yarn":
+ return prefix ? "yarn install" : "install";
+ default:
+ return prefix ? "npm install" : "install";
+ }
+};
+
+export const findPackageManagerRunner = (
+ path = ".",
+ defaultPackageManagerRunner = "npx",
+) => {
+ const bunPath = `${path}/bun.lockb`;
+ const pnpmPath = `${path}/pnpm-lock.yaml`;
+ const yarnPath = `${path}/yarn.lock`;
+ const npmPath = `${path}/package-lock.json`;
+
+ if (fs.existsSync(bunPath)) {
+ return "bunx";
+ }
+
+ if (fs.existsSync(pnpmPath)) {
+ return "pnpm exec";
+ }
+
+ if (fs.existsSync(yarnPath)) {
+ return "yarn dlx";
+ }
+
+ if (fs.existsSync(npmPath)) {
+ return "npx";
+ }
+
+ return defaultPackageManagerRunner;
+};
+
+export async function readPackageJson(): Promise {
+ const packageJsonPath = join(getCurrentWorkingDirectory(), "package.json");
+ const packageJson = fs.readFileSync(packageJsonPath, "utf8");
+
+ return destr(packageJson) as PackageJson;
+}
diff --git a/addons/scripts/utils/types/index.ts b/addons/scripts/utils/types/index.ts
new file mode 100644
index 00000000..fc378061
--- /dev/null
+++ b/addons/scripts/utils/types/index.ts
@@ -0,0 +1 @@
+export * from "../../../types/reliverse/string";
diff --git a/addons/server/index.ts b/addons/server/index.ts
index fc2ed73c..0b37cbbd 100644
--- a/addons/server/index.ts
+++ b/addons/server/index.ts
@@ -1,46 +1,42 @@
-// ?| It's the same thing:
-// ?| addons/server = src/server = src/lib
-//
/* eslint-disable @stylistic/max-len */
-//
+// ?| It's the same thing: addons/server = src/server = src/lib
// ?| The following are the author's "thoughts spoken aloud". Not everything may be true and should be verified.
// Did you know you can make imports more convenient in your project? You can use `index.ts` files to re-export items, streamlining the import process. However, ensure server-only code remains in the `server` folder. Code that runs on both server and client sides should be placed in the `utils` folder.
// Relivator 1.2.6 does not follow these guidelines, so we need to correct this in version 1.3.0. Typically, server functions are named like `getDoSomething`.
// Additionally, avoid importing code from the `server` folder into `.tsx` files that use React Hooks (e.g., `useHookName`). The exception is when the component utilizes `useTransition` or similar hooks, which enable performing Server Actions within the client component.
-//
// =======================================================================
-// Re-export from: actions
+export * from "./reliverse/api/uploadthing/core";
-export * from "./reliverse/actions/cart";
+export * from "./reliverse/api/uploadthing/react";
-export * from "./reliverse/actions/generate";
+export * from "./reliverse/cart";
-export * from "./reliverse/actions/notification";
+export * from "./reliverse/currency/currencyValidation";
-export * from "./reliverse/actions/order";
+export * from "./reliverse/errors/helpers/auth";
-export * from "./reliverse/actions/post";
+export * from "./reliverse/errors/helpers/field";
-export * from "./reliverse/actions/product";
+export * from "./reliverse/errors/helpers/server";
-export * from "./reliverse/actions/signin";
+export * from "./reliverse/errors/helpers/server/api-error";
-export * from "./reliverse/actions/store";
+export * from "./reliverse/errors/helpers/server/error-response";
-// Re-export from: api/uploadthing
+export * from "./reliverse/errors/helpers/server/nextjs-error";
-export * from "./reliverse/api/uploadthing/core";
+export * from "./reliverse/errors/helpers/server/unauthorized-error";
-export * from "./reliverse/api/uploadthing/react";
+export * from "./reliverse/errors/helpers/server/validation-error";
-// Re-export from: etc
+export * from "./reliverse/errors/message";
-export * from "./reliverse/cart";
+export * from "./reliverse/errors/modern";
-export * from "./reliverse/currency/currencyValidation";
+export * from "./reliverse/errors/plugin";
-export * from "./reliverse/currency/errorMessage";
+export * from "./reliverse/errors/test";
export * from "./reliverse/funcs/client";
@@ -52,50 +48,22 @@ export * from "./reliverse/mw";
export * from "./reliverse/pattern";
-// Re-export from: etc/v2/currency
-
export * from "./reliverse/plan";
export * from "./reliverse/queries/notification";
-// Re-export from: funcs
-
export * from "./reliverse/queries/product";
export * from "./reliverse/queries/store";
export * from "./reliverse/queries/user";
-// Re-export from: queries
-
export * from "./reliverse/query";
-export * from "./reliverse/resend/index";
+export * from "./reliverse/resend";
export * from "./reliverse/string";
export * from "./reliverse/trpc";
-// Re-export from: resend
-
export * from "./reliverse/utapi";
-
-// Re-export from: validations
-
-export * from "./reliverse/validations/auth";
-
-export * from "./reliverse/validations/cart";
-
-export * from "./reliverse/validations/notification";
-
-export * from "./reliverse/validations/og";
-
-export * from "./reliverse/validations/order";
-
-export * from "./reliverse/validations/parameters";
-
-export * from "./reliverse/validations/product";
-
-export * from "./reliverse/validations/store";
-
-export * from "./reliverse/validations/user";
diff --git a/addons/server/reliverse/cart.ts b/addons/server/reliverse/cart.ts
index 1e926c64..c9a5fec6 100644
--- a/addons/server/reliverse/cart.ts
+++ b/addons/server/reliverse/cart.ts
@@ -1,8 +1,8 @@
+import type { CartItem, CartLineItem } from "@/types";
+
import destr from "destr";
import { eq, inArray } from "drizzle-orm";
-import type { CartItem, CartLineItem } from "~/types";
-
import { authjs } from "~/auth/authjs";
import { db } from "~/db";
import { carts, products, stores } from "~/db/schema";
@@ -105,6 +105,6 @@ export async function getCartItemDetails(
.leftJoin(stores, eq(products.storeId, stores.id)) // @ts-expect-error TODO: Fix id type
.where(inArray(products.id, productIds));
- // @ts-expect-error TODO: Fix id type
+ // @ts-expect-error TODO: fix
return vals as CartLineItem[];
}
diff --git a/addons/server/reliverse/currency/currencyValidation.ts b/addons/server/reliverse/currency/currencyValidation.ts
index be076d65..8709e1fd 100644
--- a/addons/server/reliverse/currency/currencyValidation.ts
+++ b/addons/server/reliverse/currency/currencyValidation.ts
@@ -1,7 +1,5 @@
import type { NextApiRequest, NextApiResponse } from "next";
-import { errorMessage } from "@/server/reliverse/currency/errorMessage";
-
export const currencyValidation = (
request: NextApiRequest,
res: NextApiResponse,
@@ -11,7 +9,7 @@ export const currencyValidation = (
if (!currency) {
res.status(417).send({
error: true,
- message: errorMessage.missingCurrency,
+ message: "missingCurrency",
});
return false;
@@ -20,7 +18,7 @@ export const currencyValidation = (
if (request.method !== "GET") {
res.status(405).send({
error: true,
- message: errorMessage.methodNotAllowed,
+ message: "methodNotAllowed",
});
return false;
diff --git a/addons/server/reliverse/currency/errorMessage.ts b/addons/server/reliverse/currency/errorMessage.ts
deleted file mode 100644
index b55b8737..00000000
--- a/addons/server/reliverse/currency/errorMessage.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export const errorMessage = {
- methodNotAllowed: "methodNotAllowed",
- missingCurrency: "missingCurrency",
-};
diff --git a/addons/server/reliverse/errors/helpers/server/error-response.ts b/addons/server/reliverse/errors/helpers/server/error-response.ts
index 676edac9..ba9e5dce 100644
--- a/addons/server/reliverse/errors/helpers/server/error-response.ts
+++ b/addons/server/reliverse/errors/helpers/server/error-response.ts
@@ -1,11 +1,11 @@
import { NextResponse } from "next/server";
+import type { ApiResponseError } from "@/types";
+
import { isApiError } from "@/server/reliverse/errors/helpers/server/api-error";
import { isNextJsError } from "@/server/reliverse/errors/helpers/server/nextjs-error";
import { ZodError } from "zod";
-import type { ApiResponseError } from "~/types";
-
import { env } from "~/env";
const noop = () => {};
diff --git a/addons/server/reliverse/errors/index.ts b/addons/server/reliverse/errors/index.ts
deleted file mode 100644
index acad2c2b..00000000
--- a/addons/server/reliverse/errors/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { isClerkAPIResponseError } from "@clerk/nextjs/errors";
-import * as z from "zod";
-
-const unknownError = "⛔ An unknown error occurred!";
-
-export const errorMessage = (error: unknown): string => {
- if (error instanceof z.ZodError) {
- return error.errors[0]?.message ?? unknownError;
- }
-
- if (isClerkAPIResponseError(error)) {
- return error.errors[0]?.longMessage ?? unknownError;
- }
-
- if (error instanceof Error) {
- return error.message;
- }
-
- return String(error) ?? unknownError;
-};
diff --git a/addons/server/reliverse/errors/message.ts b/addons/server/reliverse/errors/message.ts
new file mode 100644
index 00000000..44aefb19
--- /dev/null
+++ b/addons/server/reliverse/errors/message.ts
@@ -0,0 +1,27 @@
+import { isClerkAPIResponseError } from "@clerk/nextjs/errors";
+import consola from "consola";
+import * as z from "zod";
+
+const unknownError = "⛔ An unknown error occurred!";
+
+export const getErrorMessage = (error: unknown): string => {
+ if (error instanceof z.ZodError) {
+ return error.errors[0]?.message || unknownError;
+ }
+
+ if (isClerkAPIResponseError(error)) {
+ return error.errors[0]?.longMessage || unknownError;
+ }
+
+ if (error instanceof Error) {
+ return error.message;
+ }
+
+ return String(error) || unknownError;
+};
+
+export function showErrorMessage(error: unknown) {
+ const getErrorMessageString = getErrorMessage(error);
+
+ consola.error({ getErrorMessageString });
+}
diff --git a/addons/server/reliverse/execa/execute.ts b/addons/server/reliverse/execa/execute.ts
deleted file mode 100644
index e424ba3d..00000000
--- a/addons/server/reliverse/execa/execute.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import consola from "consola";
-import { execa } from "execa";
-import { detectPackageManager } from "nypm";
-
-const isString = (a: unknown): a is string => typeof a === "string";
-
-type ExecuteOptions = {
- cwd?: string;
- stdio?: "ignore" | "inherit" | "pipe";
-};
-
-async function execute(
- command: string,
- packageManager?: string,
- options: ExecuteOptions = {},
-) {
- try {
- let pm = packageManager;
-
- // Detect package manager if not provided
- if (!pm) {
- const detectedPM = await detectPackageManager(
- options.cwd || process.cwd(),
- );
-
- const manager = String(detectedPM);
-
- if (!isString(manager)) {
- throw new TypeError("Detected package manager is not a string.");
- }
-
- pm = manager;
- }
-
- // Execute the command using the detected or provided package manager
- const { stdout } = await execa(pm, command.split(" "), options);
-
- // Print command's output
- consola.info(stdout);
-
- return stdout;
- } catch (error) {
- consola.error(`Failed to execute command: ${command}`);
- consola.error(error);
-
- throw error;
- }
-}
-
-export default execute;
diff --git a/addons/server/reliverse/execa/index.ts b/addons/server/reliverse/execa/index.ts
deleted file mode 100644
index e159a7e8..00000000
--- a/addons/server/reliverse/execa/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import consola from "consola";
-import { execa } from "execa";
-
-const { stdout } = await execa`pnpm check:execa`;
-
-// Print command's output
-consola.info(stdout);
diff --git a/addons/server/reliverse/execa/test.ts b/addons/server/reliverse/execa/test.ts
deleted file mode 100644
index cbe8e7fe..00000000
--- a/addons/server/reliverse/execa/test.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import tryToCatch from "try-to-catch";
-
-// @file src/utils/execa/test.ts
-// @usage pnpm tsx src/utils/execa/test.ts (it runs `pnpm check:execa` while uses check.ts)
-// ⛔ Unfinished. Does not work yet.
-import { InputError } from "@/server/reliverse/errors/modern";
-import execute from "@/server/reliverse/execa/execute";
-
-const [cause] = await tryToCatch(execute, "check:execa");
-
-if (cause) {
- throw new InputError("⛔ Failed to execute the command: pnpm check:execa", {
- cause,
- });
-}
-
-execute("check:execa");
diff --git a/addons/server/reliverse/funcs/client.ts b/addons/server/reliverse/funcs/client.ts
index 9c6bc894..7910c7b3 100644
--- a/addons/server/reliverse/funcs/client.ts
+++ b/addons/server/reliverse/funcs/client.ts
@@ -1,6 +1,6 @@
-import { ofetch } from "ofetch";
+import type { ApiResponse, ApiResponseError } from "@/types";
-import type { ApiResponse, ApiResponseError } from "~/types";
+import { ofetch } from "ofetch";
const isString = (a: unknown): a is string => typeof a === "string";
diff --git a/addons/server/reliverse/funcs/handler.ts b/addons/server/reliverse/funcs/handler.ts
index 35275709..c1352fdc 100644
--- a/addons/server/reliverse/funcs/handler.ts
+++ b/addons/server/reliverse/funcs/handler.ts
@@ -1,8 +1,8 @@
import type { NextRequest, NextResponse } from "next/server";
-import { buildErrorResponse } from "@/server/reliverse/errors/helpers/server/error-response";
+import type { ApiResponse, NextRouteHandler } from "@/types";
-import type { ApiResponse, NextRouteHandler } from "~/types";
+import { buildErrorResponse } from "@/server/reliverse/errors/helpers/server/error-response";
// Wrap an API handler with additional logging, error handling, etc.
// @example
diff --git a/addons/server/reliverse/plan.ts b/addons/server/reliverse/plan.ts
index b52655fe..38653475 100644
--- a/addons/server/reliverse/plan.ts
+++ b/addons/server/reliverse/plan.ts
@@ -1,4 +1,4 @@
-import type { SubscriptionPlanTypes, UserSubscriptionPlan } from "~/types";
+import type { SubscriptionPlanTypes, UserSubscriptionPlan } from "@/types";
import { storeSubscriptionPlans } from "~/core/stripe/subs";
import { env } from "~/env";
diff --git a/addons/server/reliverse/queries/product.ts b/addons/server/reliverse/queries/product.ts
index d7e8bf0f..26720b5f 100644
--- a/addons/server/reliverse/queries/product.ts
+++ b/addons/server/reliverse/queries/product.ts
@@ -31,7 +31,7 @@ import { products, stores } from "~/db/schema";
// } from "next/cache";
// import { db } from "~/db";
// import { products, stores } from "~/db/schema";
-// import { getProductsSchema } from "@/server/reliverse/validations/product";
+// import { getProductsSchema } from "@/actions/reliverse/validations/product";
// import {
// categories,
// products,
@@ -80,17 +80,17 @@ export async function getProducts() {
// const search = getProductsSchema.parse(input);
//
// const limit = 10;
- // const searchPage = search.page ?? 1;
+ // const searchPage = search.page || 1;
// const offset = (searchPage - 1) * limit;
//
// const [column, order] = (search.sort?.split(".") as [
// keyof Product | undefined,
// "asc" | "desc" | undefined,
- // ]) ?? ["createdAt", "desc"];
- // const [minPrice, maxPrice] = search.price_range?.split("-") ?? [];
- // const categoryIds = search.categories?.split(".") ?? [];
- // const subcategoryIds = search.subcategories?.split(".") ?? [];
- // const storeIds = search.store_ids?.split(".") ?? [];
+ // ]) || ["createdAt", "desc"];
+ // const [minPrice, maxPrice] = search.price_range?.split("-") || [];
+ // const categoryIds = search.categories?.split(".") || [];
+ // const subcategoryIds = search.subcategories?.split(".") || [];
+ // const storeIds = search.store_ids?.split(".") || [];
//
// return await db.transaction(async (tx) => {
// const data = await tx
@@ -167,7 +167,7 @@ export async function getProducts() {
// ),
// )
// .execute()
- // .then((res) => res[0]?.count ?? 0);
+ // .then((res) => res[0]?.count || 0);
//
// const pageCount = Math.ceil(total / limit);
//
@@ -200,7 +200,7 @@ export async function getProductCountByCategory() {
// .from(products)
// .where(eq(products.categoryId, categoryId))
// .execute()
- // .then((res) => res[0]?.count ?? 0);
+ // .then((res) => res[0]?.count || 0);
// },
// [`product-count-${categoryId}`],
// {
diff --git a/addons/server/reliverse/queries/store.ts b/addons/server/reliverse/queries/store.ts
index 9b3ecfa4..6091918e 100644
--- a/addons/server/reliverse/queries/store.ts
+++ b/addons/server/reliverse/queries/store.ts
@@ -5,7 +5,10 @@ import {
unstable_noStore as noStore,
} from "next/cache";
-import { getStoresSchema } from "@/server/reliverse/validations/store";
+import type { SearchParams } from "@/types";
+
+import { getStoresSchema } from "@/actions";
+import { takeFirstOrThrow } from "@/utils";
import consola from "consola";
import {
and,
@@ -20,11 +23,9 @@ import {
} from "drizzle-orm";
import type { Store } from "~/db/schema";
-import type { SearchParams } from "~/types";
import { db } from "~/db";
import { orders, products, stores } from "~/db/schema";
-import { takeFirstOrThrow } from "~/utils";
export async function getFeaturedStores() {
return await cache(
@@ -111,16 +112,16 @@ export async function getStores(input: SearchParams) {
const search = getStoresSchema.parse(input);
const limit = 10;
- const searchPage = search.page ?? 1;
+ const searchPage = search.page || 1;
const offset = (searchPage - 1) * limit;
const [column, order] =
(search.sort?.split(".") as [
keyof Store | undefined,
"asc" | "desc" | undefined,
- ]) ?? [];
+ ]) || [];
- const statuses = search.statuses?.split(".") ?? [];
+ const statuses = search.statuses?.split(".") || [];
const { data, total } = await db.transaction(async (tx) => {
const data = await tx
@@ -181,7 +182,7 @@ export async function getStores(input: SearchParams) {
),
)
.execute()
- .then((res) => res[0]?.count ?? 0);
+ .then((res) => res[0]?.count || 0);
return {
data,
diff --git a/addons/server/reliverse/queries/user.ts b/addons/server/reliverse/queries/user.ts
index 9f132c08..fe31d715 100644
--- a/addons/server/reliverse/queries/user.ts
+++ b/addons/server/reliverse/queries/user.ts
@@ -12,7 +12,7 @@ import { clerk } from "~/auth/clerk";
import { db } from "~/db";
import { products, stores } from "~/db/schema";
-// import { getPlan } from "@/server/reliverse/actions/stripe";
+// import { getPlan } from "@/actions/reliverse//stripe";
// import { getPlanLimits } from "@/server/reliverse/subscription";
// Cache is used with a data-fetching function like fetch to share a data snapshot between components.
// eslint-disable-next-line @stylistic/max-len
@@ -40,8 +40,8 @@ export async function getUserUsageMetrics(input: {
.then((res) => res[0]);
return {
- productCount: data?.productCount ?? 0,
- storeCount: data?.storeCount ?? 0,
+ productCount: data?.productCount || 0,
+ storeCount: data?.storeCount || 0,
};
} catch (error) {
consola.error(error);
diff --git a/addons/terminal/reliverse/relimter/eslint/tasks/index.ts b/addons/terminal/reliverse/relimter/eslint/tasks/index.ts
deleted file mode 100644
index 271accab..00000000
--- a/addons/terminal/reliverse/relimter/eslint/tasks/index.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { getCurrentDirname } from "@/browser/shared/utils";
-import { getRandomQuote } from "@/terminal/reliverse/quotes";
-import { getRootDirname } from "@/terminal/shared/utils";
-import { config } from "@reliverse/core";
-import consola from "consola";
-import fs from "fs-extra";
-import * as path from "pathe";
-import pc from "picocolors";
-
-// 🀄 @reliverse/addons-relimter [v0.0.0]: Reliverse Formatter Linter
-const currentDirname = getCurrentDirname(import.meta.url);
-const rootDirname = getRootDirname(currentDirname, 6);
-
-// TODO: Move technical things to a separate package called `@reliverse/addons-relimter`
-// export async function runRelimter(): Promise {
-// consola.warn("eslintCacheFilePath:", eslintCacheFilePath);
-const eslintCacheFilePath = path.join(
- currentDirname,
- `${rootDirname}/.eslintcache`,
-);
-
-if (fs.existsSync(eslintCacheFilePath)) {
- await getRandomQuote();
-
- consola.info(
- pc.isColorSupported
- ? ` If you or your company are using ${config.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n${pc.green("💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk")} \n`
- : ` If you or your company are using ${config.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk \n`,
- );
-
- consola.info(
- `${pc.dim("@reliverse/addons-relimter/eslint")} ⌛ Please wait, ESLint is processing your files...`,
- );
-} else {
- await getRandomQuote();
-
- consola.info(
- pc.isColorSupported
- ? ` If you or your company are using ${config.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n${pc.green("💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk")} \n`
- : ` If you or your company are using ${config.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk \n`,
- );
-
- consola.info(
- // eslint-disable-next-line @stylistic/max-len
- `${pc.dim("@reliverse/addons-relimter/eslint")} ⌛ Linting and fixing issues with ESLint can take a while on the first run, sometimes a few minutes if there are many problems to resolve. This is especially true when using the fix:putout-unstable command. Please be patient, as subsequent runs will be much faster.\n`,
- );
-}
diff --git a/addons/terminal/reliverse/relimter/python/tasks/relimter-template-script.py b/addons/terminal/reliverse/relimter/python/tasks/relimter-template-script.py
deleted file mode 100644
index 4512fa92..00000000
--- a/addons/terminal/reliverse/relimter/python/tasks/relimter-template-script.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Relimter Template Script
-
-# pnpm tsx addons/reliverse/relimter/python --template
-print("Hello, Reliverse!")
diff --git a/addons/terminal/shared/types/index.ts b/addons/terminal/shared/types/index.ts
deleted file mode 100644
index eb056eeb..00000000
--- a/addons/terminal/shared/types/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./string";
diff --git a/addons/terminal/shared/utils/files.ts b/addons/terminal/shared/utils/files.ts
deleted file mode 100644
index 8e7d611d..00000000
--- a/addons/terminal/shared/utils/files.ts
+++ /dev/null
@@ -1,338 +0,0 @@
-import type { Resolvable } from "citty";
-
-import { getCurrentDirname } from "@/browser/shared/utils";
-import { log } from "@clack/prompts";
-import destr from "destr";
-import fs from "fs-extra";
-import { cwd } from "node:process";
-import { join } from "pathe";
-import pc from "picocolors";
-import prettyjson from "prettyjson";
-
-export const defineAddon = (
- emoji: string,
- title: string,
- action: string,
- keys: string,
-) => {
- // eslint-disable-next-line @stylistic/max-len
- return `${emoji} ${pc.dim(title)} Choose which ${pc.cyan(action)} by pressing ${pc.cyan(`${keys} (or press to exit)`)}\n`;
-};
-
-export const defineTask = (emoji: string, title: string, action: string) => {
- return `${emoji} ${pc.dim(title)} Please wait until ${action}.\n`;
-};
-
-export function sortArgs>(arguments_: T): T {
- return Object.fromEntries(
- Object.entries(arguments_ as any).sort(([a], [b]) => a.localeCompare(b)),
- ) as T;
-}
-
-export function getRootDirname(
- currentDirname: string,
- levelsUp: number,
-): string {
- const parentDirectories = "../".repeat(levelsUp);
-
- return join(currentDirname, parentDirectories);
-}
-
-export async function removeFile(filePath: string) {
- try {
- await fs.unlink(filePath);
- } catch (error) {
- throw new Error("⛔ Could not read the file.", {
- cause: error,
- });
- }
-}
-
-export async function fileExists(path: string): Promise {
- try {
- await fs.access(path);
-
- return true;
- } catch {
- return false;
- }
-}
-
-export function getFoldersInDirectory(directory: string): string[] {
- return fs
- .readdirSync(directory, {
- withFileTypes: true,
- })
- .filter((dirent) => dirent.isDirectory())
- .map((dirent) => dirent.name);
-}
-
-export async function removeFolder(folderPath: string) {
- const files = fs.readdirSync(folderPath);
-
- for (const file of files) {
- const filePath = join(folderPath, file);
-
- if (fs.lstatSync(filePath).isDirectory()) {
- await removeFolder(filePath);
- } else {
- fs.unlinkSync(filePath);
- }
- }
-
- fs.rmdirSync(folderPath);
-}
-
-type PackageJson = {
- dependencies?: Record;
- devDependencies?: Record;
-};
-
-export type ArrayElement =
- ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
-
-export const findPackageManagerType = (
- path = ".",
- defaultPackageManager = "unknown",
-) => {
- const bunPath = `${path}/bun.lockb`;
- const pnpmPath = `${path}/pnpm-lock.yaml`;
- const yarnPath = `${path}/yarn.lock`;
- const npmPath = `${path}/package-lock.json`;
-
- if (fs.existsSync(bunPath)) {
- return "bun";
- }
-
- if (fs.existsSync(pnpmPath)) {
- return "pnpm";
- }
-
- if (fs.existsSync(yarnPath)) {
- return "yarn";
- }
-
- if (fs.existsSync(npmPath)) {
- return "npm";
- }
-
- return defaultPackageManager;
-};
-
-export const findInstallCommand = (
- packageManagerType = findPackageManagerType(),
- prefix = false,
-) => {
- switch (packageManagerType) {
- case "bun":
- return prefix ? "bun install" : "install";
- case "npm":
- return prefix ? "npm install" : "install";
- case "pnpm":
- return prefix ? "pnpm install" : "install";
- case "unknown":
- return prefix ? "unknown unknown" : "unknown";
- case "yarn":
- return prefix ? "yarn install" : "install";
- default:
- return prefix ? "npm install" : "install";
- }
-};
-
-export const findPackageManagerRunner = (
- path = ".",
- defaultPackageManagerRunner = "npx",
-) => {
- const bunPath = `${path}/bun.lockb`;
- const pnpmPath = `${path}/pnpm-lock.yaml`;
- const yarnPath = `${path}/yarn.lock`;
- const npmPath = `${path}/package-lock.json`;
-
- if (fs.existsSync(bunPath)) {
- return "bunx";
- }
-
- if (fs.existsSync(pnpmPath)) {
- return "pnpm exec";
- }
-
- if (fs.existsSync(yarnPath)) {
- return "yarn dlx";
- }
-
- if (fs.existsSync(npmPath)) {
- return "npx";
- }
-
- return defaultPackageManagerRunner;
-};
-
-export type PackageManagerType = "bun" | "npm" | "pnpm" | "unknown" | "yarn";
-
-export type InstallCommand = "add" | "install";
-
-export type PackageManagerRunner = "bunx" | "npx" | "pnpm exec" | "yarn dlx";
-
-// eslint-disable-next-line @stylistic/max-len
-// export function findPackageManagerType (path?: string, defaultPackageManager?: PackageManagerType): PackageManagerType;
-// export function findInstallCommand (packageManagerType?: PackageManagerType): InstallCommand;
-// export function findPackageManagerRunner (path?: string, defaultPackageManagerRunner?: PackageManagerRunner);
-
-export const formatError = (error: any) =>
- error ? `\n${prettyjson.render(error)}` : "";
-
-export function wait(ms: number) {
- return new Promise((resolve) => setTimeout(resolve, ms));
-}
-
-export async function readPackageJson(): Promise {
- const packageJsonPath = join(cwd(), "package.json");
- const packageJson = fs.readFileSync(packageJsonPath, "utf8");
-
- return destr(packageJson) as PackageJson;
-}
-
-export function getHumanDate(createdAt: null | string) {
- const date = new Date(createdAt || "");
-
- return date.toLocaleString();
-}
-
-let pmFetched = false;
-let pm: PackageManagerType = "npm";
-let pmCommand: InstallCommand = "install";
-let pmRunner: PackageManagerRunner = "npx";
-
-export function getPMAndCommand() {
- if (pmFetched) {
- return {
- command: pmCommand,
- installCommand: `${pm} ${pmCommand}`,
- pm,
- runner: pmRunner,
- };
- }
-
- const directory = getRootDirname(getCurrentDirname(import.meta.url), 2);
-
- pm = findPackageManagerType(directory, "npm") as PackageManagerType;
- pmCommand = findInstallCommand(pm) as InstallCommand;
- pmFetched = true;
- pmRunner = findPackageManagerRunner(directory) as PackageManagerRunner;
-
- return {
- command: pmCommand,
- installCommand: `${pm} ${pmCommand}`,
- pm,
- runner: pmRunner,
- };
-}
-
-// function readDirRecursively(dir: string): string[] {
-// const entries = readdirSync(dir, { withFileTypes: true });
-
-// return entries.flatMap((entry) => {
-// const fullPath = join(dir, entry.name);
-
-// return entry.isDirectory() ? readDirRecursively(fullPath) : [fullPath];
-// });
-// }
-
-export async function getLocalDependencies() {
- const packageJsonPath = join(cwd(), "package.json");
-
- if (!fs.existsSync(packageJsonPath)) {
- log.error("Missing package.json");
-
- return [];
- }
-
- let packageJson: PackageJson = {};
-
- const dependencies = packageJson.dependencies ?? {};
-
- try {
- packageJson = await readPackageJson();
- } catch (error) {
- log.error("Invalid package.json, JSON parsing failed");
- console.error("json parse error:", error);
-
- return [];
- }
-
- if (Object.keys(dependencies).length === 0) {
- log.error("Missing dependencies section in package.json");
-
- return [];
- }
-
- for (const [key, value] of Object.entries(dependencies)) {
- if (typeof value !== "string") {
- log.error(
- `Invalid dependency ${key}: ${value}, expected string, got ${typeof value}`,
- );
-
- return [];
- }
- }
-
- const nodeModulesPath = join(cwd(), "node_modules");
-
- if (!fs.existsSync(nodeModulesPath)) {
- const pm = findPackageManagerType(
- getRootDirname(import.meta.url, 2),
- "npm",
- );
- const installCmd = findInstallCommand(pm);
-
- log.error(`Missing node_modules folder, please run ${pm} ${installCmd}`);
-
- return [];
- }
-
- let anyInvalid = false;
- const dependenciesObject = await Promise.all(
- Object.entries(dependencies).map(async ([key, value]) => {
- const dependencyFolderPath = join(nodeModulesPath, key);
-
- if (!fs.existsSync(dependencyFolderPath)) {
- anyInvalid = true;
- const pm = findPackageManagerType(
- getRootDirname(import.meta.url, 2),
- "npm",
- );
- const installCmd = findInstallCommand(pm);
-
- log.error(`Missing dependency ${key}, please run ${pm} ${installCmd}`);
-
- return { name: key, version: value };
- }
-
- // try {
- // const files = readDirRecursively(dependencyFolderPath);
- // } catch (error) {
- // log.error(`Error reading node_modules files for ${key} package`);
- // console.error(error);
-
- // return null;
- // }
-
- return {
- name: key,
- version: value,
- };
- }),
- ).catch(() => []);
-
- if (anyInvalid) {
- console.error("Some dependencies are missing", dependenciesObject || []);
-
- return [];
- }
-
- return dependenciesObject as {
- name: string;
- native: boolean;
- version: string;
- }[];
-}
diff --git a/addons/terminal/shared/utils/index.ts b/addons/terminal/shared/utils/index.ts
deleted file mode 100644
index b2cba4b6..00000000
--- a/addons/terminal/shared/utils/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./files";
diff --git a/addons/trpc/api/root.ts b/addons/trpc/api/root.ts
new file mode 100644
index 00000000..2004dd79
--- /dev/null
+++ b/addons/trpc/api/root.ts
@@ -0,0 +1,23 @@
+import { postRouter } from "@/trpc/api/routers/post";
+import { createCallerFactory, createTRPCRouter } from "@/trpc/api/trpc";
+
+/**
+ * This is the primary router for your server.
+ *
+ * All routers added in /api/routers should be manually added here.
+ */
+export const appRouter = createTRPCRouter({
+ post: postRouter,
+});
+
+// export type definition of API
+export type AppRouter = typeof appRouter;
+
+/**
+ * Create a server-side caller for the tRPC API.
+ * @example
+ * const trpc = createCaller(createContext);
+ * const res = await trpc.post.all();
+ * ^? Post[]
+ */
+export const createCaller = createCallerFactory(appRouter);
diff --git a/addons/trpc/api/routers/post.ts b/addons/trpc/api/routers/post.ts
new file mode 100644
index 00000000..1b94a5ce
--- /dev/null
+++ b/addons/trpc/api/routers/post.ts
@@ -0,0 +1,40 @@
+import {
+ createTRPCRouter,
+ protectedProcedure,
+ publicProcedure,
+} from "@/trpc/api/trpc";
+import { z } from "zod";
+
+import { posts } from "~/db/schema";
+
+export const postRouter = createTRPCRouter({
+ hello: publicProcedure
+ .input(z.object({ text: z.string() }))
+ .query(({ input }) => {
+ return {
+ greeting: `Hello ${input.text}`,
+ };
+ }),
+
+ create: protectedProcedure
+ .input(z.object({ name: z.string().min(1) }))
+ .mutation(async ({ ctx, input }) => {
+ // @ts-expect-error TODO: fix trpc
+ await ctx.db.insert(posts).values({
+ name: input.name,
+ createdById: ctx.session.user.id,
+ });
+ }),
+
+ getLatest: publicProcedure.query(async ({ ctx }) => {
+ const post = await ctx.db.query.posts.findFirst({
+ orderBy: (posts, { desc }) => [desc(posts.createdAt)],
+ });
+
+ return post ?? null;
+ }),
+
+ getSecretMessage: protectedProcedure.query(() => {
+ return "you can now see this secret message!";
+ }),
+});
diff --git a/addons/trpc/api/trpc.ts b/addons/trpc/api/trpc.ts
new file mode 100644
index 00000000..fb083ee5
--- /dev/null
+++ b/addons/trpc/api/trpc.ts
@@ -0,0 +1,139 @@
+/**
+ * YOU PROBABLY DON'T NEED TO EDIT THIS FILE, UNLESS:
+ * 1. You want to modify request context (see Part 1).
+ * 2. You want to create a new middleware or type of procedure (see Part 3).
+ *
+ * TL;DR - This is where all the tRPC server stuff is created and plugged in. The pieces you will
+ * need to use are documented accordingly near the end.
+ */
+
+import { initTRPC, TRPCError } from "@trpc/server";
+import superjson from "superjson";
+import { ZodError } from "zod";
+
+import { auth } from "~/auth/authjs";
+import { db } from "~/db";
+
+/**
+ * 1. CONTEXT
+ *
+ * This section defines the "contexts" that are available in the backend API.
+ *
+ * These allow you to access things when processing a request, like the database, the session, etc.
+ *
+ * This helper generates the "internals" for a tRPC context. The API handler and RSC clients each
+ * wrap this and provides the required context.
+ *
+ * @see https://trpc.io/docs/server/context
+ */
+// eslint-disable-next-line unicorn/prevent-abbreviations
+export const createTRPCContext = async (opts: { headers: Headers }) => {
+ // TODO: add clerk support
+ // const session = authProvider === "clerk" ? await clerk() : await auth();
+ const session = await auth();
+
+ return {
+ db,
+ session,
+ ...opts,
+ };
+};
+
+/**
+ * 2. INITIALIZATION
+ *
+ * This is where the tRPC API is initialized, connecting the context and transformer. We also parse
+ * ZodErrors so that you get typesafety on the frontend if your procedure fails due to validation
+ * errors on the backend.
+ */
+const t = initTRPC.context().create({
+ transformer: superjson,
+ errorFormatter({ shape, error }) {
+ return {
+ ...shape,
+ data: {
+ ...shape.data,
+ zodError:
+ error.cause instanceof ZodError ? error.cause.flatten() : null,
+ },
+ };
+ },
+});
+
+/**
+ * Create a server-side caller.
+ *
+ * @see https://trpc.io/docs/server/server-side-calls
+ */
+export const createCallerFactory = t.createCallerFactory;
+
+/**
+ * 3. ROUTER & PROCEDURE (THE IMPORTANT BIT)
+ *
+ * These are the pieces you use to build your tRPC API. You should import these a lot in the
+ * "/src/server/api/routers" directory.
+ */
+
+/**
+ * This is how you create new routers and sub-routers in your tRPC API.
+ *
+ * @see https://trpc.io/docs/router
+ */
+export const createTRPCRouter = t.router;
+
+/**
+ * Middleware for timing procedure execution and adding an articifial delay in development.
+ *
+ * You can remove this if you don't like it, but it can help catch unwanted waterfalls by simulating
+ * network latency that would occur in production but not in local development.
+ */
+const timingMiddleware = t.middleware(async ({ next, path }) => {
+ const start = Date.now();
+
+ if (t._config.isDev) {
+ // artificial delay in dev
+ const waitMs = Math.floor(Math.random() * 400) + 100;
+
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
+ }
+
+ const result = await next();
+
+ const end = Date.now();
+
+ console.log(`[TRPC] ${path} took ${end - start}ms to execute`);
+
+ return result;
+});
+
+/**
+ * Public (unauthenticated) procedure
+ *
+ * This is the base piece you use to build new queries and mutations on your tRPC API. It does not
+ * guarantee that a user querying is authorized, but you can still access user session data if they
+ * are logged in.
+ */
+export const publicProcedure = t.procedure.use(timingMiddleware);
+
+/**
+ * Protected (authenticated) procedure
+ *
+ * If you want a query or mutation to ONLY be accessible to logged in users, use this. It verifies
+ * the session is valid and guarantees `ctx.session.user` is not null.
+ *
+ * @see https://trpc.io/docs/procedures
+ */
+export const protectedProcedure = t.procedure
+ .use(timingMiddleware)
+ .use(({ ctx, next }) => {
+ if (!ctx.session || !ctx.session.user) {
+ throw new TRPCError({ code: "UNAUTHORIZED" });
+ }
+
+ return next({
+ ctx: {
+ // infers the `session` as non-nullable
+ session: { ...ctx.session, user: ctx.session.user },
+ },
+ });
+ });
diff --git a/addons/trpc/query-client.ts b/addons/trpc/query-client.ts
new file mode 100644
index 00000000..bda64397
--- /dev/null
+++ b/addons/trpc/query-client.ts
@@ -0,0 +1,25 @@
+import {
+ defaultShouldDehydrateQuery,
+ QueryClient,
+} from "@tanstack/react-query";
+import SuperJSON from "superjson";
+
+export const createQueryClient = () =>
+ new QueryClient({
+ defaultOptions: {
+ queries: {
+ // With SSR, we usually want to set some default staleTime
+ // above 0 to avoid refetching immediately on the client
+ staleTime: 30 * 1000,
+ },
+ dehydrate: {
+ serializeData: SuperJSON.serialize,
+ shouldDehydrateQuery: (query) =>
+ defaultShouldDehydrateQuery(query) ||
+ query.state.status === "pending",
+ },
+ hydrate: {
+ deserializeData: SuperJSON.deserialize,
+ },
+ },
+ });
diff --git a/addons/trpc/react.tsx b/addons/trpc/react.tsx
new file mode 100644
index 00000000..0e75cf73
--- /dev/null
+++ b/addons/trpc/react.tsx
@@ -0,0 +1,92 @@
+"use client";
+
+import { useState } from "react";
+
+import type { AppRouter } from "@/trpc/api/root";
+import type { QueryClient } from "@tanstack/react-query";
+import type { inferRouterInputs, inferRouterOutputs } from "@trpc/server";
+
+import { QueryClientProvider } from "@tanstack/react-query";
+import { loggerLink, unstable_httpBatchStreamLink } from "@trpc/client";
+import { createTRPCReact } from "@trpc/react-query";
+import SuperJSON from "superjson";
+
+import { createQueryClient } from "./query-client";
+
+let clientQueryClientSingleton: QueryClient | undefined;
+const getQueryClient = () => {
+ if (typeof window === "undefined") {
+ // Server: always make a new query client
+ return createQueryClient();
+ }
+
+ // Browser: use singleton pattern to keep the same query client
+ return (clientQueryClientSingleton ??= createQueryClient());
+};
+
+export const api = createTRPCReact();
+
+/**
+ * Inference helper for inputs.
+ *
+ * @example type HelloInput = RouterInputs['example']['hello']
+ */
+export type RouterInputs = inferRouterInputs;
+
+/**
+ * Inference helper for outputs.
+ *
+ * @example type HelloOutput = RouterOutputs['example']['hello']
+ */
+export type RouterOutputs = inferRouterOutputs;
+
+export function TRPCReactProvider(props: { children: React.ReactNode }) {
+ const queryClient = getQueryClient();
+
+ const [trpcClient] = useState(() =>
+ api.createClient({
+ links: [
+ loggerLink({
+ enabled: (op) =>
+ // eslint-disable-next-line no-restricted-properties
+ process.env.NODE_ENV === "development" ||
+ (op.direction === "down" && op.result instanceof Error),
+ }),
+ unstable_httpBatchStreamLink({
+ transformer: SuperJSON,
+ url: `${getBaseUrl()}/api/trpc`,
+ headers: () => {
+ const headers = new Headers();
+
+ headers.set("x-trpc-source", "nextjs-react");
+
+ return headers;
+ },
+ }),
+ ],
+ }),
+ );
+
+ return (
+
+
+ {props.children}
+
+
+ );
+}
+
+function getBaseUrl() {
+ if (typeof window !== "undefined") {
+ return window.location.origin;
+ }
+
+ // eslint-disable-next-line no-restricted-properties
+ if (process.env.VERCEL_URL) {
+ // eslint-disable-next-line no-restricted-properties
+ return `https://${process.env.VERCEL_URL}`;
+ }
+
+ // eslint-disable-next-line no-restricted-properties
+ return `http://localhost:${process.env.PORT || 3000}`;
+}
diff --git a/addons/trpc/server.ts b/addons/trpc/server.ts
new file mode 100644
index 00000000..911fa043
--- /dev/null
+++ b/addons/trpc/server.ts
@@ -0,0 +1,35 @@
+import { cache } from "react";
+
+import { headers } from "next/headers";
+
+import type { AppRouter } from "@/trpc/api/root";
+
+import { createCaller } from "@/trpc/api/root";
+import { createTRPCContext } from "@/trpc/api/trpc";
+import { createHydrationHelpers } from "@trpc/react-query/rsc";
+
+import { createQueryClient } from "./query-client";
+
+import "server-only";
+
+/**
+ * This wraps the `createTRPCContext` helper and provides the required context for the tRPC API when
+ * handling a tRPC call from a React Server Component.
+ */
+const createContext = cache(() => {
+ const heads = new Headers(headers());
+
+ heads.set("x-trpc-source", "rsc");
+
+ return createTRPCContext({
+ headers: heads,
+ });
+});
+
+const getQueryClient = cache(createQueryClient);
+const caller = createCaller(createContext);
+
+export const { trpc: api, HydrateClient } = createHydrationHelpers(
+ caller,
+ getQueryClient,
+);
diff --git a/addons/types/index.ts b/addons/types/index.ts
new file mode 100644
index 00000000..5bc6b7c6
--- /dev/null
+++ b/addons/types/index.ts
@@ -0,0 +1,29 @@
+export * from "./reliverse/api";
+
+export * from "./reliverse/array";
+
+export * from "./reliverse/auth";
+
+export * from "./reliverse/id";
+
+export * from "./reliverse/keys";
+
+export * from "./reliverse/locale";
+
+export * from "./reliverse/meta";
+
+export * from "./reliverse/nav";
+
+export * from "./reliverse/next";
+
+export * from "./reliverse/plan";
+
+export * from "./reliverse/pm";
+
+export * from "./reliverse/store";
+
+export * from "./reliverse/string";
+
+export * from "./reliverse/table";
+
+export * from "./reliverse/with";
diff --git a/src/types/api.ts b/addons/types/reliverse/api.ts
similarity index 100%
rename from src/types/api.ts
rename to addons/types/reliverse/api.ts
diff --git a/addons/types/reliverse/array.ts b/addons/types/reliverse/array.ts
new file mode 100644
index 00000000..d3c82340
--- /dev/null
+++ b/addons/types/reliverse/array.ts
@@ -0,0 +1,2 @@
+export type ArrayElement =
+ ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
diff --git a/src/types/auth.ts b/addons/types/reliverse/auth.ts
similarity index 96%
rename from src/types/auth.ts
rename to addons/types/reliverse/auth.ts
index 92828bb2..43517b7e 100644
--- a/src/types/auth.ts
+++ b/addons/types/reliverse/auth.ts
@@ -1,4 +1,4 @@
-import type { userPrivateMetadataSchema } from "@/server/reliverse/validations/auth";
+import type { userPrivateMetadataSchema } from "@/actions";
import type { HandleOAuthCallbackParams } from "@clerk/types";
import type { z } from "zod";
diff --git a/src/types/config.ts b/addons/types/reliverse/config.ts
similarity index 100%
rename from src/types/config.ts
rename to addons/types/reliverse/config.ts
diff --git a/src/types/id.ts b/addons/types/reliverse/id.ts
similarity index 100%
rename from src/types/id.ts
rename to addons/types/reliverse/id.ts
diff --git a/src/types/keys.ts b/addons/types/reliverse/keys.ts
similarity index 100%
rename from src/types/keys.ts
rename to addons/types/reliverse/keys.ts
diff --git a/src/types/locale.ts b/addons/types/reliverse/locale.ts
similarity index 100%
rename from src/types/locale.ts
rename to addons/types/reliverse/locale.ts
diff --git a/src/types/meta.ts b/addons/types/reliverse/meta.ts
similarity index 100%
rename from src/types/meta.ts
rename to addons/types/reliverse/meta.ts
diff --git a/src/types/nav.ts b/addons/types/reliverse/nav.ts
similarity index 100%
rename from src/types/nav.ts
rename to addons/types/reliverse/nav.ts
diff --git a/src/types/next.ts b/addons/types/reliverse/next.ts
similarity index 100%
rename from src/types/next.ts
rename to addons/types/reliverse/next.ts
diff --git a/src/types/plan.ts b/addons/types/reliverse/plan.ts
similarity index 100%
rename from src/types/plan.ts
rename to addons/types/reliverse/plan.ts
diff --git a/addons/types/reliverse/pm.ts b/addons/types/reliverse/pm.ts
new file mode 100644
index 00000000..663bd609
--- /dev/null
+++ b/addons/types/reliverse/pm.ts
@@ -0,0 +1,5 @@
+export type PackageManagerType = "bun" | "npm" | "pnpm" | "unknown" | "yarn";
+
+export type InstallCommand = "add" | "install";
+
+export type PackageManagerRunner = "bunx" | "npx" | "pnpm exec" | "yarn dlx";
diff --git a/src/types/store.ts b/addons/types/reliverse/store.ts
similarity index 96%
rename from src/types/store.ts
rename to addons/types/reliverse/store.ts
index 85185d18..4fd9bbef 100644
--- a/src/types/store.ts
+++ b/addons/types/reliverse/store.ts
@@ -5,7 +5,7 @@ import type {
cartItemSchema,
cartLineItemSchema,
checkoutItemSchema,
-} from "@/server/reliverse/validations/cart";
+} from "@/actions";
import type { z } from "zod";
import type { Store } from "~/db/schema";
diff --git a/addons/terminal/shared/types/string.ts b/addons/types/reliverse/string.ts
similarity index 100%
rename from addons/terminal/shared/types/string.ts
rename to addons/types/reliverse/string.ts
diff --git a/addons/types/reliverse/table.ts b/addons/types/reliverse/table.ts
new file mode 100644
index 00000000..56b2aea2
--- /dev/null
+++ b/addons/types/reliverse/table.ts
@@ -0,0 +1,13 @@
+export type OptionDataTableFilterField = {
+ icon?: React.ComponentType<{ className?: string }>;
+ label: string;
+ value: string;
+ withCount?: boolean;
+};
+
+export type DataTableFilterField = {
+ label: string;
+ options?: OptionDataTableFilterField[];
+ placeholder?: string;
+ value: keyof TData;
+};
diff --git a/src/types/with.ts b/addons/types/reliverse/with.ts
similarity index 100%
rename from src/types/with.ts
rename to addons/types/reliverse/with.ts
diff --git a/src/utils/index.ts b/addons/utils/index.ts
similarity index 56%
rename from src/utils/index.ts
rename to addons/utils/index.ts
index 96f957f6..21b205f6 100644
--- a/src/utils/index.ts
+++ b/addons/utils/index.ts
@@ -1,27 +1,28 @@
// eslint-disable-next-line @stylistic/max-len
// 💡 Never keep code in the utils folder that can only run on the server. Otherwise, you will encounter anomalies during the project build. For example, an error like `node:` and `file:` not found, or the package `fs`, `crypto`, etc. not found. Read more about this in the RQ18 of the README.md file. Want to see the error for yourself? Move the file `src/server/api/uploadthing/react.ts` to `src/utils`, import it in this file, run `pnpm build`, get scared, remove the import, and move the file back to its place.
-export * from "./array";
-export * from "./css";
+export * from "./reliverse/array";
-export * from "./date";
+export * from "./reliverse/cn";
-export * from "./equal";
+export * from "./reliverse/date";
-export * from "./files";
+export * from "./reliverse/equal";
-export * from "./gen";
+export * from "./reliverse/gen";
-export * from "./github";
+export * from "./reliverse/github";
-export * from "./keys";
+export * from "./reliverse/keys";
-export * from "./misc";
+export * from "./reliverse/math";
-export * from "./number";
+export * from "./reliverse/misc";
-export * from "./path";
+export * from "./reliverse/number";
-export * from "./string";
+export * from "./reliverse/path";
-export * from "./throw";
+export * from "./reliverse/string";
+
+export * from "./reliverse/throw";
diff --git a/src/utils/array.ts b/addons/utils/reliverse/array.ts
similarity index 100%
rename from src/utils/array.ts
rename to addons/utils/reliverse/array.ts
diff --git a/addons/browser/shared/utils/cn.ts b/addons/utils/reliverse/cn.ts
similarity index 55%
rename from addons/browser/shared/utils/cn.ts
rename to addons/utils/reliverse/cn.ts
index 91aba1fe..58093f75 100644
--- a/addons/browser/shared/utils/cn.ts
+++ b/addons/utils/reliverse/cn.ts
@@ -3,6 +3,9 @@ import type { ClassValue } from "clsx";
import { clsx } from "clsx";
import { twMerge } from "tailwind-merge";
+// clsx is a tiny utility for constructing className
+// strings conditionally, this utility also ensures
+// a better support for the tailwindcss classes
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
diff --git a/addons/utils/reliverse/date.ts b/addons/utils/reliverse/date.ts
new file mode 100644
index 00000000..6baca7e5
--- /dev/null
+++ b/addons/utils/reliverse/date.ts
@@ -0,0 +1,11 @@
+import dayjs from "dayjs";
+
+export function formatDate(date: Date | number | string) {
+ return dayjs(date).format("MMMM D, YYYY");
+}
+
+export function getHumanDate(createdAt: null | string) {
+ const date = new Date(createdAt || "");
+
+ return date.toLocaleString();
+}
diff --git a/src/utils/equal.ts b/addons/utils/reliverse/equal.ts
similarity index 100%
rename from src/utils/equal.ts
rename to addons/utils/reliverse/equal.ts
diff --git a/src/utils/gen.ts b/addons/utils/reliverse/gen.ts
similarity index 100%
rename from src/utils/gen.ts
rename to addons/utils/reliverse/gen.ts
diff --git a/src/utils/github.ts b/addons/utils/reliverse/github.ts
similarity index 100%
rename from src/utils/github.ts
rename to addons/utils/reliverse/github.ts
diff --git a/src/utils/keys.ts b/addons/utils/reliverse/keys.ts
similarity index 99%
rename from src/utils/keys.ts
rename to addons/utils/reliverse/keys.ts
index ba0fea21..59cdecd5 100644
--- a/src/utils/keys.ts
+++ b/addons/utils/reliverse/keys.ts
@@ -1,4 +1,4 @@
-import type { CheckHotkeyMatch, Hotkey, KeyboardModifiers } from "~/types";
+import type { CheckHotkeyMatch, Hotkey, KeyboardModifiers } from "@/types";
function parseHotkey(hotkey: string): Hotkey {
const keys = hotkey
diff --git a/addons/browser/shared/utils/math.ts b/addons/utils/reliverse/math.ts
similarity index 100%
rename from addons/browser/shared/utils/math.ts
rename to addons/utils/reliverse/math.ts
diff --git a/src/utils/misc.ts b/addons/utils/reliverse/misc.ts
similarity index 97%
rename from src/utils/misc.ts
rename to addons/utils/reliverse/misc.ts
index 9e26183b..848cdacc 100644
--- a/src/utils/misc.ts
+++ b/addons/utils/reliverse/misc.ts
@@ -1,4 +1,4 @@
-import type { CartLineItem } from "~/types";
+import type { CartLineItem } from "@/types";
export const getInitials = async (username: string): Promise => {
if (!username) {
diff --git a/src/utils/number.ts b/addons/utils/reliverse/number.ts
similarity index 100%
rename from src/utils/number.ts
rename to addons/utils/reliverse/number.ts
diff --git a/src/utils/path.ts b/addons/utils/reliverse/path.ts
similarity index 100%
rename from src/utils/path.ts
rename to addons/utils/reliverse/path.ts
diff --git a/addons/utils/reliverse/string.ts b/addons/utils/reliverse/string.ts
new file mode 100644
index 00000000..fbbbf100
--- /dev/null
+++ b/addons/utils/reliverse/string.ts
@@ -0,0 +1,19 @@
+import { replace } from "string-ts";
+
+export function slugify(string_: string) {
+ return string_
+ .toLowerCase()
+ .replace(/ /g, "-")
+ .replace(/[^\w-]+/g, "")
+ .replace(/-{2,}/g, "-");
+}
+
+export function unslugify(string_: string) {
+ return replace(string_, /-/g, " ");
+}
+
+export function truncate(string_: string, length: number) {
+ return string_.length > length
+ ? `${string_.substring(0, length)}...`
+ : string_;
+}
diff --git a/src/utils/throw.ts b/addons/utils/reliverse/throw.ts
similarity index 100%
rename from src/utils/throw.ts
rename to addons/utils/reliverse/throw.ts
diff --git a/components.json b/components.json
index 888cb3fc..89d58c63 100644
--- a/components.json
+++ b/components.json
@@ -1,8 +1,8 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"aliases": {
- "components": "@/browser/reliverse",
- "utils": "@/browser/shared/utils"
+ "components": "@/components",
+ "utils": "@/utils"
},
"rsc": true,
"style": "default",
diff --git a/cspell.json b/cspell.json
index ec3572ba..94e6ad04 100644
--- a/cspell.json
+++ b/cspell.json
@@ -175,6 +175,7 @@
"deoptimization",
"Depfu",
"destr",
+ "devmarauda",
"dicebear",
"dirents",
"dironly",
@@ -272,6 +273,7 @@
"Gtkq",
"Guernésiais",
"haha",
+ "Hashar",
"hashbang",
"Hashbang",
"Hassaniya",
@@ -329,6 +331,7 @@
"keystyle",
"Khoekhoe",
"knip",
+ "kongkong",
"Kornienko",
"Korniienko",
"Kwangali",
@@ -376,6 +379,7 @@
"md'yi",
"mediapartners",
"medusajs",
+ "Melnyk",
"Menlo",
"Meslo",
"metaleft",
@@ -434,6 +438,7 @@
"noputout",
"Norfuk",
"normy",
+ "novu",
"npmignore",
"npmjs",
"npmlog",
diff --git a/eslint.config.js b/eslint.config.js
index 71504496..69d3b056 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -46,7 +46,7 @@ import tseslint from "typescript-eslint";
// The current Relivator 1.2.6 version comes with many predefined ESLint configs.
// Run the `pnpm reli:setup` to easily switch between them and set up other tooling.
-// Current: addons\terminal\reliverse\relicon\setup\configs\eslint.config.ultimate.ts
+// Current: addons\scripts\reliverse\relicon\setup\configs\eslint.config.ultimate.ts
//
const stylisticConfig = stylistic.configs.customize({
indent: 2,
@@ -112,7 +112,7 @@ export default tseslint.config(
},
project: true,
tsconfigRootDir: import.meta.dirname,
- warnOnUnsupportedTypeScriptVersion: true,
+ warnOnUnsupportedTypeScriptVersion: false,
},
},
linterOptions: {
@@ -331,7 +331,7 @@ export default tseslint.config(
applyDefaultIgnorePatterns: true,
beforeBlockComment: true,
beforeLineComment: true,
- ignorePattern: "@type\\s.+|@ts-expect-error",
+ ignorePattern: "@type\\s.+|@ts-expect-error|biome-ignore|TODO:",
},
],
@@ -1092,9 +1092,14 @@ export default tseslint.config(
},
],
"no-restricted-imports": [
- "error",
+ "warn",
{
paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
{
name: "process",
importNames: ["env"],
@@ -1116,51 +1121,8 @@ export default tseslint.config(
},
{
name: "fs",
- importNames: [
- "copy",
- "emptyDir",
- "ensureFile",
- "ensureDir",
- "ensureLink",
- "ensureSymlink",
- "mkdirp",
- "mkdirs",
- "move",
- "outputFile",
- "outputJson",
- "pathExists",
- "readJson",
- "remove",
- "writeJson",
- "copySync",
- "emptyDirSync",
- "ensureFileSync",
- "ensureDirSync",
- "ensureLinkSync",
- "ensureSymlinkSync",
- "mkdirpSync",
- "mkdirsSync",
- "moveSync",
- "outputFileSync",
- "outputJsonSync",
- "pathExistsSync",
- "readJsonSync",
- "removeSync",
- "writeJsonSync",
- ],
message:
- "Please use fs-extra instead (https://npmjs.com/package/fs-extra)",
- },
- {
- name: "fs-extra",
- importNames: [
- "readdirSync",
- "readFileSync",
- "realpathSync",
- "existsSync",
- ],
- message:
- "Looks like fs-extra does not provide this module, use import from regular fs instead",
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
},
{
name: "path",
@@ -1815,14 +1777,50 @@ export default tseslint.config(
files: ["{src,addons}/**/*.{ts,tsx}", "next.config.js"],
rules: {
"no-restricted-imports": [
- "error",
+ "warn",
{
patterns: [
{
message:
// eslint-disable-next-line @stylistic/max-len
- "\n\n⛔ Importing from '@/terminal' is not allowed in this file. The import from 'addons/terminal' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
- regex: "^@/terminal",
+ "\n\n⛔ Importing from '@/scripts' is not allowed in this file. The import from 'addons/scripts' folder cannot be used in the browser runtime context. \n✅ You can safely import from other folders inside 'addons' instead.\n💡 Consider using imports from 'addons/browser' (@/browser) for browser-compatible code.\n\n",
+ regex: "^@/scripts",
+ },
+ ],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
},
],
},
@@ -1831,12 +1829,48 @@ export default tseslint.config(
},
{
name: "@reliverse/eslint-config/etc",
- files: ["addons/terminal/**/*.{ts,tsx}"],
+ files: ["addons/scripts/**/*.{ts,tsx}"],
rules: {
"no-restricted-imports": [
- "error",
+ "warn",
{
patterns: [],
+ paths: [
+ {
+ name: "inquirer",
+ message:
+ "This is the legacy version of Inquirer.js. While it still receives maintenance, it is not actively developed. For the new Inquirer, see @inquirer/prompts – https://npmjs.com/package/@inquirer/prompts",
+ },
+ {
+ name: "process",
+ importNames: ["env"],
+ message: "Please use `import { env } from '~/env'` instead.",
+ },
+ {
+ name: "react",
+ importNames: ["default"],
+ message: "Named imports should be used instead.",
+ },
+ {
+ name: ".",
+ message: "Use explicit import file.",
+ },
+ {
+ name: "lodash",
+ message:
+ "Don't use lodash, use radash instead (in case you still need it, use lodash/{module} import).",
+ },
+ {
+ name: "fs",
+ message:
+ "Please use fs-extra instead (https://npmjs.com/package/fs-extra)\n\nJust use: import fs from 'fs-extra'",
+ },
+ {
+ name: "path",
+ message:
+ "Please use pathe instead (https://unjs.io/packages/pathe)",
+ },
+ ],
},
],
},
@@ -2352,7 +2386,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-academy",
// @reliverse/academy
- files: ["addons/reliverse/academy/**/*.json"],
+ files: ["addons/scripts/reliverse/academy/**/*.json"],
rules: {
"jsonc/sort-array-values": "off",
"jsonc/sort-keys": "off",
@@ -2384,7 +2418,7 @@ export default tseslint.config(
{
// @see https://github.com/coderaiser/putout#readme
name: "@reliverse/config-eslint/addons-putout",
- files: ["addons/terminal/reliverse/academy/**/*.json"],
+ files: ["addons/scripts/reliverse/academy/**/*.json"],
rules: {
"jsonc/sort-array-values": "off",
"jsonc/sort-keys": "off",
@@ -2412,7 +2446,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-remotion",
// @see https://remotion.dev/docs/contributing/formatting#eslint
- files: ["addons/reliverse/remotion/*.{ts,tsx}"],
+ files: ["addons/scripts/reliverse/remotion/*.{ts,tsx}"],
rules: {
"no-relative-import-paths/no-relative-import-paths": "off",
},
@@ -2434,7 +2468,7 @@ export default tseslint.config(
name: "@reliverse/config-eslint/addons-no-comments",
// @see https://npmjs.com/package/eslint-plugin-no-comments
- files: ["addons/reliverse/template/index.ts"],
+ files: ["addons/scripts/reliverse/template/index.ts"],
plugins: {
"no-comments": noComments,
},
diff --git a/eslint.setup.ts b/eslint.setup.ts
index 8d399c3d..9b64ebc5 100644
--- a/eslint.setup.ts
+++ b/eslint.setup.ts
@@ -1,4 +1,4 @@
-import { defineAddon } from "@/terminal/shared/utils";
+import { defineAddon } from "@/scripts/utils";
import { defineCommand, runMain } from "citty";
import consola from "consola";
@@ -49,7 +49,7 @@ const main = defineCommand({
switch (selected) {
case "Find deprecated rules":
consola.info(
- "💡 py addons/reliverse/relimter/python/tasks/find-eslint-dep-rules.py",
+ "💡 py addons/scripts/reliverse/relimter/python/tasks/find-eslint-dep-rules.py",
);
consola.info(
"Ensure you've Python installed, learn more in the Scripts and Python sections of README.md file",
@@ -69,7 +69,7 @@ const main = defineCommand({
case "Toggle all ESLint rules":
consola.info(
- "py addons/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py",
+ "py addons/scripts/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py",
);
consola.info(
"Ensure you've Python installed, learn more in the Scripts and Python sections of README.md file",
@@ -96,7 +96,7 @@ function withArgument() {
case "--deprecated":
consola.info(
- "💡 py addons/reliverse/relimter/python/tasks/find-eslint-dep-rules.py",
+ "💡 py addons/scripts/reliverse/relimter/python/tasks/find-eslint-dep-rules.py",
);
consola.info(
"Ensure you've Python installed, learn more in the Scripts and Python sections of README.md file",
@@ -112,7 +112,7 @@ function withArgument() {
case "--toggler":
consola.info(
- "💡 py addons/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py",
+ "💡 py addons/scripts/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py",
);
consola.info(
"Ensure you've Python installed, learn more in the Scripts and Python sections of README.md file",
diff --git a/knip.json b/knip.json
index 327b1fc8..32f966b1 100644
--- a/knip.json
+++ b/knip.json
@@ -2,12 +2,43 @@
"$schema": "https://unpkg.com/knip@5/schema.json",
"entry": [
"addons/**/{index,types,tasks,prompts,canary,utils,comments-transformer,console-consola-switcher,convert,db-compare,islands-to-components,linebreak-crlf-to-lf,move-eslint-disable-to-top,removeEmptyLines,seed-db,switcher,build,debug,deploy,hello,two,com,misc,cliA,cliB,mainCLI,switch-drizzle-driver}.ts",
- "addons/reliverse/academy/{achievements,fileProcessor}.ts",
- "addons/reliverse/relicon/setup/configs/{eslint.config.{recommended,minimal,rules-disabled},next.config.{recommended,minimal},env.{recommended,rules-disabled}}.ts",
- "addons/reliverse/relicon/setup/prompt/{appts,canary/json}.ts",
- "addons/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/reliverse/toolbar/{index,components}.ts",
+ "addons/actions/reliverse/product-old.ts",
+ "addons/actions/reliverse/validations/product-old.ts",
+ "addons/components/ui/kbd.tsx",
+ "addons/components/ui/section.tsx",
+ "addons/components/ui/span.tsx",
+ "addons/hooks-react/use-at-bottom.ts",
+ "addons/hooks-react/use-callback-ref.ts",
+ "addons/hooks-react/use-click-outside.ts",
+ "addons/hooks-react/use-clipboard.ts",
+ "addons/hooks-react/use-controllable-state.ts",
+ "addons/hooks-react/use-data-table.ts",
+ "addons/hooks-react/use-enter-submit.ts",
+ "addons/hooks-react/use-event.ts",
+ "addons/hooks-react/use-ids.ts",
+ "addons/hooks-react/use-interval.ts",
+ "addons/hooks-react/use-isomorphic.ts",
+ "addons/hooks-react/use-local-storage.ts",
+ "addons/hooks-react/use-media-query.ts",
+ "addons/hooks-react/use-mounted.ts",
+ "addons/hooks-react/use-on-mount.ts",
+ "addons/hooks-react/use-optimistic.ts",
+ "addons/hooks-react/use-optimistic-board.ts",
+ "addons/hooks-react/use-promise.ts",
+ "addons/hooks-react/use-signal-state.ts",
+ "addons/hooks-react/use-toast.ts",
+ "addons/hooks-react/use-upload-file.ts",
+ "addons/hooks-react/use-url-state.ts",
+ "addons/scripts/reliverse/academy/{achievements,fileProcessor}.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/{eslint.config.{recommended,minimal,rules-disabled},next.config.{recommended,minimal},env.{recommended,rules-disabled}}.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/{appts,canary/json}.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/toolbar/{index,components}.ts",
"addons/server/reliverse/errors/modern.ts",
+ "addons/trpc/api/root.ts",
+ "addons/trpc/react.tsx",
+ "addons/trpc/server.ts",
+ "reliverse.addons.ts",
"remotion.config.ts",
"src/{auth,i18n}.ts",
"src/{config,db,hooks,server,types,core,data,utils}/index.ts",
@@ -23,6 +54,7 @@
"src/components/Application/Experimental/Admin/{card,column,board}.tsx",
"src/components/Application/Navigation/{SidebarNavigation/{index,WithSecondaryNavigation}.tsx,VerticalNavigation/{index,WithIcons}.tsx}",
"src/components/Checkout/{CheckoutButton,index,VerifyOrderForm,CheckoutShell}.tsx",
+ "src/components/Checkout/UpdateCart.tsx",
"src/components/Combobox/Combobox.tsx",
"src/components/Combobox/ComboboxHandler.tsx",
"src/components/Combobox/ProductList.tsx",
@@ -53,6 +85,20 @@
"src/components/Wrappers/{DialogShell,index,OrdersTableShell,GeneralShell,ProductsTableShell,Toaster}.tsx",
"src/config/{theme,stores}.ts",
"src/core/{link/index.tsx,mail/resend.ts,stripe/{handlers,helpers,loading,stripe}.ts,trpc/{infer,server,trpc2,index,react}.tsx,wn/{config,index,winston}.ts,auth/authjs/{index-old,shared/index}.ts,auth/authjs/components/sign-out-button.tsx,auth/clerkjs/other/checks.tsx,auth/clerkjs/components/user-profile-clerk.tsx,auth/shared/components/auth-pages-content-client.tsx,mail/templates/onboard.tsx,stripe/actions.ts,trpc/routers/{todo2,todo3,trpc-auth,trpc-user,type,webhook}.ts,trpc/tanstack/{blog-comments-server,blog-posts-client,products-admin}.tsx,trpc/trpc.ts}",
+ "src/core/novu/emails/novu-onboarding-email.tsx",
+ "src/core/trpc-old/index.ts",
+ "src/core/trpc-old/react.tsx",
+ "src/core/trpc-old/routers/todo2.ts",
+ "src/core/trpc-old/routers/todo3.ts",
+ "src/core/trpc-old/routers/trpc-auth.ts",
+ "src/core/trpc-old/routers/trpc-user.ts",
+ "src/core/trpc-old/routers/type.ts",
+ "src/core/trpc-old/routers/webhook.ts",
+ "src/core/trpc-old/server.tsx",
+ "src/core/trpc-old/tanstack/blog-comments-server.tsx",
+ "src/core/trpc-old/tanstack/blog-posts-client.tsx",
+ "src/core/trpc-old/trpc.ts",
+ "src/core/trpc-old/trpc2.ts",
"src/data/mail/{auth-user,newsletter}.tsx",
"src/data/meta/builder.ts",
"src/data/other/countries/typescript/{countries,getAllCountries,getCountriesByCallingCode,getCountriesByName,getCountryByCca2,getCountryByPhoneNumber,inputMask,types}.ts",
@@ -62,7 +108,7 @@
"src/hooks/react-client/{useLocalStorage,useOptimisticBoard,useSignalState,useToast}.ts",
"src/hooks/server.ts",
"src/mdx-components.tsx",
- "src/server/{queries,media,mw,query,string,utapi,actions/{auth,order,cart,product,generate,signin},api/uploadthing/react,cart,etc/currency/{currencyValidation,errorMessage},funcs/client,trpc,validations/{og,order,user,auth,notification,parameters,product}}.ts",
+ "src/server/{queries,media,mw,query,string,utapi,actions/{auth,order,cart,product,generate,signin},api/uploadthing/react,cart,etc/currency/{currencyValidation,getErrorMessage},funcs/client,trpc,validations/{og,order,user,auth,notification,parameters,product}}.ts",
"src/server/queries/{product,store,user}.ts",
"src/types/config.ts",
"src/utils/errors/{index,plugin,test,helpers/{field,server/{index,unauthorized-error,validation-error}}}.ts",
@@ -92,39 +138,88 @@
"addons/browser/reliverse/ui/Tooltip.tsx",
"addons/browser/reliverse/ui/use-toast.ts",
"addons/browser/shared/utils/math.ts",
+ "addons/cluster/components/Onboarding.tsx",
+ "addons/cluster/components/ui/cluster-readme.tsx",
"addons/cluster/reliverse/components/Onboarding.tsx",
"addons/cluster/reliverse/ui/cluster-readme.tsx",
- "addons/reliverse/toolbar/index.tsx",
+ "addons/components/ui/alert.tsx",
+ "addons/components/ui/alert-dialog.tsx",
+ "addons/components/ui/aspect-ratio.tsx",
+ "addons/components/ui/avatar.tsx",
+ "addons/components/ui/badge.tsx",
+ "addons/components/ui/breadcrumb.tsx",
+ "addons/components/ui/button.tsx",
+ "addons/components/ui/calendar.tsx",
+ "addons/components/ui/carousel.tsx",
+ "addons/components/ui/chart.tsx",
+ "addons/components/ui/checkbox.tsx",
+ "addons/components/ui/command.tsx",
+ "addons/components/ui/dialog.tsx",
+ "addons/components/ui/drawer.tsx",
+ "addons/components/ui/dropdown.tsx",
+ "addons/components/ui/dropdown-menu.tsx",
+ "addons/components/ui/form.tsx",
+ "addons/components/ui/hover-card.tsx",
+ "addons/components/ui/icon.tsx",
+ "addons/components/ui/input.tsx",
+ "addons/components/ui/input-otp.tsx",
+ "addons/components/ui/navigation-menu.tsx",
+ "addons/components/ui/pagination.tsx",
+ "addons/components/ui/password.tsx",
+ "addons/components/ui/popover.tsx",
+ "addons/components/ui/popup.tsx",
+ "addons/components/ui/progress.tsx",
+ "addons/components/ui/scroll-area.tsx",
+ "addons/components/ui/select.tsx",
+ "addons/components/ui/separator.tsx",
+ "addons/components/ui/sheet.tsx",
+ "addons/components/ui/skeleton.tsx",
+ "addons/components/ui/slider.tsx",
+ "addons/components/ui/switch.tsx",
+ "addons/components/ui/table.tsx",
+ "addons/components/ui/tabs.tsx",
+ "addons/components/ui/text-area.tsx",
+ "addons/components/ui/textarea.tsx",
+ "addons/components/ui/toast.tsx",
+ "addons/components/ui/toaster.tsx",
+ "addons/components/ui/tooltip.tsx",
+ "addons/components/ui/use-toast.ts",
+ "addons/scripts/helpers/helpers/db.ts",
+ "addons/scripts/reliverse/academy/achievements.ts",
+ "addons/scripts/reliverse/academy/fileProcessor.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/env.recommended.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/env.rules-disabled.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.medium.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.minimal.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/eslint.config.ultimate.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/next.config.clean.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/next.config.minimal.ts",
+ "addons/scripts/reliverse/relicon/setup/configs/next.config.recommended.ts",
+ "addons/scripts/reliverse/relicon/setup/prompt/env.ts",
+ "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx",
+ "addons/scripts/reliverse/relimter/core/tasks/no-unresolved-links.ts",
+ "addons/scripts/reliverse/toolbar/index.tsx",
"addons/server/reliverse/errors/helpers/field.ts",
"addons/server/reliverse/errors/plugin.ts",
"addons/server/reliverse/errors/test.ts",
"addons/server/reliverse/execa/execute.ts",
"addons/server/reliverse/execa/test.ts",
- "addons/terminal/reliverse/academy/achievements.ts",
- "addons/terminal/reliverse/academy/fileProcessor.ts",
- "addons/terminal/reliverse/relicon/setup/configs/env.recommended.ts",
- "addons/terminal/reliverse/relicon/setup/configs/env.rules-disabled.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.medium.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.minimal.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts",
- "addons/terminal/reliverse/relicon/setup/configs/eslint.config.ultimate.ts",
- "addons/terminal/reliverse/relicon/setup/configs/next.config.clean.ts",
- "addons/terminal/reliverse/relicon/setup/configs/next.config.minimal.ts",
- "addons/terminal/reliverse/relicon/setup/configs/next.config.recommended.ts",
- "addons/terminal/reliverse/relimter/core/env/components/MissingVariables.tsx",
- "addons/terminal/reliverse/relimter/core/tasks/no-unresolved-links.ts",
- "addons/terminal/shared/micro/db.ts",
+ "addons/trpc/server.ts",
+ "addons/types/reliverse/config.ts",
"postcss.config.js",
"reliverse.config.ts",
"src/app/[locale]/dashboard/onboarding/OnboardContent.tsx",
"src/auth/authjs.ts",
"src/auth/migrate.ts",
"src/cluster/Onboarding.tsx",
+ "src/components/Application/ReliverseToolbar.tsx",
"src/components/Combobox/ComboboxContext.tsx",
"src/components/Emails/Onboarding.tsx",
"src/components/Navigation/NavMenu.tsx",
"src/components/Playground/Boards/BoardList.tsx",
"src/components/Providers/Tooltip.tsx",
+ "src/core/novu/emails/novu-onboarding-email.tsx",
"src/data/other/boards.ts",
"src/db/schema/mysql/categories.ts",
"src/db/schema/mysql/customers.ts",
@@ -152,16 +247,15 @@
],
"ignoreBinaries": ["codemod", "eslint_d", "py", "ruff", "stripe", "vercel"],
"ignoreDependencies": [
- "@million/lint",
- "@next/bundle-analyzer",
"@putout/.+",
"@radix-ui/react-alert-dialog",
+ "@radix-ui/react-hover-card",
+ "@radix-ui/react-progress",
"@remotion/.+",
"@tailwindcss/.+",
"@types/eslint",
"@types/try-catch",
"@vercel/flags",
- "@vercel/toolbar",
"@xyflow/react",
"autoprefixer",
"commander",
@@ -170,9 +264,8 @@
"dotenv-cli",
"eslint-plugin-mdx",
"eslint-plugin-putout",
+ "input-otp",
"jsonc-eslint-parser",
- "mathjs",
- "million",
"montag",
"next-superjson-plugin",
"node-fetch-native",
diff --git a/next-fix.d.ts b/next-fix.d.ts
new file mode 100644
index 00000000..04a1a894
--- /dev/null
+++ b/next-fix.d.ts
@@ -0,0 +1,55 @@
+///
+
+declare module "*.png" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.svg" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.jpg" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.jpeg" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.gif" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.webp" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.avif" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.ico" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
+
+declare module "*.bmp" {
+ const content: import("next/dist/shared/lib/image-external").StaticImageData;
+
+ export default content;
+}
diff --git a/next.config.js b/next.config.js
index 6ea5d56d..48ca9352 100644
--- a/next.config.js
+++ b/next.config.js
@@ -12,7 +12,7 @@ import remarkGfm from "remark-gfm";
await import("./src/env.js");
-// Uncomment the following lines to enable the Vercel Toolbar (and component in LocaleLayout)
+// Uncomment the following lines to enable the Vercel Toolbar (and component in RootLocaleLayout)
// import withVercelToolbar from "@vercel/toolbar/plugins/next";
//
// The whitelist list of domains that are allowed to show media content
@@ -45,14 +45,15 @@ const nextConfig = {
mdxRs: true,
optimizePackageImports: ["lucide-react", "@radix-ui/react-icons"],
ppr: false, // true - supported by next@canary only
- swcPlugins: [
- [
- "next-superjson-plugin",
- {
- excluded: [],
- },
- ],
- ],
+ // uncomment if you use superjson in 'browser' context
+ // swcPlugins: [
+ // [
+ // "next-superjson-plugin",
+ // {
+ // excluded: [],
+ // },
+ // ],
+ // ],
},
images: {
formats: ["image/avif", "image/webp"],
@@ -62,6 +63,13 @@ const nextConfig = {
})),
},
pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"],
+
+ // Adobe React Spectrum (next dev --turbo is not supported)
+ // transpilePackages: [
+ // "@adobe/react-spectrum",
+ // "@react-spectrum/*",
+ // "@spectrum-icons/*",
+ // ].flatMap((spec) => glob.sync(spec, { cwd: "node_modules/" })),
};
// Create a config wrapper required to integrate a modern Next.js MDX support
@@ -78,7 +86,7 @@ const withMDX = createMDX({
// @see https://next-intl-docs.vercel.app/docs/getting-started/app-router/with-i18n-routing
const withIntl = createNextIntlPlugin("./src/i18n.ts");
-// Uncomment the following lines to enable the Vercel Toolbar (and component in LocaleLayout)
+// Uncomment the following lines to enable the Vercel Toolbar (and component in RootLocaleLayout)
//
// const reliverseConfig = withIntl(withMDX(nextConfig));
// const reliverseConfigWithVercelToolbar = withVercelToolbar()(reliverseConfig);
diff --git a/package.json b/package.json
index ef8bd50c..94b41e7b 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
"type": "module",
"scripts": {
"addons": "tsx addons",
- "appts": "redrun deps knip lint format typecheck build",
+ "appts": "redrun knip lint format typecheck build",
"appts:env": "redrun deps lint:env knip lint format typecheck build",
"appts:nobuild": "redrun deps knip lint format typecheck",
"appts:noknip": "redrun deps lint format typecheck build",
@@ -34,7 +34,7 @@
"deps": "redrun deps:check deps:locations",
"deps:check": "tsx packageJson.ts find-unregistered-packages",
"deps:info": "tsx packageJson.ts info",
- "deps:install": "tsx packageJson.ts",
+ "deps:install": "tsx packageJson.ts welcome",
"deps:install-all": "tsx packageJson.ts install-all-packages",
"deps:locations": "tsx packageJson.ts find-incorrectly-placed-packages",
"deps:updates": "tsx packageJson.ts updates",
@@ -47,6 +47,10 @@
"deps:use-tailwind-3": "tsx packageJson.ts use tailwind-3",
"deps:use-tailwind-4": "tsx packageJson.ts use tailwind-4-unstable",
"dev": "next dev --turbo",
+ "dev:drizzle": "redrun db:studio",
+ "dev:eslint": "pnpm eslint --inspect-config",
+ "dev:novu": "pnpm dlx novu@latest dev",
+ "dev:stripe": "redrun stripe:listen",
"esd:activate": "cross-env ESLINT_USE_FLAT_CONFIG=true eslint_d restart",
"fix:codemod": "redrun fix:codemod-next-community fix:codemod-react",
"fix:codemod-next-community": "codemod next/13/new-link && codemod next/13/app-router-recipe --target src",
@@ -67,29 +71,28 @@
"lint": "redrun reli:eslint lint:eslint lint:biome",
"lint:biome": "biome lint --write .",
"lint:d": "redrun reli:eslint lint:esd lint:biome",
- "lint:env": "tsx --env-file=.env addons/terminal/reliverse/relimter/core/env",
+ "lint:env": "tsx --env-file=.env addons/scripts/reliverse/relimter/core/env",
"lint:esd": "eslint_d --cache --fix .",
"lint:eslint": "eslint --cache --fix .",
"lint:json": "redrun lint:json-academy",
- "lint:json-academy": "tsx addons/terminal/reliverse/academy/checkJsonFiles.ts",
+ "lint:json-academy": "tsx addons/scripts/reliverse/academy/checkJsonFiles.ts",
"lint:noputout": "redrun reli:eslint lint:eslint lint:biome",
- "lint:putout": "tsx addons/terminal/reliverse/relimter/putout/tasks && cross-env NO_ESLINT=1 putout .",
+ "lint:putout": "tsx addons/scripts/reliverse/relimter/putout/tasks && cross-env NO_ESLINT=1 putout .",
"lint:python": "ruff format && ruff check --fix",
"lint:verbose": "redrun reli:eslint check:eslint lint:biome",
- "postinstall": "tsx reliverse.setup.ts --help",
+ "postinstall": "tsx reliverse.info.ts",
"putout:dont-run-manually": "pnpm lint:putout --fix",
"reli": "tsx addons",
- "reli:academy": "tsx addons/terminal/reliverse/academy",
- "reli:disabler": "tsx addons/terminal/reliverse/disabler",
- "reli:eslint": "tsx addons/terminal/reliverse/relimter/eslint/tasks",
- "reli:help": "tsx reliverse.setup.ts --help",
- "reli:pm": "tsx reliverse.setup.ts --pm",
+ "reli:academy": "tsx addons/scripts/reliverse/academy",
+ "reli:disabler": "tsx addons/scripts/reliverse/disabler",
+ "reli:eslint": "tsx addons/scripts/reliverse/relimter/eslint/tasks",
+ "reli:help": "tsx reliverse.info.ts",
"reli:prepare": "pnpm install && pnpm latest && pnpm appts",
- "reli:python": "py addons/terminal/reliverse/relimter/python/index.py",
- "reli:relimter": "tsx addons/terminal/reliverse/relimter",
- "reli:setup": "tsx reliverse.setup.ts --setup",
- "reli:vscode": "tsx addons/terminal/reliverse/presets/vscode",
- "relimter": "tsx addons/terminal/reliverse/relimter",
+ "reli:python": "py addons/scripts/reliverse/relimter/python/index.py",
+ "reli:relimter": "tsx addons/scripts/reliverse/relimter",
+ "reli:setup": "tsx reliverse.setup.ts",
+ "reli:vscode": "tsx addons/scripts/reliverse/presets/vscode",
+ "relimter": "tsx addons/scripts/reliverse/relimter",
"relimter:codemod": "redrun relimter",
"rm:lock": "fse remove pnpm-lock.yaml",
"rm:next": "fse remove .next",
@@ -104,10 +107,10 @@
"turbo:appts": "turbo knip lint format typecheck turbo:build",
"turbo:build": "pnpm turbo:reli && turbo build",
"turbo:dev": "turbo dev",
- "turbo:reli": "tsx reliverse.setup.ts --turbo",
+ "turbo:reli": "tsx reliverse.info.ts --turbo",
"tw:v3": "npx nypm add tailwindcss@latest postcss autoprefixer",
"tw:v4": "npx nypm add tailwindcss@next @tailwindcss/postcss@next @tailwindcss/cli@next",
- "typecheck": "tsc --noEmit",
+ "typecheck": "tsc --noEmit --noUncheckedSideEffectImports",
"typestat": "typestat --config typestat.json",
"verbose:analyze": "NODE_OPTIONS=--max-old-space-size=4096 ANALYZE=true pnpm build"
},
@@ -116,15 +119,17 @@
"@auth/core": "^0.34.2",
"@auth/drizzle-adapter": "^1.4.2",
"@clack/prompts": "^0.7.0",
- "@clerk/localizations": "^2.5.4",
- "@clerk/nextjs": "^5.2.12",
- "@clerk/themes": "^2.1.16",
- "@clerk/types": "^4.11.0",
- "@eslint-react/eslint-plugin": "^1.8.2",
+ "@clerk/localizations": "^2.5.6",
+ "@clerk/nextjs": "^5.2.14",
+ "@clerk/themes": "^2.1.18",
+ "@clerk/types": "^4.12.1",
+ "@dicebear/collection": "^9.2.1",
+ "@dicebear/core": "^9.2.1",
+ "@eslint-react/eslint-plugin": "^1.9.0",
"@faire/mjml-react": "^3.3.0",
"@faker-js/faker": "^8.4.1",
"@hookform/resolvers": "^3.9.0",
- "@inquirer/prompts": "^5.3.6",
+ "@inquirer/prompts": "^5.3.8",
"@libsql/client": "^0.8.1",
"@loglib/tracker": "^0.8.0",
"@mdx-js/loader": "^3.0.1",
@@ -145,11 +150,13 @@
"@radix-ui/react-checkbox": "^1.1.1",
"@radix-ui/react-dialog": "^1.1.1",
"@radix-ui/react-dropdown-menu": "^2.1.1",
+ "@radix-ui/react-hover-card": "^1.1.1",
"@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-label": "^2.1.0",
"@radix-ui/react-menubar": "^1.1.1",
"@radix-ui/react-navigation-menu": "^1.2.0",
"@radix-ui/react-popover": "^1.1.1",
+ "@radix-ui/react-progress": "^1.1.0",
"@radix-ui/react-scroll-area": "^1.1.0",
"@radix-ui/react-select": "^2.1.1",
"@radix-ui/react-separator": "^1.1.0",
@@ -159,26 +166,26 @@
"@radix-ui/react-tabs": "^1.1.0",
"@radix-ui/react-toast": "^1.2.1",
"@radix-ui/react-tooltip": "^1.1.2",
- "@radix-ui/themes": "^3.1.1",
+ "@radix-ui/themes": "^3.1.3",
"@react-email/components": "^0.0.22",
"@react-email/head": "^0.0.10",
"@react-email/html": "^0.0.9",
"@react-email/img": "^0.0.9",
"@react-email/tailwind": "^0.0.19",
"@reliverse/core": "npm:@jsr/reliverse__core@^0.1.0",
- "@remotion/bundler": "^4.0.191",
- "@remotion/cli": "^4.0.191",
- "@remotion/eslint-config": "^4.0.191",
- "@remotion/renderer": "^4.0.191",
+ "@remotion/bundler": "^4.0.194",
+ "@remotion/cli": "^4.0.194",
+ "@remotion/eslint-config": "^4.0.194",
+ "@remotion/renderer": "^4.0.194",
"@simplewebauthn/browser": "^10.0.0",
"@simplewebauthn/server": "^10.0.1",
"@stripe/react-stripe-js": "^2.7.3",
- "@stripe/stripe-js": "^4.1.0",
+ "@stripe/stripe-js": "^4.2.0",
"@t3-oss/env-nextjs": "^0.11.0",
"@tailwindcss/postcss": "0.0.0-development.1",
- "@tanstack/react-query": "^5.51.21",
- "@tanstack/react-query-devtools": "^5.51.21",
- "@tanstack/react-query-next-experimental": "^5.51.21",
+ "@tanstack/react-query": "^5.51.23",
+ "@tanstack/react-query-devtools": "^5.51.23",
+ "@tanstack/react-query-next-experimental": "^5.51.23",
"@tanstack/react-table": "^8.20.1",
"@trpc/client": "11.0.0-rc.477",
"@trpc/react-query": "11.0.0-rc.477",
@@ -227,13 +234,13 @@
"destr": "^2.0.3",
"dotenv": "^16.4.5",
"dotenv-cli": "^7.4.2",
- "drizzle-orm": "^0.32.1",
+ "drizzle-orm": "^0.32.2",
"drizzle-zod": "^0.5.1",
"embla-carousel-react": "^8.1.8",
- "execa": "^9.3.0",
"flowbite-react": "^0.10.1",
"fs-extra": "^11.2.0",
"glob": "^11.0.0",
+ "input-otp": "^1.2.4",
"jsonc-eslint-parser": "^2.4.0",
"log4js": "^6.9.1",
"lucide-react": "^0.424.0",
@@ -255,7 +262,7 @@
"nextjs-google-analytics": "^2.3.3",
"node-fetch-native": "^1.6.4",
"nodemailer": "^6.9.14",
- "nuqs": "^1.17.6",
+ "nuqs": "^1.17.8",
"nypm": "^0.3.9",
"ofetch": "^1.3.4",
"pathe": "^1.1.2",
@@ -267,7 +274,7 @@
"radash": "^12.1.0",
"react": "18.3.1",
"react-cropper": "^2.3.3",
- "react-day-picker": "^9.0.6",
+ "react-day-picker": "^9.0.8",
"react-dom": "18.3.1",
"react-dropzone": "^14.2.3",
"react-hook-form": "^7.52.2",
@@ -279,9 +286,10 @@
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.0",
"remark-mdx": "^3.0.1",
- "remotion": "^4.0.191",
+ "remotion": "^4.0.194",
"resend": "^3.5.0",
"semver": "^7.6.3",
+ "server-only": "^0.0.1",
"sharp": "^0.33.4",
"slate": "^0.103.0",
"slate-history": "^0.100.0",
@@ -351,13 +359,13 @@
"@types/try-catch": "^3.0.2",
"@types/try-to-catch": "^3.0.3",
"@types/uuid": "^10.0.0",
- "@types/yargs": "^17.0.32",
+ "@types/yargs": "^17.0.33",
"autoprefixer": "^10.4.20",
"codeup": "^0.0.4",
"cross-env": "^7.0.3",
- "cspell": "^8.13.1",
+ "cspell": "^8.13.2",
"deadfile": "^2.1.1",
- "drizzle-kit": "^0.23.1",
+ "drizzle-kit": "^0.23.2",
"envinfo": "^7.13.0",
"eslint": "^9.8.0",
"eslint-plugin-drizzle": "^0.2.3",
@@ -367,11 +375,11 @@
"eslint-plugin-jsx-a11y": "^6.9.0",
"eslint-plugin-markdown": "^5.1.0",
"eslint-plugin-mdx": "^3.1.5",
- "eslint-plugin-n": "^17.10.1",
+ "eslint-plugin-n": "^17.10.2",
"eslint-plugin-no-comments": "^1.1.10",
"eslint-plugin-no-relative-import-paths": "^1.5.5",
- "eslint-plugin-perfectionist": "^3.1.1",
- "eslint-plugin-promise": "^7.0.0",
+ "eslint-plugin-perfectionist": "^3.1.3",
+ "eslint-plugin-promise": "^7.1.0",
"eslint-plugin-putout": "^22.10.0",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks": "^4.6.2",
@@ -386,28 +394,31 @@
"eslint-plugin-yml": "^1.14.0",
"fast-npm-meta": "^0.2.2",
"globals": "^15.9.0",
- "knip": "^5.27.0",
+ "knip": "^5.27.2",
"magicast": "^0.3.4",
"next-auth": "5.0.0-beta.20",
- "postcss": "^8.4.40",
+ "postcss": "^8.4.41",
"putout": "^36.0.3",
- "tailwindcss": "^3.4.7",
- "tsx": "^4.16.5",
- "turbo": "^2.0.11",
- "typescript": "5.5.4",
- "typescript-eslint": "^8.0.0",
+ "tailwindcss": "^3.4.8",
+ "tsx": "^4.17.0",
+ "turbo": "^2.0.12",
+ "typescript": "5.6.0-beta",
+ "typescript-eslint": "^8.0.1",
"typestat": "^0.7.3",
"yargs": "^17.7.2"
},
"packageManager": "pnpm@9.6.0",
"pnpm": {
"allowedDeprecatedVersions": {
+ "json-schema-ref-parser": "*",
"inflight": "*",
"glob": "*",
"opn": "*"
},
"peerDependencyRules": {
"allowedVersions": {
+ "@simplewebauthn/browser": "10",
+ "@simplewebauthn/server@^9.0.2": "10",
"eslint": "9"
}
}
diff --git a/packageJson.ts b/packageJson.ts
index eac686ad..5aeaa4cd 100644
--- a/packageJson.ts
+++ b/packageJson.ts
@@ -13,11 +13,6 @@ import {
removeDependency,
} from "nypm";
import path, { normalize } from "pathe";
-import {
- automaticPackageJsonDependenciesMover,
- debugEnabled,
- throwErrorOnFailedDepsCommand,
-} from "reliverse.config";
import semver from "semver";
// package.json CLI to manage packages
@@ -51,10 +46,23 @@ import semver from "semver";
// - npx nypm add pathe fast-npm-meta semver @types/semver redrun axios
// - bun|yarn|pnpm dlx jsr add @reliverse/core (or: npx jsr add @reliverse/core)
//
+const localDebugEnabled = false;
+const throwErrorOnFailedDepsCommand = false; // related to: ▶️ pnpm deps (deps:check deps:locations)
+// To enable the following feature, 'localDebugEnabled' variable must also be set to 'true'.
+const automaticPackageJsonDependenciesMover = false; // This feature can be unstable currently.
+
+type PackageJson = {
+ [key: string]: any;
+ dependencies?: Record;
+ devDependencies?: Record;
+};
+
const flags = [
"find-incorrectly-placed-packages",
"find-unregistered-packages",
"info",
+ "help",
+ "welcome",
"install-all-packages",
"install-basic-packages",
"install-eslint-basic-packages",
@@ -92,11 +100,13 @@ const dependenciesShadcn: string[] = [
"@radix-ui/react-checkbox",
"@radix-ui/react-dialog",
"@radix-ui/react-dropdown-menu",
+ "@radix-ui/react-hover-card",
"@radix-ui/react-icons",
"@radix-ui/react-label",
"@radix-ui/react-menubar",
"@radix-ui/react-navigation-menu",
"@radix-ui/react-popover",
+ "@radix-ui/react-progress",
"@radix-ui/react-scroll-area",
"@radix-ui/react-select",
"@radix-ui/react-separator",
@@ -107,6 +117,7 @@ const dependenciesShadcn: string[] = [
"@radix-ui/react-toast",
"@radix-ui/react-tooltip",
"@radix-ui/themes",
+ "input-otp",
];
const dependenciesUdecode: string[] = [
@@ -132,160 +143,157 @@ const dependenciesUdecode: string[] = [
];
const basicDependencies: string[] = [
- ...new Set([
- ...dependenciesShadcn,
- ...dependenciesUdecode,
- "@atao60/fse-cli",
- "@auth/core",
- "@auth/drizzle-adapter",
- "@clack/prompts",
- "@clerk/localizations",
- "@clerk/nextjs",
- "@clerk/themes",
- "@clerk/types",
- "@faire/mjml-react",
- "@faker-js/faker",
- "@hookform/resolvers",
- "@inquirer/prompts",
- "@libsql/client",
- "@loglib/tracker",
- "@mdx-js/loader",
- "@mdx-js/react",
- "@metamask/utils",
- "@million/lint",
- "@mnrendra/read-package",
- "@neondatabase/serverless",
- "@next/bundle-analyzer",
- "@next/mdx",
- "@normy/react-query",
- "@planetscale/database",
- "@radix-ui/react-slot",
- "@radix-ui/react-tooltip",
- "@radix-ui/themes",
- "@react-email/components",
- "@react-email/head",
- "@react-email/html",
- "@react-email/img",
- "@react-email/tailwind",
- "@reliverse/core",
- "@remotion/bundler",
- "@remotion/cli",
- "@remotion/renderer",
- "@simplewebauthn/browser",
- "@simplewebauthn/server",
- "@stripe/react-stripe-js",
- "@stripe/stripe-js",
- "@t3-oss/env-nextjs",
- "@tailwindcss/postcss",
- "@tanstack/react-query-devtools",
- "@tanstack/react-query-next-experimental",
- "@tanstack/react-query",
- "@tanstack/react-table",
- "@trpc/client",
- "@trpc/react-query",
- "@trpc/server",
- "@uidotdev/usehooks",
- "@uploadthing/react",
- "@vercel/analytics",
- "@vercel/flags",
- "@vercel/speed-insights",
- "@vercel/toolbar",
- "@xyflow/react",
- "ajv-formats",
- "ajv",
- "axios",
- "better-sqlite3",
- "c12",
- "citty",
- "class-variance-authority",
- "clsx",
- "cmdk",
- "commander",
- "consola",
- "cookies-next",
- "cropperjs",
- "dayjs",
- "deepmerge",
- "destr",
- "dotenv-cli",
- "dotenv",
- "drizzle-orm",
- "drizzle-zod",
- "embla-carousel-react",
- "execa",
- "flowbite-react",
- "fs-extra",
- "glob",
- "log4js",
- "lucide-react",
- "mathjs",
- "mdx",
- "million",
- "minimatch",
- "modern-errors-cli",
- "modern-errors-serialize",
- "modern-errors",
- "montag",
- "mysql2",
- "nanoid",
- "nanotar",
- "next-auth@beta",
- "next-intl",
- "next-superjson-plugin",
- "next-themes",
- "next",
- "nextjs-google-analytics",
- "node-fetch-native",
- "nodemailer",
- "nuqs",
- "nypm",
- "ofetch",
- "pathe",
- "pg",
- "pick-random-weighted",
- "picocolors",
- "postgres",
- "prettyjson",
- "radash",
- "react-cropper",
- "react-day-picker",
- "react-dom",
- "react-dropzone",
- "react-hook-form",
- "react-medium-image-zoom",
- "react-syntax-highlighter",
- "react-wrap-balancer",
- "react",
- "recharts",
- "redrun",
- "remark-frontmatter",
- "remark-gfm",
- "remark-mdx",
- "remotion",
- "resend",
- "semver",
- "sharp",
- "slate-history",
- "slate-react",
- "slate",
- "std-env",
- "string-ts",
- "stripe",
- "superjson",
- "tailwind-merge",
- "tailwind-variants",
- "tailwindcss-animate",
- "tasuku",
- "try-catch",
- "try-to-catch",
- "ufo",
- "uncrypto",
- "uploadthing",
- "uuid",
- "vaul",
- "zod",
- "zustand",
- ]),
+ ...dependenciesShadcn,
+ ...dependenciesUdecode,
+ "@atao60/fse-cli",
+ "@auth/core",
+ "@auth/drizzle-adapter",
+ "@clack/prompts",
+ "@clerk/localizations",
+ "@clerk/nextjs",
+ "@clerk/themes",
+ "@clerk/types",
+ "@dicebear/collection",
+ "@dicebear/core",
+ "@faire/mjml-react",
+ "@faker-js/faker",
+ "@hookform/resolvers",
+ "@inquirer/prompts",
+ "@libsql/client",
+ "@loglib/tracker",
+ "@mdx-js/loader",
+ "@mdx-js/react",
+ "@metamask/utils",
+ "@million/lint",
+ "@mnrendra/read-package",
+ "@neondatabase/serverless",
+ "@next/bundle-analyzer",
+ "@next/mdx",
+ "@normy/react-query",
+ "@planetscale/database",
+ "@react-email/components",
+ "@react-email/head",
+ "@react-email/html",
+ "@react-email/img",
+ "@react-email/tailwind",
+ "@reliverse/core",
+ "@remotion/bundler",
+ "@remotion/cli",
+ "@remotion/renderer",
+ "@simplewebauthn/browser",
+ "@simplewebauthn/server",
+ "@stripe/react-stripe-js",
+ "@stripe/stripe-js",
+ "@t3-oss/env-nextjs",
+ "@tailwindcss/postcss",
+ "@tanstack/react-query-devtools",
+ "@tanstack/react-query-next-experimental",
+ "@tanstack/react-query",
+ "@tanstack/react-table",
+ "@trpc/client",
+ "@trpc/react-query",
+ "@trpc/server",
+ "@uidotdev/usehooks",
+ "@uploadthing/react",
+ "@vercel/analytics",
+ "@vercel/flags",
+ "@vercel/speed-insights",
+ "@vercel/toolbar",
+ "@xyflow/react",
+ "ajv-formats",
+ "ajv",
+ "axios",
+ "better-sqlite3",
+ "c12",
+ "citty",
+ "class-variance-authority",
+ "clsx",
+ "cmdk",
+ "commander",
+ "consola",
+ "cookies-next",
+ "cropperjs",
+ "dayjs",
+ "deepmerge",
+ "destr",
+ "dotenv-cli",
+ "dotenv",
+ "drizzle-orm",
+ "drizzle-zod",
+ "embla-carousel-react",
+ "flowbite-react",
+ "fs-extra",
+ "glob",
+ "log4js",
+ "lucide-react",
+ "mathjs",
+ "mdx",
+ "million",
+ "minimatch",
+ "modern-errors-cli",
+ "modern-errors-serialize",
+ "modern-errors",
+ "montag",
+ "mysql2",
+ "nanoid",
+ "nanotar",
+ "next-auth@beta",
+ "next-intl",
+ "next-superjson-plugin",
+ "next-themes",
+ "next",
+ "nextjs-google-analytics",
+ "node-fetch-native",
+ "nodemailer",
+ "nuqs",
+ "nypm",
+ "ofetch",
+ "pathe",
+ "pg",
+ "pick-random-weighted",
+ "picocolors",
+ "postgres",
+ "prettyjson",
+ "radash",
+ "react-cropper",
+ "react-day-picker",
+ "react-dom",
+ "react-dropzone",
+ "react-hook-form",
+ "react-medium-image-zoom",
+ "react-syntax-highlighter",
+ "react-wrap-balancer",
+ "react",
+ "recharts",
+ "redrun",
+ "remark-frontmatter",
+ "remark-gfm",
+ "remark-mdx",
+ "remotion",
+ "resend",
+ "semver",
+ "server-only",
+ "sharp",
+ "slate-history",
+ "slate-react",
+ "slate",
+ "std-env",
+ "string-ts",
+ "stripe",
+ "superjson",
+ "tailwind-merge",
+ "tailwind-variants",
+ "tailwindcss-animate",
+ "tasuku",
+ "try-catch",
+ "try-to-catch",
+ "ufo",
+ "uncrypto",
+ "uploadthing",
+ "uuid",
+ "vaul",
+ "zod",
+ "zustand",
];
const dependenciesEslintBasic: string[] = [
@@ -382,48 +390,48 @@ const dependenciesTypes: string[] = [
];
const basicDevDependencies: string[] = [
- ...new Set([
- ...dependenciesEslintBasic,
- ...dependenciesPutout,
- ...dependenciesCspell,
- ...dependenciesTypes,
- "@biomejs/biome",
- "@stylistic/eslint-plugin",
- "@tailwindcss/cli",
- "@tanstack/eslint-plugin-query",
- "@total-typescript/ts-reset",
- "autoprefixer",
- "codeup",
- "cross-env",
- "deadfile",
- "drizzle-kit",
- "envinfo",
- "eslint",
- "fast-npm-meta",
- "knip",
- "magicast",
- "postcss",
- "tailwindcss",
- "tsx",
- "turbo",
- "typescript-eslint",
- "typescript", // 🟦 Change to "typescript@beta" if you want to use beta TS 5.6.
- "typestat",
- "yargs",
- ]),
+ ...dependenciesEslintBasic,
+ ...dependenciesPutout,
+ ...dependenciesCspell,
+ ...dependenciesTypes,
+ "@biomejs/biome",
+ "@stylistic/eslint-plugin",
+ "@tailwindcss/cli",
+ "@tanstack/eslint-plugin-query",
+ "@total-typescript/ts-reset",
+ "autoprefixer",
+ "codeup",
+ "cross-env",
+ "deadfile",
+ "drizzle-kit",
+ "envinfo",
+ "eslint",
+ "fast-npm-meta",
+ "knip",
+ "magicast",
+ "postcss",
+ "tailwindcss",
+ "tsx",
+ "turbo",
+ "typescript-eslint",
+ "typescript@beta", // 🟦 Change to "typescript" if you want to use Stable TS 5.5
+ "typestat",
+ "yargs",
];
// 💡 Alternative to "pnpm latest:overrides".
-// 🟦 Add "typescript@beta" here as well if you
-// 🟦 have "typescript@beta" in basicDevDependencies.
-const rcBetaAlphaCanaryNextDepsDEV = ["next-auth@beta"];
+// 🟦 Remove "typescript@beta" from here if you
+// 🟦 have "typescript" in basicDevDependencies.
+// 🟦 After that re-run `pnpm deps:install-all`.
+const rcBetaAlphaCanaryNextDepsDEV = ["typescript@beta"];
+const rcBetaAlphaCanaryNextDeps = ["next-auth@beta"];
const exclusionsUninstalling = [
...basicDependencies,
...basicDevDependencies,
].join(" ");
-function displayWelcomeMessage(): void {
+async function displayWelcomeMessage(): Promise {
log.info(
"👋 Hello! This script helps improve your developer experience by installing and removing specific packages.",
);
@@ -518,7 +526,30 @@ async function handleDependencies(
if (name === undefined || version === undefined) {
log.error(`❌ Invalid dependency: ${dep}`);
- return;
+ return false;
+ }
+
+ if (name in allDependencies) {
+ const installedVersion = allDependencies[name];
+
+ if (installedVersion === undefined) {
+ log.error(`❌ Unable to find installed version for: ${name}`);
+
+ return false;
+ }
+
+ return installedVersion.includes(version);
+ }
+
+ return false;
+ }) &&
+ rcBetaAlphaCanaryNextDeps.every((dep) => {
+ const [name, version] = dep.split("@");
+
+ if (name === undefined || version === undefined) {
+ log.error(`❌ Invalid dependency: ${dep}`);
+
+ return false;
}
if (name in allDependencies) {
@@ -537,6 +568,10 @@ async function handleDependencies(
});
switch (flag) {
+ case "help":
+ await handleUseFlags(secondaryFlag);
+ break;
+
case "install-all-packages":
const allDepsToInstall = [
...basicDependencies,
@@ -545,7 +580,8 @@ async function handleDependencies(
...dependenciesEslintExtended,
]
.filter((dep) => !allDependencies[dep])
- .filter((dep) => !rcBetaAlphaCanaryNextDepsDEV.includes(dep));
+ .filter((dep) => !rcBetaAlphaCanaryNextDepsDEV.includes(dep))
+ .filter((dep) => !rcBetaAlphaCanaryNextDeps.includes(dep));
if (
allDepsToInstall.length === 0 &&
@@ -562,15 +598,21 @@ async function handleDependencies(
if (!isBetaAlphaCanaryNextDepInstalled) {
log.step(
- `We are going to install: ${rcBetaAlphaCanaryNextDepsDEV.join(" ")}\n`,
+ // eslint-disable-next-line @stylistic/max-len
+ `The following packages will be installed: ${[...rcBetaAlphaCanaryNextDepsDEV, ...rcBetaAlphaCanaryNextDeps].join(" ")}\n`,
);
await addDevDependency(rcBetaAlphaCanaryNextDepsDEV, {
silent: true,
});
+ await addDependency(rcBetaAlphaCanaryNextDeps, {
+ silent: true,
+ });
}
if (allDepsToInstall.length > 0) {
- log.step(`We are going to install: ${allDepsToInstall.join(" ")}\n`);
+ log.step(
+ `The following packages will be installed: ${allDepsToInstall.join(" ")}\n`,
+ );
await addDependency(allDepsToInstall, { silent: true });
}
@@ -589,11 +631,13 @@ async function handleDependencies(
case "install-basic-packages":
const basicDepsToInstall = basicDependencies
.filter((dep) => !allDependencies[dep])
- .filter((dep) => !rcBetaAlphaCanaryNextDepsDEV.includes(dep));
+ .filter((dep) => !rcBetaAlphaCanaryNextDepsDEV.includes(dep))
+ .filter((dep) => !rcBetaAlphaCanaryNextDeps.includes(dep));
const basicDevDepsToInstall = basicDevDependencies
.filter((dep) => !allDependencies[dep])
- .filter((dep) => !rcBetaAlphaCanaryNextDepsDEV.includes(dep));
+ .filter((dep) => !rcBetaAlphaCanaryNextDepsDEV.includes(dep))
+ .filter((dep) => !rcBetaAlphaCanaryNextDeps.includes(dep));
if (
basicDepsToInstall.length === 0 &&
@@ -611,15 +655,20 @@ async function handleDependencies(
if (!isBetaAlphaCanaryNextDepInstalled) {
log.step(
- `We are going to install: ${rcBetaAlphaCanaryNextDepsDEV.join(" ")}\n`,
+ // eslint-disable-next-line @stylistic/max-len
+ `The following packages will be installed: ${[...rcBetaAlphaCanaryNextDepsDEV, ...rcBetaAlphaCanaryNextDeps].join(" ")}\n`,
);
await addDevDependency(rcBetaAlphaCanaryNextDepsDEV, {
silent: true,
});
+ await addDependency(rcBetaAlphaCanaryNextDeps, {
+ silent: true,
+ });
}
log.step(
- `We are going to install: ${basicDepsToInstall.join(" ")} ${basicDevDepsToInstall.join(" ")}\n`,
+ // eslint-disable-next-line @stylistic/max-len
+ `The following packages will be installed: ${basicDepsToInstall.join(" ")} ${basicDevDepsToInstall.join(" ")}\n`,
);
if (basicDepsToInstall.length > 0) {
@@ -696,12 +745,14 @@ async function handleDependencies(
);
break;
- case "use":
- await handleUseFlags(secondaryFlag);
+ case "welcome":
+ await displayWelcomeMessage();
break;
default:
- displayWelcomeMessage();
+ // TODO: for some reason it is executed even without calling/importing ./packageJson.ts file
+ // await displayWelcomeMessage();
+ break;
}
} catch (error) {
logError(error);
@@ -716,8 +767,8 @@ async function removeDependencies(
const { dependencies, devDependencies } = readPackageSync();
const allDependencies = [
- ...Object.keys(dependencies ?? {}),
- ...Object.keys(devDependencies ?? {}),
+ ...Object.keys(dependencies || {}),
+ ...Object.keys(devDependencies || {}),
];
const filteredDependencies = allDependencies.filter((key) =>
@@ -804,7 +855,7 @@ async function info(): Promise {
for (const [dep, version] of Object.entries(dependenciesObject)) {
const cleanedVersion = version.replace(/^\^/, "");
const metadata = await getLatestVersion(dep);
- const latestVersion = metadata.version ?? "Unknown";
+ const latestVersion = metadata.version || "Unknown";
if (latestVersion === "Unknown") {
log.error(` ${dep}: ${version} (Unable to fetch latest version)`);
@@ -892,12 +943,6 @@ function findUnregisteredPackages(): void {
}
}
-type PackageJson = {
- [key: string]: any;
- dependencies?: Record;
- devDependencies?: Record;
-};
-
async function writePackageJson(packageJson: PackageJson): Promise {
const packageJsonPath = path.resolve(process.cwd(), "package.json");
@@ -962,7 +1007,7 @@ async function checkIncorrectlyPlacedPackages() {
}
}
- if (automaticPackageJsonDependenciesMover && debugEnabled) {
+ if (automaticPackageJsonDependenciesMover && localDebugEnabled) {
const updatedDependencies = { ...dependencies };
const updatedDevDependencies = { ...devDependencies };
@@ -1098,7 +1143,7 @@ async function handleUseFlags(flag: UseFlag) {
return fileSize / duration; // speed in KB/s
} catch (error) {
console.error(
- `Failed to download from ${url}: ${String(error) ?? "Unknown error"}`,
+ `Failed to download from ${url}: ${String(error) || "Unknown error"}`,
);
}
}
@@ -1123,7 +1168,7 @@ async function handleUseFlags(flag: UseFlag) {
throw new Error(`Package size for '${packageName}' not found.`);
}
- return sum + (packageSizes[packageName] ?? 0);
+ return sum + (packageSizes[packageName] || 0);
}, 0);
return totalSize / speed; // time in seconds
@@ -1209,10 +1254,10 @@ async function handleUseFlags(flag: UseFlag) {
}
try {
- const appDebugEnabled = debugEnabled;
+ const localDppDebugEnabled = localDebugEnabled;
let speed = 600; // default speed
- if (appDebugEnabled) {
+ if (localDppDebugEnabled) {
speed = await measureDownloadSpeed();
}
@@ -1425,9 +1470,10 @@ async function main(): Promise {
const cwd = getCurrentWorkingDirectory();
await handleDependencies(flag as (typeof flags)[number], cwd);
- } else {
- displayWelcomeMessage();
}
+
+ // TODO: for some reason it is executed even without calling/importing ./packageJson.ts file
+ // else { await displayWelcomeMessage(); }
}
if (isFlag(flag)) {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d589b410..0fcd2acb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,20 +21,26 @@ importers:
specifier: ^0.7.0
version: 0.7.0
'@clerk/localizations':
- specifier: ^2.5.4
- version: 2.5.4
+ specifier: ^2.5.6
+ version: 2.5.6
'@clerk/nextjs':
- specifier: ^5.2.12
- version: 5.2.12(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^5.2.14
+ version: 5.2.14(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@clerk/themes':
- specifier: ^2.1.16
- version: 2.1.16
+ specifier: ^2.1.18
+ version: 2.1.18
'@clerk/types':
- specifier: ^4.11.0
- version: 4.11.0
+ specifier: ^4.12.1
+ version: 4.12.1
+ '@dicebear/collection':
+ specifier: ^9.2.1
+ version: 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/core':
+ specifier: ^9.2.1
+ version: 9.2.1
'@eslint-react/eslint-plugin':
- specifier: ^1.8.2
- version: 1.8.2(eslint@9.8.0)(typescript@5.5.4)
+ specifier: ^1.9.0
+ version: 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
'@faire/mjml-react':
specifier: ^3.3.0
version: 3.3.0(mjml@4.15.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -45,8 +51,8 @@ importers:
specifier: ^3.9.0
version: 3.9.0(react-hook-form@7.52.2(react@18.3.1))
'@inquirer/prompts':
- specifier: ^5.3.6
- version: 5.3.6
+ specifier: ^5.3.8
+ version: 5.3.8
'@libsql/client':
specifier: ^0.8.1
version: 0.8.1
@@ -82,7 +88,7 @@ importers:
version: 14.2.5(@mdx-js/loader@3.0.1(webpack@5.83.1(esbuild@0.19.12)))(@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1))
'@normy/react-query':
specifier: ^0.14.3
- version: 0.14.3(@tanstack/react-query@5.51.21(react@18.3.1))
+ version: 0.14.3(@tanstack/react-query@5.51.23(react@18.3.1))
'@planetscale/database':
specifier: ^1.18.0
version: 1.18.0
@@ -107,6 +113,9 @@ importers:
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.1
version: 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-hover-card':
+ specifier: ^1.1.1
+ version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-icons':
specifier: ^1.3.0
version: 1.3.0(react@18.3.1)
@@ -122,6 +131,9 @@ importers:
'@radix-ui/react-popover':
specifier: ^1.1.1
version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-progress':
+ specifier: ^1.1.0
+ version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-scroll-area':
specifier: ^1.1.0
version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -150,8 +162,8 @@ importers:
specifier: ^1.1.2
version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/themes':
- specifier: ^3.1.1
- version: 3.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^3.1.3
+ version: 3.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-email/components':
specifier: ^0.0.22
version: 0.0.22(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -171,17 +183,17 @@ importers:
specifier: npm:@jsr/reliverse__core@^0.1.0
version: '@jsr/reliverse__core@0.1.0'
'@remotion/bundler':
- specifier: ^4.0.191
- version: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^4.0.194
+ version: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@remotion/cli':
- specifier: ^4.0.191
- version: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^4.0.194
+ version: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@remotion/eslint-config':
- specifier: ^4.0.191
- version: 4.0.191(eslint@9.8.0)(typescript@5.5.4)
+ specifier: ^4.0.194
+ version: 4.0.194(eslint@9.8.0)(typescript@5.6.0-beta)
'@remotion/renderer':
- specifier: ^4.0.191
- version: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^4.0.194
+ version: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@simplewebauthn/browser':
specifier: ^10.0.0
version: 10.0.0
@@ -190,25 +202,25 @@ importers:
version: 10.0.1
'@stripe/react-stripe-js':
specifier: ^2.7.3
- version: 2.7.3(@stripe/stripe-js@4.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 2.7.3(@stripe/stripe-js@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@stripe/stripe-js':
- specifier: ^4.1.0
- version: 4.1.0
+ specifier: ^4.2.0
+ version: 4.2.0
'@t3-oss/env-nextjs':
specifier: ^0.11.0
- version: 0.11.0(typescript@5.5.4)(zod@3.23.8)
+ version: 0.11.0(typescript@5.6.0-beta)(zod@3.23.8)
'@tailwindcss/postcss':
specifier: 0.0.0-development.1
version: 0.0.0-development.1
'@tanstack/react-query':
- specifier: ^5.51.21
- version: 5.51.21(react@18.3.1)
+ specifier: ^5.51.23
+ version: 5.51.23(react@18.3.1)
'@tanstack/react-query-devtools':
- specifier: ^5.51.21
- version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1)
+ specifier: ^5.51.23
+ version: 5.51.23(@tanstack/react-query@5.51.23(react@18.3.1))(react@18.3.1)
'@tanstack/react-query-next-experimental':
- specifier: ^5.51.21
- version: 5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ specifier: ^5.51.23
+ version: 5.51.23(@tanstack/react-query@5.51.23(react@18.3.1))(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@tanstack/react-table':
specifier: ^8.20.1
version: 8.20.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -217,7 +229,7 @@ importers:
version: 11.0.0-rc.477(@trpc/server@11.0.0-rc.477)
'@trpc/react-query':
specifier: 11.0.0-rc.477
- version: 11.0.0-rc.477(@tanstack/react-query@5.51.21(react@18.3.1))(@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477))(@trpc/server@11.0.0-rc.477)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 11.0.0-rc.477(@tanstack/react-query@5.51.23(react@18.3.1))(@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477))(@trpc/server@11.0.0-rc.477)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@trpc/server':
specifier: 11.0.0-rc.477
version: 11.0.0-rc.477
@@ -283,19 +295,19 @@ importers:
version: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@uploadthing/react':
specifier: ^6.7.2
- version: 6.7.2(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.7))
+ version: 6.7.2(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.8))
'@vercel/analytics':
specifier: ^1.3.1
- version: 1.3.1(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 1.3.1(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@vercel/flags':
specifier: ^2.6.0
- version: 2.6.0(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 2.6.0(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@vercel/speed-insights':
specifier: ^1.0.12
- version: 1.0.12(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 1.0.12(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@vercel/toolbar':
specifier: ^0.1.15
- version: 0.1.15(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 0.1.15(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@xyflow/react':
specifier: ^12.0.4
version: 12.0.4(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -354,26 +366,26 @@ importers:
specifier: ^7.4.2
version: 7.4.2
drizzle-orm:
- specifier: ^0.32.1
- version: 0.32.1(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1)
+ specifier: ^0.32.2
+ version: 0.32.2(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1)
drizzle-zod:
specifier: ^0.5.1
- version: 0.5.1(drizzle-orm@0.32.1(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(zod@3.23.8)
+ version: 0.5.1(drizzle-orm@0.32.2(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(zod@3.23.8)
embla-carousel-react:
specifier: ^8.1.8
version: 8.1.8(react@18.3.1)
- execa:
- specifier: ^9.3.0
- version: 9.3.0
flowbite-react:
specifier: ^0.10.1
- version: 0.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.7)
+ version: 0.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.8)
fs-extra:
specifier: ^11.2.0
version: 11.2.0
glob:
specifier: ^11.0.0
version: 11.0.0
+ input-otp:
+ specifier: ^1.2.4
+ version: 1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
jsonc-eslint-parser:
specifier: ^2.4.0
version: 2.4.0
@@ -418,19 +430,19 @@ importers:
version: 0.1.1
next:
specifier: 14.2.5
- version: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-intl:
specifier: ^3.17.2
- version: 3.17.2(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 3.17.2(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
next-superjson-plugin:
specifier: ^0.6.3
- version: 0.6.3(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(superjson@2.2.1)
+ version: 0.6.3(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(superjson@2.2.1)
next-themes:
specifier: ^0.3.0
version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
nextjs-google-analytics:
specifier: ^2.3.3
- version: 2.3.3(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 2.3.3(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
node-fetch-native:
specifier: ^1.6.4
version: 1.6.4
@@ -438,8 +450,8 @@ importers:
specifier: ^6.9.14
version: 6.9.14
nuqs:
- specifier: ^1.17.6
- version: 1.17.6(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
+ specifier: ^1.17.8
+ version: 1.17.8(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
nypm:
specifier: ^0.3.9
version: 0.3.9
@@ -474,8 +486,8 @@ importers:
specifier: ^2.3.3
version: 2.3.3(react@18.3.1)
react-day-picker:
- specifier: ^9.0.6
- version: 9.0.6(react@18.3.1)
+ specifier: ^9.0.8
+ version: 9.0.8(react@18.3.1)
react-dom:
specifier: 18.3.1
version: 18.3.1(react@18.3.1)
@@ -499,7 +511,7 @@ importers:
version: 2.12.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
redrun:
specifier: ^11.0.5
- version: 11.0.5(typescript@5.5.4)
+ version: 11.0.5(typescript@5.6.0-beta)
remark-frontmatter:
specifier: ^5.0.0
version: 5.0.0
@@ -510,14 +522,17 @@ importers:
specifier: ^3.0.1
version: 3.0.1
remotion:
- specifier: ^4.0.191
- version: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^4.0.194
+ version: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
resend:
specifier: ^3.5.0
version: 3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
semver:
specifier: ^7.6.3
version: 7.6.3
+ server-only:
+ specifier: ^0.0.1
+ version: 0.0.1
sharp:
specifier: ^0.33.4
version: 0.33.4
@@ -547,10 +562,10 @@ importers:
version: 2.4.0
tailwind-variants:
specifier: ^0.2.1
- version: 0.2.1(tailwindcss@3.4.7)
+ version: 0.2.1(tailwindcss@3.4.8)
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.7)
+ version: 1.0.7(tailwindcss@3.4.8)
tasuku:
specifier: ^2.0.1
version: 2.0.1
@@ -568,7 +583,7 @@ importers:
version: 0.1.3
uploadthing:
specifier: ^6.13.2
- version: 6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.7)
+ version: 6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.8)
uuid:
specifier: ^10.0.0
version: 10.0.0
@@ -632,43 +647,43 @@ importers:
version: 2.0.0
'@putout/plugin-apply-montag':
specifier: ^1.1.1
- version: 1.1.1(putout@36.0.3(typescript@5.5.4))
+ version: 1.1.1(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-apply-nullish-coalescing':
specifier: ^2.0.0
- version: 2.0.0(putout@36.0.3(typescript@5.5.4))
+ version: 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-apply-shorthand-properties':
specifier: ^5.1.1
- version: 5.1.1(putout@36.0.3(typescript@5.5.4))
+ version: 5.1.1(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-convert-assert-to-with':
specifier: ^2.0.0
- version: 2.0.0(putout@36.0.3(typescript@5.5.4))
+ version: 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-convert-is-nan-to-number-is-nan':
specifier: ^1.0.0
- version: 1.0.0(putout@36.0.3(typescript@5.5.4))
+ version: 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-convert-throw':
specifier: ^1.0.1
- version: 1.0.1(putout@36.0.3(typescript@5.5.4))
+ version: 1.0.1(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-nextjs':
specifier: ^3.0.0
- version: 3.0.0(putout@36.0.3(typescript@5.5.4))
+ version: 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-react':
specifier: ^1.3.0
- version: 1.3.0(putout@36.0.3(typescript@5.5.4))
+ version: 1.3.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-react-hook-form':
specifier: ^4.0.0
- version: 4.0.0(putout@36.0.3(typescript@5.5.4))
+ version: 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/plugin-react-hooks':
specifier: ^6.0.0
- version: 6.0.0(putout@36.0.3(typescript@5.5.4))
+ version: 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@stylistic/eslint-plugin':
specifier: ^2.6.1
- version: 2.6.1(eslint@9.8.0)(typescript@5.5.4)
+ version: 2.6.1(eslint@9.8.0)(typescript@5.6.0-beta)
'@tailwindcss/cli':
specifier: ^0.1.2
version: 0.1.2
'@tanstack/eslint-plugin-query':
specifier: ^5.51.15
- version: 5.51.15(eslint@9.8.0)(typescript@5.5.4)
+ version: 5.51.15(eslint@9.8.0)(typescript@5.6.0-beta)
'@total-typescript/ts-reset':
specifier: ^0.5.1
version: 0.5.1
@@ -721,11 +736,11 @@ importers:
specifier: ^10.0.0
version: 10.0.0
'@types/yargs':
- specifier: ^17.0.32
- version: 17.0.32
+ specifier: ^17.0.33
+ version: 17.0.33
autoprefixer:
specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.40)
+ version: 10.4.20(postcss@8.4.41)
codeup:
specifier: ^0.0.4
version: 0.0.4
@@ -733,14 +748,14 @@ importers:
specifier: ^7.0.3
version: 7.0.3
cspell:
- specifier: ^8.13.1
- version: 8.13.1
+ specifier: ^8.13.2
+ version: 8.13.2
deadfile:
specifier: ^2.1.1
version: 2.1.1
drizzle-kit:
- specifier: ^0.23.1
- version: 0.23.1
+ specifier: ^0.23.2
+ version: 0.23.2
envinfo:
specifier: ^7.13.0
version: 7.13.0
@@ -755,7 +770,7 @@ importers:
version: 3.2.0(eslint@9.8.0)
eslint-plugin-import-x:
specifier: ^3.1.0
- version: 3.1.0(eslint@9.8.0)(typescript@5.5.4)
+ version: 3.1.0(eslint@9.8.0)(typescript@5.6.0-beta)
eslint-plugin-jsonc:
specifier: ^2.16.0
version: 2.16.0(eslint@9.8.0)
@@ -769,8 +784,8 @@ importers:
specifier: ^3.1.5
version: 3.1.5(eslint@9.8.0)
eslint-plugin-n:
- specifier: ^17.10.1
- version: 17.10.1(eslint@9.8.0)
+ specifier: ^17.10.2
+ version: 17.10.2(eslint@9.8.0)
eslint-plugin-no-comments:
specifier: ^1.1.10
version: 1.1.10
@@ -778,14 +793,14 @@ importers:
specifier: ^1.5.5
version: 1.5.5
eslint-plugin-perfectionist:
- specifier: ^3.1.1
- version: 3.1.1(eslint@9.8.0)(typescript@5.5.4)
+ specifier: ^3.1.3
+ version: 3.1.3(eslint@9.8.0)(typescript@5.6.0-beta)
eslint-plugin-promise:
- specifier: ^7.0.0
- version: 7.0.0(eslint@9.8.0)
+ specifier: ^7.1.0
+ version: 7.1.0(eslint@9.8.0)
eslint-plugin-putout:
specifier: ^22.10.0
- version: 22.10.0(eslint@9.8.0)(putout@36.0.3(typescript@5.5.4))
+ version: 22.10.0(eslint@9.8.0)(putout@36.0.3(typescript@5.6.0-beta))
eslint-plugin-react:
specifier: ^7.35.0
version: 7.35.0(eslint@9.8.0)
@@ -797,7 +812,7 @@ importers:
version: 0.4.9(eslint@9.8.0)
eslint-plugin-readable-tailwind:
specifier: ^1.5.3
- version: 1.5.3(eslint@9.8.0)(tailwindcss@3.4.7)
+ version: 1.5.3(eslint@9.8.0)(tailwindcss@3.4.8)
eslint-plugin-regexp:
specifier: ^2.6.0
version: 2.6.0(eslint@9.8.0)
@@ -806,13 +821,13 @@ importers:
version: 1.0.4(eslint@9.8.0)
eslint-plugin-sort:
specifier: ^3.0.2
- version: 3.0.2(eslint@9.8.0)(typescript@5.5.4)
+ version: 3.0.2(eslint@9.8.0)(typescript@5.6.0-beta)
eslint-plugin-sort-exports:
specifier: ^0.9.1
version: 0.9.1(eslint@9.8.0)
eslint-plugin-tailwindcss:
specifier: ^3.17.4
- version: 3.17.4(tailwindcss@3.4.7)
+ version: 3.17.4(tailwindcss@3.4.8)
eslint-plugin-unicorn:
specifier: ^55.0.0
version: 55.0.0(eslint@9.8.0)
@@ -826,35 +841,35 @@ importers:
specifier: ^15.9.0
version: 15.9.0
knip:
- specifier: ^5.27.0
- version: 5.27.0(@types/node@22.1.0)(typescript@5.5.4)
+ specifier: ^5.27.2
+ version: 5.27.2(@types/node@22.1.0)(typescript@5.6.0-beta)
magicast:
specifier: ^0.3.4
version: 0.3.4
next-auth:
specifier: 5.0.0-beta.20
- version: 5.0.0-beta.20(@simplewebauthn/browser@10.0.0)(@simplewebauthn/server@10.0.1)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react@18.3.1)
+ version: 5.0.0-beta.20(@simplewebauthn/browser@10.0.0)(@simplewebauthn/server@10.0.1)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react@18.3.1)
postcss:
- specifier: ^8.4.40
- version: 8.4.40
+ specifier: ^8.4.41
+ version: 8.4.41
putout:
specifier: ^36.0.3
- version: 36.0.3(typescript@5.5.4)
+ version: 36.0.3(typescript@5.6.0-beta)
tailwindcss:
- specifier: ^3.4.7
- version: 3.4.7
+ specifier: ^3.4.8
+ version: 3.4.8
tsx:
- specifier: ^4.16.5
- version: 4.16.5
+ specifier: ^4.17.0
+ version: 4.17.0
turbo:
- specifier: ^2.0.11
- version: 2.0.11
+ specifier: ^2.0.12
+ version: 2.0.12
typescript:
- specifier: 5.5.4
- version: 5.5.4
+ specifier: 5.6.0-beta
+ version: 5.6.0-beta
typescript-eslint:
- specifier: ^8.0.0
- version: 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ specifier: ^8.0.1
+ version: 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
typestat:
specifier: ^0.7.3
version: 0.7.3
@@ -1120,31 +1135,31 @@ packages:
bundledDependencies:
- is-unicode-supported
- '@clerk/backend@1.5.2':
- resolution: {integrity: sha512-aqI8AguSkMCPaEDRTTwyUYt/FtbgAw1zwDiWkG778MVnAuL/Bw8QT4/h8oK6/BB9egvGyjRlycoFw0DnMfe2/A==}
+ '@clerk/backend@1.6.1':
+ resolution: {integrity: sha512-UA1zLXuHQBZ7CQtRXTKl5siejmfqOYs4jLfAyMnsHjY0r+PJ2/oZ4WsFepJNw1CdQdP2hi8wmrSuV3EZA6VjnQ==}
engines: {node: '>=18.17.0'}
- '@clerk/clerk-react@5.3.1':
- resolution: {integrity: sha512-TdZxa+kNEWHivUapDjlfnh+GZhEwlgvB3CnpZD3Qq6ovEmEaFL5eqFwo+hDoU+hUd9IkbvQ0WIi1wrVaaL8d2A==}
+ '@clerk/clerk-react@5.3.3':
+ resolution: {integrity: sha512-GtwC2tQegwA74M2XiTLiwJ7wkywlwDjjz4gJLzSST33sa903uVlnWEUONFQjINgra8pfx9f2U6mmHVj1F27FQw==}
engines: {node: '>=18.17.0'}
peerDependencies:
react: '>=18 || >=19.0.0-beta'
react-dom: '>=18 || >=19.0.0-beta'
- '@clerk/localizations@2.5.4':
- resolution: {integrity: sha512-UYEFdshQE1fHYaT9jKoTaiW0s2GDv6R8t/i5P/ATFi1RI/VOaRGskMYm98PWBo0jZ62aEZU913KP4K02ltJ5OQ==}
+ '@clerk/localizations@2.5.6':
+ resolution: {integrity: sha512-qGjAgPJ1s89LY4RYFoQEQUPy4/+He347jZN30js6CbTll3H5eFxnH7lCZ2301kOWJOi1WyQRJ2pfnmkulZhzKQ==}
engines: {node: '>=18.17.0'}
- '@clerk/nextjs@5.2.12':
- resolution: {integrity: sha512-e7uNyQDd1DfIQ0n59DNDvKgZOgIYlP6ZegEERSmT8OyFdiqXgP/S112AOiuFJWVFGv9/yRyebGeJr8NrkolJLA==}
+ '@clerk/nextjs@5.2.14':
+ resolution: {integrity: sha512-6m62iOOeSJkuyD+kw/k9zGaU+MpYTaFuFr+pX4TCQEgrvc3aOdeUXcLeeNYDIAORNtPtDx5+YS/Ld3J60/BG1Q==}
engines: {node: '>=18.17.0'}
peerDependencies:
next: ^13.5.4 || ^14.0.3 || >=15.0.0-rc
react: '>=18 || >=19.0.0-beta'
react-dom: '>=18 || >=19.0.0-beta'
- '@clerk/shared@2.4.3':
- resolution: {integrity: sha512-IME50BMoiUOEDrm8Dzx4A3QuMFlPEaoHnQ9kMHulWidcJ/cyj+3TEBPrW0Ls0v5ziwnMWeYsSrIv/XeU15hSNw==}
+ '@clerk/shared@2.4.5':
+ resolution: {integrity: sha512-WK8/LLow7q+OXzsRWtSAkqsBbtt16TcivfvN5bIhbcs52jIiA1EvIOetwFk5yXDNBHdEn2GxL7UXxdBaodselA==}
engines: {node: '>=18.17.0'}
peerDependencies:
react: '>=18 || >=19.0.0-beta'
@@ -1155,36 +1170,36 @@ packages:
react-dom:
optional: true
- '@clerk/themes@2.1.16':
- resolution: {integrity: sha512-ln+Un52L3ibx0Y0PUIDhYwUeCjdkTEL5vPfPxs78rTskCal9orVZ52YXwEs1+I/GIUBstFVB4cOLsuMKdkpdCw==}
+ '@clerk/themes@2.1.18':
+ resolution: {integrity: sha512-n9IFNxgoWUNDx/ME37pxKvfRz8glXoJOcIGYrRmkNzmo96QxqFKAg3ZebskVYekiYkF/Z7HBy4EG6LNMNpC7Ng==}
engines: {node: '>=18.17.0'}
- '@clerk/types@4.11.0':
- resolution: {integrity: sha512-sMp3ATIH5ZoZ9veu9/LNH68GvahDm7sPLJf8xYyjc9hJYILz85xzI0JbwS6iFJw2NpTssvyl9viL7tgBrw46iA==}
+ '@clerk/types@4.12.1':
+ resolution: {integrity: sha512-0torlmJM3S3kYdaZuIrw1pf4K8aMvoFV+PE1xg7MGfZ0enD9UO3Vhw24pP/yBhI4hVGtNu95E63gpeOFIYysrA==}
engines: {node: '>=18.17.0'}
- '@cspell/cspell-bundled-dicts@8.13.1':
- resolution: {integrity: sha512-ylAwnIdxBMJ9v6BHpFAQFZM+5zbybLtqVQJG7zQePts4e0/Qr2xjYFbC3F+fovZqyXPIx24BR+S6gFJNO1OdAw==}
+ '@cspell/cspell-bundled-dicts@8.13.2':
+ resolution: {integrity: sha512-BLXah6gUvPeZM8bj1I0F5YJ0CzDZ3d3xpbDCrDB0NfHIsF9zn0la+ie0O15VcVWNBrNIToc6enjxWg1JSF3E5g==}
engines: {node: '>=18'}
- '@cspell/cspell-json-reporter@8.13.1':
- resolution: {integrity: sha512-vYZTBRkYjpNBifGNbYQsgIXesDEdUa9QAwllDcLZGKbhh5mY/C1ygPnAVpYDYiJNt1WCeIqW286DUyjRjkmHeA==}
+ '@cspell/cspell-json-reporter@8.13.2':
+ resolution: {integrity: sha512-UOINJikJs9tRWc2RrFmXK4s3hpasAIbSq+6ed7NojY/2kYv6u0bHNhh4D+4DAroHcFsU24vl/PeTa9V4Z5CelA==}
engines: {node: '>=18'}
- '@cspell/cspell-pipe@8.13.1':
- resolution: {integrity: sha512-acLWTQv3yWfeWXMds/cfQKZapslOrLHVL4VDp4rFyL/EnfgaCr7Ew9hQ7zAIARY3r/n0dByqWbOt2HKthdhx/g==}
+ '@cspell/cspell-pipe@8.13.2':
+ resolution: {integrity: sha512-67N6UHaHRc3H9Nl5TKO/r1lCMgnMPQH+scR6aJxHjcwlKLSoNpGF9LiURhmYaItIhfTH4TDfB2hVPzsslRzaWg==}
engines: {node: '>=18'}
- '@cspell/cspell-resolver@8.13.1':
- resolution: {integrity: sha512-EGdb7KLYCklV3sLxf/895b7s6sExh8DCHZFpDos2hjKwMt+F4ynsu1+ceybQtqoUF/MsyLoJXrrmPvV2uGVmUQ==}
+ '@cspell/cspell-resolver@8.13.2':
+ resolution: {integrity: sha512-SCAH4LbV0uFP9ldXB49mRGnAnPCKZV8W96EMHv9Tdh7Fp3btF5FFaVf0h3/ms1g3quzWJq1+EZvJCKCpm9JY5g==}
engines: {node: '>=18'}
- '@cspell/cspell-service-bus@8.13.1':
- resolution: {integrity: sha512-oLFJfxuB1rwGXn3eD5qSF9nf0lHu6YjO0JcrjWhAZQ0r3AsO97gsX50wwCFCw6szVU3rd1cTUktW0KYEZUY6dA==}
+ '@cspell/cspell-service-bus@8.13.2':
+ resolution: {integrity: sha512-lKgRzJlCPc4BLlqDjWQgIo0ikX4nQ04M1vu0H3CQjfcwr2PVEGLSlXXyJnA6S3A80WxVXhGehyMBhXzItmpKIQ==}
engines: {node: '>=18'}
- '@cspell/cspell-types@8.13.1':
- resolution: {integrity: sha512-9dJdmyXLXJVesCJa/DWgwKsEC9p2RRFc6KORcLhNvtm1tE9TvCXiu5jV47sOmYXd6Hwan8IurBXXTz82CLVjPQ==}
+ '@cspell/cspell-types@8.13.2':
+ resolution: {integrity: sha512-0QFLcerzBapst1A729VTegeEcsHFK/YfDvOYWUwsZcmPrpacJ8qHmRPVyyFLvN5punXWwB7pIdtbrVRPDQT49w==}
engines: {node: '>=18'}
'@cspell/dict-ada@4.0.2':
@@ -1331,8 +1346,8 @@ packages:
'@cspell/dict-public-licenses@2.0.7':
resolution: {integrity: sha512-KlBXuGcN3LE7tQi/GEqKiDewWGGuopiAD0zRK1QilOx5Co8XAvs044gk4MNIQftc8r0nHeUI+irJKLGcR36DIQ==}
- '@cspell/dict-python@4.2.3':
- resolution: {integrity: sha512-C1CPX9wwEGgcHv/p7KfjuIOp1G6KNyx5gWYweAd6/KPv+ZpeM1v572zFUTmpO8WDuAfKFf00nqYL8/GmCENWBw==}
+ '@cspell/dict-python@4.2.4':
+ resolution: {integrity: sha512-sCtLBqMreb+8zRW2bXvFsfSnRUVU6IFm4mT6Dc4xbz0YajprbaPPh/kOUTw5IJRP8Uh+FFb7Xp2iH03CNWRq/A==}
'@cspell/dict-r@2.0.1':
resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==}
@@ -1346,11 +1361,11 @@ packages:
'@cspell/dict-scala@5.0.3':
resolution: {integrity: sha512-4yGb4AInT99rqprxVNT9TYb1YSpq58Owzq7zi3ZS5T0u899Y4VsxsBiOgHnQ/4W+ygi+sp+oqef8w8nABR2lkg==}
- '@cspell/dict-software-terms@4.0.4':
- resolution: {integrity: sha512-AHr3Wxa4pxbpKgxhyQseBmoJhdyeraeRGdQn0e8YD5pz4J6Mu47MLzKysasDKWK/yzmHQfwAsb2zm2k+ItMEUw==}
+ '@cspell/dict-software-terms@4.0.5':
+ resolution: {integrity: sha512-93knOtaQlWq1Zlz5LbjOl3P3hIiWbhd7kwGZPHVxCdD8+G3UEF9hivkpZ1miK/DzlV/Lcw2RoybOd91Xazc+dg==}
- '@cspell/dict-sql@2.1.4':
- resolution: {integrity: sha512-wsrNK6UBQ92IzQ4SqQqgM04BEYzqVsk3qZH3ZgascaqDtUgK6GI+z3Czi0rQ+9Qe2zKiklGnGMC8sJwYdlIw7g==}
+ '@cspell/dict-sql@2.1.5':
+ resolution: {integrity: sha512-FmxanytHXss7GAWAXmgaxl3icTCW7YxlimyOSPNfm+njqeUDjw3kEv4mFNDDObBJv8Ec5AWCbUDkWIpkE3IpKg==}
'@cspell/dict-svelte@1.0.2':
resolution: {integrity: sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==}
@@ -1373,16 +1388,16 @@ packages:
'@cspell/dict-vue@3.0.0':
resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==}
- '@cspell/dynamic-import@8.13.1':
- resolution: {integrity: sha512-jMqJHWmQy+in99JMSFlaGV9P033gCx7DCZvGO/ZSeZ2EatrUTanJk3oTG1TZknZydb0nnxr1mgTWXN7PCAAXDg==}
+ '@cspell/dynamic-import@8.13.2':
+ resolution: {integrity: sha512-ckn9k7kW9Wv1kw8WltUGByQQzFFR9YITtnDQHHFI8yi9IQkSle4+KHLr9Y8uL6U8rtwP70edX4ese++yfnJr+Q==}
engines: {node: '>=18.0'}
- '@cspell/strong-weak-map@8.13.1':
- resolution: {integrity: sha512-ga1ibI9ZLJWNszfP7e6qQ8gnoQOP9rE/clALMAim9ssO6cmMhEEm+i1ROH4nsDfThd6sVlUJ0IOtx5dEqPmWxw==}
+ '@cspell/strong-weak-map@8.13.2':
+ resolution: {integrity: sha512-jVwlZnef8Q/x3MEg5ixRYYfV3BoI5ZOw0UZRianaM1GwsLCIW/mJ7ZIlIQF6N/exE1YWCpyRlCNgvTgUf7fc7w==}
engines: {node: '>=18'}
- '@cspell/url@8.13.1':
- resolution: {integrity: sha512-cCyojz5ovgGCexhez2urle4Q1UOEsp96lvl4pDmWNDHa/6n8dqiIn60SVzQIsAHzJ4yEV077RSaIrTlq/T+oSQ==}
+ '@cspell/url@8.13.2':
+ resolution: {integrity: sha512-IFtiADDLGCp4QXPhsQ0F5/jbVQb0Loeum36wzGLiqXWYDjIA25W8miy0hyy/S8aZhzdEq2aUZjz9dTvkl+5ISQ==}
engines: {node: '>=18.0'}
'@csstools/css-parser-algorithms@2.7.1':
@@ -1408,6 +1423,196 @@ packages:
peerDependencies:
postcss-selector-parser: ^6.0.13
+ '@dicebear/adventurer-neutral@9.2.1':
+ resolution: {integrity: sha512-iP6Tc6CgrJt63j08i/hlyNiGEbDNgP9Ws6WKT9n/0oTU9X/DKLncGStV3uhgYPIOVQE/tw9a/GjbGjrwBlN8CQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/adventurer@9.2.1':
+ resolution: {integrity: sha512-utJr8oEOwPy9y+7rIOnB7mls+2XQrc3Kdlx/ay9KBY/HEUMnwMoN/GJhg4HcyGnV+DS7VhN6JSrnwwD9+SQyBw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/avataaars-neutral@9.2.1':
+ resolution: {integrity: sha512-yceQMVBLimAHgZDL8VKCDGNs5JQ8BERaUMNIJXXRKEYZXlofoXZpYtcWPKQY9lmRJJznO1GX7ZK12ILnZjRPBQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/avataaars@9.2.1':
+ resolution: {integrity: sha512-WIZL7CWSsmzLswY/4ZrgtE/7EvnaNrYreLyT8hjiGyVb9J4cQaVZXSMuDIGFa5wT062AW/4/i82kh/7nh0oL+w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/big-ears-neutral@9.2.1':
+ resolution: {integrity: sha512-98qOCFEhbqCHeyO7ZXBAMMov8bquZt8vhtjj0YeHjGjI/OEWbA2gxq2ryv1BHSehVc/vTrd1KbHag7yYoeCDuw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/big-ears@9.2.1':
+ resolution: {integrity: sha512-BUVTonwSYiGKcnk8wdwUHZ1b34GhfzRpG1kguK4kWAKlayBq7Q+iDJlmk4Bch0XdDQc2bqFf1GQCCj+xXWRHyg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/big-smile@9.2.1':
+ resolution: {integrity: sha512-bspur+wtnlv/Z4QDvRWg9rs3snf+iuBkamkgw4nZOUFKMlZdPQGqNoh1DkycRcLXNX1Q61KM172K6bS60ZlKxw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/bottts-neutral@9.2.1':
+ resolution: {integrity: sha512-uwd+xcbRQUIHKQ1iEiLjf5RwCaVzOfBgIu2WRE+6MUaahYi6cJ0eJAs0h1q+zpgYyvqPDPDAi9j7AUwjmig0GA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/bottts@9.2.1':
+ resolution: {integrity: sha512-AQQ/WKd54G9sa+TkQptcu6c+Tjfc9hitgB70uA5GqJe+w6Bal+gwY6kPm5sJ1CY2mk/UBh1rXBuauQZ25bgTcQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/collection@9.2.1':
+ resolution: {integrity: sha512-Su1eygO8llKuJ68N+xhBCzBN2Lqrsx9ZNdlvfZeH/s70RjL0raNQaI6/hRABDmlbLYwW4AjRh2lOgDdGfCp5DQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/core@9.2.1':
+ resolution: {integrity: sha512-Y3E59+3xO2UWKdf3Zt/rwMdy9r7uccTgM89Kv8aXN1vmdrnA4YYmr4jslRRRqPLVpenuT4105nkboC4rMnDgHw==}
+ engines: {node: '>=18.0.0'}
+
+ '@dicebear/croodles-neutral@9.2.1':
+ resolution: {integrity: sha512-2iyr+B/y795P7cSIpFg4RjxUu6kljesKjtepvMzfeBR9xKyI84exBNHRoCTEVwOCFePmlPJX1qtw/YWM0sAPJw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/croodles@9.2.1':
+ resolution: {integrity: sha512-V7+m21BizYTGgLgxmh5dxHHADeD3gkeuPYkhKqP8Uu8jZFBgh5wKFqqfVI/XSQkx/+lRla5c6l55mymgjt4k8Q==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/dylan@9.2.1':
+ resolution: {integrity: sha512-UeKz3Gxprh4bJ73Q2DjDpmjt854G3xfakc5KfeBmPV25EP+al7HCsM/HE+ZgKTSh+PPz5/mVtZQYU40pTzJEyg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/fun-emoji@9.2.1':
+ resolution: {integrity: sha512-F08p+Ggdxo4Ryji+3aCJXAKnjx4rM4UMtrJU4eA2t8lAkpwFNgfGK6mpMYPnxmKULYljGOgySmw7AyWcbX8s2Q==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/glass@9.2.1':
+ resolution: {integrity: sha512-UoErQwg7/qkEKWyEDTyt8FYhw/aZryP0Tr7cwBEuxMXZ585NUTvEel0K5j9aDkBrimJVEM+jKzOFIIMAGLlR0g==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/icons@9.2.1':
+ resolution: {integrity: sha512-0VuWohGMiv4n1nxwehYi6w+PIT9OBRlV721yNoewQWgQCrnMKBvM0cFRX9Dtg+MvwLMslQCIU3pEauEZ5FNmFA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/identicon@9.2.1':
+ resolution: {integrity: sha512-Dlqpn3tzqimR8KPIRkSJCKd5XwKgTLVXzT5KiY+2ysMZZQh4uJvBjVfY5SLrHDHC2a42W6EdwQxU6tFTRiKQuQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/initials@9.2.1':
+ resolution: {integrity: sha512-d6Shnt1LiCf9yAEck3y/w4pXG4bWYVjBFCeI43l0BAR39Mk2Dq05UEFZH5Dtj2kyfNozMjh6vG1cQyBigtamug==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/lorelei-neutral@9.2.1':
+ resolution: {integrity: sha512-4YkkR697qXAYxN5N/zVsRe955QLhw0yLib2CzeBga1QXXMIkywq2nRFa3fr4toSRPl45kl1eF8J5HC17CU9inw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/lorelei@9.2.1':
+ resolution: {integrity: sha512-DNjZpUpe/CxKK8Byn1meBvRz/NJWtBizcoS2DzIIyqPYOwA5cLIa2g/qKkESvXzU9naEMkiHfMZb1RYYzN2FAA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/micah@9.2.1':
+ resolution: {integrity: sha512-FK91igiVpPNhGCsfGpOgwYFKRP+FNR1V45Z4Tg/f82ux9TBdTmeoIfkgwrfhcXmCgagoYg2EAY+L72stUVapcA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/miniavs@9.2.1':
+ resolution: {integrity: sha512-r0TcaSrKJDPMqMYIiXNArq9i//cZzA1yuiXJw46iTloBDTh7yL1tpnL84CDxMpQ+OZLeMiRA6jVBx0coer4vmg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/notionists-neutral@9.2.1':
+ resolution: {integrity: sha512-Vi/FwMXzc1m/U2TjBnY9NHedoLbPc3BBsNQL8jPU27wdkXoyJHuXBevcUtsF0Zf8OuRbNpZKPbfYy6OYBr9qvw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/notionists@9.2.1':
+ resolution: {integrity: sha512-oAyvPlp3xfFnDpW3nXhdAPGVm5WYj6VW6RgdzLAHoRO2EOYDNkQruIXd+d8JYo1DMTLUbgp3onr5AF9UU2OBzw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/open-peeps@9.2.1':
+ resolution: {integrity: sha512-oPA/ljbPtuj2cdM0QtyJu2i24AaEMTIIk/FJbnrBK765WPnQcCZh84w+ZuInTMIfF9gYszNY34gaRD8Z6UiYxQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/personas@9.2.1':
+ resolution: {integrity: sha512-OgtyT9dnY8U60sUo0SLKCFVt0+dIr3a4vR0bDs/zwK4Qb/yTdB1VPdfxq0Fwk2q1vfn9YgbDrb0YYRgMRl60qQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/pixel-art-neutral@9.2.1':
+ resolution: {integrity: sha512-GUtxJYX7/9XDgSZhkx24PB+yLcKkLHblDldvRr5xGlGxhgAovTBQFHLgCJxmUJgIaNW7pvSWCw7txguyxbBN9A==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/pixel-art@9.2.1':
+ resolution: {integrity: sha512-ftKPKCvnS1cJ2OvuQLmtEIwdb9PzF5C2ofWBdVI/RFvhH1BhYc3OsdQ28o90+ZJQO4fivKwfsh8MPUTaqToQ7Q==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/rings@9.2.1':
+ resolution: {integrity: sha512-BlFYCaKB+wdpWWS28ZnQ/MvHeuNSRvkvWRoiw7pgS653LXx4kz/erVMmeVMSAr82y4BV+K8He2Rl2dMjuLyrXw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/shapes@9.2.1':
+ resolution: {integrity: sha512-cQzTcYimtuiAun55uPdIIhK53QTyjWqF/YN7LqEBGBqrJuGqHZBm1HXCcj7wPpoQ3zSy/2u8Rp0Etv7+5XFzyw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/thumbs@9.2.1':
+ resolution: {integrity: sha512-ziX5HFmhiApO2k7QKj41+dGXbMdmQUUgFBYPyzTwnubhkDldJk7tpRoa5u2OsyTVDQCcPMv5mFSQpbANfmFwMg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
'@discoveryjs/json-ext@0.5.7':
resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
engines: {node: '>=10.0.0'}
@@ -1444,9 +1649,9 @@ packages:
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
+ '@esbuild/aix-ppc64@0.23.0':
+ resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
@@ -1474,9 +1679,9 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
+ '@esbuild/android-arm64@0.23.0':
+ resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [android]
@@ -1504,9 +1709,9 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
+ '@esbuild/android-arm@0.23.0':
+ resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [android]
@@ -1534,9 +1739,9 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
+ '@esbuild/android-x64@0.23.0':
+ resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [android]
@@ -1564,9 +1769,9 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
+ '@esbuild/darwin-arm64@0.23.0':
+ resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
@@ -1594,9 +1799,9 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
+ '@esbuild/darwin-x64@0.23.0':
+ resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
@@ -1624,9 +1829,9 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
+ '@esbuild/freebsd-arm64@0.23.0':
+ resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
@@ -1654,9 +1859,9 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
+ '@esbuild/freebsd-x64@0.23.0':
+ resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
@@ -1684,9 +1889,9 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
+ '@esbuild/linux-arm64@0.23.0':
+ resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
@@ -1714,9 +1919,9 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
+ '@esbuild/linux-arm@0.23.0':
+ resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [linux]
@@ -1744,9 +1949,9 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
+ '@esbuild/linux-ia32@0.23.0':
+ resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
@@ -1774,9 +1979,9 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
+ '@esbuild/linux-loong64@0.23.0':
+ resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==}
+ engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
@@ -1804,9 +2009,9 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
+ '@esbuild/linux-mips64el@0.23.0':
+ resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==}
+ engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
@@ -1834,9 +2039,9 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
+ '@esbuild/linux-ppc64@0.23.0':
+ resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
@@ -1864,9 +2069,9 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
+ '@esbuild/linux-riscv64@0.23.0':
+ resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==}
+ engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
@@ -1894,9 +2099,9 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
+ '@esbuild/linux-s390x@0.23.0':
+ resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==}
+ engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
@@ -1924,9 +2129,9 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
+ '@esbuild/linux-x64@0.23.0':
+ resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [linux]
@@ -1954,12 +2159,18 @@ packages:
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
+ '@esbuild/netbsd-x64@0.23.0':
+ resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
+ '@esbuild/openbsd-arm64@0.23.0':
+ resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.18.20':
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
engines: {node: '>=12'}
@@ -1984,9 +2195,9 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
+ '@esbuild/openbsd-x64@0.23.0':
+ resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
@@ -2014,9 +2225,9 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
+ '@esbuild/sunos-x64@0.23.0':
+ resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
@@ -2044,9 +2255,9 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
+ '@esbuild/win32-arm64@0.23.0':
+ resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
@@ -2074,9 +2285,9 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
+ '@esbuild/win32-ia32@0.23.0':
+ resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
@@ -2104,9 +2315,9 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
+ '@esbuild/win32-x64@0.23.0':
+ resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -2120,14 +2331,14 @@ packages:
resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint-react/ast@1.8.2':
- resolution: {integrity: sha512-JEGTvLgMhAqGirPve2x1xICHtf7vcJfUD/75QbNjl0qHsLDUfva1F99yv9k2kdGE4kESqKJHZehbzg8Xvn/sXg==}
+ '@eslint-react/ast@1.9.0':
+ resolution: {integrity: sha512-/w7LM+pq6csgezAhF9pwjFoew9BTvmbwpz9zRkxm711ZMF6ckh6tY/JPwMYpq5hmOmocKLFXnXN7VVP3kj5DaQ==}
- '@eslint-react/core@1.8.2':
- resolution: {integrity: sha512-VYC3pGqxvEEYpWz2ZMq4ZGFOUKgPBo3kJSEYaX8BSeD8IBkqA0pOBh5c9/3ZUW9YYxpF9gFpZsGVS8h7NiWKOw==}
+ '@eslint-react/core@1.9.0':
+ resolution: {integrity: sha512-+OX+xjjK31IR31UEy/zS20ndXP36Bis56jiq7cexb8+61d/c/UEoBPxvr7MVfsl1dFBESP3P0CM9qLtbFLwjgA==}
- '@eslint-react/eslint-plugin@1.8.2':
- resolution: {integrity: sha512-fEVuqu7qz9g9XVKH/Pg2fLFzeyOjYbq3CjdAxo0H0VrbQPcRb3BNTuvsbURpbCb2agTrE2XlTxe24s/2ypjxPQ==}
+ '@eslint-react/eslint-plugin@1.9.0':
+ resolution: {integrity: sha512-whRuP0jauHI/BMqGt6FPBu6r/ABF9UNcLE6eUtI+2DhMeXDu7nswReTOv8JWFban5r2t3beFl4RmgxknU8mRCg==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -2136,20 +2347,20 @@ packages:
typescript:
optional: true
- '@eslint-react/jsx@1.8.2':
- resolution: {integrity: sha512-0w9ofkVw1HbMHvC0IauUcK17qAYAW+W0WYiu3LJm+BNOSYbeqW/eiSJWFjV11wYi0ZoHcuFZ6xbrJbndjc79Zg==}
+ '@eslint-react/jsx@1.9.0':
+ resolution: {integrity: sha512-zmdDvO89MmbjezmtGHcGd+9Z5/RiL2cxUGmeZgDeMcvvSS5mVo96/qFo3FjYHWL3Ra2Z0ZBpZZwme6V9ex8aKg==}
- '@eslint-react/shared@1.8.2':
- resolution: {integrity: sha512-CWYkJ0F4arYNqsqUs7n3TTdJKKt9gtwGEF7/i3prQLVZRNRaSriNE1EvUT7n181bwuT7HKYGQ3yGO/KXk1da1w==}
+ '@eslint-react/shared@1.9.0':
+ resolution: {integrity: sha512-Dr7JoegNEG9Ue0uHzc8mvDSO9pE6ETZeF8xlkZNRC3HLpo3Ol80NH61RoHWlTs69hBYtdU+J0Vzjj/pgq1e2rw==}
- '@eslint-react/tools@1.8.2':
- resolution: {integrity: sha512-13jBjPoFZImEen+VubjUhfd5QXqaDdTvMxRQw49qWS7VRccVIdxS7Wwr9+ozQqEz1+Uu+yeRUJKr73zMknY1/g==}
+ '@eslint-react/tools@1.9.0':
+ resolution: {integrity: sha512-kfvaodU0vomJYq26KXI8SPLMk+1WZtJBzCyR+VEq7hvLaW5e3MAaEGd1bgmeJ04+UdgWO4q2vINSQQZ5n6RYAQ==}
- '@eslint-react/types@1.8.2':
- resolution: {integrity: sha512-udWxV15Hw56Or+T4RDYv+XwYCVDWZ07TP7wvEgXvcN6uZfBQNlpakh8oyHsd1LvB5O3V0VGRYmKUNn2dz3/2PA==}
+ '@eslint-react/types@1.9.0':
+ resolution: {integrity: sha512-4T7vNBk8Mr07frnS9cqaaiLdbkXBZp7okpyNgxvXzwvhZixuP5SLR7asx93T4DGGHt3H+7gTCzToM2P7YKWutg==}
- '@eslint-react/var@1.8.2':
- resolution: {integrity: sha512-NJeJ8wJWqTgIpPK2stgcKGr3PgF5qkcn0NyGcttak+YAioQYpoEb/yXcdB46oKjDnlV7a1JHNP5Txyx17LY5Gw==}
+ '@eslint-react/var@1.9.0':
+ resolution: {integrity: sha512-gsVerCk1ZSwvbB5nu0c1aQaKWBML0c2gAyfB7nUMij5TeeFAVS78CTfb+WFnlKapq+K4dCO+jfYIdTKCo02wKA==}
'@eslint/config-array@0.17.1':
resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==}
@@ -2197,11 +2408,11 @@ packages:
'@floating-ui/core@1.6.2':
resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
- '@floating-ui/core@1.6.5':
- resolution: {integrity: sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==}
+ '@floating-ui/core@1.6.7':
+ resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
- '@floating-ui/dom@1.6.8':
- resolution: {integrity: sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==}
+ '@floating-ui/dom@1.6.10':
+ resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
'@floating-ui/react-dom@2.1.1':
resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
@@ -2215,8 +2426,8 @@ packages:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@floating-ui/utils@0.2.5':
- resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==}
+ '@floating-ui/utils@0.2.7':
+ resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
'@formatjs/ecma402-abstract@2.0.0':
resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
@@ -2369,60 +2580,60 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/checkbox@2.4.5':
- resolution: {integrity: sha512-+YlCyS6JBWeZugIvReh/YL5HJcowlklz5RykQuYKQfgWQeCJh5Us0nWcRddvIVkjmYa0I/8bwWioSLu850J8sA==}
+ '@inquirer/checkbox@2.4.7':
+ resolution: {integrity: sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw==}
engines: {node: '>=18'}
- '@inquirer/confirm@3.1.20':
- resolution: {integrity: sha512-UvG5Plh0MfCqUvZB8RKzBBEWB/EeMzO59Awy/Jg4NgeSjIPqhPaQFnnmxiyWUTwZh4uENB7wCklEFUwckioXWg==}
+ '@inquirer/confirm@3.1.22':
+ resolution: {integrity: sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==}
engines: {node: '>=18'}
- '@inquirer/core@9.0.8':
- resolution: {integrity: sha512-ttnI/BGlP9SxjbQnv1nssv7dPAwiR82KmjJZx2SxSZyi2mGbaEvh4jg0I4yU/4mVQf7QvCVGGr/hGuJFEYhwnw==}
+ '@inquirer/core@9.0.10':
+ resolution: {integrity: sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA==}
engines: {node: '>=18'}
- '@inquirer/editor@2.1.20':
- resolution: {integrity: sha512-vtIN9NwXldX8SWbPt5biJhnTpHJCzF5nSymcv4hcOxiCrOpXmgOvFYGpAY729KODF+5e1OLqPbJ8ApiwPu/peQ==}
+ '@inquirer/editor@2.1.22':
+ resolution: {integrity: sha512-K1QwTu7GCK+nKOVRBp5HY9jt3DXOfPGPr6WRDrPImkcJRelG9UTx2cAtK1liXmibRrzJlTWOwqgWT3k2XnS62w==}
engines: {node: '>=18'}
- '@inquirer/expand@2.1.20':
- resolution: {integrity: sha512-ruUTCUGKhe6TvDM3/gKjX9v7D5cWbiuawFE6aF/cFmNO79R/zMjrFFVoueDM8FRw8yXqnREb0jFkYF1LUxnDNA==}
+ '@inquirer/expand@2.1.22':
+ resolution: {integrity: sha512-wTZOBkzH+ItPuZ3ZPa9lynBsdMp6kQ9zbjVPYEtSBG7UulGjg2kQiAnUjgyG4SlntpTce5bOmXAPvE4sguXjpA==}
engines: {node: '>=18'}
'@inquirer/figures@1.0.5':
resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==}
engines: {node: '>=18'}
- '@inquirer/input@2.2.7':
- resolution: {integrity: sha512-QFk31Gq4Wr+Ve9ilMiFGGrSjGZQBilV0cgTN1zubD98Bx65fsNrh8++Biy/9mjNKRaqHFbZBw5baAcQvOmW8OQ==}
+ '@inquirer/input@2.2.9':
+ resolution: {integrity: sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g==}
engines: {node: '>=18'}
- '@inquirer/number@1.0.8':
- resolution: {integrity: sha512-GamytM0a3fLh8xjgWbGb/DmDA1SmW6sc6ZyfiiWL1my2NAkV6mrTEKMOA4LSK2gB43uf8vcOS7Hp/LeVjIqLwg==}
+ '@inquirer/number@1.0.10':
+ resolution: {integrity: sha512-kWTxRF8zHjQOn2TJs+XttLioBih6bdc5CcosXIzZsrTY383PXI35DuhIllZKu7CdXFi2rz2BWPN9l0dPsvrQOA==}
engines: {node: '>=18'}
- '@inquirer/password@2.1.20':
- resolution: {integrity: sha512-il2TG7xDlfiLE3cnOCxfDfrwvsiSmXjVd26hvf4tdzHvdisgLiEjbN6mi51/TnlSQ+2Qc69+9jIq3ws93nhS2w==}
+ '@inquirer/password@2.1.22':
+ resolution: {integrity: sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw==}
engines: {node: '>=18'}
- '@inquirer/prompts@5.3.6':
- resolution: {integrity: sha512-go5DXxasCIZvztWapYPUSFXg7GceDSQPM1ew3MahFF7degA5kfIVe5kB4KAlARXt83fApyEczvE1H4bh0HLObA==}
+ '@inquirer/prompts@5.3.8':
+ resolution: {integrity: sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==}
engines: {node: '>=18'}
- '@inquirer/rawlist@2.2.2':
- resolution: {integrity: sha512-U4OsvqjdLB6nmf5ZDshPYMq0b+qd6JWxTrvRTiMfwUY6cFxkR9YWKarLXFhndf7tawQ8f3DwU9P9wryDc2ESSA==}
+ '@inquirer/rawlist@2.2.4':
+ resolution: {integrity: sha512-pb6w9pWrm7EfnYDgQObOurh2d2YH07+eDo3xQBsNAM2GRhliz6wFXGi1thKQ4bN6B0xDd6C3tBsjdr3obsCl3Q==}
engines: {node: '>=18'}
- '@inquirer/search@1.0.5':
- resolution: {integrity: sha512-25nyVAbO0NwFZTXP/cW++W1QGHlHY+hmsehMM1sPKvp4wYcxMQcm6xNCor0bU2Pv/L33IkPV/NV9SuJyFC85EQ==}
+ '@inquirer/search@1.0.7':
+ resolution: {integrity: sha512-p1wpV+3gd1eST/o5N3yQpYEdFNCzSP0Klrl+5bfD3cTTz8BGG6nf4Z07aBW0xjlKIj1Rp0y3x/X4cZYi6TfcLw==}
engines: {node: '>=18'}
- '@inquirer/select@2.4.5':
- resolution: {integrity: sha512-DbCthH3l7vrrK+Ewll3bgzxC3dzMle8xkWYta4if31p9NOmFNhZKhSfdYMjaOtGFBCUEwo4D5LMgN6sPKgUWIw==}
+ '@inquirer/select@2.4.7':
+ resolution: {integrity: sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ==}
engines: {node: '>=18'}
- '@inquirer/type@1.5.1':
- resolution: {integrity: sha512-m3YgGQlKNS0BM+8AFiJkCsTqHEFCWn6s/Rqye3mYwvqY6LdfUv12eSwbsgNzrYyrLXiy7IrrjDLPysaSBwEfhw==}
+ '@inquirer/type@1.5.2':
+ resolution: {integrity: sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA==}
engines: {node: '>=18'}
'@isaacs/cliui@8.0.2':
@@ -4495,8 +4706,8 @@ packages:
'@radix-ui/rect@1.1.0':
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
- '@radix-ui/themes@3.1.1':
- resolution: {integrity: sha512-G+j+x+7kyqQXnn+ftlNPgk1DdZ8h/vVZnLsG4hZB0Mxw4fdKCh1tThQuXDSBNWhFt/vTG79BMzRMiflovENrmA==}
+ '@radix-ui/themes@3.1.3':
+ resolution: {integrity: sha512-GJt4r7Vh0w4yiGuqOKLvrZXLEAxUWfEUUtdj17rCfi+P/zpKUc7TsXro8GftA2Y1tm78Cx9x1HKt23dHc/WqIA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
@@ -4640,93 +4851,93 @@ packages:
peerDependencies:
react: ^18.2.0
- '@remotion/bundler@4.0.191':
- resolution: {integrity: sha512-y09GvLmrw1rnO04pFHpjzHQoWkBsPclTwXLaX4p971PfQKPGszvooAss53E+rZpYFrCiwTo9Berfgdh6lXyfQA==}
+ '@remotion/bundler@4.0.194':
+ resolution: {integrity: sha512-tpX23iD9krLYEb0nJzcKeEt9pLyHtwHFq6wAoyXWM5DiMgyTQK9WCGVvVJwpZ8CCZ2X/dWk1gOm+X0XaZXgAJQ==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@remotion/cli@4.0.191':
- resolution: {integrity: sha512-BCMOeWClKQqnGNvovHao2j07ybl8MbJX51Y89pVoXBAA1Gln61UsfqKu0IDqNaXKXZtY7mRtQsJnOw8VxyAZUQ==}
+ '@remotion/cli@4.0.194':
+ resolution: {integrity: sha512-8Ksa+0Qcty5DfINxUaH7lmwNmqYc0vTHGG+jJ3V3hEnaN4leaCjpw6/96MEj8crPZ5zhElwX6g4v0XniycjieA==}
hasBin: true
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@remotion/compositor-darwin-arm64@4.0.191':
- resolution: {integrity: sha512-2VEs2NlYZTVk9em8y6G6j9IJdy6IQPnMWx4452Wv1nvbGy3OWg4TGZ+221FtPrFZ2VVV9L9DrdsvaPxHtd0tvQ==}
+ '@remotion/compositor-darwin-arm64@4.0.194':
+ resolution: {integrity: sha512-Vf5nK0y/ypeSvIUJj5kVhYGBE0dBlD7yO4WOuXTi5ufCk5Dg2b17Y6JuM1UI+uoaSPlHgyoc7b22hNIAp7fhqw==}
cpu: [arm64]
os: [darwin]
- '@remotion/compositor-darwin-x64@4.0.191':
- resolution: {integrity: sha512-Py2eUUmPHD489ZGL6jytuni7SlJOu/qS20MU+dLUDthPxlNOxn6P5Es73IKLMWG1aUuRMVQmgrsec3ij6IlsdQ==}
+ '@remotion/compositor-darwin-x64@4.0.194':
+ resolution: {integrity: sha512-Byvi/GHuk0ZL7Ki3M6asJg3vGpC5lIIg8Wf306dZth4iCOF8rY4F+/PPvwcy5N61Zn1LnTeWMonMg7Bu8CefOA==}
cpu: [x64]
os: [darwin]
- '@remotion/compositor-linux-arm64-gnu@4.0.191':
- resolution: {integrity: sha512-4gTSed9mLJekA8YCv/kAhIFFx0zCxx5MvF890n1AWeFo4Oyn57aOeNyHRcWvhQJnGNk44nifpvCyT5BDouo0og==}
+ '@remotion/compositor-linux-arm64-gnu@4.0.194':
+ resolution: {integrity: sha512-R402GVKR5mfM3JEfwXsDOM8mSbmMXTF4lss/cBfiTH3gZuh2FwKJS/Royptac4pFURL0SdzE9TfxJzVwIwS7Yw==}
cpu: [arm64]
os: [linux]
- '@remotion/compositor-linux-arm64-musl@4.0.191':
- resolution: {integrity: sha512-wTFcUg0W/VKMqUSdcS6TD/hC2po78B16iIQSl3SryL5QlGObv8U8Ti/lIgKW4Xp4VnqlKCbhEplfPDfRPgAckA==}
+ '@remotion/compositor-linux-arm64-musl@4.0.194':
+ resolution: {integrity: sha512-1zKDPLt34+9HPWHzc1QbriIL4XWYq2VOi0/H1Xb0mYyQgAZM8xm2w0uL02n5W1wg3cT7zet+9r/n0+Go7aU89g==}
cpu: [arm64]
os: [linux]
- '@remotion/compositor-linux-x64-gnu@4.0.191':
- resolution: {integrity: sha512-VZQijO7d3NAEXWX6h0tdst5jGzLhAFLOpBlI3QZCsKLNgVXjk7F41adYqHrSxnEzAOtQpv7aDo4I73JIbN1HJQ==}
+ '@remotion/compositor-linux-x64-gnu@4.0.194':
+ resolution: {integrity: sha512-4ZorY4W1QcK/0x7iBd32m1AJCmEL07y/T8bWy17Ybp50bLyoV2QWsTTDghn7mVQS0zBqza73QP1SwKpgNwYe2g==}
cpu: [x64]
os: [linux]
- '@remotion/compositor-linux-x64-musl@4.0.191':
- resolution: {integrity: sha512-GJYPLkdzF81pc3ulJvUBPdqwVz/sIOlvhothj0s9PX9oaWmy39uedVuij5UEqCbdyfgXsUn5l0WXh+PQ8iaXNA==}
+ '@remotion/compositor-linux-x64-musl@4.0.194':
+ resolution: {integrity: sha512-G1hEMqVvI/oDQW0rn0TyJc9vT+QuEAYwS1o8VU9XkBEd6qNZqRsCieBSVU7kBIZBSDLcds7gt51Tmx8T+SsqLw==}
cpu: [x64]
os: [linux]
- '@remotion/compositor-win32-x64-msvc@4.0.191':
- resolution: {integrity: sha512-HJ4y46p+CWPODbnvuc351XWR4Ey6n5wS5wbiPyweIvHPKyc5xmEa0hOC0yQeRxlWkaEx+6+tI5BzlyKnr6R5gg==}
+ '@remotion/compositor-win32-x64-msvc@4.0.194':
+ resolution: {integrity: sha512-q7DhqB6G/tvqW6JG9w836HXKLoN8FyNfxn5oEo0V1EEsWTFwgZrSxAJ17iepDQbBq7EKM7uFo/rTsX3Mg37k2Q==}
cpu: [x64]
os: [win32]
- '@remotion/eslint-config@4.0.191':
- resolution: {integrity: sha512-tyOY34vykyJNSrZJ/we7tYSlCxkR2LifjPZlYopQCqneRydPJ/SiiqlHZ13jL2RgM2OL9xAH9xmBPB99LdThvg==}
+ '@remotion/eslint-config@4.0.194':
+ resolution: {integrity: sha512-GRrQ48Ny170PSzafFRf+q3YFRdZco+PcOCLRlgnsm9OFsuD+y+TcxKzd6tnyaGi2jdzA1x3L8/99jspTQLW7YA==}
peerDependencies:
eslint: '>=7.15.0'
- '@remotion/eslint-plugin@4.0.191':
- resolution: {integrity: sha512-bHjuyAAGcGOq/KcAmdQ2M+RmN9Zi7aQ7dfi55J4wCbJQcSwVvNwSzRXtSwmS/p9KRu/UQv2mhZ4KrGZ6K+U6Hw==}
+ '@remotion/eslint-plugin@4.0.194':
+ resolution: {integrity: sha512-762yrrm36qxLH9PGZlI7HgZEvzPMj3zR1+sEZgkD6YU+78kMISerwMddAsJUOvEkQPa6m8GeCallRSG+tHTPRA==}
peerDependencies:
eslint: '>=7.0.0'
- '@remotion/media-utils@4.0.191':
- resolution: {integrity: sha512-d1BP83+g2mlTv9Lr1iPHhSJIZdWFH3Khx0gnSRhLAzhmYqXDM3sTZZIMlUkwCc1pGDTXHEt/OyBfPqo5t081WA==}
+ '@remotion/media-utils@4.0.194':
+ resolution: {integrity: sha512-+MGDEQMMCTmvYreTpSZUhmMyp4+elRDJ0AnSc5lULhdyqLuy6voiusNVxj4P1IehnzMtuyGNl+BCTEj5u7R0Uw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@remotion/player@4.0.191':
- resolution: {integrity: sha512-hGI2E3rURf8NOxddWWS4VVoFr1cftVpDnVd7fRW48XDRqg9LdRrn/6F586WYAijUX4uhNNhq8ZvS6xcUtZur7w==}
+ '@remotion/player@4.0.194':
+ resolution: {integrity: sha512-+4ExB/uhJW42tCId+h8wG1x0/xPBjXN3JFqlDetZwbWS1Dz5JmIQjS++qqCD7TAC3o1UOBIGMSYd59RJZcnlZg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@remotion/renderer@4.0.191':
- resolution: {integrity: sha512-L6nHi9K8x6uY4rNEE5UkswBmvlm3yjIqnrn9bUuSC5kKKgmCn8t04JAonEbPjEqUOS0P/RQu0T99EMrfqDHAdA==}
+ '@remotion/renderer@4.0.194':
+ resolution: {integrity: sha512-WhBCC0cKhMZnULx6GPbHXTG9YNmArHdUx4/tVR8SQFVow1C6GbAA8u7LM/7xpONwl3833A2ZSqVCDd0rLN8cfw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
- '@remotion/streaming@4.0.191':
- resolution: {integrity: sha512-hRMTgpIEPtzbkEtwxqzJ7YVRnmzgQX4pzN9PqdBTNXn2vyUZh30IP2ik57uG6HMGF5sV/dJULaijLiCW3pqDjg==}
+ '@remotion/streaming@4.0.194':
+ resolution: {integrity: sha512-kWh6gO79xHmvy/V881PQsK6cyhKnr4A165/NGVeLdpoOYu4jZaHzAoB2tXIU/dwU6VQrUohcIqAxt6yMlqUx+g==}
- '@remotion/studio-server@4.0.191':
- resolution: {integrity: sha512-a9ddSu5yTCHKoAqx9BHyoKZKG0wbx7BnxEWHdOakwau9k3fHXEoWxLNPxQi86P7ytkp/DAQydAWSr3n/jTZ3gA==}
+ '@remotion/studio-server@4.0.194':
+ resolution: {integrity: sha512-yfKlc0g9PlERXG6j8hZaOzjNEfWB8NZQseBc9YgkWXGE1rvRKbkTqMnbYlKlwIkwQ4VCExg3h1ss3EuEzF3ViA==}
- '@remotion/studio-shared@4.0.191':
- resolution: {integrity: sha512-Mn6ObmSERB4zUuTdHVKa7CBUQBosIkCecxp0HPQNL0tRENb+8qbRKlOm6HEjFAPk9meMIJ8ofI5zNUtIzPpJ2g==}
+ '@remotion/studio-shared@4.0.194':
+ resolution: {integrity: sha512-hb8XmFBg9ZOVBjbLRmMj1iXTXjQXm1v4tGsry5UDXt1gxgmNySpvsOstaTp+dOg8A59O5szcM3uaoVDvcwZwdA==}
- '@remotion/studio@4.0.191':
- resolution: {integrity: sha512-uhAzSluxfG1E5EfreQ2l7qNKSMlbra8UtT+fGOf4/BJia8om6hkC3oPmSjP2w3wSSvH+4R3EqXDtw60AIw9NYw==}
+ '@remotion/studio@4.0.194':
+ resolution: {integrity: sha512-2o+vJP+OFeNja3lmEsrP6yB6FzBfJsXePJz/pFA2eVxZkltY0dtSeqAloFtuS5ApawE6mAcLw14riuEESpm5EA==}
'@rollup/pluginutils@5.1.0':
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
@@ -4749,9 +4960,6 @@ packages:
'@scure/bip39@1.3.0':
resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==}
- '@sec-ant/readable-stream@0.4.1':
- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
-
'@selderee/plugin-htmlparser2@0.11.0':
resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
@@ -4768,10 +4976,6 @@ packages:
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
- '@sindresorhus/merge-streams@4.0.0':
- resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
- engines: {node: '>=18'}
-
'@snyk/github-codeowners@1.1.0':
resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==}
engines: {node: '>=8.10'}
@@ -4787,8 +4991,8 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- '@stripe/stripe-js@4.1.0':
- resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==}
+ '@stripe/stripe-js@4.2.0':
+ resolution: {integrity: sha512-MdTpmXqtm+B9rIAmaSlCkF6qv3793UrghA95SFI4Ge7KGYWZAMYyxbX/z9FXs6XnU5gUbKtGtlVgZQp1T88UfQ==}
engines: {node: '>=12.16'}
'@stylistic/eslint-plugin-js@2.6.1':
@@ -4872,21 +5076,21 @@ packages:
'@tanstack/query-devtools@5.51.16':
resolution: {integrity: sha512-ajwuq4WnkNCMj/Hy3KR8d3RtZ6PSKc1dD2vs2T408MdjgKzQ3klVoL6zDgVO7X+5jlb5zfgcO3thh4ojPhfIaw==}
- '@tanstack/react-query-devtools@5.51.21':
- resolution: {integrity: sha512-mi5ef8dvsS48GsG6/8M60O2EgrzPK1kNPngOcHBTlIUrB5dGkxP9fuHf05GQRxtSp5W5GlyeUpzOmtkKNpf9dQ==}
+ '@tanstack/react-query-devtools@5.51.23':
+ resolution: {integrity: sha512-XpHrdyfUPGULIyJ1K7UvhAcK+KjMJdw4NjmRjryoj3XEgfAU5qU1rz8gIFvGc3gTGT07yIseGo7GEll/ICfJfQ==}
peerDependencies:
- '@tanstack/react-query': ^5.51.21
+ '@tanstack/react-query': ^5.51.23
react: ^18 || ^19
- '@tanstack/react-query-next-experimental@5.51.21':
- resolution: {integrity: sha512-cS+OK8uM3xaiu3kqpHs2vq3jV5KOWviJIYQrJC18RPN/fnv72A2j6runggDDnW8ubVTPfO4ofidhRDxixygdYw==}
+ '@tanstack/react-query-next-experimental@5.51.23':
+ resolution: {integrity: sha512-5fPPLbnASRdea24AxdpMd3gs21q1ZB8ZsWDQDzrYih1SkaT3gADOixMsqM0l5MUvfj2O/u1ZcAizG/IA0EA1bw==}
peerDependencies:
- '@tanstack/react-query': ^5.51.21
+ '@tanstack/react-query': ^5.51.23
next: ^13 || ^14 || ^15
react: ^18 || ^19
- '@tanstack/react-query@5.51.21':
- resolution: {integrity: sha512-Q/V81x3sAYgCsxjwOkfLXfrmoG+FmDhLeHH5okC/Bp8Aaw2c33lbEo/mMcMnkxUPVtB2FLpzHT0tq3c+OlZEbw==}
+ '@tanstack/react-query@5.51.23':
+ resolution: {integrity: sha512-CfJCfX45nnVIZjQBRYYtvVMIsGgWLKLYC4xcUiYEey671n1alvTZoCBaU9B85O8mF/tx9LPyrI04A6Bs2THv4A==}
peerDependencies:
react: ^18.0.0
@@ -5179,8 +5383,8 @@ packages:
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
- '@types/yargs@17.0.32':
- resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
+ '@types/yargs@17.0.33':
+ resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
@@ -5210,8 +5414,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/eslint-plugin@8.0.0':
- resolution: {integrity: sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==}
+ '@typescript-eslint/eslint-plugin@8.0.1':
+ resolution: {integrity: sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -5247,8 +5451,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/parser@8.0.0':
- resolution: {integrity: sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==}
+ '@typescript-eslint/parser@8.0.1':
+ resolution: {integrity: sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -5273,14 +5477,14 @@ packages:
resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/scope-manager@8.0.0':
- resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/scope-manager@8.0.0-alpha.30':
resolution: {integrity: sha512-FGW/iPWGyPFamAVZ60oCAthMqQrqafUGebF8UKuq/ha+e9SVG6YhJoRzurlQXOVf8dHfOhJ0ADMXyFnMc53clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/scope-manager@8.0.1':
+ resolution: {integrity: sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/type-utils@6.21.0':
resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -5301,8 +5505,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/type-utils@8.0.0':
- resolution: {integrity: sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==}
+ '@typescript-eslint/type-utils@8.0.1':
+ resolution: {integrity: sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -5326,14 +5530,14 @@ packages:
resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/types@8.0.0':
- resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/types@8.0.0-alpha.30':
resolution: {integrity: sha512-4WzLlw27SO9pK9UFj/Hu7WGo8WveT0SEiIpFVsV2WwtQmLps6kouwtVCB8GJPZKJyurhZhcqCoQVQFmpv441Vg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/types@8.0.1':
+ resolution: {integrity: sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/typescript-estree@5.19.0':
resolution: {integrity: sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -5370,8 +5574,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@8.0.0':
- resolution: {integrity: sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==}
+ '@typescript-eslint/typescript-estree@8.0.0-alpha.30':
+ resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -5379,8 +5583,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@8.0.0-alpha.30':
- resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==}
+ '@typescript-eslint/typescript-estree@8.0.1':
+ resolution: {integrity: sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -5412,14 +5616,14 @@ packages:
peerDependencies:
eslint: ^8.56.0
- '@typescript-eslint/utils@8.0.0':
- resolution: {integrity: sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==}
+ '@typescript-eslint/utils@8.0.0-alpha.30':
+ resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/utils@8.0.0-alpha.30':
- resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==}
+ '@typescript-eslint/utils@8.0.1':
+ resolution: {integrity: sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -5440,14 +5644,14 @@ packages:
resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/visitor-keys@8.0.0':
- resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/visitor-keys@8.0.0-alpha.30':
resolution: {integrity: sha512-XZuNurZxBqmr6ZIRIwWFq7j5RZd6ZlkId/HZEWyfciK+CWoyOxSF9Pv2VXH9Rlu2ZG2PfbhLz2Veszl4Pfn7yA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/visitor-keys@8.0.1':
+ resolution: {integrity: sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@udecode/plate-autoformat@36.0.0':
resolution: {integrity: sha512-MAc5uqXxgh3uRpJeAclP85F8RZ2UQi7aJHlm11iaYOHjPT6JUtwQ5sCC7jLmk0nfal7mAtwgqXgGyoYsvCO5Mg==}
peerDependencies:
@@ -6276,8 +6480,8 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
- caniuse-lite@1.0.30001647:
- resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==}
+ caniuse-lite@1.0.30001651:
+ resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -6649,42 +6853,42 @@ packages:
resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
engines: {node: '>=8'}
- cspell-config-lib@8.13.1:
- resolution: {integrity: sha512-sXUFOyxvk+qDkoQdFkVEqj1hfQWzMi+tbi6ksiotQaqpm7r+YitZLSgwJjN4xgDO/rTLyP70k9fagdZ67MVZbw==}
+ cspell-config-lib@8.13.2:
+ resolution: {integrity: sha512-AkG5qWnmHxwEJqyLsraVVzEWGShICn533GdcbSHYYrLxEd9UromEjmFrMlgNomwj8SnJq4L9xq1LoWgRXa5jjg==}
engines: {node: '>=18'}
- cspell-dictionary@8.13.1:
- resolution: {integrity: sha512-Z0T4J4ahOJaHmWq83w24KXGik1zeauO5WvDRyzDyaSgpbA5MN2hN98LvxaIx72g3I+trtRK77XFcKginuME9EA==}
+ cspell-dictionary@8.13.2:
+ resolution: {integrity: sha512-dvtb9fDHw3jEa5mGBmrDTRxlaXVccQ5LMYkosPcS+J5/iLrV0E3iQu3njFHBFXKsLqOwnd6GV9pd6fXkPEFdeQ==}
engines: {node: '>=18'}
- cspell-gitignore@8.13.1:
- resolution: {integrity: sha512-XyZ3X5d6x0gkWtNXSAQRcPMG41bEdLx9cTgZCYCJhEZCesU1VpNm60F3oc11dMLkO+BqPH3An+AO/YEIiaje3A==}
+ cspell-gitignore@8.13.2:
+ resolution: {integrity: sha512-eEDR0g2VQHVRg9mLXi6PUnjZzD1DYa2jkmiuj61ZEN9yEKZ3GKXlUTxlewIiMGN/fxIn5kHyjeMo+hbCHoYkGw==}
engines: {node: '>=18'}
hasBin: true
- cspell-glob@8.13.1:
- resolution: {integrity: sha512-rW1A3t7YvPXxcC4z1pp1m9coeWzUVUmRjUw3vMNGlEDC2zecB39KKbEqesziBqnBceNAY7O5itllIGFKr03vqA==}
+ cspell-glob@8.13.2:
+ resolution: {integrity: sha512-zhWcfE4k1BVErVd36AMle9DE5W0bxI4OcM7/q3YxPQUdbsox/DihGXGQu+jld2LkUpDl0llIPVJ8OibKg9stcQ==}
engines: {node: '>=18'}
- cspell-grammar@8.13.1:
- resolution: {integrity: sha512-HUkd24bulvBwee1UNBurxGlPUOiywb9pB34iXXoxFWuloHohZ/DuFlE8B/31ZtjW48ffEYIu3QZfWhcnD8e81w==}
+ cspell-grammar@8.13.2:
+ resolution: {integrity: sha512-mdRNahGfY7BXg36PQcmeB8WQZETYB6W0A/+yMDgFg+YQX7UdJr8M5GVDFmIFRWyc7/cnv6GMiqdI64gmfCU8ww==}
engines: {node: '>=18'}
hasBin: true
- cspell-io@8.13.1:
- resolution: {integrity: sha512-t2sgZuWGBzPSOAStfvz/U3KoFEfDxEt1cXZj0Kd0Vs36v2uoLktm6ihMe7XNFu7zIdOFSajsYQ8Bi4RSLPGPxQ==}
+ cspell-io@8.13.2:
+ resolution: {integrity: sha512-Jf5LL1TEXPvKH0iabIr8BLK/Hc6crPCdsWM3CbZydp/fDU6rpbaApzSVQ376JlAaLMLpEP7s5oVh9WC4wIE5Bw==}
engines: {node: '>=18'}
- cspell-lib@8.13.1:
- resolution: {integrity: sha512-H1HHG1pmATSeAaY0KmQ0xnkbSqJLvh9QpXWARDLWKUBvtE+/l44H4yVhIp/No3rM7PKMmb82GuSJzMaoIhHFLQ==}
+ cspell-lib@8.13.2:
+ resolution: {integrity: sha512-qWX4B0Nwo6Souoi8/hLEohSLQEeeh1mWIiQDDJ43w+zmzzzmHZ8+tAeJJ2eAGgOKVqfjcyefH5y7Py2TQrn3xg==}
engines: {node: '>=18'}
- cspell-trie-lib@8.13.1:
- resolution: {integrity: sha512-2moCsIYDmMT7hp5Non3CvWatfXptFWCuxjbXQGDNvWJ2Cj3oso/oBe4802GJv5GEenv9QBWmEtum/E7rFcx4JA==}
+ cspell-trie-lib@8.13.2:
+ resolution: {integrity: sha512-JYpxU6mN0W9cp5g6QN4TXz0S3zzcmGpVJf1fka7tuWHY1e62Gs0qIIL2LjTHYW9wlRFYyrqPnN5opfwuEZCCMg==}
engines: {node: '>=18'}
- cspell@8.13.1:
- resolution: {integrity: sha512-Bqppilpwx9xt3jZPaYcqe1JPteNmfKhx9pw9YglZEePDUzdiJQNVIfs31589GAnXjgdqqctR8N87ffLcaBNPXw==}
+ cspell@8.13.2:
+ resolution: {integrity: sha512-m+aA54r95QteZBPzZBR4bdld92TDV47/qoKhYt7+M8umcLZR3C2dfktEbVQGoAJokRgSQo9L4/fRF0skk+g5Mg==}
engines: {node: '>=18'}
hasBin: true
@@ -7053,12 +7257,12 @@ packages:
resolution: {integrity: sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==}
engines: {node: '>=10'}
- drizzle-kit@0.23.1:
- resolution: {integrity: sha512-posGQhj8/K4S4CPhk7BO9+IcpNdIh96t0DvcAr/NvMKhPhe5D0MELzmpq9R2MpmSP3fd+Z3upwidtetrw7xnjg==}
+ drizzle-kit@0.23.2:
+ resolution: {integrity: sha512-NWkQ7GD2OTbQ7HzcjsaCOf3n0tlFPSEAF38fvDpwDj8jRbGWGFtN2cD8I8wp4lU+5Os/oyP2xycTKGLHdPipUw==}
hasBin: true
- drizzle-orm@0.32.1:
- resolution: {integrity: sha512-Wq1J+lL8PzwR5K3a1FfoWsbs8powjr3pGA4+5+2ueN1VTLDNFYEolUyUWFtqy8DVRvYbL2n7sXZkgVmK9dQkng==}
+ drizzle-orm@0.32.2:
+ resolution: {integrity: sha512-3fXKzPzrgZIcnWCSLiERKN5Opf9Iagrag75snfFlKeKSYB1nlgPBshzW3Zn6dQymkyiib+xc4nIz0t8U+Xdpuw==}
peerDependencies:
'@aws-sdk/client-rds-data': '>=3'
'@cloudflare/workers-types': '>=3'
@@ -7172,8 +7376,8 @@ packages:
effect@3.4.5:
resolution: {integrity: sha512-aTonOH68tUttSdYwMkiuky3hjgn3pu7yInNaE8rU2EDKQ8zr9Me78WcvWBQKe4u1gvbBH77y9dAKqn98lNIfNQ==}
- electron-to-chromium@1.5.4:
- resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==}
+ electron-to-chromium@1.5.5:
+ resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==}
embla-carousel-react@8.1.8:
resolution: {integrity: sha512-b8DcmC+j1vqVWSM6rU/GYGyY6Kp9LX8OoikZPBKmV6qL8s94sSPGl6jtDLLUtV8TTIQGMYOlOKUgoMAt/0TwOQ==}
@@ -7354,9 +7558,9 @@ packages:
engines: {node: '>=12'}
hasBin: true
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
+ esbuild@0.23.0:
+ resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==}
+ engines: {node: '>=18'}
hasBin: true
escalade@3.1.2:
@@ -7466,8 +7670,8 @@ packages:
peerDependencies:
eslint: '>=8.0.0'
- eslint-plugin-n@17.10.1:
- resolution: {integrity: sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==}
+ eslint-plugin-n@17.10.2:
+ resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.23.0'
@@ -7478,14 +7682,14 @@ packages:
eslint-plugin-no-relative-import-paths@1.5.5:
resolution: {integrity: sha512-UjudFFdBbv93v0CsVdEKcMLbBzRIjeK2PubTctX57tgnHxZcMj1Jm8lDBWoETnPxk0S5g5QLSltEM+511yL4+w==}
- eslint-plugin-perfectionist@3.1.1:
- resolution: {integrity: sha512-joaAPd2gVNV+Gm+xU6tqOxy9WlBcb/6TSCUaHLNSdhot/KcsyiKSzeTVToasrCPIxgqgGwcOy+AJaGaBhBwblw==}
+ eslint-plugin-perfectionist@3.1.3:
+ resolution: {integrity: sha512-eFRkBvMnnHjle5MuqTzoTIukWIr7Gm2wXvhTj3HyT/ku2J5oj7quBRbvZ8iYkjPyUFBpir3ZBnVQ5vFYswvpQg==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
astro-eslint-parser: ^1.0.2
eslint: '>=8.0.0'
svelte: '>=3.0.0'
- svelte-eslint-parser: ^0.40.0
+ svelte-eslint-parser: ^0.41.0
vue-eslint-parser: '>=9.0.0'
peerDependenciesMeta:
astro-eslint-parser:
@@ -7497,8 +7701,8 @@ packages:
vue-eslint-parser:
optional: true
- eslint-plugin-promise@7.0.0:
- resolution: {integrity: sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==}
+ eslint-plugin-promise@7.1.0:
+ resolution: {integrity: sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -7510,8 +7714,8 @@ packages:
eslint: '>=8.0.0'
putout: '>=34'
- eslint-plugin-react-debug@1.8.2:
- resolution: {integrity: sha512-+DUv5IKQGoNH40wIDRpIL0O6seQeN08aM5DATQp3142/ZAIZsPycD4GZBF9U11hwvmBnBg0xHX11Gmt7YGIkJA==}
+ eslint-plugin-react-debug@1.9.0:
+ resolution: {integrity: sha512-+Nprm5R1yQLvfe6f0BSYXMVB6zOgLcalWnae9eE8Wk+NxQNjAVOCxsB9ipkR1qqdUmZesz6oNpeAE4PgKAf1ig==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -7520,8 +7724,8 @@ packages:
typescript:
optional: true
- eslint-plugin-react-dom@1.8.2:
- resolution: {integrity: sha512-Jbe+qxwM8MoPWEks0HEEq92TVlgUK98aaWJp4hH8m85YY3nKSOIkt8EE/OvwiqTdv8e3Z19Qkth1ahCDc+gvlA==}
+ eslint-plugin-react-dom@1.9.0:
+ resolution: {integrity: sha512-ESU1OCytAudvkjfA8eqjq/j4+H9p5AObn6Wh1KWpED03KUnGCdYHJs5ZvdxuFS3ttrweyuJekENLwDKwLjxYiw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -7530,8 +7734,8 @@ packages:
typescript:
optional: true
- eslint-plugin-react-hooks-extra@1.8.2:
- resolution: {integrity: sha512-nxeuBb6yth+NFRVRsqjivEA0cGPQXUK+GrnSiuFp4kAJ+PgIupE3GKvy8ucwPTpmacsL8edjjZnx+BxdRBJwPQ==}
+ eslint-plugin-react-hooks-extra@1.9.0:
+ resolution: {integrity: sha512-nFs52rtcc4nmOTLTxGoevM2ZXwGRd5IjkWXkaah8W1C1qHoLVnLRyH6geFUMlXbje3+benMb63ycS11GyyCS7w==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -7552,8 +7756,8 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
- eslint-plugin-react-naming-convention@1.8.2:
- resolution: {integrity: sha512-SvYH1ZsqvZT0FwVYxqDErPWxS9QQ9XAfcOwWmYRH4XkI1xAVwgdqb86Vn2tBQKplnLQhR9CVYlbxm/l2VZoD+g==}
+ eslint-plugin-react-naming-convention@1.9.0:
+ resolution: {integrity: sha512-kvuaQFEEQZq4ZTsIxNJccqNnUkt22lkZDp+hPZILC9PS5C6xrACLoVwAIl7k0P6Tv7WsZzoRbxCcanX9F7rtBQ==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -7567,8 +7771,8 @@ packages:
peerDependencies:
eslint: '>=7'
- eslint-plugin-react-x@1.8.2:
- resolution: {integrity: sha512-UbdjagNnMvvTAR10cJXQr/c04Vfr729zPQ7rqJhTG8iL5f/nLVcsTxtx2S+HBrada3ZAo1Ai3xBDQ2CsLtTDjA==}
+ eslint-plugin-react-x@1.9.0:
+ resolution: {integrity: sha512-sZqN8BL7LwcjrnAaSc/aIgXjcnGIpZDo890svcRDfpT8o+12V31T2FKcThS+vtVUgdLufXUY8MLeHfzkbr0sRg==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -7751,10 +7955,6 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
- execa@9.3.0:
- resolution: {integrity: sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==}
- engines: {node: ^18.19.0 || >=20.5.0}
-
expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
@@ -7779,8 +7979,8 @@ packages:
engines: {node: '>= 10.17.0'}
hasBin: true
- fast-check@3.20.0:
- resolution: {integrity: sha512-pZIjqLpOZgdSLecec4GKC3Zq5702MZ34upMKxojnNVSWA0K64V3pXOBT1Wdsrc3AphLtzRBbsi8bRWF4TUGmUg==}
+ fast-check@3.21.0:
+ resolution: {integrity: sha512-QpmbiqRFRZ+SIlBJh6xi5d/PgXciUc/xWKc4Vi2RWEHHIRx6oM3f0fWNna++zP9VB5HUBTObUK9gTKQP3vVcrQ==}
engines: {node: '>=8.0.0'}
fast-deep-equal@2.0.1:
@@ -7846,10 +8046,6 @@ packages:
resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==}
engines: {node: '>=14'}
- figures@6.1.0:
- resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
- engines: {node: '>=18'}
-
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
@@ -7950,8 +8146,8 @@ packages:
for-each@0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
- foreground-child@3.2.1:
- resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
+ foreground-child@3.3.0:
+ resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
form-data@4.0.0:
@@ -8072,10 +8268,6 @@ packages:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
- get-stream@9.0.1:
- resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
- engines: {node: '>=18'}
-
get-symbol-description@1.0.2:
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
@@ -8255,8 +8447,8 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
- hono@4.5.3:
- resolution: {integrity: sha512-r26WwwbKD3BAYdfB294knNnegNda7VfV1tVn66D9Kvl9WQTdrR+5eKdoeaQNHQcC3Gr0KBikzAtjd6VsRGVSaw==}
+ hono@4.5.4:
+ resolution: {integrity: sha512-k2IguJfRgNCpDbAfpxk+o+fZBLFHl4+eIZUpjc1ItZWHeZ37SmT3efA1UpkIaC0hSf1NJg0E79/wWn6g9LQ4Cw==}
engines: {node: '>=16.0.0'}
hosted-git-info@2.8.9:
@@ -8309,10 +8501,6 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
- human-signals@7.0.0:
- resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==}
- engines: {node: '>=18.18.0'}
-
iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@@ -8388,6 +8576,12 @@ packages:
inline-style-parser@0.2.3:
resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==}
+ input-otp@1.2.4:
+ resolution: {integrity: sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+
inquirer@8.2.6:
resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
engines: {node: '>=12.0.0'}
@@ -8540,8 +8734,8 @@ packages:
is-hotkey@0.2.0:
resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
- is-immutable-type@4.0.0:
- resolution: {integrity: sha512-gyFBCXv+NikTs8/PGZhgjbMmFZQ5jvHGZIsVu6+/9Bk4K7imlWBIDN7hTr9fNioGzFg71I4YM3z8f0aKXarTAw==}
+ is-immutable-type@5.0.0:
+ resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==}
peerDependencies:
eslint: '*'
typescript: '>=4.7.4'
@@ -8620,10 +8814,6 @@ packages:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- is-stream@4.0.1:
- resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
- engines: {node: '>=18'}
-
is-string@1.0.7:
resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
engines: {node: '>= 0.4'}
@@ -8651,10 +8841,6 @@ packages:
resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
engines: {node: '>=12'}
- is-unicode-supported@2.0.0:
- resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==}
- engines: {node: '>=18'}
-
is-utf8@0.2.1:
resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
@@ -8779,8 +8965,8 @@ packages:
react:
optional: true
- jotai@2.9.1:
- resolution: {integrity: sha512-t4Q7FIqQB3N/1art4OcqdlEtPmQ2h4DNIzTFhvt06WE0kCpQ1QoG+1A1IGTaQBi2KdDRsnywj+ojmHHKgw6PDA==}
+ jotai@2.9.2:
+ resolution: {integrity: sha512-jIBXEadOHCziOuMY6HAy2KQcHipGhnsbF+twqh8Lcmcz/Yei0gdBtW5mOYdKmbQxGqkvfvXM3w/oHtJ2WNGSFg==}
engines: {node: '>=12.20.0'}
peerDependencies:
'@types/react': '>=17.0.0'
@@ -8819,8 +9005,8 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsdoc-type-pratt-parser@4.0.0:
- resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==}
+ jsdoc-type-pratt-parser@4.1.0:
+ resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
engines: {node: '>=12.0.0'}
jsesc@0.5.0:
@@ -8912,8 +9098,8 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
- knip@5.27.0:
- resolution: {integrity: sha512-W8+jhO7i5pXRUqOzhJGm2DT5/d9aQjyrYTCSojqJxFOvi7ku/nHKzpBO3WNf4eflJo0t3zitmUkM69g53qoZQw==}
+ knip@5.27.2:
+ resolution: {integrity: sha512-Mya1XEDq1oygibQf0uocQd02Fil8RtvNVhcFAcxypjcc6zakT7wsJtS0xvuwEitilfI0tiFC9PghmJQ3DMKuTg==}
engines: {node: '>=18.6.0'}
hasBin: true
peerDependencies:
@@ -8941,62 +9127,68 @@ packages:
resolution: {integrity: sha512-Aj5cQ5uk/6fHdmeW0TiXK42FqUlwx7ytmMLPSaUQPin5HKKKuUPD62MAbN4OEweGBBI7q1BekoEN4gPUEL6MZA==}
os: [darwin, linux, win32]
- lightningcss-darwin-arm64@1.25.1:
- resolution: {integrity: sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw==}
+ lightningcss-darwin-arm64@1.26.0:
+ resolution: {integrity: sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
- lightningcss-darwin-x64@1.25.1:
- resolution: {integrity: sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==}
+ lightningcss-darwin-x64@1.26.0:
+ resolution: {integrity: sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
- lightningcss-freebsd-x64@1.25.1:
- resolution: {integrity: sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w==}
+ lightningcss-freebsd-x64@1.26.0:
+ resolution: {integrity: sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
- lightningcss-linux-arm-gnueabihf@1.25.1:
- resolution: {integrity: sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng==}
+ lightningcss-linux-arm-gnueabihf@1.26.0:
+ resolution: {integrity: sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
- lightningcss-linux-arm64-gnu@1.25.1:
- resolution: {integrity: sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ==}
+ lightningcss-linux-arm64-gnu@1.26.0:
+ resolution: {integrity: sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- lightningcss-linux-arm64-musl@1.25.1:
- resolution: {integrity: sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw==}
+ lightningcss-linux-arm64-musl@1.26.0:
+ resolution: {integrity: sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- lightningcss-linux-x64-gnu@1.25.1:
- resolution: {integrity: sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA==}
+ lightningcss-linux-x64-gnu@1.26.0:
+ resolution: {integrity: sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- lightningcss-linux-x64-musl@1.25.1:
- resolution: {integrity: sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA==}
+ lightningcss-linux-x64-musl@1.26.0:
+ resolution: {integrity: sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- lightningcss-win32-x64-msvc@1.25.1:
- resolution: {integrity: sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A==}
+ lightningcss-win32-arm64-msvc@1.26.0:
+ resolution: {integrity: sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.26.0:
+ resolution: {integrity: sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
- lightningcss@1.25.1:
- resolution: {integrity: sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==}
+ lightningcss@1.26.0:
+ resolution: {integrity: sha512-a/XZ5hdgifrofQJUArr5AiJjx26SwMam3SJUSMjgebZbESZ96i+6Qsl8tLi0kaUsdMzBWXh9sN1Oe6hp2/dkQw==}
engines: {node: '>= 12.0.0'}
lilconfig@2.1.0:
@@ -9882,8 +10074,8 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
- nuqs@1.17.6:
- resolution: {integrity: sha512-mbQKLo+4h9ZsCg9u4WcitBqVhP2XG2PrPc0sUN0IEHL3nUKjxHT2h3tqd1Wo1gkkGxan5uVpnJ9NP51y2j7vgg==}
+ nuqs@1.17.8:
+ resolution: {integrity: sha512-JqsnzO+hJyjJE7ebuhpHMLA2iGY48e2xr0oJQFhj7kjUmDABL2XOup47rxF5TL/5b9jEsmU2t0lAKin1VdK1/A==}
peerDependencies:
next: '>=13.4 <14.0.2 || ^14.0.3'
@@ -10364,8 +10556,8 @@ packages:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.4.40:
- resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
+ postcss@8.4.41:
+ resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
engines: {node: ^10 || ^12 || >=14}
postgres-array@2.0.0:
@@ -10587,8 +10779,8 @@ packages:
peerDependencies:
react: '>=17.0.2'
- react-day-picker@9.0.6:
- resolution: {integrity: sha512-q4TUrUgA/TZbtrnoXYZrcQRky+HUHqnRmsldDG/jjsYQQehmQPRv4gWihEMrmcfI3sVWQlhUXx3bbnCYhfVMiA==}
+ react-day-picker@9.0.8:
+ resolution: {integrity: sha512-dZM94abRNnc2jC/wkWn56358GHJcfAHfyC2Th9asyIUQhFIC5D2Ef5qUG9n1b5t8PeCJst7eCWJ6b+XZaAjxhA==}
peerDependencies:
react: '>=16.8.0'
@@ -10918,11 +11110,11 @@ packages:
remark-stringify@11.0.0:
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
- remeda@2.7.0:
- resolution: {integrity: sha512-7q7Xthw/C6uZBk8W5BfXpp/8IjaP51IPUrBVRfSZ3GB9dZMZJEAwYmVxA+TptDmhwlGRw8jUqoo4hL5zU0aV5Q==}
+ remeda@2.10.1:
+ resolution: {integrity: sha512-LSMUFASk6lu3E+lr0ErNMeTpUPdTPSR0wBQbOC13CSnh1f9y76fzF7T1uRKcl1lR4rPx5QO06sRvF9cD5oQBPg==}
- remotion@4.0.191:
- resolution: {integrity: sha512-LfHqMZTw1lwLK+0tsdW+00u3PRI73NZ8xenUCftw+y/38+kzQvIC5LPdAs9G3N5MIqy06Ue7x7+dVxtPtTJ10Q==}
+ remotion@4.0.194:
+ resolution: {integrity: sha512-LhDkr/9mw6B/iyo9qHcKiRQtOxPGMw4tvUkgbOs63EMomsG07UzGov53nNZrzisJhhaHd71vOSWqcjeuyht2xA==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
@@ -11398,10 +11590,6 @@ packages:
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
engines: {node: '>=12'}
- strip-final-newline@4.0.0:
- resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
- engines: {node: '>=18'}
-
strip-indent@1.0.1:
resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
engines: {node: '>=0.10.0'}
@@ -11575,8 +11763,8 @@ packages:
autoprefixer: ^10.0.2
postcss: ^8.0.9
- tailwindcss@3.4.7:
- resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==}
+ tailwindcss@3.4.8:
+ resolution: {integrity: sha512-GkP17r9GQkxgZ9FKHJQEnjJuKBcbFhMFzKu5slmN6NjlCuFnYJMQ8N4AZ6VrUyiRXlDtPKHkesuQ/MS913Nvdg==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -11626,8 +11814,8 @@ packages:
uglify-js:
optional: true
- terser@5.31.3:
- resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==}
+ terser@5.31.5:
+ resolution: {integrity: sha512-YPmas0L0rE1UyLL/llTWA0SiDOqIcAQYLeUj7cJYzXHlRTAnMSg9pPe4VJ5PlKvTrPQsdVFuiRiwyeNlYgwh2Q==}
engines: {node: '>=10'}
hasBin: true
@@ -11743,46 +11931,46 @@ packages:
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
- tsx@4.16.5:
- resolution: {integrity: sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==}
+ tsx@4.17.0:
+ resolution: {integrity: sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==}
engines: {node: '>=18.0.0'}
hasBin: true
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
- turbo-darwin-64@2.0.11:
- resolution: {integrity: sha512-YlHEEhcm+jI1BSZoLugGHUWDfRXaNaQIv7tGQBfadYjo9kixBnqoTOU6s1ubOrQMID+lizZZQs79GXwqM6vohg==}
+ turbo-darwin-64@2.0.12:
+ resolution: {integrity: sha512-NAgfgbXxX/JScWQmmQnGbPuFZq7LIswHfcMk5JwyBXQM/xmklNOxxac7MnGGIOf19Z2f6S3qHy17VIj0SeGfnA==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.0.11:
- resolution: {integrity: sha512-K/YW+hWzRQ/wGmtffxllH4M1tgy8OlwgXODrIiAGzkSpZl9+pIsem/F86UULlhsIeavBYK/LS5+dzV3DPMjJ9w==}
+ turbo-darwin-arm64@2.0.12:
+ resolution: {integrity: sha512-cP02uer5KSJ+fXL+OfRRk5hnVjV0c60hxDgNcJxrZpfhun7HHoKDDR7w2xhQntiA45aC6ZZEXRqMKpj6GAmKbg==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.0.11:
- resolution: {integrity: sha512-mv8CwGP06UPweMh1Vlp6PI6OWnkuibxfIJ4Vlof7xqjohAaZU5FLqeOeHkjQflH/6YrCVuS9wrK0TFOu+meTtA==}
+ turbo-linux-64@2.0.12:
+ resolution: {integrity: sha512-+mQgGfg1eq5qF+wenK/FKJaNMNAo5DQLC4htQy+8osW+fx6U+8+6UlPQPaycAWDEqwOI7NwuqkeHfkEQLQUTyQ==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.0.11:
- resolution: {integrity: sha512-wLE5tl4oriTmHbuayc0ki0csaCplmVLj+uCWtecM/mfBuZgNS9ICNM9c4sB+Cfl5tlBBFeepqRNgvRvn8WeVZg==}
+ turbo-linux-arm64@2.0.12:
+ resolution: {integrity: sha512-KFyEZDXfPU1DK4zimxdCcqAcK7IIttX4mfsgB7NsSEOmH0dhHOih/YFYiyEDC1lTRx0C2RlzQ0Kjjdz48AN5Eg==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.0.11:
- resolution: {integrity: sha512-tja3zvVCSWu3HizOoeQv0qDJ+GeWGWRFOOM6a8i3BYnXLgGKAaDZFcjwzgC50tWiAw4aowIVR4OouwIyRhLBaQ==}
+ turbo-windows-64@2.0.12:
+ resolution: {integrity: sha512-kJj4KCkZTkDTDCqsSw1m1dbO4WeoQq1mYUm/thXOH0OkeqYbSMt0EyoTcJOgKUDsrMnzZD2gPfYrlYHtV69lVA==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.0.11:
- resolution: {integrity: sha512-sYjXP6k94Bqh99R+y3M1Ks6LRIEZybMz+7enA8GKl6JJ2ZFaXxTnS6q+/2+ii1+rRwxohj5OBb4gxODcF8Jd4w==}
+ turbo-windows-arm64@2.0.12:
+ resolution: {integrity: sha512-TY3ROxguDilN2olCwcZMaePdW01Xhma0pZU7bNhsQEqca9RGAmsZBuzfGnTMcWPmv4tpnb/PlX1hrt1Hod/44Q==}
cpu: [arm64]
os: [win32]
- turbo@2.0.11:
- resolution: {integrity: sha512-imDlFFAvitbCm1JtDFJ6eG882qwxHUmVT2noPb3p2jq5o5DuXOchMbkVS9kUeC3/4WpY5N0GBZ3RvqNyjHZw1Q==}
+ turbo@2.0.12:
+ resolution: {integrity: sha512-8s2KwqjwQj7z8Z53SUZSKVkQOZ2/Sl4D2F440oaBY/k2lGju60dW6srEpnn8/RIDeICZmQn3pQHF79Jfnc5Skw==}
hasBin: true
type-check@0.4.0:
@@ -11851,8 +12039,8 @@ packages:
typedarray@0.0.6:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
- typescript-eslint@8.0.0:
- resolution: {integrity: sha512-yQWBJutWL1PmpmDddIOl9/Mi6vZjqNCjqSGBMQ4vsc2Aiodk0SnbQQWPXbSy0HNuKCuGkw1+u4aQ2mO40TdhDQ==}
+ typescript-eslint@8.0.1:
+ resolution: {integrity: sha512-V3Y+MdfhawxEjE16dWpb7/IOgeXnLwAEEkS7v8oDqNcR1oYlqWhGH/iHqHdKVdpWme1VPZ0SoywXAkCqawj2eQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -11865,6 +12053,11 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ typescript@5.6.0-beta:
+ resolution: {integrity: sha512-wqVumY25SwHmCJvZPHqbWfjSyWdAqTTUM+LqaPpFccOnln54EZoPr8Ra7qJV8HMEdFYcDc+S5xro0RyvaHvIvw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
typestat@0.7.3:
resolution: {integrity: sha512-YMN71PrKzQ6PzPUVwbpOw/+6shbMEzm4f9VxSdDqPTGjpvsh5ot4DbNTVa1JCheeyl7eJUky/ycUDEcHtfkqtw==}
hasBin: true
@@ -11956,8 +12149,8 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
- unplugin@1.12.0:
- resolution: {integrity: sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==}
+ unplugin@1.12.1:
+ resolution: {integrity: sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==}
engines: {node: '>=14.0.0'}
update-browserslist-db@1.1.0:
@@ -12369,10 +12562,6 @@ packages:
resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
engines: {node: '>=18'}
- yoctocolors@2.1.1:
- resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
- engines: {node: '>=18'}
-
yoga-layout-prebuilt@1.10.0:
resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==}
engines: {node: '>=8'}
@@ -12755,10 +12944,10 @@ snapshots:
picocolors: 1.0.1
sisteransi: 1.0.5
- '@clerk/backend@1.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@clerk/backend@1.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@clerk/shared': 2.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@clerk/types': 4.11.0
+ '@clerk/shared': 2.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/types': 4.12.1
cookie: 0.5.0
snakecase-keys: 5.4.4
tslib: 2.4.1
@@ -12766,35 +12955,35 @@ snapshots:
- react
- react-dom
- '@clerk/clerk-react@5.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@clerk/clerk-react@5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@clerk/shared': 2.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@clerk/types': 4.11.0
+ '@clerk/shared': 2.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/types': 4.12.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tslib: 2.4.1
- '@clerk/localizations@2.5.4':
+ '@clerk/localizations@2.5.6':
dependencies:
- '@clerk/types': 4.11.0
+ '@clerk/types': 4.12.1
- '@clerk/nextjs@5.2.12(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@clerk/nextjs@5.2.14(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@clerk/backend': 1.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@clerk/clerk-react': 5.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@clerk/shared': 2.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@clerk/types': 4.11.0
+ '@clerk/backend': 1.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/clerk-react': 5.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/shared': 2.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/types': 4.12.1
crypto-js: 4.2.0
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
path-to-regexp: 6.2.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
server-only: 0.0.1
tslib: 2.4.1
- '@clerk/shared@2.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@clerk/shared@2.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@clerk/types': 4.11.0
+ '@clerk/types': 4.12.1
glob-to-regexp: 0.4.1
js-cookie: 3.0.5
std-env: 3.7.0
@@ -12803,16 +12992,16 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@clerk/themes@2.1.16':
+ '@clerk/themes@2.1.18':
dependencies:
- '@clerk/types': 4.11.0
+ '@clerk/types': 4.12.1
tslib: 2.4.1
- '@clerk/types@4.11.0':
+ '@clerk/types@4.12.1':
dependencies:
csstype: 3.1.1
- '@cspell/cspell-bundled-dicts@8.13.1':
+ '@cspell/cspell-bundled-dicts@8.13.2':
dependencies:
'@cspell/dict-ada': 4.0.2
'@cspell/dict-aws': 4.0.3
@@ -12854,32 +13043,32 @@ snapshots:
'@cspell/dict-php': 4.0.8
'@cspell/dict-powershell': 5.0.5
'@cspell/dict-public-licenses': 2.0.7
- '@cspell/dict-python': 4.2.3
+ '@cspell/dict-python': 4.2.4
'@cspell/dict-r': 2.0.1
'@cspell/dict-ruby': 5.0.2
'@cspell/dict-rust': 4.0.5
'@cspell/dict-scala': 5.0.3
- '@cspell/dict-software-terms': 4.0.4
- '@cspell/dict-sql': 2.1.4
+ '@cspell/dict-software-terms': 4.0.5
+ '@cspell/dict-sql': 2.1.5
'@cspell/dict-svelte': 1.0.2
'@cspell/dict-swift': 2.0.1
'@cspell/dict-terraform': 1.0.0
'@cspell/dict-typescript': 3.1.6
'@cspell/dict-vue': 3.0.0
- '@cspell/cspell-json-reporter@8.13.1':
+ '@cspell/cspell-json-reporter@8.13.2':
dependencies:
- '@cspell/cspell-types': 8.13.1
+ '@cspell/cspell-types': 8.13.2
- '@cspell/cspell-pipe@8.13.1': {}
+ '@cspell/cspell-pipe@8.13.2': {}
- '@cspell/cspell-resolver@8.13.1':
+ '@cspell/cspell-resolver@8.13.2':
dependencies:
global-directory: 4.0.1
- '@cspell/cspell-service-bus@8.13.1': {}
+ '@cspell/cspell-service-bus@8.13.2': {}
- '@cspell/cspell-types@8.13.1': {}
+ '@cspell/cspell-types@8.13.2': {}
'@cspell/dict-ada@4.0.2': {}
@@ -12977,7 +13166,7 @@ snapshots:
'@cspell/dict-public-licenses@2.0.7': {}
- '@cspell/dict-python@4.2.3':
+ '@cspell/dict-python@4.2.4':
dependencies:
'@cspell/dict-data-science': 2.0.1
@@ -12989,9 +13178,9 @@ snapshots:
'@cspell/dict-scala@5.0.3': {}
- '@cspell/dict-software-terms@4.0.4': {}
+ '@cspell/dict-software-terms@4.0.5': {}
- '@cspell/dict-sql@2.1.4': {}
+ '@cspell/dict-sql@2.1.5': {}
'@cspell/dict-svelte@1.0.2': {}
@@ -13007,13 +13196,13 @@ snapshots:
'@cspell/dict-vue@3.0.0': {}
- '@cspell/dynamic-import@8.13.1':
+ '@cspell/dynamic-import@8.13.2':
dependencies:
import-meta-resolve: 4.1.0
- '@cspell/strong-weak-map@8.13.1': {}
+ '@cspell/strong-weak-map@8.13.2': {}
- '@cspell/url@8.13.1': {}
+ '@cspell/url@8.13.2': {}
'@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)':
dependencies:
@@ -13030,6 +13219,164 @@ snapshots:
dependencies:
postcss-selector-parser: 6.1.1
+ '@dicebear/adventurer-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/adventurer@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/avataaars-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/avataaars@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/big-ears-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/big-ears@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/big-smile@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/bottts-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/bottts@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/collection@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/adventurer': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/adventurer-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/avataaars': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/avataaars-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/big-ears': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/big-ears-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/big-smile': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/bottts': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/bottts-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/core': 9.2.1
+ '@dicebear/croodles': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/croodles-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/dylan': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/fun-emoji': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/glass': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/icons': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/identicon': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/initials': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/lorelei': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/lorelei-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/micah': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/miniavs': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/notionists': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/notionists-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/open-peeps': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/personas': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/pixel-art': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/pixel-art-neutral': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/rings': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/shapes': 9.2.1(@dicebear/core@9.2.1)
+ '@dicebear/thumbs': 9.2.1(@dicebear/core@9.2.1)
+
+ '@dicebear/core@9.2.1':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@dicebear/croodles-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/croodles@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/dylan@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/fun-emoji@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/glass@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/icons@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/identicon@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/initials@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/lorelei-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/lorelei@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/micah@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/miniavs@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/notionists-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/notionists@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/open-peeps@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/personas@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/pixel-art-neutral@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/pixel-art@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/rings@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/shapes@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
+ '@dicebear/thumbs@9.2.1(@dicebear/core@9.2.1)':
+ dependencies:
+ '@dicebear/core': 9.2.1
+
'@discoveryjs/json-ext@0.5.7': {}
'@drizzle-team/brocli@0.8.2': {}
@@ -13039,7 +13386,7 @@ snapshots:
'@effect/schema@0.68.12(effect@3.4.5)':
dependencies:
effect: 3.4.5
- fast-check: 3.20.0
+ fast-check: 3.21.0
'@emnapi/runtime@1.2.0':
dependencies:
@@ -13062,7 +13409,7 @@ snapshots:
'@esbuild/aix-ppc64@0.20.2':
optional: true
- '@esbuild/aix-ppc64@0.21.5':
+ '@esbuild/aix-ppc64@0.23.0':
optional: true
'@esbuild/android-arm64@0.18.20':
@@ -13077,7 +13424,7 @@ snapshots:
'@esbuild/android-arm64@0.20.2':
optional: true
- '@esbuild/android-arm64@0.21.5':
+ '@esbuild/android-arm64@0.23.0':
optional: true
'@esbuild/android-arm@0.18.20':
@@ -13092,7 +13439,7 @@ snapshots:
'@esbuild/android-arm@0.20.2':
optional: true
- '@esbuild/android-arm@0.21.5':
+ '@esbuild/android-arm@0.23.0':
optional: true
'@esbuild/android-x64@0.18.20':
@@ -13107,7 +13454,7 @@ snapshots:
'@esbuild/android-x64@0.20.2':
optional: true
- '@esbuild/android-x64@0.21.5':
+ '@esbuild/android-x64@0.23.0':
optional: true
'@esbuild/darwin-arm64@0.18.20':
@@ -13122,7 +13469,7 @@ snapshots:
'@esbuild/darwin-arm64@0.20.2':
optional: true
- '@esbuild/darwin-arm64@0.21.5':
+ '@esbuild/darwin-arm64@0.23.0':
optional: true
'@esbuild/darwin-x64@0.18.20':
@@ -13137,7 +13484,7 @@ snapshots:
'@esbuild/darwin-x64@0.20.2':
optional: true
- '@esbuild/darwin-x64@0.21.5':
+ '@esbuild/darwin-x64@0.23.0':
optional: true
'@esbuild/freebsd-arm64@0.18.20':
@@ -13152,7 +13499,7 @@ snapshots:
'@esbuild/freebsd-arm64@0.20.2':
optional: true
- '@esbuild/freebsd-arm64@0.21.5':
+ '@esbuild/freebsd-arm64@0.23.0':
optional: true
'@esbuild/freebsd-x64@0.18.20':
@@ -13167,7 +13514,7 @@ snapshots:
'@esbuild/freebsd-x64@0.20.2':
optional: true
- '@esbuild/freebsd-x64@0.21.5':
+ '@esbuild/freebsd-x64@0.23.0':
optional: true
'@esbuild/linux-arm64@0.18.20':
@@ -13182,7 +13529,7 @@ snapshots:
'@esbuild/linux-arm64@0.20.2':
optional: true
- '@esbuild/linux-arm64@0.21.5':
+ '@esbuild/linux-arm64@0.23.0':
optional: true
'@esbuild/linux-arm@0.18.20':
@@ -13197,7 +13544,7 @@ snapshots:
'@esbuild/linux-arm@0.20.2':
optional: true
- '@esbuild/linux-arm@0.21.5':
+ '@esbuild/linux-arm@0.23.0':
optional: true
'@esbuild/linux-ia32@0.18.20':
@@ -13212,7 +13559,7 @@ snapshots:
'@esbuild/linux-ia32@0.20.2':
optional: true
- '@esbuild/linux-ia32@0.21.5':
+ '@esbuild/linux-ia32@0.23.0':
optional: true
'@esbuild/linux-loong64@0.18.20':
@@ -13227,7 +13574,7 @@ snapshots:
'@esbuild/linux-loong64@0.20.2':
optional: true
- '@esbuild/linux-loong64@0.21.5':
+ '@esbuild/linux-loong64@0.23.0':
optional: true
'@esbuild/linux-mips64el@0.18.20':
@@ -13242,7 +13589,7 @@ snapshots:
'@esbuild/linux-mips64el@0.20.2':
optional: true
- '@esbuild/linux-mips64el@0.21.5':
+ '@esbuild/linux-mips64el@0.23.0':
optional: true
'@esbuild/linux-ppc64@0.18.20':
@@ -13257,7 +13604,7 @@ snapshots:
'@esbuild/linux-ppc64@0.20.2':
optional: true
- '@esbuild/linux-ppc64@0.21.5':
+ '@esbuild/linux-ppc64@0.23.0':
optional: true
'@esbuild/linux-riscv64@0.18.20':
@@ -13272,7 +13619,7 @@ snapshots:
'@esbuild/linux-riscv64@0.20.2':
optional: true
- '@esbuild/linux-riscv64@0.21.5':
+ '@esbuild/linux-riscv64@0.23.0':
optional: true
'@esbuild/linux-s390x@0.18.20':
@@ -13287,7 +13634,7 @@ snapshots:
'@esbuild/linux-s390x@0.20.2':
optional: true
- '@esbuild/linux-s390x@0.21.5':
+ '@esbuild/linux-s390x@0.23.0':
optional: true
'@esbuild/linux-x64@0.18.20':
@@ -13302,7 +13649,7 @@ snapshots:
'@esbuild/linux-x64@0.20.2':
optional: true
- '@esbuild/linux-x64@0.21.5':
+ '@esbuild/linux-x64@0.23.0':
optional: true
'@esbuild/netbsd-x64@0.18.20':
@@ -13317,7 +13664,10 @@ snapshots:
'@esbuild/netbsd-x64@0.20.2':
optional: true
- '@esbuild/netbsd-x64@0.21.5':
+ '@esbuild/netbsd-x64@0.23.0':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.23.0':
optional: true
'@esbuild/openbsd-x64@0.18.20':
@@ -13332,7 +13682,7 @@ snapshots:
'@esbuild/openbsd-x64@0.20.2':
optional: true
- '@esbuild/openbsd-x64@0.21.5':
+ '@esbuild/openbsd-x64@0.23.0':
optional: true
'@esbuild/sunos-x64@0.18.20':
@@ -13347,7 +13697,7 @@ snapshots:
'@esbuild/sunos-x64@0.20.2':
optional: true
- '@esbuild/sunos-x64@0.21.5':
+ '@esbuild/sunos-x64@0.23.0':
optional: true
'@esbuild/win32-arm64@0.18.20':
@@ -13362,7 +13712,7 @@ snapshots:
'@esbuild/win32-arm64@0.20.2':
optional: true
- '@esbuild/win32-arm64@0.21.5':
+ '@esbuild/win32-arm64@0.23.0':
optional: true
'@esbuild/win32-ia32@0.18.20':
@@ -13377,7 +13727,7 @@ snapshots:
'@esbuild/win32-ia32@0.20.2':
optional: true
- '@esbuild/win32-ia32@0.21.5':
+ '@esbuild/win32-ia32@0.23.0':
optional: true
'@esbuild/win32-x64@0.18.20':
@@ -13392,7 +13742,7 @@ snapshots:
'@esbuild/win32-x64@0.20.2':
optional: true
- '@esbuild/win32-x64@0.21.5':
+ '@esbuild/win32-x64@0.23.0':
optional: true
'@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)':
@@ -13402,15 +13752,17 @@ snapshots:
'@eslint-community/regexpp@4.11.0': {}
- '@eslint-react/ast@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
+ '@eslint-react/ast@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.6.0-beta)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/visitor-keys': 8.0.1
birecord: 0.1.1
- remeda: 2.7.0
+ remeda: 2.10.1
string-ts: 2.2.0
ts-pattern: 5.2.0
transitivePeerDependencies:
@@ -13418,19 +13770,19 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/core@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
- dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/jsx': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/var': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- remeda: 2.7.0
+ '@eslint-react/core@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
+ dependencies:
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/jsx': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/var': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ remeda: 2.10.1
short-unique-id: 5.2.0
ts-pattern: 5.2.0
transitivePeerDependencies:
@@ -13438,74 +13790,74 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/eslint-plugin@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
+ '@eslint-react/eslint-plugin@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- eslint-plugin-react-debug: 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- eslint-plugin-react-dom: 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- eslint-plugin-react-hooks-extra: 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- eslint-plugin-react-naming-convention: 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- eslint-plugin-react-x: 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- remeda: 2.7.0
+ eslint-plugin-react-debug: 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ eslint-plugin-react-dom: 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ eslint-plugin-react-hooks-extra: 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ eslint-plugin-react-naming-convention: 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ eslint-plugin-react-x: 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ remeda: 2.10.1
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- '@eslint-react/jsx@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
+ '@eslint-react/jsx@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/var': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- remeda: 2.7.0
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/var': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ remeda: 2.10.1
ts-pattern: 5.2.0
transitivePeerDependencies:
- eslint
- supports-color
- typescript
- '@eslint-react/shared@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
+ '@eslint-react/shared@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
picomatch: 4.0.2
transitivePeerDependencies:
- eslint
- supports-color
- typescript
- '@eslint-react/tools@1.8.2': {}
+ '@eslint-react/tools@1.9.0': {}
- '@eslint-react/types@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
+ '@eslint-react/types@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@eslint-react/tools': 1.8.2
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- remeda: 2.7.0
+ '@eslint-react/tools': 1.9.0
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ remeda: 2.10.1
transitivePeerDependencies:
- eslint
- supports-color
- typescript
- '@eslint-react/var@1.8.2(eslint@9.8.0)(typescript@5.5.4)':
+ '@eslint-react/var@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- remeda: 2.7.0
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ remeda: 2.10.1
transitivePeerDependencies:
- eslint
- supports-color
@@ -13568,32 +13920,32 @@ snapshots:
'@floating-ui/core@1.6.2':
dependencies:
- '@floating-ui/utils': 0.2.5
+ '@floating-ui/utils': 0.2.7
- '@floating-ui/core@1.6.5':
+ '@floating-ui/core@1.6.7':
dependencies:
- '@floating-ui/utils': 0.2.5
+ '@floating-ui/utils': 0.2.7
- '@floating-ui/dom@1.6.8':
+ '@floating-ui/dom@1.6.10':
dependencies:
- '@floating-ui/core': 1.6.5
- '@floating-ui/utils': 0.2.5
+ '@floating-ui/core': 1.6.7
+ '@floating-ui/utils': 0.2.7
'@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@floating-ui/dom': 1.6.8
+ '@floating-ui/dom': 1.6.10
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@floating-ui/react@0.26.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@floating-ui/utils': 0.2.5
+ '@floating-ui/utils': 0.2.7
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tabbable: 6.2.0
- '@floating-ui/utils@0.2.5': {}
+ '@floating-ui/utils@0.2.7': {}
'@formatjs/ecma402-abstract@2.0.0':
dependencies:
@@ -13710,23 +14062,23 @@ snapshots:
'@img/sharp-win32-x64@0.33.4':
optional: true
- '@inquirer/checkbox@2.4.5':
+ '@inquirer/checkbox@2.4.7':
dependencies:
- '@inquirer/core': 9.0.8
+ '@inquirer/core': 9.0.10
'@inquirer/figures': 1.0.5
- '@inquirer/type': 1.5.1
+ '@inquirer/type': 1.5.2
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
- '@inquirer/confirm@3.1.20':
+ '@inquirer/confirm@3.1.22':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
- '@inquirer/core@9.0.8':
+ '@inquirer/core@9.0.10':
dependencies:
'@inquirer/figures': 1.0.5
- '@inquirer/type': 1.5.1
+ '@inquirer/type': 1.5.2
'@types/mute-stream': 0.0.4
'@types/node': 22.1.0
'@types/wrap-ansi': 3.0.0
@@ -13739,71 +14091,71 @@ snapshots:
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
- '@inquirer/editor@2.1.20':
+ '@inquirer/editor@2.1.22':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
external-editor: 3.1.0
- '@inquirer/expand@2.1.20':
+ '@inquirer/expand@2.1.22':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
yoctocolors-cjs: 2.1.2
'@inquirer/figures@1.0.5': {}
- '@inquirer/input@2.2.7':
+ '@inquirer/input@2.2.9':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
- '@inquirer/number@1.0.8':
+ '@inquirer/number@1.0.10':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
- '@inquirer/password@2.1.20':
+ '@inquirer/password@2.1.22':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
ansi-escapes: 4.3.2
- '@inquirer/prompts@5.3.6':
+ '@inquirer/prompts@5.3.8':
dependencies:
- '@inquirer/checkbox': 2.4.5
- '@inquirer/confirm': 3.1.20
- '@inquirer/editor': 2.1.20
- '@inquirer/expand': 2.1.20
- '@inquirer/input': 2.2.7
- '@inquirer/number': 1.0.8
- '@inquirer/password': 2.1.20
- '@inquirer/rawlist': 2.2.2
- '@inquirer/search': 1.0.5
- '@inquirer/select': 2.4.5
+ '@inquirer/checkbox': 2.4.7
+ '@inquirer/confirm': 3.1.22
+ '@inquirer/editor': 2.1.22
+ '@inquirer/expand': 2.1.22
+ '@inquirer/input': 2.2.9
+ '@inquirer/number': 1.0.10
+ '@inquirer/password': 2.1.22
+ '@inquirer/rawlist': 2.2.4
+ '@inquirer/search': 1.0.7
+ '@inquirer/select': 2.4.7
- '@inquirer/rawlist@2.2.2':
+ '@inquirer/rawlist@2.2.4':
dependencies:
- '@inquirer/core': 9.0.8
- '@inquirer/type': 1.5.1
+ '@inquirer/core': 9.0.10
+ '@inquirer/type': 1.5.2
yoctocolors-cjs: 2.1.2
- '@inquirer/search@1.0.5':
+ '@inquirer/search@1.0.7':
dependencies:
- '@inquirer/core': 9.0.8
+ '@inquirer/core': 9.0.10
'@inquirer/figures': 1.0.5
- '@inquirer/type': 1.5.1
+ '@inquirer/type': 1.5.2
yoctocolors-cjs: 2.1.2
- '@inquirer/select@2.4.5':
+ '@inquirer/select@2.4.7':
dependencies:
- '@inquirer/core': 9.0.8
+ '@inquirer/core': 9.0.10
'@inquirer/figures': 1.0.5
- '@inquirer/type': 1.5.1
+ '@inquirer/type': 1.5.2
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
- '@inquirer/type@1.5.1':
+ '@inquirer/type@1.5.2':
dependencies:
mute-stream: 1.0.0
@@ -13830,7 +14182,7 @@ snapshots:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.1.0
- '@types/yargs': 17.0.32
+ '@types/yargs': 17.0.33
chalk: 4.1.2
'@jridgewell/gen-mapping@0.3.5':
@@ -13926,7 +14278,7 @@ snapshots:
dependencies:
'@mdx-js/mdx': 3.0.1
source-map: 0.7.4
- webpack: 5.83.1(esbuild@0.18.6)
+ webpack: 5.83.1(esbuild@0.19.12)
transitivePeerDependencies:
- supports-color
@@ -14006,7 +14358,7 @@ snapshots:
babel-plugin-syntax-hermes-parser: 0.21.1
ci-info: 4.0.0
esbuild: 0.20.2
- hono: 4.5.3
+ hono: 4.5.4
isomorphic-fetch: 3.0.0
nanoid: 5.0.7
pako: 2.1.0
@@ -14018,7 +14370,7 @@ snapshots:
semver: 7.6.3
socket.io-client: 4.7.5
tmp: 0.2.3
- unplugin: 1.12.0
+ unplugin: 1.12.1
update-notifier-cjs: 5.1.6
transitivePeerDependencies:
- bufferutil
@@ -14126,10 +14478,10 @@ snapshots:
'@babel/runtime': 7.25.0
deepmerge: 4.3.1
- '@normy/react-query@0.14.3(@tanstack/react-query@5.51.21(react@18.3.1))':
+ '@normy/react-query@0.14.3(@tanstack/react-query@5.51.23(react@18.3.1))':
dependencies:
'@normy/core': 0.10.1
- '@tanstack/react-query': 5.51.21(react@18.3.1)
+ '@tanstack/react-query': 5.51.23(react@18.3.1)
'@npmcli/config@8.3.4':
dependencies:
@@ -14261,11 +14613,11 @@ snapshots:
json-stable-stringify-without-jsonify: 1.0.1
try-to-catch: 3.0.1
- '@putout/cli-choose-formatter@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/cli-choose-formatter@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/cli-choose': 2.0.0
find-up: 7.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
'@putout/cli-choose@2.0.0':
dependencies:
@@ -14311,13 +14663,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@putout/engine-loader@13.1.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/engine-loader@13.1.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/engine-parser': 10.8.0
diff-match-patch: 1.0.5
nano-memoize: 3.0.16
once: 1.4.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
try-to-catch: 3.0.1
@@ -14333,40 +14685,40 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@putout/engine-processor@11.4.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/engine-processor@11.4.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/engine-loader': 13.1.1(putout@36.0.3(typescript@5.5.4))
+ '@putout/engine-loader': 13.1.1(putout@36.0.3(typescript@5.6.0-beta))
once: 1.4.0
picomatch: 4.0.2
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-to-catch: 3.0.1
- '@putout/engine-reporter@1.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/engine-reporter@1.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/cli-choose-formatter': 4.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/cli-choose-formatter': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/cli-keypress': 2.0.0
- '@putout/engine-loader': 13.1.1(putout@36.0.3(typescript@5.5.4))
+ '@putout/engine-loader': 13.1.1(putout@36.0.3(typescript@5.6.0-beta))
fullstore: 3.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
try-to-catch: 3.0.1
- '@putout/engine-runner@21.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/engine-runner@21.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
'@putout/compare': 14.5.0
'@putout/engine-parser': 10.8.0
'@putout/operate': 12.9.2
- '@putout/operator-declare': 9.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/operator-declare': 9.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/operator-json': 2.2.0
- '@putout/plugin-filesystem': 5.3.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/plugin-filesystem': 5.3.0(putout@36.0.3(typescript@5.6.0-beta))
debug: 4.3.6
fullstore: 3.0.0
jessy: 3.1.1
nessy: 4.0.0
once: 1.4.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
wraptile: 3.0.0
transitivePeerDependencies:
@@ -14391,72 +14743,72 @@ snapshots:
find-up: 7.0.0
try-to-catch: 3.0.1
- '@putout/formatter-codeframe@7.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-codeframe@7.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
- '@putout/formatter-json': 2.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-json': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
chalk: 5.3.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
table: 6.8.2
- '@putout/formatter-dump@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-dump@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/formatter-json': 2.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-json': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
chalk: 5.3.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
table: 6.8.2
- '@putout/formatter-frame@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-frame@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/formatter-codeframe': 7.0.0(putout@36.0.3(typescript@5.5.4))
- putout: 36.0.3(typescript@5.5.4)
+ '@putout/formatter-codeframe': 7.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/formatter-json-lines@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-json-lines@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/formatter-json@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-json@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/formatter-memory@4.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-memory@4.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
chalk: 5.3.0
cli-progress: 3.12.0
format-io: 2.0.0
montag: 1.2.1
once: 1.4.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/formatter-progress-bar@4.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-progress-bar@4.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
chalk: 5.3.0
cli-progress: 3.12.0
once: 1.4.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/formatter-progress@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-progress@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.5.4))
- putout: 36.0.3(typescript@5.5.4)
+ '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/formatter-stream@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-stream@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
chalk: 5.3.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
table: 6.8.2
- '@putout/formatter-time@3.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/formatter-time@3.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
chalk: 5.3.0
cli-progress: 3.12.0
format-io: 2.0.0
montag: 1.2.1
once: 1.4.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
timer-node: 5.0.7
'@putout/git-status-porcelain@3.0.0': {}
@@ -14465,31 +14817,31 @@ snapshots:
dependencies:
'@putout/babel': 2.8.0
- '@putout/operator-add-args@8.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/operator-add-args@8.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
'@putout/compare': 14.5.0
'@putout/engine-parser': 10.8.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
transitivePeerDependencies:
- supports-color
- '@putout/operator-declare@9.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/operator-declare@9.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
'@putout/compare': 14.5.0
'@putout/engine-parser': 10.8.0
'@putout/operate': 12.9.2
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
transitivePeerDependencies:
- supports-color
- '@putout/operator-filesystem@4.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/operator-filesystem@4.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
'@putout/operate': 12.9.2
fullstore: 3.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
'@putout/operator-ignore@1.2.0':
@@ -14501,479 +14853,479 @@ snapshots:
dependencies:
remove-blank-lines: 1.4.1
- '@putout/operator-match-files@3.5.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/operator-match-files@3.5.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
'@putout/engine-parser': 10.8.0
- '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/operator-json': 2.2.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/operator-regexp@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/operator-regexp@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
regexp-tree: 0.1.27
- '@putout/operator-rename-files@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/operator-rename-files@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.5.4))
- putout: 36.0.3(typescript@5.5.4)
+ '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-at@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-at@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-destructuring@7.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-destructuring@7.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-dot-notation@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-dot-notation@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-early-return@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-early-return@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-flat-map@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-flat-map@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-montag@1.1.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-montag@1.1.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-nullish-coalescing@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-nullish-coalescing@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-optional-chaining@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-optional-chaining@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-overrides@1.3.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-overrides@1.3.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-shorthand-properties@5.1.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-shorthand-properties@5.1.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-starts-with@1.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-starts-with@1.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-apply-template-literals@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-apply-template-literals@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-browserlist@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-browserlist@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-conditions@4.4.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-conditions@4.4.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-apply-to-spread@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-apply-to-spread@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-arguments-to-rest@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-arguments-to-rest@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-array-copy-to-slice@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-array-copy-to-slice@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-assert-to-with@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-assert-to-with@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-assignment-to-arrow-function@1.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-assignment-to-arrow-function@1.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-assignment-to-comparison@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-assignment-to-comparison@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-assignment-to-declaration@1.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-assignment-to-declaration@1.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-concat-to-flat@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-concat-to-flat@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-const-to-let@2.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-const-to-let@2.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-index-of-to-includes@2.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-index-of-to-includes@2.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-is-nan-to-number-is-nan@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-is-nan-to-number-is-nan@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-label-to-object@1.0.2(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-label-to-object@1.0.2(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-object-assign-to-merge-spread@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-object-assign-to-merge-spread@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-object-entries-to-array-entries@3.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-object-entries-to-array-entries@3.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-optional-to-logical@3.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-optional-to-logical@3.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-quotes-to-backticks@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-quotes-to-backticks@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-template-to-string@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-template-to-string@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-throw@1.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-throw@1.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-convert-to-arrow-function@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-convert-to-arrow-function@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-coverage@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-coverage@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-declare-before-reference@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-declare-before-reference@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-declare-imports-first@2.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-declare-imports-first@2.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-declare@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-declare@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-eslint@8.13.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-eslint@8.13.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-extract-object-properties@9.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-extract-object-properties@9.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-extract-sequence-expressions@3.5.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-extract-sequence-expressions@3.5.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-filesystem@5.3.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-filesystem@5.3.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/babel': 2.8.0
'@putout/operate': 12.9.2
- '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/operator-json': 2.2.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-for-of@6.1.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-for-of@6.1.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-generators@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-generators@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
fullstore: 3.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-github@12.3.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-github@12.3.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-gitignore@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-gitignore@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-group-imports-by-source@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-group-imports-by-source@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-logical-expressions@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-logical-expressions@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-madrun@18.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-madrun@18.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-math@2.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-math@2.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-maybe@2.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-maybe@2.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-merge-destructuring-properties@9.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-merge-destructuring-properties@9.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-merge-duplicate-functions@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-merge-duplicate-functions@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-merge-duplicate-imports@11.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-merge-duplicate-imports@11.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-montag@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-montag@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-new@3.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-new@3.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-nextjs@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-nextjs@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-nodejs@11.11.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-nodejs@11.11.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
just-camel-case: 6.2.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-npmignore@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-npmignore@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-package-json@7.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-package-json@7.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-promises@15.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-promises@15.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
fullstore: 3.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-putout-config@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-putout-config@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-putout@20.10.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-putout@20.10.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
fullstore: 3.0.0
just-camel-case: 6.2.0
parse-import-specifiers: 1.0.3
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
- '@putout/plugin-react-hook-form@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-react-hook-form@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-react-hooks@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-react-hooks@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-react@1.3.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-react@1.3.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-regexp@9.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-regexp@9.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
regexp-tree: 0.1.27
try-catch: 3.0.1
- '@putout/plugin-remove-console@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-console@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-constant-conditions@4.0.2(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-constant-conditions@4.0.2(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-debugger@7.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-debugger@7.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-duplicate-case@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-duplicate-case@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-duplicate-keys@5.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-duplicate-keys@5.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
fullstore: 3.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-empty@12.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-empty@12.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-iife@4.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-iife@4.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-nested-blocks@6.3.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-nested-blocks@6.3.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-quotes-from-import-assertions@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-quotes-from-import-assertions@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-unreachable-code@1.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-unreachable-code@1.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-unreferenced-variables@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-unreferenced-variables@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-unused-expressions@9.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-unused-expressions@9.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-unused-for-of-variables@3.0.1(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-unused-for-of-variables@3.0.1(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-unused-private-fields@2.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-unused-private-fields@2.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-unused-variables@9.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-unused-variables@9.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-arguments@8.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-arguments@8.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-array-constructor@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-array-constructor@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-array-entries@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-array-entries@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-array@1.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-array@1.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-assign@1.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-assign@1.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-constructor@1.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-constructor@1.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-continue@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-continue@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-escape@6.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-escape@6.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
emoji-regex: 10.3.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-functions@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-functions@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-map@1.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-map@1.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-operand@2.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-operand@2.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-replace@1.0.4(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-replace@1.0.4(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-return@7.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-return@7.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-spread@11.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-spread@11.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-template-expressions@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-template-expressions@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-remove-useless-variables@12.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-remove-useless-variables@12.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-reuse-duplicate-init@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-reuse-duplicate-init@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-simplify-assignment@3.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-simplify-assignment@3.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-simplify-boolean-return@2.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-simplify-boolean-return@2.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-simplify-ternary@7.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-simplify-ternary@7.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-sort-imports-by-specifiers@1.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-sort-imports-by-specifiers@1.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
parse-import-specifiers: 1.0.3
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-split-assignment-expressions@1.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-split-assignment-expressions@1.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-split-nested-destructuring@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-split-nested-destructuring@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-split-variable-declarations@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-split-variable-declarations@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-tape@14.2.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-tape@14.2.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-try-catch@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-try-catch@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-types@4.1.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-types@4.1.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-typescript@7.4.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-typescript@7.4.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
- '@putout/plugin-webpack@3.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/plugin-webpack@3.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
'@putout/printer@9.11.0':
dependencies:
@@ -14988,24 +15340,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@putout/processor-css@9.0.0(putout@36.0.3(typescript@5.5.4))(typescript@5.5.4)':
+ '@putout/processor-css@9.0.0(putout@36.0.3(typescript@5.6.0-beta))(typescript@5.6.0-beta)':
dependencies:
align-spaces: 1.0.4
- cosmiconfig: 9.0.0(typescript@5.5.4)
+ cosmiconfig: 9.0.0(typescript@5.6.0-beta)
deepmerge: 4.3.1
prettier: 3.3.3
- putout: 36.0.3(typescript@5.5.4)
- stylelint: 16.8.1(typescript@5.5.4)
- stylelint-config-standard: 36.0.1(stylelint@16.8.1(typescript@5.5.4))
- stylelint-prettier: 5.0.2(prettier@3.3.3)(stylelint@16.8.1(typescript@5.5.4))
+ putout: 36.0.3(typescript@5.6.0-beta)
+ stylelint: 16.8.1(typescript@5.6.0-beta)
+ stylelint-config-standard: 36.0.1(stylelint@16.8.1(typescript@5.6.0-beta))
+ stylelint-prettier: 5.0.2(prettier@3.3.3)(stylelint@16.8.1(typescript@5.6.0-beta))
transitivePeerDependencies:
- supports-color
- typescript
- '@putout/processor-filesystem@4.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/processor-filesystem@4.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
'@putout/cli-filesystem': 2.0.1
- '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/operator-json': 2.2.0
transitivePeerDependencies:
- putout
@@ -15014,9 +15366,9 @@ snapshots:
dependencies:
'@putout/operator-json': 2.2.0
- '@putout/processor-javascript@5.0.0(putout@36.0.3(typescript@5.5.4))':
+ '@putout/processor-javascript@5.0.0(putout@36.0.3(typescript@5.6.0-beta))':
dependencies:
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
'@putout/processor-json@9.0.0':
dependencies:
@@ -15926,7 +16278,7 @@ snapshots:
'@radix-ui/rect@1.1.0': {}
- '@radix-ui/themes@3.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@radix-ui/themes@3.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/colors': 3.0.0
'@radix-ui/primitive': 1.1.0
@@ -16093,16 +16445,16 @@ snapshots:
dependencies:
react: 18.3.1
- '@remotion/bundler@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/bundler@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@remotion/studio': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/studio-shared': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio-shared': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
css-loader: 5.2.7(webpack@5.83.1(esbuild@0.18.6))
esbuild: 0.18.6
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-refresh: 0.9.0
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
source-map: 0.7.3
style-loader: 2.0.0(webpack@5.83.1(esbuild@0.18.6))
webpack: 5.83.1(esbuild@0.18.6)
@@ -16114,21 +16466,21 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@remotion/cli@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/cli@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@remotion/bundler': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/media-utils': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/player': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/renderer': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/studio': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/studio-server': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/studio-shared': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/bundler': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/media-utils': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/player': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/renderer': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio-server': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio-shared': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
dotenv: 9.0.2
minimist: 1.2.6
prompts: 2.4.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
transitivePeerDependencies:
- '@swc/core'
- bufferutil
@@ -16137,32 +16489,32 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@remotion/compositor-darwin-arm64@4.0.191':
+ '@remotion/compositor-darwin-arm64@4.0.194':
optional: true
- '@remotion/compositor-darwin-x64@4.0.191':
+ '@remotion/compositor-darwin-x64@4.0.194':
optional: true
- '@remotion/compositor-linux-arm64-gnu@4.0.191':
+ '@remotion/compositor-linux-arm64-gnu@4.0.194':
optional: true
- '@remotion/compositor-linux-arm64-musl@4.0.191':
+ '@remotion/compositor-linux-arm64-musl@4.0.194':
optional: true
- '@remotion/compositor-linux-x64-gnu@4.0.191':
+ '@remotion/compositor-linux-x64-gnu@4.0.194':
optional: true
- '@remotion/compositor-linux-x64-musl@4.0.191':
+ '@remotion/compositor-linux-x64-musl@4.0.194':
optional: true
- '@remotion/compositor-win32-x64-msvc@4.0.191':
+ '@remotion/compositor-win32-x64-msvc@4.0.194':
optional: true
- '@remotion/eslint-config@4.0.191(eslint@9.8.0)(typescript@5.5.4)':
+ '@remotion/eslint-config@4.0.194(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@remotion/eslint-plugin': 4.0.191(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/parser': 6.21.0(eslint@9.8.0)(typescript@5.5.4)
+ '@remotion/eslint-plugin': 4.0.194(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.8.0)(typescript@5.6.0-beta))(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/parser': 6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
eslint-plugin-10x: 1.5.2(eslint@9.8.0)
eslint-plugin-react: 7.32.2(eslint@9.8.0)
@@ -16171,61 +16523,61 @@ snapshots:
- supports-color
- typescript
- '@remotion/eslint-plugin@4.0.191(eslint@9.8.0)(typescript@5.5.4)':
+ '@remotion/eslint-plugin@4.0.194(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/utils': 5.19.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 5.19.0(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
- typescript
- '@remotion/media-utils@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/media-utils@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/player@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/player@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/renderer@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/renderer@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@remotion/streaming': 4.0.191
+ '@remotion/streaming': 4.0.194
execa: 5.1.1
extract-zip: 2.0.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
source-map: 0.8.0-beta.0
ws: 8.17.1
optionalDependencies:
- '@remotion/compositor-darwin-arm64': 4.0.191
- '@remotion/compositor-darwin-x64': 4.0.191
- '@remotion/compositor-linux-arm64-gnu': 4.0.191
- '@remotion/compositor-linux-arm64-musl': 4.0.191
- '@remotion/compositor-linux-x64-gnu': 4.0.191
- '@remotion/compositor-linux-x64-musl': 4.0.191
- '@remotion/compositor-win32-x64-msvc': 4.0.191
+ '@remotion/compositor-darwin-arm64': 4.0.194
+ '@remotion/compositor-darwin-x64': 4.0.194
+ '@remotion/compositor-linux-arm64-gnu': 4.0.194
+ '@remotion/compositor-linux-arm64-musl': 4.0.194
+ '@remotion/compositor-linux-x64-gnu': 4.0.194
+ '@remotion/compositor-linux-x64-musl': 4.0.194
+ '@remotion/compositor-win32-x64-msvc': 4.0.194
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@remotion/streaming@4.0.191': {}
+ '@remotion/streaming@4.0.194': {}
- '@remotion/studio-server@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/studio-server@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/parser': 7.24.1
- '@remotion/bundler': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/renderer': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/studio-shared': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/bundler': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/renderer': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio-shared': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
memfs: 3.4.3
open: 8.4.2
recast: 0.23.6
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
semver: 7.5.3
source-map: 0.7.3
transitivePeerDependencies:
@@ -16238,22 +16590,22 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@remotion/studio-shared@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/studio-shared@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
transitivePeerDependencies:
- react
- react-dom
- '@remotion/studio@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@remotion/studio@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@remotion/media-utils': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/player': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/renderer': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@remotion/studio-shared': 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/media-utils': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/player': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/renderer': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@remotion/studio-shared': 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
memfs: 3.4.3
open: 8.4.2
- remotion: 4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ remotion: 4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
semver: 7.5.3
source-map: 0.7.3
transitivePeerDependencies:
@@ -16286,8 +16638,6 @@ snapshots:
'@noble/hashes': 1.4.0
'@scure/base': 1.1.7
- '@sec-ant/readable-stream@0.4.1': {}
-
'@selderee/plugin-htmlparser2@0.11.0':
dependencies:
domhandler: 5.0.3
@@ -16315,8 +16665,6 @@ snapshots:
'@sinclair/typebox@0.27.8': {}
- '@sindresorhus/merge-streams@4.0.0': {}
-
'@snyk/github-codeowners@1.1.0':
dependencies:
commander: 4.1.1
@@ -16325,14 +16673,14 @@ snapshots:
'@socket.io/component-emitter@3.1.2': {}
- '@stripe/react-stripe-js@2.7.3(@stripe/stripe-js@4.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@stripe/react-stripe-js@2.7.3(@stripe/stripe-js@4.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@stripe/stripe-js': 4.1.0
+ '@stripe/stripe-js': 4.2.0
prop-types: 15.8.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@stripe/stripe-js@4.1.0': {}
+ '@stripe/stripe-js@4.2.0': {}
'@stylistic/eslint-plugin-js@2.6.1(eslint@9.8.0)':
dependencies:
@@ -16350,10 +16698,10 @@ snapshots:
estraverse: 5.3.0
picomatch: 4.0.2
- '@stylistic/eslint-plugin-plus@2.6.1(eslint@9.8.0)(typescript@5.5.4)':
+ '@stylistic/eslint-plugin-plus@2.6.1(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@types/eslint': 9.6.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
@@ -16363,18 +16711,28 @@ snapshots:
dependencies:
'@stylistic/eslint-plugin-js': 2.6.1(eslint@9.8.0)
'@types/eslint': 9.6.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.5.4)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
- typescript
- '@stylistic/eslint-plugin@2.6.1(eslint@9.8.0)(typescript@5.5.4)':
+ '@stylistic/eslint-plugin-ts@2.6.1(eslint@9.8.0)(typescript@5.6.0-beta)':
+ dependencies:
+ '@stylistic/eslint-plugin-js': 2.6.1(eslint@9.8.0)
+ '@types/eslint': 9.6.0
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ eslint: 9.8.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@stylistic/eslint-plugin@2.6.1(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@stylistic/eslint-plugin-js': 2.6.1(eslint@9.8.0)
'@stylistic/eslint-plugin-jsx': 2.6.1(eslint@9.8.0)
- '@stylistic/eslint-plugin-plus': 2.6.1(eslint@9.8.0)(typescript@5.5.4)
- '@stylistic/eslint-plugin-ts': 2.6.1(eslint@9.8.0)(typescript@5.5.4)
+ '@stylistic/eslint-plugin-plus': 2.6.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@stylistic/eslint-plugin-ts': 2.6.1(eslint@9.8.0)(typescript@5.6.0-beta)
'@types/eslint': 9.6.0
eslint: 9.8.0
transitivePeerDependencies:
@@ -16388,24 +16746,24 @@ snapshots:
'@swc/counter': 0.1.3
tslib: 2.6.3
- '@t3-oss/env-core@0.11.0(typescript@5.5.4)(zod@3.23.8)':
+ '@t3-oss/env-core@0.11.0(typescript@5.6.0-beta)(zod@3.23.8)':
dependencies:
zod: 3.23.8
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
- '@t3-oss/env-nextjs@0.11.0(typescript@5.5.4)(zod@3.23.8)':
+ '@t3-oss/env-nextjs@0.11.0(typescript@5.6.0-beta)(zod@3.23.8)':
dependencies:
- '@t3-oss/env-core': 0.11.0(typescript@5.5.4)(zod@3.23.8)
+ '@t3-oss/env-core': 0.11.0(typescript@5.6.0-beta)(zod@3.23.8)
zod: 3.23.8
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
'@tailwindcss/cli@0.1.2':
dependencies:
- autoprefixer: 10.4.20(postcss@8.4.40)
- postcss: 8.4.40
- tailwindcss: 2.2.19(autoprefixer@10.4.20(postcss@8.4.40))(postcss@8.4.40)
+ autoprefixer: 10.4.20(postcss@8.4.41)
+ postcss: 8.4.41
+ tailwindcss: 2.2.19(autoprefixer@10.4.20(postcss@8.4.41))(postcss@8.4.41)
transitivePeerDependencies:
- ts-node
@@ -16421,9 +16779,9 @@ snapshots:
'@tailwindcss/oxide': 0.0.0-development.1
tailwindcss: 0.0.0-development.1
- '@tanstack/eslint-plugin-query@5.51.15(eslint@9.8.0)(typescript@5.5.4)':
+ '@tanstack/eslint-plugin-query@5.51.15(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
@@ -16433,19 +16791,19 @@ snapshots:
'@tanstack/query-devtools@5.51.16': {}
- '@tanstack/react-query-devtools@5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-query-devtools@5.51.23(@tanstack/react-query@5.51.23(react@18.3.1))(react@18.3.1)':
dependencies:
'@tanstack/query-devtools': 5.51.16
- '@tanstack/react-query': 5.51.21(react@18.3.1)
+ '@tanstack/react-query': 5.51.23(react@18.3.1)
react: 18.3.1
- '@tanstack/react-query-next-experimental@5.51.21(@tanstack/react-query@5.51.21(react@18.3.1))(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-query-next-experimental@5.51.23(@tanstack/react-query@5.51.23(react@18.3.1))(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
- '@tanstack/react-query': 5.51.21(react@18.3.1)
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@tanstack/react-query': 5.51.23(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
- '@tanstack/react-query@5.51.21(react@18.3.1)':
+ '@tanstack/react-query@5.51.23(react@18.3.1)':
dependencies:
'@tanstack/query-core': 5.51.21
react: 18.3.1
@@ -16530,9 +16888,9 @@ snapshots:
dependencies:
'@trpc/server': 11.0.0-rc.477
- '@trpc/react-query@11.0.0-rc.477(@tanstack/react-query@5.51.21(react@18.3.1))(@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477))(@trpc/server@11.0.0-rc.477)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@trpc/react-query@11.0.0-rc.477(@tanstack/react-query@5.51.23(react@18.3.1))(@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477))(@trpc/server@11.0.0-rc.477)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@tanstack/react-query': 5.51.21(react@18.3.1)
+ '@tanstack/react-query': 5.51.23(react@18.3.1)
'@trpc/client': 11.0.0-rc.477(@trpc/server@11.0.0-rc.477)
'@trpc/server': 11.0.0-rc.477
react: 18.3.1
@@ -16747,7 +17105,7 @@ snapshots:
'@types/yargs-parser@21.0.3': {}
- '@types/yargs@17.0.32':
+ '@types/yargs@17.0.33':
dependencies:
'@types/yargs-parser': 21.0.3
@@ -16758,13 +17116,13 @@ snapshots:
'@types/yoga-layout@1.9.2': {}
- '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.8.0)(typescript@5.6.0-beta))(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 6.21.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/parser': 6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)
'@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/type-utils': 6.21.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 6.21.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/type-utils': 6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/utils': 6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.6
eslint: 9.8.0
@@ -16772,9 +17130,9 @@ snapshots:
ignore: 5.3.1
natural-compare: 1.4.0
semver: 7.6.3
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -16796,42 +17154,42 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.6.0-beta))(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.0.0
+ '@typescript-eslint/parser': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/visitor-keys': 8.0.1
eslint: 9.8.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/experimental-utils@5.62.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/experimental-utils@5.62.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 5.62.0(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/parser@6.21.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.0-beta)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.3.6
eslint: 9.8.0
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -16848,16 +17206,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.0.0
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.6.0-beta)
+ '@typescript-eslint/visitor-keys': 8.0.1
debug: 4.3.6
eslint: 9.8.0
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -16881,25 +17239,25 @@ snapshots:
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/visitor-keys': 7.18.0
- '@typescript-eslint/scope-manager@8.0.0':
- dependencies:
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/visitor-keys': 8.0.0
-
'@typescript-eslint/scope-manager@8.0.0-alpha.30':
dependencies:
'@typescript-eslint/types': 8.0.0-alpha.30
'@typescript-eslint/visitor-keys': 8.0.0-alpha.30
- '@typescript-eslint/type-utils@6.21.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/scope-manager@8.0.1':
dependencies:
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4)
- '@typescript-eslint/utils': 6.21.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/visitor-keys': 8.0.1
+
+ '@typescript-eslint/type-utils@6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.0-beta)
+ '@typescript-eslint/utils': 6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)
debug: 4.3.6
eslint: 9.8.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -16915,14 +17273,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.0.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.6.0-beta)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
debug: 4.3.6
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- eslint
- supports-color
@@ -16935,11 +17293,11 @@ snapshots:
'@typescript-eslint/types@7.18.0': {}
- '@typescript-eslint/types@8.0.0': {}
-
'@typescript-eslint/types@8.0.0-alpha.30': {}
- '@typescript-eslint/typescript-estree@5.19.0(typescript@5.5.4)':
+ '@typescript-eslint/types@8.0.1': {}
+
+ '@typescript-eslint/typescript-estree@5.19.0(typescript@5.6.0-beta)':
dependencies:
'@typescript-eslint/types': 5.19.0
'@typescript-eslint/visitor-keys': 5.19.0
@@ -16947,13 +17305,13 @@ snapshots:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.3
- tsutils: 3.21.0(typescript@5.5.4)
+ tsutils: 3.21.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.0-beta)':
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
@@ -16961,13 +17319,13 @@ snapshots:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.3
- tsutils: 3.21.0(typescript@5.5.4)
+ tsutils: 3.21.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@6.21.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.0-beta)':
dependencies:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
@@ -16976,9 +17334,9 @@ snapshots:
is-glob: 4.0.3
minimatch: 9.0.3
semver: 7.6.3
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -16997,22 +17355,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.0.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.0-beta)':
dependencies:
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/visitor-keys': 8.0.0
+ '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/visitor-keys': 7.18.0
debug: 4.3.6
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
- ts-api-utils: 1.3.0(typescript@5.5.4)
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.6.0-beta)':
dependencies:
'@typescript-eslint/types': 8.0.0-alpha.30
'@typescript-eslint/visitor-keys': 8.0.0-alpha.30
@@ -17021,18 +17379,48 @@ snapshots:
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
+ optionalDependencies:
+ typescript: 5.6.0-beta
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@8.0.1(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/visitor-keys': 8.0.1
+ debug: 4.3.6
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.6.3
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.19.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.0.1(typescript@5.6.0-beta)':
+ dependencies:
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/visitor-keys': 8.0.1
+ debug: 4.3.6
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.6.3
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
+ optionalDependencies:
+ typescript: 5.6.0-beta
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@5.19.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@types/json-schema': 7.0.15
'@typescript-eslint/scope-manager': 5.19.0
'@typescript-eslint/types': 5.19.0
- '@typescript-eslint/typescript-estree': 5.19.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 5.19.0(typescript@5.6.0-beta)
eslint: 9.8.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0(eslint@9.8.0)
@@ -17040,14 +17428,14 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/utils@5.62.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@5.62.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.0-beta)
eslint: 9.8.0
eslint-scope: 5.1.1
semver: 7.6.3
@@ -17055,14 +17443,14 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/utils@6.21.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@6.21.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.0-beta)
eslint: 9.8.0
semver: 7.6.3
transitivePeerDependencies:
@@ -17080,23 +17468,45 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/utils@8.0.0(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@7.18.0(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 7.18.0
+ '@typescript-eslint/types': 7.18.0
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.0-beta)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/utils@8.0.0-alpha.30(eslint@9.8.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.0.0-alpha.30(eslint@9.8.0)(typescript@5.6.0-beta)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
'@typescript-eslint/scope-manager': 8.0.0-alpha.30
'@typescript-eslint/types': 8.0.0-alpha.30
- '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.6.0-beta)
+ eslint: 9.8.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/utils@8.0.1(eslint@9.8.0)(typescript@5.5.4)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4)
+ eslint: 9.8.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/utils@8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.6.0-beta)
eslint: 9.8.0
transitivePeerDependencies:
- supports-color
@@ -17122,14 +17532,14 @@ snapshots:
'@typescript-eslint/types': 7.18.0
eslint-visitor-keys: 3.4.3
- '@typescript-eslint/visitor-keys@8.0.0':
+ '@typescript-eslint/visitor-keys@8.0.0-alpha.30':
dependencies:
- '@typescript-eslint/types': 8.0.0
+ '@typescript-eslint/types': 8.0.0-alpha.30
eslint-visitor-keys: 3.4.3
- '@typescript-eslint/visitor-keys@8.0.0-alpha.30':
+ '@typescript-eslint/visitor-keys@8.0.1':
dependencies:
- '@typescript-eslint/types': 8.0.0-alpha.30
+ '@typescript-eslint/types': 8.0.1
eslint-visitor-keys: 3.4.3
'@udecode/plate-autoformat@36.0.0(@udecode/plate-common@36.3.4(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.25.0-rc-8269d55d-20240802)(slate-history@0.100.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.107.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.100.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.107.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)':
@@ -17212,9 +17622,9 @@ snapshots:
'@udecode/utils': 31.0.0
clsx: 1.2.1
is-hotkey: 0.2.0
- jotai: 2.9.1(@types/react@18.3.3)(react@18.3.1)
- jotai-optics: 0.3.2(jotai@2.9.1(@types/react@18.3.3)(react@18.3.1))(optics-ts@2.4.1)
- jotai-x: 1.2.4(@types/react@18.3.3)(jotai@2.9.1(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
+ jotai: 2.9.2(@types/react@18.3.3)(react@18.3.1)
+ jotai-optics: 0.3.2(jotai@2.9.2(@types/react@18.3.3)(react@18.3.1))(optics-ts@2.4.1)
+ jotai-x: 1.2.4(@types/react@18.3.3)(jotai@2.9.2(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
nanoid: 3.3.7
optics-ts: 2.4.1
@@ -17471,16 +17881,16 @@ snapshots:
'@uploadthing/mime-types@0.2.10': {}
- '@uploadthing/react@6.7.2(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.7))':
+ '@uploadthing/react@6.7.2(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.8))':
dependencies:
'@uploadthing/dropzone': 0.4.1(react@18.3.1)
'@uploadthing/shared': 6.7.8
file-selector: 0.6.0
react: 18.3.1
tailwind-merge: 2.4.0
- uploadthing: 6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.7)
+ uploadthing: 6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.8)
optionalDependencies:
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
transitivePeerDependencies:
- solid-js
- svelte
@@ -17492,27 +17902,27 @@ snapshots:
effect: 3.4.5
std-env: 3.7.0
- '@vercel/analytics@1.3.1(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@vercel/analytics@1.3.1(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
server-only: 0.0.1
optionalDependencies:
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
- '@vercel/flags@2.6.0(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@vercel/flags@2.6.0(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
jose: 5.2.1
optionalDependencies:
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(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)
- '@vercel/speed-insights@1.0.12(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@vercel/speed-insights@1.0.12(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
optionalDependencies:
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
- '@vercel/toolbar@0.1.15(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@vercel/toolbar@0.1.15(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
'@tinyhttp/app': 1.3.0
chokidar: 3.6.0
@@ -17521,7 +17931,7 @@ snapshots:
get-port: 5.1.1
strip-ansi: 6.0.1
optionalDependencies:
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
'@webassemblyjs/ast@1.12.1':
@@ -17840,14 +18250,14 @@ snapshots:
automutate@0.9.0: {}
- autoprefixer@10.4.20(postcss@8.4.40):
+ autoprefixer@10.4.20(postcss@8.4.41):
dependencies:
browserslist: 4.23.3
- caniuse-lite: 1.0.30001647
+ caniuse-lite: 1.0.30001651
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.1
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-value-parser: 4.2.0
available-typed-arrays@1.0.7:
@@ -17969,8 +18379,8 @@ snapshots:
browserslist@4.23.3:
dependencies:
- caniuse-lite: 1.0.30001647
- electron-to-chromium: 1.5.4
+ caniuse-lite: 1.0.30001651
+ electron-to-chromium: 1.5.5
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
@@ -18036,7 +18446,7 @@ snapshots:
camelcase@6.3.0: {}
- caniuse-lite@1.0.30001647: {}
+ caniuse-lite@1.0.30001651: {}
ccount@2.0.1: {}
@@ -18361,14 +18771,14 @@ snapshots:
path-type: 4.0.0
yaml: 1.10.2
- cosmiconfig@9.0.0(typescript@5.5.4):
+ cosmiconfig@9.0.0(typescript@5.6.0-beta):
dependencies:
env-paths: 2.2.1
import-fresh: 3.3.0
js-yaml: 4.1.0
parse-json: 5.2.0
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
crc-32@1.2.2: {}
@@ -18394,58 +18804,58 @@ snapshots:
crypto-random-string@2.0.0: {}
- cspell-config-lib@8.13.1:
+ cspell-config-lib@8.13.2:
dependencies:
- '@cspell/cspell-types': 8.13.1
+ '@cspell/cspell-types': 8.13.2
comment-json: 4.2.4
yaml: 2.5.0
- cspell-dictionary@8.13.1:
+ cspell-dictionary@8.13.2:
dependencies:
- '@cspell/cspell-pipe': 8.13.1
- '@cspell/cspell-types': 8.13.1
- cspell-trie-lib: 8.13.1
+ '@cspell/cspell-pipe': 8.13.2
+ '@cspell/cspell-types': 8.13.2
+ cspell-trie-lib: 8.13.2
fast-equals: 5.0.1
- cspell-gitignore@8.13.1:
+ cspell-gitignore@8.13.2:
dependencies:
- '@cspell/url': 8.13.1
- cspell-glob: 8.13.1
- cspell-io: 8.13.1
+ '@cspell/url': 8.13.2
+ cspell-glob: 8.13.2
+ cspell-io: 8.13.2
find-up-simple: 1.0.0
- cspell-glob@8.13.1:
+ cspell-glob@8.13.2:
dependencies:
- '@cspell/url': 8.13.1
+ '@cspell/url': 8.13.2
micromatch: 4.0.7
- cspell-grammar@8.13.1:
+ cspell-grammar@8.13.2:
dependencies:
- '@cspell/cspell-pipe': 8.13.1
- '@cspell/cspell-types': 8.13.1
+ '@cspell/cspell-pipe': 8.13.2
+ '@cspell/cspell-types': 8.13.2
- cspell-io@8.13.1:
+ cspell-io@8.13.2:
dependencies:
- '@cspell/cspell-service-bus': 8.13.1
- '@cspell/url': 8.13.1
+ '@cspell/cspell-service-bus': 8.13.2
+ '@cspell/url': 8.13.2
- cspell-lib@8.13.1:
+ cspell-lib@8.13.2:
dependencies:
- '@cspell/cspell-bundled-dicts': 8.13.1
- '@cspell/cspell-pipe': 8.13.1
- '@cspell/cspell-resolver': 8.13.1
- '@cspell/cspell-types': 8.13.1
- '@cspell/dynamic-import': 8.13.1
- '@cspell/strong-weak-map': 8.13.1
- '@cspell/url': 8.13.1
+ '@cspell/cspell-bundled-dicts': 8.13.2
+ '@cspell/cspell-pipe': 8.13.2
+ '@cspell/cspell-resolver': 8.13.2
+ '@cspell/cspell-types': 8.13.2
+ '@cspell/dynamic-import': 8.13.2
+ '@cspell/strong-weak-map': 8.13.2
+ '@cspell/url': 8.13.2
clear-module: 4.1.2
comment-json: 4.2.4
- cspell-config-lib: 8.13.1
- cspell-dictionary: 8.13.1
- cspell-glob: 8.13.1
- cspell-grammar: 8.13.1
- cspell-io: 8.13.1
- cspell-trie-lib: 8.13.1
+ cspell-config-lib: 8.13.2
+ cspell-dictionary: 8.13.2
+ cspell-glob: 8.13.2
+ cspell-grammar: 8.13.2
+ cspell-io: 8.13.2
+ cspell-trie-lib: 8.13.2
env-paths: 3.0.0
fast-equals: 5.0.1
gensequence: 7.0.0
@@ -18455,27 +18865,27 @@ snapshots:
vscode-uri: 3.0.8
xdg-basedir: 5.1.0
- cspell-trie-lib@8.13.1:
+ cspell-trie-lib@8.13.2:
dependencies:
- '@cspell/cspell-pipe': 8.13.1
- '@cspell/cspell-types': 8.13.1
+ '@cspell/cspell-pipe': 8.13.2
+ '@cspell/cspell-types': 8.13.2
gensequence: 7.0.0
- cspell@8.13.1:
+ cspell@8.13.2:
dependencies:
- '@cspell/cspell-json-reporter': 8.13.1
- '@cspell/cspell-pipe': 8.13.1
- '@cspell/cspell-types': 8.13.1
- '@cspell/dynamic-import': 8.13.1
- '@cspell/url': 8.13.1
+ '@cspell/cspell-json-reporter': 8.13.2
+ '@cspell/cspell-pipe': 8.13.2
+ '@cspell/cspell-types': 8.13.2
+ '@cspell/dynamic-import': 8.13.2
+ '@cspell/url': 8.13.2
chalk: 5.3.0
chalk-template: 1.1.0
commander: 12.1.0
- cspell-dictionary: 8.13.1
- cspell-gitignore: 8.13.1
- cspell-glob: 8.13.1
- cspell-io: 8.13.1
- cspell-lib: 8.13.1
+ cspell-dictionary: 8.13.2
+ cspell-gitignore: 8.13.2
+ cspell-glob: 8.13.2
+ cspell-io: 8.13.2
+ cspell-lib: 8.13.2
fast-glob: 3.3.2
fast-json-stable-stringify: 2.1.0
file-entry-cache: 9.0.0
@@ -18489,13 +18899,13 @@ snapshots:
css-loader@5.2.7(webpack@5.83.1(esbuild@0.18.6)):
dependencies:
- icss-utils: 5.1.0(postcss@8.4.40)
+ icss-utils: 5.1.0(postcss@8.4.41)
loader-utils: 2.0.4
- postcss: 8.4.40
- postcss-modules-extract-imports: 3.1.0(postcss@8.4.40)
- postcss-modules-local-by-default: 4.0.5(postcss@8.4.40)
- postcss-modules-scope: 3.2.0(postcss@8.4.40)
- postcss-modules-values: 4.0.0(postcss@8.4.40)
+ postcss: 8.4.41
+ postcss-modules-extract-imports: 3.1.0(postcss@8.4.41)
+ postcss-modules-local-by-default: 4.0.5(postcss@8.4.41)
+ postcss-modules-scope: 3.2.0(postcss@8.4.41)
+ postcss-modules-values: 4.0.0(postcss@8.4.41)
postcss-value-parser: 4.2.0
schema-utils: 3.3.0
semver: 7.6.3
@@ -18826,7 +19236,7 @@ snapshots:
dot-case@3.0.4:
dependencies:
no-case: 3.0.4
- tslib: 2.6.3
+ tslib: 2.4.1
dot-prop@5.3.0:
dependencies:
@@ -18845,7 +19255,7 @@ snapshots:
dotenv@9.0.2: {}
- drizzle-kit@0.23.1:
+ drizzle-kit@0.23.2:
dependencies:
'@drizzle-team/brocli': 0.8.2
'@esbuild-kit/esm-loader': 2.6.5
@@ -18854,7 +19264,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.32.1(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1):
+ drizzle-orm@0.32.2(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1):
optionalDependencies:
'@libsql/client': 0.8.1
'@neondatabase/serverless': 0.9.4
@@ -18868,9 +19278,9 @@ snapshots:
postgres: 3.4.4
react: 18.3.1
- drizzle-zod@0.5.1(drizzle-orm@0.32.1(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(zod@3.23.8):
+ drizzle-zod@0.5.1(drizzle-orm@0.32.2(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(zod@3.23.8):
dependencies:
- drizzle-orm: 0.32.1(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1)
+ drizzle-orm: 0.32.2(@libsql/client@0.8.1)(@neondatabase/serverless@0.9.4)(@planetscale/database@1.18.0)(@types/better-sqlite3@7.6.11)(@types/pg@8.11.6)(@types/react@18.3.3)(better-sqlite3@11.1.2)(mysql2@3.11.0)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1)
zod: 3.23.8
duplexer@0.1.2: {}
@@ -18894,7 +19304,7 @@ snapshots:
effect@3.4.5: {}
- electron-to-chromium@1.5.4: {}
+ electron-to-chromium@1.5.5: {}
embla-carousel-react@8.1.8(react@18.3.1):
dependencies:
@@ -19218,31 +19628,32 @@ snapshots:
'@esbuild/win32-ia32': 0.20.2
'@esbuild/win32-x64': 0.20.2
- esbuild@0.21.5:
+ esbuild@0.23.0:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
+ '@esbuild/aix-ppc64': 0.23.0
+ '@esbuild/android-arm': 0.23.0
+ '@esbuild/android-arm64': 0.23.0
+ '@esbuild/android-x64': 0.23.0
+ '@esbuild/darwin-arm64': 0.23.0
+ '@esbuild/darwin-x64': 0.23.0
+ '@esbuild/freebsd-arm64': 0.23.0
+ '@esbuild/freebsd-x64': 0.23.0
+ '@esbuild/linux-arm': 0.23.0
+ '@esbuild/linux-arm64': 0.23.0
+ '@esbuild/linux-ia32': 0.23.0
+ '@esbuild/linux-loong64': 0.23.0
+ '@esbuild/linux-mips64el': 0.23.0
+ '@esbuild/linux-ppc64': 0.23.0
+ '@esbuild/linux-riscv64': 0.23.0
+ '@esbuild/linux-s390x': 0.23.0
+ '@esbuild/linux-x64': 0.23.0
+ '@esbuild/netbsd-x64': 0.23.0
+ '@esbuild/openbsd-arm64': 0.23.0
+ '@esbuild/openbsd-x64': 0.23.0
+ '@esbuild/sunos-x64': 0.23.0
+ '@esbuild/win32-arm64': 0.23.0
+ '@esbuild/win32-ia32': 0.23.0
+ '@esbuild/win32-x64': 0.23.0
escalade@3.1.2: {}
@@ -19318,9 +19729,9 @@ snapshots:
eslint: 9.8.0
ignore: 5.3.1
- eslint-plugin-import-x@3.1.0(eslint@9.8.0)(typescript@5.5.4):
+ eslint-plugin-import-x@3.1.0(eslint@9.8.0)(typescript@5.6.0-beta):
dependencies:
- '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.6.0-beta)
debug: 4.3.6
doctrine: 3.0.0
eslint: 9.8.0
@@ -19395,7 +19806,7 @@ snapshots:
- bluebird
- supports-color
- eslint-plugin-n@17.10.1(eslint@9.8.0):
+ eslint-plugin-n@17.10.2(eslint@9.8.0):
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0)
enhanced-resolve: 5.17.1
@@ -19411,10 +19822,10 @@ snapshots:
eslint-plugin-no-relative-import-paths@1.5.5: {}
- eslint-plugin-perfectionist@3.1.1(eslint@9.8.0)(typescript@5.5.4):
+ eslint-plugin-perfectionist@3.1.3(eslint@9.8.0)(typescript@5.6.0-beta):
dependencies:
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
minimatch: 10.0.1
natural-compare-lite: 1.4.0
@@ -19422,11 +19833,11 @@ snapshots:
- supports-color
- typescript
- eslint-plugin-promise@7.0.0(eslint@9.8.0):
+ eslint-plugin-promise@7.1.0(eslint@9.8.0):
dependencies:
eslint: 9.8.0
- eslint-plugin-putout@22.10.0(eslint@9.8.0)(putout@36.0.3(typescript@5.5.4)):
+ eslint-plugin-putout@22.10.0(eslint@9.8.0)(putout@36.0.3(typescript@5.6.0-beta)):
dependencies:
'@babel/core': 8.0.0-alpha.12
'@babel/eslint-parser': 8.0.0-alpha.12(@babel/core@8.0.0-alpha.12)(eslint@9.8.0)
@@ -19440,10 +19851,10 @@ snapshots:
'@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
align-spaces: 1.0.4
eslint: 9.8.0
- eslint-plugin-n: 17.10.1(eslint@9.8.0)
+ eslint-plugin-n: 17.10.2(eslint@9.8.0)
eslint-plugin-react: 7.35.0(eslint@9.8.0)
parse-import-specifiers: 1.0.3
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
synckit: 0.9.1
try-catch: 3.0.1
try-to-catch: 3.0.1
@@ -19452,62 +19863,62 @@ snapshots:
- '@babel/preset-typescript'
- supports-color
- eslint-plugin-react-debug@1.8.2(eslint@9.8.0)(typescript@5.5.4):
- dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/core': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/jsx': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ eslint-plugin-react-debug@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta):
+ dependencies:
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/core': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/jsx': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- remeda: 2.7.0
+ remeda: 2.10.1
string-ts: 2.2.0
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-dom@1.8.2(eslint@9.8.0)(typescript@5.5.4):
- dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/core': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/jsx': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/var': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ eslint-plugin-react-dom@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta):
+ dependencies:
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/core': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/jsx': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/var': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- remeda: 2.7.0
+ remeda: 2.10.1
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-hooks-extra@1.8.2(eslint@9.8.0)(typescript@5.5.4):
- dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/core': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/jsx': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/var': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ eslint-plugin-react-hooks-extra@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta):
+ dependencies:
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/core': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/jsx': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/var': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- remeda: 2.7.0
+ remeda: 2.10.1
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -19519,22 +19930,22 @@ snapshots:
dependencies:
eslint: 9.8.0
- eslint-plugin-react-naming-convention@1.8.2(eslint@9.8.0)(typescript@5.5.4):
- dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/core': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/jsx': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ eslint-plugin-react-naming-convention@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta):
+ dependencies:
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/core': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/jsx': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- remeda: 2.7.0
+ remeda: 2.10.1
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -19542,24 +19953,24 @@ snapshots:
dependencies:
eslint: 9.8.0
- eslint-plugin-react-x@1.8.2(eslint@9.8.0)(typescript@5.5.4):
- dependencies:
- '@eslint-react/ast': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/core': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/jsx': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/shared': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/tools': 1.8.2
- '@eslint-react/types': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@eslint-react/var': 1.8.2(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.0.0
- '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/types': 8.0.0
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ eslint-plugin-react-x@1.9.0(eslint@9.8.0)(typescript@5.6.0-beta):
+ dependencies:
+ '@eslint-react/ast': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/core': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/jsx': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/shared': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/tools': 1.9.0
+ '@eslint-react/types': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@eslint-react/var': 1.9.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/scope-manager': 8.0.1
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/types': 8.0.1
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- is-immutable-type: 4.0.0(eslint@9.8.0)(typescript@5.5.4)
- remeda: 2.7.0
+ is-immutable-type: 5.0.0(eslint@9.8.0)(typescript@5.6.0-beta)
+ remeda: 2.10.1
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -19604,10 +20015,10 @@ snapshots:
string.prototype.matchall: 4.0.11
string.prototype.repeat: 1.0.0
- eslint-plugin-readable-tailwind@1.5.3(eslint@9.8.0)(tailwindcss@3.4.7):
+ eslint-plugin-readable-tailwind@1.5.3(eslint@9.8.0)(tailwindcss@3.4.8):
dependencies:
eslint: 9.8.0
- tailwindcss: 3.4.7
+ tailwindcss: 3.4.8
eslint-plugin-regexp@2.6.0(eslint@9.8.0):
dependencies:
@@ -19615,7 +20026,7 @@ snapshots:
'@eslint-community/regexpp': 4.11.0
comment-parser: 1.4.1
eslint: 9.8.0
- jsdoc-type-pratt-parser: 4.0.0
+ jsdoc-type-pratt-parser: 4.1.0
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
@@ -19629,9 +20040,9 @@ snapshots:
eslint: 9.8.0
minimatch: 9.0.5
- eslint-plugin-sort@3.0.2(eslint@9.8.0)(typescript@5.5.4):
+ eslint-plugin-sort@3.0.2(eslint@9.8.0)(typescript@5.6.0-beta):
dependencies:
- '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
isomorphic-resolve: 1.0.0
natural-compare: 1.4.0
@@ -19639,11 +20050,11 @@ snapshots:
- supports-color
- typescript
- eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.7):
+ eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.8):
dependencies:
fast-glob: 3.3.2
- postcss: 8.4.40
- tailwindcss: 3.4.7
+ postcss: 8.4.41
+ tailwindcss: 3.4.8
eslint-plugin-unicorn@55.0.0(eslint@9.8.0):
dependencies:
@@ -19840,21 +20251,6 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
- execa@9.3.0:
- dependencies:
- '@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
- figures: 6.1.0
- get-stream: 9.0.1
- human-signals: 7.0.0
- is-plain-obj: 4.1.0
- is-stream: 4.0.1
- npm-run-path: 5.3.0
- pretty-ms: 9.1.0
- signal-exit: 4.1.0
- strip-final-newline: 4.0.0
- yoctocolors: 2.1.1
-
expand-template@2.0.3: {}
expect@29.7.0:
@@ -19919,7 +20315,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- fast-check@3.20.0:
+ fast-check@3.21.0:
dependencies:
pure-rand: 6.1.0
@@ -19983,10 +20379,6 @@ snapshots:
escape-string-regexp: 5.0.0
is-unicode-supported: 1.3.0
- figures@6.1.0:
- dependencies:
- is-unicode-supported: 2.0.0
-
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
@@ -20073,7 +20465,7 @@ snapshots:
flatted@3.3.1: {}
- flowbite-react@0.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.7):
+ flowbite-react@0.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.8):
dependencies:
'@floating-ui/core': 1.6.2
'@floating-ui/react': 0.26.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -20084,7 +20476,7 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
react-icons: 5.2.1(react@18.3.1)
tailwind-merge: 2.3.0
- tailwindcss: 3.4.7
+ tailwindcss: 3.4.8
flowbite@2.3.0:
dependencies:
@@ -20099,7 +20491,7 @@ snapshots:
dependencies:
is-callable: 1.2.7
- foreground-child@3.2.1:
+ foreground-child@3.3.0:
dependencies:
cross-spawn: 7.0.3
signal-exit: 4.1.0
@@ -20204,11 +20596,6 @@ snapshots:
get-stream@8.0.1: {}
- get-stream@9.0.1:
- dependencies:
- '@sec-ant/readable-stream': 0.4.1
- is-stream: 4.0.1
-
get-symbol-description@1.0.2:
dependencies:
call-bind: 1.0.7
@@ -20244,7 +20631,7 @@ snapshots:
glob@10.3.10:
dependencies:
- foreground-child: 3.2.1
+ foreground-child: 3.3.0
jackspeak: 2.3.6
minimatch: 9.0.5
minipass: 7.1.2
@@ -20252,7 +20639,7 @@ snapshots:
glob@10.4.5:
dependencies:
- foreground-child: 3.2.1
+ foreground-child: 3.3.0
jackspeak: 3.4.3
minimatch: 9.0.5
minipass: 7.1.2
@@ -20261,7 +20648,7 @@ snapshots:
glob@11.0.0:
dependencies:
- foreground-child: 3.2.1
+ foreground-child: 3.3.0
jackspeak: 4.0.1
minimatch: 10.0.1
minipass: 7.1.2
@@ -20317,17 +20704,17 @@ snapshots:
globjoin@0.1.4: {}
- goldstein@5.17.0(typescript@5.5.4):
+ goldstein@5.17.0(typescript@5.6.0-beta):
dependencies:
- '@putout/plugin-declare': 4.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-logical-expressions': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-try-catch': 3.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/plugin-declare': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-logical-expressions': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-try-catch': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/printer': 9.11.0
acorn: 8.12.1
acorn-typescript: 1.4.13(acorn@8.12.1)
estree-to-babel: 9.1.0
estree-util-attach-comments: 3.0.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
transitivePeerDependencies:
- supports-color
@@ -20453,7 +20840,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.5.3: {}
+ hono@4.5.4: {}
hosted-git-info@2.8.9: {}
@@ -20520,8 +20907,6 @@ snapshots:
human-signals@5.0.0: {}
- human-signals@7.0.0: {}
-
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
@@ -20530,9 +20915,9 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
- icss-utils@5.1.0(postcss@8.4.40):
+ icss-utils@5.1.0(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
ieee754@1.2.1: {}
@@ -20576,6 +20961,11 @@ snapshots:
inline-style-parser@0.2.3: {}
+ input-otp@1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
inquirer@8.2.6:
dependencies:
ansi-escapes: 4.3.2
@@ -20731,13 +21121,13 @@ snapshots:
is-hotkey@0.2.0: {}
- is-immutable-type@4.0.0(eslint@9.8.0)(typescript@5.5.4):
+ is-immutable-type@5.0.0(eslint@9.8.0)(typescript@5.6.0-beta):
dependencies:
- '@typescript-eslint/type-utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
eslint: 9.8.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
- ts-declaration-location: 1.0.4(typescript@5.5.4)
- typescript: 5.5.4
+ ts-api-utils: 1.3.0(typescript@5.6.0-beta)
+ ts-declaration-location: 1.0.4(typescript@5.6.0-beta)
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- supports-color
@@ -20793,8 +21183,6 @@ snapshots:
is-stream@3.0.0: {}
- is-stream@4.0.1: {}
-
is-string@1.0.7:
dependencies:
has-tostringtag: 1.0.2
@@ -20817,8 +21205,6 @@ snapshots:
is-unicode-supported@1.3.0: {}
- is-unicode-supported@2.0.0: {}
-
is-utf8@0.2.1: {}
is-weakmap@2.0.2: {}
@@ -20940,19 +21326,19 @@ snapshots:
jose@5.6.3: {}
- jotai-optics@0.3.2(jotai@2.9.1(@types/react@18.3.3)(react@18.3.1))(optics-ts@2.4.1):
+ jotai-optics@0.3.2(jotai@2.9.2(@types/react@18.3.3)(react@18.3.1))(optics-ts@2.4.1):
dependencies:
- jotai: 2.9.1(@types/react@18.3.3)(react@18.3.1)
+ jotai: 2.9.2(@types/react@18.3.3)(react@18.3.1)
optics-ts: 2.4.1
- jotai-x@1.2.4(@types/react@18.3.3)(jotai@2.9.1(@types/react@18.3.3)(react@18.3.1))(react@18.3.1):
+ jotai-x@1.2.4(@types/react@18.3.3)(jotai@2.9.2(@types/react@18.3.3)(react@18.3.1))(react@18.3.1):
dependencies:
- jotai: 2.9.1(@types/react@18.3.3)(react@18.3.1)
+ jotai: 2.9.2(@types/react@18.3.3)(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.3
react: 18.3.1
- jotai@2.9.1(@types/react@18.3.3)(react@18.3.1):
+ jotai@2.9.2(@types/react@18.3.3)(react@18.3.1):
optionalDependencies:
'@types/react': 18.3.3
react: 18.3.1
@@ -20981,7 +21367,7 @@ snapshots:
dependencies:
argparse: 2.0.1
- jsdoc-type-pratt-parser@4.0.0: {}
+ jsdoc-type-pratt-parser@4.1.0: {}
jsesc@0.5.0: {}
@@ -21062,12 +21448,13 @@ snapshots:
kleur@4.1.5: {}
- knip@5.27.0(@types/node@22.1.0)(typescript@5.5.4):
+ knip@5.27.2(@types/node@22.1.0)(typescript@5.6.0-beta):
dependencies:
'@nodelib/fs.walk': 1.2.8
'@snyk/github-codeowners': 1.1.0
'@types/node': 22.1.0
easy-table: 1.2.0
+ enhanced-resolve: 5.17.1
fast-glob: 3.3.2
jiti: 1.21.6
js-yaml: 4.1.0
@@ -21075,11 +21462,10 @@ snapshots:
picocolors: 1.0.1
picomatch: 4.0.2
pretty-ms: 9.1.0
- resolve: 1.22.8
smol-toml: 1.3.0
strip-json-comments: 5.0.1
summary: 2.1.0
- typescript: 5.5.4
+ typescript: 5.6.0-beta
zod: 3.23.8
zod-validation-error: 3.3.1(zod@3.23.8)
@@ -21111,46 +21497,50 @@ snapshots:
'@libsql/linux-x64-musl': 0.3.19
'@libsql/win32-x64-msvc': 0.3.19
- lightningcss-darwin-arm64@1.25.1:
+ lightningcss-darwin-arm64@1.26.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.26.0:
optional: true
- lightningcss-darwin-x64@1.25.1:
+ lightningcss-freebsd-x64@1.26.0:
optional: true
- lightningcss-freebsd-x64@1.25.1:
+ lightningcss-linux-arm-gnueabihf@1.26.0:
optional: true
- lightningcss-linux-arm-gnueabihf@1.25.1:
+ lightningcss-linux-arm64-gnu@1.26.0:
optional: true
- lightningcss-linux-arm64-gnu@1.25.1:
+ lightningcss-linux-arm64-musl@1.26.0:
optional: true
- lightningcss-linux-arm64-musl@1.25.1:
+ lightningcss-linux-x64-gnu@1.26.0:
optional: true
- lightningcss-linux-x64-gnu@1.25.1:
+ lightningcss-linux-x64-musl@1.26.0:
optional: true
- lightningcss-linux-x64-musl@1.25.1:
+ lightningcss-win32-arm64-msvc@1.26.0:
optional: true
- lightningcss-win32-x64-msvc@1.25.1:
+ lightningcss-win32-x64-msvc@1.26.0:
optional: true
- lightningcss@1.25.1:
+ lightningcss@1.26.0:
dependencies:
detect-libc: 1.0.3
optionalDependencies:
- lightningcss-darwin-arm64: 1.25.1
- lightningcss-darwin-x64: 1.25.1
- lightningcss-freebsd-x64: 1.25.1
- lightningcss-linux-arm-gnueabihf: 1.25.1
- lightningcss-linux-arm64-gnu: 1.25.1
- lightningcss-linux-arm64-musl: 1.25.1
- lightningcss-linux-x64-gnu: 1.25.1
- lightningcss-linux-x64-musl: 1.25.1
- lightningcss-win32-x64-msvc: 1.25.1
+ lightningcss-darwin-arm64: 1.26.0
+ lightningcss-darwin-x64: 1.26.0
+ lightningcss-freebsd-x64: 1.26.0
+ lightningcss-linux-arm-gnueabihf: 1.26.0
+ lightningcss-linux-arm64-gnu: 1.26.0
+ lightningcss-linux-arm64-musl: 1.26.0
+ lightningcss-linux-x64-gnu: 1.26.0
+ lightningcss-linux-x64-musl: 1.26.0
+ lightningcss-win32-arm64-msvc: 1.26.0
+ lightningcss-win32-x64-msvc: 1.26.0
lilconfig@2.1.0: {}
@@ -21252,7 +21642,7 @@ snapshots:
lower-case@2.0.2:
dependencies:
- tslib: 2.6.3
+ tslib: 2.4.1
lowlight@1.20.0:
dependencies:
@@ -21279,9 +21669,9 @@ snapshots:
dependencies:
react: 18.3.1
- madrun@10.1.0(typescript@5.5.4):
+ madrun@10.1.0(typescript@5.6.0-beta):
dependencies:
- '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
all-object-keys: 2.2.0
enquirer: 2.4.1
find-up: 7.0.0
@@ -21289,7 +21679,7 @@ snapshots:
mapsome: 1.0.0
montag: 1.2.1
once: 1.4.0
- putout: 36.0.3(typescript@5.5.4)
+ putout: 36.0.3(typescript@5.6.0-beta)
try-catch: 3.0.1
try-to-catch: 3.0.1
yargs-parser: 21.1.1
@@ -21877,7 +22267,7 @@ snapshots:
'@rollup/pluginutils': 5.1.0
kleur: 4.1.5
undici: 6.19.5
- unplugin: 1.12.0
+ unplugin: 1.12.1
transitivePeerDependencies:
- rollup
- supports-color
@@ -22350,28 +22740,28 @@ snapshots:
nessy@4.0.0: {}
- next-auth@5.0.0-beta.20(@simplewebauthn/browser@10.0.0)(@simplewebauthn/server@10.0.1)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react@18.3.1):
+ next-auth@5.0.0-beta.20(@simplewebauthn/browser@10.0.0)(@simplewebauthn/server@10.0.1)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react@18.3.1):
dependencies:
'@auth/core': 0.34.2(@simplewebauthn/browser@10.0.0)(@simplewebauthn/server@10.0.1)(nodemailer@6.9.14)
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
optionalDependencies:
'@simplewebauthn/browser': 10.0.0
'@simplewebauthn/server': 10.0.1
nodemailer: 6.9.14
- next-intl@3.17.2(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1):
+ next-intl@3.17.2(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1):
dependencies:
'@formatjs/intl-localematcher': 0.2.32
negotiator: 0.6.3
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
use-intl: 3.17.2(react@18.3.1)
- next-superjson-plugin@0.6.3(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(superjson@2.2.1):
+ next-superjson-plugin@0.6.3(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(superjson@2.2.1):
dependencies:
hoist-non-react-statics: 3.3.2
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
superjson: 2.2.1
next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
@@ -22379,17 +22769,17 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 14.2.5
'@swc/helpers': 0.5.5
busboy: 1.6.0
- caniuse-lite: 1.0.30001647
+ caniuse-lite: 1.0.30001651
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- styled-jsx: 5.1.1(@babel/core@7.25.2)(react@18.3.1)
+ styled-jsx: 5.1.1(@babel/core@7.24.6)(react@18.3.1)
optionalDependencies:
'@next/swc-darwin-arm64': 14.2.5
'@next/swc-darwin-x64': 14.2.5
@@ -22404,9 +22794,9 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
- nextjs-google-analytics@2.3.3(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1):
+ nextjs-google-analytics@2.3.3(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1):
dependencies:
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
optionalDependencies:
fsevents: 2.3.3
@@ -22424,7 +22814,7 @@ snapshots:
no-case@3.0.4:
dependencies:
lower-case: 2.0.2
- tslib: 2.6.3
+ tslib: 2.4.1
node-abi@3.65.0:
dependencies:
@@ -22516,10 +22906,10 @@ snapshots:
dependencies:
boolbase: 1.0.0
- nuqs@1.17.6(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
+ nuqs@1.17.8(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
dependencies:
mitt: 3.0.1
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
nypm@0.3.9:
dependencies:
@@ -22911,9 +23301,9 @@ snapshots:
possible-typed-array-names@1.0.0: {}
- postcss-import@15.1.0(postcss@8.4.40):
+ postcss-import@15.1.0(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
@@ -22921,63 +23311,63 @@ snapshots:
postcss-js@3.0.3:
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.40
+ postcss: 8.4.41
- postcss-js@4.0.1(postcss@8.4.40):
+ postcss-js@4.0.1(postcss@8.4.41):
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.40
+ postcss: 8.4.41
- postcss-load-config@3.1.4(postcss@8.4.40):
+ postcss-load-config@3.1.4(postcss@8.4.41):
dependencies:
lilconfig: 2.1.0
yaml: 1.10.2
optionalDependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
- postcss-load-config@4.0.2(postcss@8.4.40):
+ postcss-load-config@4.0.2(postcss@8.4.41):
dependencies:
lilconfig: 3.1.2
yaml: 2.5.0
optionalDependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
- postcss-modules-extract-imports@3.1.0(postcss@8.4.40):
+ postcss-modules-extract-imports@3.1.0(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
- postcss-modules-local-by-default@4.0.5(postcss@8.4.40):
+ postcss-modules-local-by-default@4.0.5(postcss@8.4.41):
dependencies:
- icss-utils: 5.1.0(postcss@8.4.40)
- postcss: 8.4.40
+ icss-utils: 5.1.0(postcss@8.4.41)
+ postcss: 8.4.41
postcss-selector-parser: 6.1.1
postcss-value-parser: 4.2.0
- postcss-modules-scope@3.2.0(postcss@8.4.40):
+ postcss-modules-scope@3.2.0(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-selector-parser: 6.1.1
- postcss-modules-values@4.0.0(postcss@8.4.40):
+ postcss-modules-values@4.0.0(postcss@8.4.41):
dependencies:
- icss-utils: 5.1.0(postcss@8.4.40)
- postcss: 8.4.40
+ icss-utils: 5.1.0(postcss@8.4.41)
+ postcss: 8.4.41
- postcss-nested@5.0.6(postcss@8.4.40):
+ postcss-nested@5.0.6(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-selector-parser: 6.1.1
- postcss-nested@6.2.0(postcss@8.4.40):
+ postcss-nested@6.2.0(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-selector-parser: 6.1.1
postcss-resolve-nested-selector@0.1.4: {}
- postcss-safe-parser@7.0.0(postcss@8.4.40):
+ postcss-safe-parser@7.0.0(postcss@8.4.41):
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-selector-parser@6.1.1:
dependencies:
@@ -22994,7 +23384,7 @@ snapshots:
picocolors: 1.0.1
source-map-js: 1.2.0
- postcss@8.4.40:
+ postcss@8.4.41:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.1
@@ -23141,149 +23531,149 @@ snapshots:
dependencies:
commander: 8.3.0
glob: 7.2.3
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-selector-parser: 6.1.1
- putout@36.0.3(typescript@5.5.4):
+ putout@36.0.3(typescript@5.6.0-beta):
dependencies:
'@putout/babel': 2.8.0
'@putout/cli-cache': 3.1.0
- '@putout/cli-choose-formatter': 4.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/cli-choose-formatter': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/cli-keypress': 2.0.0
'@putout/cli-match': 2.2.0
'@putout/cli-ruler': 3.1.0
'@putout/cli-staged': 1.1.0
'@putout/cli-validate-args': 2.0.0
'@putout/compare': 14.5.0
- '@putout/engine-loader': 13.1.1(putout@36.0.3(typescript@5.5.4))
+ '@putout/engine-loader': 13.1.1(putout@36.0.3(typescript@5.6.0-beta))
'@putout/engine-parser': 10.8.0
- '@putout/engine-processor': 11.4.0(putout@36.0.3(typescript@5.5.4))
- '@putout/engine-reporter': 1.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/engine-runner': 21.1.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/engine-processor': 11.4.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/engine-reporter': 1.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/engine-runner': 21.1.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/eslint': 3.5.0
- '@putout/formatter-codeframe': 7.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-frame': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-json': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-json-lines': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-memory': 4.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-progress': 5.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-progress-bar': 4.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-stream': 5.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/formatter-time': 3.0.1(putout@36.0.3(typescript@5.5.4))
+ '@putout/formatter-codeframe': 7.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-dump': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-frame': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-json': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-json-lines': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-memory': 4.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-progress': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-progress-bar': 4.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-stream': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/formatter-time': 3.0.1(putout@36.0.3(typescript@5.6.0-beta))
'@putout/operate': 12.9.2
- '@putout/operator-add-args': 8.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/operator-declare': 9.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/operator-add-args': 8.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/operator-declare': 9.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/operator-filesystem': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/operator-ignore': 1.2.0
'@putout/operator-json': 2.2.0
- '@putout/operator-match-files': 3.5.0(putout@36.0.3(typescript@5.5.4))
- '@putout/operator-regexp': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/operator-rename-files': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-at': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-destructuring': 7.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-dot-notation': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-early-return': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-flat-map': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-optional-chaining': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-overrides': 1.3.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-starts-with': 1.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-apply-template-literals': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-browserlist': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-conditions': 4.4.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-apply-to-spread': 4.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-arguments-to-rest': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-array-copy-to-slice': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-assignment-to-arrow-function': 1.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-assignment-to-comparison': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-assignment-to-declaration': 1.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-concat-to-flat': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-const-to-let': 2.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-index-of-to-includes': 2.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-label-to-object': 1.0.2(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-object-assign-to-merge-spread': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-object-entries-to-array-entries': 3.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-optional-to-logical': 3.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-quotes-to-backticks': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-template-to-string': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-convert-to-arrow-function': 4.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-coverage': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-declare': 4.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-declare-before-reference': 4.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-declare-imports-first': 2.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-eslint': 8.13.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-extract-object-properties': 9.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-extract-sequence-expressions': 3.5.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-filesystem': 5.3.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-for-of': 6.1.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-generators': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-github': 12.3.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-gitignore': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-group-imports-by-source': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-logical-expressions': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-madrun': 18.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-math': 2.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-maybe': 2.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-merge-destructuring-properties': 9.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-merge-duplicate-functions': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-merge-duplicate-imports': 11.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-montag': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-new': 3.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-nodejs': 11.11.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-npmignore': 5.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-package-json': 7.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-promises': 15.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-putout': 20.10.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-putout-config': 5.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-regexp': 9.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-console': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-constant-conditions': 4.0.2(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-debugger': 7.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-duplicate-case': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-duplicate-keys': 5.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-empty': 12.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-iife': 4.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-nested-blocks': 6.3.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-quotes-from-import-assertions': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-unreachable-code': 1.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-unreferenced-variables': 4.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-unused-expressions': 9.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-unused-for-of-variables': 3.0.1(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-unused-private-fields': 2.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-unused-variables': 9.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-arguments': 8.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-array': 1.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-array-constructor': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-array-entries': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-assign': 1.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-constructor': 1.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-continue': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-escape': 6.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-functions': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-map': 1.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-operand': 2.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-replace': 1.0.4(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-return': 7.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-spread': 11.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-template-expressions': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-remove-useless-variables': 12.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-reuse-duplicate-init': 5.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-simplify-assignment': 3.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-simplify-boolean-return': 2.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-simplify-ternary': 7.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-sort-imports-by-specifiers': 1.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-split-assignment-expressions': 1.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-split-nested-destructuring': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-split-variable-declarations': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-tape': 14.2.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-try-catch': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-types': 4.1.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-typescript': 7.4.0(putout@36.0.3(typescript@5.5.4))
- '@putout/plugin-webpack': 3.0.0(putout@36.0.3(typescript@5.5.4))
- '@putout/processor-css': 9.0.0(putout@36.0.3(typescript@5.5.4))(typescript@5.5.4)
- '@putout/processor-filesystem': 4.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/operator-match-files': 3.5.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/operator-regexp': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/operator-rename-files': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-at': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-destructuring': 7.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-dot-notation': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-early-return': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-flat-map': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-optional-chaining': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-overrides': 1.3.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-starts-with': 1.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-apply-template-literals': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-browserlist': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-conditions': 4.4.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-apply-to-spread': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-arguments-to-rest': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-array-copy-to-slice': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-assignment-to-arrow-function': 1.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-assignment-to-comparison': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-assignment-to-declaration': 1.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-concat-to-flat': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-const-to-let': 2.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-index-of-to-includes': 2.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-label-to-object': 1.0.2(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-object-assign-to-merge-spread': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-object-entries-to-array-entries': 3.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-optional-to-logical': 3.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-quotes-to-backticks': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-template-to-string': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-convert-to-arrow-function': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-coverage': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-declare': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-declare-before-reference': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-declare-imports-first': 2.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-eslint': 8.13.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-extract-object-properties': 9.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-extract-sequence-expressions': 3.5.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-filesystem': 5.3.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-for-of': 6.1.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-generators': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-github': 12.3.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-gitignore': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-group-imports-by-source': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-logical-expressions': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-madrun': 18.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-math': 2.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-maybe': 2.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-merge-destructuring-properties': 9.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-merge-duplicate-functions': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-merge-duplicate-imports': 11.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-montag': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-new': 3.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-nodejs': 11.11.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-npmignore': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-package-json': 7.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-promises': 15.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-putout': 20.10.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-putout-config': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-regexp': 9.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-console': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-constant-conditions': 4.0.2(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-debugger': 7.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-duplicate-case': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-duplicate-keys': 5.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-empty': 12.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-iife': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-nested-blocks': 6.3.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-quotes-from-import-assertions': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-unreachable-code': 1.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-unreferenced-variables': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-unused-expressions': 9.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-unused-for-of-variables': 3.0.1(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-unused-private-fields': 2.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-unused-variables': 9.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-arguments': 8.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-array': 1.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-array-constructor': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-array-entries': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-assign': 1.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-constructor': 1.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-continue': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-escape': 6.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-functions': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-map': 1.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-operand': 2.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-replace': 1.0.4(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-return': 7.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-spread': 11.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-template-expressions': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-remove-useless-variables': 12.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-reuse-duplicate-init': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-simplify-assignment': 3.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-simplify-boolean-return': 2.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-simplify-ternary': 7.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-sort-imports-by-specifiers': 1.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-split-assignment-expressions': 1.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-split-nested-destructuring': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-split-variable-declarations': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-tape': 14.2.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-try-catch': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-types': 4.1.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-typescript': 7.4.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/plugin-webpack': 3.0.0(putout@36.0.3(typescript@5.6.0-beta))
+ '@putout/processor-css': 9.0.0(putout@36.0.3(typescript@5.6.0-beta))(typescript@5.6.0-beta)
+ '@putout/processor-filesystem': 4.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/processor-ignore': 6.0.1
- '@putout/processor-javascript': 5.0.0(putout@36.0.3(typescript@5.5.4))
+ '@putout/processor-javascript': 5.0.0(putout@36.0.3(typescript@5.6.0-beta))
'@putout/processor-json': 9.0.0
'@putout/processor-markdown': 12.1.0
'@putout/processor-yaml': 8.1.0
@@ -23302,7 +23692,7 @@ snapshots:
nano-memoize: 3.0.16
once: 1.4.0
picomatch: 4.0.2
- samadhi: 2.10.0(typescript@5.5.4)
+ samadhi: 2.10.0(typescript@5.6.0-beta)
try-catch: 3.0.1
try-to-catch: 3.0.1
wraptile: 3.0.0
@@ -23361,7 +23751,7 @@ snapshots:
cropperjs: 1.6.2
react: 18.3.1
- react-day-picker@9.0.6(react@18.3.1):
+ react-day-picker@9.0.8(react@18.3.1):
dependencies:
date-fns: 3.6.0
react: 18.3.1
@@ -23599,7 +23989,7 @@ snapshots:
indent-string: 2.1.0
strip-indent: 1.0.1
- redrun@11.0.5(typescript@5.5.4):
+ redrun@11.0.5(typescript@5.6.0-beta):
dependencies:
currify: 4.0.0
debug: 4.3.6
@@ -23607,7 +23997,7 @@ snapshots:
envir: 2.0.1
for-each-key: 2.0.0
fullstore: 3.0.0
- madrun: 10.1.0(typescript@5.5.4)
+ madrun: 10.1.0(typescript@5.6.0-beta)
mapsome: 1.0.0
parent-directories: 3.0.0
readjson: 2.2.2
@@ -23888,11 +24278,11 @@ snapshots:
mdast-util-to-markdown: 2.1.0
unified: 11.0.5
- remeda@2.7.0:
+ remeda@2.10.1:
dependencies:
type-fest: 4.23.0
- remotion@4.0.191(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ remotion@4.0.194(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -23966,7 +24356,7 @@ snapshots:
rrweb-snapshot@2.0.0-alpha.17:
dependencies:
- postcss: 8.4.40
+ postcss: 8.4.41
rrweb-snapshot@2.0.0-alpha.4: {}
@@ -24019,10 +24409,10 @@ snapshots:
safer-buffer@2.1.2: {}
- samadhi@2.10.0(typescript@5.5.4):
+ samadhi@2.10.0(typescript@5.6.0-beta):
dependencies:
'@putout/quick-lint': 1.3.0
- goldstein: 5.17.0(typescript@5.5.4)
+ goldstein: 5.17.0(typescript@5.6.0-beta)
js-tokens: 9.0.0
try-catch: 3.0.1
transitivePeerDependencies:
@@ -24261,7 +24651,7 @@ snapshots:
snake-case@3.0.4:
dependencies:
dot-case: 3.0.4
- tslib: 2.6.3
+ tslib: 2.4.1
snakecase-keys@5.4.4:
dependencies:
@@ -24457,8 +24847,6 @@ snapshots:
strip-final-newline@3.0.0: {}
- strip-final-newline@4.0.0: {}
-
strip-indent@1.0.1:
dependencies:
get-stdin: 4.0.1
@@ -24492,29 +24880,29 @@ snapshots:
dependencies:
inline-style-parser: 0.2.3
- styled-jsx@5.1.1(@babel/core@7.25.2)(react@18.3.1):
+ styled-jsx@5.1.1(@babel/core@7.24.6)(react@18.3.1):
dependencies:
client-only: 0.0.1
react: 18.3.1
optionalDependencies:
- '@babel/core': 7.25.2
+ '@babel/core': 7.24.6
- stylelint-config-recommended@14.0.1(stylelint@16.8.1(typescript@5.5.4)):
+ stylelint-config-recommended@14.0.1(stylelint@16.8.1(typescript@5.6.0-beta)):
dependencies:
- stylelint: 16.8.1(typescript@5.5.4)
+ stylelint: 16.8.1(typescript@5.6.0-beta)
- stylelint-config-standard@36.0.1(stylelint@16.8.1(typescript@5.5.4)):
+ stylelint-config-standard@36.0.1(stylelint@16.8.1(typescript@5.6.0-beta)):
dependencies:
- stylelint: 16.8.1(typescript@5.5.4)
- stylelint-config-recommended: 14.0.1(stylelint@16.8.1(typescript@5.5.4))
+ stylelint: 16.8.1(typescript@5.6.0-beta)
+ stylelint-config-recommended: 14.0.1(stylelint@16.8.1(typescript@5.6.0-beta))
- stylelint-prettier@5.0.2(prettier@3.3.3)(stylelint@16.8.1(typescript@5.5.4)):
+ stylelint-prettier@5.0.2(prettier@3.3.3)(stylelint@16.8.1(typescript@5.6.0-beta)):
dependencies:
prettier: 3.3.3
prettier-linter-helpers: 1.0.0
- stylelint: 16.8.1(typescript@5.5.4)
+ stylelint: 16.8.1(typescript@5.6.0-beta)
- stylelint@16.8.1(typescript@5.5.4):
+ stylelint@16.8.1(typescript@5.6.0-beta):
dependencies:
'@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1)
'@csstools/css-tokenizer': 2.4.1
@@ -24523,7 +24911,7 @@ snapshots:
'@dual-bundle/import-meta-resolve': 4.1.0
balanced-match: 2.0.0
colord: 2.9.3
- cosmiconfig: 9.0.0(typescript@5.5.4)
+ cosmiconfig: 9.0.0(typescript@5.6.0-beta)
css-functions-list: 3.2.2
css-tree: 2.3.1
debug: 4.3.6
@@ -24543,9 +24931,9 @@ snapshots:
micromatch: 4.0.7
normalize-path: 3.0.0
picocolors: 1.0.1
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-resolve-nested-selector: 0.1.4
- postcss-safe-parser: 7.0.0(postcss@8.4.40)
+ postcss-safe-parser: 7.0.0(postcss@8.4.41)
postcss-selector-parser: 6.1.1
postcss-value-parser: 4.2.0
resolve-from: 5.0.0
@@ -24643,24 +25031,24 @@ snapshots:
tailwind-merge@2.4.0: {}
- tailwind-variants@0.2.1(tailwindcss@3.4.7):
+ tailwind-variants@0.2.1(tailwindcss@3.4.8):
dependencies:
tailwind-merge: 2.4.0
- tailwindcss: 3.4.7
+ tailwindcss: 3.4.8
- tailwindcss-animate@1.0.7(tailwindcss@3.4.7):
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.8):
dependencies:
- tailwindcss: 3.4.7
+ tailwindcss: 3.4.8
tailwindcss@0.0.0-development.1:
dependencies:
'@tailwindcss/oxide': 0.0.0-development.1
- lightningcss: 1.25.1
+ lightningcss: 1.26.0
- tailwindcss@2.2.19(autoprefixer@10.4.20(postcss@8.4.40))(postcss@8.4.40):
+ tailwindcss@2.2.19(autoprefixer@10.4.20(postcss@8.4.41))(postcss@8.4.41):
dependencies:
arg: 5.0.2
- autoprefixer: 10.4.20(postcss@8.4.40)
+ autoprefixer: 10.4.20(postcss@8.4.41)
bytes: 3.1.2
chalk: 4.1.2
chokidar: 3.6.0
@@ -24681,10 +25069,10 @@ snapshots:
node-emoji: 1.11.0
normalize-path: 3.0.0
object-hash: 2.2.0
- postcss: 8.4.40
+ postcss: 8.4.41
postcss-js: 3.0.3
- postcss-load-config: 3.1.4(postcss@8.4.40)
- postcss-nested: 5.0.6(postcss@8.4.40)
+ postcss-load-config: 3.1.4(postcss@8.4.41)
+ postcss-nested: 5.0.6(postcss@8.4.41)
postcss-selector-parser: 6.1.1
postcss-value-parser: 4.2.0
pretty-hrtime: 1.0.3
@@ -24696,7 +25084,7 @@ snapshots:
transitivePeerDependencies:
- ts-node
- tailwindcss@3.4.7:
+ tailwindcss@3.4.8:
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -24712,11 +25100,11 @@ snapshots:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.1
- postcss: 8.4.40
- postcss-import: 15.1.0(postcss@8.4.40)
- postcss-js: 4.0.1(postcss@8.4.40)
- postcss-load-config: 4.0.2(postcss@8.4.40)
- postcss-nested: 6.2.0(postcss@8.4.40)
+ postcss: 8.4.41
+ postcss-import: 15.1.0(postcss@8.4.41)
+ postcss-js: 4.0.1(postcss@8.4.41)
+ postcss-load-config: 4.0.2(postcss@8.4.41)
+ postcss-nested: 6.2.0(postcss@8.4.41)
postcss-selector-parser: 6.1.1
resolve: 1.22.8
sucrase: 3.35.0
@@ -24762,18 +25150,29 @@ snapshots:
ansi-escapes: 5.0.0
supports-hyperlinks: 2.3.0
- terser-webpack-plugin@5.3.10(esbuild@0.18.6)(webpack@5.83.1(esbuild@0.19.12)):
+ terser-webpack-plugin@5.3.10(esbuild@0.18.6)(webpack@5.83.1(esbuild@0.18.6)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
- terser: 5.31.3
+ terser: 5.31.5
webpack: 5.83.1(esbuild@0.18.6)
optionalDependencies:
esbuild: 0.18.6
- terser@5.31.3:
+ terser-webpack-plugin@5.3.10(esbuild@0.19.12)(webpack@5.83.1(esbuild@0.19.12)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ jest-worker: 27.5.1
+ schema-utils: 3.3.0
+ serialize-javascript: 6.0.2
+ terser: 5.31.5
+ webpack: 5.83.1(esbuild@0.19.12)
+ optionalDependencies:
+ esbuild: 0.19.12
+
+ terser@5.31.5:
dependencies:
'@jridgewell/source-map': 0.3.6
acorn: 8.12.1
@@ -24840,10 +25239,14 @@ snapshots:
dependencies:
typescript: 5.5.4
- ts-declaration-location@1.0.4(typescript@5.5.4):
+ ts-api-utils@1.3.0(typescript@5.6.0-beta):
+ dependencies:
+ typescript: 5.6.0-beta
+
+ ts-declaration-location@1.0.4(typescript@5.6.0-beta):
dependencies:
minimatch: 10.0.1
- typescript: 5.5.4
+ typescript: 5.6.0-beta
ts-interface-checker@0.1.13: {}
@@ -24855,14 +25258,14 @@ snapshots:
tslib@2.6.3: {}
- tsutils@3.21.0(typescript@5.5.4):
+ tsutils@3.21.0(typescript@5.6.0-beta):
dependencies:
tslib: 1.14.1
- typescript: 5.5.4
+ typescript: 5.6.0-beta
- tsx@4.16.5:
+ tsx@4.17.0:
dependencies:
- esbuild: 0.21.5
+ esbuild: 0.23.0
get-tsconfig: 4.7.6
optionalDependencies:
fsevents: 2.3.3
@@ -24871,32 +25274,32 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- turbo-darwin-64@2.0.11:
+ turbo-darwin-64@2.0.12:
optional: true
- turbo-darwin-arm64@2.0.11:
+ turbo-darwin-arm64@2.0.12:
optional: true
- turbo-linux-64@2.0.11:
+ turbo-linux-64@2.0.12:
optional: true
- turbo-linux-arm64@2.0.11:
+ turbo-linux-arm64@2.0.12:
optional: true
- turbo-windows-64@2.0.11:
+ turbo-windows-64@2.0.12:
optional: true
- turbo-windows-arm64@2.0.11:
+ turbo-windows-arm64@2.0.12:
optional: true
- turbo@2.0.11:
+ turbo@2.0.12:
optionalDependencies:
- turbo-darwin-64: 2.0.11
- turbo-darwin-arm64: 2.0.11
- turbo-linux-64: 2.0.11
- turbo-linux-arm64: 2.0.11
- turbo-windows-64: 2.0.11
- turbo-windows-arm64: 2.0.11
+ turbo-darwin-64: 2.0.12
+ turbo-darwin-arm64: 2.0.12
+ turbo-linux-64: 2.0.12
+ turbo-linux-arm64: 2.0.12
+ turbo-windows-64: 2.0.12
+ turbo-windows-arm64: 2.0.12
type-check@0.4.0:
dependencies:
@@ -24963,19 +25366,21 @@ snapshots:
typedarray@0.0.6: {}
- typescript-eslint@8.0.0(eslint@9.8.0)(typescript@5.5.4):
+ typescript-eslint@8.0.1(eslint@9.8.0)(typescript@5.6.0-beta):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4)
+ '@typescript-eslint/eslint-plugin': 8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.6.0-beta))(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/parser': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
+ '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.6.0-beta)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.0-beta
transitivePeerDependencies:
- eslint
- supports-color
typescript@5.5.4: {}
+ typescript@5.6.0-beta: {}
+
typestat@0.7.3:
dependencies:
'@phenomnomnominal/tsquery': 6.1.3(typescript@5.5.4)
@@ -25119,7 +25524,7 @@ snapshots:
unpipe@1.0.0: {}
- unplugin@1.12.0:
+ unplugin@1.12.1:
dependencies:
acorn: 8.12.1
chokidar: 3.6.0
@@ -25153,7 +25558,7 @@ snapshots:
transitivePeerDependencies:
- encoding
- uploadthing@6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.7):
+ uploadthing@6.13.2(express@4.19.2)(next@14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.8):
dependencies:
'@effect/schema': 0.68.12(effect@3.4.5)
'@uploadthing/mime-types': 0.2.10
@@ -25163,8 +25568,8 @@ snapshots:
std-env: 3.7.0
optionalDependencies:
express: 4.19.2
- next: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- tailwindcss: 3.4.7
+ next: 14.2.5(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ tailwindcss: 3.4.8
upper-case@1.1.3: {}
@@ -25392,7 +25797,38 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(esbuild@0.18.6)(webpack@5.83.1(esbuild@0.19.12))
+ terser-webpack-plugin: 5.3.10(esbuild@0.18.6)(webpack@5.83.1(esbuild@0.18.6))
+ watchpack: 2.4.1
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
+ webpack@5.83.1(esbuild@0.19.12):
+ dependencies:
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.5
+ '@webassemblyjs/ast': 1.12.1
+ '@webassemblyjs/wasm-edit': 1.12.1
+ '@webassemblyjs/wasm-parser': 1.12.1
+ acorn: 8.12.1
+ acorn-import-assertions: 1.9.0(acorn@8.12.1)
+ browserslist: 4.23.3
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.17.1
+ es-module-lexer: 1.5.4
+ 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: 3.3.0
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.10(esbuild@0.19.12)(webpack@5.83.1(esbuild@0.19.12))
watchpack: 2.4.1
webpack-sources: 3.2.3
transitivePeerDependencies:
@@ -25592,8 +26028,6 @@ snapshots:
yoctocolors-cjs@2.1.2: {}
- yoctocolors@2.1.1: {}
-
yoga-layout-prebuilt@1.10.0:
dependencies:
'@types/yoga-layout': 1.9.2
diff --git a/pyproject.toml b/pyproject.toml
index 191c2405..cb602b60 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,4 +1,4 @@
-# @see addons/reliverse/relimter/python/index.py
+# @see addons/scripts/reliverse/relimter/python/index.py
# https://astral.sh
# https://github.com/astral-sh/rye#readme
diff --git a/reliverse.addons.ts b/reliverse.addons.ts
new file mode 100644
index 00000000..d819ea08
--- /dev/null
+++ b/reliverse.addons.ts
@@ -0,0 +1,67 @@
+import { log } from "@clack/prompts";
+import { select } from "@inquirer/prompts";
+import consola from "consola";
+
+import { env } from "~/env";
+
+/* eslint-disable unicorn/no-process-exit */
+// @reliverse/addons all-in-one manager (v0.0.0-canary.0) 🐞 not fully finished currently
+// ▶️ pnpm tsx reliverse.addons.ts
+
+if (env.NODE_ENV !== "development") {
+ consola.error("reliverse.addons.ts is only intended for development use");
+ process.exit(0);
+}
+
+async function main() {
+ try {
+ const selection = await select({
+ choices: [
+ {
+ name: "Exit",
+ value: "exit",
+ },
+ {
+ name: "Open CLI scripts runner",
+ value: "runner",
+ },
+ {
+ name: "Disable or enable specific addon",
+ value: "disabler-addon",
+ },
+ {
+ name: "Disable something in src/app/[locale]",
+ value: "disabler-pages",
+ },
+ ] as const,
+ default: "runner",
+ message:
+ // eslint-disable-next-line @stylistic/max-len
+ "Welcome to @reliverse/addons! It is not fully finished yet, but you can already test the future Addons Manager. Please commit your current code to GitHub or a similar platform. So, what would you like to do?",
+ });
+
+ if (selection === "exit") {
+ process.exit(0);
+ }
+
+ if (selection === "runner") {
+ await import("addons/scripts");
+ }
+
+ if (selection === "disabler-addon") {
+ log.warn("This feature is not yet implemented");
+ }
+
+ if (selection === "disabler-pages") {
+ await import("addons/scripts/reliverse/disabler");
+ }
+ } catch (error) {
+ if (!(error as any).message.includes("User force closed")) {
+ consola.error("An error occurred:", error);
+ }
+
+ process.exit(1);
+ }
+}
+
+main();
diff --git a/reliverse.config.ts b/reliverse.config.ts
index e19a7e55..628a5fdd 100644
--- a/reliverse.config.ts
+++ b/reliverse.config.ts
@@ -4,11 +4,6 @@
export const authProvider = "clerk" as "authjs" | "clerk" | "none";
-export const throwErrorOnFailedDepsCommand = false; // related to: ▶️ pnpm deps (deps:check deps:locations)
-
-// To enable this feature handled by packageJson.ts, 'debugEnabled' must also be set to 'true' currently.
-export const automaticPackageJsonDependenciesMover = false; // This feature can be unstable currently.
-
export const debugEnabled = false;
export const engineVersion = "0.4.0" as const;
@@ -21,11 +16,21 @@ export const hideTanstackDevtools = true;
export const hideTailwindIndicator = false;
+export const disableDonateButton = false;
+
export const intlProvider = "next-intl" as "disable" | "next-intl";
// Relivator 1.3.0 will use 'bun' as the default package manager
export const packageManager = "pnpm" as "bun" | "pnpm";
+// @see https://github.com/blefnk/relivator-nextjs-template/issues/32
+export type DatabaseDialect = "mysql" | "postgresql" | "sqlite";
+
+export const databasePrefix = // eslint-disable-next-line no-restricted-properties
+ process.env.NEXT_PUBLIC_DATABASE_PREFIX || "relivator";
+
+export const databaseDialect = "postgresql";
+
// ### Type definitions for database provider
// - neon | postgres | https://neon.tech
// - planetscale | mysql | https://planetscale.com/pricing
@@ -47,13 +52,5 @@ export type DatabaseProvider =
| "turso"
| "vercel";
-// @see https://github.com/blefnk/relivator-nextjs-template/issues/32
-export type DatabaseDialect = "mysql" | "postgresql" | "sqlite";
-
// Configurations for database provider and dialect
export const databaseProvider = "neon" as DatabaseProvider;
-
-export const databasePrefix = // eslint-disable-next-line no-restricted-properties
- process.env.NEXT_PUBLIC_DATABASE_PREFIX ?? "relivator";
-
-export const databaseDialect = "postgresql";
diff --git a/reliverse.info.ts b/reliverse.info.ts
new file mode 100644
index 00000000..f29970a8
--- /dev/null
+++ b/reliverse.info.ts
@@ -0,0 +1,108 @@
+import { config as reliverse } from "@reliverse/core";
+import consola from "consola";
+import pc from "picocolors";
+import {
+ authProvider,
+ engineVersion,
+ frameworkVersion,
+} from "reliverse.config";
+import semver from "semver";
+
+import { env } from "~/env";
+
+// ===== @reliverse/setup ================================================
+// TODO: Move the following code to a separate package
+// =======================================================================
+
+const turbo = process.argv.includes("--turbo");
+
+const logInfo = (message: string) => {
+ consola.info(pc.isColorSupported ? pc.bold(message) : message);
+};
+
+const logImportantInfo = (message: string) => {
+ consola.info(pc.isColorSupported ? pc.underline(pc.bold(message)) : message);
+};
+
+const logSupportMessage = () => {
+ const supportLinks = [
+ "💚 https://github.com/sponsors/blefnk",
+ "💙 https://paypal.me/blefony",
+ "💜 https://patreon.com/blefnk",
+ "💛 https://buymeacoffee.com/blefnk",
+ "🩷 https://ko-fi.com/blefnk",
+ ];
+
+ consola.info(
+ ` If you or your company are using ${reliverse.framework.name} or appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! Using the following platforms, you'll receive many incredible benefits! Thank you so much!\n${pc.green(supportLinks.join(" "))}\n`,
+ );
+};
+
+const logUpdateInstructions = () => {
+ consola.info(
+ `[${reliverse.framework.name} v1.2.6 & v1.3.0@canary Release Post] https://docs.bleverse.com/en/blog/relivator/v126`,
+ );
+ consola.info(
+ `Help ${reliverse.framework.name} become even better! Please, star the repo – https://github.com/blefnk/relivator`,
+ );
+
+ if (env.NODE_ENV === "production" && authProvider === "clerk") {
+ consola.info(
+ "Clerk: make sure to connect the domain in the Clerk dashboard so services like PageSpeed will work.",
+ );
+ }
+
+ if (env.NODE_ENV === "development") {
+ consola.info(
+ "For experienced users: run 'pnpm latest' to update all dependencies to the latest versions.",
+ );
+ consola.info(
+ "Meet quality standards: run 'pnpm appts' to get linting, formatting, and more.\n",
+ );
+
+ // consola.info(
+ // "Unstable: try 'pnpm dev:i' & faster build with 'pnpm build:i': https://turbo.build/repo",
+ // );
+
+ if (semver.gt(reliverse.framework.version, frameworkVersion)) {
+ consola.warn(
+ // eslint-disable-next-line @stylistic/max-len
+ `🟢 A new ${reliverse.framework.name} ${reliverse.framework.version} version is available! The current version is ${frameworkVersion}.
+ Download: ${reliverse.framework.repo}/releases/tag/${reliverse.framework.version}`,
+ );
+ }
+
+ // if (semver.lt(reliverse.framework.version, frameworkVersion)) {
+ // consola.warn(
+ // eslint-disable-next-line @stylistic/max-len
+ // `🟡 The currently used ${frameworkVersion} version (${reliverse.framework.version}) is older than the bootstrapped version (${reliverse.framework.name}).
+ // This might lead to unexpected behavior.`,
+ // );
+ // }
+
+ // consola.info(
+ // eslint-disable-next-line @stylistic/max-len
+ // "Please find Q21 in the FAQ of README.md. Copy the adapted bun scripts and replace the current ones in package.json (scripts for other package managers coming soon).",
+ // );
+ }
+};
+
+if (turbo) {
+ logInfo(
+ `\nThe build will now be launched using the pnpm turbo:build command and the turbo.json config (https://turbo.build).
+ Ensure that you have the turbo.json file (not turbo.disabled.json).
+ However, there is a possibility that the VSCode terminal may not exit automatically.
+ If this happens, just press Cmd/Ctrl+C to close the process manually.\n`,
+ );
+} else {
+ const hotline = `▲ Hotline: ${reliverse.social.discord}`;
+ const framework = `▲ Framework: ${reliverse.framework.name} v${frameworkVersion}`;
+ const engine = `▲ Engine: ${reliverse.engine.name} v${engineVersion}`;
+
+ logImportantInfo(`${hotline} ${framework} ${engine}`);
+ logSupportMessage();
+ logUpdateInstructions();
+
+ // eslint-disable-next-line unicorn/no-process-exit
+ process.exit(0);
+}
diff --git a/reliverse.setup.ts b/reliverse.setup.ts
index a16286e4..386e9ec2 100644
--- a/reliverse.setup.ts
+++ b/reliverse.setup.ts
@@ -1,115 +1,10 @@
-import { runReliverseSetup } from "@/terminal/reliverse/relicon/setup";
-import { config as reliverse } from "@reliverse/core";
-import consola from "consola";
-import pc from "picocolors";
-import {
- authProvider,
- engineVersion,
- frameworkVersion,
-} from "reliverse.config";
-import semver from "semver";
+import { runReliverseSetup } from "@/scripts/reliverse/relicon/setup";
+import { argv } from "process";
-import { env } from "~/env";
+const setupFlag = argv.includes("--setup");
+const setupArgv = argv.includes("setup");
-// ===== @reliverse/setup ================================================
-// TODO: Move the following code to the separate package
-// =======================================================================
-//
-const details = process.argv.includes("--details");
-const help = process.argv.includes("--help");
-const setup = process.argv.includes("--setup");
-const turbo = process.argv.includes("--turbo");
-
-if (turbo) {
- consola.info(
- pc.bold(
- "\nThe build will now be launched using the pnpm turbo:build command and the turbo.json config (https://turbo.build).\nEnsure that you have the turbo.json file (not turbo.disabled.json).\nHowever, there is a possibility that the VSCode terminal may not exit automatically.\nIf this happens, just press Cmd/Ctrl+C to close the process manually.\n",
- ),
- );
-}
-
-if (help || details) {
- consola.info(
- pc.isColorSupported
- ? String(
- pc.underline(
- pc.bold(
- // eslint-disable-next-line @stylistic/max-len
- `▲ Hotline: ${reliverse.social.discord} ▲ Framework: ${reliverse.framework.name} v${frameworkVersion} ▲ Engine: ${reliverse.engine.name} v${engineVersion}`,
- ),
- ),
- )
- : // eslint-disable-next-line @stylistic/max-len
- `▲ Hotline: ${reliverse.social.discord} ▲ Framework: ${reliverse.framework.name} v${frameworkVersion} ▲ Engine: ${reliverse.engine.name} v${engineVersion}`,
- );
-
- consola.info(
- pc.isColorSupported
- ? ` If you or your company are using ${reliverse.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n${pc.green("💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk")} \n`
- : ` If you or your company are using ${reliverse.framework.name} or just appreciate what I'm (@blefnk | https://github.com/blefnk) doing, please consider supporting me to speed up the development.\n🙏 I would be very grateful! By using the following platforms, you'll receive many incredible benefits! Thank you so much!\n💚 https://github.com/sponsors/blefnk 💙 https://paypal.me/blefony 💜 https://patreon.com/blefnk 💛 https://buymeacoffee.com/blefnk 🩷 https://ko-fi.com/blefnk \n`,
- );
-
- if (details) {
- consola.info(
- `[${reliverse.framework.name} v1.2.6 Release Blog Post] 👉 https://docs.bleverse.com/en/blog/relivator/v126`,
- );
-
- consola.info(
- `Help ${reliverse.framework.name} become even better! Please, star the repo – https://github.com/blefnk/relivator`,
- );
-
- if (env.NODE_ENV === "development") {
- consola.info(
- "For experienced users: run 'pnpm latest' to update all dependencies to the latest versions",
- );
-
- consola.info(
- "Meet quality standards: run 'pnpm appts' to get linting, formatting, and more.",
- );
-
- consola.info(
- "Unstable: try 'pnpm dev:i' & faster build with 'pnpm build:i': https://turbo.build/repo",
- );
-
- // import nextConfig from "next.config.js";
- // if (nextConfig.experimental?.reactCompiler) {
- // consola.info(
- // "The reactCompiler is enabled in next.config.js (it uses webpack now, so builds take longer).",
- // );
- // }
-
- if (semver.gt(reliverse.framework.version, frameworkVersion)) {
- consola.warn(
- // eslint-disable-next-line @stylistic/max-len
- `🟢 A new ${reliverse.framework.name} ${reliverse.framework.version} version is available! The current version is ${frameworkVersion}. Download: ${reliverse.framework.repo}/releases/tag/${reliverse.framework.version}`,
- );
- }
-
- if (semver.lt(reliverse.framework.version, frameworkVersion)) {
- consola.warn(
- // eslint-disable-next-line @stylistic/max-len
- `🟡 The ${reliverse.framework.name} version (${reliverse.framework.version}) is older than the bootstrapped version (${frameworkVersion}). This might lead to unexpected behavior.`,
- );
- }
- }
-
- if (env.NODE_ENV === "production" && authProvider === "clerk") {
- consola.info(
- "Clerk: make sure to connect the domain in the Clerk dashboard so services like PageSpeed will work.",
- );
- }
-
- consola.info(
- // eslint-disable-next-line @stylistic/max-len
- "Please find Q21 in the FAQ of README.md. Copy the adapted bun scripts and replace the current ones in package.json (scripts for other package managers coming soon).",
- );
- }
-
- // eslint-disable-next-line unicorn/no-process-exit
- process.exit(0);
-}
-
-// pnpm tsx reliverse.reliverse.ts --setup
-if (setup) {
+// pnpm tsx reliverse.setup.ts
+if (setupFlag || setupArgv) {
await runReliverseSetup();
}
diff --git a/reliverse.themes.ts b/reliverse.themes.ts
new file mode 100644
index 00000000..31c471c4
--- /dev/null
+++ b/reliverse.themes.ts
@@ -0,0 +1,10 @@
+// Did someone say... colors?! But does anyone want unstyled components?!
+// Reliverse Themes. You can have anything, anytime. Coming soon.
+
+const config = {
+ colors: {
+ coming: "soon",
+ },
+};
+
+export { config as reliverseThemes };
diff --git a/src/app.ts b/src/app.ts
index d2038e0e..c19f0302 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -1,9 +1,11 @@
+import type { FooterItem, MainMenuItem } from "@/types";
+
+import { slugify } from "@/utils";
+
import type { Icons } from "~/components/Common/Icons";
-import type { FooterItem, MainMenuItem } from "~/types";
import metadata from "~/constants/metadata";
import { productCategories } from "~/constants/products";
-import { slugify } from "~/utils";
const socialLinks = {
discord: "https://discord.gg/Pb8uKbwpsJ",
diff --git a/src/app/[locale]/about/layout.tsx b/src/app/[locale]/about/layout.tsx
index 98124b5c..4f165a69 100644
--- a/src/app/[locale]/about/layout.tsx
+++ b/src/app/[locale]/about/layout.tsx
@@ -1,18 +1,9 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type MainLayoutProps = {
children: ReactNode;
};
export default function MiscLayout({ children }: MainLayoutProps) {
- return (
- <>
-
- {children}
-
- >
- );
+ return <>{children}>;
}
diff --git a/src/app/[locale]/about/page.tsx b/src/app/[locale]/about/page.tsx
index d903eb5c..fc341407 100644
--- a/src/app/[locale]/about/page.tsx
+++ b/src/app/[locale]/about/page.tsx
@@ -1,18 +1,14 @@
-import Balancer from "react-wrap-balancer";
-
import type { Metadata } from "next";
-import Link from "next/link";
-import { buttonVariants } from "@/browser/reliverse/ui/Button";
+import { Heading } from "@/components/ui/heading";
+import { Link } from "@/components/ui/link";
+import { Main } from "@/components/ui/main";
+import { Paragraph } from "@/components/ui/paragraph";
import { ArrowRight } from "lucide-react";
import { useTranslations } from "next-intl";
-import { cnBase } from "tailwind-variants";
import { siteConfig } from "~/app";
-import { cn, typography } from "~/utils";
-// export const dynamic = "force-static";
-// export const metadata = seo({ title: "About" });
export const metadata: Metadata = {
title: "About Relivator",
};
@@ -21,18 +17,11 @@ export default function Page() {
const t = useTranslations();
return (
-
-
+
+
-
- {siteConfig.name}
-
-
{siteConfig.name}
+
{t("landing.about")}
-
+
Learn More on Relivator's GitHub
-
About
-
- © 2024{" "}
+ About
+
+
+ © 2024
+
{siteConfig.author.handleAt}
- {" "}
-
- ({siteConfig.name}'s GitHub)
-
-
-
+
+
+
);
}
diff --git a/src/app/[locale]/auth/sign-in/[[...sign-in]]/page.tsx b/src/app/[locale]/auth/sign-in/[[...sign-in]]/page.tsx
index 2949bee4..46e7bf5e 100644
--- a/src/app/[locale]/auth/sign-in/[[...sign-in]]/page.tsx
+++ b/src/app/[locale]/auth/sign-in/[[...sign-in]]/page.tsx
@@ -1,6 +1,6 @@
import type { Metadata } from "next";
-import { Button } from "@/browser/reliverse/ui/Button";
+import { Button } from "@/components/ui/button";
import { authProvider } from "reliverse.config";
import { auth, signIn } from "~/auth/authjs";
diff --git a/src/app/[locale]/auth/sign-in/layout.tsx b/src/app/[locale]/auth/sign-in/layout.tsx
index 5ae82810..2a1f7e65 100644
--- a/src/app/[locale]/auth/sign-in/layout.tsx
+++ b/src/app/[locale]/auth/sign-in/layout.tsx
@@ -1,18 +1,9 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type SignInLayoutProps = {
children: ReactNode;
};
export default function SignInLayout({ children }: SignInLayoutProps) {
- return (
- <>
-
- {children}
-
- >
- );
+ return <>{children}>;
}
diff --git a/src/app/[locale]/auth/sign-in/recover/[[...recover]]/page.tsx b/src/app/[locale]/auth/sign-in/recover/[[...recover]]/page.tsx
index 47e746fc..6736881e 100644
--- a/src/app/[locale]/auth/sign-in/recover/[[...recover]]/page.tsx
+++ b/src/app/[locale]/auth/sign-in/recover/[[...recover]]/page.tsx
@@ -5,7 +5,7 @@ import {
CardDescription,
CardHeader,
CardTitle,
-} from "@/browser/reliverse/ui/CardUI";
+} from "@/components/ui/card";
import { Shell } from "~/components/Wrappers/ShellVariants";
diff --git a/src/app/[locale]/auth/sign-in/recover/step-two/[[...step-two]]/page.tsx b/src/app/[locale]/auth/sign-in/recover/step-two/[[...step-two]]/page.tsx
index 3fccb932..b0c59f38 100644
--- a/src/app/[locale]/auth/sign-in/recover/step-two/[[...step-two]]/page.tsx
+++ b/src/app/[locale]/auth/sign-in/recover/step-two/[[...step-two]]/page.tsx
@@ -5,7 +5,7 @@ import {
CardDescription,
CardHeader,
CardTitle,
-} from "@/browser/reliverse/ui/CardUI";
+} from "@/components/ui/card";
import { Shell } from "~/components/Wrappers/ShellVariants";
diff --git a/src/app/[locale]/auth/sign-out/layout.tsx b/src/app/[locale]/auth/sign-out/layout.tsx
index e351fe4a..0836738c 100644
--- a/src/app/[locale]/auth/sign-out/layout.tsx
+++ b/src/app/[locale]/auth/sign-out/layout.tsx
@@ -1,18 +1,9 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type SignOutLayoutProps = {
children: ReactNode;
};
export default function SignOutLayout({ children }: SignOutLayoutProps) {
- return (
- <>
-
- {children}
-
- >
- );
+ return <>{children}>;
}
diff --git a/src/app/[locale]/auth/sign-out/loading.tsx b/src/app/[locale]/auth/sign-out/loading.tsx
index 363d8a18..d5f223ca 100644
--- a/src/app/[locale]/auth/sign-out/loading.tsx
+++ b/src/app/[locale]/auth/sign-out/loading.tsx
@@ -1,4 +1,4 @@
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+import { Skeleton } from "@/components/ui/skeleton";
import {
PageHeader,
diff --git a/src/app/[locale]/auth/sign-sso/[[...sign-sso]]/page.tsx b/src/app/[locale]/auth/sign-sso/[[...sign-sso]]/page.tsx
index 7e8e70d0..0181cabc 100644
--- a/src/app/[locale]/auth/sign-sso/[[...sign-sso]]/page.tsx
+++ b/src/app/[locale]/auth/sign-sso/[[...sign-sso]]/page.tsx
@@ -1,4 +1,4 @@
-import type { SSOCallbackPageProps } from "~/types";
+import type { SSOCallbackPageProps } from "@/types";
import SSOCallback from "~/components/Account/SsoCallback";
import { Shell } from "~/components/Wrappers/ShellVariants";
diff --git a/src/app/[locale]/auth/sign-up/[[...sign-up]]/page.tsx b/src/app/[locale]/auth/sign-up/[[...sign-up]]/page.tsx
index 37397825..2f2e3916 100644
--- a/src/app/[locale]/auth/sign-up/[[...sign-up]]/page.tsx
+++ b/src/app/[locale]/auth/sign-up/[[...sign-up]]/page.tsx
@@ -1,6 +1,6 @@
import type { Metadata } from "next";
-import { Button } from "@/browser/reliverse/ui/Button";
+import { Button } from "@/components/ui/button";
import { authProvider } from "reliverse.config";
import { auth, signIn } from "~/auth/authjs";
diff --git a/src/app/[locale]/auth/sign-up/layout.tsx b/src/app/[locale]/auth/sign-up/layout.tsx
index db680d0f..90bd60b3 100644
--- a/src/app/[locale]/auth/sign-up/layout.tsx
+++ b/src/app/[locale]/auth/sign-up/layout.tsx
@@ -1,18 +1,9 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type SignUpLayoutProps = {
children: ReactNode;
};
export default function SignUpLayout({ children }: SignUpLayoutProps) {
- return (
- <>
-
- {children}
-
- >
- );
+ return <>{children}>;
}
diff --git a/src/app/[locale]/auth/sign-up/verify-email/[[...verify-email]]/page.tsx b/src/app/[locale]/auth/sign-up/verify-email/[[...verify-email]]/page.tsx
index 1bfac63d..8fad904d 100644
--- a/src/app/[locale]/auth/sign-up/verify-email/[[...verify-email]]/page.tsx
+++ b/src/app/[locale]/auth/sign-up/verify-email/[[...verify-email]]/page.tsx
@@ -5,7 +5,7 @@ import {
CardDescription,
CardHeader,
CardTitle,
-} from "@/browser/reliverse/ui/CardUI";
+} from "@/components/ui/card";
import { Shell } from "~/components/Wrappers/ShellVariants";
diff --git a/src/app/[locale]/blog/[...slug]/page.tsx b/src/app/[locale]/blog/[...slug]/page.tsx
index 366e55f2..a38ca9d6 100644
--- a/src/app/[locale]/blog/[...slug]/page.tsx
+++ b/src/app/[locale]/blog/[...slug]/page.tsx
@@ -1,13 +1,13 @@
import type { Metadata } from "next";
import Link from "next/link";
-import { buttonVariants } from "@/browser/reliverse/ui/Button";
-import { Separator } from "@/browser/reliverse/ui/Separator";
+import { buttonVariants } from "@/components/ui/button";
+import { Separator } from "@/components/ui/separator";
+import { cn } from "@/utils";
import { Icons } from "~/components/Common/Icons";
import { Shell } from "~/components/Wrappers/ShellVariants";
import { env } from "~/env";
-import { cn } from "~/utils";
export function generateMetadata(): Metadata {
const url = env.NEXT_PUBLIC_APP_URL || "http://localhost:3000";
diff --git a/src/app/[locale]/blog/layout.tsx b/src/app/[locale]/blog/layout.tsx
index 48ffc71d..73c26ad3 100644
--- a/src/app/[locale]/blog/layout.tsx
+++ b/src/app/[locale]/blog/layout.tsx
@@ -1,8 +1,5 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type BlogLayoutProps = {
children: ReactNode;
};
@@ -10,11 +7,9 @@ type BlogLayoutProps = {
export default function BlogLayout({ children }: BlogLayoutProps) {
return (
<>
-
{children}
-
>
);
}
diff --git a/src/app/[locale]/blog/new/components/editor-placeholder.tsx b/src/app/[locale]/blog/new/components/editor-placeholder.tsx
index b2494984..1036b364 100644
--- a/src/app/[locale]/blog/new/components/editor-placeholder.tsx
+++ b/src/app/[locale]/blog/new/components/editor-placeholder.tsx
@@ -8,12 +8,11 @@ import type {
PlatePluginComponent,
} from "@udecode/plate-common";
+import { cn } from "@/utils";
import { createNodesHOC, usePlaceholderState } from "@udecode/plate-common";
import { ELEMENT_H1 } from "@udecode/plate-heading";
import { ELEMENT_PARAGRAPH } from "@udecode/plate-paragraph";
-import { cn } from "~/utils";
-
type CustomPlaceholderProps = {
children: ReactNode[];
} & PlaceholderProps;
diff --git a/src/app/[locale]/blog/new/components/editor-ui.tsx b/src/app/[locale]/blog/new/components/editor-ui.tsx
index f3dd3b72..95dc0a62 100644
--- a/src/app/[locale]/blog/new/components/editor-ui.tsx
+++ b/src/app/[locale]/blog/new/components/editor-ui.tsx
@@ -2,10 +2,9 @@ import { forwardRef } from "react";
import type { PlateContentProps } from "@udecode/plate-common";
+import { cn } from "@/utils";
import { PlateContent } from "@udecode/plate-common";
-import { cn } from "~/utils";
-
type EditorProps = {
className?: string;
disabled?: boolean;
diff --git a/src/app/[locale]/blog/new/components/elements/paragraph.tsx b/src/app/[locale]/blog/new/components/elements/paragraph.tsx
index fe2c8726..a64b8b6e 100644
--- a/src/app/[locale]/blog/new/components/elements/paragraph.tsx
+++ b/src/app/[locale]/blog/new/components/elements/paragraph.tsx
@@ -1,9 +1,8 @@
import type { PlateElementProps } from "@udecode/plate-common";
+import { cn } from "@/utils";
import { PlateElement } from "@udecode/plate-common";
-import { cn } from "~/utils";
-
const ParagraphElement = ({
children,
className,
diff --git a/src/app/[locale]/blog/new/components/leafs/bold.tsx b/src/app/[locale]/blog/new/components/leafs/bold.tsx
index ba9f3fef..0b2bcf73 100644
--- a/src/app/[locale]/blog/new/components/leafs/bold.tsx
+++ b/src/app/[locale]/blog/new/components/leafs/bold.tsx
@@ -1,9 +1,8 @@
import type { PlateLeafProps } from "@udecode/plate-common";
+import { cn } from "@/utils";
import { PlateLeaf } from "@udecode/plate-common";
-import { cn } from "~/utils";
-
const BoldLeaf = ({ children, className, ref, ...props }: PlateLeafProps) => (
(
-
{children}
-
>
);
}
diff --git a/src/app/[locale]/checkout/[storeId]/loading.tsx b/src/app/[locale]/checkout/[storeId]/loading.tsx
index 817e27a8..87a40834 100644
--- a/src/app/[locale]/checkout/[storeId]/loading.tsx
+++ b/src/app/[locale]/checkout/[storeId]/loading.tsx
@@ -1,6 +1,6 @@
-import { ScrollArea } from "@/browser/reliverse/ui/Scroll-Area";
-import { Separator } from "@/browser/reliverse/ui/Separator";
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+import { ScrollArea } from "@/components/ui/scroll-area";
+import { Separator } from "@/components/ui/separator";
+import { Skeleton } from "@/components/ui/skeleton";
import { Icons } from "~/components/Common/Icons";
diff --git a/src/app/[locale]/checkout/[storeId]/page.tsx b/src/app/[locale]/checkout/[storeId]/page.tsx
index 7aca74e5..4ca7a2b6 100644
--- a/src/app/[locale]/checkout/[storeId]/page.tsx
+++ b/src/app/[locale]/checkout/[storeId]/page.tsx
@@ -3,14 +3,11 @@ import type { Metadata } from "next";
import Link from "next/link";
import { notFound } from "next/navigation";
-import { Button, buttonVariants } from "@/browser/reliverse/ui/Button";
-import {
- Drawer,
- DrawerContent,
- DrawerTrigger,
-} from "@/browser/reliverse/ui/Drawer";
-import { ScrollArea } from "@/browser/reliverse/ui/Scroll-Area";
-import { getCartAction } from "@/server/reliverse/actions/cart";
+import { getCartAction } from "@/actions/reliverse//cart";
+import { Button, buttonVariants } from "@/components/ui/button";
+import { Drawer, DrawerContent, DrawerTrigger } from "@/components/ui/drawer";
+import { ScrollArea } from "@/components/ui/scroll-area";
+import { cn, formatPrice } from "@/utils";
import { ArrowLeftIcon } from "@radix-ui/react-icons";
import { eq } from "drizzle-orm";
import { getTranslations } from "next-intl/server";
@@ -27,7 +24,6 @@ import {
import { db } from "~/db";
import { stores } from "~/db/schema";
import { env } from "~/env";
-import { cn, formatPrice } from "~/utils";
export const metadata: Metadata = {
description: "Checkout with store items",
@@ -250,7 +246,7 @@ export default async function CheckoutPage({ params }: CheckoutPageProps) {
`}
>
- {env.DEV_DEMO_NOTES === "true" && t("checkout.Demo")}
+ {env.DEMO_NOTES_ENABLED === "true" && t("checkout.Demo")}
-
- {children}
-
- >
- );
+ return <>{children}>;
}
diff --git a/src/app/[locale]/contact/layout.tsx b/src/app/[locale]/contact/layout.tsx
index 98124b5c..4f165a69 100644
--- a/src/app/[locale]/contact/layout.tsx
+++ b/src/app/[locale]/contact/layout.tsx
@@ -1,18 +1,9 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type MainLayoutProps = {
children: ReactNode;
};
export default function MiscLayout({ children }: MainLayoutProps) {
- return (
- <>
-
- {children}
-
- >
- );
+ return <>{children}>;
}
diff --git a/src/app/[locale]/custom/clothing/page.tsx b/src/app/[locale]/custom/clothing/page.tsx
index 5f726f6c..e4330997 100644
--- a/src/app/[locale]/custom/clothing/page.tsx
+++ b/src/app/[locale]/custom/clothing/page.tsx
@@ -30,8 +30,8 @@ import { Shell } from "~/components/Wrappers/ShellVariants";
// PageHeaderHeading,
// } from "~/components/Navigation/PageNavMenu";
// import { productCategories } from "~/constants/products";
-// import { getCartItemsAction } from "@/server/reliverse/actions/cart";
-// import { getProductsAction } from "@/server/reliverse/actions/product";
+// import { getCartItemsAction } from "@/actions/reliverse//cart";
+// import { getProductsAction } from "@/actions/reliverse//product";
// import { getCartId } from "@/server/reliverse/cart";
// import { cn } from "~/utils";
// const isString = (a: unknown) => typeof a === "string";
diff --git a/src/app/[locale]/custom/layout.tsx b/src/app/[locale]/custom/layout.tsx
index 61670493..ea1d8d56 100644
--- a/src/app/[locale]/custom/layout.tsx
+++ b/src/app/[locale]/custom/layout.tsx
@@ -1,8 +1,5 @@
import type { ReactNode } from "react";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
-
type CatalogueLayoutProps = {
children: ReactNode;
};
@@ -10,11 +7,9 @@ type CatalogueLayoutProps = {
export default function CatalogueLayout({ children }: CatalogueLayoutProps) {
return (
<>
-
{children}
-
>
);
}
diff --git a/src/app/[locale]/dashboard/account/loading.tsx b/src/app/[locale]/dashboard/account/loading.tsx
index 5a841d65..f92e0e73 100644
--- a/src/app/[locale]/dashboard/account/loading.tsx
+++ b/src/app/[locale]/dashboard/account/loading.tsx
@@ -1,4 +1,4 @@
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+import { Skeleton } from "@/components/ui/skeleton";
import {
PageHeader,
diff --git a/src/app/[locale]/dashboard/account/manage/loading.tsx b/src/app/[locale]/dashboard/account/manage/loading.tsx
index a02c66f8..dad8386b 100644
--- a/src/app/[locale]/dashboard/account/manage/loading.tsx
+++ b/src/app/[locale]/dashboard/account/manage/loading.tsx
@@ -1,4 +1,4 @@
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+import { Skeleton } from "@/components/ui/skeleton";
import {
PageHeader,
diff --git a/src/app/[locale]/dashboard/admin/page.tsx b/src/app/[locale]/dashboard/admin/page.tsx
index 36779a56..1868a839 100644
--- a/src/app/[locale]/dashboard/admin/page.tsx
+++ b/src/app/[locale]/dashboard/admin/page.tsx
@@ -3,15 +3,15 @@ import type { ReactElement } from "react";
import Link from "next/link";
import { redirect } from "next/navigation";
-import { buttonVariants } from "@/browser/reliverse/ui/Button";
+import { buttonVariants } from "@/components/ui/button";
+import { cn } from "@/utils";
import { Edit, Mail, View } from "lucide-react";
import { authProvider } from "reliverse.config";
import { authjs } from "~/auth/authjs";
import { clerk } from "~/auth/clerk";
import { GeneralShell } from "~/components/Wrappers/GeneralShell";
-import AdminProductsManagement from "~/core/trpc/tanstack/products-admin";
-import { cn } from "~/utils";
+import AdminProductsManagement from "~/core/trpc-old/tanstack/products-admin";
export default async function AdminMainPage(): Promise
{
const session = authProvider === "clerk" ? await clerk() : await authjs();
diff --git a/src/app/[locale]/dashboard/billing/example.tsx b/src/app/[locale]/dashboard/billing/example.tsx
index 4f5e0227..7f7ac655 100644
--- a/src/app/[locale]/dashboard/billing/example.tsx
+++ b/src/app/[locale]/dashboard/billing/example.tsx
@@ -2,15 +2,16 @@ import type { Metadata } from "next";
import Link from "next/link";
import { redirect } from "next/navigation";
-import { buttonVariants } from "@/browser/reliverse/ui/Button";
-import { Card } from "@/browser/reliverse/ui/CardUI";
-import { Separator } from "@/browser/reliverse/ui/Separator";
+import type { SubscriptionPlanTypes, UserSubscriptionPlan } from "@/types";
+
+import { buttonVariants } from "@/components/ui/button";
+import { Card } from "@/components/ui/card";
+import { Separator } from "@/components/ui/separator";
import { getDashboardRedirectPath, getPlanFeatures } from "@/server";
+import { cn, formatDate, formatPrice } from "@/utils";
import { CheckIcon } from "@radix-ui/react-icons";
import { desc, eq, sql } from "drizzle-orm";
-import type { SubscriptionPlanTypes, UserSubscriptionPlan } from "~/types";
-
import { authProvider } from "~/auth";
import { authjs } from "~/auth/authjs";
import { clerk } from "~/auth/clerk";
@@ -26,7 +27,6 @@ import { storeSubscriptionPlans } from "~/core/stripe/subs";
import { db } from "~/db";
import { products, stores } from "~/db/schema";
import { env } from "~/env";
-import { cn, formatDate, formatPrice } from "~/utils";
export const metadata: Metadata = {
description: "Manage the billing and subscription",
@@ -135,7 +135,7 @@ export default async function BillingPage() {
className="space-y-5 pb-2.5"
id="subscription-plans"
>
- {env.DEV_DEMO_NOTES === "true" && (
+ {env.DEMO_NOTES_ENABLED === "true" && (
[demo-only-msg] When using buttons below {" -> "} use Stripe Test
Card data:
diff --git a/src/app/[locale]/dashboard/billing/loading.tsx b/src/app/[locale]/dashboard/billing/loading.tsx
index d753b65d..f79a5185 100644
--- a/src/app/[locale]/dashboard/billing/loading.tsx
+++ b/src/app/[locale]/dashboard/billing/loading.tsx
@@ -3,8 +3,9 @@ import {
CardContent,
CardFooter,
CardHeader,
-} from "@/browser/reliverse/ui/CardUI";
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+} from "@/components/ui/card";
+import { Skeleton } from "@/components/ui/skeleton";
+import { cn } from "@/utils";
import {
PageHeader,
@@ -12,7 +13,6 @@ import {
PageHeaderHeading,
} from "~/components/Navigation/PageNavMenu";
import { Shell } from "~/components/Wrappers/ShellVariants";
-import { cn } from "~/utils";
export default function BillingLoading() {
return (
diff --git a/src/app/[locale]/dashboard/layout.tsx b/src/app/[locale]/dashboard/layout.tsx
index ab8bf26c..9eafea9b 100644
--- a/src/app/[locale]/dashboard/layout.tsx
+++ b/src/app/[locale]/dashboard/layout.tsx
@@ -2,14 +2,12 @@ import type { ReactNode } from "react";
import { redirect } from "next/navigation";
-import { ScrollArea } from "@/browser/reliverse/ui/Scroll-Area";
+import { ScrollArea } from "@/components/ui/scroll-area";
import { config } from "@reliverse/core";
import consola from "consola";
import { authProvider } from "~/auth";
import { SidebarNav } from "~/components/Navigation/SidebarNav";
-import { SiteFooter } from "~/components/Navigation/SiteFooter";
-import { SiteHeader } from "~/components/Navigation/SiteHeader";
import { GeneralShell } from "~/components/Wrappers/GeneralShell";
import { dashboardConfig } from "~/constants/nav-items";
import { env } from "~/env";
@@ -48,7 +46,6 @@ function DashboardLayoutContent({
// consola.info("session:", session?.user.id);
return (
-
-
);
}
diff --git a/src/app/[locale]/dashboard/onboarding/OnboardContent.tsx b/src/app/[locale]/dashboard/onboarding/OnboardContent.tsx
index fb774f1d..093e5ba7 100644
--- a/src/app/[locale]/dashboard/onboarding/OnboardContent.tsx
+++ b/src/app/[locale]/dashboard/onboarding/OnboardContent.tsx
@@ -1,4 +1,4 @@
-import { Separator } from "@/browser/reliverse/ui/Separator";
+import { Separator } from "@/components/ui/separator";
import Content from "./content.mdx";
diff --git a/src/app/[locale]/dashboard/page.tsx b/src/app/[locale]/dashboard/page.tsx
index 209ec3e0..340bc1e4 100644
--- a/src/app/[locale]/dashboard/page.tsx
+++ b/src/app/[locale]/dashboard/page.tsx
@@ -1,7 +1,7 @@
import Link from "next/link";
-import { Separator } from "@/browser/reliverse/ui/Separator";
-import Onboarding from "@/cluster/reliverse/components/Onboarding";
+import Onboarding from "@/cluster/components/Onboarding";
+import { Separator } from "@/components/ui/separator";
import { Shell } from "~/components/Wrappers/ShellVariants";
import { env } from "~/env";
diff --git a/src/app/[locale]/dashboard/purchases/loading.tsx b/src/app/[locale]/dashboard/purchases/loading.tsx
index a02c66f8..dad8386b 100644
--- a/src/app/[locale]/dashboard/purchases/loading.tsx
+++ b/src/app/[locale]/dashboard/purchases/loading.tsx
@@ -1,4 +1,4 @@
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+import { Skeleton } from "@/components/ui/skeleton";
import {
PageHeader,
diff --git a/src/app/[locale]/dashboard/settings/page.tsx b/src/app/[locale]/dashboard/settings/page.tsx
index 6b6ebd84..6407e356 100644
--- a/src/app/[locale]/dashboard/settings/page.tsx
+++ b/src/app/[locale]/dashboard/settings/page.tsx
@@ -2,13 +2,15 @@ import { Suspense } from "react";
import type { Metadata } from "next";
+import type { SearchParams } from "@/types";
+
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
-} from "@/browser/reliverse/ui/CardUI";
+} from "@/components/ui/card";
import { getNotification } from "@/server/reliverse/queries/notification";
import {
getCachedUserAuthJs,
@@ -16,8 +18,6 @@ import {
} from "@/server/reliverse/queries/user";
import { z } from "zod";
-import type { SearchParams } from "~/types";
-
import { authProvider } from "~/auth";
import { UpdateNotificationForm } from "~/components/Forms";
import {
diff --git a/src/app/[locale]/dashboard/stores/[storeId]/loading.tsx b/src/app/[locale]/dashboard/stores/[storeId]/loading.tsx
index 451a27e8..49222832 100644
--- a/src/app/[locale]/dashboard/stores/[storeId]/loading.tsx
+++ b/src/app/[locale]/dashboard/stores/[storeId]/loading.tsx
@@ -3,8 +3,8 @@ import {
CardContent,
CardFooter,
CardHeader,
-} from "@/browser/reliverse/ui/CardUI";
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+} from "@/components/ui/card";
+import { Skeleton } from "@/components/ui/skeleton";
export default function StoreLoading() {
return (
diff --git a/src/app/[locale]/dashboard/stores/loading.tsx b/src/app/[locale]/dashboard/stores/loading.tsx
index 2dff0062..944839ec 100644
--- a/src/app/[locale]/dashboard/stores/loading.tsx
+++ b/src/app/[locale]/dashboard/stores/loading.tsx
@@ -1,6 +1,6 @@
-import { AspectRatio } from "@/browser/reliverse/ui/Aspect-Ratio";
-import { Card, CardHeader } from "@/browser/reliverse/ui/CardUI";
-import { Skeleton } from "@/browser/reliverse/ui/Skeleton";
+import { AspectRatio } from "@/components/ui/aspect-ratio";
+import { Card, CardHeader } from "@/components/ui/card";
+import { Skeleton } from "@/components/ui/skeleton";
import {
PageHeader,
diff --git a/src/app/[locale]/dashboard/stores/new/page.tsx b/src/app/[locale]/dashboard/stores/new/page.tsx
index 9062054a..519908f3 100644
--- a/src/app/[locale]/dashboard/stores/new/page.tsx
+++ b/src/app/[locale]/dashboard/stores/new/page.tsx
@@ -7,7 +7,7 @@ import {
CardDescription,
CardHeader,
CardTitle,
-} from "@/browser/reliverse/ui/CardUI";
+} from "@/components/ui/card";
import { authProvider } from "~/auth";
import { authjs } from "~/auth/authjs";
diff --git a/src/app/[locale]/dashboard/stores/page.tsx b/src/app/[locale]/dashboard/stores/page.tsx
index ebe58fbd..118e34f4 100644
--- a/src/app/[locale]/dashboard/stores/page.tsx
+++ b/src/app/[locale]/dashboard/stores/page.tsx
@@ -1,7 +1,7 @@
import type { Metadata } from "next";
-// import { getStoresAction } from "@/server/reliverse/actions/store";
-// import { storesSearchParametersSchema } from "@/server/reliverse/validations/parameters";
+// import { getStoresAction } from "@/actions/reliverse//store";
+// import { storesSearchParametersSchema } from "@/actions/reliverse/validations/parameters";
// import consola from "consola";
// import { Stores } from "~/components/Common/stores";
import { getTranslations } from "next-intl/server";
diff --git a/src/app/[locale]/donate/avatar.tsx b/src/app/[locale]/donate/avatar.tsx
new file mode 100644
index 00000000..13059921
--- /dev/null
+++ b/src/app/[locale]/donate/avatar.tsx
@@ -0,0 +1,53 @@
+"use client";
+
+import { useState } from "react";
+
+import Image from "next/image";
+
+import { funEmoji } from "@dicebear/collection";
+import { createAvatar } from "@dicebear/core";
+
+type AvatarProps = {
+ avatarUrl?: string;
+ name: string;
+ sponsorLevel: number;
+};
+
+function generateAvatar(seed: string): string {
+ const avatar = createAvatar(funEmoji, {
+ seed: seed,
+ mouth: ["smileTeeth", "smileLol", "wideSmile", "lilSmile"],
+ });
+
+ return avatar.toString();
+}
+
+export function AvatarImage({ name, avatarUrl, sponsorLevel }: AvatarProps) {
+ const [useAvatar, setUseAvatar] = useState(false);
+ const avatarSize = sponsorLevel > 2 ? 150 : sponsorLevel > 1 ? 100 : 50;
+ const avatarSvg = generateAvatar(name);
+
+ return (
+ <>
+ {!useAvatar && avatarUrl ? (
+ {
+ setUseAvatar(true);
+ }}
+ />
+ ) : (
+
+ )}
+ >
+ );
+}
diff --git a/src/app/[locale]/donate/page.tsx b/src/app/[locale]/donate/page.tsx
new file mode 100644
index 00000000..9c588bbf
--- /dev/null
+++ b/src/app/[locale]/donate/page.tsx
@@ -0,0 +1,426 @@
+import type { ReactNode } from "react";
+
+import {
+ Accordion,
+ AccordionContent,
+ AccordionItem,
+ AccordionTrigger,
+} from "@/components/ui/accordion";
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from "@/components/ui/card";
+import { Grid } from "@/components/ui/grid";
+import { Heading } from "@/components/ui/heading";
+import { Link } from "@/components/ui/link";
+import { Main } from "@/components/ui/main";
+import { Paragraph } from "@/components/ui/paragraph";
+import { Section } from "@/components/ui/section";
+
+import { Sponsors } from "~/app/[locale]/donate/sponsors";
+
+/* eslint-disable @stylistic/max-len */
+export default function DonatePage() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+function PageDescription() {
+ return (
+
+
+ Donate to Relivator
+
+
+
+ Developing something as ambitious as Relivator takes a lot of time,
+ especially since the project is primarily developed by just one person.
+ The development could be significantly accelerated by hiring additional
+ developers. Therefore, @blefnk (Nazar Kornienko), the author of this
+ project, will be immensely grateful to anyone who can donate to the
+ project in any amount. A big thank you to everyone in advance!
+
+ See our Sponsors
+
+ );
+}
+
+function WaysToDonate() {
+ return (
+
+ Ways to donate
+
+ We accept donations through the following platforms.
+
+
+ Please contact us if you would like to use a different method not listed
+ here.
+
+
+ );
+}
+
+function CardGrid({ children }: { children: ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
+
+type DonateCardProps = {
+ content?: ReactNode;
+ description: string;
+ linkHref: string;
+ linkText: string;
+ title: string;
+};
+
+function DonateCard({
+ title,
+ description,
+ linkText,
+ linkHref,
+ content = "",
+}: DonateCardProps) {
+ return (
+
+
+ {title}
+ {description}
+
+ {content}
+
+ {linkText}
+
+
+ );
+}
+
+function UsageDetails() {
+ const usageDetails = [
+ {
+ title: "Team Development",
+ },
+ {
+ title: "Contributor Pool",
+ },
+ {
+ title: "Dependencies",
+ },
+ {
+ title: "Community Projects",
+ },
+ {
+ title: "Support Systems",
+ },
+ {
+ title: "Marketing",
+ },
+ {
+ title: "Research",
+ },
+ {
+ title: "Legal Related",
+ },
+ {
+ title: "Miscellaneous",
+ },
+ ];
+
+ return (
+
+ How the money is used
+
+ The Relivator project uses donated money to benefit the project and the
+ Relivator community as a whole.
+
+
+ In general, we plan to spend money on the following areas each month:
+
+
+
+ {usageDetails.map((item, index) => (
+
+
+ {item.title}
+
+ {/*
+ {item.description}
+ */}
+
+ ))}
+
+
+ );
+}
+
+function DonationTiers() {
+ const tiers = [
+ {
+ title: "Platinum Sponsor",
+
+ // title: "Platinum Sponsor ($...+ per month)",
+ // description: "The most highest logo placement on homepage and readme.",
+ },
+ {
+ title: "Gold Sponsor",
+
+ // description: "Second highest logo placement on homepage and readme.",
+ },
+ {
+ title: "Silver Sponsor",
+
+ // description: "Third highest logo placement on homepage and readme.",
+ },
+ {
+ title: "Bronze Sponsor",
+
+ // description: "Fourth highest logo placement on homepage and readme.",
+ },
+ ];
+
+ return (
+
+ Donation tiers
+
+
+ We are still working on the list of what our pledges offer.
+
+
+ You might even receive more than what's described here and on the
+ donation platforms.
+
+
+ While we accept donations of any size, we do have a tier system with
+ different rewards at each level.
+
+
+
+ {tiers.map((tier, index) => (
+
+
+ {tier.title}
+
+ {/*
+ {tier.description}
+ */}
+
+ ))}
+
+
+ );
+}
+
+function Questions() {
+ const FAQs = [
+ // {
+ // question: "Are donations received by a non-profit organization?",
+ // answer:
+ // "All contributions, whether donated through ... are received by the ..., which is a 501(c)(6) non-profit organization.",
+ // },
+ {
+ question: "Do I receive a receipt for my donation?",
+ answer:
+ "Yes. If you donate through any platform which offers tickets, you will receive a receipt via email. Please let us know if receipt is not received within 24 hours.",
+ },
+
+ // {
+ // question: "Are donations tax-deductible?",
+ // answer:
+ // "No. Even though the ... is a 501(c)(6) non-profit organization, the IRS doesn't consider development of open source software to be a charitable activity.",
+ // },
+ {
+ question: "Who decides how the money is spent?",
+ answer:
+ "The Reliverse core team makes all decisions regarding who receives the money and how much is distributed.",
+ },
+ {
+ question: "Is there a way to see how the money is being spent?",
+ answer:
+ "Yes. Please contact us if you would like to see the financial reports.",
+ },
+ {
+ question: "Can I cancel my donation?",
+ answer:
+ "Yes. There is no long-term commitment. You can cancel your donation at any time by logging into the respective donation platform.",
+ },
+ {
+ question:
+ "How long does it take for my logo/avatar to appear on the site?",
+ answer:
+ "The logos/avatars on the Home/Donate page and GitHub are automatically updated every day so it should take no longer than 24 hours to appear.",
+ },
+ {
+ question: "Can I update my logo/avatar or URL?",
+ answer:
+ "We pull the logo/avatar and URL from your donation platform profiles, depending on which site you used to donate. Please contact us if you want to set a custom logo/avatar or URL.",
+ },
+ {
+ question:
+ "Can I ask to have my logo/avatar or another detail removed/edited?",
+ answer:
+ "Yes. Please contact us if you would like to have your logo/avatar or any other detail removed or edited.",
+ },
+ {
+ question: "Can I donate anonymously?",
+ answer:
+ "Yes. You can donate anonymously through platforms like PayPal or similar services.",
+ },
+ {
+ question: "Can I donate in a currency other than USD?",
+ answer:
+ "Yes. Most donation platforms accept multiple currencies. Please check the platform you're using for more information.",
+ },
+ {
+ question: "Can I make a one-time donation?",
+ answer:
+ "Yes. The easiest way to make a one-time donation is through platforms like PayPal, GitHub Sponsors, Ko-Fi, or Stripe which allow any amount.",
+ },
+ ];
+
+ return (
+
+
+ Frequently Asked Questions
+ {FAQs.map((faq, index) => (
+
+ {faq.question}
+ {faq.answer}
+
+ ))}
+
+ );
+}
+
+function GetStarted() {
+ return (
+
+
+ Ready to build your eCommerce platform?
+
+ Install Relivator
+
+
+ Become a Sponsor
+
+
+ );
+}
+
+function DonateCards() {
+ return (
+
+
+ // Exclusive updates and content
+ // Access to a private community
+ // Early access to new features
+ //
+ // }
+ />
+
+ // Donate through GitHub billing
+ // One-time and recurring donations
+ //
+ // Pay by credit card or use your existing billing relationship with
+ // GitHub (including invoicing)
+ //
+ // Show a “sponsor” badge on your GitHub profile
+ //
+ // }
+ />
+
+ // Instant donations
+ // Secure transactions
+ // Available worldwide
+ //
+ // }
+ />
+
+ // Small one-time donations
+ // Simple and fun way to support
+ // Easy and quick process
+ //
+ // }
+ />
+
+ // One-time donations
+ // Support with no fees
+ // Available worldwide
+ //
+ // }
+ />
+
+ //