@@ -134,8 +134,7 @@
:options="[
{
id: 'servers',
- link: 'https://bisecthosting.com/modrinth',
- shown: false,
+ link: '/servers',
},
{
id: 'app',
@@ -224,6 +223,7 @@
Profile
Notifications
Saved projects
+ My Servers
Settings
Projects
@@ -537,14 +537,14 @@ import {
} from "@modrinth/assets";
import { Button, ButtonStyled, OverflowMenu, Avatar } from "@modrinth/ui";
+import CrossIcon from "assets/images/utils/x.svg";
+import NotificationIcon from "assets/images/sidebar/notifications.svg";
+import ModerationIcon from "assets/images/sidebar/admin.svg";
import ModalCreation from "~/components/ui/ModalCreation.vue";
import { getProjectTypeMessage } from "~/utils/i18n-project-type.ts";
import { commonMessages } from "~/utils/common-messages.ts";
import CollectionCreateModal from "~/components/ui/CollectionCreateModal.vue";
import OrganizationCreateModal from "~/components/ui/OrganizationCreateModal.vue";
-import CrossIcon from "assets/images/utils/x.svg";
-import NotificationIcon from "assets/images/sidebar/notifications.svg";
-import ModerationIcon from "assets/images/sidebar/admin.svg";
const { formatMessage } = useVIntl();
@@ -774,6 +774,10 @@ const userMenuOptions = computed(() => {
id: "saved",
link: "/dashboard/collections",
},
+ {
+ id: "servers",
+ link: "/servers/manage",
+ },
{
id: "settings",
link: "/settings",
@@ -894,19 +898,23 @@ function runAnalytics() {
const config = useRuntimeConfig();
const replacedUrl = config.public.apiBaseUrl.replace("v2/", "");
- setTimeout(() => {
- $fetch(`${replacedUrl}analytics/view`, {
- method: "POST",
- body: {
- url: window.location.href,
- },
- headers: {
- Authorization: auth.value.token,
- },
- })
- .then(() => {})
- .catch(() => {});
- });
+ try {
+ setTimeout(() => {
+ $fetch(`${replacedUrl}analytics/view`, {
+ method: "POST",
+ body: {
+ url: window.location.href,
+ },
+ headers: {
+ Authorization: auth.value.token,
+ },
+ })
+ .then(() => {})
+ .catch(() => {});
+ });
+ } catch (e) {
+ console.error(`Sending analytics failed (CORS error? If so, ignore)`, e);
+ }
}
function toggleMobileMenu() {
isMobileMenuOpen.value = !isMobileMenuOpen.value;
diff --git a/apps/frontend/src/pages/index.vue b/apps/frontend/src/pages/index.vue
index ebbcc5de3..b6bce53af 100644
--- a/apps/frontend/src/pages/index.vue
+++ b/apps/frontend/src/pages/index.vue
@@ -13,6 +13,7 @@
>
{{ projectType.display }}s
+ servers
mods
@@ -724,6 +725,7 @@ async function updateSearchProjects() {
display: -webkit-box;
-webkit-line-clamp: 2;
+ line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
@@ -1166,7 +1168,7 @@ async function updateSearchProjects() {
> span {
position: absolute;
top: 0;
- animation: slide 10s infinite;
+ animation: slide 12s infinite;
@media (prefers-reduced-motion) {
animation-play-state: paused !important;
@@ -1175,32 +1177,36 @@ async function updateSearchProjects() {
@keyframes slide {
0%,
- 13% {
+ 10% {
top: 0;
}
- 17%,
- 30% {
+ 13%,
+ 23% {
top: -1.2em;
}
- 33%,
- 46% {
+ 26%,
+ 36% {
top: -2.4em;
}
- 50%,
- 63% {
+ 39%,
+ 49% {
top: -3.6em;
}
- 66%,
- 79% {
+ 52%,
+ 62% {
top: -4.8em;
}
- 83%,
- 96% {
+ 65%,
+ 75% {
top: -6em;
}
+ 78%,
+ 88% {
+ top: -7.2em;
+ }
99.99997%,
99.99998% {
- top: -7.2em;
+ top: -8.4em;
}
99.99999% {
top: 0;
diff --git a/apps/frontend/src/pages/servers/admin/index.vue b/apps/frontend/src/pages/servers/admin/index.vue
new file mode 100644
index 000000000..701d0084b
--- /dev/null
+++ b/apps/frontend/src/pages/servers/admin/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/index.vue b/apps/frontend/src/pages/servers/index.vue
new file mode 100644
index 000000000..b424744de
--- /dev/null
+++ b/apps/frontend/src/pages/servers/index.vue
@@ -0,0 +1,681 @@
+
+
+
+
+
+
+
+
+ Experimental
+
+
+
+ Start your own Minecraft server directly on Modrinth. Play your favorite mods, plugins,
+ and datapacks with friends — without the hassle of setup.
+
+
+
+ Start your server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Why Modrinth Servers?
+
+
+ Make a modpack. Now it's a server.
+
+
+ Choose from the thousands of modpacks on Modrinth or create your own. Invite your friends
+ when you're ready to play.
+
+
+
+
+
+
+
+
+
+
Play where your mods are
+
+ Experience a seamless integration between your mods and your servers. Modpacks install
+ within seconds and run without a hitch.
+
+
+
+
+
+
+
+
+
+
+
Easily join your friends
+
+ Your servers are sharable with just one link. Easily invite your friends to join your
+ server. Modrinth takes care of installing the mods.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Manage it all on Modrinth
+
+ Manage your server, mods, and players all in one place. No need to switch between
+ different platforms just to play.
+
+
+
+
+
+
+
+
+
+ Experience modern, reliable hosting powered by Pyro
+
+
+ Modrinth Servers are hosted on super-fast servers, with custom-built sofware to ensure
+ your server runs smoothly.
+
+
+
+
+
+
+
+
+
+
+ Included with your server
+
+
+ Comes with all the features you need.
+
+
+ Included with every server is a suite of features designed to provide a hosting experience
+ that only Modrinth can offer.
+
+
+
+
+
+
+
+
+
+
+
Custom URL
+
+ Share your server with a custom
+ modrinth.gg URL.
+
+
+ {{ currentText }} .modrinth.gg
+
+
+
+
+
+
+
+
+
Backups included
+
+ With 15 backup slots stored off-site with Backblaze, your server is always safe.
+
+
+
+
+
Easy to use file manager
+
+ Manage, search, and upload files directly to your server with ease.
+
+
+
+
+ 8.49 GB used
+
+
+
+
+
+
+
+
+
+
+
Help when you need it
+
+ Reach out to the Modrinth team for help with your server at any time.
+
+
+
+
+
+
+
+
+
+ Start your server on Modrinth
+
+
+ There's a plan for everyone. Choose the one that fits your needs.
+
+
+
+
+
+
+ Perfect for vanilla multiplayer, small friend groups, SMPs, and light modding.
+
+
+
4 GB RAM
+
+
32 GB Storage
+
+
+ $12/month
+
+
+
+ Get Started
+
+
+
+
+
+
+
+ Great for modded multiplayer and small communities.
+
+
6 GB RAM
+
+
48 GB Storage
+
+
+ $18/month
+
+
+
+ Get Started
+
+
+
+
+
+
+
+ Ideal for larger communities, modpacks, and heavy modding.
+
+
8 GB RAM
+
+
64 GB Storage
+
+
+ $24/month
+
+
+
+ Get Started
+
+
+
+
+
+
+
+
+
Build your own
+
+ If you're a more technical server administator, you can pick your own RAM and storage
+ options.
+
+
+
+
+
+
+ Build your own
+
+
+
+
Starting at $3/GB RAM
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id].vue b/apps/frontend/src/pages/servers/manage/[id].vue
new file mode 100644
index 000000000..721c6a523
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id].vue
@@ -0,0 +1,503 @@
+
+
+
+
+
+
{{ errorTitle }} - {{ errorMessage }}
+
+
+
+
+ Change Loader
+
+
+
+
+
+
+
+
+
+
+ All servers
+
+
+
+
+ {{ serverData.name }}
+
+
+
+
+
+
+ Installing...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Something went wrong...
+
+
+
+
+ Hang on, we're reconnecting to your server.
+
+
+
+
+ We're preparing your server, this may take a few minutes.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/backups.vue b/apps/frontend/src/pages/servers/manage/[id]/backups.vue
new file mode 100644
index 000000000..4fc9ed920
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/backups.vue
@@ -0,0 +1,474 @@
+
+
+
+
+
+
+
+ Your server will temporarily shutdown while the backup is being created.
+
+
+
+
Cancel
+
+
+ Create backup
+
+
+
+
+
+
+
+
+
+ Cancel
+
+ Rename backup
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ new Date(
+ backups?.find((b: any) => b.id === currentBackup)?.created_at || "",
+ ).toLocaleString()
+ }}
+
+
+
+
+ Cancel
+
+ Restore backup
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ new Date(
+ backups?.find((b: any) => b.id === currentBackup)?.created_at || "",
+ ).toLocaleString()
+ }}
+
+
+
+
+ Cancel
+
+ Delete backup
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.backup_quota - data.used_backup_quota }} Slots avaliable
+
+
+
+
+
+ Create backup
+
+
+
+
+
+
+
+
+
+
+
{{ backup.name }}
+
+ Latest
+
+
+
+ {{ new Date(backup.created_at).toLocaleString() }}
+
+
+
+
+
+ Rename
+ Restore
+ Download
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/content.vue b/apps/frontend/src/pages/servers/manage/[id]/content.vue
new file mode 100644
index 000000000..d0268351a
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/content.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/content/index.vue b/apps/frontend/src/pages/servers/manage/[id]/content/index.vue
new file mode 100644
index 000000000..5dc44a57f
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/content/index.vue
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ This page is under construction - some features may not be available yet, or are subject to
+ change.
+
+
+
+
+
+
+
+
+
+ {{ mod.name === null ? "External Mod" : mod.name }}
+
+ Disabled
+
+
+
+ {{
+ mod.name === null ? mod.filename.replace(".disabled", "") : mod.version_number
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You haven't added any mods yet, time to add some!
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/files.vue b/apps/frontend/src/pages/servers/manage/[id]/files.vue
new file mode 100644
index 000000000..f5eb158c0
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/files.vue
@@ -0,0 +1,1077 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ segment || "" }}
+
+
+
+
+
+
+
+ {{
+ sortMethod === "default"
+ ? "Default Sort"
+ : sortMethod === "modified"
+ ? "Recently Modified"
+ : sortMethod === "filesOnly"
+ ? "Files Only"
+ : sortMethod === "foldersOnly"
+ ? "Folders Only"
+ : "Default Sort"
+ }}
+
+
+
+ Default Sort
+ Recently Modified
+ Files Only
+ Folders Only
+
+
+
+ Search folder
+
+
+
+
+
+
+
+
+ File
+ Directory
+ Upload
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ editingFile?.name }}
+
+
+
+
+
+
+
+
+
+
+
+ Save
+ Save as...
+
+
+
+
+ Save & Restart
+
+
+
+
+
+
+
+
+
+
+
showContextMenu(item, x, y)"
+ />
+
+
+ Error loading more directories {{ loadError }}
+
+
+
+
+
+
+
+
+
+
This folder is empty
+
There are no files or folders in this folder.
+
+
+
+
+
+
+
Unable to list files
+
+ Unfortunately, we were unable to list the files in this folder. If this issue
+ persists, contact support.
+
+
+
+
+ Go to homepage
+
+
+
+
+
+
+
Unable to fetch files
+
+ This path is no longer valid or we couldn't find it. If this issue persists, contact
+ support.
+
+
+
+
+
+
+
+
+
Drop files here to upload
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/index.vue b/apps/frontend/src/pages/servers/manage/[id]/index.vue
new file mode 100644
index 000000000..4a5be6c2a
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/index.vue
@@ -0,0 +1,687 @@
+
+
+
+
+
+
+
+
+
{{ problem.message }}
+
+
+
+ {{ solution.message }}
+
+
+
+
+
+
{{ serverData?.name }} shut down unexpectedly.
+
+ We could not find any specific problems, but you can try restarting the server.
+
+
+
+
+
+
+
+
+
+
+
+ (selectedSuggestionIndex = index)"
+ >
+ {{ suggestion }}
+
+
+
+
+ {{
+ " ".repeat(commandInput.length - 1)
+ }}
+ {{ bestSuggestion }}
+
+ TAB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options.vue b/apps/frontend/src/pages/servers/manage/[id]/options.vue
new file mode 100644
index 000000000..e66191f85
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/billing.vue b/apps/frontend/src/pages/servers/manage/[id]/options/billing.vue
new file mode 100644
index 000000000..ab22342a4
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/billing.vue
@@ -0,0 +1,12 @@
+
+
+
You can manage your server's billing from Settings > Billing and subscriptions.
+
+ Go to Billing
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/index.vue b/apps/frontend/src/pages/servers/manage/[id]/options/index.vue
new file mode 100644
index 000000000..3b4975842
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/index.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+ Server name
+ Change the name of your server. This name is only visible on Modrinth.
+
+
+
+
+ Server name must be at least 1 character long.
+
+
+ Server name can contain any character.
+
+
+
+
+
+
+ Server icon
+
+ Change your server's icon. Changes will be visible on the Minecraft server list and on
+ Modrinth.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/info.vue b/apps/frontend/src/pages/servers/manage/[id]/options/info.vue
new file mode 100644
index 000000000..5eeee4f61
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/info.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ SFTP
+ SFTP allows you to access your server's files from outside of Modrinth.
+
+ Launch SFTP
+
+
+
+ {{ data?.sftp_host }}
+
+ server address
+
+
+
+ {{ data?.sftp_username }}
+ username
+
+
+
+
+ {{
+ showPassword ? data?.sftp_password : "*".repeat(data?.sftp_password?.length ?? 0)
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
password
+
+
+
+
+
+
Info
+
+
+
+
+ {{ property.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue b/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue
new file mode 100644
index 000000000..fe423e6a9
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue
@@ -0,0 +1,629 @@
+
+
+
+
+
+
+
+
+ {{
+ isSecondPhase
+ ? "You are attempting to delete all of your files without backing up. Are you sure this is what you're intending to do?"
+ : "Choose the version of Minecraft you want to use for this server."
+ }}
+
+
+
+
+
+
+ Clean reinstall
+
+
+
+ Backup files
+
+
+ {{ serverCheckError }}
+
+
+
+
+ {{ isSecondPhase ? "No" : "Cancel" }}
+
+
+ {{
+ isSecondPhase
+ ? "Yes"
+ : loadingServerCheck
+ ? "Loading..."
+ : isDangerous
+ ? "Erase and install"
+ : "Install"
+ }}
+
+
+
+
+
+
+
+
+
+
Modpack
+
+
+
+
+
+
+
+
+ {{
+ data.project?.description && data.project.description.length > 150
+ ? data.project.description.substring(0, 150) + "..."
+ : data.project?.description || ""
+ }}
+
+
+
+
+
+
+
+
+ Install modpack
+
+ or
+ Upload mrpack
+
+
+
+
+
+
Mod loader
+
+ The mod loader that provides the ability to load mods into your server. Changing this
+ will reinstall the server.
+
+
+
+
+
+
+
+ {{ data.loader === "Vanilla" || !data.loader ? "Reinstall" : "Install" }}
+
+
+
+
+
+
+
+ {{ data.loader === "Fabric" ? "Reinstall" : "Install" }}
+
+
+
+
+
+
+
+ {{ data.loader === "Quilt" ? "Reinstall" : "Install" }}
+
+
+
+
+
+
+
+ {{ data.loader === "Forge" ? "Reinstall" : "Install" }}
+
+
+
+
+
+
+
+ {{ data.loader?.toLowerCase() === "neoforge" ? "Reinstall" : "Install" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/network.vue b/apps/frontend/src/pages/servers/manage/[id]/options/network.vue
new file mode 100644
index 000000000..2da75fb96
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/network.vue
@@ -0,0 +1,411 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Custom subdomain
+ Your friends can connect to your server using this URL.
+
+
+
+ .modrinth.gg
+
+
+ Subdomain must be at least 5 characters long and can only contain alphanumeric
+ characters and dashes.
+
+
+
+
+
+
+ Generated DNS records
+
+ Setup your personal domain to connect to your server via custom DNS records.
+
+
+
+ Export DNS records
+
+
+
+
+
+
+
+
+
+
+
+ {{ record.type }}
+
+ type
+
+
+
+
+
+ {{ record.name }}
+
+ name
+
+
+
+
+
+ {{ record.content }}
+
+ content
+
+
+
+
+
+
+
+
+
+ You must own your own domain to use this feature.
+
+
+
+
+
+
+
+
+ Allocations
+
+ Configure additional ports for internet-facing features like map viewers or voice
+ chat mods.
+
+
+
+
+
+
+ New allocation
+
+
+
+
+
+
+
+
+ Primary Allocation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ allocation.name }}
+
+ name
+
+
+
+ {{ allocation.port }}
+
+ port
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/preferences.vue b/apps/frontend/src/pages/servers/manage/[id]/options/preferences.vue
new file mode 100644
index 000000000..8694c7ec4
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/preferences.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
Server preferences
+
+
+ {{ preferences[key].displayName }}
+ {{ preferences[key].description }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/properties.vue b/apps/frontend/src/pages/servers/manage/[id]/options/properties.vue
new file mode 100644
index 000000000..c9f9f5706
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/properties.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+
Server properties
+
+ Edit the Minecraft server properties file. If you're unsure about a specific property,
+ the
+
+ Minecraft wiki
+
+ has more detailed information about each property.
+
+
+
+
+ Search server properties
+
+
+
+
+
+ {{ formatPropertyName(index) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The server properties file has not been generated yet. Start up your server to generate it.
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue b/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue
new file mode 100644
index 000000000..a6e875296
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/[id]/options/startup.vue
@@ -0,0 +1,167 @@
+
+
+
+
+ These settings are for advanced users. Changing them can break your server.
+
+
+
+
+
+
+ Startup Command
+ The command that runs when your server is started.
+
+ Restore Default Command
+
+
+
+
+
+
+
+ Java Version
+
+ The version of Java that your server will run on. Your server is running Minecraft
+ {{ data.mc_version }}
+
+
+
+
+
+
+ Runtime
+ The Java runtime your server will use.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/servers/manage/index.vue b/apps/frontend/src/pages/servers/manage/index.vue
new file mode 100644
index 000000000..21a2feec7
--- /dev/null
+++ b/apps/frontend/src/pages/servers/manage/index.vue
@@ -0,0 +1,152 @@
+
+
+
+
Servers
+
+
+ Search
+
+
+
+
+
+
+ New Server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/settings/billing/charges.vue b/apps/frontend/src/pages/settings/billing/charges.vue
index c63148319..c1195d2a4 100644
--- a/apps/frontend/src/pages/settings/billing/charges.vue
+++ b/apps/frontend/src/pages/settings/billing/charges.vue
@@ -16,6 +16,9 @@
Modrinth Plus
+
+ Modrinth Servers
+
Unknown product
{{ charge.subscription_interval }}
diff --git a/apps/frontend/src/pages/settings/billing/index.vue b/apps/frontend/src/pages/settings/billing/index.vue
index cf53272d1..c785a3607 100644
--- a/apps/frontend/src/pages/settings/billing/index.vue
+++ b/apps/frontend/src/pages/settings/billing/index.vue
@@ -4,7 +4,7 @@
{{ formatMessage(messages.subscriptionDescription) }}
{
cancelSubscriptionId = midasSubscription.id;
- $refs.modal_cancel.show();
+ $refs.modalCancel.show();
},
},
]"
@@ -123,7 +123,7 @@
@click="
() => {
cancelSubscriptionId = midasSubscription.id;
- $refs.modal_cancel.show();
+ $refs.modalCancel.show();
}
"
>
@@ -152,7 +152,163 @@
+
+
+
+
+
+
+
+
+
+ A linked server couldn't be found with this subscription. It may have been deleted
+ or suspended. Please contact Modrinth support with the following information:
+
+
+
+
+
+
+
+ {{ getProductSize(getPyroProduct(subscription)) }} Plan
+
+
+
+
+
+ {{ getPyroProduct(subscription)?.metadata?.cpu }} vCores (CPU)
+
+
+
+
+ {{
+ getPyroProduct(subscription)?.metadata?.ram
+ ? getPyroProduct(subscription).metadata.ram / 1024 + " GB RAM"
+ : ""
+ }}
+
+
+
+
+
+ {{
+ getPyroProduct(subscription)?.metadata?.swap
+ ? getPyroProduct(subscription).metadata.swap / 1024 + " GB Swap"
+ : ""
+ }}
+
+
+
+
+
+ {{
+ getPyroProduct(subscription)?.metadata?.storage
+ ? getPyroProduct(subscription).metadata.storage / 1024 + " GB SSD"
+ : ""
+ }}
+
+
+
+
+
+
+
+ {{
+ formatPrice(
+ vintl.locale,
+ getProductPrice(getPyroProduct(subscription), subscription.interval)
+ .prices.intervals[subscription.interval],
+ getProductPrice(getPyroProduct(subscription), subscription.interval)
+ .currency_code,
+ )
+ }}
+
+ /{{ subscription.interval.replace("ly", "") }}
+
+
+
+ Since {{ $dayjs(subscription.created).format("MMMM D, YYYY") }}
+
+
+ Renews {{ $dayjs(getPyroCharge(subscription).due).format("MMMM D, YYYY") }}
+
+
+ Your payment is being processed. Perks will activate once payment is
+ complete.
+
+
+ Expires {{ $dayjs(getPyroCharge(subscription).due).format("MMMM D, YYYY") }}
+
+
+ Your subscription payment failed. Please update your payment method.
+
+
+
+
+
+
+
+ Cancel
+
+
+
+ Resubscribe
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/frontend/src/pages/user/[id].vue b/apps/frontend/src/pages/user/[id].vue
index f830c08ae..ed6441c2f 100644
--- a/apps/frontend/src/pages/user/[id].vue
+++ b/apps/frontend/src/pages/user/[id].vue
@@ -498,7 +498,7 @@ const badges = computed(() => {
});
async function copyId() {
- await navigator.clipboard.writeText(project.value.id);
+ await navigator.clipboard.writeText(user.value.id);
}
const navLinks = computed(() => [
diff --git a/apps/frontend/src/public/Monocraft.ttf b/apps/frontend/src/public/Monocraft.ttf
new file mode 100644
index 000000000..4066b0a98
Binary files /dev/null and b/apps/frontend/src/public/Monocraft.ttf differ
diff --git a/apps/frontend/src/server/routes/loader-versions.ts b/apps/frontend/src/server/routes/loader-versions.ts
new file mode 100644
index 000000000..989bac2b3
--- /dev/null
+++ b/apps/frontend/src/server/routes/loader-versions.ts
@@ -0,0 +1,36 @@
+const getLoaderVersions = async (loader: string) => {
+ const loaderVersions = await fetch(
+ `https://launcher-meta.modrinth.com/${loader?.toLowerCase()}/v0/manifest.json`,
+ );
+ return loaderVersions.json();
+};
+
+const getLoaderVersion = async (loader: string, version: string) => {
+ const loaderVersion = await fetch(
+ `https://launcher-meta.modrinth.com/${loader?.toLowerCase()}/v0/versions/${version}.json`,
+ );
+ return loaderVersion.json();
+};
+
+export default defineEventHandler(async (e) => {
+ const params = new URLSearchParams(e._path?.split("?")[1] ?? "");
+ if (!params.has("loader"))
+ return new Response(
+ JSON.stringify({
+ error: "Missing loader",
+ }),
+ { status: 400, headers: { "Content-Type": "application/json" } },
+ );
+ const loader = params.get("loader");
+ const version = params.get("version");
+ if (version) {
+ const loaderVersion = await getLoaderVersion(loader!, version);
+ return new Response(JSON.stringify(loaderVersion), {
+ headers: { "Content-Type": "application/json" },
+ });
+ }
+ const loaderVersions = await getLoaderVersions(loader!);
+ return new Response(JSON.stringify(loaderVersions), {
+ headers: { "Content-Type": "application/json" },
+ });
+});
diff --git a/apps/frontend/src/types/servers.ts b/apps/frontend/src/types/servers.ts
new file mode 100644
index 000000000..4b19c0b1b
--- /dev/null
+++ b/apps/frontend/src/types/servers.ts
@@ -0,0 +1,214 @@
+export interface Mod {
+ id: string;
+ filename: string;
+ modrinth_ids: {
+ project_id: string;
+ version_id: string;
+ };
+}
+
+interface License {
+ id: string;
+ name: string;
+ url: string;
+}
+
+interface DonationUrl {
+ id: string;
+ platform: string;
+ url: string;
+}
+
+interface GalleryItem {
+ url: string;
+ featured: boolean;
+ title: string;
+ description: string;
+ created: string;
+ ordering: number;
+}
+
+export interface Project {
+ slug: string;
+ title: string;
+ description: string;
+ categories: string[];
+ client_side: "required" | "optional";
+ server_side: "required" | "optional";
+ body: string;
+ status: "approved" | "pending" | "rejected";
+ requested_status: "approved" | "pending" | "rejected";
+ additional_categories: string[];
+ issues_url: string;
+ source_url: string;
+ wiki_url: string;
+ discord_url: string;
+ donation_urls: DonationUrl[];
+ project_type: "mod" | "resourcepack" | "map" | "plugin";
+ downloads: number;
+ icon_url: string;
+ color: number;
+ thread_id: string;
+ monetization_status: "monetized" | "non-monetized";
+ id: string;
+ team: string;
+ body_url: string | null;
+ moderator_message: string | null;
+ published: string;
+ updated: string;
+ approved: string;
+ queued: string;
+ followers: number;
+ license: License;
+ versions: string[];
+ game_versions: string[];
+ loaders: string[];
+ gallery: GalleryItem[];
+}
+
+export interface ServerBackup {
+ id: string;
+ name: string;
+ created_at: string;
+}
+
+export interface Allocation {
+ name: string;
+ port: number;
+}
+
+export interface Server {
+ server_id: string;
+ name: string;
+ status: string;
+ net: {
+ ip: string;
+ port: number;
+ domain: string;
+ allocations: Allocation[];
+ };
+ game: string;
+ loader: string | null;
+ loader_version: string | null;
+ mc_version: string | null;
+ backup_quota: number;
+ used_backup_quota: number;
+ backups: ServerBackup[];
+ mods: Mod[];
+ project: Project | null;
+ suspension_reason: string | null;
+ image: string | null;
+ upstream?: {
+ kind: "modpack";
+ project_id: string;
+ version_id: string;
+ };
+ motd: string;
+}
+
+export interface Stats {
+ current: {
+ cpu_percent: number;
+ ram_usage_bytes: number;
+ ram_total_bytes: number;
+ storage_usage_bytes: number;
+ storage_total_bytes: number;
+ };
+ past: {
+ cpu_percent: number;
+ ram_usage_bytes: number;
+ ram_total_bytes: number;
+ storage_usage_bytes: number;
+ storage_total_bytes: number;
+ };
+ graph: {
+ cpu: number[];
+ ram: number[];
+ };
+}
+
+export interface WSAuth {
+ url: string;
+ token: string;
+}
+
+export type ServerState = "running" | "stopped" | "crashed";
+// export type WebsocketEventType =
+// | "log"
+// | "auth"
+// | "stats"
+// | "power-state"
+// | "auth-expiring"
+// | "auth-incorrect"
+// | "installation-result"
+// | (string & {});
+
+// export interface WSEvent {
+// event: WebsocketEventType;
+// message: string;
+// state: ServerState;
+// }
+
+export interface WSLogEvent {
+ event: "log";
+ message: string;
+}
+
+type CurrentStats = Stats["current"];
+
+export interface WSStatsEvent extends CurrentStats {
+ event: "stats";
+}
+
+export interface WSAuthExpiringEvent {
+ event: "auth-expiring";
+}
+
+export interface WSPowerStateEvent {
+ event: "power-state";
+ state: ServerState;
+}
+
+export interface WSAuthIncorrectEvent {
+ event: "auth-incorrect";
+}
+
+export interface WSInstallationResultOkEvent {
+ event: "installation-result";
+ result: "ok";
+}
+
+export interface WSInstallationResultErrEvent {
+ event: "installation-result";
+ result: "err";
+ reason: string;
+}
+export type WSInstallationResultEvent = WSInstallationResultOkEvent | WSInstallationResultErrEvent;
+
+export interface WSAuthOkEvent {
+ event: "auth-ok";
+}
+
+export interface WSUptimeEvent {
+ event: "uptime";
+ uptime: number; // seconds
+}
+
+export interface WSNewModEvent {
+ event: "new-mod";
+}
+
+export type WSEvent =
+ | WSLogEvent
+ | WSStatsEvent
+ | WSPowerStateEvent
+ | WSAuthExpiringEvent
+ | WSAuthIncorrectEvent
+ | WSInstallationResultEvent
+ | WSAuthOkEvent
+ | WSUptimeEvent
+ | WSNewModEvent;
+
+export interface Servers {
+ servers: Server[];
+}
diff --git a/apps/frontend/src/utils/common-messages.ts b/apps/frontend/src/utils/common-messages.ts
index 8e96ff4aa..b1ded8ac9 100644
--- a/apps/frontend/src/utils/common-messages.ts
+++ b/apps/frontend/src/utils/common-messages.ts
@@ -115,6 +115,10 @@ export const commonMessages = defineMessages({
id: "label.scopes",
defaultMessage: "Scopes",
},
+ serversLabel: {
+ id: "label.servers",
+ defaultMessage: "Servers",
+ },
settingsLabel: {
id: "label.settings",
defaultMessage: "Settings",
diff --git a/apps/frontend/tailwind.config.js b/apps/frontend/tailwind.config.js
index 887315d8b..6b7f1f0cc 100644
--- a/apps/frontend/tailwind.config.js
+++ b/apps/frontend/tailwind.config.js
@@ -67,6 +67,7 @@ module.exports = {
textHover: "var(--color-button-text-hover)",
bgActive: "var(--color-button-bg-active)",
textActive: "var(--color-button-text-active)",
+ border: "var(--color-button-border)",
},
toggleHandle: "var(--color-toggle-handle)",
dropdown: {
diff --git a/package.json b/package.json
index 6156dc4aa..be16cf3f9 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
},
"devDependencies": {
"prettier": "^3.3.2",
- "turbo": "^2.0.6",
+ "turbo": "^2.2.3",
"vue": "^3.4.31"
},
"packageManager": "pnpm@9.4.0",
diff --git a/packages/app-lib/src/config.rs b/packages/app-lib/src/config.rs
index aff704c2a..33fbce280 100644
--- a/packages/app-lib/src/config.rs
+++ b/packages/app-lib/src/config.rs
@@ -1,6 +1,6 @@
//! Configuration structs
-pub const MODRINTH_API_URL: &str = "https://api.modrinth.com/v2/";
-pub const MODRINTH_API_URL_V3: &str = "https://api.modrinth.com/v3/";
+pub const MODRINTH_API_URL: &str = "https://staging-api.modrinth.com/v2/";
+pub const MODRINTH_API_URL_V3: &str = "https://staging-api.modrinth.com/v3/";
pub const META_URL: &str = "https://launcher-meta.modrinth.com/";
diff --git a/packages/assets/external/pyro.svg b/packages/assets/external/pyro.svg
new file mode 100644
index 000000000..066ec90c5
--- /dev/null
+++ b/packages/assets/external/pyro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/assets/icons/youtube.svg b/packages/assets/external/youtube.svg
similarity index 100%
rename from packages/assets/icons/youtube.svg
rename to packages/assets/external/youtube.svg
diff --git a/packages/assets/icons/cloud.svg b/packages/assets/icons/cloud.svg
new file mode 100644
index 000000000..d1f6d097b
--- /dev/null
+++ b/packages/assets/icons/cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/packages/assets/icons/cog.svg b/packages/assets/icons/cog.svg
new file mode 100644
index 000000000..56499bf7b
--- /dev/null
+++ b/packages/assets/icons/cog.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/packages/assets/icons/cpu.svg b/packages/assets/icons/cpu.svg
new file mode 100644
index 000000000..f95f519b3
--- /dev/null
+++ b/packages/assets/icons/cpu.svg
@@ -0,0 +1,14 @@
+
+
+
\ No newline at end of file
diff --git a/packages/assets/icons/cube.svg b/packages/assets/icons/cube.svg
new file mode 100644
index 000000000..9721e1d15
--- /dev/null
+++ b/packages/assets/icons/cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/packages/assets/icons/db.svg b/packages/assets/icons/db.svg
new file mode 100644
index 000000000..196cf349e
--- /dev/null
+++ b/packages/assets/icons/db.svg
@@ -0,0 +1,14 @@
+
+
+
\ No newline at end of file
diff --git a/packages/assets/icons/loader.svg b/packages/assets/icons/loader.svg
new file mode 100644
index 000000000..88ee066fd
--- /dev/null
+++ b/packages/assets/icons/loader.svg
@@ -0,0 +1,19 @@
+
+
+
+
\ No newline at end of file
diff --git a/packages/assets/icons/test.svg b/packages/assets/icons/test.svg
new file mode 100644
index 000000000..4854e5ac9
--- /dev/null
+++ b/packages/assets/icons/test.svg
@@ -0,0 +1,14 @@
+
+
+
\ No newline at end of file
diff --git a/packages/assets/index.ts b/packages/assets/index.ts
index 1eca3e5b2..ff578f67e 100644
--- a/packages/assets/index.ts
+++ b/packages/assets/index.ts
@@ -23,7 +23,8 @@ import _PayPalIcon from './external/paypal.svg?component'
import _RedditIcon from './external/reddit.svg?component'
import _TwitterIcon from './external/twitter.svg?component'
import _WindowsIcon from './external/windows.svg?component'
-import _YouTubeIcon from './icons/youtube.svg?component'
+import _YouTubeIcon from './external/youtube.svg?component'
+import _PyroIcon from './external/pyro.svg?component'
// Icons
import _AlignLeftIcon from './icons/align-left.svg?component'
@@ -160,6 +161,13 @@ import _XIcon from './icons/x.svg?component'
import _XCircleIcon from './icons/x-circle.svg?component'
import _ZoomInIcon from './icons/zoom-in.svg?component'
import _ZoomOutIcon from './icons/zoom-out.svg?component'
+import _CubeIcon from './icons/cube.svg?component'
+import _CloudIcon from './icons/cloud.svg?component'
+import _CogIcon from './icons/cog.svg?component'
+import _CPUIcon from './icons/cpu.svg?component'
+import _DBIcon from './icons/db.svg?component'
+import _LoaderIcon from './icons/loader.svg?component'
+import _ImportIcon from './icons/import.svg?component'
// Editor Icons
import _BoldIcon from './icons/bold.svg?component'
@@ -196,6 +204,7 @@ export const RedditIcon = _RedditIcon
export const TwitterIcon = _TwitterIcon
export const WindowsIcon = _WindowsIcon
export const YouTubeIcon = _YouTubeIcon
+export const PyroIcon = _PyroIcon
export const AlignLeftIcon = _AlignLeftIcon
export const ArchiveIcon = _ArchiveIcon
export const ArrowBigUpDashIcon = _ArrowBigUpDashIcon
@@ -339,5 +348,12 @@ export const TextQuoteIcon = _TextQuoteIcon
export const Heading1Icon = _Heading1Icon
export const Heading2Icon = _Heading2Icon
export const Heading3Icon = _Heading3Icon
+export const CubeIcon = _CubeIcon
+export const CloudIcon = _CloudIcon
+export const CogIcon = _CogIcon
+export const CPUIcon = _CPUIcon
+export const DBIcon = _DBIcon
+export const LoaderIcon = _LoaderIcon
+export const ImportIcon = _ImportIcon
export const CardIcon = _CardIcon
export const SparklesIcon = _SparklesIcon
diff --git a/packages/ui/src/components/base/PopoutMenu.vue b/packages/ui/src/components/base/PopoutMenu.vue
index 007818291..0fd73860a 100644
--- a/packages/ui/src/components/base/PopoutMenu.vue
+++ b/packages/ui/src/components/base/PopoutMenu.vue
@@ -104,19 +104,30 @@ defineExpose({
})
const handleClickOutside = (event) => {
+ if (!dropdown.value) return
+
+ const isContextMenuClick = event.button === 2 || event.which === 3
const elements = document.elementsFromPoint(event.clientX, event.clientY)
if (
- dropdown.value.$el !== event.target &&
- !elements.includes(dropdown.value.$el) &&
- !dropdown.value.contains(event.target)
+ (dropdown.value !== event.target &&
+ !elements.includes(dropdown.value) &&
+ !dropdown.value.contains(event.target)) ||
+ isContextMenuClick
) {
dropdownVisible.value = false
emit('close')
}
}
+const handleKeyDown = (event) => {
+ if (event.key === 'Escape') {
+ hide()
+ }
+}
+
onMounted(() => {
window.addEventListener('click', handleClickOutside)
+ window.addEventListener('mouseup', handleClickOutside)
window.addEventListener('resize', updateDirection)
window.addEventListener('scroll', updateDirection)
window.addEventListener('keydown', handleKeyDown)
@@ -125,16 +136,11 @@ onMounted(() => {
onBeforeUnmount(() => {
window.removeEventListener('click', handleClickOutside)
+ window.removeEventListener('mouseup', handleClickOutside)
window.removeEventListener('resize', updateDirection)
window.removeEventListener('scroll', updateDirection)
window.removeEventListener('keydown', handleKeyDown)
})
-
-function handleKeyDown(event) {
- if (event.key === 'Escape') {
- hide()
- }
-}
diff --git a/packages/ui/src/components/modal/Modal.vue b/packages/ui/src/components/modal/Modal.vue
index 6f3bea13a..7f034d7ee 100644
--- a/packages/ui/src/components/modal/Modal.vue
+++ b/packages/ui/src/components/modal/Modal.vue
@@ -148,8 +148,9 @@ defineExpose({
position: fixed;
box-shadow: var(--shadow-raised), var(--shadow-inset);
border-radius: var(--radius-lg);
+ background-color: var(--color-raised-bg);
max-height: calc(100% - 2 * var(--gap-lg));
- overflow-y: auto;
+ overflow-y: visible;
width: 600px;
pointer-events: auto;
@@ -166,10 +167,6 @@ defineExpose({
}
}
- .content {
- background-color: var(--color-raised-bg);
- }
-
transform: translateY(50vh);
visibility: hidden;
opacity: 0;
diff --git a/packages/ui/src/components/modal/NewModal.vue b/packages/ui/src/components/modal/NewModal.vue
index ed7c7a0a3..ba83c6973 100644
--- a/packages/ui/src/components/modal/NewModal.vue
+++ b/packages/ui/src/components/modal/NewModal.vue
@@ -75,6 +75,7 @@ const visible = ref(false)
function show(event?: MouseEvent) {
open.value = true
+ document.body.style.overflow = 'hidden'
window.addEventListener('mousedown', updateMousePosition)
window.addEventListener('keydown', handleKeyDown)
if (event) {
@@ -91,6 +92,7 @@ function show(event?: MouseEvent) {
function hide() {
props.onHide()
visible.value = false
+ document.body.style.overflow = ''
window.removeEventListener('mousedown', updateMousePosition)
window.removeEventListener('keydown', handleKeyDown)
setTimeout(() => {
@@ -143,12 +145,6 @@ function handleKeyDown(event: KeyboardEvent) {
opacity: 0;
transition: all 0.2s ease-out;
background: linear-gradient(to bottom, rgba(29, 48, 43, 0.52) 0%, rgba(14, 21, 26, 0.95) 100%);
- //transform: translate(
- // calc((-50vw + var(--_mouse-x, 50vw) * 1px) / 2),
- // calc((-50vh + var(--_mouse-y, 50vh) * 1px) / 2)
- // )
- // scaleX(0.8) scaleY(0.5);
- border-radius: 180px;
filter: blur(5px);
@media (prefers-reduced-motion) {
@@ -159,8 +155,6 @@ function handleKeyDown(event: KeyboardEvent) {
opacity: 1;
visibility: visible;
backdrop-filter: blur(5px);
- transform: translate(0, 0) scaleX(1) scaleY(1);
- border-radius: 0px;
}
&.noblur {
diff --git a/packages/utils/index.d.ts b/packages/utils/index.d.ts
index 99cbfbefb..905304bdd 100644
--- a/packages/utils/index.d.ts
+++ b/packages/utils/index.d.ts
@@ -1,6 +1,10 @@
export const BASE62_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
type Base62Char = (typeof BASE62_CHARS)[number]
+export function formatPrice(locale: string, price: number, currency: string): string
+
+export function getCurrency(userCountry: string): string
+
declare global {
type ModrinthId = `${Base62Char}`[]
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a76e4287d..8dcc6ccf0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,8 +17,8 @@ importers:
specifier: ^3.3.2
version: 3.3.2
turbo:
- specifier: ^2.0.6
- version: 2.0.6
+ specifier: ^2.2.3
+ version: 2.2.3
vue:
specifier: ^3.4.31
version: 3.4.31(typescript@5.5.4)
@@ -79,7 +79,7 @@ importers:
version: 1.11.11
floating-vue:
specifier: ^5.2.2
- version: 5.2.2(@nuxt/kit@3.12.3)(vue@3.4.31(typescript@5.5.4))
+ version: 5.2.2(@nuxt/kit@3.12.3(magicast@0.3.5)(rollup@4.21.2))(vue@3.4.31(typescript@5.5.4))
ofetch:
specifier: ^1.3.4
version: 1.3.4
@@ -200,12 +200,27 @@ importers:
'@modrinth/utils':
specifier: workspace:*
version: link:../../packages/utils
+ '@pinia/nuxt':
+ specifier: ^0.5.1
+ version: 0.5.1(magicast@0.3.4)(rollup@4.18.0)(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3))
'@vintl/vintl':
specifier: ^4.4.1
version: 4.4.1(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3))
+ '@vueuse/core':
+ specifier: ^11.1.0
+ version: 11.1.0(vue@3.4.31(typescript@5.5.3))
+ ace-builds:
+ specifier: ^1.36.2
+ version: 1.36.2
+ ansi-to-html:
+ specifier: ^0.7.2
+ version: 0.7.2
dayjs:
specifier: ^1.11.7
version: 1.11.11
+ dompurify:
+ specifier: ^3.1.7
+ version: 3.1.7
floating-vue:
specifier: 2.0.0-beta.20
version: 2.0.0-beta.20(vue@3.4.31(typescript@5.5.3))
@@ -230,6 +245,9 @@ importers:
pathe:
specifier: ^1.1.2
version: 1.1.2
+ pinia:
+ specifier: ^2.1.7
+ version: 2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3))
qrcode.vue:
specifier: ^3.4.0
version: 3.4.1(vue@3.4.31(typescript@5.5.3))
@@ -237,8 +255,14 @@ importers:
specifier: ^7.5.4
version: 7.6.2
vue-multiselect:
- specifier: 3.0.0
- version: 3.0.0
+ specifier: 3.0.0-alpha.2
+ version: 3.0.0-alpha.2
+ vue-typed-virtual-list:
+ specifier: ^1.0.10
+ version: 1.0.10(vue@3.4.31(typescript@5.5.3))
+ vue3-ace-editor:
+ specifier: ^2.2.4
+ version: 2.2.4(ace-builds@1.36.2)(vue@3.4.31(typescript@5.5.3))
vue3-apexcharts:
specifier: ^1.5.2
version: 1.5.3(apexcharts@3.49.2)(vue@3.4.31(typescript@5.5.3))
@@ -255,6 +279,9 @@ importers:
'@nuxtjs/turnstile':
specifier: ^0.8.0
version: 0.8.0(magicast@0.3.4)(rollup@4.18.0)
+ '@types/dompurify':
+ specifier: ^3.0.5
+ version: 3.0.5
'@types/node':
specifier: ^20.1.0
version: 20.14.9
@@ -386,7 +413,7 @@ importers:
version: 1.11.11
floating-vue:
specifier: 2.0.0-beta.24
- version: 2.0.0-beta.24(@nuxt/kit@3.12.3(rollup@3.29.4))(vue@3.4.31(typescript@5.5.4))
+ version: 2.0.0-beta.24(@nuxt/kit@3.12.3(magicast@0.3.5)(rollup@3.29.4))(vue@3.4.31(typescript@5.5.4))
highlight.js:
specifier: ^11.9.0
version: 11.9.0
@@ -414,7 +441,7 @@ importers:
version: 6.2.12(@vue/compiler-core@3.4.31)(vue@3.4.31(typescript@5.5.4))
'@vintl/unplugin':
specifier: ^1.5.1
- version: 1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3)(vue@3.4.31(typescript@5.5.4))(webpack@5.92.1)
+ version: 1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.31.6))(vue@3.4.31(typescript@5.5.4))(webpack@5.92.1)
'@vintl/vintl':
specifier: ^4.4.1
version: 4.4.1(typescript@5.5.4)(vue@3.4.31(typescript@5.5.4))
@@ -2126,6 +2153,9 @@ packages:
resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==}
engines: {node: '>= 10.0.0'}
+ '@pinia/nuxt@0.5.1':
+ resolution: {integrity: sha512-6wT6TqY81n+7/x3Yhf0yfaJVKkZU42AGqOR0T3+UvChcaOJhSma7OWPN64v+ptYlznat+fS1VTwNAcbi2lzHnw==}
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -2583,6 +2613,9 @@ packages:
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ '@types/dompurify@3.0.5':
+ resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==}
+
'@types/eslint-scope@3.7.7':
resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
@@ -2664,12 +2697,21 @@ packages:
'@types/shimmer@1.0.5':
resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==}
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@types/web-bluetooth@0.0.16':
+ resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
+
+ '@types/web-bluetooth@0.0.20':
+ resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+
'@typescript-eslint/eslint-plugin@6.21.0':
resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -2935,32 +2977,29 @@ packages:
peerDependencies:
typescript: '*'
- '@volar/language-core@2.3.4':
- resolution: {integrity: sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==}
-
'@volar/language-core@2.4.0-alpha.14':
resolution: {integrity: sha512-R6eJcUKo/KftaWHwJrWjBgj/+vW9g4xTByVQEK3IHTciMKmomoSbxaNqolu1/sJKbH9Tdg0EAqTFqIzKU9iQHw==}
'@volar/language-core@2.4.2':
resolution: {integrity: sha512-sONt5RLvLL1SlBdhyUSthZzuKePbJ7DwFFB9zT0eyWpDl+v7GXGh/RkPxxWaR22bIhYtTzp4Ka1MWatl/53Riw==}
+ '@volar/language-core@2.4.4':
+ resolution: {integrity: sha512-kO9k4kTLfxpg+6lq7/KAIv3m2d62IHuCL6GbVgYZTpfKvIGoAIlDxK7pFcB/eczN2+ydg/vnyaeZ6SGyZrJw2w==}
+
'@volar/language-server@2.4.2':
resolution: {integrity: sha512-BoGGGar5kzWnCxv41nnpplPQz+ntHgOSYshxH7CqNo5DOz5R3WXtkDA6T6bOpt70JeejoNyk/5kINV8KGeI17Q==}
'@volar/language-service@2.4.2':
resolution: {integrity: sha512-tJAfl1RouBcSPfgY7ivV/CWH6G/cOzwflMUFnfR7qTLZht7azx4CwlndiyGiL7lGcnfi7OZBKXd8Oqy9jhKZCA==}
- '@volar/source-map@2.3.4':
- resolution: {integrity: sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==}
-
'@volar/source-map@2.4.0-alpha.14':
resolution: {integrity: sha512-ACOsoDKvW29BIfdfnvQkm8S1m/RLARuHL9x7qS/9c6liMl1K0Y3RqXuC42HhWrWBm4hk0UyRKgdnv2R0teXPvg==}
'@volar/source-map@2.4.2':
resolution: {integrity: sha512-qiGfGgeZ5DEarPX3S+HcFktFCjfDrFPCXKeXNbrlB7v8cvtPRm8YVwoXOdGG1NhaL5rMlv5BZPVQyu4EdWWIvA==}
- '@volar/typescript@2.3.4':
- resolution: {integrity: sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==}
+ '@volar/source-map@2.4.4':
+ resolution: {integrity: sha512-xG3PZqOP2haG8XG4Pg3PD1UGDAdqZg24Ru8c/qYjYAnmcj6GBR64mstx+bZux5QOyRaJK+/lNM/RnpvBD3489g==}
'@volar/typescript@2.4.0-alpha.14':
resolution: {integrity: sha512-FQtQruOc7qQwcq5Q666pxF6ekRqZG5ILL3sS40Oac1V69QdAZ7q+IOQ2+z6SHJDENY49ygBv0hN9HrxRLtk15Q==}
@@ -2968,6 +3007,9 @@ packages:
'@volar/typescript@2.4.2':
resolution: {integrity: sha512-m2uZduhaHO1SZuagi30OsjI/X1gwkaEAC+9wT/nCNAtJ5FqXEkKvUncHmffG7ESDZPlFFUBK4vJ0D9Hfr+f2EA==}
+ '@volar/typescript@2.4.4':
+ resolution: {integrity: sha512-QQMQRVj0fVHJ3XdRKiS1LclhG0VBXdFYlyuHRQF/xLk2PuJuHNWP26MDZNvEVCvnyUQuUQhIAfylwY5TGPgc6w==}
+
'@vscode/emmet-helper@2.9.3':
resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==}
@@ -3073,6 +3115,24 @@ packages:
'@vue/tsconfig@0.5.1':
resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==}
+ '@vueuse/core@11.1.0':
+ resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==}
+
+ '@vueuse/core@9.13.0':
+ resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
+
+ '@vueuse/metadata@11.1.0':
+ resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==}
+
+ '@vueuse/metadata@9.13.0':
+ resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
+
+ '@vueuse/shared@11.1.0':
+ resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==}
+
+ '@vueuse/shared@9.13.0':
+ resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
+
'@webassemblyjs/ast@1.12.1':
resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==}
@@ -3134,6 +3194,9 @@ packages:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
engines: {node: '>=6.5'}
+ ace-builds@1.36.2:
+ resolution: {integrity: sha512-eqqfbGwx/GKjM/EnFu4QtQ+d2NNBu84MGgxoG8R5iyFpcVeQ4p9YlTL+ZzdEJqhdkASqoqOxCSNNGyB6lvMm+A==}
+
acorn-import-attributes@1.9.5:
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
@@ -3208,6 +3271,11 @@ packages:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
+ ansi-to-html@0.7.2:
+ resolution: {integrity: sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==}
+ engines: {node: '>=8.0.0'}
+ hasBin: true
+
any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
@@ -3804,6 +3872,9 @@ packages:
de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
+ debounce@1.2.1:
+ resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
+
debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
@@ -3960,6 +4031,9 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
+ dompurify@3.1.7:
+ resolution: {integrity: sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==}
+
domutils@3.1.0:
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
@@ -4024,6 +4098,9 @@ packages:
resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
engines: {node: '>=10.13.0'}
+ entities@2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+
entities@3.0.1:
resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
engines: {node: '>=0.12'}
@@ -4323,6 +4400,7 @@ packages:
eslint@8.57.0:
resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
eslint@9.13.0:
@@ -6579,6 +6657,9 @@ packages:
resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==}
engines: {node: '>=8.6.0'}
+ resize-observer-polyfill@1.5.1:
+ resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -7174,38 +7255,38 @@ packages:
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
- turbo-darwin-64@2.0.6:
- resolution: {integrity: sha512-XpgBwWj3Ggmz/gQVqXdMKXHC1iFPMDiuwugLwSzE7Ih0O13JuNtYZKhQnopvbDQnFQCeRq2Vsm5OTWabg/oB/g==}
+ turbo-darwin-64@2.2.3:
+ resolution: {integrity: sha512-Rcm10CuMKQGcdIBS3R/9PMeuYnv6beYIHqfZFeKWVYEWH69sauj4INs83zKMTUiZJ3/hWGZ4jet9AOwhsssLyg==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.0.6:
- resolution: {integrity: sha512-RfeZYXIAkiA21E8lsvfptGTqz/256YD+eI1x37fedfvnHFWuIMFZGAOwJxtZc6QasQunDZ9TRRREbJNI68tkIw==}
+ turbo-darwin-arm64@2.2.3:
+ resolution: {integrity: sha512-+EIMHkuLFqUdJYsA3roj66t9+9IciCajgj+DVek+QezEdOJKcRxlvDOS2BUaeN8kEzVSsNiAGnoysFWYw4K0HA==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.0.6:
- resolution: {integrity: sha512-92UDa0xNQQbx0HdSp9ag3YSS3xPdavhc7q9q9mxIAcqyjjD6VElA4Y85m4F/DDGE5SolCrvBz2sQhVmkOd6Caw==}
+ turbo-linux-64@2.2.3:
+ resolution: {integrity: sha512-UBhJCYnqtaeOBQLmLo8BAisWbc9v9daL9G8upLR+XGj6vuN/Nz6qUAhverN4Pyej1g4Nt1BhROnj6GLOPYyqxQ==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.0.6:
- resolution: {integrity: sha512-eQKu6utCVUkIH2kqOzD8OS6E0ba6COjWm6PRDTNCHQRljZW503ycaTUIdMOiJrVg1MkEjDyOReUg8s8D18aJ4Q==}
+ turbo-linux-arm64@2.2.3:
+ resolution: {integrity: sha512-hJYT9dN06XCQ3jBka/EWvvAETnHRs3xuO/rb5bESmDfG+d9yQjeTMlhRXKrr4eyIMt6cLDt1LBfyi+6CQ+VAwQ==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.0.6:
- resolution: {integrity: sha512-+9u4EPrpoeHYCQ46dRcou9kbkSoelhOelHNcbs2d86D6ruYD/oIAHK9qgYK8LeARRz0jxhZIA/dWYdYsxJJWkw==}
+ turbo-windows-64@2.2.3:
+ resolution: {integrity: sha512-NPrjacrZypMBF31b4HE4ROg4P3nhMBPHKS5WTpMwf7wydZ8uvdEHpESVNMOtqhlp857zbnKYgP+yJF30H3N2dQ==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.0.6:
- resolution: {integrity: sha512-rdrKL+p+EjtdDVg0wQ/7yTbzkIYrnb0Pw4IKcjsy3M0RqUM9UcEi67b94XOAyTa5a0GqJL1+tUj2ebsFGPgZbg==}
+ turbo-windows-arm64@2.2.3:
+ resolution: {integrity: sha512-fnNrYBCqn6zgKPKLHu4sOkihBI/+0oYFr075duRxqUZ+1aLWTAGfHZLgjVeLh3zR37CVzuerGIPWAEkNhkWEIw==}
cpu: [arm64]
os: [win32]
- turbo@2.0.6:
- resolution: {integrity: sha512-/Ftmxd5Mq//a9yMonvmwENNUN65jOVTwhhBPQjEtNZutYT9YKyzydFGLyVM1nzhpLWahQSMamRc/RDBv5EapzA==}
+ turbo@2.2.3:
+ resolution: {integrity: sha512-5lDvSqIxCYJ/BAd6rQGK/AzFRhBkbu4JHVMLmGh/hCb7U3CqSnr5Tjwfy9vc+/5wG2DJ6wttgAaA7MoCgvBKZQ==}
hasBin: true
type-check@0.4.0:
@@ -7721,6 +7802,17 @@ packages:
vue-bundle-renderer@2.1.0:
resolution: {integrity: sha512-uZ+5ZJdZ/b43gMblWtcpikY6spJd0nERaM/1RtgioXNfWFbjKlUwrS8HlrddN6T2xtptmOouWclxLUkpgcVX3Q==}
+ vue-demi@0.14.10:
+ resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
vue-demi@0.14.8:
resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==}
engines: {node: '>=12'}
@@ -7745,6 +7837,10 @@ packages:
resolution: {integrity: sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==}
engines: {node: '>= 14.18.1', npm: '>= 6.14.15'}
+ vue-multiselect@3.0.0-alpha.2:
+ resolution: {integrity: sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q==}
+ engines: {node: '>= 4.0.0', npm: '>= 3.0.0'}
+
vue-observe-visibility@2.0.0-alpha.1:
resolution: {integrity: sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g==}
peerDependencies:
@@ -7785,11 +7881,22 @@ packages:
peerDependencies:
typescript: '>=5.0.0'
+ vue-typed-virtual-list@1.0.10:
+ resolution: {integrity: sha512-StYs56ypKBY4Lu7Cz3Rnyywajxi3NgCxCcWuMJB2wfJ5qvicPw6YPV3sFUy1d1Cjm+AFCB0cZI7ymvgx8IvPIg==}
+ peerDependencies:
+ vue: ^3.2.45
+
vue-virtual-scroller@2.0.0-beta.8:
resolution: {integrity: sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==}
peerDependencies:
vue: ^3.2.0
+ vue3-ace-editor@2.2.4:
+ resolution: {integrity: sha512-FZkEyfpbH068BwjhMyNROxfEI8135Sc+x8ouxkMdCNkuj/Tuw83VP/gStFQqZHqljyX9/VfMTCdTqtOnJZGN8g==}
+ peerDependencies:
+ ace-builds: '*'
+ vue: ^3
+
vue3-apexcharts@1.5.3:
resolution: {integrity: sha512-yaHTPoj0iVKAtEVg8wEwIwwvf0VG+lPYNufCf3txRzYQOqdKPoZaZ9P3Dj3X+2A1XY9O1kcTk9HVqvLo+rppvQ==}
peerDependencies:
@@ -8016,10 +8123,10 @@ snapshots:
'@astrojs/yaml2ts': 0.2.1
'@jridgewell/sourcemap-codec': 1.4.15
'@volar/kit': 2.4.2(typescript@5.5.4)
- '@volar/language-core': 2.4.2
+ '@volar/language-core': 2.4.4
'@volar/language-server': 2.4.2
'@volar/language-service': 2.4.2
- '@volar/typescript': 2.4.2
+ '@volar/typescript': 2.4.4
fast-glob: 3.3.2
muggle-string: 0.4.1
volar-service-css: 0.0.61(@volar/language-service@2.4.2)
@@ -8994,7 +9101,7 @@ snapshots:
json-stable-stringify: 1.1.1
loud-rejection: 2.2.0
tslib: 2.6.3
- typescript: 5.5.4
+ typescript: 5.5.3
optionalDependencies:
'@vue/compiler-core': 3.4.31
vue: 3.4.31(typescript@5.5.3)
@@ -9016,7 +9123,7 @@ snapshots:
json-stable-stringify: 1.1.1
loud-rejection: 2.2.0
tslib: 2.6.3
- typescript: 5.5.4
+ typescript: 5.5.3
optionalDependencies:
'@vue/compiler-core': 3.4.31
vue: 3.4.31(typescript@5.5.4)
@@ -9110,7 +9217,7 @@ snapshots:
chalk: 4.1.2
json-stable-stringify: 1.1.1
tslib: 2.6.3
- typescript: 5.5.4
+ typescript: 5.5.3
'@grpc/grpc-js@1.10.10':
dependencies:
@@ -9485,9 +9592,9 @@ snapshots:
- supports-color
- typescript
- '@nuxt/kit@3.12.3':
+ '@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@4.18.0)':
dependencies:
- '@nuxt/schema': 3.12.3
+ '@nuxt/schema': 3.12.3(rollup@4.18.0)
c12: 1.11.1(magicast@0.3.4)
consola: 3.2.3
defu: 6.1.4
@@ -9505,18 +9612,17 @@ snapshots:
semver: 7.6.2
ufo: 1.5.3
unctx: 2.3.1
- unimport: 3.7.2
+ unimport: 3.7.2(rollup@4.18.0)
untyped: 1.4.2
transitivePeerDependencies:
- magicast
- rollup
- supports-color
- optional: true
- '@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@4.18.0)':
+ '@nuxt/kit@3.12.3(magicast@0.3.5)(rollup@3.29.4)':
dependencies:
- '@nuxt/schema': 3.12.3(rollup@4.18.0)
- c12: 1.11.1(magicast@0.3.4)
+ '@nuxt/schema': 3.12.3(rollup@3.29.4)
+ c12: 1.11.1(magicast@0.3.5)
consola: 3.2.3
defu: 6.1.4
destr: 2.0.3
@@ -9533,17 +9639,18 @@ snapshots:
semver: 7.6.2
ufo: 1.5.3
unctx: 2.3.1
- unimport: 3.7.2(rollup@4.18.0)
+ unimport: 3.7.2(rollup@3.29.4)
untyped: 1.4.2
transitivePeerDependencies:
- magicast
- rollup
- supports-color
+ optional: true
- '@nuxt/kit@3.12.3(rollup@3.29.4)':
+ '@nuxt/kit@3.12.3(magicast@0.3.5)(rollup@4.21.2)':
dependencies:
- '@nuxt/schema': 3.12.3(rollup@3.29.4)
- c12: 1.11.1(magicast@0.3.4)
+ '@nuxt/schema': 3.12.3(rollup@4.21.2)
+ c12: 1.11.1(magicast@0.3.5)
consola: 3.2.3
defu: 6.1.4
destr: 2.0.3
@@ -9560,7 +9667,7 @@ snapshots:
semver: 7.6.2
ufo: 1.5.3
unctx: 2.3.1
- unimport: 3.7.2(rollup@3.29.4)
+ unimport: 3.7.2(rollup@4.21.2)
untyped: 1.4.2
transitivePeerDependencies:
- magicast
@@ -9568,7 +9675,7 @@ snapshots:
- supports-color
optional: true
- '@nuxt/schema@3.12.3':
+ '@nuxt/schema@3.12.3(rollup@3.29.4)':
dependencies:
compatx: 0.1.8
consola: 3.2.3
@@ -9580,14 +9687,14 @@ snapshots:
std-env: 3.7.0
ufo: 1.5.3
uncrypto: 0.1.3
- unimport: 3.7.2
+ unimport: 3.7.2(rollup@3.29.4)
untyped: 1.4.2
transitivePeerDependencies:
- rollup
- supports-color
optional: true
- '@nuxt/schema@3.12.3(rollup@3.29.4)':
+ '@nuxt/schema@3.12.3(rollup@4.18.0)':
dependencies:
compatx: 0.1.8
consola: 3.2.3
@@ -9599,14 +9706,13 @@ snapshots:
std-env: 3.7.0
ufo: 1.5.3
uncrypto: 0.1.3
- unimport: 3.7.2(rollup@3.29.4)
+ unimport: 3.7.2(rollup@4.18.0)
untyped: 1.4.2
transitivePeerDependencies:
- rollup
- supports-color
- optional: true
- '@nuxt/schema@3.12.3(rollup@4.18.0)':
+ '@nuxt/schema@3.12.3(rollup@4.21.2)':
dependencies:
compatx: 0.1.8
consola: 3.2.3
@@ -9618,11 +9724,12 @@ snapshots:
std-env: 3.7.0
ufo: 1.5.3
uncrypto: 0.1.3
- unimport: 3.7.2(rollup@4.18.0)
+ unimport: 3.7.2(rollup@4.21.2)
untyped: 1.4.2
transitivePeerDependencies:
- rollup
- supports-color
+ optional: true
'@nuxt/telemetry@2.5.4(magicast@0.3.4)(rollup@4.18.0)':
dependencies:
@@ -9707,7 +9814,7 @@ snapshots:
'@nuxtjs/eslint-config-typescript@12.1.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3)':
dependencies:
- '@nuxtjs/eslint-config': 12.0.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))
+ '@nuxtjs/eslint-config': 12.0.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6))
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3)
'@typescript-eslint/parser': 6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3)
eslint: 9.13.0(jiti@1.21.6)
@@ -9720,10 +9827,10 @@ snapshots:
- supports-color
- typescript
- '@nuxtjs/eslint-config@12.0.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))':
+ '@nuxtjs/eslint-config@12.0.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6))':
dependencies:
eslint: 9.13.0(jiti@1.21.6)
- eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-n@15.7.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-promise@6.4.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))
+ eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-promise@6.4.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6))
eslint-plugin-n: 15.7.0(eslint@9.13.0(jiti@1.21.6))
eslint-plugin-node: 11.1.0(eslint@9.13.0(jiti@1.21.6))
@@ -9983,6 +10090,18 @@ snapshots:
'@parcel/watcher-win32-ia32': 2.4.1
'@parcel/watcher-win32-x64': 2.4.1
+ '@pinia/nuxt@0.5.1(magicast@0.3.4)(rollup@4.18.0)(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3))':
+ dependencies:
+ '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@4.18.0)
+ pinia: 2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - magicast
+ - rollup
+ - supports-color
+ - typescript
+ - vue
+
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -10401,6 +10520,10 @@ snapshots:
dependencies:
'@types/ms': 0.7.34
+ '@types/dompurify@3.0.5':
+ dependencies:
+ '@types/trusted-types': 2.0.7
+
'@types/eslint-scope@3.7.7':
dependencies:
'@types/eslint': 9.6.0
@@ -10487,10 +10610,16 @@ snapshots:
'@types/shimmer@1.0.5': {}
+ '@types/trusted-types@2.0.7': {}
+
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
+ '@types/web-bluetooth@0.0.16': {}
+
+ '@types/web-bluetooth@0.0.20': {}
+
'@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3)':
dependencies:
'@eslint-community/regexpp': 4.11.0
@@ -10830,7 +10959,7 @@ snapshots:
- vue
- webpack
- '@vintl/unplugin@1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3)(vue@3.4.31(typescript@5.5.4))(webpack@5.92.1)':
+ '@vintl/unplugin@1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.31.6))(vue@3.4.31(typescript@5.5.4))(webpack@5.92.1)':
dependencies:
'@formatjs/cli-lib': 6.4.2(@vue/compiler-core@3.4.31)(vue@3.4.31(typescript@5.5.4))
'@formatjs/icu-messageformat-parser': 2.7.8
@@ -10841,7 +10970,7 @@ snapshots:
unplugin: 1.11.0
optionalDependencies:
rollup: 3.29.4
- vite: 4.5.3
+ vite: 4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.31.6)
webpack: 5.92.1
transitivePeerDependencies:
- '@glimmer/env'
@@ -10929,10 +11058,6 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/language-core@2.3.4':
- dependencies:
- '@volar/source-map': 2.3.4
-
'@volar/language-core@2.4.0-alpha.14':
dependencies:
'@volar/source-map': 2.4.0-alpha.14
@@ -10941,6 +11066,10 @@ snapshots:
dependencies:
'@volar/source-map': 2.4.2
+ '@volar/language-core@2.4.4':
+ dependencies:
+ '@volar/source-map': 2.4.4
+
'@volar/language-server@2.4.2':
dependencies:
'@volar/language-core': 2.4.2
@@ -10960,17 +11089,11 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/source-map@2.3.4': {}
-
'@volar/source-map@2.4.0-alpha.14': {}
'@volar/source-map@2.4.2': {}
- '@volar/typescript@2.3.4':
- dependencies:
- '@volar/language-core': 2.3.4
- path-browserify: 1.0.1
- vscode-uri: 3.0.8
+ '@volar/source-map@2.4.4': {}
'@volar/typescript@2.4.0-alpha.14':
dependencies:
@@ -10984,6 +11107,12 @@ snapshots:
path-browserify: 1.0.1
vscode-uri: 3.0.8
+ '@volar/typescript@2.4.4':
+ dependencies:
+ '@volar/language-core': 2.4.4
+ path-browserify: 1.0.1
+ vscode-uri: 3.0.8
+
'@vscode/emmet-helper@2.9.3':
dependencies:
emmet: 2.4.7
@@ -11125,7 +11254,7 @@ snapshots:
'@vue/language-core@2.1.6(typescript@5.5.4)':
dependencies:
- '@volar/language-core': 2.4.2
+ '@volar/language-core': 2.4.4
'@vue/compiler-dom': 3.4.31
'@vue/compiler-vue2': 2.7.16
'@vue/shared': 3.4.31
@@ -11168,6 +11297,44 @@ snapshots:
'@vue/tsconfig@0.5.1': {}
+ '@vueuse/core@11.1.0(vue@3.4.31(typescript@5.5.3))':
+ dependencies:
+ '@types/web-bluetooth': 0.0.20
+ '@vueuse/metadata': 11.1.0
+ '@vueuse/shared': 11.1.0(vue@3.4.31(typescript@5.5.3))
+ vue-demi: 0.14.10(vue@3.4.31(typescript@5.5.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/core@9.13.0(vue@3.4.31(typescript@5.5.3))':
+ dependencies:
+ '@types/web-bluetooth': 0.0.16
+ '@vueuse/metadata': 9.13.0
+ '@vueuse/shared': 9.13.0(vue@3.4.31(typescript@5.5.3))
+ vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/metadata@11.1.0': {}
+
+ '@vueuse/metadata@9.13.0': {}
+
+ '@vueuse/shared@11.1.0(vue@3.4.31(typescript@5.5.3))':
+ dependencies:
+ vue-demi: 0.14.10(vue@3.4.31(typescript@5.5.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/shared@9.13.0(vue@3.4.31(typescript@5.5.3))':
+ dependencies:
+ vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3))
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
'@webassemblyjs/ast@1.12.1':
dependencies:
'@webassemblyjs/helper-numbers': 1.11.6
@@ -11273,6 +11440,8 @@ snapshots:
dependencies:
event-target-shim: 5.0.1
+ ace-builds@1.36.2: {}
+
acorn-import-attributes@1.9.5(acorn@8.12.1):
dependencies:
acorn: 8.12.1
@@ -11338,6 +11507,10 @@ snapshots:
ansi-styles@6.2.1: {}
+ ansi-to-html@0.7.2:
+ dependencies:
+ entities: 2.2.0
+
any-promise@1.3.0: {}
anymatch@3.1.3:
@@ -11724,6 +11897,24 @@ snapshots:
optionalDependencies:
magicast: 0.3.4
+ c12@1.11.1(magicast@0.3.5):
+ dependencies:
+ chokidar: 3.6.0
+ confbox: 0.1.7
+ defu: 6.1.4
+ dotenv: 16.4.5
+ giget: 1.2.3
+ jiti: 1.21.6
+ mlly: 1.7.1
+ ohash: 1.1.3
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.1.3
+ rc9: 2.1.2
+ optionalDependencies:
+ magicast: 0.3.5
+ optional: true
+
cac@6.7.14: {}
call-bind@1.0.7:
@@ -12052,6 +12243,8 @@ snapshots:
de-indent@1.0.2: {}
+ debounce@1.2.1: {}
+
debug@2.6.9:
dependencies:
ms: 2.0.0
@@ -12165,6 +12358,8 @@ snapshots:
dependencies:
domelementtype: 2.3.0
+ dompurify@3.1.7: {}
+
domutils@3.1.0:
dependencies:
dom-serializer: 2.0.0
@@ -12221,6 +12416,8 @@ snapshots:
tapable: 2.2.1
optional: true
+ entities@2.2.0: {}
+
entities@3.0.1: {}
entities@4.5.0: {}
@@ -12433,10 +12630,10 @@ snapshots:
dependencies:
eslint: 9.13.0(jiti@1.21.6)
- eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-n@15.7.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-promise@6.4.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)):
+ eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@15.7.0(eslint@9.13.0(jiti@1.21.6)))(eslint-plugin-promise@6.4.0(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)):
dependencies:
eslint: 9.13.0(jiti@1.21.6)
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6))
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.13.0(jiti@1.21.6))
eslint-plugin-n: 15.7.0(eslint@9.13.0(jiti@1.21.6))
eslint-plugin-promise: 6.4.0(eslint@9.13.0(jiti@1.21.6))
@@ -12462,7 +12659,7 @@ snapshots:
debug: 4.3.5
enhanced-resolve: 5.17.0
eslint: 9.13.0(jiti@1.21.6)
- eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6))
+ eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6))
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint@9.13.0(jiti@1.21.6))
fast-glob: 3.3.2
get-tsconfig: 4.7.5
@@ -12474,13 +12671,12 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@1.21.6)))(eslint@9.13.0(jiti@1.21.6)):
+ eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@9.13.0(jiti@1.21.6)):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3)
eslint: 9.13.0(jiti@1.21.6)
- eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@9.13.0(jiti@1.21.6))
transitivePeerDependencies:
- supports-color
@@ -13063,21 +13259,21 @@ snapshots:
vue: 3.4.31(typescript@5.5.3)
vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3))
- floating-vue@2.0.0-beta.24(@nuxt/kit@3.12.3(rollup@3.29.4))(vue@3.4.31(typescript@5.5.4)):
+ floating-vue@2.0.0-beta.24(@nuxt/kit@3.12.3(magicast@0.3.5)(rollup@3.29.4))(vue@3.4.31(typescript@5.5.4)):
dependencies:
'@floating-ui/dom': 1.1.1
vue: 3.4.31(typescript@5.5.4)
vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.4))
optionalDependencies:
- '@nuxt/kit': 3.12.3(rollup@3.29.4)
+ '@nuxt/kit': 3.12.3(magicast@0.3.5)(rollup@3.29.4)
- floating-vue@5.2.2(@nuxt/kit@3.12.3)(vue@3.4.31(typescript@5.5.4)):
+ floating-vue@5.2.2(@nuxt/kit@3.12.3(magicast@0.3.5)(rollup@4.21.2))(vue@3.4.31(typescript@5.5.4)):
dependencies:
'@floating-ui/dom': 1.1.1
vue: 3.4.31(typescript@5.5.4)
vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.4))
optionalDependencies:
- '@nuxt/kit': 3.12.3
+ '@nuxt/kit': 3.12.3(magicast@0.3.5)(rollup@4.21.2)
for-each@0.3.3:
dependencies:
@@ -15148,6 +15344,14 @@ snapshots:
pify@4.0.1: {}
+ pinia@2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3)):
+ dependencies:
+ '@vue/devtools-api': 6.6.3
+ vue: 3.4.31(typescript@5.5.3)
+ vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3))
+ optionalDependencies:
+ typescript: 5.5.3
+
pinia@2.1.7(typescript@5.5.4)(vue@3.4.31(typescript@5.5.4)):
dependencies:
'@vue/devtools-api': 6.6.3
@@ -15699,6 +15903,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ resize-observer-polyfill@1.5.1: {}
+
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -16429,32 +16635,32 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- turbo-darwin-64@2.0.6:
+ turbo-darwin-64@2.2.3:
optional: true
- turbo-darwin-arm64@2.0.6:
+ turbo-darwin-arm64@2.2.3:
optional: true
- turbo-linux-64@2.0.6:
+ turbo-linux-64@2.2.3:
optional: true
- turbo-linux-arm64@2.0.6:
+ turbo-linux-arm64@2.2.3:
optional: true
- turbo-windows-64@2.0.6:
+ turbo-windows-64@2.2.3:
optional: true
- turbo-windows-arm64@2.0.6:
+ turbo-windows-arm64@2.2.3:
optional: true
- turbo@2.0.6:
+ turbo@2.2.3:
optionalDependencies:
- turbo-darwin-64: 2.0.6
- turbo-darwin-arm64: 2.0.6
- turbo-linux-64: 2.0.6
- turbo-linux-arm64: 2.0.6
- turbo-windows-64: 2.0.6
- turbo-windows-arm64: 2.0.6
+ turbo-darwin-64: 2.2.3
+ turbo-darwin-arm64: 2.2.3
+ turbo-linux-64: 2.2.3
+ turbo-linux-arm64: 2.2.3
+ turbo-windows-64: 2.2.3
+ turbo-windows-arm64: 2.2.3
type-check@0.4.0:
dependencies:
@@ -16574,9 +16780,9 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
- unimport@3.7.2:
+ unimport@3.7.2(rollup@3.29.4):
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
acorn: 8.12.1
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
@@ -16593,9 +16799,9 @@ snapshots:
- rollup
optional: true
- unimport@3.7.2(rollup@3.29.4):
+ unimport@3.7.2(rollup@4.18.0):
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
+ '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
acorn: 8.12.1
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
@@ -16610,11 +16816,10 @@ snapshots:
unplugin: 1.11.0
transitivePeerDependencies:
- rollup
- optional: true
- unimport@3.7.2(rollup@4.18.0):
+ unimport@3.7.2(rollup@4.21.2):
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
acorn: 8.12.1
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
@@ -16629,6 +16834,7 @@ snapshots:
unplugin: 1.11.0
transitivePeerDependencies:
- rollup
+ optional: true
unist-util-find-after@5.0.0:
dependencies:
@@ -16822,7 +17028,7 @@ snapshots:
vite-plugin-checker@0.7.0(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.6))(vue-tsc@2.0.24(typescript@5.5.3)):
dependencies:
'@babel/code-frame': 7.24.7
- '@volar/typescript': 2.3.4
+ '@volar/typescript': 2.4.4
ansi-escapes: 4.3.2
chalk: 4.1.2
chokidar: 3.6.0
@@ -16886,13 +17092,16 @@ snapshots:
svgo: 3.3.2
vue: 3.4.31(typescript@5.5.4)
- vite@4.5.3:
+ vite@4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.31.6):
dependencies:
esbuild: 0.18.20
postcss: 8.4.45
rollup: 3.29.4
optionalDependencies:
+ '@types/node': 22.4.1
fsevents: 2.3.3
+ sass: 1.77.6
+ terser: 5.31.6
optional: true
vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.6):
@@ -17056,6 +17265,14 @@ snapshots:
dependencies:
ufo: 1.5.3
+ vue-demi@0.14.10(vue@3.4.31(typescript@5.5.3)):
+ dependencies:
+ vue: 3.4.31(typescript@5.5.3)
+
+ vue-demi@0.14.8(vue@3.4.31(typescript@5.5.3)):
+ dependencies:
+ vue: 3.4.31(typescript@5.5.3)
+
vue-demi@0.14.8(vue@3.4.31(typescript@5.5.4)):
dependencies:
vue: 3.4.31(typescript@5.5.4)
@@ -17077,6 +17294,8 @@ snapshots:
vue-multiselect@3.0.0: {}
+ vue-multiselect@3.0.0-alpha.2: {}
+
vue-observe-visibility@2.0.0-alpha.1(vue@3.4.31(typescript@5.5.4)):
dependencies:
vue: 3.4.31(typescript@5.5.4)
@@ -17117,11 +17336,19 @@ snapshots:
vue-tsc@2.1.6(typescript@5.5.4):
dependencies:
- '@volar/typescript': 2.4.2
+ '@volar/typescript': 2.4.4
'@vue/language-core': 2.1.6(typescript@5.5.4)
semver: 7.6.3
typescript: 5.5.4
+ vue-typed-virtual-list@1.0.10(vue@3.4.31(typescript@5.5.3)):
+ dependencies:
+ '@vueuse/core': 9.13.0(vue@3.4.31(typescript@5.5.3))
+ debounce: 1.2.1
+ vue: 3.4.31(typescript@5.5.3)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+
vue-virtual-scroller@2.0.0-beta.8(vue@3.4.31(typescript@5.5.4)):
dependencies:
mitt: 2.1.0
@@ -17129,6 +17356,12 @@ snapshots:
vue-observe-visibility: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.4))
vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.4))
+ vue3-ace-editor@2.2.4(ace-builds@1.36.2)(vue@3.4.31(typescript@5.5.3)):
+ dependencies:
+ ace-builds: 1.36.2
+ resize-observer-polyfill: 1.5.1
+ vue: 3.4.31(typescript@5.5.3)
+
vue3-apexcharts@1.5.3(apexcharts@3.49.2)(vue@3.4.31(typescript@5.5.3)):
dependencies:
apexcharts: 3.49.2
diff --git a/turbo.json b/turbo.json
index 73dd66fc0..71cd9ce3b 100644
--- a/turbo.json
+++ b/turbo.json
@@ -16,13 +16,15 @@
"CF_PAGES_*",
"HEROKU_APP_NAME",
"STRIPE_PUBLISHABLE_KEY",
+ "PYRO_BASE_URL",
+ "PROD_OVERRIDE",
+ "PYRO_MASTER_KEY",
+ "PORT",
"SQLX_OFFLINE"
]
},
"lint": {
- "env": [
- "SQLX_OFFLINE"
- ]
+ "env": ["SQLX_OFFLINE"]
},
"dev": {
"cache": false,
@@ -31,10 +33,7 @@
"env": ["DISPLAY", "WEBKIT_DISABLE_DMABUF_RENDERER"]
},
"test": {
- "env": [
- "SQLX_OFFLINE",
- "DATABASE_URL"
- ]
+ "env": ["SQLX_OFFLINE", "DATABASE_URL"]
},
"fix": {
"cache": false