+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
diff --git a/assets/main.css b/assets/main.css
index ff526e6..d3846f1 100644
--- a/assets/main.css
+++ b/assets/main.css
@@ -1,108 +1,42 @@
-
-@import url('https://fonts.googleapis.com/css2?family=Kanit:wght@300&display=swap');
-@import url('https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap');
-@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap');
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
:root {
- --gold: rgb(255, 215, 0);
-
- --pastelRed: #ffaaaa;
- --pastelOrange: #ffddaa;
- --deepOrange: #ff9756;
- --pastelYellow: #fbffaa;
- --deepYellow: #ffe561;
- --pastelGreen: #aaffaa;
- --deepGreen: #56ff93;
- --lightBlue: #6af1fd;
- --cyan: #56ddff;
- --pastelBlue: #aac8ff;
- --normalText: #ccc9c6;
- --darkGray: #878787;
+ --bg-color: #ffffff;
+}
- --h1: 4.5em;
- --h2: 3em;
- --h3: 1.95em;
- --h4: 1.75em;
- --p: 1.5em;
- --standard: 0.7em;
+.dark {
+ --bg-color: #0a0a0a;
+}
- --godly: linear-gradient(to bottom right, #ff0000, #ffbb00, #bbff00, #00ff4c, #00c3ff, #ff00ff);
- --godlyText: linear-gradient(to right, #ff0000, #ffbb00, #bbff00, #00ff4c, #00c3ff, #ff00ff);
+* {
+ font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important;
+ @apply text-center text-black dark:text-white;
}
body {
- font-family: 'Kanit', sans-serif;
- min-height: 100vh;
- font-size: var(--standard);
- background-color: rgb(25, 25, 25);
- margin: 0;
- width: 100vw;
- max-width: 100vw;
- overflow-x: hidden;
- display: flex;
- justify-content: center;
- color: white;
- transition: all 0.5s;
+ background-color: var(--bg-color);
+ @apply m-0 hidden overflow-x-hidden p-0 transition duration-500;
}
-h1 {font-size: var(--h1)}
-h2 {font-size: var(--h2)}
-h3 {font-size: var(--h3)}
-h4 {font-size: var(--h4)}
-p {font-size: var(--p)}
-#text {font-size: var(--standard)}
-
-::-webkit-scrollbar {
- width: 0.75em;
-}
-::-webkit-scrollbar-track {
- background-color: #17171c;
-}
-::-webkit-scrollbar-thumb {
- background-color: #48005e;
- border-radius: 1em;
+button {
+ touch-action: manipulation;
+ @apply text-center text-black dark:text-white;
}
-button, a, input, textarea {
- font-family: 'Kanit', sans-serif;
- color: black;
- border-color: black;
- touch-action: manipulation;
- text-decoration: none;
+a {
+ @apply text-center text-black dark:text-white;
}
-@media screen and (max-width: 1000px) {
- h1 {font-size: 3.5em}
- h2 {font-size: 2.5em}
- h3 {font-size: 1.5em}
- h4 {font-size: 1.35em}
- p {font-size: 1.25em}
- #text {font-size: 0.5em}
+.editor-bg {
+ background: radial-gradient(#1e232a, #080a0c);
}
-@media (hover: hover) and (pointer: fine) {
- body:has(.contributorCard[color="red"]:hover) {
- background-color: rgb(94, 39, 39);
- }
- body:has(.contributorCard[color="yellow"]:hover) {
- background-color: rgb(60, 54, 25);
- }
- body:has(.contributorCard[color="green"]:hover) {
- background-color: rgb(25, 60, 38);
- }
- body:has(.contributorCard[color="cyan"]:hover) {
- background-color: rgb(25, 55, 60);
- }
- body:has(.contributorCard[color="pink"]:hover) {
- background-color: rgb(75, 32, 75);
- }
+.fo-btn.fo-btn-circle.fo-btn-text {
+ @apply dark:hover:bg-neutral-700;
}
-@media (pointer: coarse) {
- body {
- font-family: "Rubik", sans-serif;
- }
- button, a, input, textarea {
- font-family: "Rubik", sans-serif;
- }
-}
\ No newline at end of file
+.fo-skeleton {
+ @apply dark:bg-neutral-800;
+}
diff --git a/components/Blueprints/Card.vue b/components/Blueprints/Card.vue
new file mode 100644
index 0000000..db259b5
--- /dev/null
+++ b/components/Blueprints/Card.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
{{ owner ? "Click to mark as unlocked" : "Not unlocked" }}
+
+
+
+
+
+
+
{{ ship.name }}
+
+ {{ ship.variantName }} ({{ ship.variant }})
+
+
+ {{ ship.variant }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ variant.variant }}
+
+
+
+
+
+
+ Match TP with variants
+
+
+ Edit Modules ({{ ship.modules.filter((mod) => mod.unlocked).length }}/{{ ship.modules.length }})
+
+
+
+
+
+ v{{
+ Number(
+ String(Number(tp) + 100)
+ .padStart(5, "0")
+ .slice(0, 3)
+ )
+ }}.{{ String(tp).padStart(5, "0").slice(3) }}
+
+
+
+
+
+
+
+
+ {{ variant.variant }}
+
+
+
+ View Modules ({{ ship.modules.filter((mod) => mod.unlocked).length }}/{{ ship.modules.length }})
+
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Category.vue b/components/Blueprints/Category.vue
new file mode 100644
index 0000000..f05f59c
--- /dev/null
+++ b/components/Blueprints/Category.vue
@@ -0,0 +1,84 @@
+
+
+
{{ shipType }}s
+
{{ data.filter((ship) => ship.type === shipType && ship.unlocked).length }}/{{ data.filter((ship) => ship.type === shipType).length }} unlocked
+
+
+ {{ getTotalTP(displayedData).toLocaleString() }}
+ total Tech Points
+
+
+
+ handleTp(ship, tp)"
+ @mirror="toggleMirror(ship)"
+ @modules="(ship) => emit('modules', ship)"
+ @change="userStore.hasUnsavedChanges = true"
+ />
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Filter.vue b/components/Blueprints/Filter.vue
new file mode 100644
index 0000000..72c9807
--- /dev/null
+++ b/components/Blueprints/Filter.vue
@@ -0,0 +1,83 @@
+
+
+
+
+ Filter
+
+
+
+
+
+ {{ key }}
+
+
+
+
+
+
+
+
diff --git a/components/Blueprints/ModuleCard.vue b/components/Blueprints/ModuleCard.vue
new file mode 100644
index 0000000..d13400d
--- /dev/null
+++ b/components/Blueprints/ModuleCard.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
{{ owner ? "Click to mark as unlocked" : "Not unlocked" }}
+
+
+
+
+
+
{{ mod.system }}
+
{{ mod.type === "known" ? mod.name : "Unknown Module" }}
+
+
+
+
+
+ Remove
+
+
+ View in Module Library
+
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Modules.vue b/components/Blueprints/Modules.vue
new file mode 100644
index 0000000..895c2b9
--- /dev/null
+++ b/components/Blueprints/Modules.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Search.vue b/components/Blueprints/Search.vue
new file mode 100644
index 0000000..6f73a2d
--- /dev/null
+++ b/components/Blueprints/Search.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Settings.vue b/components/Blueprints/Settings.vue
new file mode 100644
index 0000000..2c5bf20
--- /dev/null
+++ b/components/Blueprints/Settings.vue
@@ -0,0 +1,161 @@
+
+
+
+
+ Options
+
+
+
+
+ Grid View
+
+
+ List View
+
+
+
+ Show Variants
+
+
+ Hide Variants
+
+
+
+
Account Switcher
+
{{ blueprints.length ?? 0 }}/10 accounts
+
+
+
+
+
+ {{ getObjectKey(account) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getTotalTP(getObjectValue(account)).toLocaleString() }} Tech Points
+
+
+
+
+
+
+ Create New
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Sort.vue b/components/Blueprints/Sort.vue
new file mode 100644
index 0000000..b93ec31
--- /dev/null
+++ b/components/Blueprints/Sort.vue
@@ -0,0 +1,67 @@
+
+
+
+
+ Sort
+
+
+
+
+
+ {{ key }}
+
+
+
+
+
+
+
+
diff --git a/components/Blueprints/Toolbar.vue b/components/Blueprints/Toolbar.vue
new file mode 100644
index 0000000..9258f01
--- /dev/null
+++ b/components/Blueprints/Toolbar.vue
@@ -0,0 +1,284 @@
+
+
+
(editName = acc)"
+ @delete="(acc) => (deleteModal = acc)"
+ @list="emit('list')"
+ @variants="emit('variants')"
+ @click.stop="closeOptions(false)"
+ @create-new="createNewAccount"
+ />
+ emit('sort', sorter)" @click.stop="closeOptions(true, true, false)" />
+ emit('filter', filter)" @click.stop="closeOptions(true, false, true)" />
+ emit('search', term)" />
+
+ {{ success ? "Saved!" : loading ? "Saving" : "Save" }}
+
+
+
+
+ {{ !isOwner ? "You are viewing someone else's blueprints" : "You have unsaved changes" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/ColorCalculator.vue b/components/ColorCalculator.vue
deleted file mode 100644
index 3e17cac..0000000
--- a/components/ColorCalculator.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/CompareShip.vue b/components/CompareShip.vue
deleted file mode 100644
index 33a9434..0000000
--- a/components/CompareShip.vue
+++ /dev/null
@@ -1,351 +0,0 @@
-
-
-
-
-
-
-
-
{{ ship1.name }}
-
{{ ship1.title }}
-
-
- Tech Points
-
-
{{ updateStats(ship1) }}
-
-
-
- {{ stat.name }}
- {{ stat.tooltip }}
-
-
-
{{ (stat.raw ? stat.stat : Math.round(stat.stat)).toLocaleString() }}
-
{{ addZeroToTime(Math.floor(stat.stat / 60 / 60)) }}:{{ addZeroToTime(Math.floor(stat.stat / 60) % 60) }}:{{ addZeroToTime(Math.floor(stat.stat % 60)) }}
-
-
-
-
-
This ship has a {{ Math.abs(Math.round(((stat.stat / stat.comparisonStat) - 1) * 100)) + '%' }} higher {{ stat.name }} value than the comparison
-
-
This ship has a {{ Math.abs(Math.round(((stat.comparisonStat / stat.stat) - 1) * 100)) + '%' }} lower {{ stat.name }} value than the comparison
-
-
-
-
This ship has a {{ Math.abs(Math.round(((stat.stat / stat.comparisonStat) - 1) * 100)) + '%' }} lower {{ stat.name }} value than the comparison
-
-
This ship has a {{ Math.abs(Math.round(((stat.comparisonStat / stat.stat) - 1) * 100)) + '%' }} higher {{ stat.name }} value than the comparison
-
-
-
-
-
-
-
-
-
diff --git a/components/EditShip.vue b/components/EditShip.vue
deleted file mode 100644
index 225d245..0000000
--- a/components/EditShip.vue
+++ /dev/null
@@ -1,618 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/components/EquipmentBrowse.vue b/components/EquipmentBrowse.vue
deleted file mode 100644
index 240af04..0000000
--- a/components/EquipmentBrowse.vue
+++ /dev/null
@@ -1,309 +0,0 @@
-
-
-
-
-
-
-
-
{{ equipment.displayName }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/EquipmentCard.vue b/components/EquipmentCard.vue
deleted file mode 100644
index ba56c43..0000000
--- a/components/EquipmentCard.vue
+++ /dev/null
@@ -1,162 +0,0 @@
-
-
-
-
-
{{ item.displayName }}
-
-
-
M || {{ item.effectName }}
-
{{ part }}
-
-
-
-
Class: {{ item.class }}
- Weight: {{ item.loadWeight }} storage
-
-
-
-
-
-
{{ item.displayName }}
-
-
-
M || {{ item.effectName }}
-
{{ part }}
-
-
-
-
Delivery: {{ item.deliveryTarget }}
- Mass: {{ item.itemMass }}
- Limit: {{ item.activeService }}
- Cooldown: {{ item.productionInterval }}
- Class: {{ item.class }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/Home/Carousel.vue b/components/Home/Carousel.vue
new file mode 100644
index 0000000..ccce177
--- /dev/null
+++ b/components/Home/Carousel.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Home/CarouselCard.vue b/components/Home/CarouselCard.vue
new file mode 100644
index 0000000..8c26e28
--- /dev/null
+++ b/components/Home/CarouselCard.vue
@@ -0,0 +1,30 @@
+
+
+
{{ showcase.title }}
+
{{ showcase.tag.name }}
+
{{ showcase.description }}
+
+ Go
+
+
+
+
+
+
+
diff --git a/components/Home/Changelog.vue b/components/Home/Changelog.vue
new file mode 100644
index 0000000..2b08881
--- /dev/null
+++ b/components/Home/Changelog.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/components/Home/ChangelogItem.vue b/components/Home/ChangelogItem.vue
new file mode 100644
index 0000000..c393a0b
--- /dev/null
+++ b/components/Home/ChangelogItem.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ v{{ change.version }}
+
+ {{ change.type === "release" ? "Release" : change.type === "minor release" ? "Feature" : "Bugfix" }}
+
+
+ Latest
+
+
+
+ Released on {{ formatDate(change.release) }}
+
+
+ → {{ note }}{{ index === change.notes.length - 1 ? "" : "," }}
+
+
+
+
+
+
+
diff --git a/components/Home/Contact.vue b/components/Home/Contact.vue
new file mode 100644
index 0000000..9c939db
--- /dev/null
+++ b/components/Home/Contact.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
diff --git a/components/Home/Contributors.vue b/components/Home/Contributors.vue
new file mode 100644
index 0000000..2b0696b
--- /dev/null
+++ b/components/Home/Contributors.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/components/Home/ContributorsItem.vue b/components/Home/ContributorsItem.vue
new file mode 100644
index 0000000..62e0b4c
--- /dev/null
+++ b/components/Home/ContributorsItem.vue
@@ -0,0 +1,33 @@
+
+
+
+
+ {{ contributor.name }}
+
+
+ {{ formatDate(contributor.dateAdded) }}
+
+
+
+
+
+ → {{ note }}{{ noteIndex === contributor.specific.length - 1 ? "" : "," }}
+
+
+
+
+
+
+
+
diff --git a/components/Home/Footer.vue b/components/Home/Footer.vue
new file mode 100644
index 0000000..883e16a
--- /dev/null
+++ b/components/Home/Footer.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/components/Home/Header.vue b/components/Home/Header.vue
new file mode 100644
index 0000000..932c49b
--- /dev/null
+++ b/components/Home/Header.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Home/Link.vue b/components/Home/Link.vue
new file mode 100644
index 0000000..ecef346
--- /dev/null
+++ b/components/Home/Link.vue
@@ -0,0 +1,134 @@
+
+ Gravity Assist data (blueprints, mails, etc.) isn't shared between different devices or browsers.
+ To link your data, paste the below information from the device/browser you want to link.
+
+
+
+
+
Your User ID
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Your Unique Token
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Home/SideBar.vue b/components/Home/SideBar.vue
new file mode 100644
index 0000000..df03cfa
--- /dev/null
+++ b/components/Home/SideBar.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
diff --git a/components/LatestChange.vue b/components/LatestChange.vue
deleted file mode 100644
index 6a5e039..0000000
--- a/components/LatestChange.vue
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
Version {{ getLatestChanges() }} - {{ mostRecentVersion.version }}
-
Version {{ mostRecentVersion.version }}
-
-
Latest Release: {{ mostRecentVersion.release }}
-
-
-
► {{ change }},
-
...and more!
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/Library/Hero.vue b/components/Library/Hero.vue
new file mode 100644
index 0000000..c2b57a5
--- /dev/null
+++ b/components/Library/Hero.vue
@@ -0,0 +1,28 @@
+
+
+
+ {{ currentShip.name }}
+ {{ currentShip.type }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/ModCard.vue b/components/Library/ModCard.vue
new file mode 100644
index 0000000..8697630
--- /dev/null
+++ b/components/Library/ModCard.vue
@@ -0,0 +1,20 @@
+
+
+
+ {{ mod.system }}
+
+
+ {{ part[0] }}
+
+ Unknown Module
+
+
+
+
+
+
diff --git a/components/Library/ModCategory.vue b/components/Library/ModCategory.vue
new file mode 100644
index 0000000..f2da677
--- /dev/null
+++ b/components/Library/ModCategory.vue
@@ -0,0 +1,22 @@
+
+
+
+ {{ category }}
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/Selection.vue b/components/Library/Selection.vue
new file mode 100644
index 0000000..472b49d
--- /dev/null
+++ b/components/Library/Selection.vue
@@ -0,0 +1,19 @@
+
+
+
+ {{ ship.name }}
+
+
+
+
+
+
diff --git a/components/Library/Showcase/BackButton.vue b/components/Library/Showcase/BackButton.vue
new file mode 100644
index 0000000..1aae311
--- /dev/null
+++ b/components/Library/Showcase/BackButton.vue
@@ -0,0 +1,13 @@
+
+
+
+ Back
+
+
+
+
+
+
diff --git a/components/Library/Showcase/Card/SubsystemCard.vue b/components/Library/Showcase/Card/SubsystemCard.vue
new file mode 100644
index 0000000..75ccc51
--- /dev/null
+++ b/components/Library/Showcase/Card/SubsystemCard.vue
@@ -0,0 +1,160 @@
+
+
+
+
{{ subsystem.name }}
+
+ x{{ subsystem.count }}
+ {{ subsystem.title }}
+
+
+
+
+
+
+ {{ priority[0][2]?.toLocaleString() }}
+ /min
+ ({{ categoryNames[priority[0][0]] }})
+
+
+
+
+
+
+
+
+ {{ propertyNames[name][0] }}
+
+
+ {{ ((property ?? 0) as number).toLocaleString() + (name === "lockonEfficiency" ? "%" : "") }}
+
+
+
+
+
+
+
+
+ {{ propertyNames[name][0] }}
+
+
{{ property[0] }} x {{ property[1] }}
+
{{ (property ?? 0) + ((name as string) === "damageFrequency" ? " time(s)" : "s") }}
+
+
+
+
+
+
+
+
+
+
{{ priority[0][0] ? "Attack" : "System" }} Priority
+
+
+
+
+
+
+ {{ categoryNames[name] }}
+
+
+ {{ damage?.toLocaleString() }}/min
+
+
+
+
{{ String(target[0]).padStart(2, "0") }}
+
+
{{ target[1] }}
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/Showcase/Card/SubsystemCards.vue b/components/Library/Showcase/Card/SubsystemCards.vue
new file mode 100644
index 0000000..8c9cb64
--- /dev/null
+++ b/components/Library/Showcase/Card/SubsystemCards.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/Showcase/Hero.vue b/components/Library/Showcase/Hero.vue
new file mode 100644
index 0000000..ccefdf4
--- /dev/null
+++ b/components/Library/Showcase/Hero.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+ {{ mod?.system ?? "404" }} : {{ part[0] }}
+ Unknown Module
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/Showcase/KnownHero.vue b/components/Library/Showcase/KnownHero.vue
new file mode 100644
index 0000000..7b5f3db
--- /dev/null
+++ b/components/Library/Showcase/KnownHero.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+ {{ mod.stats.hp.toLocaleString() }} System HP
+
+
+
+ {{ mod.default ? "Default module" : "Not a default module" }}
+
+
+
+
+
+
+
+
+
{{ statNames[name] }}
+
+
+ {{ ((stat as string)?.toLocaleString() ?? 0) + (name === "energyShield" ? "%" : "") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/Showcase/SourceBanner.vue b/components/Library/Showcase/SourceBanner.vue
new file mode 100644
index 0000000..0511a27
--- /dev/null
+++ b/components/Library/Showcase/SourceBanner.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ This module's data was sourced from {{ mod.sourcedFrom.join(" & ") }}!
+
+
+ Want to contribute? Check out
+
+ how to contribute
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Library/Showcase/UnknownHero.vue b/components/Library/Showcase/UnknownHero.vue
new file mode 100644
index 0000000..bd2a0cd
--- /dev/null
+++ b/components/Library/Showcase/UnknownHero.vue
@@ -0,0 +1,18 @@
+
+
+
Have this module unlocked? Contact me!
+
+
+
+
+
+
+
+
diff --git a/components/Mail/Buttons/Clear.vue b/components/Mail/Buttons/Clear.vue
new file mode 100644
index 0000000..1340a33
--- /dev/null
+++ b/components/Mail/Buttons/Clear.vue
@@ -0,0 +1,65 @@
+
+
+
+ Clear
+
+
+
+
+
+
Are you sure you want to clear the editor?
+
+
+ Yes
+
+
+ No
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Mail/Buttons/Copy.vue b/components/Mail/Buttons/Copy.vue
new file mode 100644
index 0000000..439c9d2
--- /dev/null
+++ b/components/Mail/Buttons/Copy.vue
@@ -0,0 +1,67 @@
+
+
+
+ Copy
+
+
+
+
+
+
Copied to clipboard!
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Mail/Buttons/Save.vue b/components/Mail/Buttons/Save.vue
new file mode 100644
index 0000000..7406d94
--- /dev/null
+++ b/components/Mail/Buttons/Save.vue
@@ -0,0 +1,166 @@
+
+
+
+ {{ !userQuery || userQuery === userStore.user?.uid ? "Save" : "Clone" }}
+
+
+
+
+
+
+
+ {{ templateName.length }}/50
+
+
+
+
+
+ {{ error }}
+
+
+
+
+
+
+ {{ loading ? "Saving..." : success ? "Saved!" : "Save" }}
+
+
+ {{ loading ? "Cloning..." : success ? "Cloned!" : "Clone" }}
+
+
+
+
+
+
+
Something went wrong. Please try again later.
+
+
+
+
+
+
+
+
+
diff --git a/components/Mail/Buttons/Share.vue b/components/Mail/Buttons/Share.vue
new file mode 100644
index 0000000..6ea32cc
--- /dev/null
+++ b/components/Mail/Buttons/Share.vue
@@ -0,0 +1,72 @@
+
+
+
+ Share
+
+
+
+
+
+
Link copied to clipboard!
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Mail/Editor.vue b/components/Mail/Editor.vue
new file mode 100644
index 0000000..76fc840
--- /dev/null
+++ b/components/Mail/Editor.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
diff --git a/components/Mail/Quill.client.vue b/components/Mail/Quill.client.vue
new file mode 100644
index 0000000..5efaf82
--- /dev/null
+++ b/components/Mail/Quill.client.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
diff --git a/components/Mail/SavedItem.vue b/components/Mail/SavedItem.vue
new file mode 100644
index 0000000..65f5dcd
--- /dev/null
+++ b/components/Mail/SavedItem.vue
@@ -0,0 +1,62 @@
+
+
+
+
{{ mail.name }}
+
+ Created {{ formatDate(mail.createdAt, "numeric", true) }}
+ Last modified {{ formatDate(mail.lastSaved, "numeric", true) }}
+
+
+
Edit
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Mail/TemplateItem.vue b/components/Mail/TemplateItem.vue
new file mode 100644
index 0000000..6cc5241
--- /dev/null
+++ b/components/Mail/TemplateItem.vue
@@ -0,0 +1,25 @@
+
+
+ {{ name }}
+ {{ selected ? "Selected" : "Click to select" }}
+
+
+
+
+
+
+
+
+
diff --git a/components/Mail/Templates.vue b/components/Mail/Templates.vue
new file mode 100644
index 0000000..245472f
--- /dev/null
+++ b/components/Mail/Templates.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/components/ModBrowse.vue b/components/ModBrowse.vue
deleted file mode 100644
index b4483e4..0000000
--- a/components/ModBrowse.vue
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-
-
Battlecruisers
-
-
-
{{ ship.name }}
-
-
-
-
-
-
Auxiliary Ships
-
-
-
{{ ship.name }}
-
-
-
-
-
-
Carriers
-
-
-
{{ ship.name }}
-
-
-
-
-
-
Battleships
-
-
-
{{ ship.name }}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ModCard.vue b/components/ModCard.vue
deleted file mode 100644
index 33440ec..0000000
--- a/components/ModCard.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-
x{{ subsystem.count }} | {{ subsystem.name }}
-
{{ subsystem.title }}
-
-
-
-
-
-
Hanger Type
-
-
{{ subsystem.hanger }}
-
-
-
-
-
Capacity
-
-
{{ subsystem.capacity }}
-
-
-
-
-
Damage Type
-
-
{{ subsystem.damageType }}
-
-
-
-
-
Prioritized Target
-
-
{{ subsystem.target }}
-
-
-
-
-
Damage Per Hit
-
-
{{ subsystem.alpha?.toLocaleString() }}
-
-
-
-
-
Lock-On Efficiency
-
-
{{ subsystem.lockonEfficiency.toLocaleString() }}%
-
-
-
-
-
-
-
-
-
{{ attribute }} : {{ attributes[attribute] }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ModSelect.vue b/components/ModSelect.vue
deleted file mode 100644
index b1f38be..0000000
--- a/components/ModSelect.vue
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-
-
{{ foundShip?.name }}
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/ModStats.vue b/components/ModStats.vue
deleted file mode 100644
index 9a3eafa..0000000
--- a/components/ModStats.vue
+++ /dev/null
@@ -1,265 +0,0 @@
-
-
-
{{ currentMod?.system }} | Unknown Module
- If you have this module and would like to contribute, DM me!
- DubNubz (ingame)
- @micromidget (discord)
-
-
-
-
-
-
{{ currentMod.system }} | {{ currentMod.name }}
-
-
-
-
{{ currentMod.stats.antiship.toLocaleString() }}
-
-
-
-
-
-
-
{{ currentMod.stats.antiair.toLocaleString() }}
-
-
-
-
-
-
-
{{ currentMod.stats.siege.toLocaleString() }}
-
-
-
-
-
System HP: {{ currentMod.stats.hp.toLocaleString() }}
-
-
-
-
-
{{ currentMod.system }} | {{ currentMod.name }}
-
-
-
-
{{ currentMod.stats.extraHP.toLocaleString() }}
-
-
-
-
-
-
-
{{ currentMod.stats.armor.toLocaleString() }}
-
-
-
-
-
-
-
{{ currentMod.stats.energyShield.toLocaleString() }}%
-
-
-
-
-
-
-
{{ currentMod.stats.hpRecovery.toLocaleString() }}/min
-
-
-
-
-
-
-
{{ currentMod.stats.storage.toLocaleString() }}
-
-
-
-
-
System HP: {{ currentMod.stats.hp.toLocaleString() }}
-
-
-
-
-
{{ currentMod.system }} | {{ currentMod.name }}
-
-
-
-
{{ currentMod.stats.cruise.toLocaleString() }}
-
-
-
-
-
-
-
{{ currentMod.stats.warp.toLocaleString() }}
-
-
-
-
-
System HP: {{ currentMod.stats.hp.toLocaleString() }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/RaBrowse.vue b/components/RaBrowse.vue
deleted file mode 100644
index b32b1c8..0000000
--- a/components/RaBrowse.vue
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
Company
-
-
-
{{ raHelperStore().manufacturer }}
-
-
-
-
-
Direction
-
-
-
{{ raHelperStore().direction }}
-
-
-
-
-
Scope
-
-
-
{{ raHelperStore().scope }}
-
-
-
-
-
Time required: {{ Math.floor(timeReqiredHours / 24) }} days, {{ Math.floor(timeReqiredHours % 24) }} hours , {{ Math.floor(timeReqiredHours % 24 % 1 * 60) }} minutes
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/RaSearch.vue b/components/RaSearch.vue
deleted file mode 100644
index 3992ea4..0000000
--- a/components/RaSearch.vue
+++ /dev/null
@@ -1,196 +0,0 @@
-
-
-
-
-
-
{{ ship.name }} ({{ ship.variant }})
-
{{ ship.variant_name }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/Research/MobileSearch.vue b/components/Research/MobileSearch.vue
new file mode 100644
index 0000000..f785dcd
--- /dev/null
+++ b/components/Research/MobileSearch.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/Research/PathBrowser.vue b/components/Research/PathBrowser.vue
new file mode 100644
index 0000000..6bcabf1
--- /dev/null
+++ b/components/Research/PathBrowser.vue
@@ -0,0 +1,120 @@
+
+
+
Path Browser
+
+
+
+
{{ manufacturers[manufacturer] }}
+
+
+
+
+
+
{{ directions[direction] }}
+
+
+
+
+
+
{{ scopes[scope] }}
+
+
+
+
+ Time to complete: {{ totalTime.formattedString }}
+
+
+
+
+
+
+
diff --git a/components/Research/Search.vue b/components/Research/Search.vue
new file mode 100644
index 0000000..946ec51
--- /dev/null
+++ b/components/Research/Search.vue
@@ -0,0 +1,205 @@
+
+
+
+ (search = term)"
+ @select="(ship) => selectShip(ship)"
+ @focus-button="(index) => (focusedButton = index)"
+ />
+
+
+
+
+
+
+
+
+
+
Recently searched
+
+
+
+
+ {{ ship.name }} ({{ ship.variant }})
+
+
+
+
+
+
+
No results. Maybe search for something else?
+
+
+
+ {{ ship.name }} ({{ ship.variant }})
+
+
+
...and {{ filteredData.length - 4 }} more
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/Research/Selected.vue b/components/Research/Selected.vue
new file mode 100644
index 0000000..61e475d
--- /dev/null
+++ b/components/Research/Selected.vue
@@ -0,0 +1,54 @@
+
+
+
+
{{ ship.name }}
+
+ {{ ship.variantName }} ({{ ship.variant }})
+
+
+
{{ chance === -1 ? "Not found in this path" : chance.toFixed(2) + "%" }}
+
+
+
+ {{ isBestPath ? "This is the best path!" : "Find best path" }}
+
+
+ View in Module Library
+
+
+
+
Select a ship to view more details!
+
+
+
+
+
+
diff --git a/components/Research/Selection.vue b/components/Research/Selection.vue
new file mode 100644
index 0000000..44ec8c7
--- /dev/null
+++ b/components/Research/Selection.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
{{ ship.name }}
+
+ {{ ship.variantName }} ({{ ship.variant }})
+
+
+ {{ ((ship.weight / ships.reduce((total, ship) => total + ship.weight, 0)) * 100).toFixed(2) }}%
+
+
+
+
+
+
+
+
diff --git a/components/SampleText.vue b/components/SampleText.vue
deleted file mode 100644
index 30ddfdf..0000000
--- a/components/SampleText.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/components/SideMenu.vue b/components/SideMenu.vue
deleted file mode 100644
index 3d635ec..0000000
--- a/components/SideMenu.vue
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..db8fc15
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,120 @@
+import pluginVue from "eslint-plugin-vue";
+import vueParser from "vue-eslint-parser";
+import tseslint from "typescript-eslint";
+import globals from "globals";
+
+/** @type {import('eslint').Linter.Config[]} */
+export default [
+ {
+ ignores: ["**/.nuxt", "**/node_modules", "**/.output", "**/dist"]
+ },
+ {
+ languageOptions: {
+ globals: { ...globals.browser, ...globals.node }
+ }
+ },
+ ...tseslint.configs.strictTypeChecked,
+ ...tseslint.configs.stylisticTypeChecked,
+ ...pluginVue.configs["flat/recommended"],
+ {
+ name: "main",
+ languageOptions: {
+ parser: vueParser,
+ parserOptions: {
+ parser: tseslint.parser,
+ extraFileExtensions: [".vue"],
+ projectService: true,
+ tsconfigRootDir: import.meta.dirname
+ }
+ }
+ },
+ {
+ rules: {
+ "array-callback-return": ["error", { allowImplicit: true }],
+ "no-template-curly-in-string": "error",
+ "no-unreachable-loop": "error",
+ "no-use-before-define": "error",
+ "block-scoped-var": "error",
+ camelcase: "error",
+ "default-case": "error",
+ "default-case-last": "error",
+ eqeqeq: "error",
+ "func-style": ["warn", "declaration"],
+ "max-depth": "error",
+ "no-console": ["error", { allow: ["warn", "error", "group", "groupEnd"] }],
+ "no-else-return": "error",
+ "no-empty-function": "error",
+ "no-lonely-if": "error",
+ "no-unneeded-ternary": "error",
+ "no-unused-expressions": "error",
+ "no-useless-computed-key": "error",
+ "no-useless-concat": "error",
+ "no-useless-return": "error",
+ "no-var": "error",
+ "operator-assignment": "error",
+ "prefer-arrow-callback": "error",
+ "prefer-const": "error",
+ "prefer-object-has-own": "error",
+ "prefer-object-spread": "error",
+ "prefer-template": "error",
+ yoda: "error",
+
+ "@typescript-eslint/array-type": "error",
+ "default-param-last": "off",
+ "@typescript-eslint/default-param-last": "error",
+ "dot-notation": "off",
+ "@typescript-eslint/dot-notation": "error",
+ complexity: "off",
+
+ "@typescript-eslint/no-confusing-void-expression": "off",
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-invalid-void-type": "off",
+ "@typescript-eslint/no-unnecessary-condition": "off",
+ "@typescript-eslint/no-unnecessary-type-assertion": "off",
+ "@typescript-eslint/no-unnecessary-type-parameters": "off",
+ "@typescript-eslint/no-unsafe-argument": "off",
+ "@typescript-eslint/no-unsafe-assignment": "off",
+ "@typescript-eslint/no-unsafe-call": "off",
+ "@typescript-eslint/no-unsafe-member-access": "off",
+ "@typescript-eslint/no-unsafe-return": "off",
+ "@typescript-eslint/restrict-template-expressions": "off",
+ "@typescript-eslint/consistent-type-definitions": "off",
+
+ "vue/multi-word-component-names": "off",
+ "vue/block-lang": ["error", { script: { lang: "ts" } }],
+ "vue/block-order": ["error", { order: ["template", "script", "style"] }],
+ "vue/component-api-style": "error",
+ "vue/component-name-in-template-casing": "error",
+ "vue/custom-event-name-casing": "error",
+ "vue/define-emits-declaration": "error",
+ "vue/define-props-declaration": "error",
+ "vue/enforce-style-attribute": "error",
+ "vue/html-button-has-type": "error",
+ "vue/new-line-between-multi-line-property": "error",
+ "vue/no-static-inline-styles": "error",
+ "vue/no-template-target-blank": "error",
+ "vue/no-unused-emit-declarations": "error",
+ "vue/no-unused-properties": "error",
+ "vue/no-unused-refs": "error",
+ "vue/no-useless-mustaches": "error",
+ "vue/no-useless-v-bind": "error",
+ "vue/padding-line-between-blocks": "error",
+ "vue/prefer-use-template-ref": "error",
+ "vue/require-typed-object-prop": "error",
+ "vue/v-for-delimiter-style": "error",
+ "vue/dot-notation": "error",
+ "vue/camelcase": "error",
+ "vue/no-console": "error",
+ "vue/no-constant-condition": "error",
+
+ "vue/html-self-closing": ["error", { html: { void: "always", normal: "never", component: "always" } }],
+ "vue/max-attributes-per-line": "off",
+ "vue/require-v-for-key": "off",
+ "vue/singleline-html-element-content-newline": "off",
+ "vue/multiline-html-element-content-newline": "off",
+ "vue/no-static-inline-styles": "off",
+ "vue/no-mutating-props": "off",
+ "vue/no-use-v-if-with-v-for": "off"
+ }
+ }
+];
diff --git a/getImagePaths.ts b/getImagePaths.ts
deleted file mode 100644
index e9307ba..0000000
--- a/getImagePaths.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { readdirSync, statSync, writeFileSync } from 'fs';
-import { join, extname, dirname } from 'path';
-import { fileURLToPath } from 'url';
-
-// @ts-ignore
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = dirname(__filename);
-
-const publicDir = join(__dirname, 'public');
-const imageExtensions = ['.svg', '.png'];
-
-function getImagePaths(dir: string, fileList: string[] = []) {
- const files = readdirSync(dir);
-
- files.forEach(file => {
- const filePath = join(dir, file);
- const stat = statSync(filePath);
-
- if (stat.isDirectory()) {
- getImagePaths(filePath, fileList);
- } else if (imageExtensions.includes(extname(file).toLowerCase())) {
- const normalizedPath = filePath.replace(publicDir, '').replace(/\\/g, '/');
- fileList.push(normalizedPath);
- }
- });
-
- return fileList;
-}
-
-const imagePaths = getImagePaths(publicDir);
-const outputPath = join(__dirname, 'imagePaths.json');
-
-writeFileSync(outputPath, JSON.stringify(imagePaths, null, 2));
\ No newline at end of file
diff --git a/imagePaths.json b/imagePaths.json
deleted file mode 100644
index be43f75..0000000
--- a/imagePaths.json
+++ /dev/null
@@ -1,275 +0,0 @@
-[
- "/equipment/advancedMilitaryOperationCenter.png",
- "/equipment/antoniosStandardPartsAssemblyFacility.png",
- "/equipment/arbiterPlanningCenter.png",
- "/equipment/armedOutpostControlCore.png",
- "/equipment/autoRepairingArmor.png",
- "/equipment/baseDefenseAndTrackingSystem.png",
- "/equipment/basePlatformFireControlRadar.png",
- "/equipment/battlecruiserAssemblyWorkshop.png",
- "/equipment/bvrAircraftGuidanceDevice.png",
- "/equipment/centralDistrictComponentIntegrationPlatform.png",
- "/equipment/centralDistrictCoreModule.png",
- "/equipment/combatMicrochipCenter.png",
- "/equipment/cruiserExclusiveShipyard.png",
- "/equipment/dawnStandardPartsAssemblyFacility.png",
- "/equipment/industrialDistrictComponentIntegrationPlatform.png",
- "/equipment/industrialDistrictCoreModule.png",
- "/equipment/jupiterStandardPartsAssemblyFacility.png",
- "/equipment/largeOutpostControlCore.png",
- "/equipment/nomaStandardPartsAssemblyFacility.png",
- "/equipment/portDistrictComponentIntegrationPlatform.png",
- "/equipment/portDistrictCoreModule.png",
- "/equipment/productionCoordinationController.png",
- "/equipment/quickOutpostControlCore.png",
- "/equipment/resourceMiningUAVSquadron.png",
- "/equipment/tradeCommunicationRelayStation.png",
- "/fleet/aircraft.svg",
- "/fleet/command_point.svg",
- "/fleet/cruise.svg",
- "/fleet/flagship.svg",
- "/fleet/health.svg",
- "/fleet/modules.svg",
- "/fleet/reinforcement.svg",
- "/fleet/storage.svg",
- "/fleet/techPoint.svg",
- "/ships/ac721_a.png",
- "/ships/ac721_b.png",
- "/ships/ac721_d.png",
- "/ships/aldabra_a.png",
- "/ships/aldabra_b.png",
- "/ships/at021_a.png",
- "/ships/at021_b.png",
- "/ships/at021_c.png",
- "/ships/b192newland.png",
- "/ships/br050_a.png",
- "/ships/br050_b.png",
- "/ships/br050_c.png",
- "/ships/bullfrog.png",
- "/ships/callisto_a.png",
- "/ships/callisto_b.png",
- "/ships/callisto_c.png",
- "/ships/carilion_a.png",
- "/ships/carilion_b.png",
- "/ships/carilion_c.png",
- "/ships/cas066_a.png",
- "/ships/cas066_b.png",
- "/ships/cas066_c.png",
- "/ships/cas066_d.png",
- "/ships/cellularDefender.png",
- "/ships/ceres_a.png",
- "/ships/ceres_b.png",
- "/ships/ceres_c.png",
- "/ships/chimera_a.png",
- "/ships/chimera_b.png",
- "/ships/chimera_c.png",
- "/ships/conamaraChaos_a.png",
- "/ships/conamaraChaos_b.png",
- "/ships/constantineTheGreat.png",
- "/ships/cv3000.png",
- "/ships/cvii003.png",
- "/ships/cvm011_a.png",
- "/ships/cvm011_b.png",
- "/ships/cvm011_c.png",
- "/ships/cvt800.png",
- "/ships/ediacaran.png",
- "/ships/eris_a.png",
- "/ships/eris_b.png",
- "/ships/eris_c.png",
- "/ships/eternalHeavens.png",
- "/ships/eternalStorm.png",
- "/ships/fg300_a.png",
- "/ships/fg300_b.png",
- "/ships/fg300_c.png",
- "/ships/fsv830.png",
- "/ships/guardian_a.png",
- "/ships/guardian_b.png",
- "/ships/guardian_c.png",
- "/ships/haleBopp_a.png",
- "/ships/haleBopp_b.png",
- "/ships/hayreddinsLoyal.png",
- "/ships/io_a.png",
- "/ships/io_b.png",
- "/ships/io_c.png",
- "/ships/jaeger_a.png",
- "/ships/jaeger_b.png",
- "/ships/janbiyaAer410.png",
- "/ships/kccpv_a.png",
- "/ships/kccpv_b.png",
- "/ships/kccpv_c.png",
- "/ships/kccpv_d.png",
- "/ships/lightCone_a.png",
- "/ships/lightCone_b.png",
- "/ships/lightCone_c.png",
- "/ships/mareImbrium_a.png",
- "/ships/mareImbrium_b.png",
- "/ships/mareNubium_a.png",
- "/ships/mareNubium_b.png",
- "/ships/mareSerenitatis_a.png",
- "/ships/mareSerenitatis_b.png",
- "/ships/mareSerenitatis_c.png",
- "/ships/mareTranquillitatis_a.png",
- "/ships/mareTranquillitatis_b.png",
- "/ships/mareTranquillitatis_c.png",
- "/ships/marshalCrux.png",
- "/ships/mistral.png",
- "/ships/nebulaChaser_a.png",
- "/ships/nebulaChaser_b.png",
- "/ships/nomaM470_a.png",
- "/ships/nomaM470_b.png",
- "/ships/nomaM470_c.png",
- "/ships/predator_a.png",
- "/ships/predator_b.png",
- "/ships/predator_c.png",
- "/ships/quaoar_a.png",
- "/ships/quaoar_b.png",
- "/ships/ranger_a.png",
- "/ships/ranger_b.png",
- "/ships/redbeast713.png",
- "/ships/reliat_a.png",
- "/ships/reliat_b.png",
- "/ships/reliat_c.png",
- "/ships/ruby_a.png",
- "/ships/ruby_b.png",
- "/ships/ruby_c.png",
- "/ships/sandrake.png",
- "/ships/sc002.png",
- "/ships/sc020.png",
- "/ships/silentAssassin.png",
- "/ships/slevy9.png",
- "/ships/solarWhale.png",
- "/ships/spearOfUranus.png",
- "/ships/sporeA404.png",
- "/ships/st59.png",
- "/ships/stingray.png",
- "/ships/strixA100.png",
- "/ships/taurus_a.png",
- "/ships/taurus_b.png",
- "/ships/taurus_c.png",
- "/ships/thunderboltStar.png",
- "/ships/tundra_a.png",
- "/ships/tundra_b.png",
- "/ships/vitasA021.png",
- "/ships/vitasB010.png",
- "/ships/voidElfin.png",
- "/ships/warspite.png",
- "/ships/wingedHussar_a.png",
- "/ships/wingedHussar_b.png",
- "/ships/wingedHussar_c.png",
- "/ships/xenostinger_a.png",
- "/ships/xenostinger_b.png",
- "/techBlueprints/aircraftLogisticsDevice.png",
- "/techBlueprints/festivePlasmaUAVSquadron.png",
- "/techBlueprints/hectorRemoteControlMiningUAV.png",
- "/techBlueprints/highIntensityWarpStabilizer.png",
- "/techBlueprints/highPowerBroadcastBeacon.png",
- "/techBlueprints/militaryInformationConcealmentEquipment.png",
- "/techBlueprints/operationCoordinationSatellite.png",
- "/techBlueprints/prefabModuleTransporationUAV.png",
- "/techBlueprints/privateerInfoRecognitionJammer.png",
- "/techBlueprints/reconnaissanceSatellite.png",
- "/techBlueprints/resourceRequestBeacon.png",
- "/techBlueprints/spaceOperationPlanningCoordinator.png",
- "/ui/alt/blackOpenBook.svg",
- "/ui/alt/whiteChanges.svg",
- "/ui/alt/whiteCredits.svg",
- "/ui/alt/whiteDownArrow.svg",
- "/ui/alt/whiteShare.svg",
- "/ui/atom.svg",
- "/ui/blueprint.svg",
- "/ui/burger.svg",
- "/ui/changes.svg",
- "/ui/copy.svg",
- "/ui/credits.svg",
- "/ui/discord_icon.png",
- "/ui/downArrow.svg",
- "/ui/greenUp.svg",
- "/ui/home.svg",
- "/ui/leftArrow.svg",
- "/ui/openBook.svg",
- "/ui/paint.svg",
- "/ui/plus.svg",
- "/ui/radiant.svg",
- "/ui/redDown.svg",
- "/ui/rightArrow.svg",
- "/ui/scale.svg",
- "/ui/search.svg",
- "/ui/share.svg",
- "/ui/solarSystem.svg",
- "/ui/wrench.svg",
- "/ui/x.svg",
- "/ui/yellowLine.svg",
- "/weapons/icons/aircraft.png",
- "/weapons/icons/armor.png",
- "/weapons/icons/cannon.png",
- "/weapons/icons/command.png",
- "/weapons/icons/jamming.png",
- "/weapons/icons/plus.svg",
- "/weapons/icons/speed.png",
- "/weapons/icons/storage.png",
- "/weapons/icons/unknown.png",
- "/weapons/stats/antiaircraft.svg",
- "/weapons/stats/antiship.svg",
- "/weapons/stats/armor.svg",
- "/weapons/stats/cruise.svg",
- "/weapons/stats/crystal.svg",
- "/weapons/stats/deuterium.svg",
- "/weapons/stats/energyShield.svg",
- "/weapons/stats/hp.svg",
- "/weapons/stats/metal.svg",
- "/weapons/stats/repair.svg",
- "/weapons/stats/siege.svg",
- "/weapons/stats/storage.svg",
- "/weapons/stats/time.svg",
- "/weapons/types/alpha.svg",
- "/weapons/types/damageType.svg",
- "/weapons/types/lockon.svg",
- "/weapons/types/target.svg",
- "/weapons/upgrades/aircraftHitrate.svg",
- "/weapons/upgrades/armor.svg",
- "/weapons/upgrades/bigHitrate.svg",
- "/weapons/upgrades/br050c_1.svg",
- "/weapons/upgrades/commandRepair.svg",
- "/weapons/upgrades/critDamage.svg",
- "/weapons/upgrades/critDamage2.svg",
- "/weapons/upgrades/directEvasion.svg",
- "/weapons/upgrades/energyCooldown.svg",
- "/weapons/upgrades/energyDamage.svg",
- "/weapons/upgrades/energyHitrate.svg",
- "/weapons/upgrades/energyShield.svg",
- "/weapons/upgrades/generalEvasion.svg",
- "/weapons/upgrades/genericCooldown.svg",
- "/weapons/upgrades/genericCooldown2.svg",
- "/weapons/upgrades/genericDamage.svg",
- "/weapons/upgrades/hp.svg",
- "/weapons/upgrades/jammingCooldown.svg",
- "/weapons/upgrades/missileDamage.svg",
- "/weapons/upgrades/missileEvasion.svg",
- "/weapons/upgrades/missileHitrate.svg",
- "/weapons/upgrades/missileTorpedoEvasion.svg",
- "/weapons/upgrades/plasmaDamage.svg",
- "/weapons/upgrades/railgunHitrate.svg",
- "/weapons/upgrades/reciprocal.svg",
- "/weapons/upgrades/reduceCritDamage.svg",
- "/weapons/upgrades/siegeDamage.svg",
- "/weapons/upgrades/smallHitrate.svg",
- "/weapons/upgrades/strategies/at021a_1.svg",
- "/weapons/upgrades/strategies/at021b_1.svg",
- "/weapons/upgrades/strategies/br050a_1.svg",
- "/weapons/upgrades/strategies/br050b_1.svg",
- "/weapons/upgrades/strategies/bullfrog_1.svg",
- "/weapons/upgrades/strategies/concentrateFire.svg",
- "/weapons/upgrades/strategies/hayreddin_1.svg",
- "/weapons/upgrades/strategies/heavyAmmo.svg",
- "/weapons/upgrades/strategies/janbiya_1.svg",
- "/weapons/upgrades/strategies/prioritizeFirepower.svg",
- "/weapons/upgrades/strategies/prioritizeTargets.svg",
- "/weapons/upgrades/strategies/sc020_1.svg",
- "/weapons/upgrades/strategies/stingray_1.svg",
- "/weapons/upgrades/strategies/strix_1.svg",
- "/weapons/upgrades/systemHp.svg",
- "/weapons/upgrades/targetReset.svg",
- "/weapons/upgrades/targetSelectionTime.svg",
- "/weapons/upgrades/targetSelectionTime2.svg",
- "/weapons/upgrades/torpedoIntercept.svg"
-]
\ No newline at end of file
diff --git a/layouts/default.vue b/layouts/default.vue
new file mode 100644
index 0000000..9e05c6c
--- /dev/null
+++ b/layouts/default.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/layouts/mail-editor.vue b/layouts/mail-editor.vue
new file mode 100644
index 0000000..c58d52a
--- /dev/null
+++ b/layouts/mail-editor.vue
@@ -0,0 +1,54 @@
+
+
+
+
Mail Editor
+
+
+
+
+
+
+ {{ tab.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nuxt.config.ts b/nuxt.config.ts
index c9d94e9..06440a2 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -1,33 +1,68 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
+ compatibilityDate: "2024-12-04",
devtools: { enabled: true },
css: ["assets/main.css"],
- modules: [
- "@pinia/nuxt"
- ],
+ vite: {
+ css: {
+ preprocessorOptions: {
+ scss: {
+ api: "modern"
+ }
+ }
+ }
+ },
+ modules: ["@pinia/nuxt", "@nuxtjs/tailwindcss", "@nuxt/test-utils/module", "@formkit/auto-animate/nuxt"],
+ postcss: {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {}
+ }
+ },
+ runtimeConfig: {
+ base64ServiceAccount: "",
+ public: {
+ baseUrl: ""
+ }
+ },
app: {
head: {
title: "Gravity Assist",
meta: [
- { charset: 'UTF-8' },
- { name: 'viewport', content: 'width=device-width, initial-scale=1.0' },
- { hid: 'description', name: 'description', content: 'Create colored text, search modules and research paths, design custom fleets, and more. Gravity Assist is an all-in-one tool for anything you may need in Infinite Lagrange.' },
- { name: 'keywords', content: 'space, infinite, lagrange, rts, game, tool, help, fleet, build, research, module, equipment, blueprint' }
+ { charset: "UTF-8" },
+ { name: "viewport", content: "width=device-width, initial-scale=1.0" },
+ { name: "mobile-web-app-capable", content: "yes" },
+ { name: "author", content: "DubNubz" },
+ { property: "og:title", content: "Gravity Assist" },
+ { property: "og:site_name", content: "Gravity Assist" },
+ {
+ name: "keywords",
+ content: "space, infinite, lagrange, rts, game, tool, help, fleet, build, research, module, equipment, blueprint, collection"
+ }
+ ],
+ link: [
+ { rel: "icon", type: "image/svg+xml", href: "/logo/logo.svg" },
+ {
+ rel: "stylesheet",
+ href: "https://cdn.jsdelivr.net/npm/quill@2.0.3/dist/quill.bubble.css"
+ }
],
- link: [{ rel: "icon", type: "image/svg+xml", href: "/ui/radiant.svg" }],
script: [
- { src: 'https://www.googletagmanager.com/gtag/js?id=G-41RFT8ZEZ8', async: true },
{
- hid: 'gtag',
+ src: "https://www.googletagmanager.com/gtag/js?id=G-41RFT8ZEZ8",
+ async: true
+ },
+ {
+ hid: "gtag",
innerHTML: `
window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-41RFT8ZEZ8');
`,
- type: 'text/javascript'
+ type: "text/javascript"
}
]
}
}
-})
+});
diff --git a/package-lock.json b/package-lock.json
index c613292..127b650 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,23 +7,49 @@
"name": "nuxt-app",
"hasInstallScript": true,
"dependencies": {
- "@ckpack/vue-color": "^1.5.0",
- "@nuxtjs/meta": "^3.0.0-beta.16",
- "@pinia/nuxt": "^0.5.1",
- "lodash": "^4.17.21",
- "nuxt": "^3.11.2",
- "pinia": "^2.1.7",
- "sass": "^1.77.2",
- "tinycolor": "^0.0.1",
- "tinycolor2": "^1.6.0",
- "vue": "^3.4.27",
- "vue-router": "^4.3.2"
+ "@formkit/auto-animate": "^0.8.2",
+ "@pinia/nuxt": "^0.7.0",
+ "firebase-admin": "^13.0.1",
+ "flowbite": "^2.5.2",
+ "flyonui": "^1.1.0",
+ "nuxt": "^3.13.0",
+ "obscenity": "^0.4.1",
+ "pinia": "^2.2.6",
+ "quill": "^2.0.3",
+ "sass": "^1.82.0",
+ "vue": "latest",
+ "vue-router": "latest"
},
"devDependencies": {
- "@types/lodash": "^4.17.7",
- "@types/tinycolor2": "^1.4.6",
- "tsx": "^4.19.1",
- "typescript": "^5.6.2"
+ "@eslint/js": "^9.19.0",
+ "@nuxt/test-utils": "^3.15.4",
+ "@nuxtjs/tailwindcss": "^6.12.2",
+ "@pinia/testing": "^0.1.7",
+ "@types/quill": "^2.0.14",
+ "@vue/test-utils": "^2.4.6",
+ "daisyui": "^4.12.14",
+ "eslint": "^9.19.0",
+ "eslint-plugin-vue": "^9.32.0",
+ "globals": "^15.14.0",
+ "happy-dom": "^16.7.2",
+ "prettier-plugin-tailwindcss": "^0.6.9",
+ "tailwindcss": "^3.4.16",
+ "typescript": "^5.7.3",
+ "typescript-eslint": "^8.21.0",
+ "vitest": "^3.0.4",
+ "vue-eslint-parser": "^9.4.3"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@ampproject/remapping": {
@@ -38,122 +64,21 @@
"node": ">=6.0.0"
}
},
- "node_modules/@antfu/install-pkg": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz",
- "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==",
- "peer": true,
- "dependencies": {
- "execa": "^5.1.1",
- "find-up": "^5.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "peer": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "peer": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "peer": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "peer": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "peer": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@antfu/install-pkg/node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/@antfu/utils": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz",
- "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
+ "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
- "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dependencies": {
- "@babel/highlight": "^7.24.2",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
},
"engines": {
@@ -161,28 +86,28 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.24.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
- "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
+ "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
- "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.2",
- "@babel/generator": "^7.24.5",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.24.5",
- "@babel/helpers": "^7.24.5",
- "@babel/parser": "^7.24.5",
- "@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.5",
- "@babel/types": "^7.24.5",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -206,38 +131,39 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
- "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
+ "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
"dependencies": {
- "@babel/types": "^7.24.5",
+ "@babel/parser": "^7.26.5",
+ "@babel/types": "^7.26.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+ "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
"dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
- "browserslist": "^4.22.2",
+ "@babel/compat-data": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
@@ -254,18 +180,16 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz",
- "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.24.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.24.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.24.5",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
"semver": "^6.3.1"
},
"engines": {
@@ -283,69 +207,38 @@
"semver": "bin/semver.js"
}
},
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz",
- "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dependencies": {
- "@babel/types": "^7.24.5"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.24.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
- "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
"dependencies": {
- "@babel/types": "^7.24.0"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz",
- "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.24.3",
- "@babel/helper-simple-access": "^7.24.5",
- "@babel/helper-split-export-declaration": "^7.24.5",
- "@babel/helper-validator-identifier": "^7.24.5"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -355,32 +248,32 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
- "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
- "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz",
- "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
- "@babel/helper-optimise-call-expression": "^7.22.5"
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -389,94 +282,61 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-simple-access": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz",
- "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==",
- "dependencies": {
- "@babel/types": "^7.24.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
- "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
- "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
- "dependencies": {
- "@babel/types": "^7.24.5"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
- "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
- "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz",
- "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+ "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
"dependencies": {
- "@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.5",
- "@babel/types": "^7.24.5"
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/highlight": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
- "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
+ "node_modules/@babel/parser": {
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
+ "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.24.5",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
+ "@babel/types": "^7.26.7"
},
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
- "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -485,13 +345,13 @@
}
},
"node_modules/@babel/plugin-proposal-decorators": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz",
- "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz",
+ "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.1",
- "@babel/helper-plugin-utils": "^7.24.0",
- "@babel/plugin-syntax-decorators": "^7.24.1"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-decorators": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -501,11 +361,11 @@
}
},
"node_modules/@babel/plugin-syntax-decorators": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz",
- "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz",
+ "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -515,11 +375,11 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz",
- "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -540,11 +400,11 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz",
- "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -554,28 +414,11 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz",
- "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz",
- "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==",
- "peer": true,
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
"dependencies": {
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.24.0",
- "@babel/helper-simple-access": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -585,33 +428,15 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz",
- "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.7.tgz",
+ "integrity": "sha512-5cJurntg+AT+cgelGP9Bt788DKiAw9gIMSMU2NJrLAilnj0m8WZWUNZPSLOmadYsujHutpgElO+50foX+ib/Wg==",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.24.5",
- "@babel/helper-plugin-utils": "^7.24.5",
- "@babel/plugin-syntax-typescript": "^7.24.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-typescript": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz",
- "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0",
- "@babel/helper-validator-option": "^7.23.5",
- "@babel/plugin-syntax-jsx": "^7.24.1",
- "@babel/plugin-transform-modules-commonjs": "^7.24.1",
- "@babel/plugin-transform-typescript": "^7.24.1"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -621,39 +446,36 @@
}
},
"node_modules/@babel/standalone": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.24.5.tgz",
- "integrity": "sha512-Sl8oN9bGfRlNUA2jzfzoHEZxFBDliBlwi5mPVCAWKSlBNkXXJOHpu7SDOqjF6mRoTa6GNX/1kAWG3Tr+YQ3N7A==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.26.7.tgz",
+ "integrity": "sha512-Fvdo9Dd20GDUAREzYMIR2EFMKAJ+ccxstgQdb39XV/yvygHL4UPcqgTkiChPyltAe/b+zgq+vUPXeukEZ6aUeA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
- "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.24.0",
- "@babel/types": "^7.24.0"
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
- "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
- "dependencies": {
- "@babel/code-frame": "^7.24.2",
- "@babel/generator": "^7.24.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.24.5",
- "@babel/parser": "^7.24.5",
- "@babel/types": "^7.24.5",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
+ "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.5",
+ "@babel/parser": "^7.26.7",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -661,38 +483,30 @@
"node": ">=6.9.0"
}
},
- "node_modules/@babel/types": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
- "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
- "dependencies": {
- "@babel/helper-string-parser": "^7.24.1",
- "@babel/helper-validator-identifier": "^7.24.5",
- "to-fast-properties": "^2.0.0"
- },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"engines": {
- "node": ">=6.9.0"
+ "node": ">=4"
}
},
- "node_modules/@ckpack/vue-color": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@ckpack/vue-color/-/vue-color-1.5.0.tgz",
- "integrity": "sha512-dj1zXVyay2m4LdlLJCQSdIS2FYwUl77BZqyKmUXiehyqjCP0bGYnPcL38lrShzYUc2FdkYQX8ANZZjRahd4PQw==",
+ "node_modules/@babel/types": {
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
+ "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
"dependencies": {
- "@ctrl/tinycolor": "^3.6.0",
- "material-colors": "^1.2.6"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "vue": "^3.2.0"
+ "node": ">=6.9.0"
}
},
"node_modules/@cloudflare/kv-asset-handler": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.2.tgz",
- "integrity": "sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz",
+ "integrity": "sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==",
"dependencies": {
"mime": "^3.0.0"
},
@@ -711,18 +525,10 @@
"node": ">=10.0.0"
}
},
- "node_modules/@ctrl/tinycolor": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
- "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
- "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
+ "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
"cpu": [
"ppc64"
],
@@ -731,13 +537,13 @@
"aix"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
- "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
+ "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
"cpu": [
"arm"
],
@@ -746,13 +552,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
- "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
+ "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
"cpu": [
"arm64"
],
@@ -761,13 +567,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
- "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
+ "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
"cpu": [
"x64"
],
@@ -776,13 +582,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
- "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
+ "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
"cpu": [
"arm64"
],
@@ -791,13 +597,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
- "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
+ "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
"cpu": [
"x64"
],
@@ -806,13 +612,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
- "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
"cpu": [
"arm64"
],
@@ -821,13 +627,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
- "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
+ "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
"cpu": [
"x64"
],
@@ -836,13 +642,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
- "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
+ "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
"cpu": [
"arm"
],
@@ -851,13 +657,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
- "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
+ "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
"cpu": [
"arm64"
],
@@ -866,13 +672,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
- "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
+ "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
"cpu": [
"ia32"
],
@@ -881,13 +687,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
- "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
+ "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
"cpu": [
"loong64"
],
@@ -896,13 +702,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
- "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
+ "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
"cpu": [
"mips64el"
],
@@ -911,13 +717,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
- "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
+ "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
"cpu": [
"ppc64"
],
@@ -926,13 +732,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
- "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
+ "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
"cpu": [
"riscv64"
],
@@ -941,13 +747,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
- "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
+ "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
"cpu": [
"s390x"
],
@@ -956,13 +762,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
- "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
+ "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
"cpu": [
"x64"
],
@@ -971,13 +777,28 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
- "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
"cpu": [
"x64"
],
@@ -986,17 +807,16 @@
"netbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz",
- "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"openbsd"
@@ -1006,9 +826,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
- "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
"cpu": [
"x64"
],
@@ -1017,13 +837,13 @@
"openbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
- "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
+ "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
"cpu": [
"x64"
],
@@ -1032,13 +852,13 @@
"sunos"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
- "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
+ "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
"cpu": [
"arm64"
],
@@ -1047,13 +867,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
- "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
+ "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
"cpu": [
"ia32"
],
@@ -1062,13 +882,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
- "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
+ "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
"cpu": [
"x64"
],
@@ -1077,60 +897,421 @@
"win32"
],
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/@fastify/busboy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
- "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
- "engines": {
- "node": ">=14"
+ "node": ">=18"
}
},
- "node_modules/@floating-ui/core": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz",
- "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==",
- "peer": true,
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
+ "devOptional": true,
"dependencies": {
- "@floating-ui/utils": "^0.2.0"
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@floating-ui/dom": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz",
- "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==",
- "peer": true,
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "devOptional": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "devOptional": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz",
+ "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==",
+ "devOptional": true,
"dependencies": {
- "@floating-ui/core": "^1.1.0"
+ "@eslint/object-schema": "^2.1.5",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@floating-ui/utils": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz",
- "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==",
- "peer": true
+ "node_modules/@eslint/core": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz",
+ "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==",
+ "devOptional": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
},
- "node_modules/@iconify/types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
- "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
- "peer": true
- },
- "node_modules/@iconify/utils": {
- "version": "2.1.23",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.23.tgz",
- "integrity": "sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==",
- "peer": true,
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
+ "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
+ "devOptional": true,
"dependencies": {
- "@antfu/install-pkg": "^0.1.1",
- "@antfu/utils": "^0.7.7",
- "@iconify/types": "^2.0.0",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "local-pkg": "^0.5.0",
- "mlly": "^1.6.1"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.19.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz",
+ "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==",
+ "devOptional": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz",
+ "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==",
+ "devOptional": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz",
+ "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==",
+ "devOptional": true,
+ "dependencies": {
+ "@eslint/core": "^0.10.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@fastify/busboy": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.1.0.tgz",
+ "integrity": "sha512-yHmUtGwEbW6HsKpPqT140/L6GpHtquHogRLgtanJFep3UAfDkE0fQfC49U+F9irCAoJVlv3M7VSp4rrtO4LnfA=="
+ },
+ "node_modules/@firebase/app-check-interop-types": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz",
+ "integrity": "sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A=="
+ },
+ "node_modules/@firebase/app-types": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.3.tgz",
+ "integrity": "sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw=="
+ },
+ "node_modules/@firebase/auth-interop-types": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz",
+ "integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA=="
+ },
+ "node_modules/@firebase/component": {
+ "version": "0.6.11",
+ "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.11.tgz",
+ "integrity": "sha512-eQbeCgPukLgsKD0Kw5wQgsMDX5LeoI1MIrziNDjmc6XDq5ZQnuUymANQgAb2wp1tSF9zDSXyxJmIUXaKgN58Ug==",
+ "dependencies": {
+ "@firebase/util": "1.10.2",
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@firebase/database": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.10.tgz",
+ "integrity": "sha512-sWp2g92u7xT4BojGbTXZ80iaSIaL6GAL0pwvM0CO/hb0nHSnABAqsH7AhnWGsGvXuEvbPr7blZylPaR9J+GSuQ==",
+ "dependencies": {
+ "@firebase/app-check-interop-types": "0.3.3",
+ "@firebase/auth-interop-types": "0.2.4",
+ "@firebase/component": "0.6.11",
+ "@firebase/logger": "0.4.4",
+ "@firebase/util": "1.10.2",
+ "faye-websocket": "0.11.4",
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@firebase/database-compat": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.1.tgz",
+ "integrity": "sha512-IsFivOjdE1GrjTeKoBU/ZMenESKDXidFDzZzHBPQ/4P20ptGdrl3oLlWrV/QJqJ9lND4IidE3z4Xr5JyfUW1vg==",
+ "dependencies": {
+ "@firebase/component": "0.6.11",
+ "@firebase/database": "1.0.10",
+ "@firebase/database-types": "1.0.7",
+ "@firebase/logger": "0.4.4",
+ "@firebase/util": "1.10.2",
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@firebase/database-types": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.7.tgz",
+ "integrity": "sha512-I7zcLfJXrM0WM+ksFmFdAMdlq/DFmpeMNa+/GNsLyFo5u/lX5zzkPzGe3srVWqaBQBY5KprylDGxOsP6ETfL0A==",
+ "dependencies": {
+ "@firebase/app-types": "0.9.3",
+ "@firebase/util": "1.10.2"
+ }
+ },
+ "node_modules/@firebase/logger": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.4.tgz",
+ "integrity": "sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@firebase/util": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.2.tgz",
+ "integrity": "sha512-qnSHIoE9FK+HYnNhTI8q14evyqbc/vHRivfB4TgCIUOl4tosmKSQlp7ltymOlMP4xVIJTg5wrkfcZ60X4nUf7Q==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@formkit/auto-animate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.8.2.tgz",
+ "integrity": "sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ=="
+ },
+ "node_modules/@google-cloud/firestore": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.11.0.tgz",
+ "integrity": "sha512-88uZ+jLsp1aVMj7gh3EKYH1aulTAMFAp8sH/v5a9w8q8iqSG27RiWLoxSAFr/XocZ9hGiWH1kEnBw+zl3xAgNA==",
+ "optional": true,
+ "dependencies": {
+ "@opentelemetry/api": "^1.3.0",
+ "fast-deep-equal": "^3.1.1",
+ "functional-red-black-tree": "^1.0.1",
+ "google-gax": "^4.3.3",
+ "protobufjs": "^7.2.6"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@google-cloud/paginator": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz",
+ "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==",
+ "optional": true,
+ "dependencies": {
+ "arrify": "^2.0.0",
+ "extend": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@google-cloud/projectify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz",
+ "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==",
+ "optional": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@google-cloud/promisify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz",
+ "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@google-cloud/storage": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.14.0.tgz",
+ "integrity": "sha512-H41bPL2cMfSi4EEnFzKvg7XSb7T67ocSXrmF7MPjfgFB0L6CKGzfIYJheAZi1iqXjz6XaCT1OBf6HCG5vDBTOQ==",
+ "optional": true,
+ "dependencies": {
+ "@google-cloud/paginator": "^5.0.0",
+ "@google-cloud/projectify": "^4.0.0",
+ "@google-cloud/promisify": "^4.0.0",
+ "abort-controller": "^3.0.0",
+ "async-retry": "^1.3.3",
+ "duplexify": "^4.1.3",
+ "fast-xml-parser": "^4.4.1",
+ "gaxios": "^6.0.2",
+ "google-auth-library": "^9.6.3",
+ "html-entities": "^2.5.2",
+ "mime": "^3.0.0",
+ "p-limit": "^3.0.1",
+ "retry-request": "^7.0.0",
+ "teeny-request": "^9.0.0",
+ "uuid": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@google-cloud/storage/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "optional": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@grpc/proto-loader": {
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz",
+ "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==",
+ "optional": true,
+ "dependencies": {
+ "lodash.camelcase": "^4.3.0",
+ "long": "^5.0.0",
+ "protobufjs": "^7.2.5",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "devOptional": true,
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@ioredis/commands": {
@@ -1155,9 +1336,9 @@
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"engines": {
"node": ">=12"
},
@@ -1266,9 +1447,9 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
@@ -1279,6 +1460,32 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@js-sdsl/ordered-map": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz",
+ "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==",
+ "optional": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/js-sdsl"
+ }
+ },
+ "node_modules/@koa/router": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz",
+ "integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "http-errors": "^2.0.0",
+ "koa-compose": "^4.1.0",
+ "methods": "^1.1.2",
+ "path-to-regexp": "^6.3.0"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/@kwsites/file-exists": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
@@ -1312,11 +1519,11 @@
}
},
"node_modules/@netlify/functions": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.7.0.tgz",
- "integrity": "sha512-4pXC/fuj3eGQ86wbgPiM4zY8+AsNrdz6vcv6FEdUJnZW+LqF8IWjQcY3S0d1hLeLKODYOqq4CkrzGyCpce63Nw==",
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.8.2.tgz",
+ "integrity": "sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==",
"dependencies": {
- "@netlify/serverless-functions-api": "1.18.1"
+ "@netlify/serverless-functions-api": "1.26.1"
},
"engines": {
"node": ">=14.0.0"
@@ -1331,16 +1538,11 @@
}
},
"node_modules/@netlify/serverless-functions-api": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.18.1.tgz",
- "integrity": "sha512-DrSvivchuwsuQW03zbVPT3nxCQa5tn7m4aoPOsQKibuJXIuSbfxzCBxPLz0+LchU5ds7YyOaCc9872Y32ngYzg==",
+ "version": "1.26.1",
+ "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.26.1.tgz",
+ "integrity": "sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==",
"dependencies": {
"@netlify/node-cookies": "^0.1.0",
- "@opentelemetry/core": "^1.23.0",
- "@opentelemetry/otlp-transformer": "^0.50.0",
- "@opentelemetry/resources": "^1.23.0",
- "@opentelemetry/sdk-trace-base": "^1.23.0",
- "@opentelemetry/semantic-conventions": "^1.23.0",
"urlpattern-polyfill": "8.0.2"
},
"engines": {
@@ -1379,263 +1581,74 @@
"node": ">= 8"
}
},
- "node_modules/@npmcli/agent": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz",
- "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==",
+ "node_modules/@nuxt/cli": {
+ "version": "3.21.1",
+ "resolved": "https://registry.npmjs.org/@nuxt/cli/-/cli-3.21.1.tgz",
+ "integrity": "sha512-GFFHSEtNtf1s4anMKWFfKSbKiNvEwOKxfP3uls7anZ8GCVYrKthMMxeou4fZBcRhTAFbiLC7DytsKnjfmY2t9w==",
"dependencies": {
- "agent-base": "^7.1.0",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.1",
- "lru-cache": "^10.0.1",
- "socks-proxy-agent": "^8.0.3"
+ "c12": "^2.0.1",
+ "chokidar": "^4.0.3",
+ "citty": "^0.1.6",
+ "clipboardy": "^4.0.0",
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "fuse.js": "^7.0.0",
+ "giget": "^1.2.4",
+ "h3": "^1.14.0",
+ "httpxy": "^0.1.7",
+ "jiti": "^2.4.2",
+ "listhen": "^1.9.0",
+ "nypm": "^0.5.2",
+ "ofetch": "^1.4.1",
+ "ohash": "^1.1.4",
+ "pathe": "^2.0.2",
+ "perfect-debounce": "^1.0.0",
+ "pkg-types": "^1.3.1",
+ "scule": "^1.3.0",
+ "semver": "^7.6.3",
+ "std-env": "^3.8.0",
+ "tinyexec": "^0.3.2",
+ "ufo": "^1.5.4"
},
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/agent/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
- "dependencies": {
- "debug": "^4.3.4"
+ "bin": {
+ "nuxi": "bin/nuxi.mjs",
+ "nuxi-ng": "bin/nuxi.mjs",
+ "nuxt": "bin/nuxi.mjs",
+ "nuxt-cli": "bin/nuxi.mjs"
},
"engines": {
- "node": ">= 14"
+ "node": "^16.10.0 || >=18.0.0"
}
},
- "node_modules/@npmcli/agent/node_modules/https-proxy-agent": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+ "node_modules/@nuxt/cli/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dependencies": {
- "agent-base": "^7.0.2",
- "debug": "4"
+ "readdirp": "^4.0.1"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/@npmcli/agent/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
+ "node_modules/@nuxt/cli/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@nuxt/cli/node_modules/readdirp": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
+ "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
"engines": {
- "node": "14 || >=16.14"
- }
- },
- "node_modules/@npmcli/fs": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz",
- "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==",
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/git": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz",
- "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==",
- "dependencies": {
- "@npmcli/promise-spawn": "^7.0.0",
- "lru-cache": "^10.0.1",
- "npm-pick-manifest": "^9.0.0",
- "proc-log": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "promise-retry": "^2.0.1",
- "semver": "^7.3.5",
- "which": "^4.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/git/node_modules/isexe": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@npmcli/git/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
- "engines": {
- "node": "14 || >=16.14"
- }
- },
- "node_modules/@npmcli/git/node_modules/which": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
- "dependencies": {
- "isexe": "^3.1.1"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/installed-package-contents": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz",
- "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==",
- "dependencies": {
- "npm-bundled": "^3.0.0",
- "npm-normalize-package-bin": "^3.0.0"
- },
- "bin": {
- "installed-package-contents": "bin/index.js"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/node-gyp": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz",
- "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/package-json": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.1.0.tgz",
- "integrity": "sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==",
- "dependencies": {
- "@npmcli/git": "^5.0.0",
- "glob": "^10.2.2",
- "hosted-git-info": "^7.0.0",
- "json-parse-even-better-errors": "^3.0.0",
- "normalize-package-data": "^6.0.0",
- "proc-log": "^4.0.0",
- "semver": "^7.5.3"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/package-json/node_modules/glob": {
- "version": "10.3.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz",
- "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@npmcli/package-json/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@npmcli/promise-spawn": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz",
- "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==",
- "dependencies": {
- "which": "^4.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/promise-spawn/node_modules/isexe": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@npmcli/promise-spawn/node_modules/which": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
- "dependencies": {
- "isexe": "^3.1.1"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/redact": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.0.tgz",
- "integrity": "sha512-SEjCPAVHWYUIQR+Yn03kJmrJjZDtJLYpj300m3HV9OTRZNpC5YpbMsM3eTkECyT4aWj8lDr9WeY6TWefpubtYQ==",
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/run-script": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz",
- "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==",
- "dependencies": {
- "@npmcli/node-gyp": "^3.0.0",
- "@npmcli/package-json": "^5.0.0",
- "@npmcli/promise-spawn": "^7.0.0",
- "node-gyp": "^10.0.0",
- "proc-log": "^4.0.0",
- "which": "^4.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@npmcli/run-script/node_modules/isexe": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@npmcli/run-script/node_modules/which": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
- "dependencies": {
- "isexe": "^3.1.1"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^16.13.0 || >=18.0.0"
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
"node_modules/@nuxt/devalue": {
@@ -1644,486 +1657,551 @@
"integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA=="
},
"node_modules/@nuxt/devtools": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-1.3.1.tgz",
- "integrity": "sha512-SuiuqtlN6OMPn7hYqbydcJmRF/L86yxi8ApcjNVnMURYBPaAAN9egkEFpQ6AjzjX+UnaG1hU8FE0w6pWKSRp3A==",
- "dependencies": {
- "@antfu/utils": "^0.7.8",
- "@nuxt/devtools-kit": "1.3.1",
- "@nuxt/devtools-wizard": "1.3.1",
- "@nuxt/kit": "^3.11.2",
- "@vue/devtools-applet": "^7.1.3",
- "@vue/devtools-core": "^7.1.3",
- "@vue/devtools-kit": "^7.1.3",
- "birpc": "^0.2.17",
- "consola": "^3.2.3",
- "cronstrue": "^2.50.0",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-1.7.0.tgz",
+ "integrity": "sha512-uvnjt5Zowkz7tZmnks2cGreg1XZIiSyVzQ2MYiRXACodlXcwJ0dpUS3WTxu8BR562K+772oRdvKie9AQlyZUgg==",
+ "dependencies": {
+ "@antfu/utils": "^0.7.10",
+ "@nuxt/devtools-kit": "1.7.0",
+ "@nuxt/devtools-wizard": "1.7.0",
+ "@nuxt/kit": "^3.15.0",
+ "@vue/devtools-core": "7.6.8",
+ "@vue/devtools-kit": "7.6.8",
+ "birpc": "^0.2.19",
+ "consola": "^3.3.1",
+ "cronstrue": "^2.52.0",
"destr": "^2.0.3",
- "error-stack-parser-es": "^0.1.1",
+ "error-stack-parser-es": "^0.1.5",
"execa": "^7.2.0",
- "fast-glob": "^3.3.2",
- "flatted": "^3.3.1",
+ "fast-npm-meta": "^0.2.2",
+ "flatted": "^3.3.2",
"get-port-please": "^3.1.2",
"hookable": "^5.5.3",
- "image-meta": "^0.2.0",
+ "image-meta": "^0.2.1",
"is-installed-globally": "^1.0.0",
- "launch-editor": "^2.6.1",
- "local-pkg": "^0.5.0",
- "magicast": "^0.3.4",
- "nypm": "^0.3.8",
- "ohash": "^1.1.3",
- "pacote": "^18.0.6",
+ "launch-editor": "^2.9.1",
+ "local-pkg": "^0.5.1",
+ "magicast": "^0.3.5",
+ "nypm": "^0.4.1",
+ "ohash": "^1.1.4",
"pathe": "^1.1.2",
"perfect-debounce": "^1.0.0",
- "pkg-types": "^1.1.1",
+ "pkg-types": "^1.2.1",
"rc9": "^2.1.2",
"scule": "^1.3.0",
- "semver": "^7.6.2",
- "simple-git": "^3.24.0",
- "sirv": "^2.0.4",
- "unimport": "^3.7.1",
- "vite-plugin-inspect": "^0.8.4",
- "vite-plugin-vue-inspector": "^5.1.0",
+ "semver": "^7.6.3",
+ "simple-git": "^3.27.0",
+ "sirv": "^3.0.0",
+ "tinyglobby": "^0.2.10",
+ "unimport": "^3.14.5",
+ "vite-plugin-inspect": "~0.8.9",
+ "vite-plugin-vue-inspector": "^5.3.1",
"which": "^3.0.1",
- "ws": "^8.17.0"
+ "ws": "^8.18.0"
},
"bin": {
"devtools": "cli.mjs"
},
"peerDependencies": {
- "nuxt": "^3.9.0",
"vite": "*"
}
},
"node_modules/@nuxt/devtools-kit": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-1.3.1.tgz",
- "integrity": "sha512-YckEiiTef3dMckwLLUb+feKV0O8pS9s8ujw/FQ600oQbOCbq6hpWY5HQYxVYc3E41wu87lFiIZ1rnHjO3nM9sw==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-1.7.0.tgz",
+ "integrity": "sha512-+NgZ2uP5BuneqvQbe7EdOEaFEDy8762c99pLABtn7/Ur0ExEsQJMP7pYjjoTfKubhBqecr5Vo9yHkPBj1eHulQ==",
"dependencies": {
- "@nuxt/kit": "^3.11.2",
- "@nuxt/schema": "^3.11.2",
+ "@nuxt/kit": "^3.15.0",
+ "@nuxt/schema": "^3.15.0",
"execa": "^7.2.0"
},
"peerDependencies": {
- "nuxt": "^3.9.0",
"vite": "*"
}
},
"node_modules/@nuxt/devtools-wizard": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-1.3.1.tgz",
- "integrity": "sha512-t6qTp573s1NWoS1nqOqKRld6wFWDiMzoFojBG8GeqTwPi2NYbjyPbQobmvMGiihkWPudMpChhAhYwTTyCPFE7Q==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-1.7.0.tgz",
+ "integrity": "sha512-86Gd92uEw0Dh2ErIYT9TMIrMOISE96fCRN4rxeryTvyiowQOsyrbkCeMNYrEehoRL+lohoyK6iDmFajadPNwWQ==",
"dependencies": {
- "consola": "^3.2.3",
- "diff": "^5.2.0",
+ "consola": "^3.3.1",
+ "diff": "^7.0.0",
"execa": "^7.2.0",
"global-directory": "^4.0.1",
- "magicast": "^0.3.4",
+ "magicast": "^0.3.5",
"pathe": "^1.1.2",
- "pkg-types": "^1.1.1",
+ "pkg-types": "^1.2.1",
"prompts": "^2.4.2",
"rc9": "^2.1.2",
- "semver": "^7.6.2"
+ "semver": "^7.6.3"
},
"bin": {
"devtools-wizard": "cli.mjs"
}
},
- "node_modules/@nuxt/kit": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.11.2.tgz",
- "integrity": "sha512-yiYKP0ZWMW7T3TCmsv4H8+jEsB/nFriRAR8bKoSqSV9bkVYWPE36sf7JDux30dQ91jSlQG6LQkB3vCHYTS2cIg==",
+ "node_modules/@nuxt/devtools/node_modules/nypm": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.4.1.tgz",
+ "integrity": "sha512-1b9mihliBh8UCcKtcGRu//G50iHpjxIQVUqkdhPT/SDVE7KdJKoHXLS0heuYTQCx95dFqiyUbXZB9r8ikn+93g==",
"dependencies": {
- "@nuxt/schema": "3.11.2",
- "c12": "^1.10.0",
+ "citty": "^0.1.6",
"consola": "^3.2.3",
- "defu": "^6.1.4",
- "globby": "^14.0.1",
- "hash-sum": "^2.0.0",
- "ignore": "^5.3.1",
- "jiti": "^1.21.0",
- "knitwork": "^1.1.0",
- "mlly": "^1.6.1",
"pathe": "^1.1.2",
- "pkg-types": "^1.0.3",
- "scule": "^1.3.0",
- "semver": "^7.6.0",
- "ufo": "^1.5.3",
- "unctx": "^2.3.1",
- "unimport": "^3.7.1",
- "untyped": "^1.4.2"
+ "pkg-types": "^1.2.1",
+ "tinyexec": "^0.3.1",
+ "ufo": "^1.5.4"
},
- "engines": {
- "node": "^14.18.0 || >=16.10.0"
- }
- },
- "node_modules/@nuxt/schema": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.11.2.tgz",
- "integrity": "sha512-Z0bx7N08itD5edtpkstImLctWMNvxTArsKXzS35ZuqyAyKBPcRjO1CU01slH0ahO30Gg9kbck3/RKNZPwfOjJg==",
- "dependencies": {
- "@nuxt/ui-templates": "^1.3.2",
- "consola": "^3.2.3",
- "defu": "^6.1.4",
- "hookable": "^5.5.3",
- "pathe": "^1.1.2",
- "pkg-types": "^1.0.3",
- "scule": "^1.3.0",
- "std-env": "^3.7.0",
- "ufo": "^1.5.3",
- "unimport": "^3.7.1",
- "untyped": "^1.4.2"
+ "bin": {
+ "nypm": "dist/cli.mjs"
},
"engines": {
- "node": "^14.18.0 || >=16.10.0"
+ "node": "^14.16.0 || >=16.10.0"
}
},
- "node_modules/@nuxt/telemetry": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.5.4.tgz",
- "integrity": "sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==",
- "dependencies": {
- "@nuxt/kit": "^3.11.2",
- "ci-info": "^4.0.0",
- "consola": "^3.2.3",
- "create-require": "^1.1.1",
- "defu": "^6.1.4",
- "destr": "^2.0.3",
- "dotenv": "^16.4.5",
- "git-url-parse": "^14.0.0",
- "is-docker": "^3.0.0",
- "jiti": "^1.21.0",
- "mri": "^1.2.0",
- "nanoid": "^5.0.7",
- "ofetch": "^1.3.4",
- "parse-git-config": "^3.0.0",
- "pathe": "^1.1.2",
- "rc9": "^2.1.2",
- "std-env": "^3.7.0"
+ "node_modules/@nuxt/devtools/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
},
- "bin": {
- "nuxt-telemetry": "bin/nuxt-telemetry.mjs"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/@nuxt/ui-templates": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@nuxt/ui-templates/-/ui-templates-1.3.3.tgz",
- "integrity": "sha512-3BG5doAREcD50dbKyXgmjD4b1GzY8CUy3T41jMhHZXNDdaNwOd31IBq+D6dV00OSrDVhzrTVj0IxsUsnMyHvIQ=="
- },
- "node_modules/@nuxt/vite-builder": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.11.2.tgz",
- "integrity": "sha512-eXTZsAAN4dPz4eA2UD5YU2kD/DqgfyQp1UYsIdCe6+PAVe1ifkUboBjbc0piR5+3qI/S/eqk3nzxRGbiYF7Ccg==",
- "dependencies": {
- "@nuxt/kit": "3.11.2",
- "@rollup/plugin-replace": "^5.0.5",
- "@vitejs/plugin-vue": "^5.0.4",
- "@vitejs/plugin-vue-jsx": "^3.1.0",
- "autoprefixer": "^10.4.19",
- "clear": "^0.1.0",
- "consola": "^3.2.3",
- "cssnano": "^6.1.2",
- "defu": "^6.1.4",
- "esbuild": "^0.20.2",
+ "node_modules/@nuxt/devtools/node_modules/unimport": {
+ "version": "3.14.6",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.14.6.tgz",
+ "integrity": "sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.4",
+ "acorn": "^8.14.0",
"escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3",
- "externality": "^1.0.2",
- "fs-extra": "^11.2.0",
- "get-port-please": "^3.1.2",
- "h3": "^1.11.1",
- "knitwork": "^1.1.0",
- "magic-string": "^0.30.9",
- "mlly": "^1.6.1",
- "ohash": "^1.1.3",
- "pathe": "^1.1.2",
- "perfect-debounce": "^1.0.0",
- "pkg-types": "^1.0.3",
- "postcss": "^8.4.38",
- "rollup-plugin-visualizer": "^5.12.0",
- "std-env": "^3.7.0",
- "strip-literal": "^2.1.0",
- "ufo": "^1.5.3",
- "unenv": "^1.9.0",
- "unplugin": "^1.10.1",
- "vite": "^5.2.8",
- "vite-node": "^1.4.0",
- "vite-plugin-checker": "^0.6.4",
- "vue-bundle-renderer": "^2.0.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.10.0"
- },
- "peerDependencies": {
- "vue": "^3.3.4"
+ "fast-glob": "^3.3.3",
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1",
+ "picomatch": "^4.0.2",
+ "pkg-types": "^1.3.0",
+ "scule": "^1.3.0",
+ "strip-literal": "^2.1.1",
+ "unplugin": "^1.16.1"
}
},
- "node_modules/@nuxtjs/meta": {
- "version": "3.0.0-beta.16",
- "resolved": "https://registry.npmjs.org/@nuxtjs/meta/-/meta-3.0.0-beta.16.tgz",
- "integrity": "sha512-BO/jxB6tas8ZvmSzGjwHntAJuSFj8UL7B7cu+emHXgBtq/lldy0wkQ6WGWEB9YgeCqv8zM/OCfEVooVcBtUHsA==",
+ "node_modules/@nuxt/devtools/node_modules/unimport/node_modules/local-pkg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
+ "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
"dependencies": {
- "@nuxtjs/pwa-utils": "3.0.0-beta.16"
- }
- },
- "node_modules/@nuxtjs/pwa-utils": {
- "version": "3.0.0-beta.16",
- "resolved": "https://registry.npmjs.org/@nuxtjs/pwa-utils/-/pwa-utils-3.0.0-beta.16.tgz",
- "integrity": "sha512-3sF8iAstLi/dbQ39S4Zdy/QsK5IArgJ2s/nuGxOTVuxz01m07VdMbJejzsdYbyz31mQP0w4IPFNYOCPZhcvVig=="
- },
- "node_modules/@opentelemetry/api": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz",
- "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==",
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.3.0"
+ },
"engines": {
- "node": ">=8.0.0"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/@opentelemetry/api-logs": {
- "version": "0.50.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz",
- "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==",
+ "node_modules/@nuxt/devtools/node_modules/unimport/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@nuxt/devtools/node_modules/unplugin": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz",
+ "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==",
"dependencies": {
- "@opentelemetry/api": "^1.0.0"
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
},
"engines": {
- "node": ">=14"
+ "node": ">=14.0.0"
}
},
- "node_modules/@opentelemetry/core": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz",
- "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==",
+ "node_modules/@nuxt/kit": {
+ "version": "3.15.4",
+ "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.15.4.tgz",
+ "integrity": "sha512-dr7I7eZOoRLl4uxdxeL2dQsH0OrbEiVPIyBHnBpA4co24CBnoJoF+JINuP9l3PAM3IhUzc5JIVq3/YY3lEc3Hw==",
"dependencies": {
- "@opentelemetry/semantic-conventions": "1.24.1"
+ "c12": "^2.0.1",
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "destr": "^2.0.3",
+ "globby": "^14.0.2",
+ "ignore": "^7.0.3",
+ "jiti": "^2.4.2",
+ "klona": "^2.0.6",
+ "knitwork": "^1.2.0",
+ "mlly": "^1.7.4",
+ "ohash": "^1.1.4",
+ "pathe": "^2.0.2",
+ "pkg-types": "^1.3.1",
+ "scule": "^1.3.0",
+ "semver": "^7.6.3",
+ "std-env": "^3.8.0",
+ "ufo": "^1.5.4",
+ "unctx": "^2.4.1",
+ "unimport": "^4.0.0",
+ "untyped": "^1.5.2"
},
"engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "node": ">=18.12.0"
}
},
- "node_modules/@opentelemetry/otlp-transformer": {
- "version": "0.50.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz",
- "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==",
+ "node_modules/@nuxt/kit/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="
+ },
+ "node_modules/@nuxt/kit/node_modules/local-pkg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
+ "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
"dependencies": {
- "@opentelemetry/api-logs": "0.50.0",
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/resources": "1.23.0",
- "@opentelemetry/sdk-logs": "0.50.0",
- "@opentelemetry/sdk-metrics": "1.23.0",
- "@opentelemetry/sdk-trace-base": "1.23.0"
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.3.0"
},
"engines": {
"node": ">=14"
},
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.9.0"
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz",
- "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==",
- "dependencies": {
- "@opentelemetry/semantic-conventions": "1.23.0"
- },
+ "node_modules/@nuxt/kit/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@nuxt/kit/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"engines": {
- "node": ">=14"
+ "node": ">=12"
},
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz",
- "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==",
+ "node_modules/@nuxt/kit/node_modules/strip-literal": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz",
+ "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==",
"dependencies": {
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/semantic-conventions": "1.23.0"
- },
- "engines": {
- "node": ">=14"
+ "js-tokens": "^9.0.1"
},
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-trace-base": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz",
- "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==",
+ "node_modules/@nuxt/kit/node_modules/unimport": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-4.0.0.tgz",
+ "integrity": "sha512-FH+yZ36YaVlh0ZjHesP20Q4uL+wL0EqTNxDZcUupsIn6WRYXZAbIYEMDLTaLBpkNVzFpqZXS+am51/HR3ANUNw==",
"dependencies": {
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/resources": "1.23.0",
- "@opentelemetry/semantic-conventions": "1.23.0"
+ "@rollup/pluginutils": "^5.1.4",
+ "acorn": "^8.14.0",
+ "escape-string-regexp": "^5.0.0",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.3",
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.2",
+ "picomatch": "^4.0.2",
+ "pkg-types": "^1.3.1",
+ "scule": "^1.3.0",
+ "strip-literal": "^3.0.0",
+ "unplugin": "^2.1.2"
},
"engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "node": ">=18.12.0"
}
},
- "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz",
- "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==",
+ "node_modules/@nuxt/kit/node_modules/unplugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.1.2.tgz",
+ "integrity": "sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
+ },
"engines": {
- "node": ">=14"
+ "node": ">=18.12.0"
}
},
- "node_modules/@opentelemetry/resources": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz",
- "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==",
+ "node_modules/@nuxt/schema": {
+ "version": "3.15.4",
+ "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.15.4.tgz",
+ "integrity": "sha512-pAYZb/3ocSC/db1EFd5y+otmgHqUkvfxfhd9EknDB5DygnJuOIQNuGJ7LMJM6S2c0DYgBIHOdEelLxKHOjwbgQ==",
"dependencies": {
- "@opentelemetry/core": "1.24.1",
- "@opentelemetry/semantic-conventions": "1.24.1"
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "pathe": "^2.0.2",
+ "std-env": "^3.8.0"
},
"engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "node": "^14.18.0 || >=16.10.0"
}
},
- "node_modules/@opentelemetry/sdk-logs": {
- "version": "0.50.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz",
- "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==",
+ "node_modules/@nuxt/schema/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@nuxt/telemetry": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.6.4.tgz",
+ "integrity": "sha512-2Lgdn07Suraly5dSfVQ4ttBQBMtmjvCTGKGUHpc1UyH87HT9xCm3KLFO0UcVQ8+LNYCgoOaK7lq9qDJOfBfZ5A==",
"dependencies": {
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/resources": "1.23.0"
+ "@nuxt/kit": "^3.15.1",
+ "citty": "^0.1.6",
+ "consola": "^3.3.1",
+ "destr": "^2.0.3",
+ "dotenv": "^16.4.7",
+ "git-url-parse": "^16.0.0",
+ "is-docker": "^3.0.0",
+ "ofetch": "^1.4.1",
+ "package-manager-detector": "^0.2.8",
+ "parse-git-config": "^3.0.0",
+ "pathe": "^2.0.0",
+ "rc9": "^2.1.2",
+ "std-env": "^3.8.0"
},
- "engines": {
- "node": ">=14"
+ "bin": {
+ "nuxt-telemetry": "bin/nuxt-telemetry.mjs"
},
- "peerDependencies": {
- "@opentelemetry/api": ">=1.4.0 <1.9.0",
- "@opentelemetry/api-logs": ">=0.39.1"
+ "engines": {
+ "node": ">=18.20.5"
}
},
- "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz",
- "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==",
+ "node_modules/@nuxt/telemetry/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@nuxt/test-utils": {
+ "version": "3.15.4",
+ "resolved": "https://registry.npmjs.org/@nuxt/test-utils/-/test-utils-3.15.4.tgz",
+ "integrity": "sha512-R5eNXILsB5GCTMgoKdW3rN9rNBQCVBqxw4+tcujNplcivbJp7lQrRMHlbR9ijAJ1jEMkDNXdOQGbM1RnWvDuuQ==",
+ "dev": true,
"dependencies": {
- "@opentelemetry/semantic-conventions": "1.23.0"
+ "@nuxt/kit": "^3.15.1",
+ "@nuxt/schema": "^3.15.1",
+ "c12": "^2.0.1",
+ "consola": "^3.3.3",
+ "defu": "^6.1.4",
+ "destr": "^2.0.3",
+ "estree-walker": "^3.0.3",
+ "fake-indexeddb": "^6.0.0",
+ "get-port-please": "^3.1.2",
+ "h3": "^1.13.1",
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "node-fetch-native": "^1.6.4",
+ "ofetch": "^1.4.1",
+ "pathe": "^2.0.1",
+ "perfect-debounce": "^1.0.0",
+ "radix3": "^1.1.2",
+ "scule": "^1.3.0",
+ "std-env": "^3.8.0",
+ "tinyexec": "^0.3.2",
+ "ufo": "^1.5.4",
+ "unenv": "^1.10.0",
+ "unplugin": "^2.1.2",
+ "vite": "^6.0.7",
+ "vitest-environment-nuxt": "^1.0.1",
+ "vue": "^3.5.13"
},
"engines": {
- "node": ">=14"
+ "node": "^18.20.5 || ^20.9.0 || ^22.0.0 || >=23.0.0"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "@cucumber/cucumber": "^10.3.1 || ^11.0.0",
+ "@jest/globals": "^29.5.0",
+ "@playwright/test": "^1.43.1",
+ "@testing-library/vue": "^7.0.0 || ^8.0.1",
+ "@vue/test-utils": "^2.4.2",
+ "happy-dom": "^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
+ "jsdom": "^22.0.0 || ^23.0.0 || ^24.0.0 || ^25.0.0 || ^26.0.0",
+ "playwright-core": "^1.43.1",
+ "vitest": "^0.34.6 || ^1.0.0 || ^2.0.0 || ^3.0.0-beta.3"
+ },
+ "peerDependenciesMeta": {
+ "@cucumber/cucumber": {
+ "optional": true
+ },
+ "@jest/globals": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "@testing-library/vue": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "@vue/test-utils": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ },
+ "playwright-core": {
+ "optional": true
+ },
+ "vitest": {
+ "optional": true
+ }
}
},
- "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz",
- "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==",
+ "node_modules/@nuxt/test-utils/node_modules/local-pkg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
+ "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
+ "dev": true,
"dependencies": {
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/semantic-conventions": "1.23.0"
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.3.0"
},
"engines": {
"node": ">=14"
},
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz",
- "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==",
- "engines": {
- "node": ">=14"
- }
+ "node_modules/@nuxt/test-utils/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
+ "dev": true
},
- "node_modules/@opentelemetry/sdk-metrics": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz",
- "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==",
+ "node_modules/@nuxt/test-utils/node_modules/unplugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.1.2.tgz",
+ "integrity": "sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==",
+ "dev": true,
"dependencies": {
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/resources": "1.23.0",
- "lodash.merge": "^4.6.2"
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
},
"engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.9.0"
+ "node": ">=18.12.0"
}
},
- "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz",
- "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==",
- "dependencies": {
- "@opentelemetry/semantic-conventions": "1.23.0"
+ "node_modules/@nuxt/vite-builder": {
+ "version": "3.15.4",
+ "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.15.4.tgz",
+ "integrity": "sha512-yBK6tWT973+ExKC3ciTWymZpjJ+enToOtYz574kXCyGO0PbSnuXdoJKTvrwXw1lK97PajCKxExlmwI/3oLOmMQ==",
+ "dependencies": {
+ "@nuxt/kit": "3.15.4",
+ "@rollup/plugin-replace": "^6.0.2",
+ "@vitejs/plugin-vue": "^5.2.1",
+ "@vitejs/plugin-vue-jsx": "^4.1.1",
+ "autoprefixer": "^10.4.20",
+ "consola": "^3.4.0",
+ "cssnano": "^7.0.6",
+ "defu": "^6.1.4",
+ "esbuild": "^0.24.2",
+ "escape-string-regexp": "^5.0.0",
+ "externality": "^1.0.2",
+ "get-port-please": "^3.1.2",
+ "h3": "^1.14.0",
+ "jiti": "^2.4.2",
+ "knitwork": "^1.2.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "ohash": "^1.1.4",
+ "pathe": "^2.0.2",
+ "perfect-debounce": "^1.0.0",
+ "pkg-types": "^1.3.1",
+ "postcss": "^8.5.1",
+ "rollup-plugin-visualizer": "^5.13.1",
+ "std-env": "^3.8.0",
+ "ufo": "^1.5.4",
+ "unenv": "^1.10.0",
+ "unplugin": "^2.1.2",
+ "vite": "^6.0.11",
+ "vite-node": "^3.0.4",
+ "vite-plugin-checker": "^0.8.0",
+ "vue-bundle-renderer": "^2.1.1"
},
"engines": {
- "node": ">=14"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0.0"
},
"peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "vue": "^3.3.4"
}
},
- "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz",
- "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==",
+ "node_modules/@nuxt/vite-builder/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@nuxt/vite-builder/node_modules/unplugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.1.2.tgz",
+ "integrity": "sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==",
"dependencies": {
- "@opentelemetry/core": "1.23.0",
- "@opentelemetry/semantic-conventions": "1.23.0"
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
},
"engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
- }
- },
- "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz",
- "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==",
- "engines": {
- "node": ">=14"
+ "node": ">=18.12.0"
}
},
- "node_modules/@opentelemetry/sdk-trace-base": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.1.tgz",
- "integrity": "sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==",
+ "node_modules/@nuxtjs/tailwindcss": {
+ "version": "6.12.2",
+ "resolved": "https://registry.npmjs.org/@nuxtjs/tailwindcss/-/tailwindcss-6.12.2.tgz",
+ "integrity": "sha512-qPJiFH67CkTj/2kBGBzqXihOD1rQXMsbVS4vdQvfBxOBLPfGhU1yw7AATdhPl2BBjO2krjJLuZj39t7dnDYOwg==",
+ "dev": true,
"dependencies": {
- "@opentelemetry/core": "1.24.1",
- "@opentelemetry/resources": "1.24.1",
- "@opentelemetry/semantic-conventions": "1.24.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.9.0"
+ "@nuxt/kit": "^3.13.2",
+ "autoprefixer": "^10.4.20",
+ "consola": "^3.2.3",
+ "defu": "^6.1.4",
+ "h3": "^1.13.0",
+ "klona": "^2.0.6",
+ "pathe": "^1.1.2",
+ "postcss": "^8.4.47",
+ "postcss-nesting": "^13.0.0",
+ "tailwind-config-viewer": "^2.0.4",
+ "tailwindcss": "~3.4.13",
+ "ufo": "^1.5.4",
+ "unctx": "^2.3.1"
}
},
- "node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz",
- "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==",
+ "node_modules/@one-ini/wasm": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz",
+ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==",
+ "dev": true
+ },
+ "node_modules/@opentelemetry/api": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
+ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
+ "optional": true,
"engines": {
- "node": ">=14"
+ "node": ">=8.0.0"
}
},
"node_modules/@parcel/watcher": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
- "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz",
+ "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==",
+ "hasInstallScript": true,
"dependencies": {
"detect-libc": "^1.0.3",
"is-glob": "^4.0.3",
@@ -2138,24 +2216,25 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "@parcel/watcher-android-arm64": "2.4.1",
- "@parcel/watcher-darwin-arm64": "2.4.1",
- "@parcel/watcher-darwin-x64": "2.4.1",
- "@parcel/watcher-freebsd-x64": "2.4.1",
- "@parcel/watcher-linux-arm-glibc": "2.4.1",
- "@parcel/watcher-linux-arm64-glibc": "2.4.1",
- "@parcel/watcher-linux-arm64-musl": "2.4.1",
- "@parcel/watcher-linux-x64-glibc": "2.4.1",
- "@parcel/watcher-linux-x64-musl": "2.4.1",
- "@parcel/watcher-win32-arm64": "2.4.1",
- "@parcel/watcher-win32-ia32": "2.4.1",
- "@parcel/watcher-win32-x64": "2.4.1"
+ "@parcel/watcher-android-arm64": "2.5.0",
+ "@parcel/watcher-darwin-arm64": "2.5.0",
+ "@parcel/watcher-darwin-x64": "2.5.0",
+ "@parcel/watcher-freebsd-x64": "2.5.0",
+ "@parcel/watcher-linux-arm-glibc": "2.5.0",
+ "@parcel/watcher-linux-arm-musl": "2.5.0",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.0",
+ "@parcel/watcher-linux-arm64-musl": "2.5.0",
+ "@parcel/watcher-linux-x64-glibc": "2.5.0",
+ "@parcel/watcher-linux-x64-musl": "2.5.0",
+ "@parcel/watcher-win32-arm64": "2.5.0",
+ "@parcel/watcher-win32-ia32": "2.5.0",
+ "@parcel/watcher-win32-x64": "2.5.0"
}
},
"node_modules/@parcel/watcher-android-arm64": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
- "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz",
+ "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==",
"cpu": [
"arm64"
],
@@ -2172,9 +2251,9 @@
}
},
"node_modules/@parcel/watcher-darwin-arm64": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
- "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz",
+ "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==",
"cpu": [
"arm64"
],
@@ -2191,9 +2270,9 @@
}
},
"node_modules/@parcel/watcher-darwin-x64": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
- "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz",
+ "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==",
"cpu": [
"x64"
],
@@ -2210,9 +2289,9 @@
}
},
"node_modules/@parcel/watcher-freebsd-x64": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
- "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz",
+ "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==",
"cpu": [
"x64"
],
@@ -2229,9 +2308,28 @@
}
},
"node_modules/@parcel/watcher-linux-arm-glibc": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
- "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz",
+ "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz",
+ "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==",
"cpu": [
"arm"
],
@@ -2248,9 +2346,9 @@
}
},
"node_modules/@parcel/watcher-linux-arm64-glibc": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
- "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz",
+ "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==",
"cpu": [
"arm64"
],
@@ -2267,9 +2365,9 @@
}
},
"node_modules/@parcel/watcher-linux-arm64-musl": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
- "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz",
+ "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==",
"cpu": [
"arm64"
],
@@ -2286,9 +2384,9 @@
}
},
"node_modules/@parcel/watcher-linux-x64-glibc": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
- "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz",
+ "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==",
"cpu": [
"x64"
],
@@ -2305,9 +2403,9 @@
}
},
"node_modules/@parcel/watcher-linux-x64-musl": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
- "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz",
+ "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==",
"cpu": [
"x64"
],
@@ -2324,9 +2422,9 @@
}
},
"node_modules/@parcel/watcher-wasm": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz",
- "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.5.0.tgz",
+ "integrity": "sha512-Z4ouuR8Pfggk1EYYbTaIoxc+Yv4o7cGQnH0Xy8+pQ+HbiW+ZnwhcD2LPf/prfq1nIWpAxjOkQ8uSMFWMtBLiVQ==",
"bundleDependencies": [
"napi-wasm"
],
@@ -2349,9 +2447,9 @@
"license": "MIT"
},
"node_modules/@parcel/watcher-win32-arm64": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
- "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz",
+ "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==",
"cpu": [
"arm64"
],
@@ -2368,9 +2466,9 @@
}
},
"node_modules/@parcel/watcher-win32-ia32": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
- "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz",
+ "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==",
"cpu": [
"ia32"
],
@@ -2387,9 +2485,9 @@
}
},
"node_modules/@parcel/watcher-win32-x64": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
- "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz",
+ "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==",
"cpu": [
"x64"
],
@@ -2417,17 +2515,32 @@
}
},
"node_modules/@pinia/nuxt": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.5.1.tgz",
- "integrity": "sha512-6wT6TqY81n+7/x3Yhf0yfaJVKkZU42AGqOR0T3+UvChcaOJhSma7OWPN64v+ptYlznat+fS1VTwNAcbi2lzHnw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.7.0.tgz",
+ "integrity": "sha512-IAKRl7mQCrFKQtD8Z6EzOz5bQ/px0FdeyaB+70A3igkFzHzKVJVblLCjFwXPBC/IO0EwHuMRk/SMgwkUn82jwg==",
"dependencies": {
- "@nuxt/kit": "^3.5.0",
- "pinia": ">=2.1.7"
+ "@nuxt/kit": "^3.9.0",
+ "pinia": "^2.2.6"
},
"funding": {
"url": "https://github.com/sponsors/posva"
}
},
+ "node_modules/@pinia/testing": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.1.7.tgz",
+ "integrity": "sha512-xcDq6Ry/kNhZ5bsUMl7DeoFXwdume1NYzDggCiDUDKoPQ6Mo0eH9VU7bJvBtlurqe6byAntWoX5IhVFqWzRz/Q==",
+ "dev": true,
+ "dependencies": {
+ "vue-demi": "^0.14.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "pinia": ">=2.2.6"
+ }
+ },
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -2438,17 +2551,171 @@
}
},
"node_modules/@polka/url": {
- "version": "1.0.0-next.25",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz",
- "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ=="
+ "version": "1.0.0-next.28",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
+ "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw=="
},
- "node_modules/@rollup/plugin-alias": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz",
- "integrity": "sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==",
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@protobufjs/aspromise": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/base64": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/codegen": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/eventemitter": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/fetch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+ "optional": true,
+ "dependencies": {
+ "@protobufjs/aspromise": "^1.1.1",
+ "@protobufjs/inquire": "^1.1.0"
+ }
+ },
+ "node_modules/@protobufjs/float": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/inquire": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/path": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/pool": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
+ "optional": true
+ },
+ "node_modules/@protobufjs/utf8": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
+ "optional": true
+ },
+ "node_modules/@redocly/ajv": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz",
+ "integrity": "sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==",
"dependencies": {
- "slash": "^4.0.0"
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js-replace": "^1.0.1"
},
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@redocly/config": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.17.1.tgz",
+ "integrity": "sha512-CEmvaJuG7pm2ylQg53emPmtgm4nW2nxBgwXzbVEHpGas/lGnMyN8Zlkgiz6rPw0unASg6VW3wlz27SOL5XFHYQ=="
+ },
+ "node_modules/@redocly/openapi-core": {
+ "version": "1.25.15",
+ "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.25.15.tgz",
+ "integrity": "sha512-/dpr5zpGj2t1Bf7EIXEboRZm1hsJZBQfv3Q1pkivtdAEg3if2khv+b9gY68aquC6cM/2aQY2kMLy8LlY2tn+Og==",
+ "dependencies": {
+ "@redocly/ajv": "^8.11.2",
+ "@redocly/config": "^0.17.0",
+ "colorette": "^1.2.0",
+ "https-proxy-agent": "^7.0.4",
+ "js-levenshtein": "^1.1.6",
+ "js-yaml": "^4.1.0",
+ "lodash.isequal": "^4.5.0",
+ "minimatch": "^5.0.1",
+ "node-fetch": "^2.6.1",
+ "pluralize": "^8.0.0",
+ "yaml-ast-parser": "0.0.43"
+ },
+ "engines": {
+ "node": ">=14.19.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/@redocly/openapi-core/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@redocly/openapi-core/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@redocly/openapi-core/node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@redocly/openapi-core/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@rollup/plugin-alias": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz",
+ "integrity": "sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==",
"engines": {
"node": ">=14.0.0"
},
@@ -2461,31 +2728,21 @@
}
}
},
- "node_modules/@rollup/plugin-alias/node_modules/slash": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
- "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@rollup/plugin-commonjs": {
- "version": "25.0.7",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
- "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==",
+ "version": "28.0.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz",
+ "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
"estree-walker": "^2.0.2",
- "glob": "^8.0.3",
+ "fdir": "^6.2.0",
"is-reference": "1.2.1",
- "magic-string": "^0.30.3"
+ "magic-string": "^0.30.3",
+ "picomatch": "^4.0.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=16.0.0 || 14 >= 14.17"
},
"peerDependencies": {
"rollup": "^2.68.0||^3.0.0||^4.0.0"
@@ -2501,10 +2758,34 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
- "node_modules/@rollup/plugin-inject": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
- "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==",
+ "node_modules/@rollup/plugin-commonjs/node_modules/fdir": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
+ "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@rollup/plugin-inject": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
+ "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"estree-walker": "^2.0.2",
@@ -2547,14 +2828,13 @@
}
},
"node_modules/@rollup/plugin-node-resolve": {
- "version": "15.2.3",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
- "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz",
+ "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
"deepmerge": "^4.2.2",
- "is-builtin-module": "^3.2.1",
"is-module": "^1.0.0",
"resolve": "^1.22.1"
},
@@ -2571,9 +2851,9 @@
}
},
"node_modules/@rollup/plugin-replace": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz",
- "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz",
+ "integrity": "sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"magic-string": "^0.30.3"
@@ -2612,13 +2892,13 @@
}
},
"node_modules/@rollup/pluginutils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
- "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
+ "picomatch": "^4.0.2"
},
"engines": {
"node": ">=14.0.0"
@@ -2637,10 +2917,21 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
+ "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz",
- "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.0.tgz",
+ "integrity": "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==",
"cpu": [
"arm"
],
@@ -2650,9 +2941,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz",
- "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.0.tgz",
+ "integrity": "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==",
"cpu": [
"arm64"
],
@@ -2662,9 +2953,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
- "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.0.tgz",
+ "integrity": "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==",
"cpu": [
"arm64"
],
@@ -2674,9 +2965,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz",
- "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.0.tgz",
+ "integrity": "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==",
"cpu": [
"x64"
],
@@ -2685,10 +2976,34 @@
"darwin"
]
},
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.0.tgz",
+ "integrity": "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.0.tgz",
+ "integrity": "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz",
- "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.0.tgz",
+ "integrity": "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==",
"cpu": [
"arm"
],
@@ -2698,9 +3013,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz",
- "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.0.tgz",
+ "integrity": "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==",
"cpu": [
"arm"
],
@@ -2710,9 +3025,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz",
- "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.0.tgz",
+ "integrity": "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==",
"cpu": [
"arm64"
],
@@ -2722,9 +3037,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz",
- "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.0.tgz",
+ "integrity": "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==",
"cpu": [
"arm64"
],
@@ -2734,9 +3049,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz",
- "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.0.tgz",
+ "integrity": "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==",
"cpu": [
"ppc64"
],
@@ -2746,9 +3061,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz",
- "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.0.tgz",
+ "integrity": "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==",
"cpu": [
"riscv64"
],
@@ -2758,9 +3073,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz",
- "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.0.tgz",
+ "integrity": "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==",
"cpu": [
"s390x"
],
@@ -2770,9 +3085,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz",
- "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz",
+ "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==",
"cpu": [
"x64"
],
@@ -2782,9 +3097,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz",
- "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz",
+ "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==",
"cpu": [
"x64"
],
@@ -2794,9 +3109,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz",
- "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.0.tgz",
+ "integrity": "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==",
"cpu": [
"arm64"
],
@@ -2806,9 +3121,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz",
- "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.0.tgz",
+ "integrity": "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==",
"cpu": [
"ia32"
],
@@ -2818,9 +3133,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz",
- "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz",
+ "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==",
"cpu": [
"x64"
],
@@ -2829,79 +3144,6 @@
"win32"
]
},
- "node_modules/@shikijs/core": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.5.2.tgz",
- "integrity": "sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA=="
- },
- "node_modules/@sigstore/bundle": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz",
- "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==",
- "dependencies": {
- "@sigstore/protobuf-specs": "^0.3.2"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@sigstore/core": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz",
- "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==",
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@sigstore/protobuf-specs": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz",
- "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==",
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@sigstore/sign": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz",
- "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==",
- "dependencies": {
- "@sigstore/bundle": "^2.3.2",
- "@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.2",
- "make-fetch-happen": "^13.0.1",
- "proc-log": "^4.2.0",
- "promise-retry": "^2.0.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@sigstore/tuf": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz",
- "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==",
- "dependencies": {
- "@sigstore/protobuf-specs": "^0.3.2",
- "tuf-js": "^2.2.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/@sigstore/verify": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz",
- "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==",
- "dependencies": {
- "@sigstore/bundle": "^2.3.2",
- "@sigstore/core": "^1.1.0",
- "@sigstore/protobuf-specs": "^0.3.2"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/@sindresorhus/merge-streams": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
@@ -2913,6 +3155,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "optional": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/@trysound/sax": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
@@ -2921,632 +3172,633 @@
"node": ">=10.13.0"
}
},
- "node_modules/@tufjs/canonical-json": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz",
- "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==",
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node_modules/@types/body-parser": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
}
},
- "node_modules/@tufjs/models": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz",
- "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==",
+ "node_modules/@types/caseless": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz",
+ "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==",
+ "optional": true
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
"dependencies": {
- "@tufjs/canonical-json": "2.0.0",
- "minimatch": "^9.0.4"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
}
},
- "node_modules/@tufjs/models/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.19.6",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
+ "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
"dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
}
},
- "node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ "node_modules/@types/http-errors": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="
},
"node_modules/@types/http-proxy": {
- "version": "1.17.14",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz",
- "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+ "version": "1.17.15",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz",
+ "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
"dependencies": {
"@types/node": "*"
}
},
- "node_modules/@types/lodash": {
- "version": "4.17.7",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
- "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
- "dev": true
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "devOptional": true
},
- "node_modules/@types/node": {
- "version": "20.12.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
- "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
+ "node_modules/@types/jsonwebtoken": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz",
+ "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==",
"dependencies": {
- "undici-types": "~5.26.4"
+ "@types/node": "*"
}
},
- "node_modules/@types/resolve": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
- "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
+ "node_modules/@types/long": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
+ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
+ "optional": true
},
- "node_modules/@types/tinycolor2": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz",
- "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==",
- "dev": true
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
+ },
+ "node_modules/@types/node": {
+ "version": "22.10.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz",
+ "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==",
+ "dependencies": {
+ "undici-types": "~6.20.0"
+ }
+ },
+ "node_modules/@types/parse-path": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz",
+ "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg=="
},
- "node_modules/@types/web-bluetooth": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
- "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="
+ "node_modules/@types/qs": {
+ "version": "6.9.17",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz",
+ "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ=="
},
- "node_modules/@unhead/dom": {
- "version": "1.9.10",
- "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.9.10.tgz",
- "integrity": "sha512-F4sBrmd8kG8MEqcVTGL0Y6tXbJMdWK724pznUzefpZTs1GaVypFikLluaLt4EnICcVhOBSe4TkGrc8N21IJJzQ==",
+ "node_modules/@types/quill": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/@types/quill/-/quill-2.0.14.tgz",
+ "integrity": "sha512-zvoXCRnc2Dl8g+7/9VSAmRWPN6oH+MVhTPizmCR+GJCITplZ5VRVzMs4+a/nOE3yzNwEZqylJJrMB07bwbM1/g==",
+ "dev": true,
"dependencies": {
- "@unhead/schema": "1.9.10",
- "@unhead/shared": "1.9.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "parchment": "^1.1.2",
+ "quill-delta": "^5.1.0"
}
},
- "node_modules/@unhead/schema": {
- "version": "1.9.10",
- "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.10.tgz",
- "integrity": "sha512-3ROh0doKfA7cIcU0zmjYVvNOiJuxSOcjInL+7iOFIxQovEWr1PcDnrnbEWGJsXrLA8eqjrjmhuDqAr3JbMGsLg==",
+ "node_modules/@types/quill/node_modules/parchment": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
+ "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==",
+ "dev": true
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
+ },
+ "node_modules/@types/request": {
+ "version": "2.48.12",
+ "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz",
+ "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==",
+ "optional": true,
"dependencies": {
- "hookable": "^5.5.3",
- "zhead": "^2.2.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "@types/caseless": "*",
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "form-data": "^2.5.0"
}
},
- "node_modules/@unhead/shared": {
- "version": "1.9.10",
- "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.10.tgz",
- "integrity": "sha512-LBXxm/8ahY4FZ0FbWVaM1ANFO5QpPzvaYwjAQhgHANsrqFP2EqoGcOv1CfhdQbxg8vpGXkjI7m0r/8E9d3JoDA==",
+ "node_modules/@types/resolve": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
"dependencies": {
- "@unhead/schema": "1.9.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "@types/mime": "^1",
+ "@types/node": "*"
}
},
- "node_modules/@unhead/ssr": {
- "version": "1.9.10",
- "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.9.10.tgz",
- "integrity": "sha512-4hy3uFrYGJd5h0jmCIC0vFBf5DDhbz+j6tkATTNIaLz5lR4ZdFT+ipwzR20GvnaOiGWiOhZF3yv9FTJQyX4jog==",
+ "node_modules/@types/serve-static": {
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
"dependencies": {
- "@unhead/schema": "1.9.10",
- "@unhead/shared": "1.9.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "@types/http-errors": "*",
+ "@types/node": "*",
+ "@types/send": "*"
}
},
- "node_modules/@unhead/vue": {
- "version": "1.9.10",
- "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.9.10.tgz",
- "integrity": "sha512-Zi65eTU5IIaqqXAVOVJ4fnwJRR751FZIFlzYOjIekf1eNkISy+A4xyz3NIEQWSlXCrOiDNgDhT0YgKUcx5FfHQ==",
+ "node_modules/@types/tough-cookie": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
+ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
+ "optional": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.21.0.tgz",
+ "integrity": "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==",
+ "dev": true,
"dependencies": {
- "@unhead/schema": "1.9.10",
- "@unhead/shared": "1.9.10",
- "hookable": "^5.5.3",
- "unhead": "1.9.10"
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.21.0",
+ "@typescript-eslint/type-utils": "8.21.0",
+ "@typescript-eslint/utils": "8.21.0",
+ "@typescript-eslint/visitor-keys": "8.21.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "vue": ">=2.7 || >=3"
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
}
},
- "node_modules/@unocss/astro": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.60.3.tgz",
- "integrity": "sha512-duFuyVhqYqQ15JZqx41UNgIxndqYRbOwDkJ7Y+R5N+u59a27vImz8B9eOFkHaZCFBWyH5jywkT8LVK1sfddFaw==",
- "peer": true,
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.21.0.tgz",
+ "integrity": "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==",
+ "dev": true,
"dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/reset": "0.60.3",
- "@unocss/vite": "0.60.3"
+ "@typescript-eslint/scope-manager": "8.21.0",
+ "@typescript-eslint/types": "8.21.0",
+ "@typescript-eslint/typescript-estree": "8.21.0",
+ "@typescript-eslint/visitor-keys": "8.21.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
- },
- "peerDependenciesMeta": {
- "vite": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
}
},
- "node_modules/@unocss/cli": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.60.3.tgz",
- "integrity": "sha512-bN829zn6k4hrvDTLnUcI2uAJnSevHwlkOCaYxN/C+v11uGxIewk5Xum6Vm5kZ8JTpCR1jEu/i7wIBNde3XKN5g==",
- "peer": true,
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz",
+ "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==",
+ "dev": true,
"dependencies": {
- "@ampproject/remapping": "^2.3.0",
- "@rollup/pluginutils": "^5.1.0",
- "@unocss/config": "0.60.3",
- "@unocss/core": "0.60.3",
- "@unocss/preset-uno": "0.60.3",
- "cac": "^6.7.14",
- "chokidar": "^3.6.0",
- "colorette": "^2.0.20",
- "consola": "^3.2.3",
- "fast-glob": "^3.3.2",
- "magic-string": "^0.30.10",
- "pathe": "^1.1.2",
- "perfect-debounce": "^1.0.0"
- },
- "bin": {
- "unocss": "bin/unocss.mjs"
+ "@typescript-eslint/types": "8.21.0",
+ "@typescript-eslint/visitor-keys": "8.21.0"
},
"engines": {
- "node": ">=14"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@unocss/config": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.60.3.tgz",
- "integrity": "sha512-3RGD7h3bS4qZA/Khcqhn1EgLgyPc85FSz5rubdywHRdHlpY9sdmuGEJahvqSLMN4MmdYQDmqEIEAJjENrdgZeQ==",
- "peer": true,
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.21.0.tgz",
+ "integrity": "sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==",
+ "dev": true,
"dependencies": {
- "@unocss/core": "0.60.3",
- "unconfig": "^0.3.13"
+ "@typescript-eslint/typescript-estree": "8.21.0",
+ "@typescript-eslint/utils": "8.21.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^2.0.0"
},
"engines": {
- "node": ">=14"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
}
},
- "node_modules/@unocss/core": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.60.3.tgz",
- "integrity": "sha512-4bBX1pavDl2DSCozEII7bxYGT0IkyO7kKlUuCtooTePWyLjf2F7essdzHkJ00EpNR64kkebR9V0lqBMBo07VPw==",
- "peer": true,
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz",
+ "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@unocss/extractor-arbitrary-variants": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.60.3.tgz",
- "integrity": "sha512-PnwNwkeAHmbJbrf5XN0xQG1KT1VQEye8neYn5yz1MHnT8Cj2nqjrqoCRGLCLhpOUg3/MNj+bpiA7hGnFbXWaCQ==",
- "peer": true,
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz",
+ "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==",
+ "dev": true,
"dependencies": {
- "@unocss/core": "0.60.3"
+ "@typescript-eslint/types": "8.21.0",
+ "@typescript-eslint/visitor-keys": "8.21.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.8.0"
}
},
- "node_modules/@unocss/inspector": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.60.3.tgz",
- "integrity": "sha512-2cXAPA1yddB79mmpMXxPpSpizn4TskAsB7aSocbprOTYIU2Ff53gfkkijnLixrBvbG8xw91d9oPuI5Hm9GCyMQ==",
- "peer": true,
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
"dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/rule-utils": "0.60.3",
- "gzip-size": "^6.0.0",
- "sirv": "^2.0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/@unocss/inspector/node_modules/gzip-size": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
- "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
- "peer": true,
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
"dependencies": {
- "duplexer": "^0.1.2"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@unocss/postcss": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.60.3.tgz",
- "integrity": "sha512-7jRsKgMz4wr3Rvnr/RpK/7g6o8bMrqjTb01imgHeaw7cmQsa9sH1HPCp+4lvHh2/QKKLwwRAC+fdnNmsf8JKjA==",
- "peer": true,
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz",
+ "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==",
+ "dev": true,
"dependencies": {
- "@unocss/config": "0.60.3",
- "@unocss/core": "0.60.3",
- "@unocss/rule-utils": "0.60.3",
- "css-tree": "^2.3.1",
- "fast-glob": "^3.3.2",
- "magic-string": "^0.30.10",
- "postcss": "^8.4.38"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.21.0",
+ "@typescript-eslint/types": "8.21.0",
+ "@typescript-eslint/typescript-estree": "8.21.0"
},
"engines": {
- "node": ">=14"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "postcss": "^8.4.21"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
}
},
- "node_modules/@unocss/preset-attributify": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.60.3.tgz",
- "integrity": "sha512-G/Lx9xq/tVKvjp/CcACyLU+p3mcrpgkMvy+Z3NSHfBAZAmbieBMFhwROxt5R8Bny66q3fYDtxxx+likpokpOAQ==",
- "peer": true,
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz",
+ "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==",
+ "dev": true,
"dependencies": {
- "@unocss/core": "0.60.3"
+ "@typescript-eslint/types": "8.21.0",
+ "eslint-visitor-keys": "^4.2.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@unocss/preset-icons": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.60.3.tgz",
- "integrity": "sha512-L3Ecr36xC+Y8v5WMQcNsGoOzu0HpgNLh5RlC2abs8OyBDGn1k3UqdEFdrhRt3bXpln9b8JkstHO7ZwYPgr2/Cg==",
- "peer": true,
- "dependencies": {
- "@iconify/utils": "^2.1.23",
- "@unocss/core": "0.60.3",
- "ofetch": "^1.3.4"
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@unocss/preset-mini": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.60.3.tgz",
- "integrity": "sha512-7en8KBX3lN1Y6eCprbzA1QVfyXZD03B+oAxFXH8QPv5jRIL8Lm8sbXqE+VTsSME/OVp4DnS6LdGtDAm9mvIOSw==",
- "peer": true,
+ "node_modules/@unhead/dom": {
+ "version": "1.11.18",
+ "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.11.18.tgz",
+ "integrity": "sha512-zQuJUw/et9zYEV0SZWTDX23IgurwMaXycAuxt4L6OgNL0T4TWP3a0J/Vm3Q02hmdNo/cPKeVBrwBdnFUXjGU4w==",
"dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/extractor-arbitrary-variants": "0.60.3",
- "@unocss/rule-utils": "0.60.3"
+ "@unhead/schema": "1.11.18",
+ "@unhead/shared": "1.11.18"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/harlan-zw"
}
},
- "node_modules/@unocss/preset-tagify": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.60.3.tgz",
- "integrity": "sha512-pzD6bgtGuIk7M1n/JQiR6EpwnVvafSTHoM70Jhf+T8MSuatDb+KFJCn3VELV2v38aikcUY5cTf95jqHQdzOAhQ==",
- "peer": true,
+ "node_modules/@unhead/schema": {
+ "version": "1.11.18",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.11.18.tgz",
+ "integrity": "sha512-a3TA/OJCRdfbFhcA3Hq24k1ZU1o9szicESrw8DZcGyQFacHnh84mVgnyqSkMnwgCmfN4kvjSiTBlLEHS6+wATw==",
"dependencies": {
- "@unocss/core": "0.60.3"
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@unocss/preset-typography": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.60.3.tgz",
- "integrity": "sha512-cOXOnxkgH0ZiYg/oHBbabzXi1q6oTZWgQ4fqrVxGI2CD4oiWYaPU/wzKsx930D6uBSIlBVDX/cov2j0dPWjgJg==",
- "peer": true,
- "dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/preset-mini": "0.60.3"
+ "url": "https://github.com/sponsors/harlan-zw"
}
},
- "node_modules/@unocss/preset-uno": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.60.3.tgz",
- "integrity": "sha512-PJSR78uaIRTsD9RFSQLwsrGAsjQoW5nWenU4n4GyZeskDsyQVgOcaKtvh+0aYjYdWBa1UvxeUL8Y+m29K4HnAA==",
- "peer": true,
+ "node_modules/@unhead/shared": {
+ "version": "1.11.18",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.11.18.tgz",
+ "integrity": "sha512-OsupRQRxJqqnuKiL1Guqipjbl7MndD5DofvmGa3PFGu2qNPmOmH2mxGFjRBBgq2XxY1KalIHl/2I9HV6gbK8cw==",
"dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/preset-mini": "0.60.3",
- "@unocss/preset-wind": "0.60.3",
- "@unocss/rule-utils": "0.60.3"
+ "@unhead/schema": "1.11.18",
+ "packrup": "^0.1.2"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/harlan-zw"
}
},
- "node_modules/@unocss/preset-web-fonts": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.60.3.tgz",
- "integrity": "sha512-uYHvnqgLDawG3o9oBbasPWbSZ93kzk2JQBcH6xmHh7xqYtRdHqVbUjVU1zIqSjXm19SxFriSrNTl4ct2+/pJIg==",
- "peer": true,
+ "node_modules/@unhead/ssr": {
+ "version": "1.11.18",
+ "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.11.18.tgz",
+ "integrity": "sha512-uaHPz0RRAb18yKeCmHyHk5QKWRk/uHpOrqSbhRXTOhbrd3Ur3gGTVaAoyUoRYKGPU5B5/pyHh3TfLw0LkfrH1A==",
"dependencies": {
- "@unocss/core": "0.60.3",
- "ofetch": "^1.3.4"
+ "@unhead/schema": "1.11.18",
+ "@unhead/shared": "1.11.18"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/harlan-zw"
}
},
- "node_modules/@unocss/preset-wind": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.60.3.tgz",
- "integrity": "sha512-q7yDJ/SyEkPmPBJvIeHd9Bt50LAu65q7WwKxJYfJkjfJvJUMj6DO8FgPnpeiwBeJh9897m2Ap6zoQ3JqBjPLHQ==",
- "peer": true,
+ "node_modules/@unhead/vue": {
+ "version": "1.11.18",
+ "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.11.18.tgz",
+ "integrity": "sha512-Jfi7t/XNBnlcauP9UTH3VHBcS69G70ikFd2e5zdgULLDRWpOlLs1sSTH1V2juNptc93DOk9RQfC5jLWbLcivFw==",
"dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/preset-mini": "0.60.3",
- "@unocss/rule-utils": "0.60.3"
+ "@unhead/schema": "1.11.18",
+ "@unhead/shared": "1.11.18",
+ "hookable": "^5.5.3",
+ "unhead": "1.11.18"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@unocss/reset": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.60.3.tgz",
- "integrity": "sha512-EuC8gkh8L8WvPOcjS/KqprEJXIKcpBPm+ou5G9D6WgDmJ+TgQrri5oR+QUmOmEnueQkVL7bnkFkIKeg71SJLFA==",
- "peer": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/harlan-zw"
+ },
+ "peerDependencies": {
+ "vue": ">=2.7 || >=3"
}
},
- "node_modules/@unocss/rule-utils": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.60.3.tgz",
- "integrity": "sha512-I47/DcKQ2z12W80+Ffth0K6LzNvqcQPYRWk7KwVemVoEiGYamMV8/s+SbB26Fk9KUFjh+Ns/pGAo4iJZo0ueUQ==",
- "peer": true,
+ "node_modules/@vercel/nft": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.27.7.tgz",
+ "integrity": "sha512-FG6H5YkP4bdw9Ll1qhmbxuE8KwW2E/g8fJpM183fWQLeVDGqzeywMIeJ9h2txdWZ03psgWMn6QymTxaDLmdwUg==",
"dependencies": {
- "@unocss/core": "^0.60.3",
- "magic-string": "^0.30.10"
+ "@mapbox/node-pre-gyp": "^1.0.11",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.6.0",
+ "acorn-import-attributes": "^1.9.5",
+ "async-sema": "^3.1.1",
+ "bindings": "^1.4.0",
+ "estree-walker": "2.0.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.8",
+ "node-gyp-build": "^4.2.2",
+ "resolve-from": "^5.0.0"
},
- "engines": {
- "node": ">=14"
+ "bin": {
+ "nft": "out/cli.js"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "engines": {
+ "node": ">=16"
}
},
- "node_modules/@unocss/scope": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.60.3.tgz",
- "integrity": "sha512-uDUcBkFe8nRwNiU4YQyrOCjY7/+qFJI/Qr0eouMPOSEsQ6uIXQEWjykqUBJg2fvm0S2vbfBGO9tO/wCDIk5O3w==",
- "peer": true
+ "node_modules/@vercel/nft/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
- "node_modules/@unocss/transformer-attributify-jsx": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.60.3.tgz",
- "integrity": "sha512-zcPu4tUm/1EnqcFpf6+XzUzfb2BzJBcfNMkFzl/5BSTMECEDgdj4QGBWxnTuSlSZs4digRABGtuAHUO7k1qfgA==",
- "peer": true,
- "dependencies": {
- "@unocss/core": "0.60.3"
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz",
+ "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0",
+ "vue": "^3.2.25"
}
},
- "node_modules/@unocss/transformer-attributify-jsx-babel": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.60.3.tgz",
- "integrity": "sha512-6WcEFPSaxscGR22dRUcNqY0ippC3/Q/LBVFVSCJh++hoIPVCZbxF505cPq/bOdF2bpNzj9yXW0OJt03nB505Hg==",
- "peer": true,
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.1.tgz",
+ "integrity": "sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA==",
"dependencies": {
- "@babel/core": "^7.24.5",
- "@babel/plugin-syntax-jsx": "^7.24.1",
- "@babel/preset-typescript": "^7.24.1",
- "@unocss/core": "0.60.3"
+ "@babel/core": "^7.26.0",
+ "@babel/plugin-transform-typescript": "^7.25.9",
+ "@vue/babel-plugin-jsx": "^1.2.5"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@unocss/transformer-compile-class": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.60.3.tgz",
- "integrity": "sha512-j6wiYgtNqMlrctaZUuN4S+vANW0DMb9wW3KbJ2XvB7lXftfY1bbZ3IKenAyFp0ZLdKs69B6irJbCbIS5OAKKXQ==",
- "peer": true,
- "dependencies": {
- "@unocss/core": "0.60.3"
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@unocss/transformer-directives": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.60.3.tgz",
- "integrity": "sha512-JuFpxyB1yvS2YoiguO5+8Ou6k9yyojZCnnDYXXZqMGLp1KdLiDcAPZQyShoD5HLzPGHtAbQELUz9TcX3VMLEoQ==",
- "peer": true,
- "dependencies": {
- "@unocss/core": "0.60.3",
- "@unocss/rule-utils": "0.60.3",
- "css-tree": "^2.3.1"
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0",
+ "vue": "^3.0.0"
}
},
- "node_modules/@unocss/transformer-variant-group": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.60.3.tgz",
- "integrity": "sha512-jQg0+W49jA7Z+4mRQbZWZKV6aXJXQfAHRC3oo4C9vEyTXL2jb952K12XVcJhXnbLYpnUKwytR+vbshXMIHWZwA==",
- "peer": true,
+ "node_modules/@vitest/expect": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.4.tgz",
+ "integrity": "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==",
+ "dev": true,
"dependencies": {
- "@unocss/core": "0.60.3"
+ "@vitest/spy": "3.0.4",
+ "@vitest/utils": "3.0.4",
+ "chai": "^5.1.2",
+ "tinyrainbow": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@unocss/vite": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.60.3.tgz",
- "integrity": "sha512-I3EOR3g245IGDp3DS17AQAMwNQrh6L6kIlXG3+wt5IZ1zu1ahZmKA8/xxh6oo2TNdu4rI6nQbcLIRn+8eSyfQw==",
- "peer": true,
+ "node_modules/@vitest/mocker": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.4.tgz",
+ "integrity": "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==",
+ "dev": true,
"dependencies": {
- "@ampproject/remapping": "^2.3.0",
- "@rollup/pluginutils": "^5.1.0",
- "@unocss/config": "0.60.3",
- "@unocss/core": "0.60.3",
- "@unocss/inspector": "0.60.3",
- "@unocss/scope": "0.60.3",
- "@unocss/transformer-directives": "0.60.3",
- "chokidar": "^3.6.0",
- "fast-glob": "^3.3.2",
- "magic-string": "^0.30.10"
+ "@vitest/spy": "3.0.4",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.17"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
- }
- },
- "node_modules/@vercel/nft": {
- "version": "0.26.5",
- "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.5.tgz",
- "integrity": "sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==",
- "dependencies": {
- "@mapbox/node-pre-gyp": "^1.0.5",
- "@rollup/pluginutils": "^4.0.0",
- "acorn": "^8.6.0",
- "acorn-import-attributes": "^1.9.2",
- "async-sema": "^3.1.1",
- "bindings": "^1.4.0",
- "estree-walker": "2.0.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.2",
- "node-gyp-build": "^4.2.2",
- "resolve-from": "^5.0.0"
- },
- "bin": {
- "nft": "out/cli.js"
+ "msw": "^2.4.9",
+ "vite": "^5.0.0 || ^6.0.0"
},
- "engines": {
- "node": ">=16"
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
}
},
- "node_modules/@vercel/nft/node_modules/@rollup/pluginutils": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
- "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "node_modules/@vitest/pretty-format": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz",
+ "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==",
+ "dev": true,
"dependencies": {
- "estree-walker": "^2.0.1",
- "picomatch": "^2.2.2"
+ "tinyrainbow": "^2.0.0"
},
- "engines": {
- "node": ">= 8.0.0"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vercel/nft/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@vitest/runner": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.4.tgz",
+ "integrity": "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==",
+ "dev": true,
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "@vitest/utils": "3.0.4",
+ "pathe": "^2.0.2"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vercel/nft/node_modules/estree-walker": {
+ "node_modules/@vitest/runner/node_modules/pathe": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
+ "dev": true
},
- "node_modules/@vercel/nft/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "node_modules/@vitest/snapshot": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.4.tgz",
+ "integrity": "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==",
+ "dev": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
+ "@vitest/pretty-format": "3.0.4",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.2"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vercel/nft/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
+ "node_modules/@vitest/snapshot/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
+ "dev": true
},
- "node_modules/@vitejs/plugin-vue": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
- "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node_modules/@vitest/spy": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.4.tgz",
+ "integrity": "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==",
+ "dev": true,
+ "dependencies": {
+ "tinyspy": "^3.0.2"
},
- "peerDependencies": {
- "vite": "^5.0.0",
- "vue": "^3.2.25"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vitejs/plugin-vue-jsx": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
- "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "node_modules/@vitest/utils": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz",
+ "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==",
+ "dev": true,
"dependencies": {
- "@babel/core": "^7.23.3",
- "@babel/plugin-transform-typescript": "^7.23.3",
- "@vue/babel-plugin-jsx": "^1.1.5"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "@vitest/pretty-format": "3.0.4",
+ "loupe": "^3.1.2",
+ "tinyrainbow": "^2.0.0"
},
- "peerDependencies": {
- "vite": "^4.0.0 || ^5.0.0",
- "vue": "^3.0.0"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
"node_modules/@vue-macros/common": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.10.3.tgz",
- "integrity": "sha512-YSgzcbXrRo8a/TF/YIguqEmTld1KA60VETKJG8iFuaAfj7j+Tbdin3cj7/cYbcCHORSq1v9IThgq7r8keH7LXQ==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.16.1.tgz",
+ "integrity": "sha512-Pn/AWMTjoMYuquepLZP813BIcq8DTZiNCoaceuNlvaYuOTd8DqBZWc5u0uOMQZMInwME1mdSmmBAcTluiV9Jtg==",
"dependencies": {
- "@babel/types": "^7.24.0",
- "@rollup/pluginutils": "^5.1.0",
- "@vue/compiler-sfc": "^3.4.25",
- "ast-kit": "^0.12.1",
- "local-pkg": "^0.5.0",
- "magic-string-ast": "^0.5.0"
+ "@vue/compiler-sfc": "^3.5.13",
+ "ast-kit": "^1.4.0",
+ "local-pkg": "^1.0.0",
+ "magic-string-ast": "^0.7.0",
+ "pathe": "^2.0.2",
+ "picomatch": "^4.0.2"
},
"engines": {
"node": ">=16.14.0"
@@ -3560,25 +3812,55 @@
}
}
},
+ "node_modules/@vue-macros/common/node_modules/local-pkg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
+ "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
+ "dependencies": {
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vue-macros/common/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/@vue-macros/common/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@vue/babel-helper-vue-transform-on": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz",
- "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw=="
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz",
+ "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw=="
},
"node_modules/@vue/babel-plugin-jsx": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz",
- "integrity": "sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==",
- "dependencies": {
- "@babel/helper-module-imports": "~7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-jsx": "^7.23.3",
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9",
- "@vue/babel-helper-vue-transform-on": "1.2.2",
- "@vue/babel-plugin-resolve-type": "1.2.2",
- "camelcase": "^6.3.0",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz",
+ "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.6",
+ "@babel/types": "^7.25.6",
+ "@vue/babel-helper-vue-transform-on": "1.2.5",
+ "@vue/babel-plugin-resolve-type": "1.2.5",
"html-tags": "^3.3.1",
"svg-tags": "^1.0.0"
},
@@ -3591,50 +3873,28 @@
}
}
},
- "node_modules/@vue/babel-plugin-jsx/node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "dependencies": {
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@vue/babel-plugin-resolve-type": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz",
- "integrity": "sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz",
+ "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/helper-module-imports": "~7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/parser": "^7.23.9",
- "@vue/compiler-sfc": "^3.4.15"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/parser": "^7.25.6",
+ "@vue/compiler-sfc": "^3.5.3"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@vue/babel-plugin-resolve-type/node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "dependencies": {
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@vue/compiler-core": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
- "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
+ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"dependencies": {
- "@babel/parser": "^7.24.4",
- "@vue/shared": "3.4.27",
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.13",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
@@ -3646,27 +3906,27 @@
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/@vue/compiler-dom": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
- "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
+ "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
"dependencies": {
- "@vue/compiler-core": "3.4.27",
- "@vue/shared": "3.4.27"
+ "@vue/compiler-core": "3.5.13",
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
- "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
- "dependencies": {
- "@babel/parser": "^7.24.4",
- "@vue/compiler-core": "3.4.27",
- "@vue/compiler-dom": "3.4.27",
- "@vue/compiler-ssr": "3.4.27",
- "@vue/shared": "3.4.27",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
+ "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.13",
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13",
"estree-walker": "^2.0.2",
- "magic-string": "^0.30.10",
- "postcss": "^8.4.38",
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.48",
"source-map-js": "^1.2.0"
}
},
@@ -3676,360 +3936,110 @@
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
- "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
+ "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
"dependencies": {
- "@vue/compiler-dom": "3.4.27",
- "@vue/shared": "3.4.27"
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/devtools-api": {
- "version": "6.6.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
- "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
- },
- "node_modules/@vue/devtools-applet": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-applet/-/devtools-applet-7.2.1.tgz",
- "integrity": "sha512-WGFXgMaph+9aT6ApN0ZQEjjAEeVN/o6DuoXOI5lJzpvXGxRpVWonziNlIcXW9PG/xVuZVWAEST7CQpXs4kzmdg==",
- "dependencies": {
- "@vue/devtools-core": "^7.2.1",
- "@vue/devtools-kit": "^7.2.1",
- "@vue/devtools-shared": "^7.2.1",
- "@vue/devtools-ui": "^7.2.1",
- "lodash-es": "^4.17.21",
- "perfect-debounce": "^1.0.0",
- "shiki": "1.5.2",
- "splitpanes": "^3.1.5",
- "vue-virtual-scroller": "2.0.0-beta.8"
- },
- "peerDependencies": {
- "vue": "^3.0.0"
- }
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
},
"node_modules/@vue/devtools-core": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.2.1.tgz",
- "integrity": "sha512-OyWl455UnJIVgZ6lo5WQ79WbDMoXtSRwyNKp9WzCZ0HhuQywIk4qv59KtLRe75uVmtGBde4hXNaSyRm+x9bY6g==",
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.6.8.tgz",
+ "integrity": "sha512-8X4roysTwzQ94o7IobjVcOd1aZF5iunikrMrHPI2uUdigZCi2kFTQc7ffYiFiTNaLElCpjOhCnM7bo7aK1yU7A==",
"dependencies": {
- "@vue/devtools-kit": "^7.2.1",
- "@vue/devtools-shared": "^7.2.1",
+ "@vue/devtools-kit": "^7.6.8",
+ "@vue/devtools-shared": "^7.6.8",
"mitt": "^3.0.1",
- "nanoid": "^3.3.4",
+ "nanoid": "^5.0.9",
"pathe": "^1.1.2",
- "vite-hot-client": "^0.2.3"
- }
- },
- "node_modules/@vue/devtools-core/node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
+ "vite-hot-client": "^0.2.4"
},
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "peerDependencies": {
+ "vue": "^3.0.0"
}
},
"node_modules/@vue/devtools-kit": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.2.1.tgz",
- "integrity": "sha512-Wak/fin1X0Q8LLIfCAHBrdaaB+R6IdpSXsDByPHbQ3BmkCP0/cIo/oEGp9i0U2+gEqD4L3V9RDjNf1S34DTzQQ==",
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.6.8.tgz",
+ "integrity": "sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==",
"dependencies": {
- "@vue/devtools-shared": "^7.2.1",
+ "@vue/devtools-shared": "^7.6.8",
+ "birpc": "^0.2.19",
"hookable": "^5.5.3",
"mitt": "^3.0.1",
"perfect-debounce": "^1.0.0",
- "speakingurl": "^14.0.1"
- },
- "peerDependencies": {
- "vue": "^3.0.0"
+ "speakingurl": "^14.0.1",
+ "superjson": "^2.2.1"
}
},
"node_modules/@vue/devtools-shared": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.2.1.tgz",
- "integrity": "sha512-PCJF4UknJmOal68+X9XHyVeQ+idv0LFujkTOIW30+GaMJqwFVN9LkQKX4gLqn61KkGMdJTzQ1bt7EJag3TI6AA==",
- "dependencies": {
- "rfdc": "^1.3.1"
- }
- },
- "node_modules/@vue/devtools-ui": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-ui/-/devtools-ui-7.2.1.tgz",
- "integrity": "sha512-3XwW6uTn5noXKN4T4T9rpFlQR0B050ebwUO+Y8HsWHv8XZ451xk+A89y00s1Zx7P2SRkDqeJgbi4kYSHnXkxbg==",
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.1.tgz",
+ "integrity": "sha512-BtgF7kHq4BHG23Lezc/3W2UhK2ga7a8ohAIAGJMBr4BkxUFzhqntQtCiuL1ijo2ztWnmusymkirgqUrXoQKumA==",
"dependencies": {
- "@vue/devtools-shared": "7.2.1",
- "@vueuse/components": "^10.9.0",
- "@vueuse/core": "^10.9.0",
- "@vueuse/integrations": "^10.9.0",
- "colord": "^2.9.3",
- "focus-trap": "^7.5.4"
- },
- "peerDependencies": {
- "@unocss/reset": ">=0.50.0-0",
- "floating-vue": ">=2.0.0-0",
- "unocss": ">=0.50.0-0",
- "vue": ">=3.0.0-0"
+ "rfdc": "^1.4.1"
}
},
"node_modules/@vue/reactivity": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz",
- "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
+ "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
"dependencies": {
- "@vue/shared": "3.4.27"
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/runtime-core": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
- "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
+ "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
"dependencies": {
- "@vue/reactivity": "3.4.27",
- "@vue/shared": "3.4.27"
+ "@vue/reactivity": "3.5.13",
+ "@vue/shared": "3.5.13"
}
},
"node_modules/@vue/runtime-dom": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
- "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
+ "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
"dependencies": {
- "@vue/runtime-core": "3.4.27",
- "@vue/shared": "3.4.27",
+ "@vue/reactivity": "3.5.13",
+ "@vue/runtime-core": "3.5.13",
+ "@vue/shared": "3.5.13",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
- "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
+ "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
"dependencies": {
- "@vue/compiler-ssr": "3.4.27",
- "@vue/shared": "3.4.27"
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13"
},
"peerDependencies": {
- "vue": "3.4.27"
+ "vue": "3.5.13"
}
},
"node_modules/@vue/shared": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
- "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
- },
- "node_modules/@vueuse/components": {
- "version": "10.9.0",
- "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-10.9.0.tgz",
- "integrity": "sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==",
- "dependencies": {
- "@vueuse/core": "10.9.0",
- "@vueuse/shared": "10.9.0",
- "vue-demi": ">=0.14.7"
- }
- },
- "node_modules/@vueuse/components/node_modules/vue-demi": {
- "version": "0.14.7",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
- "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
- }
- },
- "node_modules/@vueuse/core": {
- "version": "10.9.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz",
- "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==",
- "dependencies": {
- "@types/web-bluetooth": "^0.0.20",
- "@vueuse/metadata": "10.9.0",
- "@vueuse/shared": "10.9.0",
- "vue-demi": ">=0.14.7"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@vueuse/core/node_modules/vue-demi": {
- "version": "0.14.7",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
- "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
- }
- },
- "node_modules/@vueuse/integrations": {
- "version": "10.9.0",
- "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.9.0.tgz",
- "integrity": "sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==",
- "dependencies": {
- "@vueuse/core": "10.9.0",
- "@vueuse/shared": "10.9.0",
- "vue-demi": ">=0.14.7"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "async-validator": "*",
- "axios": "*",
- "change-case": "*",
- "drauu": "*",
- "focus-trap": "*",
- "fuse.js": "*",
- "idb-keyval": "*",
- "jwt-decode": "*",
- "nprogress": "*",
- "qrcode": "*",
- "sortablejs": "*",
- "universal-cookie": "*"
- },
- "peerDependenciesMeta": {
- "async-validator": {
- "optional": true
- },
- "axios": {
- "optional": true
- },
- "change-case": {
- "optional": true
- },
- "drauu": {
- "optional": true
- },
- "focus-trap": {
- "optional": true
- },
- "fuse.js": {
- "optional": true
- },
- "idb-keyval": {
- "optional": true
- },
- "jwt-decode": {
- "optional": true
- },
- "nprogress": {
- "optional": true
- },
- "qrcode": {
- "optional": true
- },
- "sortablejs": {
- "optional": true
- },
- "universal-cookie": {
- "optional": true
- }
- }
- },
- "node_modules/@vueuse/integrations/node_modules/vue-demi": {
- "version": "0.14.7",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
- "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
- }
- },
- "node_modules/@vueuse/metadata": {
- "version": "10.9.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz",
- "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==",
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@vueuse/shared": {
- "version": "10.9.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz",
- "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
+ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
+ },
+ "node_modules/@vue/test-utils": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz",
+ "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==",
+ "dev": true,
"dependencies": {
- "vue-demi": ">=0.14.7"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@vueuse/shared/node_modules/vue-demi": {
- "version": "0.14.7",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
- "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
+ "js-beautify": "^1.14.9",
+ "vue-component-type-helpers": "^2.0.0"
}
},
"node_modules/abbrev": {
@@ -4048,10 +4058,23 @@
"node": ">=6.5"
}
},
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"bin": {
"acorn": "bin/acorn"
},
@@ -4067,6 +4090,15 @@
"acorn": "^8"
}
},
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "devOptional": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -4078,18 +4110,28 @@
"node": ">= 6.0.0"
}
},
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "devOptional": true,
"dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
},
- "engines": {
- "node": ">=8"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/ajv/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "devOptional": true
+ },
"node_modules/ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
@@ -4132,16 +4174,25 @@
}
},
"node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
- "color-convert": "^1.9.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -4193,23 +4244,29 @@
"node": ">= 14"
}
},
+ "node_modules/archiver-utils/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/archiver-utils/node_modules/glob": {
- "version": "10.3.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz",
- "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==",
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -4226,9 +4283,9 @@
}
},
"node_modules/archiver-utils/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -4239,10 +4296,19 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/archiver-utils/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/are-we-there-yet": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+ "deprecated": "This package is no longer supported.",
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -4264,62 +4330,102 @@
"node": ">= 6"
}
},
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
- "node_modules/ast-kit": {
- "version": "0.12.1",
- "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.12.1.tgz",
- "integrity": "sha512-O+33g7x6irsESUcd47KdfWUrS2F6aGp9KeVJFGj0YjIznfXpBxVGjA0w+y/1OKqX4mFOfmZ9Xpf1ixPT4n9xxw==",
- "dependencies": {
- "@babel/parser": "^7.23.9",
- "pathe": "^1.1.2"
- },
+ "node_modules/arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "optional": true,
"engines": {
- "node": ">=16.14.0"
+ "node": ">=8"
}
},
- "node_modules/ast-walker-scope": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.5.0.tgz",
- "integrity": "sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==",
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/ast-kit": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-1.4.0.tgz",
+ "integrity": "sha512-BlGeOw73FDsX7z0eZE/wuuafxYoek2yzNJ6l6A1nsb4+z/p87TOPbHaWuN53kFKNuUXiCQa2M+xLF71IqQmRSw==",
"dependencies": {
- "@babel/parser": "^7.22.7",
- "ast-kit": "^0.9.4"
+ "@babel/parser": "^7.26.5",
+ "pathe": "^2.0.2"
},
"engines": {
"node": ">=16.14.0"
}
},
- "node_modules/ast-walker-scope/node_modules/ast-kit": {
- "version": "0.9.5",
- "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.9.5.tgz",
- "integrity": "sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==",
+ "node_modules/ast-kit/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/ast-walker-scope": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.6.2.tgz",
+ "integrity": "sha512-1UWOyC50xI3QZkRuDj6PqDtpm1oHWtYs+NQGwqL/2R11eN3Q81PHAHPM0SWW3BNQm53UDwS//Jv8L4CCVLM1bQ==",
"dependencies": {
- "@babel/parser": "^7.22.7",
- "@rollup/pluginutils": "^5.0.2",
- "pathe": "^1.1.1"
+ "@babel/parser": "^7.25.3",
+ "ast-kit": "^1.0.1"
},
"engines": {
"node": ">=16.14.0"
}
},
"node_modules/async": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg=="
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
+ },
+ "node_modules/async-retry": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
+ "optional": true,
+ "dependencies": {
+ "retry": "0.13.1"
+ }
},
"node_modules/async-sema": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz",
"integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg=="
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "optional": true
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/autoprefixer": {
- "version": "10.4.19",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
- "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
+ "version": "10.4.20",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
+ "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
"funding": [
{
"type": "opencollective",
@@ -4335,11 +4441,11 @@
}
],
"dependencies": {
- "browserslist": "^4.23.0",
- "caniuse-lite": "^1.0.30001599",
+ "browserslist": "^4.23.3",
+ "caniuse-lite": "^1.0.30001646",
"fraction.js": "^4.3.7",
"normalize-range": "^0.1.2",
- "picocolors": "^1.0.0",
+ "picocolors": "^1.0.1",
"postcss-value-parser": "^4.2.0"
},
"bin": {
@@ -4353,9 +4459,9 @@
}
},
"node_modules/b4a": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
- "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
+ "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="
},
"node_modules/balanced-match": {
"version": "1.0.2",
@@ -4363,9 +4469,9 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/bare-events": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
- "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz",
+ "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==",
"optional": true
},
"node_modules/base64-js": {
@@ -4387,6 +4493,14 @@
}
]
},
+ "node_modules/bignumber.js": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
@@ -4407,9 +4521,9 @@
}
},
"node_modules/birpc": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz",
- "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==",
+ "version": "0.2.19",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz",
+ "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
@@ -4420,28 +4534,29 @@
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
"node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
"funding": [
{
"type": "opencollective",
@@ -4457,10 +4572,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001669",
+ "electron-to-chromium": "^1.5.41",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.1"
},
"bin": {
"browserslist": "cli.js"
@@ -4500,22 +4615,16 @@
"node": ">=8.0.0"
}
},
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+ },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/bundle-name": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
@@ -4531,106 +4640,94 @@
}
},
"node_modules/c12": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/c12/-/c12-1.10.0.tgz",
- "integrity": "sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz",
+ "integrity": "sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==",
"dependencies": {
- "chokidar": "^3.6.0",
- "confbox": "^0.1.3",
+ "chokidar": "^4.0.1",
+ "confbox": "^0.1.7",
"defu": "^6.1.4",
"dotenv": "^16.4.5",
- "giget": "^1.2.1",
- "jiti": "^1.21.0",
- "mlly": "^1.6.1",
- "ohash": "^1.1.3",
+ "giget": "^1.2.3",
+ "jiti": "^2.3.0",
+ "mlly": "^1.7.1",
+ "ohash": "^1.1.4",
"pathe": "^1.1.2",
"perfect-debounce": "^1.0.0",
- "pkg-types": "^1.0.3",
- "rc9": "^2.1.1"
- }
- },
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "engines": {
- "node": ">=8"
+ "pkg-types": "^1.2.0",
+ "rc9": "^2.1.2"
+ },
+ "peerDependencies": {
+ "magicast": "^0.3.5"
+ },
+ "peerDependenciesMeta": {
+ "magicast": {
+ "optional": true
+ }
}
},
- "node_modules/cacache": {
- "version": "18.0.3",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz",
- "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==",
+ "node_modules/c12/node_modules/chokidar": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+ "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
"dependencies": {
- "@npmcli/fs": "^3.1.0",
- "fs-minipass": "^3.0.0",
- "glob": "^10.2.2",
- "lru-cache": "^10.0.1",
- "minipass": "^7.0.3",
- "minipass-collect": "^2.0.1",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "p-map": "^4.0.0",
- "ssri": "^10.0.0",
- "tar": "^6.1.11",
- "unique-filename": "^3.0.0"
+ "readdirp": "^4.0.1"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/cacache/node_modules/glob": {
- "version": "10.3.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz",
- "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
+ "node_modules/c12/node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
"engines": {
- "node": ">=16 || 14 >=14.18"
+ "node": ">= 14.16.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
+ "node_modules/cac": {
+ "version": "6.7.14",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
+ "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
"engines": {
- "node": "14 || >=16.14"
+ "node": ">=8"
}
},
- "node_modules/cacache/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "node_modules/cache-content-type": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz",
+ "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==",
+ "dev": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "mime-types": "^2.1.18",
+ "ylru": "^1.2.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">= 6.0.0"
}
},
- "node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "devOptional": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/caniuse-api": {
@@ -4645,9 +4742,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001620",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz",
- "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==",
+ "version": "1.0.30001686",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz",
+ "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==",
"funding": [
{
"type": "opencollective",
@@ -4663,25 +4760,60 @@
}
]
},
+ "node_modules/chai": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz",
+ "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==",
+ "dev": true,
+ "dependencies": {
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.1.1",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/chalk/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=8"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
+ "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w=="
+ },
+ "node_modules/check-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+ "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 16"
}
},
"node_modules/chokidar": {
@@ -4715,20 +4847,6 @@
"node": ">=10"
}
},
- "node_modules/ci-info": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz",
- "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/citty": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
@@ -4737,22 +4855,6 @@
"consola": "^3.2.3"
}
},
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clear": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz",
- "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==",
- "engines": {
- "node": "*"
- }
- },
"node_modules/clipboardy": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz",
@@ -4842,18 +4944,31 @@
"node": ">=0.10.0"
}
},
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
"node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
- "color-name": "1.1.3"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
"node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/color-support": {
"version": "1.1.3",
@@ -4869,10 +4984,21 @@
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
},
"node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "peer": true
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "optional": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/commander": {
"version": "7.2.0",
@@ -4887,6 +5013,11 @@
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
},
+ "node_modules/compatx": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/compatx/-/compatx-0.1.8.tgz",
+ "integrity": "sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw=="
+ },
"node_modules/compress-commons": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz",
@@ -4919,14 +5050,30 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/confbox": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz",
- "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA=="
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="
+ },
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/config-chain/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
},
"node_modules/consola": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
- "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
+ "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
"engines": {
"node": "^14.18.0 || >=16.10.0"
}
@@ -4936,15 +5083,63 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
},
"node_modules/cookie-es": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.1.0.tgz",
- "integrity": "sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw=="
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz",
+ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="
+ },
+ "node_modules/cookies": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz",
+ "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~2.0.0",
+ "keygrip": "~1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/copy-anything": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
+ "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
+ "dependencies": {
+ "is-what": "^4.1.8"
+ },
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
},
"node_modules/core-util-is": {
"version": "1.0.3",
@@ -4974,31 +5169,26 @@
"node": ">= 14"
}
},
- "node_modules/create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
- },
"node_modules/croner": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/croner/-/croner-8.0.2.tgz",
- "integrity": "sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/croner/-/croner-9.0.0.tgz",
+ "integrity": "sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==",
"engines": {
"node": ">=18.0"
}
},
"node_modules/cronstrue": {
- "version": "2.50.0",
- "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.50.0.tgz",
- "integrity": "sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==",
+ "version": "2.53.0",
+ "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.53.0.tgz",
+ "integrity": "sha512-CkAcaI94xL8h6N7cGxgXfR5D7oV2yVtDzB9vMZP8tIgPyEv/oc/7nq9rlk7LMxvc3N+q6LKZmNLCVxJRpyEg8A==",
"bin": {
"cronstrue": "bin/cli.js"
}
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -5023,16 +5213,11 @@
}
},
"node_modules/crossws": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.2.4.tgz",
- "integrity": "sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==",
- "peerDependencies": {
- "uWebSockets.js": "*"
- },
- "peerDependenciesMeta": {
- "uWebSockets.js": {
- "optional": true
- }
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.3.tgz",
+ "integrity": "sha512-/71DJT3xJlqSnBr83uGJesmVHSzZEvgxHt/fIKxBAAngqMHmnBWQNxCphVxxJ2XL3xleu5+hJD6IQ3TglBedcw==",
+ "dependencies": {
+ "uncrypto": "^0.1.3"
}
},
"node_modules/css-declaration-sorter": {
@@ -5061,6 +5246,15 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/css-selector-tokenizer": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz",
+ "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "fastparse": "^1.1.2"
+ }
+ },
"node_modules/css-tree": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
@@ -5096,15 +5290,15 @@
}
},
"node_modules/cssnano": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz",
- "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz",
+ "integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==",
"dependencies": {
- "cssnano-preset-default": "^6.1.2",
- "lilconfig": "^3.1.1"
+ "cssnano-preset-default": "^7.0.6",
+ "lilconfig": "^3.1.2"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"funding": {
"type": "opencollective",
@@ -5115,54 +5309,54 @@
}
},
"node_modules/cssnano-preset-default": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz",
- "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz",
+ "integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==",
"dependencies": {
- "browserslist": "^4.23.0",
+ "browserslist": "^4.23.3",
"css-declaration-sorter": "^7.2.0",
- "cssnano-utils": "^4.0.2",
- "postcss-calc": "^9.0.1",
- "postcss-colormin": "^6.1.0",
- "postcss-convert-values": "^6.1.0",
- "postcss-discard-comments": "^6.0.2",
- "postcss-discard-duplicates": "^6.0.3",
- "postcss-discard-empty": "^6.0.3",
- "postcss-discard-overridden": "^6.0.2",
- "postcss-merge-longhand": "^6.0.5",
- "postcss-merge-rules": "^6.1.1",
- "postcss-minify-font-values": "^6.1.0",
- "postcss-minify-gradients": "^6.0.3",
- "postcss-minify-params": "^6.1.0",
- "postcss-minify-selectors": "^6.0.4",
- "postcss-normalize-charset": "^6.0.2",
- "postcss-normalize-display-values": "^6.0.2",
- "postcss-normalize-positions": "^6.0.2",
- "postcss-normalize-repeat-style": "^6.0.2",
- "postcss-normalize-string": "^6.0.2",
- "postcss-normalize-timing-functions": "^6.0.2",
- "postcss-normalize-unicode": "^6.1.0",
- "postcss-normalize-url": "^6.0.2",
- "postcss-normalize-whitespace": "^6.0.2",
- "postcss-ordered-values": "^6.0.2",
- "postcss-reduce-initial": "^6.1.0",
- "postcss-reduce-transforms": "^6.0.2",
- "postcss-svgo": "^6.0.3",
- "postcss-unique-selectors": "^6.0.4"
- },
- "engines": {
- "node": "^14 || ^16 || >=18.0"
+ "cssnano-utils": "^5.0.0",
+ "postcss-calc": "^10.0.2",
+ "postcss-colormin": "^7.0.2",
+ "postcss-convert-values": "^7.0.4",
+ "postcss-discard-comments": "^7.0.3",
+ "postcss-discard-duplicates": "^7.0.1",
+ "postcss-discard-empty": "^7.0.0",
+ "postcss-discard-overridden": "^7.0.0",
+ "postcss-merge-longhand": "^7.0.4",
+ "postcss-merge-rules": "^7.0.4",
+ "postcss-minify-font-values": "^7.0.0",
+ "postcss-minify-gradients": "^7.0.0",
+ "postcss-minify-params": "^7.0.2",
+ "postcss-minify-selectors": "^7.0.4",
+ "postcss-normalize-charset": "^7.0.0",
+ "postcss-normalize-display-values": "^7.0.0",
+ "postcss-normalize-positions": "^7.0.0",
+ "postcss-normalize-repeat-style": "^7.0.0",
+ "postcss-normalize-string": "^7.0.0",
+ "postcss-normalize-timing-functions": "^7.0.0",
+ "postcss-normalize-unicode": "^7.0.2",
+ "postcss-normalize-url": "^7.0.0",
+ "postcss-normalize-whitespace": "^7.0.0",
+ "postcss-ordered-values": "^7.0.1",
+ "postcss-reduce-initial": "^7.0.2",
+ "postcss-reduce-transforms": "^7.0.0",
+ "postcss-svgo": "^7.0.1",
+ "postcss-unique-selectors": "^7.0.3"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/cssnano-utils": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz",
- "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz",
+ "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==",
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
@@ -5203,16 +5397,49 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
+ "node_modules/culori": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/culori/-/culori-3.3.0.tgz",
+ "integrity": "sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/daisyui": {
+ "version": "4.12.14",
+ "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.12.14.tgz",
+ "integrity": "sha512-hA27cdBasdwd4/iEjn+aidoCrRroDuo3G5W9NDKaVCJI437Mm/3eSL/2u7MkZ0pt8a+TrYF3aT2pFVemTS3how==",
+ "dev": true,
+ "dependencies": {
+ "css-selector-tokenizer": "^0.8",
+ "culori": "^3",
+ "picocolors": "^1",
+ "postcss-js": "^4"
+ },
+ "engines": {
+ "node": ">=16.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/daisyui"
+ }
+ },
"node_modules/db0": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/db0/-/db0-0.1.4.tgz",
- "integrity": "sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/db0/-/db0-0.2.1.tgz",
+ "integrity": "sha512-BWSFmLaCkfyqbSEZBQINMVNjCVfrogi7GQ2RSy1tmtfK9OXlsup6lUMwLsqSD7FbAjD04eWFdXowSHHUp6SE/Q==",
"peerDependencies": {
- "@libsql/client": "^0.5.2",
- "better-sqlite3": "^9.4.3",
- "drizzle-orm": "^0.29.4"
+ "@electric-sql/pglite": "*",
+ "@libsql/client": "*",
+ "better-sqlite3": "*",
+ "drizzle-orm": "*",
+ "mysql2": "*"
},
"peerDependenciesMeta": {
+ "@electric-sql/pglite": {
+ "optional": true
+ },
"@libsql/client": {
"optional": true
},
@@ -5221,15 +5448,18 @@
},
"drizzle-orm": {
"optional": true
+ },
+ "mysql2": {
+ "optional": true
}
}
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -5240,6 +5470,27 @@
}
}
},
+ "node_modules/deep-eql": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==",
+ "dev": true
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "devOptional": true
+ },
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
@@ -5287,6 +5538,15 @@
"resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
"integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
@@ -5331,18 +5591,30 @@
}
},
"node_modules/devalue": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.3.tgz",
- "integrity": "sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg=="
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz",
+ "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw=="
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
},
"node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
"engines": {
"node": ">=0.3.1"
}
},
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -5382,9 +5654,9 @@
}
},
"node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -5395,23 +5667,23 @@
}
},
"node_modules/dot-prop": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz",
- "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz",
+ "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==",
"dependencies": {
- "type-fest": "^3.8.0"
+ "type-fest": "^4.18.2"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "version": "16.4.7",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
+ "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
"engines": {
"node": ">=12"
},
@@ -5424,10 +5696,95 @@
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
},
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ "node_modules/duplexify": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
+ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
+ "optional": true,
+ "dependencies": {
+ "end-of-stream": "^1.4.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1",
+ "stream-shift": "^1.0.2"
+ }
+ },
+ "node_modules/duplexify/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/editorconfig": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz",
+ "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==",
+ "dev": true,
+ "dependencies": {
+ "@one-ini/wasm": "0.1.1",
+ "commander": "^10.0.0",
+ "minimatch": "9.0.1",
+ "semver": "^7.5.3"
+ },
+ "bin": {
+ "editorconfig": "bin/editorconfig"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/editorconfig/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/editorconfig/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/editorconfig/node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
},
"node_modules/ee-first": {
"version": "1.1.1",
@@ -5435,9 +5792,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.775",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.775.tgz",
- "integrity": "sha512-JpOfl1aNAiZ88wFzjPczTLwYIoPIsij8S9/XQH9lqMpiJOf23kxea68B8wje4f68t4rOIq4Bh+vP4I65njiJBw=="
+ "version": "1.5.68",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.68.tgz",
+ "integrity": "sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ=="
},
"node_modules/emoji-regex": {
"version": "8.0.0",
@@ -5445,26 +5802,26 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"engines": {
"node": ">= 0.8"
}
},
- "node_modules/encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"optional": true,
"dependencies": {
- "iconv-lite": "^0.6.2"
+ "once": "^1.4.0"
}
},
"node_modules/enhanced-resolve": {
- "version": "5.16.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz",
- "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==",
+ "version": "5.18.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz",
+ "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -5484,68 +5841,67 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/err-code": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="
- },
"node_modules/error-stack-parser-es": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.4.tgz",
- "integrity": "sha512-l0uy0kAoo6toCgVOYaAayqtPa2a1L15efxUMEnQebKwLQX2X0OpS6wMMQdc4juJXmxd9i40DuaUHq+mjIya9TQ==",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz",
+ "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/errx": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/errx/-/errx-0.1.0.tgz",
+ "integrity": "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q=="
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+ "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ=="
+ },
"node_modules/esbuild": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
- "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
+ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.20.2",
- "@esbuild/android-arm": "0.20.2",
- "@esbuild/android-arm64": "0.20.2",
- "@esbuild/android-x64": "0.20.2",
- "@esbuild/darwin-arm64": "0.20.2",
- "@esbuild/darwin-x64": "0.20.2",
- "@esbuild/freebsd-arm64": "0.20.2",
- "@esbuild/freebsd-x64": "0.20.2",
- "@esbuild/linux-arm": "0.20.2",
- "@esbuild/linux-arm64": "0.20.2",
- "@esbuild/linux-ia32": "0.20.2",
- "@esbuild/linux-loong64": "0.20.2",
- "@esbuild/linux-mips64el": "0.20.2",
- "@esbuild/linux-ppc64": "0.20.2",
- "@esbuild/linux-riscv64": "0.20.2",
- "@esbuild/linux-s390x": "0.20.2",
- "@esbuild/linux-x64": "0.20.2",
- "@esbuild/netbsd-x64": "0.20.2",
- "@esbuild/openbsd-x64": "0.20.2",
- "@esbuild/sunos-x64": "0.20.2",
- "@esbuild/win32-arm64": "0.20.2",
- "@esbuild/win32-ia32": "0.20.2",
- "@esbuild/win32-x64": "0.20.2"
+ "@esbuild/aix-ppc64": "0.24.2",
+ "@esbuild/android-arm": "0.24.2",
+ "@esbuild/android-arm64": "0.24.2",
+ "@esbuild/android-x64": "0.24.2",
+ "@esbuild/darwin-arm64": "0.24.2",
+ "@esbuild/darwin-x64": "0.24.2",
+ "@esbuild/freebsd-arm64": "0.24.2",
+ "@esbuild/freebsd-x64": "0.24.2",
+ "@esbuild/linux-arm": "0.24.2",
+ "@esbuild/linux-arm64": "0.24.2",
+ "@esbuild/linux-ia32": "0.24.2",
+ "@esbuild/linux-loong64": "0.24.2",
+ "@esbuild/linux-mips64el": "0.24.2",
+ "@esbuild/linux-ppc64": "0.24.2",
+ "@esbuild/linux-riscv64": "0.24.2",
+ "@esbuild/linux-s390x": "0.24.2",
+ "@esbuild/linux-x64": "0.24.2",
+ "@esbuild/netbsd-arm64": "0.24.2",
+ "@esbuild/netbsd-x64": "0.24.2",
+ "@esbuild/openbsd-arm64": "0.24.2",
+ "@esbuild/openbsd-x64": "0.24.2",
+ "@esbuild/sunos-x64": "0.24.2",
+ "@esbuild/win32-arm64": "0.24.2",
+ "@esbuild/win32-ia32": "0.24.2",
+ "@esbuild/win32-x64": "0.24.2"
}
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"engines": {
"node": ">=6"
}
@@ -5566,6 +5922,225 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/eslint": {
+ "version": "9.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz",
+ "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==",
+ "devOptional": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.19.0",
+ "@eslint/core": "^0.10.0",
+ "@eslint/eslintrc": "^3.2.0",
+ "@eslint/js": "9.19.0",
+ "@eslint/plugin-kit": "^0.2.5",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.1",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.2.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "9.32.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz",
+ "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "globals": "^13.24.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.15",
+ "semver": "^7.6.3",
+ "vue-eslint-parser": "^9.4.3",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+ "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
+ "devOptional": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "devOptional": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "devOptional": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/eslint/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "devOptional": true,
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "devOptional": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "devOptional": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -5574,6 +6149,15 @@
"@types/estree": "^1.0.0"
}
},
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -5590,6 +6174,11 @@
"node": ">=6"
}
},
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
+ },
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
@@ -5620,10 +6209,19 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/exponential-backoff": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
- "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw=="
+ "node_modules/expect-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz",
+ "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"node_modules/externality": {
"version": "1.0.2",
@@ -5636,26 +6234,100 @@
"ufo": "^1.1.2"
}
},
+ "node_modules/fake-indexeddb": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-6.0.0.tgz",
+ "integrity": "sha512-YEboHE5VfopUclOck7LncgIqskAqnv4q0EWbYCaxKKjAvO93c+TJIaBuGy8CBFdbg9nKdpN3AuPRwVBJ4k7NrQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/farmhash-modern": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/farmhash-modern/-/farmhash-modern-1.1.0.tgz",
+ "integrity": "sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="
+ },
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
},
"node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "micromatch": "^4.0.8"
},
"engines": {
"node": ">=8.6.0"
}
},
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "devOptional": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "devOptional": true
+ },
+ "node_modules/fast-npm-meta": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/fast-npm-meta/-/fast-npm-meta-0.2.2.tgz",
+ "integrity": "sha512-E+fdxeaOQGo/CMWc9f4uHFfgUPJRAu7N3uB8GBvB3SDPAIWJK4GKyYhkAGFq+GYrcbKNfQIz5VVQyJnDuPPCrg==",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz",
+ "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/fastparse": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
+ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ=="
+ },
"node_modules/fastq": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
@@ -5664,15 +6336,38 @@
"reusify": "^1.0.4"
}
},
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "dependencies": {
+ "websocket-driver": ">=0.5.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "devOptional": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -5684,7 +6379,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "peer": true,
+ "devOptional": true,
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -5696,42 +6391,94 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw=="
+ "node_modules/firebase-admin": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-13.0.1.tgz",
+ "integrity": "sha512-sKQ/Yw8o/WdC9qTKvuLMBjTbdcBISIXW4+M9PXk0bNjxEbZf1Er7EVq47eRb5+bnKof10xlns6zAIbj4tmSexg==",
+ "dependencies": {
+ "@fastify/busboy": "^3.0.0",
+ "@firebase/database-compat": "^2.0.0",
+ "@firebase/database-types": "^1.0.6",
+ "@types/node": "^22.8.7",
+ "farmhash-modern": "^1.1.0",
+ "google-auth-library": "^9.14.2",
+ "jsonwebtoken": "^9.0.0",
+ "jwks-rsa": "^3.1.0",
+ "node-forge": "^1.3.1",
+ "uuid": "^11.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@google-cloud/firestore": "^7.10.0",
+ "@google-cloud/storage": "^7.14.0"
+ }
},
- "node_modules/floating-vue": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-5.2.2.tgz",
- "integrity": "sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==",
- "peer": true,
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "devOptional": true,
"dependencies": {
- "@floating-ui/dom": "~1.1.1",
- "vue-resize": "^2.0.0-alpha.1"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
},
- "peerDependencies": {
- "@nuxt/kit": "^3.2.0",
- "vue": "^3.2.0"
- },
- "peerDependenciesMeta": {
- "@nuxt/kit": {
- "optional": true
- }
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA=="
+ },
+ "node_modules/flowbite": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/flowbite/-/flowbite-2.5.2.tgz",
+ "integrity": "sha512-kwFD3n8/YW4EG8GlY3Od9IoKND97kitO+/ejISHSqpn3vw2i5K/+ZI8Jm2V+KC4fGdnfi0XZ+TzYqQb4Q1LshA==",
+ "dependencies": {
+ "@popperjs/core": "^2.9.3",
+ "flowbite-datepicker": "^1.3.0",
+ "mini-svg-data-uri": "^1.4.3"
+ }
+ },
+ "node_modules/flowbite-datepicker": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flowbite-datepicker/-/flowbite-datepicker-1.3.0.tgz",
+ "integrity": "sha512-CLVqzuoE2vkUvWYK/lJ6GzT0be5dlTbH3uuhVwyB67+PjqJWABm2wv68xhBf5BqjpBxvTSQ3mrmLHpPJ2tvrSQ==",
+ "dependencies": {
+ "@rollup/plugin-node-resolve": "^15.2.3",
+ "flowbite": "^2.0.0"
}
},
- "node_modules/focus-trap": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz",
- "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
+ "node_modules/flyonui": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/flyonui/-/flyonui-1.1.0.tgz",
+ "integrity": "sha512-2W7QBBNKITe5YJ6fUaMo0t0G1u8r1YxvaZBrhkdsIxr//JkUFiYSBXy9aqaY/Hva4bodNtz0DkpMjgp+iHgZvg==",
"dependencies": {
- "tabbable": "^6.2.0"
+ "@popperjs/core": "^2.11.2",
+ "css-selector-tokenizer": "^0.8",
+ "culori": "^4.0.1",
+ "picocolors": "^1",
+ "postcss-js": "^4"
+ },
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
+ "node_modules/flyonui/node_modules/culori": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/culori/-/culori-4.0.1.tgz",
+ "integrity": "sha512-LSnjA6HuIUOlkfKVbzi2OlToZE8OjFi667JWN9qNymXVXzGDmvuP60SSgC+e92sd7B7158f7Fy3Mb6rXS5EDPw==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
"node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
@@ -5754,6 +6501,21 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/form-data": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz",
+ "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==",
+ "optional": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
"node_modules/fraction.js": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -5788,16 +6550,32 @@
}
},
"node_modules/fs-minipass": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
- "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"dependencies": {
- "minipass": "^7.0.3"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
+ "node_modules/fs-minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -5824,10 +6602,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "optional": true
+ },
+ "node_modules/fuse.js": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz",
+ "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+ "deprecated": "This package is no longer supported.",
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
@@ -5843,6 +6636,79 @@
"node": ">=10"
}
},
+ "node_modules/gaxios": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
+ "dependencies": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^7.0.1",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gaxios/node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/gaxios/node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/gaxios/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gaxios/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/gcp-metadata": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz",
+ "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==",
+ "dependencies": {
+ "gaxios": "^6.0.0",
+ "json-bigint": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -5875,36 +6741,29 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-tsconfig": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
- "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
- "dev": true,
- "dependencies": {
- "resolve-pkg-maps": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
- }
- },
"node_modules/giget": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz",
- "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.4.tgz",
+ "integrity": "sha512-Wv+daGyispVoA31TrWAVR+aAdP7roubTPEM/8JzRnqXhLbdJH0T9eQyXVFF8fjk3WKTsctII6QcyxILYgNp2DA==",
"dependencies": {
"citty": "^0.1.6",
- "consola": "^3.2.3",
+ "consola": "^3.4.0",
"defu": "^6.1.4",
- "node-fetch-native": "^1.6.3",
- "nypm": "^0.3.8",
- "ohash": "^1.1.3",
- "pathe": "^1.1.2",
- "tar": "^6.2.0"
+ "node-fetch-native": "^1.6.6",
+ "nypm": "^0.5.1",
+ "ohash": "^1.1.4",
+ "pathe": "^2.0.2",
+ "tar": "^6.2.1"
},
"bin": {
"giget": "dist/cli.mjs"
}
},
+ "node_modules/giget/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
"node_modules/git-config-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-2.0.0.tgz",
@@ -5914,35 +6773,37 @@
}
},
"node_modules/git-up": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz",
- "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.0.0.tgz",
+ "integrity": "sha512-uBI8Zdt1OZlrYfGcSVroLJKgyNNXlgusYFzHk614lTasz35yg2PVpL1RMy0LOO2dcvF9msYW3pRfUSmafZNrjg==",
"dependencies": {
"is-ssh": "^1.4.0",
- "parse-url": "^8.1.0"
+ "parse-url": "^9.2.0"
}
},
"node_modules/git-url-parse": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz",
- "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==",
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.0.0.tgz",
+ "integrity": "sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==",
"dependencies": {
- "git-up": "^7.0.0"
+ "git-up": "^8.0.0"
}
},
"node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -5974,17 +6835,21 @@
}
},
"node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "version": "15.14.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
+ "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
+ "dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/globby": {
- "version": "14.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz",
- "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==",
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz",
+ "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==",
"dependencies": {
"@sindresorhus/merge-streams": "^2.1.0",
"fast-glob": "^3.3.2",
@@ -6000,11 +6865,102 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globby/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/google-auth-library": {
+ "version": "9.15.0",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz",
+ "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==",
+ "dependencies": {
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "gaxios": "^6.1.1",
+ "gcp-metadata": "^6.1.0",
+ "gtoken": "^7.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/google-gax": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.4.1.tgz",
+ "integrity": "sha512-Phyp9fMfA00J3sZbJxbbB4jC55b7DBjE3F6poyL3wKMEBVKA79q6BGuHcTiM28yOzVql0NDbRL8MLLh8Iwk9Dg==",
+ "optional": true,
+ "dependencies": {
+ "@grpc/grpc-js": "^1.10.9",
+ "@grpc/proto-loader": "^0.7.13",
+ "@types/long": "^4.0.0",
+ "abort-controller": "^3.0.0",
+ "duplexify": "^4.0.0",
+ "google-auth-library": "^9.3.0",
+ "node-fetch": "^2.7.0",
+ "object-hash": "^3.0.0",
+ "proto3-json-serializer": "^2.0.2",
+ "protobufjs": "^7.3.2",
+ "retry-request": "^7.0.0",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/google-gax/node_modules/@grpc/grpc-js": {
+ "version": "1.12.4",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.4.tgz",
+ "integrity": "sha512-NBhrxEWnFh0FxeA0d//YP95lRFsSx2TNLEUQg4/W+5f/BMxcCjgOOIT24iD+ZB/tZw057j44DaIxja7w4XMrhg==",
+ "optional": true,
+ "dependencies": {
+ "@grpc/proto-loader": "^0.7.13",
+ "@js-sdsl/ordered-map": "^4.4.2"
+ },
+ "engines": {
+ "node": ">=12.10.0"
+ }
+ },
+ "node_modules/google-gax/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "optional": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/gtoken": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
+ "dependencies": {
+ "gaxios": "^6.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/gzip-size": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz",
@@ -6020,75 +6976,116 @@
}
},
"node_modules/h3": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/h3/-/h3-1.11.1.tgz",
- "integrity": "sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==",
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.14.0.tgz",
+ "integrity": "sha512-ao22eiONdgelqcnknw0iD645qW0s9NnrJHr5OBz4WOMdBdycfSas1EQf1wXRsm+PcB2Yoj43pjBPwqIpJQTeWg==",
"dependencies": {
- "cookie-es": "^1.0.0",
- "crossws": "^0.2.2",
+ "cookie-es": "^1.2.2",
+ "crossws": "^0.3.2",
"defu": "^6.1.4",
"destr": "^2.0.3",
- "iron-webcrypto": "^1.0.0",
- "ohash": "^1.1.3",
- "radix3": "^1.1.0",
- "ufo": "^1.4.0",
+ "iron-webcrypto": "^1.2.1",
+ "ohash": "^1.1.4",
+ "radix3": "^1.1.2",
+ "ufo": "^1.5.4",
"uncrypto": "^0.1.3",
- "unenv": "^1.9.0"
+ "unenv": "^1.10.0"
}
},
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "node_modules/happy-dom": {
+ "version": "16.7.2",
+ "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-16.7.2.tgz",
+ "integrity": "sha512-zOzw0xyYlDaF/ylwbAsduYZZVRTd5u7IwlFkGbEathIeJMLp3vrN3cHm3RS7PZpD9gr/IO16bHEswcgNyWTsqw==",
+ "dev": true,
+ "dependencies": {
+ "webidl-conversions": "^7.0.0",
+ "whatwg-mimetype": "^3.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=18.0.0"
}
},
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
- },
- "node_modules/hash-sum": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
- "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
+ "node_modules/happy-dom/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "dev": true,
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
}
},
- "node_modules/hookable": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
- "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
},
- "node_modules/hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
"dependencies": {
- "lru-cache": "^10.0.1"
+ "has-symbols": "^1.0.3"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hosted-git-info/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
"engines": {
- "node": "14 || >=16.14"
+ "node": ">= 0.4"
}
},
+ "node_modules/hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
+ },
+ "node_modules/html-entities": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ],
+ "optional": true
+ },
"node_modules/html-tags": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
@@ -6100,10 +7097,52 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/http-cache-semantics": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ "node_modules/http-assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
+ "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==",
+ "dev": true,
+ "dependencies": {
+ "deep-equal": "~1.0.1",
+ "http-errors": "~1.8.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-assert/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-assert/node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-assert/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
},
"node_modules/http-errors": {
"version": "2.0.0",
@@ -6120,27 +7159,23 @@
"node": ">= 0.8"
}
},
- "node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
- "dependencies": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
+ "node_modules/http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
},
- "node_modules/http-proxy-agent/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "optional": true,
"dependencies": {
- "debug": "^4.3.4"
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 6"
}
},
"node_modules/http-shutdown": {
@@ -6165,9 +7200,9 @@
}
},
"node_modules/httpxy": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.1.5.tgz",
- "integrity": "sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ=="
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.1.7.tgz",
+ "integrity": "sha512-pXNx8gnANKAndgga5ahefxc++tJvNL87CXoRwxn1cJE2ZkWEojF3tNfQIEhZX/vfpt+wzeAzpUI4qkediX1MLQ=="
},
"node_modules/human-signals": {
"version": "4.3.1",
@@ -6177,18 +7212,6 @@
"node": ">=14.18.0"
}
},
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "optional": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -6209,68 +7232,85 @@
]
},
"node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz",
+ "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==",
"engines": {
"node": ">= 4"
}
},
- "node_modules/ignore-walk": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz",
- "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==",
- "dependencies": {
- "minimatch": "^9.0.0"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
+ "node_modules/image-meta": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/image-meta/-/image-meta-0.2.1.tgz",
+ "integrity": "sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw=="
+ },
+ "node_modules/immutable": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz",
+ "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw=="
},
- "node_modules/ignore-walk/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "devOptional": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=6"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/image-meta": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/image-meta/-/image-meta-0.2.0.tgz",
- "integrity": "sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg=="
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/immutable": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
- "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ=="
+ "node_modules/impound": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/impound/-/impound-0.2.0.tgz",
+ "integrity": "sha512-gXgeSyp9Hf7qG2/PLKmywHXyQf2xFrw+mJGpoj9DsAB9L7/MIKn+DeEx98UryWXdmbv8wUUPdcQof6qXnZoCGg==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.2",
+ "mlly": "^1.7.2",
+ "pathe": "^1.1.2",
+ "unenv": "^1.10.0",
+ "unplugin": "^1.14.1"
+ }
},
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "devOptional": true,
"engines": {
"node": ">=0.8.19"
}
},
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "node_modules/index-to-position": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz",
+ "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==",
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -6290,9 +7330,9 @@
}
},
"node_modules/ioredis": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz",
- "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==",
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz",
+ "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==",
"dependencies": {
"@ioredis/commands": "^1.1.1",
"cluster-key-slot": "^1.1.0",
@@ -6312,18 +7352,6 @@
"url": "https://opencollective.com/ioredis"
}
},
- "node_modules/ip-address": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
- "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
- "dependencies": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
- },
- "engines": {
- "node": ">= 12"
- }
- },
"node_modules/iron-webcrypto": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
@@ -6343,26 +7371,15 @@
"node": ">=8"
}
},
- "node_modules/is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
"dependencies": {
- "builtin-modules": "^3.3.0"
+ "hasown": "^2.0.2"
},
"engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dependencies": {
- "hasown": "^2.0.0"
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6398,6 +7415,21 @@
"node": ">=8"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -6441,11 +7473,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-lambda": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
- "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
- },
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
@@ -6470,14 +7497,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-primitive": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz",
- "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
@@ -6505,6 +7524,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-what": {
+ "version": "4.1.16",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
+ "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
"node_modules/is-wsl": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
@@ -6544,15 +7574,12 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/jackspeak": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">=14"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
@@ -6561,82 +7588,305 @@
}
},
"node_modules/jiti": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
- "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
"bin": {
- "jiti": "bin/jiti.js"
+ "jiti": "lib/jiti-cli.mjs"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ "node_modules/jose": {
+ "version": "4.15.9",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
+ "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
},
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "node_modules/js-beautify": {
+ "version": "1.15.1",
+ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz",
+ "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==",
+ "dev": true,
"dependencies": {
- "argparse": "^2.0.1"
+ "config-chain": "^1.1.13",
+ "editorconfig": "^1.0.4",
+ "glob": "^10.3.3",
+ "js-cookie": "^3.0.5",
+ "nopt": "^7.2.0"
},
"bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsbn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
- "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "bin": {
- "jsesc": "bin/jsesc"
+ "css-beautify": "js/bin/css-beautify.js",
+ "html-beautify": "js/bin/html-beautify.js",
+ "js-beautify": "js/bin/js-beautify.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=14"
}
},
- "node_modules/json-parse-even-better-errors": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz",
- "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==",
+ "node_modules/js-beautify/node_modules/abbrev": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
+ "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
+ "dev": true,
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
+ "node_modules/js-beautify/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "node_modules/js-beautify/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
"dependencies": {
- "universalify": "^2.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
- "engines": [
- "node >= 0.2.0"
- ]
+ "node_modules/js-beautify/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/js-beautify/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/js-beautify/node_modules/nopt": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
+ "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "^2.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/js-cookie": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
+ "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/js-levenshtein": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "dependencies": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "devOptional": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "devOptional": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jwks-rsa": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz",
+ "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==",
+ "dependencies": {
+ "@types/express": "^4.17.17",
+ "@types/jsonwebtoken": "^9.0.2",
+ "debug": "^4.3.4",
+ "jose": "^4.14.6",
+ "limiter": "^1.1.5",
+ "lru-memoizer": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/keygrip": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
+ "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
+ "dev": true,
+ "dependencies": {
+ "tsscmp": "1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "devOptional": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
},
"node_modules/kleur": {
"version": "3.0.3",
@@ -6655,9 +7905,175 @@
}
},
"node_modules/knitwork": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.1.0.tgz",
- "integrity": "sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.2.0.tgz",
+ "integrity": "sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg=="
+ },
+ "node_modules/koa": {
+ "version": "2.15.3",
+ "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz",
+ "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "^1.3.5",
+ "cache-content-type": "^1.0.0",
+ "content-disposition": "~0.5.2",
+ "content-type": "^1.0.4",
+ "cookies": "~0.9.0",
+ "debug": "^4.3.2",
+ "delegates": "^1.0.0",
+ "depd": "^2.0.0",
+ "destroy": "^1.0.4",
+ "encodeurl": "^1.0.2",
+ "escape-html": "^1.0.3",
+ "fresh": "~0.5.2",
+ "http-assert": "^1.3.0",
+ "http-errors": "^1.6.3",
+ "is-generator-function": "^1.0.7",
+ "koa-compose": "^4.1.0",
+ "koa-convert": "^2.0.0",
+ "on-finished": "^2.3.0",
+ "only": "~0.0.2",
+ "parseurl": "^1.3.2",
+ "statuses": "^1.5.0",
+ "type-is": "^1.6.16",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
+ }
+ },
+ "node_modules/koa-compose": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz",
+ "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==",
+ "dev": true
+ },
+ "node_modules/koa-convert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz",
+ "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==",
+ "dev": true,
+ "dependencies": {
+ "co": "^4.6.0",
+ "koa-compose": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/koa-send": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz",
+ "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "http-errors": "^1.7.3",
+ "resolve-path": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/koa-send/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa-send/node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa-send/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa-static": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz",
+ "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.1.0",
+ "koa-send": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 7.6.0"
+ }
+ },
+ "node_modules/koa-static/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/koa/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/koa/node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa/node_modules/http-errors/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
},
"node_modules/kolorist": {
"version": "1.8.0",
@@ -6665,9 +8081,9 @@
"integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="
},
"node_modules/launch-editor": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz",
- "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==",
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz",
+ "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==",
"dependencies": {
"picocolors": "^1.0.0",
"shell-quote": "^1.8.1"
@@ -6711,53 +8127,319 @@
"safe-buffer": "~5.1.0"
}
},
- "node_modules/lilconfig": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
- "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",
- "engines": {
- "node": ">=14"
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "devOptional": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antonk52"
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "node_modules/listhen": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz",
- "integrity": "sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==",
+ "node_modules/lightningcss": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.28.2.tgz",
+ "integrity": "sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==",
+ "optional": true,
+ "peer": true,
"dependencies": {
- "@parcel/watcher": "^2.4.1",
- "@parcel/watcher-wasm": "^2.4.1",
- "citty": "^0.1.6",
- "clipboardy": "^4.0.0",
- "consola": "^3.2.3",
- "crossws": "^0.2.0",
- "defu": "^6.1.4",
- "get-port-please": "^3.1.2",
- "h3": "^1.10.2",
- "http-shutdown": "^1.2.2",
- "jiti": "^1.21.0",
- "mlly": "^1.6.1",
- "node-forge": "^1.3.1",
- "pathe": "^1.1.2",
- "std-env": "^3.7.0",
- "ufo": "^1.4.0",
- "untun": "^0.1.3",
- "uqr": "^0.1.2"
+ "detect-libc": "^1.0.3"
},
- "bin": {
- "listen": "bin/listhen.mjs",
- "listhen": "bin/listhen.mjs"
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.28.2",
+ "lightningcss-darwin-x64": "1.28.2",
+ "lightningcss-freebsd-x64": "1.28.2",
+ "lightningcss-linux-arm-gnueabihf": "1.28.2",
+ "lightningcss-linux-arm64-gnu": "1.28.2",
+ "lightningcss-linux-arm64-musl": "1.28.2",
+ "lightningcss-linux-x64-gnu": "1.28.2",
+ "lightningcss-linux-x64-musl": "1.28.2",
+ "lightningcss-win32-arm64-msvc": "1.28.2",
+ "lightningcss-win32-x64-msvc": "1.28.2"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz",
+ "integrity": "sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz",
+ "integrity": "sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz",
+ "integrity": "sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz",
+ "integrity": "sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz",
+ "integrity": "sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz",
+ "integrity": "sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz",
+ "integrity": "sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz",
+ "integrity": "sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz",
+ "integrity": "sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.28.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz",
+ "integrity": "sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss/node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/limiter": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
+ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/listhen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.9.0.tgz",
+ "integrity": "sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==",
+ "dependencies": {
+ "@parcel/watcher": "^2.4.1",
+ "@parcel/watcher-wasm": "^2.4.1",
+ "citty": "^0.1.6",
+ "clipboardy": "^4.0.0",
+ "consola": "^3.2.3",
+ "crossws": ">=0.2.0 <0.4.0",
+ "defu": "^6.1.4",
+ "get-port-please": "^3.1.2",
+ "h3": "^1.12.0",
+ "http-shutdown": "^1.2.2",
+ "jiti": "^2.1.2",
+ "mlly": "^1.7.1",
+ "node-forge": "^1.3.1",
+ "pathe": "^1.1.2",
+ "std-env": "^3.7.0",
+ "ufo": "^1.5.4",
+ "untun": "^0.1.3",
+ "uqr": "^0.1.2"
+ },
+ "bin": {
+ "listen": "bin/listhen.mjs",
+ "listhen": "bin/listhen.mjs"
}
},
"node_modules/local-pkg": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
- "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz",
+ "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==",
"dependencies": {
- "mlly": "^1.4.2",
- "pkg-types": "^1.0.3"
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.2.1"
},
"engines": {
"node": ">=14"
@@ -6770,7 +8452,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "peer": true,
+ "devOptional": true,
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -6791,16 +8473,62 @@
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "optional": true
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
+ },
"node_modules/lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
},
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+ },
"node_modules/lodash.isarguments": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
"integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="
},
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
+ },
"node_modules/lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -6809,13 +8537,31 @@
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "devOptional": true
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
},
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
},
+ "node_modules/long": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==",
+ "optional": true
+ },
+ "node_modules/loupe": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz",
+ "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==",
+ "dev": true
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -6824,32 +8570,57 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lru-memoizer": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz",
+ "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==",
+ "dependencies": {
+ "lodash.clonedeep": "^4.5.0",
+ "lru-cache": "6.0.0"
+ }
+ },
+ "node_modules/lru-memoizer/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lru-memoizer/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
"node_modules/magic-string": {
- "version": "0.30.10",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
- "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15"
+ "@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/magic-string-ast": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.5.0.tgz",
- "integrity": "sha512-mxjxZ5zoR4+ybulZ7Z5qdZUTdAfiKJ1Il80kN/I4jWsHTTqNKZ9KsBa3Jepo+3U09I04qiyC2+7MZD8v4rJOoA==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.7.0.tgz",
+ "integrity": "sha512-686fgAHaJY7wLTFEq7nnKqeQrhqmXB19d1HnqT35Ci7BN6hbAYLZUezTQ062uUHM7ggZEQlqJ94Ftls+KDXU8Q==",
"dependencies": {
- "magic-string": "^0.30.9"
+ "magic-string": "^0.30.17"
},
"engines": {
"node": ">=16.14.0"
}
},
"node_modules/magicast": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz",
- "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
+ "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
"dependencies": {
- "@babel/parser": "^7.24.4",
- "@babel/types": "^7.24.0",
+ "@babel/parser": "^7.25.4",
+ "@babel/types": "^7.25.4",
"source-map-js": "^1.2.0"
}
},
@@ -6875,38 +8646,20 @@
"semver": "bin/semver.js"
}
},
- "node_modules/make-fetch-happen": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz",
- "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==",
- "dependencies": {
- "@npmcli/agent": "^2.0.0",
- "cacache": "^18.0.0",
- "http-cache-semantics": "^4.1.1",
- "is-lambda": "^1.0.1",
- "minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "proc-log": "^4.2.0",
- "promise-retry": "^2.0.1",
- "ssri": "^10.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/material-colors": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
- "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
- },
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
},
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -6920,12 +8673,21 @@
"node": ">= 8"
}
},
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -6933,9 +8695,9 @@
}
},
"node_modules/mime": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz",
- "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
+ "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"funding": [
"https://github.com/sponsors/broofa"
],
@@ -6946,169 +8708,74 @@
"node": ">=16"
}
},
- "node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/minipass": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz",
- "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/minipass-collect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
- "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
- "dependencies": {
- "minipass": "^7.0.3"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/minipass-fetch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
- "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
- "dependencies": {
- "minipass": "^7.0.3",
- "minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- },
- "optionalDependencies": {
- "encoding": "^0.1.13"
- }
- },
- "node_modules/minipass-flush": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
- "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "devOptional": true,
"engines": {
- "node": ">= 8"
+ "node": ">= 0.6"
}
},
- "node_modules/minipass-flush/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "devOptional": true,
"dependencies": {
- "yallist": "^4.0.0"
+ "mime-db": "1.52.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.6"
}
},
- "node_modules/minipass-flush/node_modules/yallist": {
+ "node_modules/mimic-fn": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/minipass-json-stream": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
- "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==",
- "dependencies": {
- "jsonparse": "^1.3.1",
- "minipass": "^3.0.0"
- }
- },
- "node_modules/minipass-json-stream/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/minipass-json-stream/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/minipass-pipeline": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
- "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node_modules/mini-svg-data-uri": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
+ "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
+ "bin": {
+ "mini-svg-data-uri": "cli.js"
}
},
- "node_modules/minipass-pipeline/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
- "yallist": "^4.0.0"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=8"
+ "node": "*"
}
},
- "node_modules/minipass-pipeline/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/minipass-sized": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
- "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/minipass-sized/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"engines": {
"node": ">=8"
}
},
- "node_modules/minipass-sized/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
@@ -7154,23 +8821,20 @@
}
},
"node_modules/mlly": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.0.tgz",
- "integrity": "sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==",
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz",
+ "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==",
"dependencies": {
- "acorn": "^8.11.3",
- "pathe": "^1.1.2",
- "pkg-types": "^1.1.0",
- "ufo": "^1.5.3"
+ "acorn": "^8.14.0",
+ "pathe": "^2.0.1",
+ "pkg-types": "^1.3.0",
+ "ufo": "^1.5.4"
}
},
- "node_modules/mri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
- "engines": {
- "node": ">=4"
- }
+ "node_modules/mlly/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
},
"node_modules/mrmime": {
"version": "2.0.0",
@@ -7181,14 +8845,25 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
},
"node_modules/nanoid": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz",
- "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz",
+ "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==",
"funding": [
{
"type": "github",
@@ -7202,85 +8877,98 @@
"node": "^18 || >=20"
}
},
+ "node_modules/nanotar": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/nanotar/-/nanotar-0.2.0.tgz",
+ "integrity": "sha512-9ca1h0Xjvo9bEkE4UOxgAzLV0jHKe6LMaxo37ND2DAhhAtd0j8pR1Wxz+/goMrZO8AEZTWCmyaOsFI/W5AdpCQ=="
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "devOptional": true
+ },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/nitropack": {
- "version": "2.9.6",
- "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.9.6.tgz",
- "integrity": "sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA==",
- "dependencies": {
- "@cloudflare/kv-asset-handler": "^0.3.1",
- "@netlify/functions": "^2.6.0",
- "@rollup/plugin-alias": "^5.1.0",
- "@rollup/plugin-commonjs": "^25.0.7",
+ "version": "2.10.4",
+ "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.10.4.tgz",
+ "integrity": "sha512-sJiG/MIQlZCVSw2cQrFG1H6mLeSqHlYfFerRjLKz69vUfdu0EL2l0WdOxlQbzJr3mMv/l4cOlCCLzVRzjzzF/g==",
+ "dependencies": {
+ "@cloudflare/kv-asset-handler": "^0.3.4",
+ "@netlify/functions": "^2.8.2",
+ "@rollup/plugin-alias": "^5.1.1",
+ "@rollup/plugin-commonjs": "^28.0.1",
"@rollup/plugin-inject": "^5.0.5",
"@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^15.2.3",
- "@rollup/plugin-replace": "^5.0.5",
+ "@rollup/plugin-node-resolve": "^15.3.0",
+ "@rollup/plugin-replace": "^6.0.1",
"@rollup/plugin-terser": "^0.4.4",
- "@rollup/pluginutils": "^5.1.0",
- "@types/http-proxy": "^1.17.14",
- "@vercel/nft": "^0.26.4",
+ "@rollup/pluginutils": "^5.1.3",
+ "@types/http-proxy": "^1.17.15",
+ "@vercel/nft": "^0.27.5",
"archiver": "^7.0.1",
- "c12": "^1.10.0",
- "chalk": "^5.3.0",
+ "c12": "2.0.1",
"chokidar": "^3.6.0",
"citty": "^0.1.6",
+ "compatx": "^0.1.8",
+ "confbox": "^0.1.8",
"consola": "^3.2.3",
- "cookie-es": "^1.1.0",
- "croner": "^8.0.1",
- "crossws": "^0.2.4",
- "db0": "^0.1.4",
+ "cookie-es": "^1.2.2",
+ "croner": "^9.0.0",
+ "crossws": "^0.3.1",
+ "db0": "^0.2.1",
"defu": "^6.1.4",
"destr": "^2.0.3",
- "dot-prop": "^8.0.2",
- "esbuild": "^0.20.2",
+ "dot-prop": "^9.0.0",
+ "esbuild": "^0.24.0",
"escape-string-regexp": "^5.0.0",
"etag": "^1.8.1",
"fs-extra": "^11.2.0",
- "globby": "^14.0.1",
+ "globby": "^14.0.2",
"gzip-size": "^7.0.0",
- "h3": "^1.11.1",
+ "h3": "^1.13.0",
"hookable": "^5.5.3",
"httpxy": "^0.1.5",
- "ioredis": "^5.3.2",
- "is-primitive": "^3.0.1",
- "jiti": "^1.21.0",
+ "ioredis": "^5.4.1",
+ "jiti": "^2.4.0",
"klona": "^2.0.6",
"knitwork": "^1.1.0",
- "listhen": "^1.7.2",
- "magic-string": "^0.30.8",
- "mime": "^4.0.1",
- "mlly": "^1.6.1",
- "mri": "^1.2.0",
+ "listhen": "^1.9.0",
+ "magic-string": "^0.30.12",
+ "magicast": "^0.3.5",
+ "mime": "^4.0.4",
+ "mlly": "^1.7.2",
"node-fetch-native": "^1.6.4",
- "ofetch": "^1.3.4",
- "ohash": "^1.1.3",
- "openapi-typescript": "^6.7.5",
+ "ofetch": "^1.4.1",
+ "ohash": "^1.1.4",
+ "openapi-typescript": "^7.4.2",
"pathe": "^1.1.2",
"perfect-debounce": "^1.0.0",
- "pkg-types": "^1.0.3",
+ "pkg-types": "^1.2.1",
"pretty-bytes": "^6.1.1",
"radix3": "^1.1.2",
- "rollup": "^4.13.2",
+ "rollup": "^4.24.3",
"rollup-plugin-visualizer": "^5.12.0",
"scule": "^1.3.0",
- "semver": "^7.6.0",
- "serve-placeholder": "^2.0.1",
- "serve-static": "^1.15.0",
+ "semver": "^7.6.3",
+ "serve-placeholder": "^2.0.2",
+ "serve-static": "^1.16.2",
"std-env": "^3.7.0",
- "ufo": "^1.5.3",
+ "ufo": "^1.5.4",
"uncrypto": "^0.1.3",
"unctx": "^2.3.1",
- "unenv": "^1.9.0",
- "unimport": "^3.7.1",
- "unstorage": "^1.10.2",
+ "unenv": "^1.10.0",
+ "unimport": "^3.13.1",
+ "unstorage": "^1.13.1",
+ "untyped": "^1.5.1",
"unwasm": "^0.3.9"
},
"bin": {
@@ -7299,24 +8987,10 @@
}
}
},
- "node_modules/nitropack/node_modules/chalk": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
- "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
"node_modules/node-addon-api": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz",
- "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==",
- "engines": {
- "node": "^16 || ^18 || >= 20"
- }
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="
},
"node_modules/node-fetch": {
"version": "2.7.0",
@@ -7338,9 +9012,9 @@
}
},
"node_modules/node-fetch-native": {
- "version": "1.6.4",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
- "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ=="
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
+ "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ=="
},
"node_modules/node-forge": {
"version": "1.3.1",
@@ -7350,291 +9024,81 @@
"node": ">= 6.13.0"
}
},
- "node_modules/node-gyp": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz",
- "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==",
- "dependencies": {
- "env-paths": "^2.2.0",
- "exponential-backoff": "^3.1.1",
- "glob": "^10.3.10",
- "graceful-fs": "^4.2.6",
- "make-fetch-happen": "^13.0.0",
- "nopt": "^7.0.0",
- "proc-log": "^3.0.0",
- "semver": "^7.3.5",
- "tar": "^6.1.2",
- "which": "^4.0.0"
- },
- "bin": {
- "node-gyp": "bin/node-gyp.js"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/node-gyp-build": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
- "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
+ "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
"node-gyp-build-test": "build-test.js"
}
},
- "node_modules/node-gyp/node_modules/abbrev": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
- "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
},
- "node_modules/node-gyp/node_modules/glob": {
- "version": "10.3.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz",
- "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==",
+ "node_modules/nopt": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
+ "abbrev": "1"
},
"bin": {
- "glob": "dist/esm/bin.mjs"
+ "nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=6"
}
},
- "node_modules/node-gyp/node_modules/isexe": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"engines": {
- "node": ">=16"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/node-gyp/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "node_modules/npm-run-path": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
+ "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "path-key": "^4.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/node-gyp/node_modules/nopt": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
- "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
- "dependencies": {
- "abbrev": "^2.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/proc-log": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
- "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/which": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
- "dependencies": {
- "isexe": "^3.1.1"
- },
- "bin": {
- "node-which": "bin/which.js"
- },
- "engines": {
- "node": "^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
- },
- "node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz",
- "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==",
- "dependencies": {
- "hosted-git-info": "^7.0.0",
- "is-core-module": "^2.8.1",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-bundled": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz",
- "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==",
- "dependencies": {
- "npm-normalize-package-bin": "^3.0.0"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/npm-install-checks": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz",
- "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==",
- "dependencies": {
- "semver": "^7.1.1"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/npm-normalize-package-bin": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
- "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/npm-package-arg": {
- "version": "11.0.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz",
- "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==",
- "dependencies": {
- "hosted-git-info": "^7.0.0",
- "proc-log": "^4.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-name": "^5.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/npm-packlist": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz",
- "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==",
- "dependencies": {
- "ignore-walk": "^6.0.4"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/npm-pick-manifest": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz",
- "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==",
- "dependencies": {
- "npm-install-checks": "^6.0.0",
- "npm-normalize-package-bin": "^3.0.0",
- "npm-package-arg": "^11.0.0",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/npm-registry-fetch": {
- "version": "17.0.1",
- "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.0.1.tgz",
- "integrity": "sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA==",
- "dependencies": {
- "@npmcli/redact": "^2.0.0",
- "make-fetch-happen": "^13.0.0",
- "minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
- "minipass-json-stream": "^1.0.1",
- "minizlib": "^2.1.2",
- "npm-package-arg": "^11.0.0",
- "proc-log": "^4.0.0"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npmlog": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+ "deprecated": "This package is no longer supported.",
"dependencies": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
@@ -7653,95 +9117,86 @@
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
- "node_modules/nuxi": {
- "version": "3.11.1",
- "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.11.1.tgz",
- "integrity": "sha512-AW71TpxRHNg8MplQVju9tEFvXPvX42e0wPYknutSStDuAjV99vWTWYed4jxr/grk2FtKAuv2KvdJxcn2W59qyg==",
- "bin": {
- "nuxi": "bin/nuxi.mjs",
- "nuxi-ng": "bin/nuxi.mjs",
- "nuxt": "bin/nuxi.mjs",
- "nuxt-cli": "bin/nuxi.mjs"
- },
- "engines": {
- "node": "^16.10.0 || >=18.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- }
- },
"node_modules/nuxt": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.11.2.tgz",
- "integrity": "sha512-Be1d4oyFo60pdF+diBolYDcfNemoMYM3R8PDjhnGrs/w3xJoDH1YMUVWHXXY8WhSmYZI7dyBehx/6kTfGFliVA==",
+ "version": "3.15.4",
+ "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.15.4.tgz",
+ "integrity": "sha512-hSbZO4mR0uAMJtZPNTnCfiAtgleoOu28gvJcBNU7KQHgWnNXPjlWgwMczko2O4Tmnv9zIe/CQged+2HsPwl2ZA==",
"dependencies": {
+ "@nuxt/cli": "^3.21.1",
"@nuxt/devalue": "^2.0.2",
- "@nuxt/devtools": "^1.1.5",
- "@nuxt/kit": "3.11.2",
- "@nuxt/schema": "3.11.2",
- "@nuxt/telemetry": "^2.5.3",
- "@nuxt/ui-templates": "^1.3.2",
- "@nuxt/vite-builder": "3.11.2",
- "@unhead/dom": "^1.9.4",
- "@unhead/ssr": "^1.9.4",
- "@unhead/vue": "^1.9.4",
- "@vue/shared": "^3.4.21",
- "acorn": "8.11.3",
- "c12": "^1.10.0",
- "chokidar": "^3.6.0",
- "cookie-es": "^1.1.0",
+ "@nuxt/devtools": "^1.7.0",
+ "@nuxt/kit": "3.15.4",
+ "@nuxt/schema": "3.15.4",
+ "@nuxt/telemetry": "^2.6.4",
+ "@nuxt/vite-builder": "3.15.4",
+ "@unhead/dom": "^1.11.18",
+ "@unhead/shared": "^1.11.18",
+ "@unhead/ssr": "^1.11.18",
+ "@unhead/vue": "^1.11.18",
+ "@vue/shared": "^3.5.13",
+ "acorn": "8.14.0",
+ "c12": "^2.0.1",
+ "chokidar": "^4.0.3",
+ "compatx": "^0.1.8",
+ "consola": "^3.4.0",
+ "cookie-es": "^1.2.2",
"defu": "^6.1.4",
"destr": "^2.0.3",
- "devalue": "^4.3.2",
- "esbuild": "^0.20.2",
+ "devalue": "^5.1.1",
+ "errx": "^0.1.0",
+ "esbuild": "^0.24.2",
"escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3",
- "fs-extra": "^11.2.0",
- "globby": "^14.0.1",
- "h3": "^1.11.1",
+ "globby": "^14.0.2",
+ "h3": "^1.14.0",
"hookable": "^5.5.3",
- "jiti": "^1.21.0",
+ "ignore": "^7.0.3",
+ "impound": "^0.2.0",
+ "jiti": "^2.4.2",
"klona": "^2.0.6",
- "knitwork": "^1.1.0",
- "magic-string": "^0.30.9",
- "mlly": "^1.6.1",
- "nitropack": "^2.9.6",
- "nuxi": "^3.11.1",
- "nypm": "^0.3.8",
- "ofetch": "^1.3.4",
- "ohash": "^1.1.3",
- "pathe": "^1.1.2",
+ "knitwork": "^1.2.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "nanotar": "^0.2.0",
+ "nitropack": "^2.10.4",
+ "nypm": "^0.5.2",
+ "ofetch": "^1.4.1",
+ "ohash": "^1.1.4",
+ "pathe": "^2.0.2",
"perfect-debounce": "^1.0.0",
- "pkg-types": "^1.0.3",
+ "pkg-types": "^1.3.1",
"radix3": "^1.1.2",
"scule": "^1.3.0",
- "std-env": "^3.7.0",
- "strip-literal": "^2.1.0",
- "ufo": "^1.5.3",
+ "semver": "^7.6.3",
+ "std-env": "^3.8.0",
+ "strip-literal": "^3.0.0",
+ "tinyglobby": "0.2.10",
+ "ufo": "^1.5.4",
"ultrahtml": "^1.5.3",
"uncrypto": "^0.1.3",
- "unctx": "^2.3.1",
- "unenv": "^1.9.0",
- "unimport": "^3.7.1",
- "unplugin": "^1.10.1",
- "unplugin-vue-router": "^0.7.0",
- "unstorage": "^1.10.2",
- "untyped": "^1.4.2",
- "vue": "^3.4.21",
- "vue-bundle-renderer": "^2.0.0",
+ "unctx": "^2.4.1",
+ "unenv": "^1.10.0",
+ "unhead": "^1.11.18",
+ "unimport": "^4.0.0",
+ "unplugin": "^2.1.2",
+ "unplugin-vue-router": "^0.11.2",
+ "unstorage": "^1.14.4",
+ "untyped": "^1.5.2",
+ "vue": "^3.5.13",
+ "vue-bundle-renderer": "^2.1.1",
"vue-devtools-stub": "^0.1.0",
- "vue-router": "^4.3.0"
+ "vue-router": "^4.5.0"
},
"bin": {
"nuxi": "bin/nuxt.mjs",
"nuxt": "bin/nuxt.mjs"
},
"engines": {
- "node": "^14.18.0 || >=16.10.0"
+ "node": "^18.20.5 || ^20.9.0 || >=22.0.0"
},
"peerDependencies": {
"@parcel/watcher": "^2.1.0",
- "@types/node": "^14.18.0 || >=16.10.0"
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"peerDependenciesMeta": {
"@parcel/watcher": {
@@ -7752,76 +9207,139 @@
}
}
},
- "node_modules/nypm": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz",
- "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==",
+ "node_modules/nuxt/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.2.3",
- "execa": "^8.0.1",
- "pathe": "^1.1.2",
- "ufo": "^1.4.0"
- },
- "bin": {
- "nypm": "dist/cli.mjs"
+ "readdirp": "^4.0.1"
},
"engines": {
- "node": "^14.16.0 || >=16.10.0"
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/nypm/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "node_modules/nuxt/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="
+ },
+ "node_modules/nuxt/node_modules/local-pkg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
+ "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
"dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.3.0"
},
"engines": {
- "node": ">=16.17"
+ "node": ">=14"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/nypm/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "node_modules/nuxt/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/nuxt/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"engines": {
- "node": ">=16"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/nypm/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "node_modules/nuxt/node_modules/readdirp": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
+ "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
"engines": {
- "node": ">=16.17.0"
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/nypm/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "engines": {
- "node": ">=14"
+ "node_modules/nuxt/node_modules/strip-literal": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz",
+ "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==",
+ "dependencies": {
+ "js-tokens": "^9.0.1"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/nuxt/node_modules/unimport": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-4.0.0.tgz",
+ "integrity": "sha512-FH+yZ36YaVlh0ZjHesP20Q4uL+wL0EqTNxDZcUupsIn6WRYXZAbIYEMDLTaLBpkNVzFpqZXS+am51/HR3ANUNw==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.4",
+ "acorn": "^8.14.0",
+ "escape-string-regexp": "^5.0.0",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.3",
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.2",
+ "picomatch": "^4.0.2",
+ "pkg-types": "^1.3.1",
+ "scule": "^1.3.0",
+ "strip-literal": "^3.0.0",
+ "unplugin": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/nuxt/node_modules/unplugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.1.2.tgz",
+ "integrity": "sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/nypm": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.5.2.tgz",
+ "integrity": "sha512-AHzvnyUJYSrrphPhRWWZNcoZfArGNp3Vrc4pm/ZurO74tYNTgAPrEyBQEKy+qioqmWlPXwvMZCG2wOaHlPG0Pw==",
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "pathe": "^2.0.2",
+ "pkg-types": "^1.3.1",
+ "tinyexec": "^0.3.2",
+ "ufo": "^1.5.4"
+ },
+ "bin": {
+ "nypm": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.10.0"
}
},
+ "node_modules/nypm/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -7830,20 +9348,37 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/obscenity": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/obscenity/-/obscenity-0.4.1.tgz",
+ "integrity": "sha512-hzkBkFsoiOVB1tYCnC3dqh/Y/S+iis0hC6mqexVfg+LRCcVS7GLTcbW14+BuKMNDqPwNJsM7+tCVki7gWq73lw==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/ofetch": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz",
- "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
+ "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
"dependencies": {
"destr": "^2.0.3",
- "node-fetch-native": "^1.6.3",
- "ufo": "^1.5.3"
+ "node-fetch-native": "^1.6.4",
+ "ufo": "^1.5.4"
}
},
"node_modules/ohash": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz",
- "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw=="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
+ "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g=="
},
"node_modules/on-finished": {
"version": "2.4.1",
@@ -7878,6 +9413,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/only": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz",
+ "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==",
+ "dev": true
+ },
"node_modules/open": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
@@ -7920,37 +9461,46 @@
}
},
"node_modules/openapi-typescript": {
- "version": "6.7.6",
- "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.6.tgz",
- "integrity": "sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==",
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-7.4.4.tgz",
+ "integrity": "sha512-7j3nktnRzlQdlHnHsrcr6Gqz8f80/RhfA2I8s1clPI+jkY0hLNmnYVKBfuUEli5EEgK1B6M+ibdS5REasPlsUw==",
"dependencies": {
+ "@redocly/openapi-core": "^1.25.9",
"ansi-colors": "^4.1.3",
- "fast-glob": "^3.3.2",
- "js-yaml": "^4.1.0",
+ "change-case": "^5.4.4",
+ "parse-json": "^8.1.0",
"supports-color": "^9.4.0",
- "undici": "^5.28.4",
"yargs-parser": "^21.1.1"
},
"bin": {
"openapi-typescript": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "typescript": "^5.x"
}
},
- "node_modules/openapi-typescript/node_modules/supports-color": {
- "version": "9.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz",
- "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==",
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "devOptional": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "node": ">= 0.8.0"
}
},
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "peer": true,
+ "devOptional": true,
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -7965,7 +9515,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "peer": true,
+ "devOptional": true,
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -7976,48 +9526,39 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
+ },
+ "node_modules/package-manager-detector": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.8.tgz",
+ "integrity": "sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA=="
+ },
+ "node_modules/packrup": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/packrup/-/packrup-0.1.2.tgz",
+ "integrity": "sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA==",
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/harlan-zw"
}
},
- "node_modules/pacote": {
- "version": "18.0.6",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz",
- "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==",
- "dependencies": {
- "@npmcli/git": "^5.0.0",
- "@npmcli/installed-package-contents": "^2.0.1",
- "@npmcli/package-json": "^5.1.0",
- "@npmcli/promise-spawn": "^7.0.0",
- "@npmcli/run-script": "^8.0.0",
- "cacache": "^18.0.0",
- "fs-minipass": "^3.0.0",
- "minipass": "^7.0.2",
- "npm-package-arg": "^11.0.0",
- "npm-packlist": "^8.0.0",
- "npm-pick-manifest": "^9.0.0",
- "npm-registry-fetch": "^17.0.0",
- "proc-log": "^4.0.0",
- "promise-retry": "^2.0.1",
- "sigstore": "^2.2.0",
- "ssri": "^10.0.0",
- "tar": "^6.1.11"
- },
- "bin": {
- "pacote": "bin/index.js"
+ "node_modules/parchment": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz",
+ "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A=="
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "devOptional": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">=6"
}
},
"node_modules/parse-git-config": {
@@ -8037,6 +9578,22 @@
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
},
+ "node_modules/parse-json": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz",
+ "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "index-to-position": "^0.1.2",
+ "type-fest": "^4.7.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parse-path": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz",
@@ -8046,11 +9603,15 @@
}
},
"node_modules/parse-url": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz",
- "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==",
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz",
+ "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==",
"dependencies": {
+ "@types/parse-path": "^7.0.0",
"parse-path": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.13.0"
}
},
"node_modules/parseurl": {
@@ -8065,7 +9626,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "peer": true,
+ "devOptional": true,
"engines": {
"node": ">=8"
}
@@ -8107,12 +9668,15 @@
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
- "engines": {
- "node": "14 || >=16.14"
- }
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "dev": true
},
"node_modules/path-type": {
"version": "5.0.0",
@@ -8130,15 +9694,24 @@
"resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
"integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="
},
+ "node_modules/pathval": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
+ "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.16"
+ }
+ },
"node_modules/perfect-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
"integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="
},
"node_modules/picocolors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
- "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -8151,13 +9724,22 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/pinia": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
- "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.8.tgz",
+ "integrity": "sha512-NRTYy2g+kju5tBRe0oNlriZIbMNvma8ZJrpHsp3qudyiMEA8jMmPPKQ2QMHg0Oc4BkUyQYWagACabrwriCK9HQ==",
"dependencies": {
- "@vue/devtools-api": "^6.5.0",
- "vue-demi": ">=0.14.5"
+ "@vue/devtools-api": "^6.6.3",
+ "vue-demi": "^0.14.10"
},
"funding": {
"url": "https://github.com/sponsors/posva"
@@ -8165,7 +9747,7 @@
"peerDependencies": {
"@vue/composition-api": "^1.4.0",
"typescript": ">=4.4.4",
- "vue": "^2.6.14 || ^3.3.0"
+ "vue": "^2.6.14 || ^3.5.11"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
@@ -8176,45 +9758,86 @@
}
}
},
- "node_modules/pinia/node_modules/vue-demi": {
- "version": "0.14.7",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
- "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
+ "node": ">= 6"
}
},
"node_modules/pkg-types": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz",
- "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
+ "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
"dependencies": {
- "confbox": "^0.1.7",
- "mlly": "^1.7.0",
- "pathe": "^1.1.2"
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1"
+ }
+ },
+ "node_modules/pkg-types/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/portfinder": {
+ "version": "1.0.32",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
+ "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
+ "dev": true,
+ "dependencies": {
+ "async": "^2.6.4",
+ "debug": "^3.2.7",
+ "mkdirp": "^0.5.6"
+ },
+ "engines": {
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/portfinder/node_modules/async": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "node_modules/portfinder/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/portfinder/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
}
},
"node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
+ "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
"funding": [
{
"type": "opencollective",
@@ -8230,369 +9853,564 @@
}
],
"dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/postcss-calc": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
- "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.0.tgz",
+ "integrity": "sha512-uQ/LDGsf3mgsSUEXmAt3VsCSHR3aKqtEIkmB+4PhzYwRYOW5MZs/GhCCFpsOtJJkP6EC6uGipbrnaTjqaJZcJw==",
"dependencies": {
- "postcss-selector-parser": "^6.0.11",
+ "postcss-selector-parser": "^7.0.0",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12 || ^20.9 || >=22.0"
},
"peerDependencies": {
- "postcss": "^8.2.2"
+ "postcss": "^8.4.38"
+ }
+ },
+ "node_modules/postcss-calc/node_modules/postcss-selector-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
+ "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/postcss-colormin": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz",
- "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz",
+ "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==",
"dependencies": {
- "browserslist": "^4.23.0",
+ "browserslist": "^4.23.3",
"caniuse-api": "^3.0.0",
"colord": "^2.9.3",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-convert-values": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
- "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz",
+ "integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==",
"dependencies": {
- "browserslist": "^4.23.0",
+ "browserslist": "^4.23.3",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-discard-comments": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz",
- "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz",
+ "integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.1.2"
+ },
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-discard-duplicates": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz",
- "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz",
+ "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==",
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-discard-empty": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz",
- "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz",
+ "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==",
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-discard-overridden": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz",
- "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz",
+ "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==",
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-merge-longhand": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz",
- "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==",
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
"dependencies": {
- "postcss-value-parser": "^4.2.0",
- "stylehacks": "^6.1.1"
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "postcss": "^8.4.31"
+ "postcss": "^8.0.0"
}
},
- "node_modules/postcss-merge-rules": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz",
- "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==",
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
"dependencies": {
- "browserslist": "^4.23.0",
- "caniuse-api": "^3.0.0",
- "cssnano-utils": "^4.0.2",
- "postcss-selector-parser": "^6.0.16"
+ "camelcase-css": "^2.0.1"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
},
"peerDependencies": {
- "postcss": "^8.4.31"
+ "postcss": "^8.4.21"
}
},
- "node_modules/postcss-minify-font-values": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz",
- "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==",
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"dependencies": {
- "postcss-value-parser": "^4.2.0"
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": ">= 14"
},
"peerDependencies": {
- "postcss": "^8.4.31"
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
}
},
- "node_modules/postcss-minify-gradients": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz",
- "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==",
+ "node_modules/postcss-merge-longhand": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz",
+ "integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==",
"dependencies": {
- "colord": "^2.9.3",
- "cssnano-utils": "^4.0.2",
- "postcss-value-parser": "^4.2.0"
+ "postcss-value-parser": "^4.2.0",
+ "stylehacks": "^7.0.4"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-minify-params": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz",
- "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==",
+ "node_modules/postcss-merge-rules": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz",
+ "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==",
"dependencies": {
- "browserslist": "^4.23.0",
- "cssnano-utils": "^4.0.2",
- "postcss-value-parser": "^4.2.0"
+ "browserslist": "^4.23.3",
+ "caniuse-api": "^3.0.0",
+ "cssnano-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.1.2"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-minify-selectors": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz",
- "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==",
+ "node_modules/postcss-minify-font-values": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz",
+ "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==",
"dependencies": {
- "postcss-selector-parser": "^6.0.16"
- },
- "engines": {
- "node": "^14 || ^16 || >=18.0"
+ "postcss-value-parser": "^4.2.0"
},
- "peerDependencies": {
- "postcss": "^8.4.31"
- }
- },
- "node_modules/postcss-normalize-charset": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz",
- "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==",
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-normalize-display-values": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz",
- "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==",
+ "node_modules/postcss-minify-gradients": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz",
+ "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==",
"dependencies": {
+ "colord": "^2.9.3",
+ "cssnano-utils": "^5.0.0",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-normalize-positions": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz",
- "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==",
+ "node_modules/postcss-minify-params": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz",
+ "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==",
"dependencies": {
+ "browserslist": "^4.23.3",
+ "cssnano-utils": "^5.0.0",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-normalize-repeat-style": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz",
- "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==",
+ "node_modules/postcss-minify-selectors": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz",
+ "integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==",
"dependencies": {
- "postcss-value-parser": "^4.2.0"
+ "cssesc": "^3.0.0",
+ "postcss-selector-parser": "^6.1.2"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/postcss-normalize-string": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz",
- "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==",
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"dependencies": {
- "postcss-value-parser": "^4.2.0"
+ "postcss-selector-parser": "^6.1.1"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": ">=12.0"
},
"peerDependencies": {
- "postcss": "^8.4.31"
+ "postcss": "^8.2.14"
}
},
- "node_modules/postcss-normalize-timing-functions": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz",
- "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==",
+ "node_modules/postcss-nesting": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz",
+ "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"dependencies": {
- "postcss-value-parser": "^4.2.0"
+ "@csstools/selector-resolve-nested": "^3.0.0",
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.4.31"
+ "postcss": "^8.4"
}
},
- "node_modules/postcss-normalize-unicode": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz",
- "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==",
- "dependencies": {
- "browserslist": "^4.23.0",
- "postcss-value-parser": "^4.2.0"
+ "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz",
+ "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/postcss-nesting/node_modules/postcss-selector-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz",
+ "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz",
+ "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==",
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz",
+ "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz",
+ "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz",
+ "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz",
+ "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz",
+ "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz",
+ "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==",
+ "dependencies": {
+ "browserslist": "^4.23.3",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-normalize-url": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz",
- "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz",
+ "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==",
"dependencies": {
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-normalize-whitespace": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz",
- "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz",
+ "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==",
"dependencies": {
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-ordered-values": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz",
- "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz",
+ "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==",
"dependencies": {
- "cssnano-utils": "^4.0.2",
+ "cssnano-utils": "^5.0.0",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-reduce-initial": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz",
- "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz",
+ "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==",
"dependencies": {
- "browserslist": "^4.23.0",
+ "browserslist": "^4.23.3",
"caniuse-api": "^3.0.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-reduce-transforms": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz",
- "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz",
+ "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==",
"dependencies": {
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.16",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
- "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -8602,29 +10420,29 @@
}
},
"node_modules/postcss-svgo": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz",
- "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz",
+ "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==",
"dependencies": {
"postcss-value-parser": "^4.2.0",
- "svgo": "^3.2.0"
+ "svgo": "^3.3.2"
},
"engines": {
- "node": "^14 || ^16 || >= 18"
+ "node": "^18.12.0 || ^20.9.0 || >= 18"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-unique-selectors": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz",
- "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz",
+ "integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==",
"dependencies": {
- "postcss-selector-parser": "^6.0.16"
+ "postcss-selector-parser": "^6.1.2"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
@@ -8636,15 +10454,16 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/postcss/node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -8652,6 +10471,109 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-plugin-tailwindcss": {
+ "version": "0.6.9",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz",
+ "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.21.3"
+ },
+ "peerDependencies": {
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "@zackad/prettier-plugin-twig-melody": "*",
+ "prettier": "^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-import-sort": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-multiline-arrays": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-sort-imports": "*",
+ "prettier-plugin-style-order": "*",
+ "prettier-plugin-svelte": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@zackad/prettier-plugin-twig-melody": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-import-sort": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-multiline-arrays": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-style-order": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ }
+ }
+ },
"node_modules/pretty-bytes": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz",
@@ -8663,14 +10585,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/proc-log": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
- "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==",
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
"node_modules/process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -8684,23 +10598,6 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
- "node_modules/promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
- },
- "node_modules/promise-retry": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
- "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
- "dependencies": {
- "err-code": "^2.0.2",
- "retry": "^0.12.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -8713,11 +10610,62 @@
"node": ">= 6"
}
},
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "dev": true
+ },
+ "node_modules/proto3-json-serializer": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz",
+ "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==",
+ "optional": true,
+ "dependencies": {
+ "protobufjs": "^7.2.5"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/protobufjs": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
+ "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "@protobufjs/aspromise": "^1.1.2",
+ "@protobufjs/base64": "^1.1.2",
+ "@protobufjs/codegen": "^2.0.4",
+ "@protobufjs/eventemitter": "^1.1.0",
+ "@protobufjs/fetch": "^1.1.0",
+ "@protobufjs/float": "^1.0.2",
+ "@protobufjs/inquire": "^1.1.0",
+ "@protobufjs/path": "^1.1.2",
+ "@protobufjs/pool": "^1.1.0",
+ "@protobufjs/utf8": "^1.1.0",
+ "@types/node": ">=13.7.0",
+ "long": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/protocols": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
"integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q=="
},
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -8742,6 +10690,33 @@
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
},
+ "node_modules/quill": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz",
+ "integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==",
+ "dependencies": {
+ "eventemitter3": "^5.0.1",
+ "lodash-es": "^4.17.21",
+ "parchment": "^3.0.0",
+ "quill-delta": "^5.1.0"
+ },
+ "engines": {
+ "npm": ">=8.2.3"
+ }
+ },
+ "node_modules/quill-delta": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz",
+ "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==",
+ "dependencies": {
+ "fast-diff": "^1.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.isequal": "^4.5.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
"node_modules/radix3": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
@@ -8772,6 +10747,15 @@
"destr": "^2.0.3"
}
},
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
"node_modules/readable-stream": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
@@ -8795,6 +10779,25 @@
"minimatch": "^5.1.0"
}
},
+ "node_modules/readdir-glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -8825,10 +10828,35 @@
"node": ">=4"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "node_modules/replace-in-file": {
+ "version": "6.3.5",
+ "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz",
+ "integrity": "sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "glob": "^7.2.0",
+ "yargs": "^17.2.1"
+ },
+ "bin": {
+ "replace-in-file": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"engines": {
"node": ">=0.10.0"
}
@@ -8857,23 +10885,87 @@
"node": ">=8"
}
},
- "node_modules/resolve-pkg-maps": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
- "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "node_modules/resolve-path": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz",
+ "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==",
"dev": true,
- "funding": {
- "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ "dependencies": {
+ "http-errors": "~1.6.2",
+ "path-is-absolute": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/resolve-path/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/resolve-path/node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/resolve-path/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ },
+ "node_modules/resolve-path/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ },
+ "node_modules/resolve-path/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
}
},
"node_modules/retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "optional": true,
"engines": {
"node": ">= 4"
}
},
+ "node_modules/retry-request": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz",
+ "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==",
+ "optional": true,
+ "dependencies": {
+ "@types/request": "^2.48.8",
+ "extend": "^3.0.2",
+ "teeny-request": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -8884,14 +10976,15 @@
}
},
"node_modules/rfdc": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
- "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dependencies": {
"glob": "^7.1.3"
},
@@ -8902,51 +10995,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/rimraf/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/rimraf/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rimraf/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/rollup": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz",
- "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==",
+ "version": "4.28.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz",
+ "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==",
"dependencies": {
- "@types/estree": "1.0.5"
+ "@types/estree": "1.0.6"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -8956,32 +11010,34 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.17.2",
- "@rollup/rollup-android-arm64": "4.17.2",
- "@rollup/rollup-darwin-arm64": "4.17.2",
- "@rollup/rollup-darwin-x64": "4.17.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.17.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.17.2",
- "@rollup/rollup-linux-arm64-gnu": "4.17.2",
- "@rollup/rollup-linux-arm64-musl": "4.17.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.17.2",
- "@rollup/rollup-linux-s390x-gnu": "4.17.2",
- "@rollup/rollup-linux-x64-gnu": "4.17.2",
- "@rollup/rollup-linux-x64-musl": "4.17.2",
- "@rollup/rollup-win32-arm64-msvc": "4.17.2",
- "@rollup/rollup-win32-ia32-msvc": "4.17.2",
- "@rollup/rollup-win32-x64-msvc": "4.17.2",
+ "@rollup/rollup-android-arm-eabi": "4.28.0",
+ "@rollup/rollup-android-arm64": "4.28.0",
+ "@rollup/rollup-darwin-arm64": "4.28.0",
+ "@rollup/rollup-darwin-x64": "4.28.0",
+ "@rollup/rollup-freebsd-arm64": "4.28.0",
+ "@rollup/rollup-freebsd-x64": "4.28.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.28.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.28.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.28.0",
+ "@rollup/rollup-linux-arm64-musl": "4.28.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.28.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.28.0",
+ "@rollup/rollup-linux-x64-gnu": "4.28.0",
+ "@rollup/rollup-linux-x64-musl": "4.28.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.28.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.28.0",
+ "@rollup/rollup-win32-x64-msvc": "4.28.0",
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-visualizer": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz",
- "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==",
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz",
+ "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==",
"dependencies": {
"open": "^8.4.0",
- "picomatch": "^2.3.1",
+ "picomatch": "^4.0.2",
"source-map": "^0.7.4",
"yargs": "^17.5.1"
},
@@ -8989,17 +11045,32 @@
"rollup-plugin-visualizer": "dist/bin/cli.js"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
},
"peerDependencies": {
+ "rolldown": "1.x",
"rollup": "2.x || 3.x || 4.x"
},
"peerDependenciesMeta": {
+ "rolldown": {
+ "optional": true
+ },
"rollup": {
"optional": true
}
}
},
+ "node_modules/rollup-plugin-visualizer/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/run-applescript": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
@@ -9052,19 +11123,13 @@
}
]
},
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "optional": true
- },
"node_modules/sass": {
- "version": "1.77.2",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz",
- "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==",
+ "version": "1.82.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.82.0.tgz",
+ "integrity": "sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==",
"dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
@@ -9072,6 +11137,35 @@
},
"engines": {
"node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+ "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
"node_modules/scule": {
@@ -9080,9 +11174,9 @@
"integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="
},
"node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -9091,9 +11185,9 @@
}
},
"node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -9126,6 +11220,14 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/send/node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -9137,11 +11239,6 @@
"node": ">=4"
}
},
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
"node_modules/serialize-javascript": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
@@ -9151,22 +11248,22 @@
}
},
"node_modules/serve-placeholder": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.1.tgz",
- "integrity": "sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.2.tgz",
+ "integrity": "sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==",
"dependencies": {
- "defu": "^6.0.0"
+ "defu": "^6.1.4"
}
},
"node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
"dependencies": {
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.18.0"
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -9202,50 +11299,35 @@
}
},
"node_modules/shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz",
+ "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/shiki": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.5.2.tgz",
- "integrity": "sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==",
- "dependencies": {
- "@shikijs/core": "1.5.2"
- }
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true
},
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
- "node_modules/sigstore": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz",
- "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==",
- "dependencies": {
- "@sigstore/bundle": "^2.3.2",
- "@sigstore/core": "^1.0.0",
- "@sigstore/protobuf-specs": "^0.3.2",
- "@sigstore/sign": "^2.3.2",
- "@sigstore/tuf": "^2.3.4",
- "@sigstore/verify": "^1.2.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
"node_modules/simple-git": {
- "version": "3.24.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.24.0.tgz",
- "integrity": "sha512-QqAKee9Twv+3k8IFOFfPB2hnk6as6Y6ACUpwCtQvRYBAes23Wv3SZlHVobAzqcE8gfsisCvPw3HGW3HYM+VYYw==",
+ "version": "3.27.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz",
+ "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==",
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.4"
+ "debug": "^4.3.5"
},
"funding": {
"type": "github",
@@ -9253,16 +11335,16 @@
}
},
"node_modules/sirv": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
- "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz",
+ "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==",
"dependencies": {
"@polka/url": "^1.0.0-next.24",
"mrmime": "^2.0.0",
"totalist": "^3.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": ">=18"
}
},
"node_modules/sisteransi": {
@@ -9281,57 +11363,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
"node_modules/smob": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
"integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig=="
},
- "node_modules/socks": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
- "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
- "dependencies": {
- "ip-address": "^9.0.5",
- "smart-buffer": "^4.2.0"
- },
- "engines": {
- "node": ">= 10.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socks-proxy-agent": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz",
- "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==",
- "dependencies": {
- "agent-base": "^7.1.1",
- "debug": "^4.3.4",
- "socks": "^2.7.1"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/socks-proxy-agent/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
- "dependencies": {
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
"node_modules/source-map": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
@@ -9341,9 +11377,9 @@
}
},
"node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"engines": {
"node": ">=0.10.0"
}
@@ -9365,34 +11401,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
- "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz",
- "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg=="
- },
"node_modules/speakingurl": {
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
@@ -9401,29 +11409,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/splitpanes": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-3.1.5.tgz",
- "integrity": "sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw==",
- "funding": {
- "url": "https://github.com/sponsors/antoniandre"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
- },
- "node_modules/ssri": {
- "version": "10.0.6",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
- "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==",
- "dependencies": {
- "minipass": "^7.0.3"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
+ "dev": true
},
"node_modules/standard-as-callback": {
"version": "2.1.0",
@@ -9439,17 +11429,33 @@
}
},
"node_modules/std-env": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
- "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg=="
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
+ "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w=="
+ },
+ "node_modules/stream-events": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
+ "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
+ "optional": true,
+ "dependencies": {
+ "stubs": "^3.0.0"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
+ "optional": true
},
"node_modules/streamx": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz",
- "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==",
+ "version": "2.21.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz",
+ "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==",
"dependencies": {
- "fast-fifo": "^1.1.0",
- "queue-tick": "^1.0.1"
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
},
"optionalDependencies": {
"bare-events": "^2.2.0"
@@ -9524,54 +11530,173 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/strip-literal": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz",
- "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz",
+ "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==",
"dependencies": {
- "js-tokens": "^9.0.0"
+ "js-tokens": "^9.0.1"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/strip-literal/node_modules/js-tokens": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
- "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ=="
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="
+ },
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+ "optional": true
+ },
+ "node_modules/stubs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
+ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==",
+ "optional": true
},
"node_modules/stylehacks": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz",
- "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz",
+ "integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==",
"dependencies": {
- "browserslist": "^4.23.0",
- "postcss-selector-parser": "^6.0.16"
+ "browserslist": "^4.23.3",
+ "postcss-selector-parser": "^6.1.2"
},
"engines": {
- "node": "^14 || ^16 || >=18.0"
+ "node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
"dependencies": {
- "has-flag": "^3.0.0"
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
},
"engines": {
- "node": ">=4"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "engines": {
- "node": ">= 0.4"
+ "node_modules/sucrase/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/superjson": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz",
+ "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==",
+ "dependencies": {
+ "copy-anything": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz",
+ "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -9617,10 +11742,156 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/tabbable": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
+ "node_modules/tailwind-config-viewer": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/tailwind-config-viewer/-/tailwind-config-viewer-2.0.4.tgz",
+ "integrity": "sha512-icvcmdMmt9dphvas8wL40qttrHwAnW3QEN4ExJ2zICjwRsPj7gowd1cOceaWG3IfTuM/cTNGQcx+bsjMtmV+cw==",
+ "dev": true,
+ "dependencies": {
+ "@koa/router": "^12.0.1",
+ "commander": "^6.0.0",
+ "fs-extra": "^9.0.1",
+ "koa": "^2.14.2",
+ "koa-static": "^5.0.0",
+ "open": "^7.0.4",
+ "portfinder": "^1.0.26",
+ "replace-in-file": "^6.1.0"
+ },
+ "bin": {
+ "tailwind-config-viewer": "cli/index.js",
+ "tailwindcss-config-viewer": "cli/index.js"
+ },
+ "engines": {
+ "node": ">=13"
+ },
+ "peerDependencies": {
+ "tailwindcss": "1 || 2 || 2.0.1-compat || 3"
+ }
+ },
+ "node_modules/tailwind-config-viewer/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/tailwind-config-viewer/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tailwind-config-viewer/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tailwind-config-viewer/node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tailwind-config-viewer/node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.16",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz",
+ "integrity": "sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==",
+ "dev": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.6.0",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.2",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.21.6",
+ "lilconfig": "^3.1.3",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.47",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.2",
+ "postcss-nested": "^6.2.0",
+ "postcss-selector-parser": "^6.1.2",
+ "resolve": "^1.22.8",
+ "sucrase": "^3.35.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/jiti": {
+ "version": "1.21.6",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
},
"node_modules/tapable": {
"version": "2.2.1",
@@ -9656,41 +11927,40 @@
"streamx": "^2.15.0"
}
},
- "node_modules/tar/node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "node_modules/teeny-request": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz",
+ "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==",
+ "optional": true,
"dependencies": {
- "yallist": "^4.0.0"
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "node-fetch": "^2.6.9",
+ "stream-events": "^1.0.5",
+ "uuid": "^9.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=14"
}
},
- "node_modules/tar/node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "engines": {
- "node": ">=8"
+ "node_modules/teeny-request/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "optional": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
}
},
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/terser": {
"version": "5.31.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz",
@@ -9713,519 +11983,215 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
- "node_modules/tiny-invariant": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
- "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
+ "node_modules/text-decoder": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz",
+ "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ=="
},
- "node_modules/tinycolor": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz",
- "integrity": "sha512-+CorETse1kl98xg0WAzii8DTT4ABF4R3nquhrkIbVGcw1T8JYs5Gfx9xEfGINPUZGDj9C4BmOtuKeaTtuuRolg==",
- "engines": {
- "node": ">=0.4.0"
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
}
},
- "node_modules/tinycolor2": {
+ "node_modules/thenify-all": {
"version": "1.6.0",
- "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
- "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
"dependencies": {
- "is-number": "^7.0.0"
+ "thenify": ">= 3.1.0 < 4"
},
"engines": {
- "node": ">=8.0"
+ "node": ">=0.8"
}
},
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
},
- "node_modules/totalist": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
- "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
- "engines": {
- "node": ">=6"
- }
+ "node_modules/tinybench": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+ "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
+ "dev": true
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="
},
- "node_modules/tsx": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz",
- "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==",
- "dev": true,
+ "node_modules/tinyglobby": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz",
+ "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==",
"dependencies": {
- "esbuild": "~0.23.0",
- "get-tsconfig": "^4.7.5"
- },
- "bin": {
- "tsx": "dist/cli.mjs"
- },
- "engines": {
- "node": ">=18.0.0"
+ "fdir": "^6.4.2",
+ "picomatch": "^4.0.2"
},
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/aix-ppc64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz",
- "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/android-arm": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz",
- "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/android-arm64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz",
- "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/android-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz",
- "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/darwin-arm64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz",
- "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/darwin-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz",
- "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz",
- "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/freebsd-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz",
- "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/linux-arm": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz",
- "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/linux-arm64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz",
- "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/linux-ia32": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz",
- "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/linux-loong64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz",
- "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tsx/node_modules/@esbuild/linux-mips64el": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz",
- "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">=18"
+ "node": ">=12.0.0"
}
},
- "node_modules/tsx/node_modules/@esbuild/linux-ppc64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz",
- "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
+ "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
}
},
- "node_modules/tsx/node_modules/@esbuild/linux-riscv64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz",
- "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"engines": {
- "node": ">=18"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/tsx/node_modules/@esbuild/linux-s390x": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz",
- "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==",
- "cpu": [
- "s390x"
- ],
+ "node_modules/tinypool": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
+ "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">=18"
+ "node": "^18.0.0 || >=20.0.0"
}
},
- "node_modules/tsx/node_modules/@esbuild/linux-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz",
- "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/tinyrainbow": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
+ "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">=18"
+ "node": ">=14.0.0"
}
},
- "node_modules/tsx/node_modules/@esbuild/netbsd-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz",
- "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==",
- "cpu": [
- "x64"
- ],
+ "node_modules/tinyspy": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
+ "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
"dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
"engines": {
- "node": ">=18"
+ "node": ">=14.0.0"
}
},
- "node_modules/tsx/node_modules/@esbuild/openbsd-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz",
- "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=8.0"
}
},
- "node_modules/tsx/node_modules/@esbuild/sunos-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz",
- "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"engines": {
- "node": ">=18"
+ "node": ">=0.6"
}
},
- "node_modules/tsx/node_modules/@esbuild/win32-arm64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz",
- "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"engines": {
- "node": ">=18"
+ "node": ">=6"
}
},
- "node_modules/tsx/node_modules/@esbuild/win32-ia32": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz",
- "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/ts-api-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz",
+ "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==",
"dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
"engines": {
- "node": ">=18"
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
}
},
- "node_modules/tsx/node_modules/@esbuild/win32-x64": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz",
- "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==",
- "cpu": [
- "x64"
- ],
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "node_modules/tsscmp": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
+ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
"dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
"engines": {
- "node": ">=18"
+ "node": ">=0.6.x"
}
},
- "node_modules/tsx/node_modules/esbuild": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz",
- "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.23.1",
- "@esbuild/android-arm": "0.23.1",
- "@esbuild/android-arm64": "0.23.1",
- "@esbuild/android-x64": "0.23.1",
- "@esbuild/darwin-arm64": "0.23.1",
- "@esbuild/darwin-x64": "0.23.1",
- "@esbuild/freebsd-arm64": "0.23.1",
- "@esbuild/freebsd-x64": "0.23.1",
- "@esbuild/linux-arm": "0.23.1",
- "@esbuild/linux-arm64": "0.23.1",
- "@esbuild/linux-ia32": "0.23.1",
- "@esbuild/linux-loong64": "0.23.1",
- "@esbuild/linux-mips64el": "0.23.1",
- "@esbuild/linux-ppc64": "0.23.1",
- "@esbuild/linux-riscv64": "0.23.1",
- "@esbuild/linux-s390x": "0.23.1",
- "@esbuild/linux-x64": "0.23.1",
- "@esbuild/netbsd-x64": "0.23.1",
- "@esbuild/openbsd-arm64": "0.23.1",
- "@esbuild/openbsd-x64": "0.23.1",
- "@esbuild/sunos-x64": "0.23.1",
- "@esbuild/win32-arm64": "0.23.1",
- "@esbuild/win32-ia32": "0.23.1",
- "@esbuild/win32-x64": "0.23.1"
- }
- },
- "node_modules/tuf-js": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz",
- "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==",
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "devOptional": true,
"dependencies": {
- "@tufjs/models": "2.0.1",
- "debug": "^4.3.4",
- "make-fetch-happen": "^13.0.1"
+ "prelude-ls": "^1.2.1"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">= 0.8.0"
}
},
"node_modules/type-fest": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "version": "4.30.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz",
+ "integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==",
"engines": {
- "node": ">=14.16"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/typescript": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
- "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
- "devOptional": true,
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+ "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -10234,72 +12200,81 @@
"node": ">=14.17"
}
},
+ "node_modules/typescript-eslint": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.21.0.tgz",
+ "integrity": "sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.21.0",
+ "@typescript-eslint/parser": "8.21.0",
+ "@typescript-eslint/utils": "8.21.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
+ }
+ },
"node_modules/ufo": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz",
- "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw=="
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
+ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="
},
"node_modules/ultrahtml": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz",
"integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg=="
},
- "node_modules/unconfig": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.3.13.tgz",
- "integrity": "sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==",
- "peer": true,
- "dependencies": {
- "@antfu/utils": "^0.7.7",
- "defu": "^6.1.4",
- "jiti": "^1.21.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
"node_modules/uncrypto": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
"integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="
},
"node_modules/unctx": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.3.1.tgz",
- "integrity": "sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.4.1.tgz",
+ "integrity": "sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==",
"dependencies": {
- "acorn": "^8.8.2",
+ "acorn": "^8.14.0",
"estree-walker": "^3.0.3",
- "magic-string": "^0.30.0",
- "unplugin": "^1.3.1"
+ "magic-string": "^0.30.17",
+ "unplugin": "^2.1.0"
}
},
- "node_modules/undici": {
- "version": "5.28.4",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
- "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "node_modules/unctx/node_modules/unplugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.1.2.tgz",
+ "integrity": "sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==",
"dependencies": {
- "@fastify/busboy": "^2.0.0"
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
},
"engines": {
- "node": ">=14.0"
+ "node": ">=18.12.0"
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
},
"node_modules/unenv": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz",
- "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.10.0.tgz",
+ "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==",
"dependencies": {
"consola": "^3.2.3",
- "defu": "^6.1.3",
+ "defu": "^6.1.4",
"mime": "^3.0.0",
- "node-fetch-native": "^1.6.1",
- "pathe": "^1.1.1"
+ "node-fetch-native": "^1.6.4",
+ "pathe": "^1.1.2"
}
},
"node_modules/unenv/node_modules/mime": {
@@ -10314,13 +12289,13 @@
}
},
"node_modules/unhead": {
- "version": "1.9.10",
- "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.9.10.tgz",
- "integrity": "sha512-Y3w+j1x1YFig2YuE+W2sER+SciRR7MQktYRHNqvZJ0iUNCCJTS8Z/SdSMUEeuFV28daXeASlR3fy7Ry3O2indg==",
+ "version": "1.11.18",
+ "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.11.18.tgz",
+ "integrity": "sha512-TWgGUoZMpYe2yJwY6jZ0/9kpQT18ygr2h5lI6cUXdfD9UzDc0ytM9jGaleSYkj9guJWXkk7izYBnzJvxl8mRvQ==",
"dependencies": {
- "@unhead/dom": "1.9.10",
- "@unhead/schema": "1.9.10",
- "@unhead/shared": "1.9.10",
+ "@unhead/dom": "1.11.18",
+ "@unhead/schema": "1.11.18",
+ "@unhead/shared": "1.11.18",
"hookable": "^5.5.3"
},
"funding": {
@@ -10339,56 +12314,35 @@
}
},
"node_modules/unimport": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz",
- "integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==",
+ "version": "3.14.3",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.14.3.tgz",
+ "integrity": "sha512-yEJps4GW7jBdoQlxEV0ElBCJsJmH8FdZtk4oog0y++8hgLh0dGnDpE4oaTc0Lfx4N5rRJiGFUWHrBqC8CyUBmQ==",
"dependencies": {
- "@rollup/pluginutils": "^5.1.0",
- "acorn": "^8.11.2",
+ "@rollup/pluginutils": "^5.1.3",
+ "acorn": "^8.14.0",
"escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3",
- "fast-glob": "^3.3.2",
- "local-pkg": "^0.5.0",
- "magic-string": "^0.30.5",
- "mlly": "^1.4.2",
- "pathe": "^1.1.1",
- "pkg-types": "^1.0.3",
- "scule": "^1.1.1",
- "strip-literal": "^1.3.0",
- "unplugin": "^1.5.1"
- }
- },
- "node_modules/unimport/node_modules/strip-literal": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz",
- "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==",
- "dependencies": {
- "acorn": "^8.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "local-pkg": "^0.5.1",
+ "magic-string": "^0.30.14",
+ "mlly": "^1.7.3",
+ "pathe": "^1.1.2",
+ "picomatch": "^4.0.2",
+ "pkg-types": "^1.2.1",
+ "scule": "^1.3.0",
+ "strip-literal": "^2.1.1",
+ "tinyglobby": "^0.2.10",
+ "unplugin": "^1.16.0"
}
},
- "node_modules/unique-filename": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
- "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==",
- "dependencies": {
- "unique-slug": "^4.0.0"
- },
+ "node_modules/unimport/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
- },
- "node_modules/unique-slug": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz",
- "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==",
- "dependencies": {
- "imurmurhash": "^0.1.4"
+ "node": ">=12"
},
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/universalify": {
@@ -10399,87 +12353,40 @@
"node": ">= 10.0.0"
}
},
- "node_modules/unocss": {
- "version": "0.60.3",
- "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.60.3.tgz",
- "integrity": "sha512-pUBbpgGRKCa6oB/LrGEFBWP2/2E1ZOY8XO7aVJKo2x10rqLS8tGykn1VoBUgbGJsv/8W8tskTVz+RFbCyKP+kA==",
- "peer": true,
- "dependencies": {
- "@unocss/astro": "0.60.3",
- "@unocss/cli": "0.60.3",
- "@unocss/core": "0.60.3",
- "@unocss/extractor-arbitrary-variants": "0.60.3",
- "@unocss/postcss": "0.60.3",
- "@unocss/preset-attributify": "0.60.3",
- "@unocss/preset-icons": "0.60.3",
- "@unocss/preset-mini": "0.60.3",
- "@unocss/preset-tagify": "0.60.3",
- "@unocss/preset-typography": "0.60.3",
- "@unocss/preset-uno": "0.60.3",
- "@unocss/preset-web-fonts": "0.60.3",
- "@unocss/preset-wind": "0.60.3",
- "@unocss/reset": "0.60.3",
- "@unocss/transformer-attributify-jsx": "0.60.3",
- "@unocss/transformer-attributify-jsx-babel": "0.60.3",
- "@unocss/transformer-compile-class": "0.60.3",
- "@unocss/transformer-directives": "0.60.3",
- "@unocss/transformer-variant-group": "0.60.3",
- "@unocss/vite": "0.60.3"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@unocss/webpack": "0.60.3",
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
- },
- "peerDependenciesMeta": {
- "@unocss/webpack": {
- "optional": true
- },
- "vite": {
- "optional": true
- }
- }
- },
"node_modules/unplugin": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz",
- "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.0.tgz",
+ "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==",
"dependencies": {
- "acorn": "^8.11.3",
- "chokidar": "^3.6.0",
- "webpack-sources": "^3.2.3",
- "webpack-virtual-modules": "^0.6.1"
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/unplugin-vue-router": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.7.0.tgz",
- "integrity": "sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==",
- "dependencies": {
- "@babel/types": "^7.22.19",
- "@rollup/pluginutils": "^5.0.4",
- "@vue-macros/common": "^1.8.0",
- "ast-walker-scope": "^0.5.0",
- "chokidar": "^3.5.3",
- "fast-glob": "^3.3.1",
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.11.2.tgz",
+ "integrity": "sha512-X8BbQ3BNnMqaCYeMj80jtz5jC4AB0jcpdmECIYey9qKm6jy/upaPZ/WzfuT+iTGRiQAY4WemHueXxuzH127oOg==",
+ "dependencies": {
+ "@babel/types": "^7.26.5",
+ "@rollup/pluginutils": "^5.1.4",
+ "@vue-macros/common": "^1.16.1",
+ "ast-walker-scope": "^0.6.2",
+ "chokidar": "^3.6.0",
+ "fast-glob": "^3.3.3",
"json5": "^2.2.3",
- "local-pkg": "^0.4.3",
- "mlly": "^1.4.2",
- "pathe": "^1.1.1",
- "scule": "^1.0.0",
- "unplugin": "^1.5.0",
- "yaml": "^2.3.2"
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.2",
+ "scule": "^1.3.0",
+ "unplugin": "2.1.2",
+ "yaml": "^2.7.0"
},
"peerDependencies": {
- "vue-router": "^4.1.0"
+ "vue-router": "^4.4.0"
},
"peerDependenciesMeta": {
"vue-router": {
@@ -10488,9 +12395,13 @@
}
},
"node_modules/unplugin-vue-router/node_modules/local-pkg": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
+ "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
+ "dependencies": {
+ "mlly": "^1.7.3",
+ "pkg-types": "^1.3.0"
+ },
"engines": {
"node": ">=14"
},
@@ -10498,36 +12409,56 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/unplugin-vue-router/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
+ "node_modules/unplugin-vue-router/node_modules/unplugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.1.2.tgz",
+ "integrity": "sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
"node_modules/unstorage": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz",
- "integrity": "sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==",
+ "version": "1.14.4",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.14.4.tgz",
+ "integrity": "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==",
"dependencies": {
"anymatch": "^3.1.3",
"chokidar": "^3.6.0",
"destr": "^2.0.3",
- "h3": "^1.11.1",
- "listhen": "^1.7.2",
- "lru-cache": "^10.2.0",
- "mri": "^1.2.0",
- "node-fetch-native": "^1.6.2",
- "ofetch": "^1.3.3",
- "ufo": "^1.4.0"
+ "h3": "^1.13.0",
+ "lru-cache": "^10.4.3",
+ "node-fetch-native": "^1.6.4",
+ "ofetch": "^1.4.1",
+ "ufo": "^1.5.4"
},
"peerDependencies": {
- "@azure/app-configuration": "^1.5.0",
- "@azure/cosmos": "^4.0.0",
- "@azure/data-tables": "^13.2.2",
- "@azure/identity": "^4.0.1",
- "@azure/keyvault-secrets": "^4.8.0",
- "@azure/storage-blob": "^12.17.0",
- "@capacitor/preferences": "^5.0.7",
- "@netlify/blobs": "^6.5.0 || ^7.0.0",
- "@planetscale/database": "^1.16.0",
- "@upstash/redis": "^1.28.4",
+ "@azure/app-configuration": "^1.8.0",
+ "@azure/cosmos": "^4.2.0",
+ "@azure/data-tables": "^13.3.0",
+ "@azure/identity": "^4.5.0",
+ "@azure/keyvault-secrets": "^4.9.0",
+ "@azure/storage-blob": "^12.26.0",
+ "@capacitor/preferences": "^6.0.3",
+ "@deno/kv": ">=0.8.4",
+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0",
+ "@planetscale/database": "^1.19.0",
+ "@upstash/redis": "^1.34.3",
+ "@vercel/blob": ">=0.27.0",
"@vercel/kv": "^1.0.1",
+ "aws4fetch": "^1.0.20",
+ "db0": ">=0.2.1",
"idb-keyval": "^6.2.1",
- "ioredis": "^5.3.2"
+ "ioredis": "^5.4.2",
+ "uploadthing": "^7.4.1"
},
"peerDependenciesMeta": {
"@azure/app-configuration": {
@@ -10551,6 +12482,9 @@
"@capacitor/preferences": {
"optional": true
},
+ "@deno/kv": {
+ "optional": true
+ },
"@netlify/blobs": {
"optional": true
},
@@ -10560,24 +12494,33 @@
"@upstash/redis": {
"optional": true
},
+ "@vercel/blob": {
+ "optional": true
+ },
"@vercel/kv": {
"optional": true
},
+ "aws4fetch": {
+ "optional": true
+ },
+ "db0": {
+ "optional": true
+ },
"idb-keyval": {
"optional": true
},
"ioredis": {
"optional": true
+ },
+ "uploadthing": {
+ "optional": true
}
}
},
"node_modules/unstorage/node_modules/lru-cache": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
- "engines": {
- "node": "14 || >=16.14"
- }
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
},
"node_modules/untun": {
"version": "0.1.3",
@@ -10593,17 +12536,18 @@
}
},
"node_modules/untyped": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.4.2.tgz",
- "integrity": "sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.5.2.tgz",
+ "integrity": "sha512-eL/8PlhLcMmlMDtNPKhyyz9kEBDS3Uk4yMu/ewlkT2WFbtzScjHWPJLdQLmaGPUKjXzwe9MumOtOgc4Fro96Kg==",
"dependencies": {
- "@babel/core": "^7.23.7",
- "@babel/standalone": "^7.23.8",
- "@babel/types": "^7.23.6",
+ "@babel/core": "^7.26.0",
+ "@babel/standalone": "^7.26.4",
+ "@babel/types": "^7.26.3",
+ "citty": "^0.1.6",
"defu": "^6.1.4",
- "jiti": "^1.21.0",
- "mri": "^1.2.0",
- "scule": "^1.2.0"
+ "jiti": "^2.4.1",
+ "knitwork": "^1.2.0",
+ "scule": "^1.3.0"
},
"bin": {
"untyped": "dist/cli.mjs"
@@ -10623,9 +12567,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
- "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"funding": [
{
"type": "opencollective",
@@ -10641,8 +12585,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -10656,6 +12600,20 @@
"resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz",
"integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA=="
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "devOptional": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/uri-js-replace": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz",
+ "integrity": "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g=="
+ },
"node_modules/urlpattern-polyfill": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz",
@@ -10666,37 +12624,41 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "node_modules/uuid": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
+ "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
}
},
- "node_modules/validate-npm-package-name": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz",
- "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==",
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": ">= 0.8"
}
},
"node_modules/vite": {
- "version": "5.2.11",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",
- "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",
+ "version": "6.0.11",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz",
+ "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==",
"dependencies": {
- "esbuild": "^0.20.1",
- "postcss": "^8.4.38",
- "rollup": "^4.13.0"
+ "esbuild": "^0.24.2",
+ "postcss": "^8.4.49",
+ "rollup": "^4.23.0"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
@@ -10705,18 +12667,25 @@
"fsevents": "~2.3.3"
},
"peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
+ "sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
- "terser": "^5.4.0"
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
+ "jiti": {
+ "optional": true
+ },
"less": {
"optional": true
},
@@ -10726,6 +12695,9 @@
"sass": {
"optional": true
},
+ "sass-embedded": {
+ "optional": true
+ },
"stylus": {
"optional": true
},
@@ -10734,45 +12706,56 @@
},
"terser": {
"optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
}
}
},
"node_modules/vite-hot-client": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.3.tgz",
- "integrity": "sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==",
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz",
+ "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==",
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
- "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0"
+ "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0"
}
},
"node_modules/vite-node": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz",
- "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.4.tgz",
+ "integrity": "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==",
"dependencies": {
"cac": "^6.7.14",
- "debug": "^4.3.4",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "vite": "^5.0.0"
+ "debug": "^4.4.0",
+ "es-module-lexer": "^1.6.0",
+ "pathe": "^2.0.2",
+ "vite": "^5.0.0 || ^6.0.0"
},
"bin": {
"vite-node": "vite-node.mjs"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/vite-node/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="
+ },
"node_modules/vite-plugin-checker": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.4.tgz",
- "integrity": "sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.8.0.tgz",
+ "integrity": "sha512-UA5uzOGm97UvZRTdZHiQVYFnd86AVn8EVaD4L3PoVzxH+IZSfaAw14WGFwX9QS23UW3lV/5bVKZn6l0w+q9P0g==",
"dependencies": {
"@babel/code-frame": "^7.12.13",
"ansi-escapes": "^4.3.0",
@@ -10782,7 +12765,6 @@
"fast-glob": "^3.2.7",
"fs-extra": "^11.1.0",
"npm-run-path": "^4.0.1",
- "semver": "^7.5.0",
"strip-ansi": "^6.0.0",
"tiny-invariant": "^1.1.0",
"vscode-languageclient": "^7.0.0",
@@ -10794,6 +12776,7 @@
"node": ">=14.16"
},
"peerDependencies": {
+ "@biomejs/biome": ">=1.7",
"eslint": ">=7",
"meow": "^9.0.0",
"optionator": "^0.9.1",
@@ -10802,9 +12785,12 @@
"vite": ">=2.0.0",
"vls": "*",
"vti": "*",
- "vue-tsc": ">=1.3.9"
+ "vue-tsc": "~2.1.6"
},
"peerDependenciesMeta": {
+ "@biomejs/biome": {
+ "optional": true
+ },
"eslint": {
"optional": true
},
@@ -10827,54 +12813,9 @@
"optional": true
},
"vue-tsc": {
- "optional": true
- }
- }
- },
- "node_modules/vite-plugin-checker/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/vite-plugin-checker/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/vite-plugin-checker/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/vite-plugin-checker/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "optional": true
+ }
+ }
},
"node_modules/vite-plugin-checker/node_modules/commander": {
"version": "8.3.0",
@@ -10884,14 +12825,6 @@
"node": ">= 12"
}
},
- "node_modules/vite-plugin-checker/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/vite-plugin-checker/node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -10903,31 +12836,20 @@
"node": ">=8"
}
},
- "node_modules/vite-plugin-checker/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/vite-plugin-inspect": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.4.tgz",
- "integrity": "sha512-G0N3rjfw+AiiwnGw50KlObIHYWfulVwaCBUBLh2xTW9G1eM9ocE5olXkEYUbwyTmX+azM8duubi+9w5awdCz+g==",
- "dependencies": {
- "@antfu/utils": "^0.7.7",
- "@rollup/pluginutils": "^5.1.0",
- "debug": "^4.3.4",
- "error-stack-parser-es": "^0.1.1",
+ "version": "0.8.9",
+ "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz",
+ "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==",
+ "dependencies": {
+ "@antfu/utils": "^0.7.10",
+ "@rollup/pluginutils": "^5.1.3",
+ "debug": "^4.3.7",
+ "error-stack-parser-es": "^0.1.5",
"fs-extra": "^11.2.0",
"open": "^10.1.0",
"perfect-debounce": "^1.0.0",
- "picocolors": "^1.0.0",
- "sirv": "^2.0.4"
+ "picocolors": "^1.1.1",
+ "sirv": "^3.0.0"
},
"engines": {
"node": ">=14"
@@ -10936,7 +12858,7 @@
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
- "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0"
+ "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1"
},
"peerDependenciesMeta": {
"@nuxt/kit": {
@@ -10973,9 +12895,9 @@
}
},
"node_modules/vite-plugin-vue-inspector": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.1.0.tgz",
- "integrity": "sha512-yIw9dvBz9nQW7DPfbJtUVW6JTnt67hqTPRnTwT2CZWMqDvISyQHRjgKl32nlMh1DRH+92533Sv6t59pWMLUCWA==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz",
+ "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==",
"dependencies": {
"@babel/core": "^7.23.0",
"@babel/plugin-proposal-decorators": "^7.23.0",
@@ -10988,9 +12910,93 @@
"magic-string": "^0.30.4"
},
"peerDependencies": {
- "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0"
+ "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0"
+ }
+ },
+ "node_modules/vitest": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.4.tgz",
+ "integrity": "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==",
+ "dev": true,
+ "dependencies": {
+ "@vitest/expect": "3.0.4",
+ "@vitest/mocker": "3.0.4",
+ "@vitest/pretty-format": "^3.0.4",
+ "@vitest/runner": "3.0.4",
+ "@vitest/snapshot": "3.0.4",
+ "@vitest/spy": "3.0.4",
+ "@vitest/utils": "3.0.4",
+ "chai": "^5.1.2",
+ "debug": "^4.4.0",
+ "expect-type": "^1.1.0",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.2",
+ "std-env": "^3.8.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.2",
+ "tinypool": "^1.0.2",
+ "tinyrainbow": "^2.0.0",
+ "vite": "^5.0.0 || ^6.0.0",
+ "vite-node": "3.0.4",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@types/debug": "^4.1.12",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "@vitest/browser": "3.0.4",
+ "@vitest/ui": "3.0.4",
+ "happy-dom": "*",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@types/debug": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ }
}
},
+ "node_modules/vitest-environment-nuxt": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vitest-environment-nuxt/-/vitest-environment-nuxt-1.0.1.tgz",
+ "integrity": "sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nuxt/test-utils": ">=3.13.1"
+ }
+ },
+ "node_modules/vitest/node_modules/pathe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
+ "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
+ "dev": true
+ },
"node_modules/vscode-jsonrpc": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
@@ -11012,26 +13018,6 @@
"vscode": "^1.52.0"
}
},
- "node_modules/vscode-languageclient/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/vscode-languageclient/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/vscode-languageserver": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
@@ -11053,9 +13039,9 @@
}
},
"node_modules/vscode-languageserver-textdocument": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz",
- "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA=="
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="
},
"node_modules/vscode-languageserver-types": {
"version": "3.16.0",
@@ -11068,15 +13054,15 @@
"integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="
},
"node_modules/vue": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz",
- "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz",
+ "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"dependencies": {
- "@vue/compiler-dom": "3.4.27",
- "@vue/compiler-sfc": "3.4.27",
- "@vue/runtime-dom": "3.4.27",
- "@vue/server-renderer": "3.4.27",
- "@vue/shared": "3.4.27"
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-sfc": "3.5.13",
+ "@vue/runtime-dom": "3.5.13",
+ "@vue/server-renderer": "3.5.13",
+ "@vue/shared": "3.5.13"
},
"peerDependencies": {
"typescript": "*"
@@ -11088,11 +13074,42 @@
}
},
"node_modules/vue-bundle-renderer": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.1.0.tgz",
- "integrity": "sha512-uZ+5ZJdZ/b43gMblWtcpikY6spJd0nERaM/1RtgioXNfWFbjKlUwrS8HlrddN6T2xtptmOouWclxLUkpgcVX3Q==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.1.1.tgz",
+ "integrity": "sha512-+qALLI5cQncuetYOXp4yScwYvqh8c6SMXee3B+M7oTZxOgtESP0l4j/fXdEJoZ+EdMxkGWIj+aSEyjXkOdmd7g==",
"dependencies": {
- "ufo": "^1.5.3"
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/vue-component-type-helpers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.0.tgz",
+ "integrity": "sha512-cYrAnv2me7bPDcg9kIcGwjJiSB6Qyi08+jLDo9yuvoFQjzHiPTzML7RnkJB1+3P6KMsX/KbCD4QE3Tv/knEllw==",
+ "dev": true
+ },
+ "node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
}
},
"node_modules/vue-devtools-stub": {
@@ -11100,71 +13117,128 @@
"resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz",
"integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ=="
},
- "node_modules/vue-observe-visibility": {
- "version": "2.0.0-alpha.1",
- "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-2.0.0-alpha.1.tgz",
- "integrity": "sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g==",
+ "node_modules/vue-eslint-parser": {
+ "version": "9.4.3",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
+ "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
"peerDependencies": {
- "vue": "^3.0.0"
+ "eslint": ">=6.0.0"
}
},
- "node_modules/vue-resize": {
- "version": "2.0.0-alpha.1",
- "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz",
- "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==",
- "peerDependencies": {
- "vue": "^3.0.0"
+ "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/vue-router": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz",
- "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==",
- "dependencies": {
- "@vue/devtools-api": "^6.5.1"
+ "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/posva"
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
},
- "peerDependencies": {
- "vue": "^3.2.0"
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/vue-virtual-scroller": {
- "version": "2.0.0-beta.8",
- "resolved": "https://registry.npmjs.org/vue-virtual-scroller/-/vue-virtual-scroller-2.0.0-beta.8.tgz",
- "integrity": "sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==",
+ "node_modules/vue-router": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
+ "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
"dependencies": {
- "mitt": "^2.1.0",
- "vue-observe-visibility": "^2.0.0-alpha.1",
- "vue-resize": "^2.0.0-alpha.1"
+ "@vue/devtools-api": "^6.6.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
},
"peerDependencies": {
"vue": "^3.2.0"
}
},
- "node_modules/vue-virtual-scroller/node_modules/mitt": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz",
- "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg=="
- },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
- "node_modules/webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
+ },
+ "node_modules/websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "dependencies": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ },
"engines": {
- "node": ">=10.13.0"
+ "node": ">=0.8.0"
}
},
- "node_modules/webpack-virtual-modules": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz",
- "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg=="
+ "node_modules/websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+ "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/whatwg-url": {
"version": "5.0.0",
@@ -11189,6 +13263,22 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/why-is-node-running": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
+ "dev": true,
+ "dependencies": {
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
+ },
+ "bin": {
+ "why-is-node-running": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
@@ -11197,6 +13287,15 @@
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -11230,75 +13329,15 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "8.17.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
- "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"engines": {
"node": ">=10.0.0"
},
@@ -11315,6 +13354,15 @@
}
}
},
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -11329,9 +13377,9 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
- "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
+ "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
"bin": {
"yaml": "bin.mjs"
},
@@ -11339,6 +13387,11 @@
"node": ">= 14"
}
},
+ "node_modules/yaml-ast-parser": {
+ "version": "0.0.43",
+ "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz",
+ "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A=="
+ },
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
@@ -11364,11 +13417,20 @@
"node": ">=12"
}
},
+ "node_modules/ylru": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz",
+ "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "peer": true,
+ "devOptional": true,
"engines": {
"node": ">=10"
},
diff --git a/package.json b/package.json
index 72c7f57..a43cdae 100644
--- a/package.json
+++ b/package.json
@@ -3,29 +3,48 @@
"private": true,
"type": "module",
"scripts": {
- "generate-image-paths": "npx tsx getImagePaths.ts",
- "build": "npm run generate-image-paths && nuxt build",
- "dev": "npm run generate-image-paths && nuxt dev",
+ "build": "nuxt build",
+ "dev": "nuxt dev",
+ "test": "vitest",
+ "lint": "eslint",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
- "@ckpack/vue-color": "^1.5.0",
- "@nuxtjs/meta": "^3.0.0-beta.16",
- "@pinia/nuxt": "^0.5.1",
- "lodash": "^4.17.21",
- "nuxt": "^3.11.2",
- "pinia": "^2.1.7",
- "sass": "^1.77.2",
- "tinycolor": "^0.0.1",
- "tinycolor2": "^1.6.0",
- "vue": "^3.4.27",
- "vue-router": "^4.3.2"
+ "@formkit/auto-animate": "^0.8.2",
+ "@pinia/nuxt": "^0.7.0",
+ "firebase-admin": "^13.0.1",
+ "flowbite": "^2.5.2",
+ "flyonui": "^1.1.0",
+ "nuxt": "^3.13.0",
+ "obscenity": "^0.4.1",
+ "pinia": "^2.2.6",
+ "quill": "^2.0.3",
+ "sass": "^1.82.0",
+ "vue": "latest",
+ "vue-router": "latest"
},
"devDependencies": {
- "@types/lodash": "^4.17.7",
- "@types/tinycolor2": "^1.4.6",
- "typescript": "^5.6.2"
+ "@eslint/js": "^9.19.0",
+ "@nuxt/test-utils": "^3.15.4",
+ "@nuxtjs/tailwindcss": "^6.12.2",
+ "@pinia/testing": "^0.1.7",
+ "@types/quill": "^2.0.14",
+ "@vue/test-utils": "^2.4.6",
+ "daisyui": "^4.12.14",
+ "eslint": "^9.19.0",
+ "eslint-plugin-vue": "^9.32.0",
+ "globals": "^15.14.0",
+ "happy-dom": "^16.7.2",
+ "prettier-plugin-tailwindcss": "^0.6.9",
+ "tailwindcss": "^3.4.16",
+ "typescript": "^5.7.3",
+ "typescript-eslint": "^8.21.0",
+ "vitest": "^3.0.4",
+ "vue-eslint-parser": "^9.4.3"
+ },
+ "overrides": {
+ "vue": "latest"
}
}
diff --git a/pages/Changelog.vue b/pages/Changelog.vue
deleted file mode 100644
index cabc72b..0000000
--- a/pages/Changelog.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
Changelog
-
-
Version {{ change.version }} ({{ change.type }})
-
Date: {{ change.release }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/Contributors.vue b/pages/Contributors.vue
deleted file mode 100644
index 0813797..0000000
--- a/pages/Contributors.vue
+++ /dev/null
@@ -1,163 +0,0 @@
-
-
-
Contributors
-
-
-
-
{{ contributor.name }}
-
First contribution: {{ contributor.dateAdded }}
-
-
► {{ contribution }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/[...error].vue b/pages/[...error].vue
index ad86e74..ee87729 100644
--- a/pages/[...error].vue
+++ b/pages/[...error].vue
@@ -1,93 +1,25 @@
-
-
-
-
-
-
-
Uh oh!
-
A whale is blocking your path!
-
You'll have to find your page somewhere else.
-
404: Page not found
-
+
+
+
Uh oh!
+
A v14 whale is blocking your path!
+
You'll have to find your page somewhere else.
+
Go Home
+
-
\ No newline at end of file
+
diff --git a/pages/all-ships.vue b/pages/all-ships.vue
new file mode 100644
index 0000000..3c70b6d
--- /dev/null
+++ b/pages/all-ships.vue
@@ -0,0 +1,16 @@
+
+
+
+
{{ ship.name }} ({{ ship.variant }})
+
{{ ship.img }}
+
+
+
+
+
+
+
+
diff --git a/pages/home.vue b/pages/home.vue
index 80cb9ef..1366746 100644
--- a/pages/home.vue
+++ b/pages/home.vue
@@ -1,189 +1,94 @@
-
-
-
-
Did you know: {{ fact }}
+
+
+
+
+
+
+
+ By
+ DubNubz
+
+
+
+
+
+
+
+
What's New?
+
+
+
+
+
+ View full changelog
+
+
+
-
-
-
Gravity Assist v2 Beta
-
Gravity Assist is changing soon! Stay ahead of the curve (and help me out with bug testing and feedback) by checking out the beta build!
-
If you encounter any bugs or have any suggestions, reach out to me!
-
-
-
+
+
+
Link A Device
+
+
+
+
+
+
+
+
+
+
Contact Me
+
+
+
+
+
+
+
+
-
+
diff --git a/pages/index.vue b/pages/index.vue
index 83e42a6..bd69724 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -1,184 +1,11 @@
-
-
-
-
Did you know: {{ fact }}
-
-
-
-
+
-
\ No newline at end of file
+
diff --git a/pages/modules/blueprint-tracker.vue b/pages/modules/blueprint-tracker.vue
new file mode 100644
index 0000000..1bb08ec
--- /dev/null
+++ b/pages/modules/blueprint-tracker.vue
@@ -0,0 +1,238 @@
+
+
+
+
Blueprint Tracker
+
+
+
+
+
+
(currentSorter = sorter)"
+ @filter="(filter) => (currentFilters = filter)"
+ @search="(term) => (currentSearch = term)"
+ />
+
+
+ Last updated: {{ formatDate(lastSaved, "full", true) }}
+ {{ getTotalTP(data).toLocaleString() }} total Tech Points
+
+
+
+ (currentShip = ship)"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/modules/color-generator.vue b/pages/modules/color-generator.vue
deleted file mode 100644
index 568b17d..0000000
--- a/pages/modules/color-generator.vue
+++ /dev/null
@@ -1,783 +0,0 @@
-
-
-
-
-
Input
-
-
-
-
Output
-
-
-
-
{{ store.outputText.join('').length }} /
- 280 characters (chat message)
- 1000 characters (mail)
-
-
-
-
-
-
-
-
-
-
-
Start
-
-
-
-
-
End
-
-
-
-
-
Or, pick from my selection of preset gradients
-
- Open
- Close
-
-
-
-
-
-
-
Your previous colors
-
-
-
-
-
-
-
-
Preset gradients
-
-
-
-
-
-
-
-
Advanced Options
-
-
-
-
-
Sample Text
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/modules/equipment-encyclopedia.vue b/pages/modules/equipment-encyclopedia.vue
deleted file mode 100644
index c5ec96d..0000000
--- a/pages/modules/equipment-encyclopedia.vue
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
- Close Dropdown
- Open Dropdown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Share
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/modules/fleet-builder.vue b/pages/modules/fleet-builder.vue
deleted file mode 100644
index 4bba315..0000000
--- a/pages/modules/fleet-builder.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
Coming soon!
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pages/modules/mail-editor/edit.vue b/pages/modules/mail-editor/edit.vue
new file mode 100644
index 0000000..5241f5e
--- /dev/null
+++ b/pages/modules/mail-editor/edit.vue
@@ -0,0 +1,149 @@
+
+
+
+
+ Need some inspiration? Try a mail template
+
+
+
+
+
+
+
+
+
+
+ (selectedMailTemplate = template)" />
+
+
+
+
+
(outputText = text)" @output-ops="(ops) => (outputOps = ops)" />
+
+
+ (showClearDialog = val)" @clear-text="isClearText = true" @click="deselectOthers('clear')" />
+ (showCopyDialog = val)" @click="deselectOthers('copy')" />
+ (showSaveDialog = val)"
+ @new-query="(uid, id) => getMail(uid, id)"
+ @click="deselectOthers('save')"
+ />
+ (showShareDialog = val)" @click="deselectOthers('share')" />
+
+
+
+
+
+
+ Profanity filter: The editor uses a basic profanity filter that does not reflect Infinite Lagrange's actual profanity filter.
+
+
Gives a general idea if your mail will be blocked or not.
+
+
+
+
+
+
+
+
diff --git a/pages/modules/mail-editor/index.vue b/pages/modules/mail-editor/index.vue
new file mode 100644
index 0000000..d6e1baa
--- /dev/null
+++ b/pages/modules/mail-editor/index.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/pages/modules/mail-editor/saved.vue b/pages/modules/mail-editor/saved.vue
new file mode 100644
index 0000000..0a9407a
--- /dev/null
+++ b/pages/modules/mail-editor/saved.vue
@@ -0,0 +1,124 @@
+
+
+
+ You have {{ savedMails?.length ?? 0 }}/30 saved mails
+
+
Mails unused for more than 6 months may be automatically deleted
+
+
+
(deleteMail = mail)" />
+ You have no saved mail! Try drafting a mail and saving it.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/modules/module-library.vue b/pages/modules/module-library.vue
index 4c7f500..db09151 100644
--- a/pages/modules/module-library.vue
+++ b/pages/modules/module-library.vue
@@ -1,310 +1,104 @@
-
-
-
-
-
-
-
-
-
-
- Share
-
-
-
-
-
+
+
+
Module Library
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+ (currentModule = mod)" />
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/pages/modules/research-agreement-helper.vue b/pages/modules/research-agreement-helper.vue
index 8f06006..7eb9e8a 100644
--- a/pages/modules/research-agreement-helper.vue
+++ b/pages/modules/research-agreement-helper.vue
@@ -1,387 +1,182 @@
-
-
-
-
-
-
-
-
-
-
- Share
-
+
+
+
Research Agreement Helper
+
+
+
+
-
-
-
{{ship.name}} ({{ ship.variant }})
-
{{ ship.variant_name }}
-
-
{{ ((ship.weight / (Object.values(data).reduce((acc, item) => acc + item.weight, 0))) * 100).toFixed(2) }}%
-
-
+
+
+ selectShip(ship, true)" />
+ handleOptionChange(type, next)" />
+ selectShip(ship, true)"
+ />
+
+
+ selectShip(ship)"
+ />
+
+
-
-
\ No newline at end of file
+
diff --git a/pages/modules/ship-comparison.vue b/pages/modules/ship-comparison.vue
deleted file mode 100644
index 2dee86b..0000000
--- a/pages/modules/ship-comparison.vue
+++ /dev/null
@@ -1,359 +0,0 @@
-
-
-
-
-
-
-
-
-
-
{{ ship.name }} ({{ ship.variant }})
-
{{ ship.variant_name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Click to add a ship!
-
Click to change ship
-
-
-
-
-
-
-
-
-
Now add a ship to compare!
-
Click to change ship
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/carousel/bpTracker.png b/public/carousel/bpTracker.png
new file mode 100644
index 0000000..d03578f
Binary files /dev/null and b/public/carousel/bpTracker.png differ
diff --git a/public/carousel/mailEditor.png b/public/carousel/mailEditor.png
new file mode 100644
index 0000000..3ebffbd
Binary files /dev/null and b/public/carousel/mailEditor.png differ
diff --git a/public/carousel/moduleLibrary.png b/public/carousel/moduleLibrary.png
new file mode 100644
index 0000000..2b0970f
Binary files /dev/null and b/public/carousel/moduleLibrary.png differ
diff --git a/public/carousel/researchAgreement.png b/public/carousel/researchAgreement.png
new file mode 100644
index 0000000..447ecf9
Binary files /dev/null and b/public/carousel/researchAgreement.png differ
diff --git a/public/logo/discord.svg b/public/logo/discord.svg
new file mode 100644
index 0000000..665dd03
--- /dev/null
+++ b/public/logo/discord.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logo/github.svg b/public/logo/github.svg
new file mode 100644
index 0000000..06087bf
--- /dev/null
+++ b/public/logo/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logo/gravityAssist.svg b/public/logo/gravityAssist.svg
new file mode 100644
index 0000000..13dd9a3
--- /dev/null
+++ b/public/logo/gravityAssist.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/logo/logo.png b/public/logo/logo.png
new file mode 100644
index 0000000..7c900ba
Binary files /dev/null and b/public/logo/logo.png differ
diff --git a/public/logo/logo.svg b/public/logo/logo.svg
new file mode 100644
index 0000000..93b6e06
--- /dev/null
+++ b/public/logo/logo.svg
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/ships/b192newland.png b/public/ships/b192_newland_a.png
similarity index 100%
rename from public/ships/b192newland.png
rename to public/ships/b192_newland_a.png
diff --git a/public/ships/sc020.png b/public/ships/balancer_anderson_sc020_a.png
similarity index 100%
rename from public/ships/sc020.png
rename to public/ships/balancer_anderson_sc020_a.png
diff --git a/public/ships/bullfrog.png b/public/ships/bullfrog_a.png
similarity index 100%
rename from public/ships/bullfrog.png
rename to public/ships/bullfrog_a.png
diff --git a/public/ships/cellularDefender.png b/public/ships/cellular_defender_a.png
similarity index 100%
rename from public/ships/cellularDefender.png
rename to public/ships/cellular_defender_a.png
diff --git a/public/ships/classes/auxiliary ship.svg b/public/ships/classes/auxiliary ship.svg
new file mode 100644
index 0000000..191ec93
--- /dev/null
+++ b/public/ships/classes/auxiliary ship.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/public/ships/classes/battlecruiser.svg b/public/ships/classes/battlecruiser.svg
new file mode 100644
index 0000000..3aea000
--- /dev/null
+++ b/public/ships/classes/battlecruiser.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/public/ships/classes/battleship.svg b/public/ships/classes/battleship.svg
new file mode 100644
index 0000000..d9cd75b
--- /dev/null
+++ b/public/ships/classes/battleship.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/public/ships/classes/carrier.svg b/public/ships/classes/carrier.svg
new file mode 100644
index 0000000..f035338
--- /dev/null
+++ b/public/ships/classes/carrier.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/public/ships/classes/corvette.svg b/public/ships/classes/corvette.svg
new file mode 100644
index 0000000..8a9eba6
--- /dev/null
+++ b/public/ships/classes/corvette.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/public/ships/classes/cruiser.svg b/public/ships/classes/cruiser.svg
new file mode 100644
index 0000000..5e753b3
--- /dev/null
+++ b/public/ships/classes/cruiser.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/public/ships/classes/destroyer.svg b/public/ships/classes/destroyer.svg
new file mode 100644
index 0000000..02ddd91
--- /dev/null
+++ b/public/ships/classes/destroyer.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/public/ships/classes/fighter.svg b/public/ships/classes/fighter.svg
new file mode 100644
index 0000000..a2cd05a
--- /dev/null
+++ b/public/ships/classes/fighter.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/public/ships/classes/frigate.svg b/public/ships/classes/frigate.svg
new file mode 100644
index 0000000..2e50aca
--- /dev/null
+++ b/public/ships/classes/frigate.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/public/ships/classes/landing ship.svg b/public/ships/classes/landing ship.svg
new file mode 100644
index 0000000..733323b
--- /dev/null
+++ b/public/ships/classes/landing ship.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/public/ships/conamaraChaos_a.png b/public/ships/conamara_chaos_a.png
similarity index 100%
rename from public/ships/conamaraChaos_a.png
rename to public/ships/conamara_chaos_a.png
diff --git a/public/ships/conamaraChaos_b.png b/public/ships/conamara_chaos_b.png
similarity index 100%
rename from public/ships/conamaraChaos_b.png
rename to public/ships/conamara_chaos_b.png
diff --git a/public/ships/constantineTheGreat.png b/public/ships/constantine_the_great_a.png
similarity index 100%
rename from public/ships/constantineTheGreat.png
rename to public/ships/constantine_the_great_a.png
diff --git a/public/ships/cv3000.png b/public/ships/cv3000_a.png
similarity index 100%
rename from public/ships/cv3000.png
rename to public/ships/cv3000_a.png
diff --git a/public/ships/cvii003.png b/public/ships/cvii003_a.png
similarity index 100%
rename from public/ships/cvii003.png
rename to public/ships/cvii003_a.png
diff --git a/public/ships/cvt800.png b/public/ships/cvt800_a.png
similarity index 100%
rename from public/ships/cvt800.png
rename to public/ships/cvt800_a.png
diff --git a/public/ships/ediacaran.png b/public/ships/ediacaran_a.png
similarity index 100%
rename from public/ships/ediacaran.png
rename to public/ships/ediacaran_a.png
diff --git a/public/ships/eris_a.png b/public/ships/eris_i_a.png
similarity index 100%
rename from public/ships/eris_a.png
rename to public/ships/eris_i_a.png
diff --git a/public/ships/eris_b.png b/public/ships/eris_i_b.png
similarity index 100%
rename from public/ships/eris_b.png
rename to public/ships/eris_i_b.png
diff --git a/public/ships/eris_c.png b/public/ships/eris_i_c.png
similarity index 100%
rename from public/ships/eris_c.png
rename to public/ships/eris_i_c.png
diff --git a/public/ships/eternalHeavens.png b/public/ships/eternal_heavens_a.png
similarity index 100%
rename from public/ships/eternalHeavens.png
rename to public/ships/eternal_heavens_a.png
diff --git a/public/ships/eternalStorm.png b/public/ships/eternal_storm_a.png
similarity index 100%
rename from public/ships/eternalStorm.png
rename to public/ships/eternal_storm_a.png
diff --git a/public/ships/fsv830.png b/public/ships/fsv830_a.png
similarity index 100%
rename from public/ships/fsv830.png
rename to public/ships/fsv830_a.png
diff --git a/public/ships/hayreddinsLoyal.png b/public/ships/hayreddins_loyal_a.png
similarity index 100%
rename from public/ships/hayreddinsLoyal.png
rename to public/ships/hayreddins_loyal_a.png
diff --git a/public/ships/inostrancevia_a.png b/public/ships/inostrancevia_a.png
new file mode 100644
index 0000000..7961372
Binary files /dev/null and b/public/ships/inostrancevia_a.png differ
diff --git a/public/ships/inostrancevia_b.png b/public/ships/inostrancevia_b.png
new file mode 100644
index 0000000..85a8706
Binary files /dev/null and b/public/ships/inostrancevia_b.png differ
diff --git a/public/ships/inostrancevia_c.png b/public/ships/inostrancevia_c.png
new file mode 100644
index 0000000..2150109
Binary files /dev/null and b/public/ships/inostrancevia_c.png differ
diff --git a/public/ships/janbiyaAer410.png b/public/ships/janbiya_aer410_a.png
similarity index 100%
rename from public/ships/janbiyaAer410.png
rename to public/ships/janbiya_aer410_a.png
diff --git a/public/ships/kccpv_a.png b/public/ships/kccpv20_a.png
similarity index 100%
rename from public/ships/kccpv_a.png
rename to public/ships/kccpv20_a.png
diff --git a/public/ships/kccpv_b.png b/public/ships/kccpv20_b.png
similarity index 100%
rename from public/ships/kccpv_b.png
rename to public/ships/kccpv20_b.png
diff --git a/public/ships/kccpv_c.png b/public/ships/kccpv20_c.png
similarity index 100%
rename from public/ships/kccpv_c.png
rename to public/ships/kccpv20_c.png
diff --git a/public/ships/kccpv_d.png b/public/ships/kccpv20_d.png
similarity index 100%
rename from public/ships/kccpv_d.png
rename to public/ships/kccpv20_d.png
diff --git a/public/ships/lightCone_a.png b/public/ships/light_cone_a.png
similarity index 100%
rename from public/ships/lightCone_a.png
rename to public/ships/light_cone_a.png
diff --git a/public/ships/lightCone_b.png b/public/ships/light_cone_b.png
similarity index 100%
rename from public/ships/lightCone_b.png
rename to public/ships/light_cone_b.png
diff --git a/public/ships/lightCone_c.png b/public/ships/light_cone_c.png
similarity index 100%
rename from public/ships/lightCone_c.png
rename to public/ships/light_cone_c.png
diff --git a/public/ships/mareImbrium_a.png b/public/ships/mare_imbrium_a.png
similarity index 100%
rename from public/ships/mareImbrium_a.png
rename to public/ships/mare_imbrium_a.png
diff --git a/public/ships/mareImbrium_b.png b/public/ships/mare_imbrium_b.png
similarity index 100%
rename from public/ships/mareImbrium_b.png
rename to public/ships/mare_imbrium_b.png
diff --git a/public/ships/mareNubium_a.png b/public/ships/mare_nubium_a.png
similarity index 100%
rename from public/ships/mareNubium_a.png
rename to public/ships/mare_nubium_a.png
diff --git a/public/ships/mareNubium_b.png b/public/ships/mare_nubium_b.png
similarity index 100%
rename from public/ships/mareNubium_b.png
rename to public/ships/mare_nubium_b.png
diff --git a/public/ships/mareSerenitatis_a.png b/public/ships/mare_serenitatis_a.png
similarity index 100%
rename from public/ships/mareSerenitatis_a.png
rename to public/ships/mare_serenitatis_a.png
diff --git a/public/ships/mareSerenitatis_b.png b/public/ships/mare_serenitatis_b.png
similarity index 100%
rename from public/ships/mareSerenitatis_b.png
rename to public/ships/mare_serenitatis_b.png
diff --git a/public/ships/mareSerenitatis_c.png b/public/ships/mare_serenitatis_c.png
similarity index 100%
rename from public/ships/mareSerenitatis_c.png
rename to public/ships/mare_serenitatis_c.png
diff --git a/public/ships/mareTranquillitatis_a.png b/public/ships/mare_tranquillitatis_a.png
similarity index 100%
rename from public/ships/mareTranquillitatis_a.png
rename to public/ships/mare_tranquillitatis_a.png
diff --git a/public/ships/mareTranquillitatis_b.png b/public/ships/mare_tranquillitatis_b.png
similarity index 100%
rename from public/ships/mareTranquillitatis_b.png
rename to public/ships/mare_tranquillitatis_b.png
diff --git a/public/ships/mareTranquillitatis_c.png b/public/ships/mare_tranquillitatis_c.png
similarity index 100%
rename from public/ships/mareTranquillitatis_c.png
rename to public/ships/mare_tranquillitatis_c.png
diff --git a/public/ships/marshalCrux.png b/public/ships/marshal_crux_a.png
similarity index 100%
rename from public/ships/marshalCrux.png
rename to public/ships/marshal_crux_a.png
diff --git a/public/ships/mistral.png b/public/ships/mistral_a.png
similarity index 100%
rename from public/ships/mistral.png
rename to public/ships/mistral_a.png
diff --git a/public/ships/nebulaChaser_a.png b/public/ships/nebula_chaser_a.png
similarity index 100%
rename from public/ships/nebulaChaser_a.png
rename to public/ships/nebula_chaser_a.png
diff --git a/public/ships/nebulaChaser_b.png b/public/ships/nebula_chaser_b.png
similarity index 100%
rename from public/ships/nebulaChaser_b.png
rename to public/ships/nebula_chaser_b.png
diff --git a/public/ships/nomaM470_a.png b/public/ships/noma_m470_a.png
similarity index 100%
rename from public/ships/nomaM470_a.png
rename to public/ships/noma_m470_a.png
diff --git a/public/ships/nomaM470_b.png b/public/ships/noma_m470_b.png
similarity index 100%
rename from public/ships/nomaM470_b.png
rename to public/ships/noma_m470_b.png
diff --git a/public/ships/nomaM470_c.png b/public/ships/noma_m470_c.png
similarity index 100%
rename from public/ships/nomaM470_c.png
rename to public/ships/noma_m470_c.png
diff --git a/public/ships/redbeast713.png b/public/ships/redbeast_713_a.png
similarity index 100%
rename from public/ships/redbeast713.png
rename to public/ships/redbeast_713_a.png
diff --git a/public/ships/sandrake.png b/public/ships/sandrake_a.png
similarity index 100%
rename from public/ships/sandrake.png
rename to public/ships/sandrake_a.png
diff --git a/public/ships/sc002.png b/public/ships/sc002_a.png
similarity index 100%
rename from public/ships/sc002.png
rename to public/ships/sc002_a.png
diff --git a/public/ships/shield_of_plutus_a.png b/public/ships/shield_of_plutus_a.png
new file mode 100644
index 0000000..9e2ab53
Binary files /dev/null and b/public/ships/shield_of_plutus_a.png differ
diff --git a/public/ships/silentAssassin.png b/public/ships/silent_assassin_a.png
similarity index 100%
rename from public/ships/silentAssassin.png
rename to public/ships/silent_assassin_a.png
diff --git a/public/ships/slevy9.png b/public/ships/slevy_9_a.png
similarity index 100%
rename from public/ships/slevy9.png
rename to public/ships/slevy_9_a.png
diff --git a/public/ships/solarWhale.png b/public/ships/solar_whale_a.png
similarity index 100%
rename from public/ships/solarWhale.png
rename to public/ships/solar_whale_a.png
diff --git a/public/ships/spearOfUranus.png b/public/ships/spear_of_uranus_a.png
similarity index 100%
rename from public/ships/spearOfUranus.png
rename to public/ships/spear_of_uranus_a.png
diff --git a/public/ships/sporeA404.png b/public/ships/spore_a404_a.png
similarity index 100%
rename from public/ships/sporeA404.png
rename to public/ships/spore_a404_a.png
diff --git a/public/ships/st59.png b/public/ships/st59_a.png
similarity index 100%
rename from public/ships/st59.png
rename to public/ships/st59_a.png
diff --git a/public/ships/stingray.png b/public/ships/stingray_a.png
similarity index 100%
rename from public/ships/stingray.png
rename to public/ships/stingray_a.png
diff --git a/public/ships/strixA100.png b/public/ships/strix_a100_a.png
similarity index 100%
rename from public/ships/strixA100.png
rename to public/ships/strix_a100_a.png
diff --git a/public/ships/tempel_i_a.png b/public/ships/tempel_i_a.png
new file mode 100644
index 0000000..17f5a16
Binary files /dev/null and b/public/ships/tempel_i_a.png differ
diff --git a/public/ships/tempel_i_b.png b/public/ships/tempel_i_b.png
new file mode 100644
index 0000000..6de38f0
Binary files /dev/null and b/public/ships/tempel_i_b.png differ
diff --git a/public/ships/thunderboltStar.png b/public/ships/thunderbolt_star_a.png
similarity index 100%
rename from public/ships/thunderboltStar.png
rename to public/ships/thunderbolt_star_a.png
diff --git a/public/ships/vitasA021.png b/public/ships/vitas_a021_a.png
similarity index 100%
rename from public/ships/vitasA021.png
rename to public/ships/vitas_a021_a.png
diff --git a/public/ships/vitasB010.png b/public/ships/vitas_b010_a.png
similarity index 100%
rename from public/ships/vitasB010.png
rename to public/ships/vitas_b010_a.png
diff --git a/public/ships/voidElfin.png b/public/ships/void_elfin_a.png
similarity index 100%
rename from public/ships/voidElfin.png
rename to public/ships/void_elfin_a.png
diff --git a/public/ships/warspite.png b/public/ships/warspite_a.png
similarity index 100%
rename from public/ships/warspite.png
rename to public/ships/warspite_a.png
diff --git a/public/ships/wingedHussar_a.png b/public/ships/winged_hussar_a.png
similarity index 100%
rename from public/ships/wingedHussar_a.png
rename to public/ships/winged_hussar_a.png
diff --git a/public/ships/wingedHussar_b.png b/public/ships/winged_hussar_b.png
similarity index 100%
rename from public/ships/wingedHussar_b.png
rename to public/ships/winged_hussar_b.png
diff --git a/public/ships/wingedHussar_c.png b/public/ships/winged_hussar_c.png
similarity index 100%
rename from public/ships/wingedHussar_c.png
rename to public/ships/winged_hussar_c.png
diff --git a/public/ui/alt/blackOpenBook.svg b/public/ui/alt/blackOpenBook.svg
deleted file mode 100644
index 58b7a86..0000000
--- a/public/ui/alt/blackOpenBook.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/alt/whiteChanges.svg b/public/ui/alt/whiteChanges.svg
deleted file mode 100644
index e41ec96..0000000
--- a/public/ui/alt/whiteChanges.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/alt/whiteCredits.svg b/public/ui/alt/whiteCredits.svg
deleted file mode 100644
index 8cb2920..0000000
--- a/public/ui/alt/whiteCredits.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/alt/whiteDownArrow.svg b/public/ui/alt/whiteDownArrow.svg
deleted file mode 100644
index 3b3ea43..0000000
--- a/public/ui/alt/whiteDownArrow.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/alt/whiteShare.svg b/public/ui/alt/whiteShare.svg
deleted file mode 100644
index a3da202..0000000
--- a/public/ui/alt/whiteShare.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/arrowLeft.svg b/public/ui/arrowLeft.svg
new file mode 100644
index 0000000..07e781c
--- /dev/null
+++ b/public/ui/arrowLeft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/arrowRight.svg b/public/ui/arrowRight.svg
new file mode 100644
index 0000000..46278f5
--- /dev/null
+++ b/public/ui/arrowRight.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/atom.svg b/public/ui/atom.svg
deleted file mode 100644
index 1892407..0000000
--- a/public/ui/atom.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/blueprint.svg b/public/ui/blueprint.svg
deleted file mode 100644
index 2579ee7..0000000
--- a/public/ui/blueprint.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/bpTracker.svg b/public/ui/bpTracker.svg
new file mode 100644
index 0000000..6d9a5e5
--- /dev/null
+++ b/public/ui/bpTracker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/bugFix.svg b/public/ui/bugFix.svg
new file mode 100644
index 0000000..59c05ab
--- /dev/null
+++ b/public/ui/bugFix.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/burger.svg b/public/ui/burger.svg
deleted file mode 100644
index 7145194..0000000
--- a/public/ui/burger.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/changes.svg b/public/ui/changes.svg
deleted file mode 100644
index 726109b..0000000
--- a/public/ui/changes.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/checkmarkCircle.svg b/public/ui/checkmarkCircle.svg
new file mode 100644
index 0000000..6e3b480
--- /dev/null
+++ b/public/ui/checkmarkCircle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/close.svg b/public/ui/close.svg
new file mode 100644
index 0000000..5d783ae
--- /dev/null
+++ b/public/ui/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/colorGenerator.svg b/public/ui/colorGenerator.svg
new file mode 100644
index 0000000..cd70bbe
--- /dev/null
+++ b/public/ui/colorGenerator.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/contact.svg b/public/ui/contact.svg
new file mode 100644
index 0000000..fbd920c
--- /dev/null
+++ b/public/ui/contact.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/contributors.svg b/public/ui/contributors.svg
new file mode 100644
index 0000000..c7c8996
--- /dev/null
+++ b/public/ui/contributors.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/copy.svg b/public/ui/copy.svg
index cd8410d..ef3cb11 100644
--- a/public/ui/copy.svg
+++ b/public/ui/copy.svg
@@ -1,2 +1 @@
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/ui/credits.svg b/public/ui/credits.svg
deleted file mode 100644
index b1a7736..0000000
--- a/public/ui/credits.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/discord_icon.png b/public/ui/discord_icon.png
deleted file mode 100644
index 916e1fc..0000000
Binary files a/public/ui/discord_icon.png and /dev/null differ
diff --git a/public/ui/downArrow.svg b/public/ui/downArrow.svg
deleted file mode 100644
index cd6daa9..0000000
--- a/public/ui/downArrow.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/filter.svg b/public/ui/filter.svg
new file mode 100644
index 0000000..98bbe3c
--- /dev/null
+++ b/public/ui/filter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/fleetBuilder.svg b/public/ui/fleetBuilder.svg
new file mode 100644
index 0000000..d1b0ec1
--- /dev/null
+++ b/public/ui/fleetBuilder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/greenUp.svg b/public/ui/greenUp.svg
deleted file mode 100644
index 31fb892..0000000
--- a/public/ui/greenUp.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/home.svg b/public/ui/home.svg
index b71ca04..203d09c 100644
--- a/public/ui/home.svg
+++ b/public/ui/home.svg
@@ -1,12 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/ui/hourglass.svg b/public/ui/hourglass.svg
new file mode 100644
index 0000000..d4c06b3
--- /dev/null
+++ b/public/ui/hourglass.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/info.svg b/public/ui/info.svg
new file mode 100644
index 0000000..9914150
--- /dev/null
+++ b/public/ui/info.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/key.svg b/public/ui/key.svg
new file mode 100644
index 0000000..65aa885
--- /dev/null
+++ b/public/ui/key.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/leftArrow.svg b/public/ui/leftArrow.svg
deleted file mode 100644
index da03a8a..0000000
--- a/public/ui/leftArrow.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/link.svg b/public/ui/link.svg
new file mode 100644
index 0000000..cf5fb88
--- /dev/null
+++ b/public/ui/link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/load.svg b/public/ui/load.svg
new file mode 100644
index 0000000..51508da
--- /dev/null
+++ b/public/ui/load.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/lock.svg b/public/ui/lock.svg
new file mode 100644
index 0000000..3bfb76e
--- /dev/null
+++ b/public/ui/lock.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/public/ui/mailEditor.svg b/public/ui/mailEditor.svg
new file mode 100644
index 0000000..586956f
--- /dev/null
+++ b/public/ui/mailEditor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/majorRelease.svg b/public/ui/majorRelease.svg
new file mode 100644
index 0000000..5d63116
--- /dev/null
+++ b/public/ui/majorRelease.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/menu.svg b/public/ui/menu.svg
new file mode 100644
index 0000000..0012c74
--- /dev/null
+++ b/public/ui/menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/minorRelease.svg b/public/ui/minorRelease.svg
new file mode 100644
index 0000000..ffcbb4c
--- /dev/null
+++ b/public/ui/minorRelease.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/moduleLibrary.svg b/public/ui/moduleLibrary.svg
new file mode 100644
index 0000000..01c5125
--- /dev/null
+++ b/public/ui/moduleLibrary.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/moon.svg b/public/ui/moon.svg
new file mode 100644
index 0000000..d97084d
--- /dev/null
+++ b/public/ui/moon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/openBook.svg b/public/ui/openBook.svg
deleted file mode 100644
index ef08933..0000000
--- a/public/ui/openBook.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/paint.svg b/public/ui/paint.svg
deleted file mode 100644
index f325a62..0000000
--- a/public/ui/paint.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/pencil.svg b/public/ui/pencil.svg
new file mode 100644
index 0000000..eae0ca2
--- /dev/null
+++ b/public/ui/pencil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/person.svg b/public/ui/person.svg
new file mode 100644
index 0000000..e324de8
--- /dev/null
+++ b/public/ui/person.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/plus.svg b/public/ui/plus.svg
deleted file mode 100644
index a7a2b0e..0000000
--- a/public/ui/plus.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/plusCircle.svg b/public/ui/plusCircle.svg
new file mode 100644
index 0000000..6ec8c38
--- /dev/null
+++ b/public/ui/plusCircle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/question.svg b/public/ui/question.svg
new file mode 100644
index 0000000..2b1c970
--- /dev/null
+++ b/public/ui/question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/radiant.svg b/public/ui/radiant.svg
deleted file mode 100644
index c1a511e..0000000
--- a/public/ui/radiant.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/ui/redDown.svg b/public/ui/redDown.svg
deleted file mode 100644
index 62959f4..0000000
--- a/public/ui/redDown.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/researchAgreement.svg b/public/ui/researchAgreement.svg
new file mode 100644
index 0000000..2f95bec
--- /dev/null
+++ b/public/ui/researchAgreement.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/rightArrow.svg b/public/ui/rightArrow.svg
deleted file mode 100644
index db73c05..0000000
--- a/public/ui/rightArrow.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/save.svg b/public/ui/save.svg
new file mode 100644
index 0000000..9af1dc8
--- /dev/null
+++ b/public/ui/save.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/saved.svg b/public/ui/saved.svg
new file mode 100644
index 0000000..a69daa9
--- /dev/null
+++ b/public/ui/saved.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/scale.svg b/public/ui/scale.svg
deleted file mode 100644
index 4fb0e50..0000000
--- a/public/ui/scale.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/search.svg b/public/ui/search.svg
index 10632d0..1469f9f 100644
--- a/public/ui/search.svg
+++ b/public/ui/search.svg
@@ -1,4 +1 @@
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/ui/settings.svg b/public/ui/settings.svg
new file mode 100644
index 0000000..f9b86a8
--- /dev/null
+++ b/public/ui/settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/share.svg b/public/ui/share.svg
index b16cd2a..145df42 100644
--- a/public/ui/share.svg
+++ b/public/ui/share.svg
@@ -1,5 +1 @@
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/ui/solarSystem.svg b/public/ui/solarSystem.svg
deleted file mode 100644
index d15d366..0000000
--- a/public/ui/solarSystem.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/sort.svg b/public/ui/sort.svg
new file mode 100644
index 0000000..20c9c2e
--- /dev/null
+++ b/public/ui/sort.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/sun.svg b/public/ui/sun.svg
new file mode 100644
index 0000000..0796ec6
--- /dev/null
+++ b/public/ui/sun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/trash.svg b/public/ui/trash.svg
new file mode 100644
index 0000000..6cb4d46
--- /dev/null
+++ b/public/ui/trash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/trophy.svg b/public/ui/trophy.svg
new file mode 100644
index 0000000..d30d129
--- /dev/null
+++ b/public/ui/trophy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/ui/underline.svg b/public/ui/underline.svg
new file mode 100644
index 0000000..04bb471
--- /dev/null
+++ b/public/ui/underline.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/public/ui/wrench.svg b/public/ui/wrench.svg
deleted file mode 100644
index c38d506..0000000
--- a/public/ui/wrench.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/x.svg b/public/ui/x.svg
deleted file mode 100644
index 90b813c..0000000
--- a/public/ui/x.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/public/ui/yellowLine.svg b/public/ui/yellowLine.svg
deleted file mode 100644
index bc46f12..0000000
--- a/public/ui/yellowLine.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/weapons/stats/antiair.svg b/public/weapons/stats/antiair.svg
new file mode 100644
index 0000000..35e31e1
--- /dev/null
+++ b/public/weapons/stats/antiair.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/weapons/stats/antiaircraft.svg b/public/weapons/stats/antiaircraft.svg
deleted file mode 100644
index 34b76f9..0000000
--- a/public/weapons/stats/antiaircraft.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/weapons/stats/antiship.svg b/public/weapons/stats/antiship.svg
index 395c745..671cb73 100644
--- a/public/weapons/stats/antiship.svg
+++ b/public/weapons/stats/antiship.svg
@@ -1,6 +1,14 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/weapons/stats/armor.svg b/public/weapons/stats/armor.svg
index f53f535..90c33f6 100644
--- a/public/weapons/stats/armor.svg
+++ b/public/weapons/stats/armor.svg
@@ -1,7 +1,7 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/public/weapons/stats/energyShield.svg b/public/weapons/stats/energyShield.svg
index bfa6900..44fb622 100644
--- a/public/weapons/stats/energyShield.svg
+++ b/public/weapons/stats/energyShield.svg
@@ -1,10 +1,10 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/public/weapons/stats/extraHp.svg b/public/weapons/stats/extraHp.svg
new file mode 100644
index 0000000..c4512a4
--- /dev/null
+++ b/public/weapons/stats/extraHp.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/public/weapons/stats/hp.svg b/public/weapons/stats/hp.svg
deleted file mode 100644
index ce015ca..0000000
--- a/public/weapons/stats/hp.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/public/weapons/stats/hpRecovery.svg b/public/weapons/stats/hpRecovery.svg
new file mode 100644
index 0000000..48f7172
--- /dev/null
+++ b/public/weapons/stats/hpRecovery.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/public/weapons/stats/repair.svg b/public/weapons/stats/repair.svg
deleted file mode 100644
index bb40ad1..0000000
--- a/public/weapons/stats/repair.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/public/weapons/stats/siege.svg b/public/weapons/stats/siege.svg
index e3d0e5d..06394fa 100644
--- a/public/weapons/stats/siege.svg
+++ b/public/weapons/stats/siege.svg
@@ -1,6 +1,13 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/weapons/types/alpha.svg b/public/weapons/types/alpha.svg
index a56787d..33573dc 100644
--- a/public/weapons/types/alpha.svg
+++ b/public/weapons/types/alpha.svg
@@ -1,6 +1,5 @@
-
-
-
-
+
+
+
diff --git a/public/weapons/types/attacksPerRound.svg b/public/weapons/types/attacksPerRound.svg
new file mode 100644
index 0000000..9b6f709
--- /dev/null
+++ b/public/weapons/types/attacksPerRound.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/public/weapons/types/damageType.svg b/public/weapons/types/damageType.svg
index 5738c82..a52eb50 100644
--- a/public/weapons/types/damageType.svg
+++ b/public/weapons/types/damageType.svg
@@ -1,6 +1,13 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/weapons/types/duration.svg b/public/weapons/types/duration.svg
new file mode 100644
index 0000000..ed221ad
--- /dev/null
+++ b/public/weapons/types/duration.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/public/weapons/types/hpRecovery.svg b/public/weapons/types/hpRecovery.svg
new file mode 100644
index 0000000..48f7172
--- /dev/null
+++ b/public/weapons/types/hpRecovery.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/public/weapons/types/lockon.svg b/public/weapons/types/lockon.svg
deleted file mode 100644
index 338a663..0000000
--- a/public/weapons/types/lockon.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/public/weapons/types/lockonEfficiency.svg b/public/weapons/types/lockonEfficiency.svg
new file mode 100644
index 0000000..ff48213
--- /dev/null
+++ b/public/weapons/types/lockonEfficiency.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/weapons/types/lockonTime.svg b/public/weapons/types/lockonTime.svg
new file mode 100644
index 0000000..e42e931
--- /dev/null
+++ b/public/weapons/types/lockonTime.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/public/weapons/types/operationCount.svg b/public/weapons/types/operationCount.svg
new file mode 100644
index 0000000..20649aa
--- /dev/null
+++ b/public/weapons/types/operationCount.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/public/weapons/types/target.svg b/public/weapons/types/target.svg
index 10569af..df4a4e8 100644
--- a/public/weapons/types/target.svg
+++ b/public/weapons/types/target.svg
@@ -1,5 +1,9 @@
-
-
-
+
+
+
+
+
+
+
diff --git a/server/api/createUser.ts b/server/api/createUser.ts
new file mode 100644
index 0000000..e9885bf
--- /dev/null
+++ b/server/api/createUser.ts
@@ -0,0 +1,45 @@
+import { getRandomCharacters } from "~/utils/functions";
+import { origins } from "~/utils/general";
+import { UserData } from "~/utils/types";
+import admin from "firebase-admin";
+
+// probably dont need crypto or hashing for uid and access token, whos tryna hack someones blueprints 💀💀
+async function generateUid() {
+ const db = admin.firestore();
+ const uid = getRandomCharacters(12, "numeric");
+
+ const docData = await db.collection("users").doc(uid).get();
+ if (docData.exists) return await generateUid();
+
+ return uid;
+}
+
+export default defineEventHandler(async () => {
+ const config = useRuntimeConfig();
+ const db = admin.firestore();
+
+ let data: UserData | null = null;
+
+ try {
+ const uid = await generateUid();
+ const accessToken = getRandomCharacters(50);
+
+ data = {
+ uid,
+ accessToken,
+ createdAt: new Date().toISOString().slice(0, 10),
+ lastLoggedIn: new Date().toISOString().slice(0, 10),
+ savedMails: [],
+ blueprints: [],
+ bpLastSaved: null,
+ origin: origins[config.public.baseUrl] ?? "U"
+ };
+
+ await db.collection("users").doc(uid).create(data);
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null };
+ }
+
+ return { success: true, error: null, content: data };
+});
diff --git a/server/api/data/ships.ts b/server/api/data/ships.ts
new file mode 100644
index 0000000..60c44bf
--- /dev/null
+++ b/server/api/data/ships.ts
@@ -0,0 +1,9073 @@
+import { AllShip } from "~/utils/ships";
+
+export default defineEventHandler(() => {
+ const difficulty: Readonly
> = {
+ "Jupiter Industry": 3.5,
+ "NOMA Shipping": 3.5,
+ Antonios: 4,
+ "Dawn Accord": 2.5,
+ "Outstanding Firepower": 5.5,
+ "Sustained Combat": 5,
+ "Strategy & Support": 5.5,
+ "Fighter & Corvette": 6,
+ "Projectile Weapon": 4.5,
+ "Direct-Fire Weapon": 4
+ };
+
+ const data: readonly AllShip[] = [
+ {
+ id: 0,
+ name: "AT021",
+ title: "Pulse Attacker",
+ img: "/ships/at021_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Pulse Cannon Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 15,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 1,
+ name: "AT021",
+ title: "Tactical Attacker",
+ img: "/ships/at021_b.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "B",
+ variantName: "Interference Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 15,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 2,
+ name: "AT021",
+ title: "Heavy Attacker",
+ img: "/ships/at021_c.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "C",
+ variantName: "Multi-Role Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 15,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 3,
+ name: "B192 Newland",
+ title: "Heavy Attacker",
+ img: "/ships/b192_newland_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Multi-Role Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 4,
+ name: "BR050",
+ title: "Standard Bomber",
+ img: "/ships/br050_a.png",
+ type: "Fighter",
+ fighterType: "Large",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 2
+ },
+ {
+ id: 5,
+ name: "BR050",
+ title: "Multi-Role Bomber",
+ img: "/ships/br050_b.png",
+ type: "Fighter",
+ fighterType: "Large",
+ variant: "B",
+ variantName: "Defense Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Sustained Combat", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 2
+ },
+ {
+ id: 6,
+ name: "BR050",
+ title: "Torpedo Bomber",
+ img: "/ships/br050_c.png",
+ type: "Fighter",
+ fighterType: "Large",
+ variant: "C",
+ variantName: "Torpedo Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 2
+ },
+ {
+ id: 7,
+ name: "Balancer Anderson SC020",
+ title: "Scout",
+ img: "/ships/balancer_anderson_sc020_a.png",
+ type: "Fighter",
+ fighterType: "Small",
+ variant: "A",
+ variantName: "Interference Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Sustained Combat", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 5
+ },
+ {
+ id: 8,
+ name: "Bullfrog",
+ title: "Dual-Purpose Bomber",
+ img: "/ships/bullfrog_a.png",
+ type: "Fighter",
+ fighterType: "Large",
+ variant: "A",
+ variantName: "Siege Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 2
+ },
+ {
+ id: 9,
+ name: "Hayreddin's Loyal",
+ title: "Pulsar Fighter",
+ img: "/ships/hayreddins_loyal_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Special Type",
+ hasVariants: false,
+ manufacturer: "Empty",
+ direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 8,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 10,
+ name: "Janbiya Aer410",
+ title: "Assault Attacker",
+ img: "/ships/janbiya_aer410_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 11,
+ name: "Mistral",
+ title: "Combat Attacker",
+ img: "/ships/mistral_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 4
+ },
+ {
+ id: 12,
+ name: "SC002",
+ title: "Quantum Scout",
+ img: "/ships/sc002_a.png",
+ type: "Fighter",
+ fighterType: "Small",
+ variant: "A",
+ variantName: "Generic Type",
+ hasVariants: false,
+ manufacturer: "Dawn Accord",
+ direction: ["Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 15,
+ fightersPerSquadron: 5
+ },
+ {
+ id: 13,
+ name: "Sandrake",
+ title: "Atmospheric Interceptor",
+ img: "/ships/sandrake_a.png",
+ type: "Fighter",
+ fighterType: "Small",
+ variant: "A",
+ variantName: "Dual-Purpose Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 5
+ },
+ {
+ id: 14,
+ name: "Spore A404",
+ title: "Light Fighter",
+ img: "/ships/spore_a404_a.png",
+ type: "Fighter",
+ fighterType: "Small",
+ variant: "A",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 5
+ },
+ {
+ id: 15,
+ name: "Stingray",
+ title: "Torpedo Bomber",
+ img: "/ships/stingray_a.png",
+ type: "Fighter",
+ fighterType: "Large",
+ variant: "A",
+ variantName: "Stealth Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 2
+ },
+ {
+ id: 16,
+ name: "Strix A100",
+ title: "Joint Attacker",
+ img: "/ships/strix_a100_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 17,
+ name: "Vitas A021",
+ title: "Heavy Attacker",
+ img: "/ships/vitas_a021_a.png",
+ type: "Fighter",
+ fighterType: "Medium",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 3
+ },
+ {
+ id: 18,
+ name: "Vitas B010",
+ title: "Bomber",
+ img: "/ships/vitas_b010_a.png",
+ type: "Fighter",
+ fighterType: "Large",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 1,
+ serviceLimit: 10,
+ fightersPerSquadron: 2
+ },
+ {
+ id: 19,
+ name: "CV-II003",
+ title: "Light Corvette",
+ img: "/ships/cvii003_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Multi-Role Type",
+ hasVariants: false,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 15
+ },
+ {
+ id: 20,
+ name: "CV-M011",
+ title: "Heavy Missile Corvette",
+ img: "/ships/cvm011_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Missile Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 15
+ },
+ {
+ id: 21,
+ name: "CV-M011",
+ title: "Heavy Cannon Corvette",
+ img: "/ships/cvm011_b.png",
+ type: "Corvette",
+ variant: "B",
+ variantName: "Cannon Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 15
+ },
+ {
+ id: 22,
+ name: "CV-M011",
+ title: "High-Speed Missile Corvette",
+ img: "/ships/cvm011_c.png",
+ type: "Corvette",
+ variant: "C",
+ variantName: "High-Speed Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 15
+ },
+ {
+ id: 23,
+ name: "CV-T800",
+ title: "Pulsar Corvette",
+ img: "/ships/cvt800_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: false,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Strategy & Support", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 15
+ },
+ {
+ id: 24,
+ name: "Cellular Defender",
+ title: "Heavy Torpedo Corvette",
+ img: "/ships/cellular_defender_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Multi-Role Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 25,
+ name: "Nebula Chaser",
+ title: "Heavy Corvette",
+ img: "/ships/nebula_chaser_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Ballistic Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 26,
+ name: "Nebula Chaser",
+ title: "Pulsar Corvette",
+ img: "/ships/nebula_chaser_b.png",
+ type: "Corvette",
+ variant: "B",
+ variantName: "Pulse Cannon Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 27,
+ name: "RedBeast 7-13",
+ title: "Missile Corvette",
+ img: "/ships/redbeast_713_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Offensive Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 28,
+ name: "S-Levy 9",
+ title: "Heavy Torpedo Escort Corvette",
+ img: "/ships/slevy_9_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 29,
+ name: "Hale-Bopp",
+ title: "System Support Corvette",
+ img: "/ships/halebopp_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Multi-Role Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Empty",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 30,
+ name: "Hale-Bopp",
+ title: "Repair Support Corvette",
+ img: "/ships/halebopp_b.png",
+ type: "Corvette",
+ variant: "B",
+ variantName: "Dock Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Empty",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 31,
+ name: "Silent Assassin",
+ title: "Armored Corvette",
+ img: "/ships/silent_assassin_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "High-Speed Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Fighter & Corvette"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 32,
+ name: "Tempel I",
+ title: "Information Corvette",
+ img: "/ships/tempel_i_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Interference Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Empty",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 33,
+ name: "Tempel I",
+ title: "Alert Corvette",
+ img: "/ships/tempel_i_b.png",
+ type: "Corvette",
+ variant: "B",
+ variantName: "Alert Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support", "Fighter & Corvette"],
+ scope: "Empty",
+ weight: 5,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 34,
+ name: "Void Elfin",
+ title: "Stealth Missile Corvette",
+ img: "/ships/void_elfin_a.png",
+ type: "Corvette",
+ variant: "A",
+ variantName: "Offensive Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 2,
+ serviceLimit: 10
+ },
+ {
+ id: 35,
+ name: "Carilion",
+ title: "Recon Frigate",
+ img: "/ships/carilion_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Recon Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Sustained Combat", "Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 36,
+ name: "Carilion",
+ title: "Heavy Cannon Frigate",
+ img: "/ships/carilion_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Heavy Cannon Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 37,
+ name: "Carilion",
+ title: "Special Frigate",
+ img: "/ships/carilion_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Special Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 38,
+ name: "FG300",
+ title: "Multi-Role Frigate",
+ img: "/ships/fg300_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Multi-Role Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 3,
+ serviceLimit: 15
+ },
+ {
+ id: 39,
+ name: "FG300",
+ title: "Armored Frigate",
+ img: "/ships/fg300_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Armored Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 3,
+ serviceLimit: 15
+ },
+ {
+ id: 40,
+ name: "FG300",
+ title: "Recon Frigate",
+ img: "/ships/fg300_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Recon Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 3,
+ serviceLimit: 15
+ },
+ {
+ id: 41,
+ name: "Inostrancevia",
+ title: "Defensive Frigate",
+ img: "/ships/inostrancevia_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Defense Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Empty"],
+ scope: "Empty",
+ weight: 5,
+ row: "Front",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 42,
+ name: "Inostrancevia",
+ title: "Assault Frigate",
+ img: "/ships/inostrancevia_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Offensive Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Empty",
+ weight: 5,
+ row: "Front",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 43,
+ name: "Inostrancevia",
+ title: "Onslaught Frigate",
+ img: "/ships/inostrancevia_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Special Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Empty",
+ weight: 5,
+ row: "Front",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 44,
+ name: "Mare Imbrium",
+ title: "Assault Frigate",
+ img: "/ships/mare_imbrium_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Railgun Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 45,
+ name: "Mare Imbrium",
+ title: "Experimental Pulse Cannon Frigate",
+ img: "/ships/mare_imbrium_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Pulse Cannon Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 46,
+ name: "Mare Nubium",
+ title: "Light Landing Ship",
+ img: "/ships/mare_nubium_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Assault Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 47,
+ name: "Mare Nubium",
+ title: "Anti-Aircraft Frigate",
+ img: "/ships/mare_nubium_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Empty"],
+ scope: "Empty",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 48,
+ name: "Mare Serenitatis",
+ title: "Heavy Frigate",
+ img: "/ships/mare_serenitatis_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 49,
+ name: "Mare Serenitatis",
+ title: "Missile Frigate",
+ img: "/ships/mare_serenitatis_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Missile Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Sustained Combat"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 50,
+ name: "Mare Serenitatis",
+ title: "Anti-Aircraft Frigate",
+ img: "/ships/mare_serenitatis_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Sustained Combat"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 51,
+ name: "Mare Tranquillitatis",
+ title: "Missile Frigate",
+ img: "/ships/mare_tranquillitatis_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Integrated Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 52,
+ name: "Mare Tranquillitatis",
+ title: "Pulse Cannon Frigate",
+ img: "/ships/mare_tranquillitatis_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Pulse Cannon Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Empty"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 53,
+ name: "Mare Tranquillitatis",
+ title: "Interceptor Frigate",
+ img: "/ships/mare_tranquillitatis_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 54,
+ name: "NOMA M470",
+ title: "Heavy Landing Ship",
+ img: "/ships/noma_m470_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Siege Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 55,
+ name: "NOMA M470",
+ title: "Support Frigate",
+ img: "/ships/noma_m470_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 56,
+ name: "NOMA M470",
+ title: "Anti-Aircraft Frigate",
+ img: "/ships/noma_m470_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 57,
+ name: "Reliat",
+ title: "Rapid Torpedo Frigate",
+ img: "/ships/reliat_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 58,
+ name: "Reliat",
+ title: "Tactical Torpedo Frigate",
+ img: "/ships/reliat_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Torpedo Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 59,
+ name: "Reliat",
+ title: "Stealth Frigate",
+ img: "/ships/reliat_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Stealth Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 4,
+ serviceLimit: 10
+ },
+ {
+ id: 60,
+ name: "Ruby",
+ title: "Heavy Railgun Frigate",
+ img: "/ships/ruby_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Railgun Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 61,
+ name: "Ruby",
+ title: "Experimental Ion Cannon Frigate",
+ img: "/ships/ruby_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Ion Cannon Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 62,
+ name: "Ruby",
+ title: "Defensive Frigate",
+ img: "/ships/ruby_c.png",
+ type: "Frigate",
+ variant: "C",
+ variantName: "Defensive Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Sustained Combat"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 5,
+ serviceLimit: 10
+ },
+ {
+ id: 63,
+ name: "XenoStinger",
+ title: "Tactical Frigate",
+ img: "/ships/xenostinger_a.png",
+ type: "Frigate",
+ variant: "A",
+ variantName: "Special Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Empty",
+ weight: 5,
+ row: "Back",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 64,
+ name: "XenoStinger",
+ title: "Defensive Frigate",
+ img: "/ships/xenostinger_b.png",
+ type: "Frigate",
+ variant: "B",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 5,
+ row: "Back",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 65,
+ name: "AC721",
+ title: "Heavy Logistics Destroyer",
+ img: "/ships/ac721_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Generic Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 8,
+ serviceLimit: 15
+ },
+ {
+ id: 66,
+ name: "AC721",
+ title: "Heavy Missile Destroyer",
+ img: "/ships/ac721_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Missile Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 8,
+ serviceLimit: 15
+ },
+ {
+ id: 67,
+ name: "AC721",
+ title: "Heavy Dual-Purpose Assault Ship",
+ img: "/ships/ac721_d.png",
+ type: "Destroyer",
+ variant: "D",
+ variantName: "Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 12,
+ serviceLimit: 15,
+ corvetteCapacity: 2
+ },
+ {
+ id: 68,
+ name: "Aldabra",
+ title: "Heavy Cannon Destroyer",
+ img: "/ships/aldabra_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Generic Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 69,
+ name: "Aldabra",
+ title: "Heavy Assault Destroyer",
+ img: "/ships/aldabra_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Armored Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 70,
+ name: "Ceres",
+ title: "Aircraft Destroyer",
+ img: "/ships/ceres_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 8,
+ serviceLimit: 10,
+ mediumFighterCapacity: 2
+ },
+ {
+ id: 71,
+ name: "Ceres",
+ title: "Support Destroyer",
+ img: "/ships/ceres_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 72,
+ name: "Ceres",
+ title: "Tactical Destroyer",
+ img: "/ships/ceres_c.png",
+ type: "Destroyer",
+ variant: "C",
+ variantName: "Tactical Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 73,
+ name: "Eris I",
+ title: "Maneuver Assault Destroyer",
+ img: "/ships/eris_i_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Cannon Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 7,
+ serviceLimit: 10
+ },
+ {
+ id: 74,
+ name: "Eris I",
+ title: "Heavy Cannon Destroyer",
+ img: "/ships/eris_i_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Heavy Cannon Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 9,
+ serviceLimit: 10
+ },
+ {
+ id: 75,
+ name: "Eris I",
+ title: "Armored Destroyer",
+ img: "/ships/eris_i_c.png",
+ type: "Destroyer",
+ variant: "C",
+ variantName: "Armored Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 7,
+ serviceLimit: 10
+ },
+ {
+ id: 76,
+ name: "Guardian",
+ title: "Support Destroyer",
+ img: "/ships/guardian_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Empty"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 9,
+ serviceLimit: 10
+ },
+ {
+ id: 77,
+ name: "Guardian",
+ title: "Dual-Purpose Assault Ship",
+ img: "/ships/guardian_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Dual-Purpose Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Back",
+ commandPoints: 14,
+ serviceLimit: 10,
+ corvetteCapacity: 2
+ },
+ {
+ id: 78,
+ name: "Guardian",
+ title: "Experimental Pulse Assault Ship",
+ img: "/ships/guardian_c.png",
+ type: "Destroyer",
+ variant: "C",
+ variantName: "Pulse Cannon Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 9,
+ serviceLimit: 10
+ },
+ {
+ id: 79,
+ name: "Quaoar",
+ title: "Railgun Destroyer",
+ img: "/ships/quaoar_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Railgun Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 80,
+ name: "Quaoar",
+ title: "Torpedo Destroyer",
+ img: "/ships/quaoar_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Torpedo Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 81,
+ name: "Taurus",
+ title: "Pulse Cannon Destroyer",
+ img: "/ships/taurus_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Offensive Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 11,
+ serviceLimit: 10
+ },
+ {
+ id: 82,
+ name: "Taurus",
+ title: "Assault Destroyer",
+ img: "/ships/taurus_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Assault Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 11,
+ serviceLimit: 10
+ },
+ {
+ id: 83,
+ name: "Taurus",
+ title: "Defensive Destroyer",
+ img: "/ships/taurus_c.png",
+ type: "Destroyer",
+ variant: "C",
+ variantName: "Defensive Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Sustained Combat", "Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 8,
+ serviceLimit: 10
+ },
+ {
+ id: 84,
+ name: "Tundra",
+ title: "Tactical Destroyer",
+ img: "/ships/tundra_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 9,
+ serviceLimit: 10
+ },
+ {
+ id: 85,
+ name: "Tundra",
+ title: "Aircraft Destroyer",
+ img: "/ships/tundra_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Aircraft Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 9,
+ serviceLimit: 10,
+ mediumFighterCapacity: 2
+ },
+ {
+ id: 86,
+ name: "Winged Hussar",
+ title: "Light Missile Destroyer",
+ img: "/ships/winged_hussar_a.png",
+ type: "Destroyer",
+ variant: "A",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 87,
+ name: "Winged Hussar",
+ title: "Integrated Missile Destroyer",
+ img: "/ships/winged_hussar_b.png",
+ type: "Destroyer",
+ variant: "B",
+ variantName: "Integrated Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 88,
+ name: "Winged Hussar",
+ title: "Area-Denial Anti-Aircraft Destroyer",
+ img: "/ships/winged_hussar_c.png",
+ type: "Destroyer",
+ variant: "C",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Sustained Combat", "Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 6,
+ serviceLimit: 10
+ },
+ {
+ id: 89,
+ name: "CAS066",
+ title: "Generic Cruiser",
+ img: "/ships/cas066_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Integrated Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Front",
+ commandPoints: 18,
+ serviceLimit: 12
+ },
+ {
+ id: 90,
+ name: "CAS066",
+ title: "Artillery Cruiser",
+ img: "/ships/cas066_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Artillery Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 18,
+ serviceLimit: 12
+ },
+ {
+ id: 91,
+ name: "CAS066",
+ title: "Aircraft Cruiser",
+ img: "/ships/cas066_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Empty"],
+ scope: "Empty",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 18,
+ serviceLimit: 12,
+ corvetteCapacity: 2
+ },
+ {
+ id: 92,
+ name: "CAS066",
+ title: "Auxiliary Cruiser",
+ img: "/ships/cas066_d.png",
+ type: "Cruiser",
+ variant: "D",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 18,
+ serviceLimit: 12
+ },
+ {
+ id: 93,
+ name: "Callisto",
+ title: "Cluster Torpedo Raid Ship",
+ img: "/ships/callisto_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Torpedo Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 2,
+ row: "Back",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 94,
+ name: "Callisto",
+ title: "Heavy Torpedo Raid Ship",
+ img: "/ships/callisto_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 2,
+ row: "Back",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 95,
+ name: "Callisto",
+ title: "Heavy UAV Cruiser",
+ img: "/ships/callisto_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Empty"],
+ scope: "Projectile Weapon",
+ weight: 2,
+ row: "Back",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 96,
+ name: "Chimera",
+ title: "Heavy Cruiser",
+ img: "/ships/chimera_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Ballistic Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 97,
+ name: "Chimera",
+ title: "Cannon Cruiser",
+ img: "/ships/chimera_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Heavy Cannon Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 98,
+ name: "Chimera",
+ title: "Defensive Cruiser",
+ img: "/ships/chimera_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Defensive Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 99,
+ name: "Conamara Chaos",
+ title: "Railgun Cruiser",
+ img: "/ships/conamara_chaos_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Railgun Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Back",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 100,
+ name: "Conamara Chaos",
+ title: "High-Speed Plasma Cruiser",
+ img: "/ships/conamara_chaos_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Plasma Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Back",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 101,
+ name: "Io",
+ title: "Assault Ion Cannon Cruiser",
+ img: "/ships/io_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Ion Cannon Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 102,
+ name: "Io",
+ title: "High-Speed Ion Cannon Cruiser",
+ img: "/ships/io_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 103,
+ name: "Io",
+ title: "Siege Ion Cannon Cruiser",
+ img: "/ships/io_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Siege Type",
+ hasVariants: true,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Front",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 104,
+ name: "Jaeger",
+ title: "Heavy Aircraft Cruiser",
+ img: "/ships/jaeger_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Support Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 5,
+ row: "Back",
+ commandPoints: 20,
+ serviceLimit: 8,
+ corvetteCapacity: 4
+ },
+ {
+ id: 105,
+ name: "Jaeger",
+ title: "Heavy Cannon Cruiser",
+ img: "/ships/jaeger_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Anti-Ship Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Back",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 106,
+ name: "KCCPV2.0",
+ title: "Light Attack Cruiser",
+ img: "/ships/kccpv20_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Integrated Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower", "Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 16,
+ serviceLimit: 12
+ },
+ {
+ id: 107,
+ name: "KCCPV2.0",
+ title: "Light Pulse Attack Cruiser",
+ img: "/ships/kccpv20_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Pulse Cannon Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 16,
+ serviceLimit: 12
+ },
+ {
+ id: 108,
+ name: "KCCPV2.0",
+ title: "Light Railgun Cruiser",
+ img: "/ships/kccpv20_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Railgun Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Empty"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Middle",
+ commandPoints: 16,
+ serviceLimit: 12
+ },
+ {
+ id: 109,
+ name: "KCCPV2.0",
+ title: "Light Aircraft Cruiser",
+ img: "/ships/kccpv20_d.png",
+ type: "Cruiser",
+ variant: "D",
+ variantName: "Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Dawn Accord",
+ direction: ["Empty"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 16,
+ serviceLimit: 12,
+ largeFighterCapacity: 2
+ },
+ {
+ id: 110,
+ name: "Light Cone",
+ title: "Multi-Role Missile Cruiser Cruiser",
+ img: "/ships/light_cone_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Generic Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Empty"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 111,
+ name: "Light Cone",
+ title: "Area-Denial Anti-Aircraft Cruiser",
+ img: "/ships/light_cone_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 112,
+ name: "Light Cone",
+ title: "Offensive Missile Cruiser",
+ img: "/ships/light_cone_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Assault Type",
+ hasVariants: true,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower"],
+ scope: "Projectile Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 20,
+ serviceLimit: 8
+ },
+ {
+ id: 113,
+ name: "Ranger",
+ title: "Comprehensive Warfare Cruiser",
+ img: "/ships/ranger_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Integrated Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 10,
+ row: "Back",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 114,
+ name: "Ranger",
+ title: "Heavy Ion Cannon Cruiser",
+ img: "/ships/ranger_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Ion Cannon Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Back",
+ commandPoints: 18,
+ serviceLimit: 8
+ },
+ {
+ id: 115,
+ name: "Predator",
+ title: "Aircraft Cruiser",
+ img: "/ships/predator_a.png",
+ type: "Cruiser",
+ variant: "A",
+ variantName: "Generic Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 18,
+ serviceLimit: 8,
+ largeFighterCapacity: 4
+ },
+ {
+ id: 116,
+ name: "Predator",
+ title: "Tactical Aircraft Cruiser",
+ img: "/ships/predator_b.png",
+ type: "Cruiser",
+ variant: "B",
+ variantName: "Tactical Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 18,
+ serviceLimit: 8,
+ largeFighterCapacity: 4
+ },
+ {
+ id: 117,
+ name: "Predator",
+ title: "Anti-Aircraft Cruiser",
+ img: "/ships/predator_c.png",
+ type: "Cruiser",
+ variant: "C",
+ variantName: "Anti-Aircraft Type",
+ hasVariants: true,
+ manufacturer: "Antonios",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 10,
+ row: "Back",
+ commandPoints: 18,
+ serviceLimit: 8,
+ largeFighterCapacity: 4
+ },
+ {
+ id: 118,
+ name: "Constantine the Great",
+ title: "Multi-Role Battlecruiser",
+ img: "/ships/constantine_the_great_a.png",
+ type: "Battlecruiser",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Middle",
+ commandPoints: 35,
+ serviceLimit: 6,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `"Gamma Storm" Ion Attack System`,
+ default: true,
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 9000,
+ antiair: null,
+ siege: 1890,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `CI-2x700T "Helium Flash"`,
+ name: `Dual-Gun Super-Heavy Ion Turret`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 400,
+ attributes: null,
+ stats: {
+ damageFrequency: 3,
+ cooldown: 10,
+ lockOnTime: 6,
+ duration: 6,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ],
+ damage: 9000
+ },
+ siege: {
+ position: 2,
+ damage: 1890
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `"Gamma Storm" Projectile Attack System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 19885,
+ antiair: null,
+ siege: 1478,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `CI-2x600T "Gamma Storm"`,
+ name: `Energy Torpedo Launching System`,
+ damageType: "Energy",
+ target: "Large Ship",
+ alpha: 1740,
+ lockonEfficiency: 10,
+ attributes: ["Crit"],
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 10.5,
+ lockOnTime: 6,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 19885
+ },
+ siege: {
+ position: 2,
+ damage: 1478
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `"Gamma Storm" Projectile Weapon System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 23717,
+ antiair: null,
+ siege: 1920,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `CM-8x608A "Gamma Storm"`,
+ name: `Generic Missile Launching System`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 850,
+ attributes: null,
+ stats: {
+ duration: 8,
+ attacksPerRound: [1, 8],
+ cooldown: 26,
+ lockOnTime: 6,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 23717
+ },
+ siege: {
+ position: 2,
+ damage: 1920
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `"Gamma Storm" Projectile Weapon System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 29393,
+ antiair: 1163,
+ siege: 2287,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `CM-8x608 "Gamma Storm"`,
+ name: `Pulse-Energy Missile Launching System`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 700,
+ attributes: null,
+ stats: {
+ duration: 12,
+ attacksPerRound: [1, 8],
+ cooldown: 25,
+ lockOnTime: 6,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 19978
+ },
+ siege: {
+ position: 2,
+ damage: 1997
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: "CM-12x550",
+ name: `Dodeca-Fire Anti-Ship Missile System`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 350,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 12,
+ attacksPerRound: [1, 12],
+ cooldown: 40,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 9415
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 1163
+ },
+ siege: {
+ position: 3,
+ damage: 290
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Generic Battery System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 10628,
+ antiair: 270,
+ siege: 1461,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `CG-1350`,
+ name: `350mm Dual-Cannon Anti-Ship Battery`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 250,
+ attributes: null,
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 7,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 8228
+ },
+ siege: {
+ position: 2,
+ damage: 1371
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `CG-1160B`,
+ name: `Generic Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 50,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 2400
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 270
+ },
+ siege: {
+ position: 3,
+ damage: 90
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B2",
+ name: `Pulse Anti-Aircraft System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 3465,
+ antiair: 1365,
+ siege: null,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `CP-3x220`,
+ name: `Triple-Fire Anti-Aircraft Pulse`,
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 40,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [3, 1],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 3465
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 950
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `CP-120`,
+ name: `Anti-Missile Pulse Array`,
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 40,
+ attributes: ["Interception Capability", "Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 2,
+ lockOnTime: 3,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 415
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B3",
+ name: `Anti-Aircraft Missile System`,
+ sourcedFrom: ["Windserpent", "The Enlightened"],
+ stats: {
+ type: "weapon",
+ antiship: 2400,
+ antiair: 1548,
+ siege: null,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK2-CM-4x200B "Storm"`,
+ name: `Missile Launcher Nest`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 35,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Cycle", "Anti-Aircraft Support"],
+ stats: {
+ duration: 2,
+ attacksPerRound: [1, 4],
+ cooldown: 6,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 1500,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 1080,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `CM-2x188B`,
+ name: `Missile Launcher Array`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 25,
+ attributes: ["Interception Capability", "Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 2,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 900,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 468,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "C1",
+ name: `Additional Energy System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `RIT-650`,
+ name: `Energy Compression Device`,
+ attributes: ["Increase Energy Weapon Damage"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C2",
+ name: `Aircraft Module`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CBF-200`,
+ name: `Medium Hanger`,
+ hanger: "Medium Fighter",
+ capacity: 1,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C3",
+ name: `Recon UAV System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 3,
+ title: "CIT-1",
+ name: `Fire-Control Spotter UAV Hanger`,
+ hanger: "Spotter UAV",
+ capacity: 3,
+ attributes: ["Ship Calibration Support"],
+ stats: {
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 10,
+ lockOnTime: 3,
+ targetPriority: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D1",
+ name: `Short-Range Anti-Aircraft System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 792,
+ siege: null,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `CM-2x45B`,
+ name: `Short-Range Anti-Aircraft Missile`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 35,
+ attributes: ["Anti-Aircraft Critical Strike", "Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 1,
+ attacksPerRound: [1, 2],
+ cooldown: 2,
+ lockOnTime: 3,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 792
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "D2",
+ name: `Targeted Protection System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: "ASM-220",
+ name: `Critical-System Reinforced Armor`,
+ attributes: ["Reduce System Crit Damage Taken"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "D3",
+ name: `Damage Control System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hpRecovery: 4800,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 4,
+ title: "AST-50",
+ name: `Damage Monitoring System`,
+ attributes: null
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 119,
+ name: "Eternal Storm",
+ title: "Attack Battlecruiser",
+ img: "/ships/eternal_storm_a.png",
+ type: "Battlecruiser",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Middle",
+ commandPoints: 32,
+ serviceLimit: 6,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `"Viggen" Ion Generation System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 20000,
+ antiair: null,
+ siege: 4200,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `AI-900A "Viggen"`,
+ name: `Ion Cannon`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1200,
+ attributes: null,
+ stats: {
+ duration: 8,
+ cooldown: 10,
+ damageFrequency: 5,
+ lockOnTime: 6,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 20000
+ },
+ siege: {
+ position: 2,
+ damage: 4200
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `Experimental Plasma Caster`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 23538,
+ antiair: 2824,
+ siege: 4236,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `AIM-850T`,
+ name: `Plasma Caster`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: 10,
+ alpha: 850,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 20,
+ attacksPerRound: [1, 6],
+ cooldown: 6,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"],
+ [3, "Destroyer"],
+ [3, "Frigate"]
+ ],
+ damage: 23538
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [4, "Corvette"],
+ [5, "Fighter"]
+ ],
+ damage: 2824
+ },
+ siege: {
+ position: 3,
+ damage: 4236
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `"Eternal Polaris" Mk II Projectile Launching System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 12240,
+ antiair: 396,
+ siege: 1539,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK3-AT-800A "Supernova-White"`,
+ name: `Anti-Ship Torpedo`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1600,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 20,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [1, "Auxiliary Ship"]
+ ],
+ damage: 9540
+ },
+ siege: {
+ position: 2,
+ damage: 1440
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK2-AM-8x300B "Eternal Polaris K"`,
+ name: `Cluster Missile`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 55,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [4, 1],
+ cooldown: 8,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 2700
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ],
+ damage: 396
+ },
+ siege: {
+ position: 3,
+ damage: 99
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `"Eternal Polaris" Mk II Projectile Launching System`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 11900,
+ antiair: null,
+ siege: 10440,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK3-AT-750C "Supernova-White"`,
+ name: `Siege Torpedo Launcher Array`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1200,
+ attributes: null,
+ stats: {
+ duration: 6,
+ attacksPerRound: [1, 3],
+ cooldown: 30,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 11900
+ },
+ siege: {
+ position: 2,
+ damage: 10440
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A3",
+ name: `"Eternal Polaris" Mk II Projectile Launching System TEST`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 12300,
+ antiair: 396,
+ siege: 1440,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK4-AT-1-800AT "Supernova-White"`,
+ name: `Energy Torpedo`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1600,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 20,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [1, "Auxiliary Ship"]
+ ],
+ damage: 9600
+ },
+ siege: {
+ position: 2,
+ damage: 1440
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK2-AM-16x150B "Eternal Polaris K"`,
+ name: `Anti-Aircraft Missile Array`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 40,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 8,
+ attacksPerRound: [1, 16],
+ cooldown: 25,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 2700
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 396
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Generic Cannon Platform`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 6000,
+ antiair: 405,
+ siege: 1110,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `AG-2580`,
+ name: `Dual-Cannon Heavy Battery`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 350,
+ attributes: null,
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 8,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 5100
+ },
+ siege: {
+ position: 2,
+ damage: 1050
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `AG-1120B`,
+ name: `Rapid-Fire Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 35,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 900
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 405
+ },
+ siege: {
+ position: 3,
+ damage: 60
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B2",
+ name: `Generic Close-In Weapon System`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 900,
+ antiair: 405,
+ siege: 90,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `AG-1105B`,
+ name: `Generic Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 25,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 900,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 405,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ },
+ siege: {
+ position: 3,
+ damage: 90
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C1",
+ name: `NT UAV Anti-Aircraft System`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 3888,
+ siege: null,
+ hp: 20250
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 3,
+ title: `NT-1`,
+ name: `Anti-Aircraft UAV Rack`,
+ hanger: "Area-Denial Anti-Aircraft UAV",
+ capacity: 3,
+ damageType: "Projectile",
+ alpha: 15,
+ target: "Aircraft",
+ lockonEfficiency: null,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 2,
+ lockOnTime: 2,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Fighter"],
+ [2, "Corvette"]
+ ],
+ damage: 3888
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C2",
+ name: `"Thunderstorm" UAV Shield System`,
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 20250
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `SNT-1`,
+ name: `Shielded UAV Rack`,
+ hanger: "Shield UAV",
+ capacity: 2,
+ attributes: [`Ship Shielding Support`],
+ stats: {
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 15,
+ lockOnTime: 3,
+ targetPriority: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "C3",
+ name: `Energy Compensation Armor System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 16200
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 2,
+ title: `RIR-220`,
+ name: `Experimental Energy Compensation Armor`,
+ attributes: ["Energy Damage Reduction", "Physical Damage Reduction", "Crit Damage Reduction"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D1",
+ name: `Ion Turret System`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 6857,
+ antiair: null,
+ siege: 1028,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `AI-450A`,
+ name: `Experimental Ion Turret`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 800,
+ attributes: null,
+ stats: {
+ duration: 3,
+ cooldown: 4,
+ damageFrequency: 1,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 6857,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 1028
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D2",
+ name: `Pulse Turret System`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 432,
+ siege: null,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `AP-130B`,
+ name: `Rapid-Fire Near-Defense Pulse Cannon`,
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 40,
+ attributes: ["Interception Capability", "Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 2,
+ lockOnTime: 3,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 432
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 130,
+ name: "Shield of Plutus",
+ title: "Defensive Battlecruiser",
+ img: "/ships/shield_of_plutus_a.png",
+ type: "Battlecruiser",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Middle",
+ commandPoints: 35,
+ serviceLimit: 6,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `Integrated Weapon System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 15108,
+ antiair: 384,
+ siege: 1851,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `AM-4x800C`,
+ name: `Anti-Ship Missile Array`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 450,
+ attributes: null,
+ stats: {
+ duration: 5,
+ attacksPerRound: [1, 4],
+ cooldown: 30,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 12068
+ },
+ siege: {
+ position: 2,
+ damage: 1851
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 1,
+ title: `MK3-BG-2100 "Fortress"`,
+ name: `Generic Cannon`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 200,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 5,
+ attacksPerRound: [1, 2],
+ cooldown: 10,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 3040
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ],
+ damage: 384
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ unknown: true,
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "M2"
+ },
+ {
+ unknown: true,
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "M3"
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "A1",
+ name: `"Fortress" Defense System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 4800,
+ antiair: null,
+ siege: null,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CIT-A`,
+ name: "Guard UAV Hanger",
+ hanger: "Military UAV",
+ capacity: 2,
+ damageType: "Energy",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 100,
+ attributes: null,
+ stats: {
+ duration: 4,
+ attacksPerRound: [2, 4],
+ cooldown: 16,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 4800
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "A2",
+ name: `"Fortress" Area Fire-Control System A`,
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 23900
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CIT-B`,
+ name: `Fire-Control Spotter UAV Hanger`,
+ hanger: "Spotter UAV",
+ capacity: 2,
+ attributes: ["Damage Resistance"],
+ stats: {
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 10,
+ lockOnTime: 3,
+ targetPriority: [
+ [1, "Battlecruiser"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "A3",
+ name: `"Fortress" Area Fire-Control System B`,
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 24900
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CIT-C`,
+ name: `Fire-Control Spotter UAV Hanger`,
+ hanger: "Spotter UAV",
+ capacity: 3,
+ attributes: ["Damage Resistance II"],
+ stats: {
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 10,
+ lockOnTime: 3,
+ targetPriority: [
+ [1, "Battlecruiser"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Heavy Projectile Weapon System`,
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 13320,
+ antiair: null,
+ siege: 1215,
+ hp: 24950
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `BM-4x1800`,
+ name: `Anti-Ship Missile Array`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 750,
+ attributes: ["Crit", "Evasive Counterattack"],
+ stats: {
+ duration: 10,
+ attacksPerRound: [1, 4],
+ cooldown: 30,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battlecruiser"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ],
+ damage: 13320
+ },
+ siege: {
+ position: 2,
+ damage: 1215
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "B2",
+ name: `Comprehensive Maintenance System`,
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hpRecovery: 8100,
+ hp: 20800
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CRT-3`,
+ name: `Engineering UAV Maintenance Pod`,
+ hanger: "Repair UAV",
+ capacity: 3,
+ repair: 8100,
+ attributes: null
+ }
+ ]
+ },
+ {
+ unknown: true,
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "B3"
+ },
+ {
+ unknown: true,
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "C1"
+ },
+ {
+ unknown: true,
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "C2"
+ },
+ {
+ unknown: true,
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "C3"
+ }
+ ]
+ },
+ {
+ id: 120,
+ name: "Spear of Uranus",
+ title: "Heavy Battlecruiser",
+ img: "/ships/spear_of_uranus_a.png",
+ type: "Battlecruiser",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Sustained Combat"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Front",
+ commandPoints: 35,
+ serviceLimit: 6,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `Bow Railgun System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 12950,
+ antiair: null,
+ siege: 11310,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `BR-1950C "Ruby"`,
+ name: `Bow-Mounted Siege Railgun`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 2600,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 12,
+ lockOnTime: 7,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battleship"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 12950
+ },
+ siege: {
+ position: 2,
+ damage: 11310
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `Ion Turret System`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 12857,
+ antiair: null,
+ siege: 1800,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `BI-850`,
+ name: `Dual-Fire Heavy Ion Turret`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 750,
+ attributes: null,
+ stats: {
+ duration: 6,
+ cooldown: 10.5,
+ damageFrequency: 3,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ],
+ damage: 12857
+ },
+ siege: {
+ position: 2,
+ damage: 1800
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `"Fortress" Battery System A`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 15700,
+ antiair: 816,
+ siege: 3075,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `BG-1850`,
+ name: `Heavy Cannon`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 950,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 12,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 9400
+ },
+ siege: {
+ position: 2,
+ damage: 2755
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 3,
+ title: `BG-2240`,
+ name: `Anti-Ship Cannon`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 100,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 9,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 3600
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 420
+ },
+ siege: {
+ position: 3,
+ damage: 320
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `BG-340B`,
+ name: `Anti-Aircraft Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 10,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 3,
+ attacksPerRound: [1, 3],
+ cooldown: 3,
+ lockOnTime: 2,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 2700
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 396
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `"Fortress" Battery System B`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 18566,
+ antiair: 396,
+ siege: 2880,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `BG-1950`,
+ name: `Heavy Cannon`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1200,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 18,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 15866
+ },
+ siege: {
+ position: 2,
+ damage: 2880
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `BG-340B`,
+ name: `Anti-Aircraft Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 10,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 3,
+ attacksPerRound: [1, 3],
+ cooldown: 3,
+ lockOnTime: 2,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 2700
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 396
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A3",
+ name: `"Fortress" Battery System F`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 17220,
+ antiair: 1026,
+ siege: 1800,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 6,
+ title: `BG-2350`,
+ name: `Anti-Ship Cannon`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 200,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 8,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 17100
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 810
+ },
+ siege: {
+ position: 3,
+ damage: 1800
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `BG-340B`,
+ name: `Anti-Aircraft Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 10,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 3,
+ attacksPerRound: [1, 3],
+ cooldown: 3,
+ lockOnTime: 2,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 120
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 216
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `"Minecart" Projectile Launching Array`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 5940,
+ antiair: 680,
+ siege: 259,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `BM-12x250`,
+ name: `Generic Missile Launching Array`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 120,
+ attributes: ["Interception Capability", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 12,
+ attacksPerRound: [1, 12],
+ cooldown: 28,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 5940
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 680
+ },
+ siege: {
+ position: 3,
+ damage: 259
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B2",
+ name: `Corvette Dock`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 23850
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-2300`,
+ name: `Corvette Mounting Dock`,
+ hanger: "Corvette",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "B3",
+ name: `Integrated Damage Control System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hpRecovery: 5454,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CRT-3`,
+ name: `Engineering UAV Maintenance Pod`,
+ hanger: "Repair UAV",
+ capacity: 2,
+ repair: 5454,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "C1",
+ name: `Distributed Weapon Control System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XI-1200`,
+ name: "Distributed Fire Control Radar",
+ attributes: ["Increase Hit Rate"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "C2",
+ name: `Additional Armor System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: 0,
+ extraHP: 32484,
+ energyShield: 0,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `ASX-150`,
+ name: "Energized Nano Armor",
+ attributes: ["Additional HP Auto-Repair"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "C3",
+ name: `Anti-Missile System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 324,
+ siege: null,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `BG-625C`,
+ name: `Area Anti-Missile Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 10,
+ attributes: ["Interception Capability (Fleet)", "Anti-Aircraft Special Ammo", "Anti-Aircraft Support"],
+ stats: {
+ duration: 3,
+ attacksPerRound: [1, 6],
+ cooldown: 4,
+ lockOnTime: 2,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 324
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 121,
+ name: "ST59",
+ title: "Defensive Battlecruiser",
+ img: "/ships/st59_a.png",
+ type: "Battlecruiser",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Dawn Accord",
+ direction: ["Sustained Combat", "Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 5,
+ row: "Middle",
+ commandPoints: 28,
+ serviceLimit: 6,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: "Assault Railgun System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 10350,
+ antiair: null,
+ siege: 3360,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `SR-2600`,
+ name: `Heavy Railgun`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 735,
+ attributes: null,
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 16,
+ lockOnTime: 8,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 10350
+ },
+ siege: {
+ position: 2,
+ damage: 3360
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `Bow Mounted Battery System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 11400,
+ antiair: null,
+ siege: 960,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `SG-2400`,
+ name: `Dual-Cannon Rapid-Fire Battery`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 200,
+ attributes: null,
+ stats: {
+ attacksPerRound: [2, 2],
+ cooldown: 6,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 11400
+ },
+ siege: {
+ position: 2,
+ damage: 960
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M3",
+ name: `Assault Torpedo System`,
+ sourcedFrom: ["Windserpent", "OZY"],
+ stats: {
+ type: "weapon",
+ antiship: 11200,
+ antiair: null,
+ siege: 2266,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `ST-2600`,
+ name: `Heavy Torpedo Launcher`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 850,
+ attributes: ["Crit"],
+ stats: {
+ duration: 2,
+ attacksPerRound: [1, 2],
+ cooldown: 16,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 11200,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 2266
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `Large Cannon Platform`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 7875,
+ antiair: 216,
+ siege: 1206,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `MK4-SG-2580 "Thunderbolt"`,
+ name: `Dual-Cannon Heavy Battery`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 280,
+ attributes: null,
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 16,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 6075
+ },
+ siege: {
+ position: 2,
+ damage: 1134
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `SG-1120`,
+ name: `Generic Cannon`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 40,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 1800
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ],
+ damage: 216
+ },
+ siege: {
+ position: 3,
+ damage: 72
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `Railgun Turret Array`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 9900,
+ antiair: null,
+ siege: 1923,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `SR-1425`,
+ name: `Railgun Turret`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 450,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 8,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Destroyer"],
+ [2, "Frigate"]
+ ],
+ damage: 9900
+ },
+ siege: {
+ position: 2,
+ damage: 1923
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A3",
+ name: `Pulse Turret Array`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 7500,
+ antiair: 787,
+ siege: 1200,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `SP-430`,
+ name: `Pulse Turret`,
+ damageType: "Energy",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 250,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 6,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 7500
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 787
+ },
+ siege: {
+ position: 3,
+ damage: 1200
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Integrated Projectile Weapon Platform`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 8188,
+ antiair: null,
+ siege: 1185,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `K-ST-12-255A`,
+ name: `3x4 Cluster Torpedo Launching System`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 300,
+ attributes: null,
+ stats: {
+ attacksPerRound: [1, 4],
+ cooldown: 30,
+ lockOnTime: 4,
+ duration: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ],
+ damage: 8188
+ },
+ siege: {
+ position: 2,
+ damage: 1185
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B2",
+ name: `Aircraft System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 15300
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CBF-305`,
+ name: "Medium Hanger",
+ hanger: "Medium Fighter",
+ capacity: 2,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B3",
+ name: `Area Fire-Control System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 15300
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 2,
+ title: `CIT-1`,
+ name: `Fire-Control Spotter UAV Hanger`,
+ hanger: "Spotter UAV",
+ capacity: 3,
+ attributes: ["Ship Calibration Support"],
+ stats: {
+ targetPriority: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ],
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 10,
+ lockOnTime: 3
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "C1",
+ name: `Additional Armor System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: 0,
+ extraHP: 27302,
+ energyShield: 0,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `ASX-100`,
+ name: "Additional Armor",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "C2",
+ name: `EM Armor System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: 0,
+ extraHP: 0,
+ energyShield: 20,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `AEX-120`,
+ name: "EM Armor",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "C3",
+ name: "Heavy Defensive Armor System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: 250,
+ extraHP: 0,
+ energyShield: 0,
+ hp: 15750
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `ASX-130`,
+ name: "Additional Armor",
+ attributes: ["Reduce Evasion", "Reduce Hit Rate"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 122,
+ name: "Thunderbolt Star",
+ title: "Multi-Role Arsenal Ship",
+ img: "/ships/thunderbolt_star_a.png",
+ type: "Battlecruiser",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Empty",
+ direction: ["Outstanding Firepower", "Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Middle",
+ commandPoints: 35,
+ serviceLimit: 6,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `"Thunderbolt" Bow-Mounted Weapon System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 27225,
+ antiair: null,
+ siege: 5744,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `HR-1850`,
+ name: `Long-Rail Railgun`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 2127,
+ attributes: null,
+ stats: {
+ duration: 14,
+ attacksPerRound: [1, 6],
+ cooldown: 14,
+ lockOnTime: 10,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"]
+ ],
+ damage: 27225
+ },
+ siege: {
+ position: 2,
+ damage: 5744
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `"Thunderbolt" Bow-Mounted Projectile Weapon System`,
+ sourcedFrom: ["Thalleous"],
+ stats: {
+ type: "weapon",
+ antiship: 27168,
+ antiair: null,
+ siege: 5705,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `HT-1-850`,
+ name: "High Energy Torpedo Launcher",
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 2070,
+ attributes: ["Crit"],
+ stats: {
+ duration: 16,
+ attacksPerRound: [1, 7],
+ cooldown: 16,
+ lockOnTime: 15,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 27168,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 5705
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M3",
+ name: `"Thunderbolt Star" Bow-Mounted High-Energy Weapon System`,
+ sourcedFrom: ["Thalleous"],
+ stats: {
+ type: "weapon",
+ antiship: 33120,
+ antiair: null,
+ siege: 3312,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `HT-1250T`,
+ name: `Experimental Super High-Energy Ion Cannon`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 2760,
+ attributes: null,
+ stats: {
+ duration: 10,
+ cooldown: 20,
+ damageFrequency: 6,
+ lockOnTime: 15,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 33120,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 3312
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `Rapid-Fire Anti-Ship Weapon System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 12636,
+ antiair: 1266,
+ siege: 1407,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `HG-1220`,
+ name: "Rapid-Fire Artillery Array",
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 97,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 18,
+ attacksPerRound: [1, 18],
+ cooldown: 12,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 12636
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ],
+ damage: 1266
+ },
+ siege: {
+ position: 3,
+ damage: 1407
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `Medium Anti-Ship Weapon System`,
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 14184,
+ antiair: null,
+ siege: 1490,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `HG-2280`,
+ name: "Dual-Cannon Stationary Heavy Battery",
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 207,
+ attributes: null,
+ stats: {
+ duration: 18,
+ attacksPerRound: [2, 9],
+ cooldown: 12,
+ lockOnTime: 10,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 14184
+ },
+ siege: {
+ position: 2,
+ damage: 1490
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: "Active Anti-Aircraft System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 3375,
+ antiair: 465,
+ siege: null,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `HM-4x60B`,
+ name: "Mid-Range Anti-Aircraft Missile Array",
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 28,
+ attributes: ["Anti-Aircraft Support"],
+ stats: {
+ duration: 16,
+ attacksPerRound: [4, 6],
+ cooldown: 16,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 3375
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 465
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B2",
+ name: "Range Interception System",
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 345,
+ siege: null,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `HP-100B`,
+ name: "Anti-Aircraft Pulse Array",
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 28,
+ attributes: ["Interception Capability", "Anti-Aircraft Support"],
+ stats: {
+ duration: 15,
+ attacksPerRound: [1, 15],
+ cooldown: 12,
+ lockOnTime: 2,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 345
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "C1",
+ name: "Weapon Coordination Center",
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `HNI-260`,
+ name: "Weapon Activation Device",
+ attributes: ["Oscillatory Excitation"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "C2",
+ name: "Fire-Control Calibration System",
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `HNA-240`,
+ name: "Real-Time Target Callibration Module",
+ attributes: ["Collaborative Calibration"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D1",
+ name: "Accurate Projectile Weapon System",
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 9140,
+ antiair: 1164,
+ siege: 970,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `HM-1x220A`,
+ name: "Mid-Range Anti-Ship Missile",
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 172,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 16,
+ attacksPerRound: [1, 15],
+ cooldown: 16,
+ lockOnTime: 7,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 9140
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 1164
+ },
+ siege: {
+ position: 3,
+ damage: 970
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D2",
+ name: "Large Projectile Weapon System",
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 9776,
+ antiair: null,
+ siege: 2086,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `HT-1-450`,
+ name: "Large Torpedo Launcher",
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 631,
+ attributes: ["Crit"],
+ stats: {
+ duration: 15,
+ attacksPerRound: [1, 8],
+ cooldown: 15,
+ lockOnTime: 10,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 9776
+ },
+ siege: {
+ position: 2,
+ damage: 2086
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "E1",
+ name: "Multi-Target Weapon System",
+ sourcedFrom: ["Thalleous"],
+ stats: {
+ type: "weapon",
+ antiship: 6990,
+ antiair: 910,
+ siege: 759,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `HG-1220A`,
+ name: "Multi-Target Anti-Ship Battery",
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 126,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 20,
+ attacksPerRound: [1, 15],
+ cooldown: 10,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 6990
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ],
+ damage: 910
+ },
+ siege: {
+ position: 3,
+ damage: 759
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "E2",
+ name: "Multi-Target Anti-Aircraft System",
+ sourcedFrom: ["Thalleous"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 633,
+ siege: null,
+ hp: 23400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `HG-1120B`,
+ name: "Multi-Target Anti-Aircraft Turret",
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 40,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 18,
+ attacksPerRound: [1, 25],
+ cooldown: 12,
+ lockOnTime: 2,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 633
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 123,
+ name: "Ediacaran",
+ title: "Heavy Firepower Auxiliary Ship",
+ img: "/ships/ediacaran_a.png",
+ type: "Auxiliary Ship",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Outstanding Firepower", "Strategy & Support"],
+ scope: "Empty",
+ weight: 2,
+ row: "Middle",
+ commandPoints: 40,
+ serviceLimit: 2,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: "Fortress Bow-Mounted Heavy Cannon System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 11057,
+ antiair: 394,
+ siege: 1756,
+ hp: 18900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `"Fortress" MK4-BG-2560`,
+ name: `Dual-Cannon Heavy Bow Battery`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 650,
+ attributes: null,
+ stats: {
+ duration: 8,
+ attacksPerRound: [2, 2],
+ cooldown: 11,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 8084
+ },
+ siege: {
+ position: 2,
+ damage: 1231
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `BG-1260`,
+ name: `Anti-Ship Turret`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 105,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 15,
+ attacksPerRound: [2, 3],
+ cooldown: 8,
+ lockOnTime: 8,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 2973
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 394
+ },
+ siege: {
+ position: 3,
+ damage: 525
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `Fortress Assault Railgun System`,
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 11519,
+ antiair: 800,
+ siege: 3150,
+ hp: 18900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `"Fortress" MK4-BG-1850A`,
+ name: `Bow-Mounted Assault Heavy Railgun`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 2250,
+ attributes: ["Crit"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 12,
+ lockOnTime: 15,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 11200
+ },
+ siege: {
+ position: 2,
+ damage: 3150
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `BM-2x280B`,
+ name: `Anti-Aircraft Missile Launcher Array`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 25,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 5,
+ attacksPerRound: [1, 4],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 319
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 800
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "A1",
+ name: "Frigates Production System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 18800
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `MF-2500`,
+ name: "Frigates Independent Production Facility",
+ attributes: ["Self-holding Capability"]
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: `BMP-60`,
+ name: "Production Line Modification Module",
+ attributes: ["Increase Production Speed"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "A2",
+ name: "Corvette Production System",
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 19800
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `MC-2500`,
+ name: "Corvette Independent Production Facility",
+ attributes: null
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: `BMP-60`,
+ name: "Production Line Modification Module",
+ attributes: ["Increase Production Speed"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "A3",
+ name: "Destroyer Production System",
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 18800
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `MD-2500`,
+ name: "Destroyer Independent Production Facility",
+ attributes: ["Self-holding Capability"]
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: `BMP-60`,
+ name: "Production Line Modification Module",
+ attributes: ["Increase Production Speed"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B1",
+ name: `"Tundra" Interceptor UAV System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 4608,
+ siege: null,
+ hp: 19350
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CAT/R-6`,
+ name: `Area-Denial Anti-Aircraft UAV Pod`,
+ hanger: "Area-Denial Anti-Aircraft UAV",
+ capacity: 4,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 15,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [4, 1],
+ cooldown: 3.5,
+ lockOnTime: 7,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Fighter"],
+ [2, "Corvette"]
+ ],
+ damage: 4608
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B2",
+ name: `"Hummingbird" Firepower Recon UAV System`,
+ sourcedFrom: ["Somnambulist"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 19350
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFT-6`,
+ name: "Firepower Recon UAV Pod",
+ hanger: "Recon UAV",
+ capacity: 4,
+ attributes: ["Firepower Recon Support"],
+ stats: {
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 1,
+ lockOnTime: 0,
+ targetPriority: [
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B3",
+ name: `"Colossus" Guard UAV System`,
+ sourcedFrom: ["Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 7340,
+ antiair: null,
+ siege: 732,
+ hp: 19350
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFV-2`,
+ name: "Guard UAV Platform",
+ hanger: "Guard UAV",
+ capacity: 4,
+ attributes: null,
+ damageType: "Energy",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 65,
+ stats: {
+ duration: 6,
+ attacksPerRound: [1, 8],
+ cooldown: 11,
+ lockOnTime: 8,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 7340,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 732
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C1",
+ name: `Aircraft Loading System`,
+ sourcedFrom: ["Toir"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 19350
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBF-200`,
+ name: "Large Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 2,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C2",
+ name: `Corvette Dock`,
+ sourcedFrom: ["Spy Shark"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 19350
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-2000`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "D1",
+ name: `Heavy Additional Armor System`,
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: 80,
+ extraHP: 30069,
+ energyShield: 0,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `ASX-90`,
+ name: "Heavy Additional Armor",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "D2",
+ name: `Nano Automated Maintenance System`,
+ sourcedFrom: ["Toir"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hpRecovery: 5169,
+ hp: 18000
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ capacity: 2,
+ hanger: "Repair UAV",
+ count: 1,
+ title: `BST-300`,
+ name: `Nano Repair System`,
+ repair: 5169,
+ attributes: null
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 124,
+ name: "FSV830",
+ title: "Fast Tactical Auxiliary Ship",
+ img: "/ships/fsv830_a.png",
+ type: "Auxiliary Ship",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Dawn Accord",
+ direction: ["Sustained Combat", "Strategy & Support"],
+ scope: "Empty",
+ weight: 5,
+ row: "Back",
+ commandPoints: 40,
+ serviceLimit: 2,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "A1",
+ name: "Frigates Production System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 21500
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XE-1250AM`,
+ name: "Frigates Independent Production Facility",
+ attributes: ["Self-holding Capability"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "A2",
+ name: "Corvette Production System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 21500
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XE-1250AG`,
+ name: "Corvette Independent Build Facility",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "A3",
+ name: "Fighter Production System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 21500
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `MFG-1500`,
+ name: "Fighter Independent Production Facility",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "B1",
+ name: "Warning and Control System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 22000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XE-1250AW`,
+ name: "Situational Awareness System",
+ attributes: ["Back-Row Torpedo Hit Evasion", "Back-Row Missile Hit Evasion"]
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: `XC-4500`,
+ name: "Bridge",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "B2",
+ name: "Coordinate Command System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 22000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XCE-1250AI`,
+ name: "Assisted Lock-On Radar",
+ attributes: [`Increase Back-Row Missile Hit Rate`, `Increase Back-Row Torpedo Hit Rate`]
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: `XC-4500`,
+ name: "Bridge",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "B3",
+ name: "Camoflage System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 22000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XS-1250AC`,
+ name: "Field Signal Disguise Module",
+ attributes: [`Ship Disguise`]
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: `XC-4500`,
+ name: "Bridge",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "C1",
+ name: "Engineering Maintenance System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 22000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `BSR-200`,
+ name: "Quick Repair Device",
+ attributes: ["Increase Repair Speed"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "C2",
+ name: "Strategic Resource Storage System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ storage: 60000,
+ hp: 22000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `W-500`,
+ name: "Loading Platform",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "D1",
+ name: "Aircraft System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 21500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBF-255`,
+ name: "Medium Hanger",
+ hanger: "Medium Fighter",
+ capacity: 2,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "D2",
+ name: "Repair UAV System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hpRecovery: 5454,
+ hp: 21500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CRT-3`,
+ name: "Engineering UAV Maintenance Pod",
+ hanger: "Repair UAV",
+ capacity: 2,
+ repair: 5454,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "E1",
+ name: "Area-Defense System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 882,
+ siege: null,
+ hp: 22000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `SM-4x40B`,
+ name: "Anti-Arcraft Missile Silo",
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 35,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Support"],
+ stats: {
+ duration: 4,
+ attacksPerRound: [1, 4],
+ cooldown: 5,
+ lockOnTime: 3,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 882
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "E2",
+ name: "Corvette Dock",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 21500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-2000`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 125,
+ name: "CV3000",
+ title: "High-Speed Carrier",
+ img: "/ships/cv3000_a.png",
+ type: "Carrier",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Dawn Accord",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 2,
+ row: "Back",
+ commandPoints: 40,
+ serviceLimit: 5,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M1",
+ name: "Integrated Aircraft Hanger",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 23850
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-605`,
+ name: "Large Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 5,
+ attributes: null
+ },
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-2100`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M2",
+ name: "Integrated Aircraft System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 23850
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-605`,
+ name: "Large Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 5,
+ attributes: null
+ },
+ {
+ type: "hanger",
+ count: 1,
+ title: `CIT-5`,
+ name: "Field Support UAV Hanger",
+ hanger: "Tactical UAV",
+ capacity: 5,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 27,
+ attributes: ["Attack Against Systems"],
+ stats: {
+ duration: 20,
+ attacksPerRound: [1, 5],
+ cooldown: 10,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Cruiser"]
+ ],
+ damage: 2250
+ },
+ siege: {
+ position: 2,
+ damage: 150
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M3",
+ name: "Large Aircraft System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 23850
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-605`,
+ name: "Large Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 5,
+ attributes: null
+ },
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-400`,
+ name: "Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `"Dragoon" Battery System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 6500,
+ antiair: 297,
+ siege: 619,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `MK4-C/SG-3480A "Dragoon"`,
+ name: `Triple-Cannon Heavy Battery`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 200,
+ attributes: null,
+ stats: {
+ attacksPerRound: [3, 1],
+ cooldown: 9,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 3800
+ },
+ siege: {
+ position: 2,
+ damage: 520
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `C/SG-190B "Dragoon"`,
+ name: `Generic Rapid-Fire Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 55,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 4,
+ lockOnTime: 6,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 2700
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 297
+ },
+ siege: {
+ position: 3,
+ damage: 99
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `Anti-Aircraft Missile Platform`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 2700,
+ antiair: 354,
+ siege: null,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `Bm-12x180T`,
+ name: `Missile Defense System`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 52,
+ attributes: ["Interception Capability", "Anti-Aircraft Support"],
+ stats: {
+ duration: 12,
+ attacksPerRound: [1, 12],
+ cooldown: 20,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 2700
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 354
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Missile Defense System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 1200,
+ antiair: 210,
+ siege: 70,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `MK3-SM-6x400B/C "Starfire"`,
+ name: `Missile Launcher Array`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 70,
+ attributes: ["Interception Capability", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 6,
+ attacksPerRound: [1, 6],
+ cooldown: 12,
+ lockOnTime: 8,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 1200
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 210
+ },
+ siege: {
+ position: 3,
+ damage: 70
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B2",
+ name: `Corvette Loading System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 23850
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-2100`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B3",
+ name: `Info UAV Support Platform`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 23850
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CITA-2`,
+ name: "Field Support UAV Pod",
+ hanger: "Info UAV",
+ capacity: 3,
+ attributes: ["Ship Calibration Support"],
+ stats: {
+ targetPriority: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ],
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 10,
+ lockOnTime: 3
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 126,
+ name: "Eternal Heavens",
+ title: "UAV Carrier",
+ img: "/ships/eternal_heavens_a.png",
+ type: "Carrier",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Jupiter Industry",
+ direction: ["Outstanding Firepower"],
+ scope: "Empty",
+ weight: 2,
+ row: "Back",
+ commandPoints: 40,
+ serviceLimit: 5,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M1",
+ name: "Collaborative Hanger I",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 7752,
+ antiair: 2658,
+ siege: 774,
+ hp: 24500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBF-280`,
+ name: "Medium Fighter Hanger",
+ hanger: "Medium Fighter",
+ capacity: 3,
+ attributes: null
+ },
+ {
+ type: "hanger",
+ count: 3,
+ title: `"Decomposer"`,
+ name: "Cooperative Offensive UAV Platform",
+ hanger: "Cooperative Offensive UAV",
+ capacity: 3,
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 140,
+ attributes: ["UAV Cooperation", "Anti-Aircraft Lightweight Ammo"],
+ stats: {
+ duration: 4,
+ attacksPerRound: [1, 4],
+ cooldown: 9,
+ lockOnTime: 8,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 7752,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 2658,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ },
+ siege: {
+ position: 3,
+ damage: 774
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M2",
+ name: "Collaborative Hanger II",
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBF-280`,
+ name: "Medium Fighter Hanger",
+ hanger: "Medium Fighter",
+ capacity: 3,
+ attributes: null
+ },
+ {
+ type: "hanger",
+ count: 3,
+ title: `"Laminar"`,
+ name: "Cooperative Offensive UAV Platform",
+ hanger: "Cooperative Offensive UAV",
+ capacity: 3,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 40,
+ attributes: ["UAV Cooperation", "Anti-Aircraft Special Ammo"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M3",
+ name: "Collaborative Hanger III",
+ sourcedFrom: ["OZY"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 5940,
+ siege: null,
+ hp: 24500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBF-280`,
+ name: "Medium Fighter Hanger",
+ hanger: "Medium Fighter",
+ capacity: 3,
+ attributes: null
+ },
+ {
+ type: "hanger",
+ count: 3,
+ title: `"Vortex"`,
+ name: "Cooperative Offensive UAV Platform",
+ hanger: "Cooperative Offensive UAV",
+ capacity: 3,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 20,
+ attributes: ["UAV Aerial Cover Support", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 4,
+ attacksPerRound: [4, 3],
+ cooldown: 8,
+ lockOnTime: 5,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ damage: 5940,
+ priorities: [
+ [1, "Fighter"],
+ [2, "Corvette"]
+ ]
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `Integrated Battery System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 10250,
+ antiair: 472,
+ siege: 3815,
+ hp: 26000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `AG-3400A`,
+ name: `Triple-Fire Heavy Turret`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 320,
+ attributes: null,
+ stats: {
+ duration: 6,
+ attacksPerRound: [3, 1],
+ cooldown: 12,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 6200,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 2240
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 3,
+ title: `AG-2208A`,
+ name: `Dual-Cannon Anti-Ship Battery`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 100,
+ attributes: null,
+ stats: {
+ duration: 2,
+ attacksPerRound: [2, 1],
+ cooldown: 6,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 4050,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 2,
+ damage: 472,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ]
+ },
+ siege: {
+ position: 3,
+ damage: 1575
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `Experimental Ion Cannon System`,
+ sourcedFrom: ["LunatiCorp"],
+ stats: {
+ type: "weapon",
+ antiship: 8857,
+ antiair: 252,
+ siege: 828,
+ hp: 26000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `AI-450T`,
+ name: `Experimental Ion Turret`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 400,
+ attributes: null,
+ stats: {
+ duration: 3,
+ cooldown: 4,
+ damageFrequency: 1,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 6857,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 548
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `AG-290`,
+ name: `Generic Dual-Cannon Battery`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 35,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 2,
+ attacksPerRound: [1, 2],
+ cooldown: 4,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 2000,
+ priorities: [
+ [3, "Destroyer"],
+ [3, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 252,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"]
+ ]
+ },
+ siege: {
+ position: 3,
+ damage: 280
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A3",
+ name: `Pulse Anti-Aircraft System`,
+ sourcedFrom: ["Ultix"],
+ stats: {
+ type: "weapon",
+ antiship: 3600,
+ antiair: 1370,
+ siege: null,
+ hp: 26000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 3,
+ title: `AP-2x180`,
+ name: "Dual-Fire Pulse Cannon",
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 40,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
+ },
+ {
+ type: "weapon",
+ count: 3,
+ title: `AP-140B`,
+ name: "Rapid-Fire Anti-Aircraft Pulse Cannon",
+ damageType: "Energy",
+ target: "Aircraft",
+ lockonEfficiency: 45,
+ alpha: 20,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Anti-Ship Projectile Launching System`,
+ sourcedFrom: ["Spy Shark"],
+ stats: {
+ type: "weapon",
+ antiship: 5640,
+ antiair: null,
+ siege: 882,
+ hp: 26000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `AM-2x450`,
+ name: `Dual-Fire Anti-Ship Missile Launcher`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 350,
+ attributes: null,
+ stats: {
+ duration: 4,
+ attacksPerRound: [2, 1],
+ cooldown: 16,
+ lockOnTime: 6,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 4080,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 630
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 4,
+ title: `AM-250`,
+ name: `Light Missile Launcher`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 140,
+ attributes: null,
+ stats: {
+ duration: 2,
+ attacksPerRound: [1, 1],
+ cooldown: 8,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 1560,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 252
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B2",
+ name: `Anti-Missile Defense System`,
+ sourcedFrom: ["Somnambulist", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 1104,
+ antiair: 257,
+ siege: 225,
+ hp: 26000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `AM-3x250`,
+ name: `Triple-Fire Anti-Ship Missile Launcher`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 145,
+ attributes: null,
+ stats: {
+ duration: 6,
+ attacksPerRound: [3, 1],
+ cooldown: 16,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 1104,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ]
+ },
+ siege: {
+ position: 2,
+ damage: 225
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `AM-12x100C`,
+ name: `Interception Missile Launcher Array`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 35,
+ attributes: ["Interception Capability", "Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 12,
+ attacksPerRound: [2, 12],
+ cooldown: 35,
+ lockOnTime: 4,
+ targetPriority: {
+ antiair: {
+ position: 1,
+ damage: 257,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B3",
+ name: `Anti-Aircraft Missile Platform`,
+ sourcedFrom: null,
+ stats: {
+ type: "weapon",
+ antiship: 1527,
+ antiair: 811,
+ siege: null,
+ hp: 26000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `AM-4x180`,
+ name: `Quadruple-Fire Multi-Role Missile Launcher`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 60,
+ alpha: 45,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `AM-2x100B`,
+ name: `Dual-Fire Light Anti-Aircraft Missile Launcher`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 75,
+ alpha: 80,
+ attributes: ["Anti-Aircraft Counterattack"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C1",
+ name: "Auxiliary Aircraft Hanger",
+ sourcedFrom: ["Spy Shark"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-580`,
+ name: "Large Fighter Hangar",
+ hanger: "Large Fighter",
+ capacity: 4,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C2",
+ name: "Auxiliary Corvette Dockyard",
+ sourcedFrom: ["Spy Shark"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-3000`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 4,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/storage.png",
+ system: "C3",
+ name: "Support Repair UAV System",
+ sourcedFrom: null,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hpRecovery: 8181,
+ hp: 24500
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CRT-6`,
+ name: "Engineering UAV Maintenance Platform",
+ hanger: "Repair UAV",
+ capacity: 3,
+ repair: 8181,
+ attributes: null
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 127,
+ name: "Marshal Crux",
+ title: "Carrier",
+ img: "/ships/marshal_crux_a.png",
+ type: "Carrier",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Antonios",
+ direction: ["Outstanding Firepower", "Strategy & Support"],
+ scope: "Direct-Fire Weapon",
+ weight: 2,
+ row: "Back",
+ commandPoints: 40,
+ serviceLimit: 5,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `"White Flashing" Integrated Armory`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 16080,
+ antiair: 691,
+ siege: 1908,
+ hp: 28800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `CI-600T`,
+ name: `Heavy Ion Turret`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 450,
+ attributes: null,
+ stats: {
+ duration: 8,
+ damageFrequency: 8,
+ cooldown: 12,
+ lockOnTime: 8,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battlecruiser"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 10800
+ },
+ siege: {
+ position: 2,
+ damage: 1620
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `CG-2220`,
+ name: `Generic Dual-Cannon Battery`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 120,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 5,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 5280
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 691
+ },
+ siege: {
+ position: 3,
+ damage: 288
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `"White Flashing" Integrated Armory`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 13628,
+ antiair: 162,
+ siege: 2275,
+ hp: 28800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `CR-1650`,
+ name: `Railgun`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1000,
+ attributes: null,
+ stats: {
+ duration: 6,
+ attacksPerRound: [1, 3],
+ cooldown: 8,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Destroyer"],
+ [2, "Frigate"]
+ ],
+ damage: 12728
+ },
+ siege: {
+ position: 3,
+ damage: 2185
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 6,
+ title: `CG-1105B`,
+ name: `Generic Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 20,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [1, 1],
+ cooldown: 4,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ],
+ damage: 900
+ },
+ antiair: {
+ position: 1,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ],
+ damage: 162
+ },
+ siege: {
+ position: 3,
+ damage: 90
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "A1",
+ name: `Integrated Aircraft Hanger`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-700`,
+ name: "Large Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 6,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "A2",
+ name: `Corvette Dock`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-3200`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 6,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "B1",
+ name: `Additional Energy System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `RET-200`,
+ name: "Energy Amplification Device",
+ attributes: ["Increase Aircraft Damage"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "B2",
+ name: `Fire-Control Auxiliary Calibration System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `XGC-200`,
+ name: "Precision Guidance System",
+ attributes: ["Increase Aircraft Hit Rate"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C1",
+ name: `Additional Aircraft System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBF-200`,
+ name: "Medium Hanger",
+ hanger: "Medium Fighter",
+ capacity: 4,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "C2",
+ name: `Missile Defense System`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 5200,
+ antiair: 504,
+ siege: 392,
+ hp: 28800
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `MK2-CM-4x250A "Storm"`,
+ name: `Missile Launcher Nest`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 140,
+ attributes: ["Anti-Aircraft Support"],
+ stats: {
+ duration: 4,
+ attacksPerRound: [1, 4],
+ cooldown: 20,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 5200
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [2, "Corvette"],
+ [3, "Fighter"]
+ ],
+ damage: 504
+ },
+ siege: {
+ position: 3,
+ damage: 392
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C3",
+ name: `Recon UAV System`,
+ sourcedFrom: ["kitty7hell", "Draconia19"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: "CIT-3",
+ name: `Fire-Control Spotter UAV Hanger`,
+ hanger: "Spotter UAV",
+ capacity: 3,
+ attributes: ["Ship Calibration Support"],
+ stats: {
+ duration: 30,
+ operationCount: [1, 1],
+ cooldown: 10,
+ lockOnTime: 3,
+ targetPriority: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"]
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 128,
+ name: "Solar Whale",
+ title: "Armed Tactical Carrier",
+ img: "/ships/solar_whale_a.png",
+ type: "Carrier",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "NOMA Shipping",
+ direction: ["Strategy & Support"],
+ scope: "Empty",
+ weight: 2,
+ row: "Middle",
+ commandPoints: 55,
+ serviceLimit: 5,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M1",
+ name: "Corvette Dock",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24750
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-3200`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 6,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "M2",
+ name: "Large Aircraft System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24750
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-1200`,
+ name: "Large Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 8,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `Integrated Armory`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 9648,
+ antiair: 589,
+ siege: 959,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `BG-2450A`,
+ name: `Dual-Cannon Heavy Battery`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 320,
+ attributes: null,
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 15,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 4960
+ },
+ siege: {
+ position: 2,
+ damage: 665
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK3-BM-8x320 "Lightning Field"`,
+ name: `Dodeca-Fire Anti-Ship Missile System`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 220,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 8,
+ attacksPerRound: [1, 8],
+ cooldown: 35,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 4688
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 589
+ },
+ siege: {
+ position: 3,
+ damage: 294
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `Projectile Weapon Platform`,
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: 8749,
+ antiair: 589,
+ siege: 648,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK5-BM-16x180 "Lightning Field"`,
+ name: `Anti-Ship Missile Array`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 120,
+ attributes: null,
+ stats: {
+ duration: 12,
+ attacksPerRound: [1, 16],
+ cooldown: 40,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"]
+ ],
+ damage: 4061
+ },
+ siege: {
+ position: 2,
+ damage: 354
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK3-BM-8x320 "Lightning Field"`,
+ name: `Dodeca-Fire Anti-Ship Missile System`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 220,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 8,
+ attacksPerRound: [1, 8],
+ cooldown: 35,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 4688
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 589
+ },
+ siege: {
+ position: 3,
+ damage: 294
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A3",
+ name: `Integrated Cannon Platform`,
+ sourcedFrom: ["Windserpent", "Sector"],
+ stats: {
+ type: "weapon",
+ antiship: 8888,
+ antiair: 1021,
+ siege: 588,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `MK3-BM-8x320 "Lightning Field"`,
+ name: `Dodeca-Fire Anti-Ship Missile System`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 220,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 8,
+ attacksPerRound: [1, 8],
+ cooldown: 35,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ damage: 4688,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ]
+ },
+ antiair: {
+ position: 2,
+ damage: 589,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ]
+ },
+ siege: {
+ position: 3,
+ damage: 252
+ }
+ }
+ }
+ },
+ {
+ type: "weapon",
+ count: 2,
+ title: `BG-2180`,
+ name: `Anti-Ship Cannon`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: null,
+ alpha: 80,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ attacksPerRound: [2, 1],
+ cooldown: 8,
+ lockOnTime: 4,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 4200,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 432,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ },
+ siege: {
+ position: 3,
+ damage: 336
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "B1",
+ name: "Ship Maintenance System",
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 25200
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `BSY-5000`,
+ name: "Large Docking Jetty",
+ attributes: ["Aircraft Recovery"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B2",
+ name: "Corvette Loading Platform",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24750
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CBC-2000`,
+ name: "Corvette Dock",
+ hanger: "Corvette",
+ capacity: 3,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C1",
+ name: "Aircraft Hanger",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: null,
+ hp: 24750
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CFB-600`,
+ name: "Aircraft Hanger",
+ hanger: "Large Fighter",
+ capacity: 5,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "C2",
+ name: "Siege UAV System",
+ sourcedFrom: ["Windserpent"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: 6048,
+ hp: 24750
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CST-6`,
+ name: "Siege UAV Pod",
+ hanger: "Siege UAV",
+ capacity: 4,
+ damageType: "Energy",
+ target: "Building",
+ lockonEfficiency: null,
+ alpha: 630,
+ attributes: null,
+ stats: {
+ duration: 10,
+ attacksPerRound: [1, 1],
+ cooldown: 15,
+ lockOnTime: 8,
+ targetPriority: {
+ siege: {
+ position: 1,
+ damage: 6048
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "C3",
+ name: "Anti-Aircraft Missile Platform",
+ sourcedFrom: ["Windserpent", "The Enlightened"],
+ stats: {
+ type: "weapon",
+ antiship: 2618,
+ antiair: 1178,
+ siege: null,
+ hp: 27000
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `BM-12x180T`,
+ name: "Missile Defense System",
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 50,
+ attributes: ["Interception Capability", "Anti-Aircraft Special Ammo", "Anti-Aircraft Support"],
+ stats: {
+ duration: 6,
+ attacksPerRound: [1, 12],
+ cooldown: 5,
+ lockOnTime: 3,
+ targetPriority: {
+ antiship: {
+ position: 2,
+ damage: 2618,
+ priorities: [
+ [4, "Destroyer"],
+ [4, "Frigate"]
+ ]
+ },
+ antiair: {
+ position: 1,
+ damage: 1178,
+ priorities: [
+ [1, "Corvette"],
+ [2, "Fighter"],
+ [3, "Landing Ship"]
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ id: 129,
+ name: "Warspite",
+ title: "Assault Battleship",
+ img: "/ships/warspite_a.png",
+ type: "Battleship",
+ variant: "A",
+ variantName: "Super Type",
+ hasVariants: false,
+ manufacturer: "Empty",
+ direction: ["Empty"],
+ scope: "Empty",
+ weight: 0,
+ row: "Middle",
+ commandPoints: 45,
+ serviceLimit: 3,
+ modules: [
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M1",
+ name: `Bow-Mounted Ion Cannon System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 21000,
+ antiair: null,
+ siege: 7350,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `FI-800`,
+ name: `Heavy Ion Cannon`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 1050,
+ attributes: null,
+ stats: {
+ duration: 3,
+ damageFrequency: 3,
+ cooldown: 6,
+ lockOnTime: 12,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Battleship"],
+ [1, "Carrier"],
+ [1, "Battlecruiser"],
+ [1, "Cruiser"],
+ [2, "Auxiliary Ship"]
+ ],
+ damage: 21000
+ },
+ siege: {
+ position: 2,
+ damage: 7350
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "M2",
+ name: `Bow-Mounted High-Energy Bombardment System`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "weapon",
+ antiship: 21272,
+ antiair: null,
+ siege: 2127,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 1,
+ title: `FM-1x575`,
+ name: `Heavy High-Energy Bomber`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 780,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A1",
+ name: `Anti-Ship Torpedo System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 8280,
+ antiair: null,
+ siege: 3150,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `FT-4x160`,
+ name: `Missile Silo`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 125,
+ attributes: ["Crit"],
+ stats: {
+ duration: 20,
+ attacksPerRound: [4, 3],
+ cooldown: 20,
+ lockOnTime: 7,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 8280
+ },
+ siege: {
+ position: 2,
+ damage: 3150
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "A2",
+ name: `Projectile Weapon System`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "weapon",
+ antiship: 10000,
+ antiair: 2775,
+ siege: 3850,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 6,
+ title: `FM-1x205`,
+ name: `Missile Silo`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 60,
+ alpha: 110,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "B1",
+ name: `Siege Armed System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 6200,
+ antiair: null,
+ siege: 4480,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `FT-1-365C`,
+ name: `Siege Torpedo`,
+ damageType: "Projectile",
+ target: "Building",
+ lockonEfficiency: null,
+ alpha: 320,
+ attributes: ["Crit"],
+ stats: {
+ duration: 18,
+ attacksPerRound: [1, 3],
+ cooldown: 18,
+ lockOnTime: 7,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Auxiliary Ship"],
+ [1, "Battlecruiser"],
+ [2, "Carrier"],
+ [2, "Cruiser"]
+ ],
+ damage: 6200
+ },
+ siege: {
+ position: 2,
+ damage: 4480
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/aircraft.png",
+ system: "B2",
+ name: "Siege UAV System",
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: null,
+ siege: 6048,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "hanger",
+ count: 1,
+ title: `CST-6`,
+ name: "Siege UAV Pod",
+ hanger: "Siege UAV",
+ capacity: 4,
+ damageType: "Energy",
+ target: "Building",
+ lockonEfficiency: null,
+ alpha: 630,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "C1",
+ name: `Experimental Ion Cannon System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 9176,
+ antiair: null,
+ siege: 3211,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `FI-400T`,
+ name: `Experimental Ion Turret`,
+ damageType: "Energy",
+ target: "Small Ship",
+ lockonEfficiency: null,
+ alpha: 260,
+ attributes: null,
+ stats: {
+ duration: 12,
+ damageFrequency: 5,
+ cooldown: 22,
+ lockOnTime: 7,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 9176
+ },
+ siege: {
+ position: 2,
+ damage: 3211
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "C2",
+ name: `Ion Turret System`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "weapon",
+ antiship: 10400,
+ antiair: null,
+ siege: 7280,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `FI-550`,
+ name: `Siege Ion Turret`,
+ damageType: "Energy",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 520,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D1",
+ name: `Medium Anti-Ship Missile`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "weapon",
+ antiship: 9000,
+ antiair: 1530,
+ siege: 3569,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 4,
+ title: `FM-3x180`,
+ name: `Missile Vertical Launcher`,
+ damageType: "Projectile",
+ target: "Small Ship",
+ lockonEfficiency: 10,
+ alpha: 85,
+ attributes: ["Anti-Aircraft Counterattack"],
+ stats: {
+ duration: 12,
+ attacksPerRound: [3, 4],
+ cooldown: 12,
+ lockOnTime: 5,
+ targetPriority: {
+ antiship: {
+ position: 1,
+ priorities: [
+ [1, "Destroyer"],
+ [1, "Frigate"],
+ [2, "Battleship"],
+ [2, "Carrier"],
+ [2, "Battlecruiser"],
+ [2, "Cruiser"]
+ ],
+ damage: 9000
+ },
+ antiair: {
+ position: 2,
+ priorities: [
+ [3, "Corvette"],
+ [4, "Fighter"]
+ ],
+ damage: 1530
+ },
+ siege: {
+ position: 3,
+ damage: 3569
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "D2",
+ name: `Large Anti-Ship Missile`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "weapon",
+ antiship: 11100,
+ antiair: null,
+ siege: 3990,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 2,
+ title: `FM-1x450`,
+ name: `Missile Launcher`,
+ damageType: "Projectile",
+ target: "Large Ship",
+ lockonEfficiency: null,
+ alpha: 380,
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "E1",
+ name: `Standard Sacrum Chu Imperium Armor System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "armor",
+ extraHP: 284970,
+ armor: 270,
+ energyShield: 5,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `SC-100`,
+ name: `Ship Core`,
+ attributes: null
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: "AC-111",
+ name: "Sacrum Chu Imperium Super-Heavy Armor",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/armor.png",
+ system: "E2",
+ name: `Armor System`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "armor",
+ extraHP: 284970,
+ armor: 300,
+ energyShield: 10,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `SC-100`,
+ name: `Ship Core`,
+ attributes: null
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: "AC-150",
+ name: "Generic Super-Heavy Armor",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/speed.png",
+ system: "F1",
+ name: `Standard Sacrum Chu Imperium Propulsion System`,
+ sourcedFrom: null,
+ default: true,
+ stats: {
+ type: "propulsion",
+ cruise: 220,
+ warp: 1100,
+ hp: 30650
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `EN-111`,
+ name: `Sacrum Chu Imperium Vector Engine`,
+ attributes: null
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: "EC-111",
+ name: "Sacrum Chu Imperium Warp Drive",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/speed.png",
+ system: "F2",
+ name: `Propulsion System`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "propulsion",
+ cruise: 250,
+ warp: 1250,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `EN-600`,
+ name: `Generic Vector Engine`,
+ attributes: null
+ },
+ {
+ type: "misc",
+ count: 1,
+ title: "EC-600",
+ name: "Generic Warp Drive",
+ attributes: null
+ }
+ ]
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/jamming.png",
+ system: "G1",
+ name: `Ion Enhancement Device`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "armor",
+ armor: null,
+ extraHP: null,
+ energyShield: null,
+ hp: 27900
+ },
+ subsystems: [
+ {
+ type: "misc",
+ count: 1,
+ title: `RII-600`,
+ name: "Ion Energy Acceleration Device",
+ attributes: ["Increase Ion Damage"]
+ }
+ ]
+ },
+ {
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "G2",
+ unknown: true
+ },
+ {
+ type: "known",
+ img: "/weapons/icons/cannon.png",
+ system: "H1",
+ name: `Short-Range Anti-Aircraft System`,
+ sourcedFrom: ["WarpPrime"],
+ stats: {
+ type: "weapon",
+ antiship: null,
+ antiair: 5717,
+ siege: null,
+ hp: 28400
+ },
+ subsystems: [
+ {
+ type: "weapon",
+ count: 6,
+ title: `FM-2x90B`,
+ name: `Missile Vertical Launcher`,
+ damageType: "Projectile",
+ target: "Aircraft",
+ lockonEfficiency: 60,
+ alpha: 50,
+ attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft High-Speed Strike", "Anti-Aircraft Counterattack"]
+ }
+ ]
+ },
+ {
+ type: "unknown",
+ img: "/weapons/icons/unknown.png",
+ system: "H2",
+ unknown: true
+ }
+ ]
+ }
+ ];
+
+ return { data, difficulty };
+});
diff --git a/server/api/deleteBlueprint.ts b/server/api/deleteBlueprint.ts
new file mode 100644
index 0000000..aa29e96
--- /dev/null
+++ b/server/api/deleteBlueprint.ts
@@ -0,0 +1,38 @@
+import { MinifiedUserData } from "~/utils/types";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ accessToken: string;
+ accountIndex: number;
+}
+
+export default defineEventHandler(async (event) => {
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let newBlueprints: Record[]>[] | null = null;
+
+ try {
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data() as MinifiedUserData | undefined;
+
+ if (!userData) throw new Error("User not found.");
+ if (userData.uid !== body.uid || userData.accessToken !== body.accessToken) throw new Error("Invalid credentials.");
+
+ const existingBlueprints = userData.blueprints as Record[]>[];
+ existingBlueprints.splice(body.accountIndex, 1);
+
+ newBlueprints = existingBlueprints;
+
+ await db
+ .collection("users")
+ .doc(body.uid)
+ .update({ blueprints: existingBlueprints, bpLastSaved: new Date().toISOString().slice(0, 10) });
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", newBlueprints: null };
+ }
+
+ return { success: true, error: null, newBlueprints };
+});
diff --git a/server/api/deleteMail.ts b/server/api/deleteMail.ts
new file mode 100644
index 0000000..85724d6
--- /dev/null
+++ b/server/api/deleteMail.ts
@@ -0,0 +1,36 @@
+import { SaveTemplate, UserData } from "~/utils/types";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ accessToken: string;
+ mailId: string;
+}
+
+export default defineEventHandler(async (event) => {
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let outcomeMails: SaveTemplate[] | null = null;
+
+ try {
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data() as UserData | undefined;
+
+ if (!userData) throw new Error("User not found.");
+ if (userData.uid !== body.uid || userData.accessToken !== body.accessToken) throw new Error("Invalid credentials.");
+
+ const savedMails = userData.savedMails;
+ const mailIndex = savedMails.findIndex((mail) => mail.id === body.mailId);
+ if (mailIndex === -1) throw new Error("Mail not found.");
+
+ savedMails.splice(mailIndex, 1);
+ outcomeMails = savedMails;
+ await db.collection("users").doc(body.uid).update({ savedMails });
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null };
+ }
+
+ return { success: true, error: null, content: outcomeMails };
+});
diff --git a/server/api/equipment.ts b/server/api/equipment.ts
deleted file mode 100644
index dcccb67..0000000
--- a/server/api/equipment.ts
+++ /dev/null
@@ -1,348 +0,0 @@
-import { Equipment, TechnicalBlueprint } from "~/utils/equipmentData";
-
-export default defineEventHandler((event) => {
- const equipmentData: (Equipment | TechnicalBlueprint)[] = [{
- displayImg: "/equipment/advancedMilitaryOperationCenter.png",
- type: "Equipment",
- displayName: "Advanced Military Operation Center",
- effectName: "Operation Quantity Expansion",
- effectDescription: ["Increases the number of usable operations by ", "X", "."],
- loadWeight: 6,
- class: "Information"
- }, {
- displayImg: "/techBlueprints/aircraftLogisticsDevice.png",
- type: "Technical Blueprint",
- displayName: "Aircraft Logistics Device",
- effectName: "Reinforcement Aircraft",
- effectDescription: ["Makes a delivery to your own fleets, reinforcing up to ", "X [Aircraft/Corvette]", " squadron(s)."],
- deliveryTarget: "Single",
- itemMass: "Heavy",
- activeService: 5,
- productionInterval: "2 days",
- class: "Supply"
- }, {
- displayImg: "/equipment/antoniosStandardPartsAssemblyFacility.png",
- type: "Equipment",
- displayName: "Antonios Standard Parts Assembly Facility",
- effectName: "Ship Production Process Optimization",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building Antonios Consortium ships in the Base."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/techBlueprints/hectorRemoteControlMiningUAV.png",
- type: "Technical Blueprint",
- displayName: "Hector Remote-Control Mining UAV",
- effectName: "Remote Mining",
- effectDescription: ["Makes a delivery to any of your operations and mines a resource node inside the operation once, collecting ", "X", " resources."],
- deliveryTarget: "Range",
- itemMass: "Heavy",
- activeService: 5,
- productionInterval: "2 days",
- class: "Supply"
- }, {
- displayImg: "/techBlueprints/highIntensityWarpStabilizer.png",
- type: "Technical Blueprint",
- displayName: "High-Intensity Warp Stabilizer",
- effectName: "Warp Sharing",
- effectDescription: ["This can be launched anywhere within your activated Operation Area to generate a temporary Warping Stability Zone in the operation the target belong to. Friendly ships can warp drive to this operation at the speed of ",
- "X%", ". The warp stabilizing effect lasts for ", "X hours", "."],
- deliveryTarget: "Range",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Strategy"
- }, {
- displayImg: "/equipment/arbiterPlanningCenter.png",
- type: "Equipment",
- displayName: "Arbiter Planning Center",
- effectName: "Strategic Reserves",
- effectDescription: ["Increases the storage limit of Action Points by ", "X", "."],
- loadWeight: 7,
- class: "Information"
- }, {
- displayImg: "/techBlueprints/highPowerBroadcastBeacon.png",
- type: "Technical Blueprint",
- displayName: "High Power Broadcast Beacon",
- effectName: "Star System Broadcast",
- effectDescription: ["Allows information to be broadcast in the airspace within, ", "X Gm", " for ", "X hours", " after this is launched to an activated Operation."],
- deliveryTarget: "Range",
- itemMass: "Light",
- activeService: 5,
- productionInterval: "2 days",
- class: "Communicate"
- }, {
- displayImg: "/equipment/armedOutpostControlCore.png",
- type: "Equipment",
- displayName: "Armed Outpost Control Core",
- effectName: "Outpost Weaponization Plan",
- effectDescription: ["Unlocks the construction of Armed Outposts. Number of outposts that can be built: ", "X", "."],
- loadWeight: 6,
- class: "Engineering"
- }, {
- displayImg: "/equipment/autoRepairingArmor.png",
- type: "Equipment",
- displayName: "Auto-repairing Armor",
- effectName: "Base Maintenance and Upgrades",
- effectDescription: ["Increases the HP Recovery speed of the Base by ", "X%", "."],
- loadWeight: 5,
- class: "Engage"
- }, {
- displayImg: "/techBlueprints/militaryInformationConcealmentEquipment.png",
- type: "Technical Blueprint",
- displayName: "Military Information Concealment Equipment",
- effectName: "Vision Obscuration",
- effectDescription: ["Generates a temporary information and communication barrier with a radius of ", "X Gm", " at the activated operation. Up to ", "X",
- " fleet(s) of the same Squad/Community members in the barrier airspace will not be exposed to the direct vision of the opposing fleet for ", "X hours", "."],
- deliveryTarget: "Range",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Strategy"
- }, {
- displayImg: "/equipment/bvrAircraftGuidanceDevice.png",
- type: "Equipment",
- displayName: "BVR Aircraft Guidance Device",
- effectName: "Base Strategic Strike",
- effectDescription: ["The Base can execute Strategic Strike ", "[I or II]",
- " to command the Aircraft Defense Fleet in the base to launch a strategic strike on the targets within a ", "X°",
- " fan-shaped area with a ", "X Gm", " radius."],
- loadWeight: 7,
- class: "Engage"
- }, {
- displayImg: "/equipment/baseDefenseAndTrackingSystem.png",
- type: "Equipment",
- displayName: "Base Defense & Tracking System",
- effectName: "Base Defense: Multi-Target Counterattack",
- effectDescription: ["When defending the Base, all deployed Flagships in the Defense Fleet gain the flagship skill: Multi-Target Counterattack - When multiple fleets attack the fleet simultaneously, it launches a counterattack against ",
- "X", " sub-target fleet(s) with a counterattack efficiency of ", "X%", "."],
- loadWeight: 6,
- class: "Engage"
- }, {
- displayImg: "/equipment/basePlatformFireControlRadar.png",
- type: "Equipment",
- displayName: "Base Platform Fire Control Radar",
- effectName: "Base Defense: Aggressive Loss",
- effectDescription: ["When defending the base, all Flagships in the Defense Fleet gain the flagship skill: Agressive Loss - All fleet launch a focused and coordinated strike that prioritizes attacking ",
- "X", " target(s) within range of the selectable target."],
- loadWeight: 6,
- class: "Engage"
- }, {
- displayImg: "/techBlueprints/operationCoordinationSatellite.png",
- type: "Technical Blueprint",
- displayName: "Operation Coordination Satellite",
- effectName: "Operation Expansion",
- effectDescription: ["Expands the scope of your activated Fleet Operation Area by ", "X%", " for ", "X hours", "."],
- deliveryTarget: "Range",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Strategy"
- }, {
- displayImg: "/techBlueprints/festivePlasmaUAVSquadron.png",
- type: "Technical Blueprint",
- displayName: "Plasma UAV Squadron",
- effectName: "Festival Fireworks",
- effectDescription: ["Performs plasma UAV shows in the airspace around your buildings this is launched to for ", "X hours", "."],
- deliveryTarget: "Single",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Communicate"
- }, {
- displayImg: "/equipment/battlecruiserAssemblyWorkshop.png",
- type: "Equipment",
- displayName: "Battlecruiser Assembly Workshop",
- effectName: "Battlecruiser Special Assembly Process",
- effectDescription: ["Reduces the building time by ", "X%", " when building Battlecruisers in the Base."],
- loadWeight: 6,
- class: "Efficiency"
- }, {
- displayImg: "/equipment/centralDistrictComponentIntegrationPlatform.png",
- type: "Equipment",
- displayName: "Central District Component Integration Platform",
- effectName: "Modular Integration",
- effectDescription: ["Increases the construction speed of Central District facilities by ", "X%", "."],
- loadWeight: 6,
- class: "Efficiency"
- }, {
- displayImg: "/equipment/centralDistrictCoreModule.png",
- type: "Equipment",
- displayName: "Central District Core Module",
- effectName: "Facility Protection Construction Engineering",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building and upgrading facilities in the Base Central District."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/techBlueprints/prefabModuleTransporationUAV.png",
- type: "Technical Blueprint",
- displayName: "Prefab Module Transportation UAV",
- effectName: "Prefab Module Delivery",
- effectDescription: ["Makes a delivery to your own fleets, delivering up to ", "X", " Prefab Module(s) from the Base."],
- deliveryTarget: "Single",
- itemMass: "Heavy",
- activeService: 5,
- productionInterval: "2 days",
- class: "Supply"
- }, {
- displayImg: "/equipment/combatMicrochipCenter.png",
- type: "Equipment",
- displayName: "Combat Microchip Center",
- effectName: "Combat Microchip Output",
- effectDescription: ["Produces 1 Combat Microchip ", "(S/M/L)", " at the Base every ", "X hours", ", up to ", "X", "."],
- loadWeight: 6,
- class: "Information"
- }, {
- displayImg: "/equipment/cruiserExclusiveShipyard.png",
- type: "Equipment",
- displayName: "Cruiser Exclusive Shipyard",
- effectName: "Cruiser Special Assembly Process",
- effectDescription: ["Installs a dedicated shipyard that produces dedicated Company Cruisers with a production speed of ", "X%", "."],
- loadWeight: 6,
- class: "Efficiency"
- }, {
- displayImg: "/techBlueprints/privateerInfoRecognitionJammer.png",
- type: "Technical Blueprint",
- displayName: "Privateer Info Recognition Jammer",
- effectName: "Fleet Recognition Jammer",
- effectDescription: ["Can be used on a friendly fleet to change its Expanse Livery to the Privateer fleet version for ", "X hours", "."],
- deliveryTarget: "Single",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Command"
- }, {
- displayImg: "/equipment/industrialDistrictComponentIntegrationPlatform.png",
- type: "Equipment",
- displayName: "Industrial District Component Integration Platform",
- effectName: "Modular Integration",
- effectDescription: ["Increases the construction speed of Industrial District facilities by ", "X%", "."],
- loadWeight: 6,
- class: "Efficiency"
- }, {
- displayImg: "/equipment/industrialDistrictCoreModule.png",
- type: "Equipment",
- displayName: "Industrial District Core Module",
- effectName: "Facility Protection Construction Engineering",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building and upgrading facilities in the Base Industrial District."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/equipment/jupiterStandardPartsAssemblyFacility.png",
- type: "Equipment",
- displayName: "Jupiter Industries Standard Parts Assembly Facility",
- effectName: "Ship Production Process Optimization",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building Jupiter Industries ships in the Base."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/equipment/largeOutpostControlCore.png",
- type: "Equipment",
- displayName: "Large Outpost Control Core",
- effectName: "Outpost Region Control Plan",
- effectDescription: ["Unlocks the construction of ", "X", " Large Outpost(s) (Operation Area 2x2)."],
- loadWeight: 6,
- class: "Engineering"
- }, {
- displayImg: "/techBlueprints/reconnaissanceSatellite.png",
- type: "Technical Blueprint",
- displayName: "Reconnaissance Satellite",
- effectName: "Battlefield Reconnaissance",
- effectDescription: ["Makes a delivery to the operation, immediately conducting reconnaissance on up to ", "X",
- " non-friendly fleet(s) in the operation receiving the delivery, and generating corresponding reconnaissance battle reports. The chance of the reconnaissance being detected is ",
- "X%", "."],
- deliveryTarget: "Range",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Command"
- }, {
- displayImg: "/equipment/nomaStandardPartsAssemblyFacility.png",
- type: "Equipment",
- displayName: "NOMA Standard Parts Assembly Facility",
- effectName: "Ship Production Process Optimization",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building NOMA Shipping Group ships in the Base."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/techBlueprints/resourceRequestBeacon.png",
- type: "Technical Blueprint",
- displayName: "Resource Request Beacon",
- effectName: "Resource Supply",
- effectDescription: ["Requests a rather small amount of random resource packs from a Neutral or Ally-controlled Space Station."],
- deliveryTarget: "Single",
- itemMass: "Heavy",
- activeService: 5,
- productionInterval: "2 days",
- class: "Supply"
- }, {
- displayImg: "/equipment/portDistrictComponentIntegrationPlatform.png",
- type: "Equipment",
- displayName: "Port District Component Integration Platform",
- effectName: "Modular Integration",
- effectDescription: ["Increases the construction speed of Port District facilities by ", "X%", "."],
- loadWeight: 6,
- class: "Efficiency"
- }, {
- displayImg: "/equipment/portDistrictCoreModule.png",
- type: "Equipment",
- displayName: "Port District Core Module",
- effectName: "Facility Protection Construction Engineering",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building and upgrading facilities in the Base Port District."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/equipment/quickOutpostControlCore.png",
- type: "Equipment",
- displayName: "Quick Outpost Control Core",
- effectName: "Outpost Coordinating Production Engineering",
- effectDescription: ["Unlock the construction of Quick Outposts. Number of outposts of this type that can be built: ", "X", "."],
- loadWeight: 6,
- class: "Engineering"
- }, {
- displayImg: "/techBlueprints/spaceOperationPlanningCoordinator.png",
- type: "Technical Blueprint",
- displayName: "Space Operation Planning Coordinator",
- effectName: "Strategic Planning",
- effectDescription: ["Reduces the Action Points consumed by the next ", "X", " delivery operation(s) of fleets by ", "X", " for ", "X hours", "."],
- deliveryTarget: "Range",
- itemMass: "Light",
- activeService: 2,
- productionInterval: "2 days",
- class: "Command"
- }, {
- displayImg: "/equipment/resourceMiningUAVSquadron.png",
- type: "Equipment",
- displayName: "Resource Mining UAV Squadron",
- effectName: "Interstellar Space Dust Fixation Technology",
- effectDescription: ["Increases the ", "[Metal/Crytal/Deuterium]", " yield by ", "X%", " when the Base is in a Scattered Asteroid Belt."],
- loadWeight: 6,
- class: "Engineering"
- }, {
- displayImg: "/equipment/dawnStandardPartsAssemblyFacility.png",
- type: "Equipment",
- displayName: "SPL Dawn Standardized Module Assembly Facility",
- effectName: "Ship Production Process Optimization",
- effectDescription: ["Reduces resource consumption by ", "X%", " when building Dawn Accord Organization ships in the Base."],
- loadWeight: 6,
- class: "Logistics"
- }, {
- displayImg: "/equipment/productionCoordinationController.png",
- type: "Equipment",
- displayName: "Ship Production Coordination Controller",
- effectName: "Shipyard Queue Coordination Technology",
- effectDescription: ["Increases the production queue limit of the Base shipyard by ", "X",
- ", which can be allocated to build ships of ", "[a Manufacturing Company]", "."],
- loadWeight: 5,
- class: "Efficiency"
- }, {
- displayImg: "/equipment/tradeCommunicationRelayStation.png",
- type: "Equipment",
- displayName: "Trade Communication Relay Station",
- effectName: "Commissioned Production",
- effectDescription: ["Allows commissioned galactic factions to produce ", "[Fighters/Frigates/Cruisers]",
- " with a production time reduction of ", "X%", " and a production interval of ", "X hours", "."],
- loadWeight: 6,
- class: "Information"
- }];
- return equipmentData;
-});
\ No newline at end of file
diff --git a/server/api/getAlert.ts b/server/api/getAlert.ts
new file mode 100644
index 0000000..09d9b34
--- /dev/null
+++ b/server/api/getAlert.ts
@@ -0,0 +1,20 @@
+import { Alert } from "~/utils/types";
+import admin from "firebase-admin";
+
+export default defineEventHandler(async () => {
+ const db = admin.firestore();
+
+ let returnData: Alert | null = null;
+
+ try {
+ const querySnapshot = await db.collection("alerts").orderBy("date", "desc").limit(1).get();
+ if (querySnapshot.empty) throw new Error("No alerts found.");
+
+ returnData = querySnapshot.docs[0].data() as Alert;
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null };
+ }
+
+ return { success: true, error: null, content: returnData };
+});
diff --git a/server/api/getBlueprints.ts b/server/api/getBlueprints.ts
new file mode 100644
index 0000000..6aebdaf
--- /dev/null
+++ b/server/api/getBlueprints.ts
@@ -0,0 +1,36 @@
+import { getObjectKey, getObjectValue } from "~/utils/functions";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ accountIndex: number;
+}
+
+export default defineEventHandler(async (event) => {
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let blueprints: (string | number)[][] = [];
+ let lastSaved: string | null = null;
+ let accountName: string | null = null;
+
+ try {
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data();
+
+ if (!userData) throw new Error("User not found.");
+
+ if (!userData.bpLastSaved || userData.blueprints[body.accountIndex] === undefined || (getObjectValue(userData.blueprints[body.accountIndex]) as Record[]).length === 0)
+ throw new Error("No blueprints found.");
+
+ accountName = getObjectKey(userData.blueprints[body.accountIndex]);
+ const ships = getObjectValue(userData.blueprints[body.accountIndex]) as Record[];
+ blueprints = ships.map((ship) => [Number(getObjectKey(ship)), getObjectValue(ship)].flat());
+ lastSaved = userData.bpLastSaved;
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null, lastSaved: null, accountName: null };
+ }
+
+ return { success: true, error: null, content: blueprints, lastSaved, accountName };
+});
diff --git a/server/api/getMail.ts b/server/api/getMail.ts
new file mode 100644
index 0000000..fcf709e
--- /dev/null
+++ b/server/api/getMail.ts
@@ -0,0 +1,33 @@
+import { SaveTemplate, TruncatedOp, UserData } from "~/utils/types";
+import { untruncateOps } from "~/utils/functions";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ mailId: string;
+}
+
+export default defineEventHandler(async (event) => {
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let mail: SaveTemplate | null = null;
+
+ try {
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data() as UserData | undefined;
+
+ if (!userData) throw new Error("User not found.");
+
+ const foundMail = userData.savedMails.find((mail) => mail.id === body.mailId);
+ if (!foundMail) throw new Error("Mail not found.");
+
+ foundMail.ops = untruncateOps(foundMail.ops as TruncatedOp[]);
+ mail = foundMail;
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null };
+ }
+
+ return { success: true, error: null, content: mail };
+});
diff --git a/server/api/getUser.ts b/server/api/getUser.ts
new file mode 100644
index 0000000..53ae00d
--- /dev/null
+++ b/server/api/getUser.ts
@@ -0,0 +1,38 @@
+import { TruncatedOp, UserData } from "~/utils/types";
+import { untruncateOps } from "~/utils/functions";
+import { origins } from "~/utils/general";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ accessToken: string;
+ updateOrigin: boolean;
+}
+
+export default defineEventHandler(async (event) => {
+ const config = useRuntimeConfig();
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let returnData: UserData | null = null;
+
+ try {
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data() as UserData | undefined;
+
+ if (!userData) throw new Error("User not found.");
+ if (userData.uid !== body.uid || userData.accessToken !== body.accessToken) throw new Error("Invalid credentials.");
+
+ userData.lastLoggedIn = new Date().toISOString().slice(0, 10);
+ if (body.updateOrigin) userData.origin = origins[config.public.baseUrl] ?? "U";
+ await db.collection("users").doc(body.uid).update(userData);
+
+ userData.savedMails.forEach((mail) => (mail.ops = untruncateOps(mail.ops as TruncatedOp[])));
+ returnData = userData;
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null };
+ }
+
+ return { success: true, error: null, content: returnData };
+});
diff --git a/server/api/saveBlueprints.ts b/server/api/saveBlueprints.ts
new file mode 100644
index 0000000..1841676
--- /dev/null
+++ b/server/api/saveBlueprints.ts
@@ -0,0 +1,60 @@
+import { BlueprintAllShip } from "~/utils/blueprints";
+import { getObjectValue } from "~/utils/functions";
+import { MinifiedUserData } from "~/utils/types";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ accessToken: string;
+ blueprints: BlueprintAllShip[] | null;
+ accountIndex: number;
+ accountName: string;
+}
+
+export default defineEventHandler(async (event) => {
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let newBlueprints: Record[]>[] | null = null;
+
+ try {
+ if (body.accountIndex > 9) throw new Error("You can only have 10 saved accounts at the moment. Sorry!");
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data() as MinifiedUserData | undefined;
+
+ if (!userData) throw new Error("User not found.");
+ if (userData.uid !== body.uid || userData.accessToken !== body.accessToken) throw new Error("Invalid credentials.");
+
+ const existingBlueprints = userData.blueprints as Record[]>[];
+ if (!body.blueprints && !existingBlueprints[body.accountIndex]) throw new Error("Account not saved.");
+
+ const blueprints = !body.blueprints
+ ? null
+ : (body.blueprints
+ .map((ship) => {
+ // @ts-expect-error Importing `BlueprintAllShip` doesnt get all parameters for some reason
+ if (!ship.unlocked) return { [ship.id]: [] };
+ // @ts-expect-error Importing `BlueprintAllShip` doesnt get all parameters for some reason
+ if (!("modules" in ship)) return { [ship.id]: [ship.variant, ship.techPoints] };
+ // @ts-expect-error Importing `BlueprintAllShip` doesnt get all parameters for some reason
+ return { [ship.id]: [ship.variant, ship.techPoints, ship.modules.filter((mod) => mod.unlocked).map((mod) => mod.system)].flat() };
+ })
+ .filter((obj) => getObjectValue(obj).length > 0) as Record[]);
+
+ existingBlueprints[body.accountIndex] = {
+ [body.accountName]: blueprints ? blueprints : getObjectValue(existingBlueprints[body.accountIndex])
+ };
+
+ newBlueprints = existingBlueprints;
+
+ await db
+ .collection("users")
+ .doc(body.uid)
+ .update({ blueprints: existingBlueprints, bpLastSaved: new Date().toISOString().slice(0, 10) });
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", newBlueprints: null };
+ }
+
+ return { success: true, error: null, newBlueprints };
+});
diff --git a/server/api/saveMail.ts b/server/api/saveMail.ts
new file mode 100644
index 0000000..b86bc6a
--- /dev/null
+++ b/server/api/saveMail.ts
@@ -0,0 +1,59 @@
+import { getRandomCharacters, truncateOps, untruncateOps } from "~/utils/functions";
+import { SaveTemplate, TruncatedOp, UserData } from "~/utils/types";
+import admin from "firebase-admin";
+
+interface Body {
+ uid: string;
+ accessToken: string;
+ template: SaveTemplate;
+}
+
+export default defineEventHandler(async (event) => {
+ const body = (await readBody(event)) as Body;
+ const db = admin.firestore();
+
+ let newMail: SaveTemplate | null = null;
+ let outcomeMails: SaveTemplate[] | null = null;
+
+ try {
+ const docData = await db.collection("users").doc(body.uid).get();
+ const userData = docData.data() as UserData | undefined;
+
+ if (!userData) throw new Error("User not found.");
+ if (userData.uid !== body.uid || userData.accessToken !== body.accessToken) throw new Error("Invalid credentials.");
+
+ const template = body.template;
+ if (!template.ops.every((op) => "insert" in op)) throw new Error("Invalid ops.");
+ if (template.name.length > 50) throw new Error("Names can only be 50 characters long.");
+
+ const savedMails = userData.savedMails;
+ if (savedMails.length >= 30) throw new Error("You can only have 30 saved mails. Try deleting some.");
+
+ const namespaceCollision = savedMails.findIndex((mail) => mail.name === template.name);
+ const isSame = namespaceCollision !== -1;
+
+ const id = isSame ? savedMails[namespaceCollision].id : getRandomCharacters(10);
+ template.id = id;
+ template.createdAt = isSame ? savedMails[namespaceCollision].createdAt : new Date().toISOString().slice(0, 10);
+ template.lastSaved = new Date().toISOString().slice(0, 10);
+
+ if (isSame) savedMails.splice(namespaceCollision, 1);
+
+ const savedMailsCopy = JSON.parse(JSON.stringify(savedMails)) as SaveTemplate[];
+ savedMailsCopy.forEach((mail) => (mail.ops = untruncateOps(mail.ops as TruncatedOp[])));
+ newMail = JSON.parse(JSON.stringify(template)) as SaveTemplate;
+ savedMailsCopy.unshift(newMail);
+ outcomeMails = savedMailsCopy;
+
+ // Condense for storage saving
+ template.ops = truncateOps(template.ops);
+ savedMails.unshift(template);
+
+ await db.collection("users").doc(body.uid).update({ savedMails });
+ } catch (error) {
+ console.error(error);
+ return { success: false, error: error instanceof Error ? error.message : "Something went wrong. Try again later.", content: null, outcomeMails: null };
+ }
+
+ return { success: true, error: null, content: newMail, outcomeMails };
+});
diff --git a/server/api/ships.ts b/server/api/ships.ts
deleted file mode 100644
index aca9f72..0000000
--- a/server/api/ships.ts
+++ /dev/null
@@ -1,12295 +0,0 @@
-import { Ship } from "~/utils/shipData";
-
-export default defineEventHandler((event) => {
- const data: Ship[] = [{
- name: "AT021",
- title: "Pulse Attacker",
- img: "/ships/at021_a.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Pulse Cannon Type",
- manufacturer: "Dawn Accord",
- direction: ["Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 15,
- aircraftPerSquadron: 3,
- production: {
- metal: 5600,
- crystal: 450,
- deuterium: 240,
- timeSeconds: 810,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Pulse Cannon System`,
- main: true,
- maxUpgradeSlots: 5,
- baseAntiship: 494,
- baseAntiair: 296,
- baseSiege: 14,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Delayed Attack",
- img: "/weapons/upgrades/strategies/at021a_1.svg",
- strategy: true,
- description: ["After the battle begins, extend the lock-on time of the first 2 rounds of attacks by ", "40%", " and increases the Hit Rate of the main weapon by ", "40%", "."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Enhance Recharge Power",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Enhance Pulse Focus",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Firing Assistance Enhancement",
- img: "/weapons/upgrades/smallHitrate.svg",
- description: ["Increases weapon system Hit Rate against frigates/destroyers by ", "3%"],
- maxTiers: 5,
- affectedStat: "smallHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Large Target Correction",
- img: "/weapons/upgrades/bigHitrate.svg",
- description: ["Increases weapon system Hit Rate against cruisers and higher-class ships by ", "3%"],
- maxTiers: 5,
- affectedStat: "bigHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Charging Device Enhancement",
- img: "/weapons/upgrades/energyCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Pipeline Cooling Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }]
- }, {
- type: "energy",
- name: `Airborne Energy System`,
- maxUpgradeSlots: 2,
- baseDmgBuff: 1.15,
- systemAdjustment: null,
- img: "/weapons/icons/jamming.png",
- upgrades: [{
- name: "Energy Core Output Increase",
- img: "/weapons/upgrades/energyHitrate.svg",
- description: ["Increases main pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Energy Core Output Increase",
- img: "/weapons/upgrades/energyHitrate.svg",
- description: ["Increases main pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Energy Storage",
- img: "/weapons/upgrades/energyCooldown.svg",
- description: ["Increases the main pulse cannon's Duration by ", "40%", " and Rounds Per Cycle by ", "1", "."],
- maxTiers: 2,
- affectedStat: "damage",
- percentBuffPerTier: 1.188259,
- tpPerTier: 10
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 2,
- systemAdjustment: "hp",
- baseHp: 4920,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "1.6%"],
- maxTiers: 5,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.016,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "AT021",
- title: "Tactical Attacker",
- img: "/ships/at021_b.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "B",
- variant_name: "Interference Type",
- manufacturer: "Dawn Accord",
- direction: ["Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 15,
- aircraftPerSquadron: 3,
- production: {
- metal: 5520,
- crystal: 430,
- deuterium: 230,
- timeSeconds: 770,
- storage: 0
- },
- systems: [{
- type: "jamming",
- name: "Electronic Jamming System",
- main: true,
- maxUpgradeSlots: 7,
- systemAdjustment: "jamming",
- img: "/weapons/icons/jamming.png",
- upgrades: [{
- name: "Failure Adjustment",
- strategy: true,
- img: "/weapons/upgrades/strategies/at021b_1.svg",
- description: ["Interferes again and increases the inbound time by ", "35%", " when failing to interfere."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }, {
- name: "Jamming Enhancement",
- img: "/weapons/upgrades/jammingCooldown.svg",
- description: ["Increases jamming duration by ", "6%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Jamming Equipment Enhancement",
- img: "/weapons/upgrades/jammingCooldown.svg",
- description: ["Increases jamming duration by ", "6%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Weapon Heatsink Efficiency",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Interference Cover",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Reduces the chances of being hit by direct-fire weapons by ", "30%", " but reduces the interference effect duration by ", "50%", "."],
- maxTiers: 1,
- affectedStat: "directEvasion",
- percentBuffPerTier: 1.3,
- tpPerTier: 9
- }, {
- name: "Disperse Interference",
- img: "/weapons/upgrades/railgunHitrate.svg",
- description: ["Prioritizes unjammed targets"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 9
- }, {
- name: "Electronic Cover",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Reduces the effect Lock-On Efficiency of anti-aircraft weapons has on you and the aircraft within the same carrier by ", "10%", " (effects of the same type cannot stack)"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }]
- }, {
- type: "weapon",
- name: "Airborne Weapon System",
- maxUpgradeSlots: 4,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- baseAntiship: 281,
- baseAntiair: 225,
- baseSiege: 32,
- upgrades: [{
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 3
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 3
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Firing Assistance Enhancement",
- img: "/weapons/upgrades/smallHitrate.svg",
- description: ["Increases weapon system Hit Rate against frigates/destroyers by ", "15%"],
- maxTiers: 1,
- affectedStat: "smallHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 2,
- img: "/weapons/icons/armor.png",
- systemAdjustment: "hp",
- baseHp: 4920,
- baseArmor: 0,
- baseEnergyShield: 0,
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- img: "/weapons/icons/speed.png",
- baseCruise: 3000,
- baseWarp: 0,
- baseEvasion: 1.1,
- upgrades: [{
- name: "Aerial Mobility Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "1.6%"],
- maxTiers: 5,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.016,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Dynamic Thrust Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "1.6%"],
- maxTiers: 5,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.016,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Missile Evasion Enhancement",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3%"],
- maxTiers: 5,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- img: "/weapons/icons/command.png",
- systemAdjustment: null,
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increase the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "AT021",
- title: "Heavy Attacker",
- img: "/ships/at021_c.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "C",
- variant_name: "Multi-Role Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 15,
- aircraftPerSquadron: 3,
- production: {
- metal: 6100,
- crystal: 480,
- deuterium: 170,
- timeSeconds: 710,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: "Precision Strike System",
- img: "/weapons/icons/cannon.png",
- main: true,
- maxUpgradeSlots: 5,
- systemAdjustment: "weaponDamage",
- baseAntiship: 540,
- baseAntiair: 0,
- baseSiege: 57,
- upgrades: [{
- name: "Multi-Target Strategy",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["Attacks every 2 rounds, with the main weapon now attacking ", "2", " targets. Increases weapon damage by ", "75%", " and reduces Hit Rate against the target's loading system by ", "10%", "."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Sustained Output Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Increases the weapon system's Duration by ", "50%", " and Rounds Per Cycle by ", "3", "."],
- maxTiers: 2,
- affectedStat: "damage",
- percentBuffPerTier: 1.2,
- tpPerTier: 10
- }, {
- name: "Fast Rearmament",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }]
- }, {
- type: "weapon",
- name: "Airborne Guiding System",
- img: "/weapons/icons/cannon.png",
- maxUpgradeSlots: 3,
- systemAdjustment: "weaponDamage",
- baseAntiship: 582,
- baseAntiair: 0,
- baseSiege: 72,
- upgrades: [{
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Large Target Correction",
- img: "/weapons/upgrades/bigHitrate.svg",
- description: ["Increases weapon system Hit Rate against cruisers and higher-class ships by ", "3%"],
- maxTiers: 5,
- affectedStat: "bigHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Large Target Correction",
- img: "/weapons/upgrades/bigHitrate.svg",
- description: ["Increases weapon system Hit Rate against cruisers and higher-class ships by ", "3%"],
- maxTiers: 5,
- affectedStat: "bigHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Fast Rearmament",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 2,
- img: "/weapons/icons/armor.png",
- systemAdjustment: "hp",
- baseHp: 4920,
- baseArmor: 0,
- baseEnergyShield: 0,
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- img: "/weapons/icons/speed.png",
- baseCruise: 3000,
- baseWarp: 0,
- baseEvasion: 1.1,
- upgrades: [{
- name: "Dynamic Thrust Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "1.6%"],
- maxTiers: 5,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.016,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Missile Evasion Enhancement",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3%"],
- maxTiers: 5,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- img: "/weapons/icons/command.png",
- systemAdjustment: null,
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increase the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "B192 Newland",
- title: "Heavy Attacker",
- img: "/ships/b192newland.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Multi-Role Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 3,
- production: {
- metal: 7300,
- crystal: 660,
- deuterium: 290,
- timeSeconds: 1060,
- storage: 0
- },
- systems: [{
- type: 'weapon',
- name: "Assault Cannon System",
- img: "/weapons/icons/cannon.png",
- main: true,
- maxUpgradeSlots: 6,
- systemAdjustment: "weaponDamage",
- baseAntiship: 428,
- baseAntiair: 0,
- baseSiege: 90,
- upgrades: [{
- name: "Precision Strike",
- img: "/weapons/upgrades/strategies/heavyAmmo.svg",
- description: ["Prioritizes attacks on super capital ships and increases the Extra Damage against the target's systems by ", "60%", " every ", "40", "s for ", "40", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Ammo Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Firing Assistance Enhancement",
- img: "/weapons/upgrades/smallHitrate.svg",
- description: ["Increases weapon system Hit Rate against frigates/destroyers by ", "3%"],
- maxTiers: 5,
- affectedStat: "smallHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Fast Rearmament",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }]
- }, {
- type: 'weapon',
- name: "Anti-Aircraft Missile System",
- img: "/weapons/icons/cannon.png",
- maxUpgradeSlots: 4,
- systemAdjustment: "weaponDamage",
- baseAntiship: 0,
- baseAntiair: 360,
- baseSiege: 0,
- upgrades: [{
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 3
- }, {
- name: "Aircraft Weakpoint Detection",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Damage against aerial targets by ", "20%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.2,
- tpPerTier: 3
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "10%", " and torpedo Hit Rate by ", "10%"],
- maxTiers: 1,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.1,
- tpPerTier: 3
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- img: "/weapons/icons/armor.png",
- systemAdjustment: "hp",
- baseHp: 4680,
- baseArmor: 0,
- baseEnergyShield: 0,
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- img: "/weapons/icons/speed.png",
- baseCruise: 3000,
- baseWarp: 0,
- baseEvasion: 1.1,
- upgrades: [{
- name: "Dynamic Thrust Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- img: "/weapons/icons/command.png",
- systemAdjustment: null,
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on super capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increase the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "BR050",
- title: "Standard Bomber",
- img: "/ships/br050_a.png",
- type: "Fighter",
- fighter_type: "Large",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 2,
- production: {
- metal: 6640,
- crystal: 620,
- deuterium: 190,
- timeSeconds: 830,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Bombardment System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 1885,
- baseAntiair: 0,
- baseSiege: 675,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "High-Speed Torpedo",
- img: "/weapons/upgrades/strategies/br050a_1.svg",
- strategy: true,
- description: ["Every ", "3", " round(s), the system's torpedo launchers are reloaded with high-speed torpedoes, reducing the chance of being intercepted by ", "40%", " and increasing the damage against systems by ", "35%", " upon hitting."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Siege Ammo Enhancement",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "City Weak Point Identification",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Stealth Processing",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 4,
- systemAdjustment: "hp",
- baseHp: 5040,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Rigidity Enhancement",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }, {
- name: "Armor Hardening Process",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.2,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on small capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "Target Tracing Enhancement",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of all aircraft's weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "BR050",
- title: "Multi-Role Bomber",
- img: "/ships/br050_b.png",
- type: "Fighter",
- fighter_type: "Large",
- variant: "B",
- variant_name: "Defense Type",
- manufacturer: "Dawn Accord",
- direction: ["Sustained Combat", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 2,
- production: {
- metal: 6180,
- crystal: 590,
- deuterium: 230,
- timeSeconds: 890,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Bombardment System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 1257,
- baseAntiair: 0,
- baseSiege: 450,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Siege Ammo Enhancement",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "City Weak Point Identification",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Stealth Processing",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "misc",
- name: "Electronic Defense System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/jamming.png",
- baseEvasion: 1.25,
- upgrades: [{
- name: "Enhanced Interference",
- strategy: true,
- img: "/weapons/upgrades/strategies/br050b_1.svg",
- description: ["For the first ", "60", "s of battle, further reduces the hit rate of attacks from enemy aircraft against you by ", "50%", "."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 4,
- systemAdjustment: "hp",
- baseHp: 5040,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Rigidity Enhancement",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }, {
- name: "Armor Hardening Process",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- baseEvasion: 1.1,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.2,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on small capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "Target Tracing Enhancement",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of all aircraft's weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "BR050",
- title: "Torpedo Bomber",
- img: "/ships/br050_c.png",
- type: "Fighter",
- fighter_type: "Large",
- variant: "C",
- variant_name: "Torpedo Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 2,
- production: {
- metal: 7200,
- crystal: 800,
- deuterium: 280,
- timeSeconds: 1120,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Experimental Special Torpedo Launching System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 321,
- baseAntiair: 0,
- baseSiege: 127,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Siege Ammo Enhancement",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "City Weak Point Identification",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Redues Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo Stealth Processing",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Special Torpedo Launching",
- img: "/weapons/upgrades/br050c_1.svg",
- description: ["Load the torpedo launcher with armor-melting torpedoes, granting ", "15%", "chance to inflict the ", "Armor Melting", " status on the target upon hitting. ", "Armor Melting", ": Suffer ", "80", " point(s) of special damage for ", "60", "s. This effect can exist up to ", "10", " layer(s). If the target is a building, then the damage is reduced by 75%."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 10
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 4,
- systemAdjustment: "hp",
- baseHp: 5040,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Rigidity Enhancement",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }, {
- name: "Armor Hardening Process",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- baseEvasion: 1.1,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.2,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on small capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "Target Tracing Enhancement",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of all aircraft's weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Balancer Anderson SC020",
- title: "Scout",
- img: "/ships/sc020.png",
- type: "Fighter",
- fighter_type: "Small",
- variant: "A",
- variant_name: "Interference Type",
- manufacturer: "Antonios",
- direction: ["Sustained Combat", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 5,
- production: {
- metal: 6030,
- crystal: 400,
- deuterium: 160,
- timeSeconds: 630,
- storage: 0
- },
- systems: [{
- type: "jamming",
- name: "Airborne Jamming System",
- main: true,
- maxUpgradeSlots: 7,
- systemAdjustment: "jamming",
- img: "/weapons/icons/jamming.png",
- upgrades: [{
- name: "Dodge Damage",
- strategy: true,
- img: "/weapons/upgrades/strategies/sc020_1.svg",
- description: ["When attacked by enemy aircraft, it gives up its target and retreats to its carrier for ", "40", "s. Cooldown: ", "20", "s"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }, {
- name: "Jamming Enhancement",
- img: "/weapons/upgrades/jammingCooldown.svg",
- description: ["Increases jamming duration by ", "6%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Jamming Equipment Enhancement",
- img: "/weapons/upgrades/jammingCooldown.svg",
- description: ["Increases jamming duration by ", "6%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Weapon Cooling Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Weapon Heatsink Efficiency",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Guidance Detection Jamming",
- img: "/weapons/upgrades/missileEvasion.svg",
- description: ["Reduces the chance of being hit by guided weapons by ", "4%"],
- maxTiers: 5,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.04,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Counter-Attack Info Gathering",
- img: "/weapons/upgrades/directEvasion.svg",
- description: ["Reduces the chances of being hit by direct-fire weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: "directEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Electronic Cover",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Reduces the effect Lock-On Efficiency of anti-aircraft weapons has on you and the aircraft within the same carrier by ", "10%", " (effects of the same type cannot stack)"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }]
- }, {
- type: "weapon",
- name: `Airborne Cannon System`,
- maxUpgradeSlots: 4,
- baseAntiship: 30,
- baseAntiair: 172,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/strategies/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 2
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/strategies/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 2
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/strategies/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/strategies/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/strategies/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/strategies/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 3450,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Energy Coating",
- img: "/weapons/upgrades/energyShield.svg",
- description: ["Increases Energy Resistance by ", "2%"],
- maxTiers: 5,
- affectedStat: "energyShield",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Low-Reflective Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by direct-fire weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: "directEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Aerial Mobility Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Dynamic Thrust Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Emergency Evasion System Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Nozzle Masking Process",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.037,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "8%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: [2, 2, 2, 3, 3]
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Bullfrog",
- title: "Dual-Purpose Bomber",
- img: "/ships/bullfrog.png",
- type: "Fighter",
- fighter_type: "Large",
- variant: "A",
- variant_name: "Siege Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 2,
- production: {
- metal: 7130,
- crystal: 500,
- deuterium: 190,
- timeSeconds: 770,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Bombardment System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 960,
- baseAntiair: 0,
- baseSiege: 440,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Concentrated Attacks",
- img: "/weapons/upgrades/strategies/bullfrog_1.svg",
- strategy: true,
- description: ["Prioritizes attacks on super capital ships, increases Rounds Per Cycle by ", "2", ", Attack Duration by ", "30%", ", and Cooldown by ", "30%", " every ", "30", "s for ", "40", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Siege Ammo Enhancement",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "City Weak Point Identification",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Stealth Processing",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 4,
- systemAdjustment: "hp",
- baseHp: 4740,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Rigidity Enhancement",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }, {
- name: "Armor Hardening Process",
- img: "/weapons/upgrades/armor.svg",
- description: ["Increases Physical Resistance by ", "1"],
- maxTiers: 3,
- affectedStat: "armor",
- percentBuffPerTier: 1,
- tpPerTier: [1, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on small capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Hayreddin's Loyal",
- title: "Pulsar Fighter",
- img: "/ships/hayreddinsLoyal.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Special Type",
- manufacturer: "Empty",
- direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 1,
- maxInFleet: 8,
- aircraftPerSquadron: 3,
- production: {
- metal: 9760,
- crystal: 900,
- deuterium: 490,
- timeSeconds: 1590,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `"Starchaser" Charged Pulse Cannon System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 1538,
- baseAntiair: 738,
- baseSiege: 507,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Charged Phase Strike",
- img: "/weapons/upgrades/strategies/hayreddin_1.svg",
- strategy: true,
- description: ["The Charged Pulse weapon's damage increases by 12% for every 2 consecutive rounds it attacks the same target, up to 24%. THis bonus is reset after switching targets."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 18
- }, {
- name: "Enhance Recharge Power",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Enhance Pulse Focus",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Enhance Pulse Focus",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Energy Control System Enhancement",
- img: "/weapons/upgrades/energyHitrate.svg",
- description: ["Increases all pulse cannon Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Weapon Heatsink Efficiency",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Rapid Firing",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces the weapon system's Firing Duration by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rapid Firing",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces the weapon system's Firing Duration by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 6480,
- baseArmor: 3,
- baseEnergyShield: 1.05,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Low-Reflection Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by direct-fire weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: "directEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Aircraft Stealth Coating",
- img: "/weapons/upgrades/reduceCritDamage.svg",
- description: ["Increases enemy weapon lock-on time by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- baseEvasion: 1.25,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "1.6%"],
- maxTiers: 5,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.016,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Aerial Mobility Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "1.6%"],
- maxTiers: 5,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.016,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Missile Evasion Enhancement",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3%"],
- maxTiers: 5,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Janbiya Aer410",
- title: "Assault Attacker",
- img: "/ships/janbiyaAer410.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 3,
- production: {
- metal: 6070,
- crystal: 480,
- deuterium: 200,
- timeSeconds: 770,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Gun/Missile Attack System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 472,
- baseAntiair: 396,
- baseSiege: 82,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Precision Strike",
- img: "/weapons/upgrades/strategies/janbiya_1.svg",
- strategy: true,
- description: ["The system's primary weapon has a ", "15%", " chance to deal an additional ", "170%", " Crit Damage to the enemy target every ", "35", "s for ", "35", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Reactive Explosive Warhead",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Flexibility",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Reduces the chance of all missiles being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 2,
- systemAdjustment: "hp",
- baseHp: 4050,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 4,
- systemAdjustment: null,
- baseCruise: 3500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Aircraft Charging Stance",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases the Hit Rate of the aircraft's weapons by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.037,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on super capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Mistral",
- title: "Combat Attacker",
- img: "/ships/mistral.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Antonios",
- direction: ["Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 4,
- production: {
- metal: 7520,
- crystal: 650,
- deuterium: 220,
- timeSeconds: 930,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Weapon System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 58,
- baseAntiair: 558,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Pursue Targets",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["When the target's HP falls below ", "20%", ", it increases attack chances in a single round by ", "1", " and reduces Attack Interval by ", "40%", "."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Fire Control Computer Enhancement",
- img: "/weapons/upgrades/energyHitrate.svg",
- description: ["Increases all cannon Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Weak Point Detection Enhancement",
- img: "/weapons/upgrades/critDamage2.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Aiming Speed Enhancement",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Focus on Aerial Targets",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["Prioritizes fighters and interceptors"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 10
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 2,
- systemAdjustment: "hp",
- baseHp: 5400,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 4,
- systemAdjustment: null,
- baseCruise: 3100,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Aircraft Charging Stance",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases the Hit Rate of the aircraft's weapons by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.037,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's prmary weapon prioritizes its attack on super capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "SC002",
- title: "Quantum Scout",
- img: "/ships/sc002.png",
- type: "Fighter",
- fighter_type: "Small",
- variant: "A",
- variant_name: "Generic Type",
- manufacturer: "Dawn Accord",
- direction: ["Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 15,
- aircraftPerSquadron: 5,
- production: {
- metal: 4160,
- crystal: 300,
- deuterium: 140,
- timeSeconds: 510,
- storage: 0
- },
- systems: [{
- type: "jamming",
- name: "Electronic Recon System",
- main: true,
- maxUpgradeSlots: 7,
- systemAdjustment: "jamming",
- img: "/weapons/icons/jamming.png",
- upgrades: [{
- name: "Dodge Damage",
- strategy: true,
- img: "/weapons/upgrades/strategies/sc020_1.svg",
- description: ["When attacked by enemy aircraft, it gives up its target and retreats to its carrier for ", "40", "s. Cooldown: ", "20", "s"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }, {
- name: "Jamming Enhancement",
- img: "/weapons/upgrades/jammingCooldown.svg",
- description: ["Increases jamming duration by ", "6%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Jamming Equipment Enhancement",
- img: "/weapons/upgrades/jammingCooldown.svg",
- description: ["Increases jamming duration by ", "6%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Weapon Cooling Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Weapon Heatsink Efficiency",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Guidance Detection Jamming",
- img: "/weapons/upgrades/missileEvasion.svg",
- description: ["Reduces the chance of being hit by guided weapons by ", "4%"],
- maxTiers: 5,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.04,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Counter-Attack Info Gathering",
- img: "/weapons/upgrades/directEvasion.svg",
- description: ["Reduces the chances of being hit by direct-fire weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: "directEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Electronic Cover",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Reduces the effect Lock-On Efficiency of anti-aircraft weapons has on you and the aircraft within the same carrier by ", "15%", " (effects of the same type cannot stack)"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }]
- }, {
- type: "weapon",
- name: `Airborne Cannon System`,
- maxUpgradeSlots: 4,
- baseAntiship: 140,
- baseAntiair: 140,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/strategies/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 2
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/strategies/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 2
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/strategies/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/strategies/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/strategies/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/strategies/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 2850,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Energy Coating",
- img: "/weapons/upgrades/energyShield.svg",
- description: ["Increases Energy Resistance by ", "2%"],
- maxTiers: 5,
- affectedStat: "energyShield",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Low-Reflective Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by direct-fire weapons by ", "3%"],
- maxTiers: 5,
- affectedStat: "directEvasion",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Aerial Mobility Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Dynamic Thrust Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Emergency Evasion System Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Nozzle Masking Process",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.037,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "8%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: [2, 2, 2, 3, 3]
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Sandrake",
- title: "Atmospheric Interceptor",
- img: "/ships/sandrake.png",
- type: "Fighter",
- fighter_type: "Small",
- variant: "A",
- variant_name: "Dual-Purpose Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 5,
- production: {
- metal: 4990,
- crystal: 440,
- deuterium: 140,
- timeSeconds: 610,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Offensive AA Cannon System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 24,
- baseAntiair: 537,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Pursue Targets",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["When the target's HP falls below ", "20%", ", it increases attack chances in a single round by ", "1", " and reduces Attack Interval by ", "40%", "."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 13
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Anti-Aircraft Ammo Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Damage against aerial targets by ", "4%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.04,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "Fast Rearmament",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 4,
- systemAdjustment: "hp",
- baseHp: 4200,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Anti-Detection Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }, {
- name: "Critical-system Armor Enhancement",
- img: "/weapons/upgrades/systemHp.svg",
- description: ["RIncreases main system HP by ", "4%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 4,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Aerial Mobility Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Missile Evasion Enhancement",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.037,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "8%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: [2, 2, 2, 3, 3]
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Spore A404",
- title: "Light Fighter",
- img: "/ships/sporeA404.png",
- type: "Fighter",
- fighter_type: "Small",
- variant: "A",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 5,
- production: {
- metal: 4640,
- crystal: 310,
- deuterium: 120,
- timeSeconds: 480,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Combat System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 27,
- baseAntiair: 398,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Pursue Targets",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["When the target's HP falls below ", "20%", ", it increases attack chances in a single round by ", "1", " and reduces Attack Interval by ", "40%", "."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Fast Rearmament",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Focus on Aerial Targets",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["Prioritizes fighters and interceptors"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 9
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 5400,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 4,
- systemAdjustment: null,
- baseCruise: 3100,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Aerial Mobility Enhancement",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Missile Evasion Enhancement",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3.7%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "8%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Stealth Maneuvers",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["When the aircraft is returning to the carrier, there is a 30% chance of ignoring the enemy anti-aircraft weapon's pre-targeting effect"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 12
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's prmary weapon prioritizes its attack on super capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Stingray",
- title: "Torpedo Bomber",
- img: "/ships/stingray.png",
- type: "Fighter",
- fighter_type: "Large",
- variant: "A",
- variant_name: "Stealth Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 2,
- production: {
- metal: 5360,
- crystal: 730,
- deuterium: 260,
- timeSeconds: 990,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Bombardment System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 1560,
- baseAntiair: 0,
- baseSiege: 496,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Stealth Attacks",
- img: "/weapons/upgrades/strategies/stingray_1.svg",
- strategy: true,
- description: ["Triggers Camouflage, increasing Evasion by ", "90%", " and increasing Hit Rate by ", "30%", " every ", "90", "s for ", "30", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 14
- }, {
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Siege Ammo Enhancement",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "City Weak Point Identification",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Stealth Processing",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 4,
- systemAdjustment: "hp",
- baseHp: 5200,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Armor Energy Coating",
- img: "/weapons/upgrades/energyShield.svg",
- description: ["Increases Energy Resistance by ", "2%"],
- maxTiers: 5,
- affectedStat: "energyShield",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Identify Interference Coating",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Reduces the effect Lock-On Efficiency of anti-aircraft weapons has on you by ", "20%", " (Becomes ineffective after getting hit by the enemy)"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 6
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 3200,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.2,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "8%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: [2, 2, 2, 3, 3]
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on small capital ships."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 5
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Strix A100",
- title: "Joint Attacker",
- img: "/ships/strixA100.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "NOMA Shipping",
- direction: ["Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 3,
- production: {
- metal: 7460,
- crystal: 480,
- deuterium: 200,
- timeSeconds: 780,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Charged Pulse Cannon System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 663,
- baseAntiair: 459,
- baseSiege: 132,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/heavyAmmo.svg",
- strategy: true,
- description: ["Prioritizes attacks on frigates and destroyers, reduces Attack Duration by ", "50%", ", and increases Cooldown by ", "70%", " every ", "45", "s for ", "35", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Enhance Recharge Power",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Enhance Pulse Focus",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Energy Control System Enhancement",
- img: "/weapons/upgrades/energyHitrate.svg",
- description: ["Increases all pulse cannon Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Charging Device Enhancement",
- img: "/weapons/upgrades/energyCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Weapon Heatsink Efficiency",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 4920,
- baseArmor: 0,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 5,
- systemAdjustment: null,
- baseCruise: 2800,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Close Combat Assault",
- strategy: true,
- img: "/weapons/upgrades/strategies/strix_1.svg",
- description: ["When flying to attack the front-row target, there is a 30% chance of ignoring the enemy anti-aircraft weapon's pre-targeting effect"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Aircraft Charging Stance",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases the Hit Rate of the aircraft's weapons by ", "3.7%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on super capital ships."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Vitas A021",
- title: "Heavy Attacker",
- img: "/ships/vitasA021.png",
- type: "Fighter",
- fighter_type: "Medium",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 3,
- production: {
- metal: 8960,
- crystal: 890,
- deuterium: 320,
- timeSeconds: 1290,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Precision Strike System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 851,
- baseAntiair: 0,
- baseSiege: 190,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Precision Strike",
- img: "/weapons/upgrades/strategies/heavyAmmo.svg",
- strategy: true,
- description: ["Prioritizes attacks on super capital ships and increases the Extra Damage against the target's suste,s by ", "60%", " every ", "30", "s for ", "30", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Weak Point Detection Enhancement",
- img: "/weapons/upgrades/critDamage2.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Flexibility",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "weapon",
- name: `Counter Cannon System`,
- main: true,
- maxUpgradeSlots: 4,
- baseAntiship: 20,
- baseAntiair: 180,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/strategies/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 2
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/strategies/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 2
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/strategies/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/strategies/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/strategies/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/strategies/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Composite Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 5370,
- baseArmor: 3,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 3300,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "Target Reset",
- img: "/weapons/upgrades/targetReset.svg",
- description: ["This ship's primary weapon prioritizes its attack on small capital ships."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }, {
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Vitas-B010",
- title: "Bomber",
- img: "/ships/vitasB010.png",
- type: "Fighter",
- fighter_type: "Large",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 1,
- maxInFleet: 10,
- aircraftPerSquadron: 2,
- production: {
- metal: 9260,
- crystal: 880,
- deuterium: 270,
- timeSeconds: 1180,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Plasma Bombardment System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 2294,
- baseAntiair: 0,
- baseSiege: 848,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Active Maneuvers",
- img: "/weapons/upgrades/strategies/strix_1.svg",
- strategy: true,
- description: ["When attacked by enemy aircraft, increases Evasion by ", "30%", ". Cooldown: ", "30", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Plasma Generation Enhancement",
- img: "/weapons/upgrades/plasmaDamage.svg",
- description: ["Increases all plasma weapon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Plasma Capacity Enhancement",
- img: "/weapons/upgrades/plasmaDamage.svg",
- description: ["Increases all plasma weapon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Siege Ammo Enhancement",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "City Weak Point Identification",
- img: "/weapons/upgrades/siegeDamage.svg",
- description: ["Increases weapon system Siege Damage by ", "6%"],
- maxTiers: 5,
- affectedStat: "siegeDamage",
- percentBuffPerTier: 1.06,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 1
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2, 2]
- }, {
- name: "Large Target Correction",
- img: "/weapons/upgrades/bigHitrate.svg",
- description: ["Increases weapon system Hit Rate against cruisers and higher-class ships by ", "3%"],
- maxTiers: 5,
- affectedStat: "bigHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 2, 2, 2, 2]
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 5,
- systemAdjustment: "hp",
- baseHp: 5860,
- baseArmor: 10,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Thruster Masking",
- img: "/weapons/upgrades/reduceCritDamage.svg",
- description: ["Increases enemy weapon lock-on time by ", "8%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Aircraft Stealth Coating",
- img: "/weapons/upgrades/reduceCritDamage.svg",
- description: ["Increases enemy weapon lock-on time by ", "8%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Identify Interference Coating",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Reduces the effect Lock-On Efficiency of anti-aircraft weapons has on you by ", "20%", " (Becomes ineffective after getting hit by the enemy)"],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 6
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "CV-II003",
- title: "Light Corvette",
- img: "/ships/cvii003.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Multi-Role Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 15,
- production: {
- metal: 4270,
- crystal: 270,
- deuterium: 60,
- timeSeconds: 440,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Rapid-Fire Battery System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 1880,
- baseAntiair: 144,
- baseSiege: 418,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Prioritize Firepower",
- img: "/weapons/upgrades/strategies/prioritizeFirepower.svg",
- strategy: true,
- description: ["Reduces the primary weapon's Cooldown by ", "80%", " and turns off other weapons in the system every ", "90", "s for ", "15", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Fast Targeet Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Quick Repair",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Fast Rearmament",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 4900,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Welding Tech Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Additional Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 3,
- systemAdjustment: null,
- baseCruise: 2500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Aerial Mobility Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Missile Evasion Enhancement",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chance of being hit by missiles by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "missileEvasion",
- percentBuffPerTier: 1.037,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 0,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: []
- }]
- }, {
- name: "CV-M011",
- title: "Heavy Missile Corvette",
- img: "/ships/cvm011_a.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Missile Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 15,
- production: {
- metal: 5320,
- crystal: 410,
- deuterium: 70,
- timeSeconds: 600,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Assault Missile System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 2100,
- baseAntiair: 0,
- baseSiege: 240,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Reactive Explosive Warhead",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Explosive Ammo Enhancement",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Weak Point Detection Enhancement",
- img: "/weapons/upgrades/critDamage2.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Ammo Flexibility",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases weapon system Crit Damage by ", "8%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "weapon",
- name: `Anti-Aircraft Battery System`,
- main: true,
- maxUpgradeSlots: 5,
- baseAntiship: 87,
- baseAntiair: 837,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Anti-Aircraft Measures",
- img: "/weapons/upgrades/heavyAmmo.svg",
- strategy: true,
- description: ["When attacked by enemy aircraft, it decreases weapon system Cooldown by ", "80%", " for ", "15", "s. Cooldown: ", "30", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 6
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 3
- }, {
- name: "Anti-Aircraft Ammo Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Damage against aerial targets by ", "20%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.2,
- tpPerTier: 3
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 7500,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 2,
- systemAdjustment: null,
- baseCruise: 2500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 0,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: []
- }]
- }, {
- name: "CV-M011",
- title: "Heavy Cannon Corvette",
- img: "/ships/cvm011_b.png",
- type: "Corvette",
- variant: "B",
- variant_name: "Cannon Type",
- manufacturer: "Dawn Accord",
- direction: ["Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 15,
- production: {
- metal: 4590,
- crystal: 320,
- deuterium: 60,
- timeSeconds: 490,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Cannon Attack System`,
- main: true,
- maxUpgradeSlots: 4,
- baseAntiship: 2228,
- baseAntiair: 0,
- baseSiege: 282,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Firing Assistance Enhancement",
- img: "/weapons/upgrades/smallHitrate.svg",
- description: ["Increases weapon system Hit Rate against frigates/destroyers by ", "3%"],
- maxTiers: 5,
- affectedStat: "smallHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Aiming Mechanism Enhancement",
- img: "/weapons/upgrades/smallHitrate.svg",
- description: ["Increases weapon system Hit Rate against frigates/destroyers by ", "3%"],
- maxTiers: 5,
- affectedStat: "smallHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [2, 2, 2, 3, 3]
- }]
- }, {
- type: "weapon",
- name: `Anti-Aircraft Battery System`,
- main: true,
- maxUpgradeSlots: 5,
- baseAntiship: 87,
- baseAntiair: 837,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Anti-Aircraft Measures",
- img: "/weapons/upgrades/heavyAmmo.svg",
- strategy: true,
- description: ["When attacked by enemy aircraft, it decreases weapon system Cooldown by ", "80%", " for ", "15", "s. Cooldown: ", "30", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 6
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "10%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.1,
- tpPerTier: 3
- }, {
- name: "Anti-Aircraft Ammo Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Damage against aerial targets by ", "20%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.2,
- tpPerTier: 3
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 1,
- affectedStat: "damage",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 1,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.15,
- tpPerTier: 3
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 7500,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 2,
- systemAdjustment: null,
- baseCruise: 2500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 0,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: []
- }]
- }, {
- name: "CV-M011",
- title: "High-Speed Missile Corvette",
- img: "/ships/cvm011_c.png",
- type: "Corvette",
- variant: "C",
- variant_name: "High-Speed Type",
- manufacturer: "Dawn Accord",
- direction: ["Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 15,
- production: {
- metal: 5260,
- crystal: 410,
- deuterium: 70,
- timeSeconds: 600,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Precision Guidance System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 1100,
- baseAntiair: 624,
- baseSiege: 130,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Steady Firing",
- strategy: true,
- img: "/weapons/upgrades/strategies/concentrateFire.svg",
- description: ["After every ", "4", " round(s) of attacks of the main weapon in the system, increases the Rounds Per Cycle by ", "1", " for the next round of attack."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 15
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Armor-Penetration Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "15%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "15%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: 2
- }, {
- name: "High-Explosive Warhead",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["The system's weapons have a ", "6%", " chance to deal an additional ", "10%", " Crit Damage when attacking an aircraft"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Reactive Explosive Warhead",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The weapon system will cause an additional ", "8%", " Crit Damage when attacking aircraft"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "weapon",
- name: `Counter Cannon System`,
- main: true,
- maxUpgradeSlots: 5,
- baseAntiship: 106,
- baseAntiair: 384,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3%"],
- maxTiers: 5,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Reduces Attack Interval by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 7500,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 2,
- systemAdjustment: null,
- baseCruise: 2500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 0,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: []
- }]
- }, {
- name: "CV-T800",
- title: "Pulsar Corvette",
- img: "/ships/cvt800.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Strategy & Support", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 15,
- production: {
- metal: 4800,
- crystal: 280,
- deuterium: 60,
- timeSeconds: 310,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Weapon System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 2400,
- baseAntiair: 1920,
- baseSiege: 48,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Rapid-Fire",
- img: "/weapons/upgrades/strategies/prioritizeFirepower.svg",
- strategy: true,
- description: ["Reduces the primary weapon's Firing Duration and Cooldown by ", "80%", " every ", "60", "s for ", "15", "s. Cooldown: ", "10", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 18
- }, {
- name: "Enhance Recharge Power",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Enhance Pulse Focus",
- img: "/weapons/upgrades/energyDamage.svg",
- description: ["Increases all pulse cannon Damage by ", "2%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.02,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Charging Device Enhancement",
- img: "/weapons/upgrades/energyCooldown.svg",
- description: ["Decreases weapon ssytem Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Pipeline Cooling Enhancement",
- img: "/weapons/upgrades/energyCooldown.svg",
- description: ["Decreases weapon ssytem Cooldown by ", "3%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.03,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Energy Control System Enhancement",
- img: "/weapons/upgrades/energyHitrate.svg",
- description: ["Increases all pulse cannon Hit Rate by ", "2%"],
- maxTiers: 5,
- affectedStat: "generalHitrate",
- percentBuffPerTier: 1.02,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Aiming Spped Enhancement",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [2, 2, 2, 3, 3]
- }, {
- name: "Fast Target Lock",
- img: "/weapons/upgrades/targetSelectionTime2.svg",
- description: ["Reduces the target-selection time of the weapon system by ", "6%"],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [2, 2, 2, 3, 3]
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 7500,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 2,
- systemAdjustment: null,
- baseCruise: 2500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 0,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: []
- }]
- }, {
- name: "Cellular Defender",
- title: "Heavy Torpedo Corvette",
- img: "/ships/cellularDefender.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Multi-Role Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 7910,
- crystal: 560,
- deuterium: 110,
- timeSeconds: 890,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Torpedo Attack System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 4080,
- baseAntiair: 0,
- baseSiege: 1469,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Warhead Modification",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2.5%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.025,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Rearmament Enhancement",
- img: "/weapons/upgrades/missileDamage.svg",
- description: ["Increases all missile/torpedo damage by ", "2.5%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.025,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Guidance Signal Enhancement",
- img: "/weapons/upgrades/missileHitrate.svg",
- description: ["Increases all missile Hit Rate by ", "2%", " and torpedo Hit Rate by ", "2%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Loading Mechanism Upgrade",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Ammo-Transport Acceleration",
- img: "/weapons/upgrades/genericCooldown2.svg",
- description: ["Decreases weapon system Cooldown by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Sympathetic Detonation",
- img: "/weapons/upgrades/critDamage.svg",
- description: ["The system's weapons have a ", "7.5%", " chance to deal an additional ", "12.5%", " Crit Damage"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Weak Point Detection Enhancement",
- img: "/weapons/upgrades/critDamage2.svg",
- description: ["Increases weapon system Crit Damage by ", "10%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Large Target Correction",
- img: "/weapons/upgrades/bigHitrate.svg",
- description: ["Increases weapon system Hit Rate against cruisers and higher-class ships by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "bigHitrate",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Ammo Stealth Processing",
- img: "/weapons/upgrades/torpedoIntercept.svg",
- description: ["Reduces the chance of all torpedoes being intercepted by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: [1, 2, 2, 2]
- }]
- }, {
- type: "weapon",
- name: "Rapid-Fire Battery System",
- maxUpgradeSlots: 5,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- baseAntiship: 660,
- baseAntiair: 1159,
- baseSiege: 187,
- upgrades: [{
- name: "Anti-Aircraft Measures",
- strategy: true,
- img: "/weapons/upgrades/strategies/heavyAmmo.svg",
- description: ["When attacked by enemy aircraft, it decreases weapon system Cooldown by ", "80%", " for ", "15", "s. Cooldown: ", "30", "s."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 10
- }, {
- name: "Barrel Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2.5%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.025,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Ammo Enhancement",
- img: "/weapons/upgrades/genericDamage.svg",
- description: ["Increases all cannon Damage by ", "2.5%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.025,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Ammo-Loader Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Barrel Heatsink Enhancement",
- img: "/weapons/upgrades/genericCooldown.svg",
- description: ["Decreases weapon system Cooldown by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "damage",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Anti-Aircraft Radar Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }, {
- name: "Fast Target Analysis Enhancement",
- img: "/weapons/upgrades/aircraftHitrate.svg",
- description: ["Increases weapon system Hit Rate against fighters/corvettes by ", "3.7%"],
- maxTiers: 4,
- affectedStat: "aircraftHitrate",
- percentBuffPerTier: 1.037,
- tpPerTier: [1, 2, 2, 2]
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 3,
- systemAdjustment: "hp",
- baseHp: 6650,
- baseArmor: 2,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Welding Tech Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Additional Armor Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 1, 1, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: 1
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 2,
- systemAdjustment: null,
- baseCruise: 2500,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 0,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: []
- }]
- }, {
- name: "Nebula Chaser",
- title: "Heavy Corvette",
- img: "/ships/nebulaChaser_a.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Ballistic Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 6470,
- crystal: 530,
- deuterium: 90,
- timeSeconds: 710,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Airborne Weapon System`,
- main: true,
- maxUpgradeSlots: 6,
- baseAntiship: 1920,
- baseAntiair: 115,
- baseSiege: 336,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Prioritize Targets",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["When the enemy fleet includes carriers, it prioritizes attacks on these targets."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 12
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Nebula Chaser",
- title: "Pulsar Corvette",
- img: "/ships/nebulaChaser_b.png",
- type: "Corvette",
- variant: "B",
- variant_name: "Pulse Cannon Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 50000,
- crystal: 50000,
- deuterium: 50000,
- timeSeconds: 50000,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `PlaceholderPlaceholder`,
- main: true,
- maxUpgradeSlots: 50000,
- baseAntiship: 50000,
- baseAntiair: 50000,
- baseSiege: 50000,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/PlaceholderPlaceholder.svg",
- strategy: true,
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "RedBeast 7-13",
- title: "Missile Corvette",
- img: "/ships/redbeast713.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Offensive Type",
- manufacturer: "NOMA Shipping",
- direction: ["Sustained Combat", "Strategy & Support", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 50000,
- crystal: 50000,
- deuterium: 50000,
- timeSeconds: 50000,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `PlaceholderPlaceholder`,
- main: true,
- maxUpgradeSlots: 50000,
- baseAntiship: 50000,
- baseAntiair: 50000,
- baseSiege: 50000,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/PlaceholderPlaceholder.svg",
- strategy: true,
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "S-Levy 9",
- title: "Heavy Torpedo Escort Corvette",
- img: "/ships/slevy9.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 50000,
- crystal: 50000,
- deuterium: 50000,
- timeSeconds: 50000,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `PlaceholderPlaceholder`,
- main: true,
- maxUpgradeSlots: 50000,
- baseAntiship: 50000,
- baseAntiair: 50000,
- baseSiege: 50000,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/PlaceholderPlaceholder.svg",
- strategy: true,
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Hale-Bopp",
- title: "System Support Corvette",
- img: "/ships/haleBopp_a.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Multi-Role Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Empty",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 3840,
- crystal: 220,
- deuterium: 160,
- timeSeconds: 710,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `Emergency Maintenance System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 0,
- baseAntiair: 0,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Prioritize Targets",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["When the enemy fleet includes carriers, it prioritizes attacks on these targets."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 12
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Hale-Bopp",
- title: "Repair Support Corvette",
- img: "/ships/haleBopp_b.png",
- type: "Corvette",
- variant: "B",
- variant_name: "Dock Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support", "Fighter & Corvette"],
- scope: "Empty",
- weight: 5,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 3970,
- crystal: 230,
- deuterium: 170,
- timeSeconds: 740,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `"Overclock" Maintenance System`,
- main: true,
- maxUpgradeSlots: 7,
- baseAntiship: 0,
- baseAntiair: 0,
- baseSiege: 0,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "Prioritize Targets",
- img: "/weapons/upgrades/strategies/prioritizeTargets.svg",
- strategy: true,
- description: ["When the enemy fleet includes carriers, it prioritizes attacks on these targets."],
- maxTiers: 1,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 12
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Silent Assassin",
- title: "Armored Corvette",
- img: "/ships/silentAssassin.png",
- type: "Corvette",
- variant: "A",
- variant_name: "High-Speed Type",
- manufacturer: "NOMA Shipping",
- direction: ["Fighter & Corvette"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 50000,
- crystal: 50000,
- deuterium: 50000,
- timeSeconds: 50000,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `PlaceholderPlaceholder`,
- main: true,
- maxUpgradeSlots: 50000,
- baseAntiship: 50000,
- baseAntiair: 50000,
- baseSiege: 50000,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/PlaceholderPlaceholder.svg",
- strategy: true,
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Void Elfin",
- title: "Stealth Missile Corvette",
- img: "/ships/voidElfin.png",
- type: "Corvette",
- variant: "A",
- variant_name: "Offensive Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Sustained Combat", "Fighter & Corvette"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 2,
- maxInFleet: 10,
- production: {
- metal: 50000,
- crystal: 50000,
- deuterium: 50000,
- timeSeconds: 50000,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `PlaceholderPlaceholder`,
- main: true,
- maxUpgradeSlots: 50000,
- baseAntiship: 50000,
- baseAntiair: 50000,
- baseSiege: 50000,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/PlaceholderPlaceholder.svg",
- strategy: true,
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Carilion",
- title: "Recon Frigate",
- img: "/ships/carilion_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Recon Type",
- manufacturer: "Antonios",
- direction: ["Sustained Combat", "Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 4,
- maxInFleet: 10,
- production: {
- metal: 50000,
- crystal: 50000,
- deuterium: 50000,
- timeSeconds: 50000,
- storage: 0
- },
- systems: [{
- type: "weapon",
- name: `PlaceholderPlaceholder`,
- main: true,
- maxUpgradeSlots: 50000,
- baseAntiship: 50000,
- baseAntiair: 50000,
- baseSiege: 50000,
- systemAdjustment: "weaponDamage",
- img: "/weapons/icons/cannon.png",
- upgrades: [{
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/strategies/PlaceholderPlaceholder.svg",
- strategy: true,
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }, {
- name: "PlaceholderPlaceholder",
- img: "/weapons/upgrades/PlaceholderPlaceholder.svg",
- description: ["PlaceholderPlaceholder"],
- maxTiers: 50000,
- affectedStat: "PlaceholderPlaceholder",
- percentBuffPerTier: 50000,
- tpPerTier: 50000
- }]
- }, {
- type: "armor",
- name: "Armor System",
- maxUpgradeSlots: 50000,
- systemAdjustment: "hp",
- baseHp: 50000,
- baseArmor: 50000,
- baseEnergyShield: 0,
- img: "/weapons/icons/armor.png",
- upgrades: [{
- name: "Aircraft Armor Enhancement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Aero Reinforcement",
- img: "/weapons/upgrades/hp.svg",
- description: ["Increases ship HP by ", "2%"],
- maxTiers: 5,
- affectedStat: "hp",
- percentBuffPerTier: 1.02,
- tpPerTier: [1, 1, 2, 2, 2]
- }, {
- name: "Short-range Stealth Coating",
- img: "/weapons/upgrades/missileTorpedoEvasion.svg",
- description: ["Reduces the chances of being hit by missiles and torpedoes by ", "3%", " and ", "5%", " respectively"],
- maxTiers: 5,
- affectedStat: ["missileEvasion", "torpedoEvasion"],
- percentBuffPerTier: [1.03, 1.05],
- tpPerTier: [1, 1, 1, 1, 2]
- }]
- }, {
- type: "propulsion",
- name: "Propulsion System",
- maxUpgradeSlots: 50000,
- systemAdjustment: null,
- baseCruise: 3000,
- baseWarp: 0,
- img: "/weapons/icons/speed.png",
- upgrades: [{
- name: "Dynamic Thrust Adjustment",
- img: "/weapons/upgrades/generalEvasion.svg",
- description: ["Increases ship Evasion by ", "2%"],
- maxTiers: 4,
- affectedStat: "generalEvasion",
- percentBuffPerTier: 1.02,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Intensified Combustion Enhancement",
- img: "/weapons/upgrades/targetSelectionTime.svg",
- description: ["Reduces the target-selection time of the aircraft's primary weapon by ", "7.5%"],
- maxTiers: 4,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 2
- }, {
- name: "Flight Maneuver Improvement",
- img: "/weapons/upgrades/reciprocal.svg",
- description: ["Reduces the flight time of reciprocal aircraft by ", "6%"],
- maxTiers: 5,
- affectedStat: "damage",
- percentBuffPerTier: 1.01417,
- tpPerTier: 2
- }]
- }, {
- type: "command",
- name: "Command System",
- maxUpgradeSlots: 1,
- systemAdjustment: null,
- img: "/weapons/icons/command.png",
- upgrades: [{
- name: "System Automated Maintenance Enhancement",
- img: "/weapons/upgrades/commandRepair.svg",
- description: ["Increases the automated maintenance efficiency of the system by ", "5%", "."],
- maxTiers: 5,
- affectedStat: null,
- percentBuffPerTier: null,
- tpPerTier: 1
- }]
- }]
- }, {
- name: "Carilion",
- title: "Heavy Cannon Frigate",
- img: "/ships/carilion_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Heavy Cannon Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "Carilion",
- title: "Special Frigate",
- img: "/ships/carilion_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Special Type",
- manufacturer: "Antonios",
- direction: ["Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "FG300",
- title: "Multi-Role Frigate",
- img: "/ships/fg300_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Multi-Role Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 3,
- maxInFleet: 15
- }, {
- name: "FG300",
- title: "Armored Frigate",
- img: "/ships/fg300_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Armored Type",
- manufacturer: "Dawn Accord",
- direction: ["Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 3,
- maxInFleet: 15
- }, {
- name: "FG300",
- title: "Recon Frigate",
- img: "/ships/fg300_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Recon Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 3,
- maxInFleet: 15
- }, {
- name: "Mare Imbrium",
- title: "Assault Frigate",
- img: "/ships/mareImbrium_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Railgun Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "Mare Imbrium",
- title: "Experimental Pulse Cannon Frigate",
- img: "/ships/mareImbrium_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Pulse Cannon Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Middle",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Mare Nubium",
- title: "Light Landing Ship",
- img: "/ships/mareNubium_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Assault Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Mare Nubium",
- title: "Anti-Aircraft Frigate",
- img: "/ships/mareNubium_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Jupiter Industry",
- direction: ["Empty"],
- scope: "Empty",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Mare Serenitatis",
- title: "Heavy Frigate",
- img: "/ships/mareSerenitatis_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Back",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "Mare Serenitatis",
- title: "Missile Frigate",
- img: "/ships/mareSerenitatis_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Missile Type",
- manufacturer: "Jupiter Industry",
- direction: ["Sustained Combat"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Back",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "Mare Serenitatis",
- title: "Anti-Aircraft Frigate",
- img: "/ships/mareSerenitatis_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Jupiter Industry",
- direction: ["Sustained Combat"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Back",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "Mare Tranquillitatis",
- title: "Missile Frigate",
- img: "/ships/mareTranquillitatis_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Integrated Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Mare Tranquillitatis",
- title: "Pulse Cannon Frigate",
- img: "/ships/mareTranquillitatis_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Pulse Cannon Type",
- manufacturer: "Jupiter Industry",
- direction: ["Empty"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Mare Tranquillitatis",
- title: "Interceptor Frigate",
- img: "/ships/mareTranquillitatis_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "NOMA M470",
- title: "Heavy Landing Ship",
- img: "/ships/nomaM470_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Siege Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "NOMA M470",
- title: "Support Frigate",
- img: "/ships/nomaM470_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Support Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "NOMA M470",
- title: "Anti-Aircraft Frigate",
- img: "/ships/nomaM470_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "Reliat",
- title: "Rapid Torpedo Frigate",
- img: "/ships/reliat_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Reliat",
- title: "Tactical Torpedo Frigate",
- img: "/ships/reliat_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Torpedo Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Reliat",
- title: "Stealth Frigate",
- img: "/ships/reliat_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Stealth Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 4,
- maxInFleet: 10
- }, {
- name: "Ruby",
- title: "Heavy Railgun Frigate",
- img: "/ships/ruby_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Railgun Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Middle",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "Ruby",
- title: "Experimental Ion Cannon Frigate",
- img: "/ships/ruby_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Ion Cannon Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Middle",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Ruby",
- title: "Defensive Frigate",
- img: "/ships/ruby_c.png",
- type: "Frigate",
- variant: "C",
- variant_name: "Defensive Type",
- manufacturer: "NOMA Shipping",
- direction: ["Sustained Combat"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Front",
- cp: 5,
- maxInFleet: 10
- }, {
- name: "XenoStinger",
- title: "Tactical Frigate",
- img: "/ships/xenostinger_a.png",
- type: "Frigate",
- variant: "A",
- variant_name: "Special Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower"],
- scope: "Empty",
- weight: 5,
- row: "Back",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "XenoStinger",
- title: "Defensive Frigate",
- img: "/ships/xenostinger_b.png",
- type: "Frigate",
- variant: "B",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 5,
- row: "Back",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "AC721",
- title: "Heavy Logistics Destroyer",
- img: "/ships/ac721_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Generic Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 8,
- maxInFleet: 15
- }, {
- name: "AC721",
- title: "Heavy Missile Destroyer",
- img: "/ships/ac721_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Missile Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Back",
- cp: 8,
- maxInFleet: 15
- }, {
- name: "AC721",
- title: "Heavy Dual-Purpose Assault Ship",
- img: "/ships/ac721_d.png",
- type: "Destroyer",
- variant: "D",
- variant_name: "Aircraft Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 12,
- maxInFleet: 15,
- corvettes_held: 2
- }, {
- name: "Aldabra",
- title: "Heavy Cannon Destroyer",
- img: "/ships/aldabra_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Generic Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Aldabra",
- title: "Heavy Assault Destroyer",
- img: "/ships/aldabra_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Armored Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Ceres",
- title: "Aircraft Destroyer",
- img: "/ships/ceres_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Aircraft Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 8,
- maxInFleet: 10,
- medium_fighters_held: 2
- }, {
- name: "Ceres",
- title: "Support Destroyer",
- img: "/ships/ceres_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Support Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Ceres",
- title: "Tactical Destroyer",
- img: "/ships/ceres_c.png",
- type: "Destroyer",
- variant: "C",
- variant_name: "Tactical Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Eris I",
- title: "Maneuver Assault Destroyer",
- img: "/ships/eris_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Cannon Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 7,
- maxInFleet: 10
- }, {
- name: "Eris I",
- title: "Heavy Cannon Destroyer",
- img: "/ships/eris_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Heavy Cannon Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 9,
- maxInFleet: 10
- }, {
- name: "Eris I",
- title: "Armored Destroyer",
- img: "/ships/eris_c.png",
- type: "Destroyer",
- variant: "C",
- variant_name: "Armored Type",
- manufacturer: "Jupiter Industry",
- direction: ["Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Front",
- cp: 7,
- maxInFleet: 10
- }, {
- name: "Guardian",
- title: "Support Destroyer",
- img: "/ships/guardian_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Support Type",
- manufacturer: "Antonios",
- direction: ["Empty"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Middle",
- cp: 9,
- maxInFleet: 10
- }, {
- name: "Guardian",
- title: "Dual-Purpose Assault Ship",
- img: "/ships/guardian_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Dual-Purpose Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Back",
- cp: 14,
- maxInFleet: 10,
- corvettes_held: 2
- }, {
- name: "Guardian",
- title: "Experimental Pulse Assault Ship",
- img: "/ships/guardian_c.png",
- type: "Destroyer",
- variant: "C",
- variant_name: "Pulse Cannon Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 9,
- maxInFleet: 10
- }, {
- name: "Quaoar",
- title: "Railgun Destroyer",
- img: "/ships/quaoar_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Railgun Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "Quaoar",
- title: "Torpedo Destroyer",
- img: "/ships/quaoar_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Torpedo Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "Taurus",
- title: "Pulse Cannon Destroyer",
- img: "/ships/taurus_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Offensive Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 11,
- maxInFleet: 10
- }, {
- name: "Taurus",
- title: "Assault Destroyer",
- img: "/ships/taurus_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Assault Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 11,
- maxInFleet: 10
- }, {
- name: "Taurus",
- title: "Defensive Destroyer",
- img: "/ships/taurus_c.png",
- type: "Destroyer",
- variant: "C",
- variant_name: "Defensive Type",
- manufacturer: "NOMA Shipping",
- direction: ["Sustained Combat", "Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 8,
- maxInFleet: 10
- }, {
- name: "Tundra",
- title: "Tactical Destroyer",
- img: "/ships/tundra_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Support Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 9,
- maxInFleet: 10
- }, {
- name: "Tundra",
- title: "Aircraft Destroyer",
- img: "/ships/tundra_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Aircraft Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 9,
- maxInFleet: 10,
- medium_fighters_held: 2
- }, {
- name: "Winged Hussar",
- title: "Light Missile Destroyer",
- img: "/ships/wingedHussar_a.png",
- type: "Destroyer",
- variant: "A",
- variant_name: "Anti-Ship Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Middle",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "Winged Hussar",
- title: "Integrated Missile Destroyer",
- img: "/ships/wingedHussar_b.png",
- type: "Destroyer",
- variant: "B",
- variant_name: "Integrated Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Back",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "Winged Hussar",
- title: "Area-Denial Anti-Aircraft Destroyer",
- img: "/ships/wingedHussar_c.png",
- type: "Destroyer",
- variant: "C",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Antonios",
- direction: ["Sustained Combat", "Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 6,
- maxInFleet: 10
- }, {
- name: "CAS066",
- title: "Generic Cruiser",
- img: "/ships/cas066_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Integrated Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Front",
- cp: 18,
- maxInFleet: 12
- }, {
- name: "CAS066",
- title: "Artillery Cruiser",
- img: "/ships/cas066_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Artillery Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 18,
- maxInFleet: 12
- }, {
- name: "CAS066",
- title: "Aircraft Cruiser",
- img: "/ships/cas066_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Aircraft Type",
- manufacturer: "Dawn Accord",
- direction: ["Empty"],
- scope: "Empty",
- weight: 10,
- row: "Middle",
- cp: 18,
- maxInFleet: 12,
- corvettes_held: 2
- }, {
- name: "CAS066",
- title: "Auxiliary Cruiser",
- img: "/ships/cas066_d.png",
- type: "Cruiser",
- variant: "D",
- variant_name: "Support Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Middle",
- cp: 18,
- maxInFleet: 12
- }, {
- name: "Callisto",
- title: "Cluster Torpedo Raid Ship",
- img: "/ships/callisto_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Torpedo Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 2,
- row: "Back",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Callisto",
- title: "Heavy Torpedo Raid Ship",
- img: "/ships/callisto_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Anti-Ship Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 2,
- row: "Back",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Callisto",
- title: "Heavy UAV Cruiser",
- img: "/ships/callisto_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Support Type",
- manufacturer: "Jupiter Industry",
- direction: ["Empty"],
- scope: "Projectile Weapon",
- weight: 2,
- row: "Back",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Chimera",
- title: "Heavy Cruiser",
- img: "/ships/chimera_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Ballistic Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "Chimera",
- title: "Cannon Cruiser",
- img: "/ships/chimera_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Heavy Cannon Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Chimera",
- title: "Defensive Cruiser",
- img: "/ships/chimera_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Defensive Type",
- manufacturer: "NOMA Shipping",
- direction: ["Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Middle",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Conamara Chaos",
- title: "Railgun Cruiser",
- img: "/ships/conamaraChaos_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Railgun Type",
- manufacturer: "Jupiter Industry",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Back",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Conamara Chaos",
- title: "High-Speed Plasma Cruiser",
- img: "/ships/conamaraChaos_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Plasma Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Back",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Io",
- title: "Assault Ion Cannon Cruiser",
- img: "/ships/io_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Ion Cannon Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "Io",
- title: "High-Speed Ion Cannon Cruiser",
- img: "/ships/io_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Anti-Ship Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "Io",
- title: "Siege Ion Cannon Cruiser",
- img: "/ships/io_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Siege Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Front",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "Jaeger",
- title: "Heavy Aircraft Cruiser",
- img: "/ships/jaeger_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Support Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 5,
- row: "Back",
- cp: 20,
- maxInFleet: 8,
- corvettes_held: 4
- }, {
- name: "Jaeger",
- title: "Heavy Cannon Cruiser",
- img: "/ships/jaeger_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Anti-Ship Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Back",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "KCCPV2.0",
- title: "Light Attack Cruiser",
- img: "/ships/kccpv_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Integrated Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower", "Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 10,
- row: "Back",
- cp: 16,
- maxInFleet: 12
- }, {
- name: "KCCPV2.0",
- title: "Light Pulse Attack Cruiser",
- img: "/ships/kccpv_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Pulse Cannon Type",
- manufacturer: "Dawn Accord",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 16,
- maxInFleet: 12
- }, {
- name: "KCCPV2.0",
- title: "Light Railgun Cruiser",
- img: "/ships/kccpv_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Railgun Type",
- manufacturer: "Dawn Accord",
- direction: ["Empty"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Middle",
- cp: 16,
- maxInFleet: 12
- }, {
- name: "KCCPV2.0",
- title: "Light Aircraft Cruiser",
- img: "/ships/kccpv_d.png",
- type: "Cruiser",
- variant: "D",
- variant_name: "Aircraft Type",
- manufacturer: "Dawn Accord",
- direction: ["Empty"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 16,
- maxInFleet: 12,
- large_fighters_held: 2
- }, {
- name: "Light Cone",
- title: "Multi-Role Missile Cruiser Cruiser",
- img: "/ships/lightCone_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Generic Type",
- manufacturer: "NOMA Shipping",
- direction: ["Empty"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Middle",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Light Cone",
- title: "Area-Denial Anti-Aircraft Cruiser",
- img: "/ships/lightCone_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Middle",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Light Cone",
- title: "Offensive Missile Cruiser",
- img: "/ships/lightCone_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Assault Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower"],
- scope: "Projectile Weapon",
- weight: 5,
- row: "Middle",
- cp: 20,
- maxInFleet: 8
- }, {
- name: "Ranger",
- title: "Comprehensive Warfare Cruiser",
- img: "/ships/ranger_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Integrated Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 10,
- row: "Back",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "Ranger",
- title: "Heavy Ion Cannon Cruiser",
- img: "/ships/ranger_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Ion Cannon Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 2,
- row: "Back",
- cp: 18,
- maxInFleet: 8
- }, {
- name: "Predator",
- title: "Aircraft Cruiser",
- img: "/ships/predator_a.png",
- type: "Cruiser",
- variant: "A",
- variant_name: "Generic Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 18,
- maxInFleet: 8,
- large_fighters_held: 4
- }, {
- name: "Predator",
- title: "Tactical Aircraft Cruiser",
- img: "/ships/predator_b.png",
- type: "Cruiser",
- variant: "B",
- variant_name: "Tactical Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 18,
- maxInFleet: 8,
- large_fighters_held: 4
- }, {
- name: "Predator",
- title: "Anti-Aircraft Cruiser",
- img: "/ships/predator_c.png",
- type: "Cruiser",
- variant: "C",
- variant_name: "Anti-Aircraft Type",
- manufacturer: "Antonios",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 10,
- row: "Back",
- cp: 18,
- maxInFleet: 8,
- large_fighters_held: 4
- }, {
- name: "Constantine the Great",
- title: "Multi-Role Battlecruiser",
- img: "/ships/constantineTheGreat.png",
- type: "Battlecruiser",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 2,
- row: "Middle",
- cp: 35,
- maxInFleet: 6,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: `"Gamma Storm" Ion Attack System`,
- stats: {
- type: "weapon",
- antiship: 11917,
- antiair: 0,
- siege: 2502,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `CI-2x700T "Helium Flash"`,
- name: `Dual-Gun Super-Heavy Ion Turret`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 400,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `"Gamma Storm" Projectile Attack System`,
- stats: {
- type: "weapon",
- antiship: 19885,
- antiair: 0,
- siege: 2784,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `CI-2x600T "Gamma Storm"`,
- name: `Energy Torpedo Launching System`,
- damageType: "Energy",
- target: "Large Ship",
- alpha: 1740,
- lockonEfficiency: 10,
- attributes: ["Crit"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `"Gamma Storm" Projectile Weapon System`,
- stats: {
- type: "weapon",
- antiship: 24917,
- antiair: 0,
- siege: 2016,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `CM-8x608A "Gamma Storm"`,
- name: `Generic Missile Launching System`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 850,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `"Gamma Storm" Projectile Weapon System`,
- stats: {
- type: "weapon",
- antiship: 40666,
- antiair: 1643,
- siege: 3138,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `CM-8x608 "Gamma Storm"`,
- name: `Pulse Energy Missile Launching System`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 945,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: "CM-12x550",
- name: `Dodeca-Fire Anti-Ship Missile System`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 437,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `Generic Battery System`,
- stats: {
- type: "weapon",
- antiship: 10628,
- antiair: 270,
- siege: 1461,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `CG-1350`,
- name: `350mm Dual-Cannon Anti-Ship Battery`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 250,
- attributes: null
- }, {
- type: "weapon",
- count: 4,
- title: `CG-1160B`,
- name: `Generic Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 50,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B2",
- name: `Pulse Anti-Aircraft System`,
- stats: {
- type: "weapon",
- antiship: 5175,
- antiair: 2040,
- siege: 0,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `CP-3x220`,
- name: `Triple-Fire Anti-Aircraft Pulse`,
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 40,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }, {
- type: "weapon",
- count: 4,
- title: `CP-120`,
- name: `Anti-Missile Pulse Array`,
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 40,
- attributes: ["Interception Capability", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B3",
- name: `Anti-Aircraft Missile System`,
- stats: {
- type: "weapon",
- antiship: 2400,
- antiair: 1548,
- siege: 0,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `MK2-CM-4x200B "Storm"`,
- name: `Missile Launcher Nest`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 35,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Cycle", "Anti-Aircraft Support"]
- }, {
- type: "weapon",
- count: 2,
- title: `CM-2x188B`,
- name: `Missile Launcher Array`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 25,
- attributes: ["Interception Capability", "Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "C1",
- name: `Additional Energy System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 15750
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `RIT-650`,
- name: `Energy Compression Device`,
- attributes: ["Increase Energy Weapon Damage"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C2",
- name: `Aircraft Module`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 18000
- },
- subsystems: [{
- type: "hanger",
- count: 2,
- title: `CBF-200`,
- name: `Medium Hanger`,
- hanger: "Medium Fighter",
- capacity: 1,
- attributes: null
- }, {
- type: "misc",
- count: 1,
- title: `XAC-2000`,
- name: `Aviation Bridge`,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C3",
- name: `Recon UAV System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 18000
- },
- subsystems: [{
- type: "hanger",
- count: 3,
- title: "CIT-1",
- name: `Fire-Control Spotter UAV Hanger`,
- hanger: "Spotter UAV",
- capacity: 3,
- attributes: ["Ship Calibration Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D1",
- name: `Short-Range Anti-Aircraft System`,
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 1011,
- siege: 0,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `CM-2x45B`,
- name: `Short-Range Anti-Aircraft Missile`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 40,
- attributes: ["Anti-Aircraft Critical Strike", "Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "D2",
- name: `Targeted Protection System`,
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hp: 18000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: "ASM-220",
- name: `Critical-System Reinforced Armor`,
- attributes: ["Reduce System Crit Damage Taken"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/storage.png",
- system: "D3",
- name: `Damage Control System`,
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hpRecovery: 4800,
- hp: 15750
- },
- subsystems: [{
- type: "misc",
- count: 4,
- title: "AST-50",
- name: `Damage Monitoring System`,
- attributes: null
- }]
- }]
- }, {
- name: "Eternal Storm",
- title: "Attack Battlecruiser",
- img: "/ships/eternalStorm.png",
- type: "Battlecruiser",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Direct-Fire Weapon",
- weight: 2,
- row: "Middle",
- cp: 32,
- maxInFleet: 6,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: `"Viggen" Ion Generation System`,
- stats: {
- type: "weapon",
- antiship: 16000,
- antiair: 0,
- siege: 3360,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `AI-900A "Viggen"`,
- name: `Ion Cannon`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1200,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `Experimental Plasma Caster`,
- stats: {
- type: "weapon",
- antiship: 15692,
- antiair: 1883,
- siege: 2824,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `AIM-850T`,
- name: `Plasma Caster`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: 10,
- alpha: 850,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `"Eternal Polaris" Mk II Projectile Launching System`,
- stats: {
- type: "weapon",
- antiship: 12240,
- antiair: 396,
- siege: 1539,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `MK3-AT-800A "Supernova-White"`,
- name: `Anti-Ship Torpedo`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1600,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `MK2-AM-8x300B "Eternal Polaris K"`,
- name: `Cluster Missile`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 55,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `"Eternal Polaris" Mk II Projectile Launching System`,
- stats: {
- type: "weapon",
- antiship: 11900,
- antiair: 0,
- siege: 10440,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `MK3-AT-750C "Supernova-White"`,
- name: `Siege Torpedo Launcher Array`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1200,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A3",
- name: `"Eternal Polaris" Mk II Projectile Launching System TEST`,
- stats: {
- type: "weapon",
- antiship: 11345,
- antiair: 593,
- siege: 1440,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `MK4-AT-1-800AT "Supernova-White"`,
- name: `Energy Torpedo`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1600,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `MK2-AM-16x150B "Eternal Polaris K"`,
- name: `Anti-Aircraft Missile Array`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 40,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `Generic Cannon Platform`,
- stats: {
- type: "weapon",
- antiship: 5850,
- antiair: 126,
- siege: 1113,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `AG-2580`,
- name: `Dual-Cannon Heavy Battery`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 350,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `AG-1120B`,
- name: `Rapid-Fire Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 35,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B2",
- name: `Generic Close-In Weapon System`,
- stats: {
- type: "weapon",
- antiship: 900,
- antiair: 405,
- siege: 60,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `AG-1105B`,
- name: `Generic Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 25,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C1",
- name: `NT UAV Anti-Aircraft System`,
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 3888,
- siege: 0,
- hp: 20250
- },
- subsystems: [{
- type: "hanger",
- count: 3,
- title: `NT-1`,
- name: `Anti-Aircraft UAV Rack`,
- hanger: "Area-Denial Anti-Aircraft UAV",
- capacity: 3,
- attributes: null,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 15,
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C2",
- name: `"Thunderstorm" UAV Shield System`,
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hp: 20250
- },
- subsystems: [{
- type: "hanger",
- count: 2,
- title: `SNT-1`,
- name: `Shielded UAV Rack`,
- hanger: "Shield UAV",
- capacity: 2,
- attributes: [`Ship Shielding Support`]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "C3",
- name: `Energy Compensation Armor System`,
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hp: 16200
- },
- subsystems: [{
- type: "misc",
- count: 2,
- title: `RIR-220`,
- name: `Experimental Energy Compensation Armor`,
- attributes: ["Energy Damage Reduction", "Physical Damage Reduction", "Crit Damage Reduction"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D1",
- name: `Ion Turret System`,
- stats: {
- type: "weapon",
- antiship: 6857,
- antiair: 0,
- siege: 1028,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `AI-450A`,
- name: `Experimental Ion Turret`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 800,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D2",
- name: `Pulse Turret System`,
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 432,
- siege: 0,
- hp: 18000
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `AP-130B`,
- name: `Rapid-Fire Near-Defense Pulse Cannon`,
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 40,
- attributes: ["Interception Capability", "Anti-Aircraft Counterattack"]
- }]
- }]
- }, {
- name: "Spear of Uranus",
- title: "Heavy Battlecruiser",
- img: "/ships/spearOfUranus.png",
- type: "Battlecruiser",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Sustained Combat"],
- scope: "Direct-Fire Weapon",
- weight: 2,
- row: "Front",
- cp: 35,
- maxInFleet: 6,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: `Bow Railgun System`,
- stats: {
- type: "weapon",
- antiship: 12950,
- antiair: 0,
- siege: 11310,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `BR-1950C "Ruby"`,
- name: `Bow-Mounted Siege Railgun`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 2600,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `Ion Turret System`,
- stats: {
- type: "weapon",
- antiship: 12857,
- antiair: 0,
- siege: 1800,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `BI-850`,
- name: `Dual-Fire Heavy Ion Turret`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 750,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `"Fortress" Battery System A`,
- stats: {
- type: "weapon",
- antiship: 13120,
- antiair: 636,
- siege: 3075,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `BG-1850`,
- name: `Heavy Cannon`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 950,
- attributes: null
- }, {
- type: "weapon",
- count: 3,
- title: `BG-2240`,
- name: `Anti-Ship Cannon`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 100,
- attributes: ["Anti-Aircraft Counterattack"]
- }, {
- type: "weapon",
- count: 4,
- title: `BG-340B`,
- name: `Anti-Aircraft Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 10,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `"Fortress" Battery System B`,
- stats: {
- type: "weapon",
- antiship: 15986,
- antiair: 216,
- siege: 2880,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `BG-1950`,
- name: `Heavy Cannon`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1200,
- attributes: null
- }, {
- type: "weapon",
- count: 4,
- title: `BG-340B`,
- name: `Anti-Aircraft Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 10,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A3",
- name: `"Fortress" Battery System F`,
- stats: {
- type: "weapon",
- antiship: 17220,
- antiair: 1026,
- siege: 1800,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 6,
- title: `BG-2350`,
- name: `Anti-Ship Cannon`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 200,
- attributes: ["Anti-Aircraft Counterattack"]
- }, {
- type: "weapon",
- count: 4,
- title: `BG-340B`,
- name: `Anti-Aircraft Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 10,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `"Minecart" Projectile Launching Array`,
- stats: {
- type: "weapon",
- antiship: 5940,
- antiair: 680,
- siege: 259,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `BM-12x250`,
- name: `Generic Missile Launching Array`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 120,
- attributes: ["Interception Capability", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B2",
- name: `Corvette Dock`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23850
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-2300`,
- name: `Corvette Mounting Dock`,
- hanger: "Corvette",
- capacity: 3,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/storage.png",
- system: "B3",
- name: `Integrated Damage Control System`,
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hpRecovery: 5454,
- hp: 19800
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CRT-3`,
- name: `Engineering UAV Maintenance Pod`,
- hanger: "Repair UAV",
- capacity: 2,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "C1",
- name: `Distributed Weapon Control System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 18000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XI-1200`,
- name: "Distributed Fire Control Radar",
- attributes: ["Increase Hit Rate"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "C2",
- name: `Additional Armor System`,
- stats: {
- type: "armor",
- armor: 0,
- extraHP: 32484,
- energyShield: 0,
- hp: 27000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `ASX-150`,
- name: "Energized Nano Armor",
- attributes: ["Additional HP Auto-Repair"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "C3",
- name: `Anti-Missile System`,
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 410,
- siege: 0,
- hp: 19800
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `BG-625C`,
- name: `Area Anti-Missile Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 10,
- attributes: ["Interception Capability (Fleet)", "Anti-Aircraft Special Ammo", "Anti-Aircraft Support"]
- }]
- }]
- }, {
- name: "ST59",
- title: "Defensive Battlecruiser",
- img: "/ships/st59.png",
- type: "Battlecruiser",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Dawn Accord",
- direction: ["Sustained Combat", "Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 5,
- row: "Middle",
- cp: 28,
- maxInFleet: 6,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: "Assault Railgun System",
- stats: {
- type: "weapon",
- antiship: 10875,
- antiair: 0,
- siege: 3528,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `SR-2600`,
- name: `Heavy Railgun`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 735,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `Bow Mounted Battery System`,
- stats: {
- type: "weapon",
- antiship: 11400,
- antiair: 0,
- siege: 960,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `SG-2400`,
- name: `Dual-Cannon Rapid-Fire Battery`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 200,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M3",
- name: `Assault Torpedo System`,
- stats: {
- type: "weapon",
- antiship: 11200,
- antiair: 0,
- siege: 2266,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `ST-2600`,
- name: `Heavy Torpedo Launcher`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 850,
- attributes: ["Crit"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `Large Cannon Platform`,
- stats: {
- type: "weapon",
- antiship: 7875,
- antiair: 216,
- siege: 1206,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `MK4-SG-2580 "Thunderbolt"`,
- name: `Dual-Cannon Heavy Battery`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 280,
- attributes: null
- }, {
- type: "weapon",
- count: 4,
- title: `SG-1120`,
- name: `Generic Cannon`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 40,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `Railgun Turret Array`,
- stats: {
- type: "weapon",
- antiship: 9900,
- antiair: 0,
- siege: 1923,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `SR-1425`,
- name: `Railgun Turret`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 450,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A3",
- name: `Pulse Turret Array`,
- stats: {
- type: "weapon",
- antiship: 7500,
- antiair: 787,
- siege: 1200,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `SP-430`,
- name: `Pulse Turret`,
- damageType: "Energy",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 250,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `Integrated Projectile Weapon Platform`,
- stats: {
- type: "weapon",
- antiship: 8188,
- antiair: 0,
- siege: 1185,
- hp: 15750
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `K-ST-12-255A`,
- name: `3x4 Cluster Torpedo Launching System`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 300,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B2",
- name: `Aircraft System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 15300
- },
- subsystems: [{
- type: "hanger",
- count: 2,
- title: `CBF-305`,
- name: "Medium Hanger",
- hanger: "Medium Fighter",
- capacity: 2,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B3",
- name: `Area Fire-Control System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 15300
- },
- subsystems: [{
- type: "hanger",
- count: 2,
- title: `CIT-1`,
- name: `Fire-Control Spotter UAV Hanger`,
- hanger: "Spotter UAV",
- capacity: 3,
- attributes: ["Ship Calibration Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "C1",
- name: `Additional Armor System`,
- stats: {
- type: "armor",
- armor: 0,
- extraHP: 27302,
- energyShield: 0,
- hp: 15750
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `ASX-100`,
- name: "Additional Armor",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "C2",
- name: `EM Armor System`,
- stats: {
- type: "armor",
- armor: 0,
- extraHP: 0,
- energyShield: 20,
- hp: 15750
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `AEX-120`,
- name: "EM Armor",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "C3",
- name: "Heavy Defensive Armor System",
- stats: {
- type: "armor",
- armor: 250,
- extraHP: 0,
- energyShield: 0,
- hp: 15750
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `ASX-130`,
- name: "Additional Armor",
- attributes: ["Reduce Evasion", "Reduce Hit Rate"]
- }]
- }]
- }, {
- name: "Thunderbolt Star",
- title: "Multi-Role Arsenal Ship",
- img: "/ships/thunderboltStar.png",
- type: "Battlecruiser",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Empty",
- direction: ["Outstanding Firepower", "Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 2,
- row: "Middle",
- cp: 35,
- maxInFleet: 6,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: `"Thunderbolt" Bow-Mounted Weapon System`,
- stats: {
- type: "weapon",
- antiship: 40628,
- antiair: 0,
- siege: 8562,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `HR-1850`,
- name: `Long-Rail Railgun`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 2775,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `"Thunderbolt" Bow-Mounted Projectile Weapon System`,
- stats: {
- type: "weapon",
- antiship: 27168,
- antiair: 0,
- siege: 5705,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `HT-1-850`,
- name: "High Energy Torpedo Launcher",
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 2070,
- attributes: ["Crit"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M3",
- name: `"Thunderbolt Star" Bow-Mounted High-Energy Weapon System`,
- stats: {
- type: "weapon",
- antiship: 33120,
- antiair: 0,
- siege: 3312,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `HT-1250T`,
- name: `Experimental Super High-Energy Ion Cannon`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 2760,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `Rapid-Fire Anti-Ship Weapon System`,
- stats: {
- type: "weapon",
- antiship: 12636,
- antiair: 1266,
- siege: 1407,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `HG-1220`,
- name: "Rapid-Fire Artillery Array",
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 97,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `Medium Anti-Ship Weapon System`,
- stats: {
- type: "weapon",
- antiship: 14184,
- antiair: 0,
- siege: 1490,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `HG-2280`,
- name: "Dual-Cannon Stationary Heavy Battery",
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 207,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: "Active Anti-Aircraft System",
- stats: {
- type: "weapon",
- antiship: 3375,
- antiair: 465,
- siege: 0,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `HM-4x60B`,
- name: "Mid-Range Anti-Aircraft Missile Array",
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 28,
- attributes: ["Anti-Aircraft Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B2",
- name: "Range Interception System",
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 345,
- siege: 0,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `HP-100B`,
- name: "Anti-Aircraft Pulse Array",
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 28,
- attributes: ["Interception Capability", "Anti-Aircraft Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "C1",
- name: "Weapon Coordination Center",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23400
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `HNI-260`,
- name: "Weapon Activation Device",
- attributes: ["Oscillatory Excitation"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "C2",
- name: "Fire-Control Calibration System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23400
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `HNA-240`,
- name: "Real-Time Target Callibration Module",
- attributes: ["Collaborative Calibration"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D1",
- name: "Accurate Projectile Weapon System",
- stats: {
- type: "weapon",
- antiship: 9140,
- antiair: 1164,
- siege: 970,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `HM-1x220A`,
- name: "Mid-Range Anti-Ship Missile",
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 172,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D2",
- name: "Large Projectile Weapon System",
- stats: {
- type: "weapon",
- antiship: 9948,
- antiair: 0,
- siege: 2112,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `HT-1-450`,
- name: "Large Torpedo Launcher",
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 631,
- attributes: ["Crit"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "E1",
- name: "Multi-Target Weapon System",
- stats: {
- type: "weapon",
- antiship: 6990,
- antiair: 910,
- siege: 759,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `HG-1220A`,
- name: "Multi-Target Anti-Ship Battery",
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 126,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "E2",
- name: "Multi-Target Anti-Aircraft System",
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 633,
- siege: 0,
- hp: 23400
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `HG-1120B`,
- name: "Multi-Target Anti-Aircraft Turret",
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 40,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }]
- }, {
- name: "Ediacaran",
- title: "Heavy Firepower Auxiliary Ship",
- img: "/ships/ediacaran.png",
- type: "Auxiliary Ship",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "NOMA Shipping",
- direction: ["Outstanding Firepower", "Strategy & Support"],
- scope: "Empty",
- weight: 2,
- row: "Middle",
- cp: 40,
- maxInFleet: 2,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: "Fortress Bow-Mounted Heavy Cannon System",
- stats: {
- type: "weapon",
- antiship: 11057,
- antiair: 394,
- siege: 1756,
- hp: 18900
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `"Fortress" MK4-BG-2560`,
- name: `Dual-Cannon Heavy Bow Battery`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 650,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `BG-1260`,
- name: `Anti-Ship Turret`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 105,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `Fortress Assault Railgun System`,
- stats: {
- type: "weapon",
- antiship: 12000,
- antiair: 319,
- siege: 3150,
- hp: 18900
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `"Fortress" MK4-BG-1850A`,
- name: `Bow-Mounted Assault Heavy Railgun`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 2250,
- attributes: ["Crit"]
- }, {
- type: "weapon",
- count: 2,
- title: `BM-2x280B`,
- name: `Anti-Aircraft Missile Launcher Array`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 25,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "A1",
- name: "Frigates Production System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 18800
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `MF-2500`,
- name: "Frigates Independent Production Facility",
- attributes: ["Self-holding Capability"]
- }, {
- type: "misc",
- count: 1,
- title: `BMP-60`,
- name: "Production Line Modification Module",
- attributes: ["Increase Production Speed"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "A2",
- name: "Corvette Production System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 19800
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `MC-2500`,
- name: "Corvette Independent Production Facility",
- attributes: null
- }, {
- type: "misc",
- count: 1,
- title: `BMP-60`,
- name: "Production Line Modification Module",
- attributes: ["Increase Production Speed"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "A3",
- name: "Destroyer Production System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 18800
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `MD-2500`,
- name: "Destroyer Independent Production Facility",
- attributes: ["Self-holding Capability"]
- }, {
- type: "misc",
- count: 1,
- title: `BMP-60`,
- name: "Production Line Modification Module",
- attributes: ["Increase Production Speed"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B1",
- name: `"Tundra" Interceptor UAV System`,
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 4608,
- siege: 0,
- hp: 19350
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CAT/R-6`,
- name: `Area-Denial Anti-Aircraft UAV Pod`,
- hanger: "Area-Denial Anti-Aircraft UAV",
- capacity: 4,
- attributes: ["Anti-Aircraft Counterattack"],
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 15
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B2",
- name: `"Hummingbird" Firepower Recon UAV System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 19350
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFT-6`,
- name: "Firepower Recon UAV Pod",
- hanger: "Recon UAV",
- capacity: 4,
- attributes: ["Firepower Recon Support"]
- }]
- }, {
- type: "unknown",
- img: "/weapons/icons/unknown.png",
- system: "B3",
- unknown: true
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C1",
- name: `Aircraft Loading System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 19350
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBF-200`,
- name: "Large Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 2,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C2",
- name: `Corvette Dock`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 19350
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-2000`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 3,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "D1",
- name: `Heavy Additional Armor System`,
- stats: {
- type: "armor",
- armor: 80,
- extraHP: 30069,
- energyShield: 0,
- hp: 18000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `ASX-90`,
- name: "Heavy Additional Armor",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/storage.png",
- system: "D2",
- name: `Nano Automated Maintenance System`,
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hpRecovery: 5169,
- hp: 18000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `BST-300`,
- name: `Nano Repair System`,
- attributes: null
- }]
- }]
- }, {
- name: "FSV830",
- title: "Fast Tactical Auxiliary Ship",
- img: "/ships/fsv830.png",
- type: "Auxiliary Ship",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Dawn Accord",
- direction: ["Sustained Combat", "Strategy & Support"],
- scope: "Empty",
- weight: 5,
- row: "Back",
- cp: 40,
- maxInFleet: 2,
- modules: [{
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "A1",
- name: "Frigates Production System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 21500
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XE-1250AM`,
- name: "Frigates Independent Production Facility",
- attributes: ["Self-holding Capability"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "A2",
- name: "Corvette Production System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 21500
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XE-1250AG`,
- name: "Corvette Independent Build Facility",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "A3",
- name: "Fighter Production System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 21500
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `MFG-1500`,
- name: "Fighter Independent Production Facility",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "B1",
- name: "Warning and Control System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 22000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XE-1250AW`,
- name: "Situational Awareness System",
- attributes: ["Back-Row Torpedo Hit Evasion", "Back-Row Missile Hit Evasion"]
- }, {
- type: "misc",
- count: 1,
- title: `XC-4500`,
- name: "Bridge",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "B2",
- name: "Coordinate Command System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 22000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XCE-1250AI`,
- name: "Assisted Lock-On Radar",
- attributes: [`Increase Back-Row Missile Hit Rate`, `Increase Back-Row Torpedo Hit Rate`]
- }, {
- type: "misc",
- count: 1,
- title: `XC-4500`,
- name: "Bridge",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "B3",
- name: "Camoflage System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 22000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XS-1250AC`,
- name: "Field Signal Disguise Module",
- attributes: [`Ship Disguise`]
- }, {
- type: "misc",
- count: 1,
- title: `XC-4500`,
- name: "Bridge",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "C1",
- name: "Engineering Maintenance System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 22000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `BSR-200`,
- name: "Quick Repair Device",
- attributes: ["Increase Repair Speed"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/storage.png",
- system: "C2",
- name: "Strategic Resource Storage System",
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- storage: 60000,
- hp: 22000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `W-500`,
- name: "Loading Platform",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "D1",
- name: "Aircraft System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 21500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBF-255`,
- name: "Medium Hanger",
- hanger: "Medium Fighter",
- capacity: 2,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/storage.png",
- system: "D2",
- name: "Repair UAV System",
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hpRecovery: 5454,
- hp: 21500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CRT-3`,
- name: "Engineering UAV Maintenance Pod",
- hanger: "Repair UAV",
- capacity: 2,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "E1",
- name: "Area-Defense System",
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 882,
- siege: 0,
- hp: 22000
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `SM-4x40B`,
- name: "Anti-Arcraft Missile Silo",
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 35,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "E2",
- name: "Corvette Dock",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 21500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-2000`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 3,
- attributes: null
- }]
- }]
- }, {
- name: "CV3000",
- title: "High-Speed Carrier",
- img: "/ships/cv3000.png",
- type: "Carrier",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Dawn Accord",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 2,
- row: "Back",
- cp: 40,
- maxInFleet: 5,
- modules: [{
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M1",
- name: "Integrated Aircraft Hanger",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23850
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-605`,
- name: "Large Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 5,
- attributes: null
- }, {
- type: "hanger",
- count: 1,
- title: `CBC-2100`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 3,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M2",
- name: "Integrated Aircraft System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23850
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-605`,
- name: "Large Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 5,
- attributes: null
- }, {
- type: "hanger",
- count: 1,
- title: `CIT-5`,
- name: "Field Support UAV Hanger",
- hanger: "Tactical UAV",
- capacity: 5,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 27,
- attributes: ["Attack Against Systems"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M3",
- name: "Large Aircraft System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23850
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-605`,
- name: "Large Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 5,
- attributes: null
- }, {
- type: "hanger",
- count: 1,
- title: `CFB-400`,
- name: "Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 3,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `"Dragoon" Battery System`,
- stats: {
- type: "weapon",
- antiship: 6500,
- antiair: 297,
- siege: 619,
- hp: 25200
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `MK4-C/SG-3480A "Dragoon"`,
- name: `Triple-Cannon Heavy Battery`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 200,
- attributes: null
- }, {
- type: "weapon",
- count: 4,
- title: `C/SG-190B "Dragoon"`,
- name: `Generic Rapid-Fire Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 55,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `Anti-Aircraft Missile Platform`,
- stats: {
- type: "weapon",
- antiship: 2868,
- antiair: 372,
- siege: 0,
- hp: 25200
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `Bm-12x180T`,
- name: `Missile Defense System`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 52,
- attributes: ["Interception Capability", "Anti-Aircraft Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `Missile Defense System`,
- stats: {
- type: "weapon",
- antiship: 1200,
- antiair: 210,
- siege: 70,
- hp: 25200
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `MK3-SM-6x400B/C "Starfire"`,
- name: `Missile Launcher Array`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 70,
- attributes: ["Interception Capability", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B2",
- name: `Corvette Loading System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23850
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-2100`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 3,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B3",
- name: `Info UAV Support Platform`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 23850
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CITA-2`,
- name: "Field Support UAV Pod",
- hanger: "Info UAV",
- capacity: 3,
- attributes: ["Ship Calibration Support"]
- }]
- }]
- }, {
- name: "Eternal Heavens",
- title: "UAV Carrier",
- img: "/ships/eternalHeavens.png",
- type: "Carrier",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Jupiter Industry",
- direction: ["Outstanding Firepower"],
- scope: "Empty",
- weight: 2,
- row: "Back",
- cp: 40,
- maxInFleet: 5,
- modules: [{
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M1",
- name: "Collaborative Hanger I",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBF-280`,
- name: "Medium Fighter Hanger",
- hanger: "Medium Fighter",
- capacity: 3,
- attributes: null
- }, {
- type: "hanger",
- count: 3,
- title: `"Decomposer"`,
- name: "Cooperative Offensive UAV Platform",
- hanger: "Cooperative Offensive UAV",
- capacity: 3,
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 140,
- attributes: ["UAV Cooperation", "Anti-Aircraft Lightweight Ammo"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M2",
- name: "Collaborative Hanger II",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBF-280`,
- name: "Medium Fighter Hanger",
- hanger: "Medium Fighter",
- capacity: 3,
- attributes: null
- }, {
- type: "hanger",
- count: 3,
- title: `"Laminar"`,
- name: "Cooperative Offensive UAV Platform",
- hanger: "Cooperative Offensive UAV",
- capacity: 3,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 40,
- attributes: ["UAV Cooperation", "Anti-Aircraft Special Ammo"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M3",
- name: "Collaborative Hanger III",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBF-280`,
- name: "Medium Fighter Hanger",
- hanger: "Medium Fighter",
- capacity: 3,
- attributes: null
- }, {
- type: "hanger",
- count: 3,
- title: `"Vortex"`,
- name: "Cooperative Offensive UAV Platform",
- hanger: "Cooperative Offensive UAV",
- capacity: 3,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 20,
- attributes: ["UAV Aerial Cover Support", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `Integrated Battery System`,
- stats: {
- type: "weapon",
- antiship: 10250,
- antiair: 472,
- siege: 3815,
- hp: 26000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `AG-3400A`,
- name: `Triple-Fire Heavy Turret`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 320,
- attributes: null
- }, {
- type: "weapon",
- count: 3,
- title: `AG-2208A`,
- name: `Dual-Cannon Anti-Ship Battery`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 100,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `Experimental Ion Cannon System`,
- stats: {
- type: "weapon",
- antiship: 8857,
- antiair: 252,
- siege: 828,
- hp: 26000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `AI-450T`,
- name: `Experimental Ion Turret`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 400,
- attributes: null
- }, {
- type: "weapon",
- count: 4,
- title: `AG-290`,
- name: `Generic Dual-Cannon Battery`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 35,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A3",
- name: `Pulse Anti-Aircraft System`,
- stats: {
- type: "weapon",
- antiship: 3600,
- antiair: 1370,
- siege: 0,
- hp: 26000
- },
- subsystems: [{
- type: "weapon",
- count: 3,
- title: `AP-2x180`,
- name: "Dual-Fire Pulse Cannon",
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 40,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }, {
- type: "weapon",
- count: 3,
- title: `AP-140B`,
- name: "Rapid-Fire Anti-Aircraft Pulse Cannon",
- damageType: "Energy",
- target: "Aircraft",
- lockonEfficiency: 45,
- alpha: 20,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `Anti-Ship Projectile Launching System`,
- stats: {
- type: "weapon",
- antiship: 5640,
- antiair: 0,
- siege: 882,
- hp: 26000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `AM-2x450`,
- name: `Dual-Fire Anti-Ship Missile Launcher`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 350,
- attributes: null
- }, {
- type: "weapon",
- count: 4,
- title: `AM-250`,
- name: `Light Missile Launcher`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 140,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B2",
- name: `Anti-Missile Defense System`,
- stats: {
- type: "weapon",
- antiship: 1104,
- antiair: 257,
- siege: 225,
- hp: 26000
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `AM-3x250`,
- name: `Triple-Fire Anti-Ship Missile Launcher`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 145,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `AM-12x100C`,
- name: `Interception Missile Launcher Array`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 35,
- attributes: ["Interception Capability", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B3",
- name: `Anti-Aircraft Missile Platform`,
- stats: {
- type: "weapon",
- antiship: 1527,
- antiair: 811,
- siege: 0,
- hp: 26000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `AM-4x180`,
- name: `Quadruple-Fire Multi-Role Missile Launcher`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 60,
- alpha: 45,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }, {
- type: "weapon",
- count: 2,
- title: `AM-2x100B`,
- name: `Dual-Fire Light Anti-Aircraft Missile Launcher`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 75,
- alpha: 80,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C1",
- name: "Auxiliary Aircraft Hanger",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-580`,
- name: "Large Fighter Hangar",
- hanger: "Large Fighter",
- capacity: 4,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C2",
- name: "Auxiliary Corvette Dockyard",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-3000`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 4,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/storage.png",
- system: "C3",
- name: "Support Repair UAV System",
- stats: {
- type: "armor",
- armor: null,
- extraHP: null,
- energyShield: null,
- hpRecovery: 8181,
- hp: 24500
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CRT-6`,
- name: "Engineering UAV Maintenance Platform",
- hanger: "Repair UAV",
- capacity: 3,
- attributes: null
- }]
- }]
- }, {
- name: "Marshal Crux",
- title: "Carrier",
- img: "/ships/marshalCrux.png",
- type: "Carrier",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "Antonios",
- direction: ["Outstanding Firepower", "Strategy & Support"],
- scope: "Direct-Fire Weapon",
- weight: 2,
- row: "Back",
- cp: 40,
- maxInFleet: 5,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: `"White Flashing" Integrated Armory`,
- stats: {
- type: "weapon",
- antiship: 16080,
- antiair: 691,
- siege: 1908,
- hp: 28800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `CI-600T`,
- name: `Heavy Ion Turret`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 450,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `CG-2220`,
- name: `Generic Dual-Cannon Battery`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 120,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `"White Flashing" Integrated Armory`,
- stats: {
- type: "weapon",
- antiship: 13628,
- antiair: 162,
- siege: 2275,
- hp: 28800
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `CR-1650`,
- name: `Railgun`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1000,
- attributes: null
- }, {
- type: "weapon",
- count: 6,
- title: `CG-1105B`,
- name: `Generic Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 20,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "A1",
- name: `Integrated Aircraft Hanger`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 25200
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-700`,
- name: "Large Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 6,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "A2",
- name: `Corvette Dock`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 25200
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-3200`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 6,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "B1",
- name: `Additional Energy System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 27000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `RET-200`,
- name: "Energy Amplification Device",
- attributes: ["Increase Aircraft Damage"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "B2",
- name: `Fire-Control Auxiliary Calibration System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 27000
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `XGC-200`,
- name: "Precision Guidance System",
- attributes: ["Increase Aircraft Hit Rate"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C1",
- name: `Additional Aircraft System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 25200
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBF-200`,
- name: "Medium Hanger",
- hanger: "Medium Fighter",
- capacity: 4,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "C2",
- name: `Missile Defense System`,
- stats: {
- type: "weapon",
- antiship: 5200,
- antiair: 504,
- siege: 392,
- hp: 28800
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `MK2-CM-4x250A "Storm"`,
- name: `Missile Launcher Nest`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 140,
- attributes: ["Anti-Aircraft Support"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C3",
- name: `Recon UAV System`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 25200
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: "CIT-3",
- name: `Fire-Control Spotter UAV Hanger`,
- hanger: "Spotter UAV",
- capacity: 3,
- attributes: ["Ship Calibration Support"]
- }]
- }]
- }, {
- name: "Solar Whale",
- title: "Armed Tactical Carrier",
- img: "/ships/solarWhale.png",
- type: "Carrier",
- variant: "A",
- variant_name: "Super Type",
- manufacturer: "NOMA Shipping",
- direction: ["Strategy & Support"],
- scope: "Empty",
- weight: 2,
- row: "Middle",
- cp: 55,
- maxInFleet: 5,
- modules: [{
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M1",
- name: "Corvette Dock",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24750
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-3200`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 6,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "M2",
- name: "Large Aircraft System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24750
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-1200`,
- name: "Large Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 8,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `Integrated Armory`,
- stats: {
- type: "weapon",
- antiship: 9648,
- antiair: 589,
- siege: 959,
- hp: 27000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `BG-2450A`,
- name: `Dual-Cannon Heavy Battery`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 320,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `MK3-BM-8x320 "Lightning Field"`,
- name: `Dodeca-Fire Anti-Ship Missile System`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 220,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `Projectile Weapon Platform`,
- stats: {
- type: "weapon",
- antiship: 8749,
- antiair: 589,
- siege: 648,
- hp: 27000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `MK5-BM-16x180 "Lightning Field"`,
- name: `Anti-Ship Missile Array`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 120,
- attributes: null
- }, {
- type: "weapon",
- count: 2,
- title: `MK3-BM-8x320 "Lightning Field"`,
- name: `Dodeca-Fire Anti-Ship Missile System`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 220,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A3",
- name: `Integrated Cannon Platform`,
- stats: {
- type: "weapon",
- antiship: 8888,
- antiair: 1021,
- siege: 630,
- hp: 27000
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `MK3-BM-8x320 "Lightning Field"`,
- name: `Dodeca-Fire Anti-Ship Missile System`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 220,
- attributes: ["Anti-Aircraft Counterattack"]
- }, {
- type: "weapon",
- count: 2,
- title: `BG-2180`,
- name: `Anti-Ship Cannon`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: null,
- alpha: 80,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "B1",
- name: "Ship Maintenance System",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 25200
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `BSY-5000`,
- name: "Large Docking Jetty",
- attributes: ["Aircraft Recovery"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B2",
- name: "Corvette Loading Platform",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24750
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CBC-2000`,
- name: "Corvette Dock",
- hanger: "Corvette",
- capacity: 3,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C1",
- name: "Aircraft Hanger",
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 24750
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CFB-600`,
- name: "Aircraft Hanger",
- hanger: "Large Fighter",
- capacity: 5,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "C2",
- name: "Siege UAV System",
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 0,
- siege: 6652,
- hp: 24750
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CST-6`,
- name: "Siege UAV Pod",
- hanger: "Siege UAV",
- capacity: 4,
- damageType: "Energy",
- target: "Building",
- lockonEfficiency: null,
- alpha: 720,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "C3",
- name: "Anti-Aircraft Missile Platform",
- stats: {
- type: "weapon",
- antiship: 2618,
- antiair: 1178,
- siege: 0,
- hp: 27000
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `BM-12x180T`,
- name: "Missile Defense System",
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 50,
- attributes: ["Interception Capability", "Anti-Aircraft Special Ammo", "Anti-Aircraft Support"]
- }]
- }]
- }, {
- name: "Warspite",
- title: "Assault Battleship",
- img: "/ships/warspite.png",
- type: "Battleship",
- variant: "A",
- variant_name: "Super",
- manufacturer: "Empty",
- direction: ["Empty"],
- scope: "Empty",
- weight: 0,
- row: "Middle",
- cp: 45,
- maxInFleet: 3,
- modules: [{
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M1",
- name: `Bow-Mounted Ion Cannon System`,
- stats: {
- type: "weapon",
- antiship: 21000,
- antiair: 0,
- siege: 7350,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `FI-800`,
- name: `Heavy Ion Cannon`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 1050,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "M2",
- name: `Bow-Mounted High-Energy Bombardment System`,
- stats: {
- type: "weapon",
- antiship: 21272,
- antiair: 0,
- siege: 2127,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 1,
- title: `FM-1x575`,
- name: `Heavy High-Energy Bomber`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 780,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A1",
- name: `Anti-Ship Torpedo System`,
- stats: {
- type: "weapon",
- antiship: 8280,
- antiair: 0,
- siege: 3150,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `FT-4x160`,
- name: `Missile Silo`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 125,
- attributes: ["Crit"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "A2",
- name: `Projectile Weapon System`,
- stats: {
- type: "weapon",
- antiship: 10000,
- antiair: 2775,
- siege: 3850,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 6,
- title: `FM-1x205`,
- name: `Missile Silo`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 60,
- alpha: 110,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "B1",
- name: `Siege Armed System`,
- stats: {
- type: "weapon",
- antiship: 6200,
- antiair: 0,
- siege: 4480,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `FT-1-365C`,
- name: `Siege Torpedo`,
- damageType: "Projectile",
- target: "Building",
- lockonEfficiency: null,
- alpha: 320,
- attributes: ["Crit"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/aircraft.png",
- system: "B2",
- name: "Siege UAV System",
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 0,
- siege: 6048,
- hp: 27900
- },
- subsystems: [{
- type: "hanger",
- count: 1,
- title: `CST-6`,
- name: "Siege UAV Pod",
- hanger: "Siege UAV",
- capacity: 4,
- damageType: "Energy",
- target: "Building",
- lockonEfficiency: null,
- alpha: 630,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "C1",
- name: `Experimental Ion Cannon System`,
- stats: {
- type: "weapon",
- antiship: 9176,
- antiair: 0,
- siege: 3211,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `FI-400T`,
- name: `Experimental Ion Turret`,
- damageType: "Energy",
- target: "Small Ship",
- lockonEfficiency: null,
- alpha: 260,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "C2",
- name: `Ion Turret System`,
- stats: {
- type: "weapon",
- antiship: 10400,
- antiair: 0,
- siege: 7280,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `FI-550`,
- name: `Siege Ion Turret`,
- damageType: "Energy",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 520,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D1",
- name: `Medium Anti-Ship Missile`,
- stats: {
- type: "weapon",
- antiship: 9000,
- antiair: 1530,
- siege: 3569,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 4,
- title: `FM-3x180`,
- name: `Missile Vertical Launcher`,
- damageType: "Projectile",
- target: "Small Ship",
- lockonEfficiency: 10,
- alpha: 85,
- attributes: ["Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "D2",
- name: `Large Anti-Ship Missile`,
- stats: {
- type: "weapon",
- antiship: 11100,
- antiair: 0,
- siege: 3990,
- hp: 27900
- },
- subsystems: [{
- type: "weapon",
- count: 2,
- title: `FM-1x450`,
- name: `Missile Launcher`,
- damageType: "Projectile",
- target: "Large Ship",
- lockonEfficiency: null,
- alpha: 380,
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "E1",
- name: `Standard Sacrum Chu Imperium Armor System`,
- stats: {
- type: "armor",
- extraHP: 284970,
- armor: 270,
- energyShield: 5,
- hp: 27900
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `SC-100`,
- name: `Ship Core`,
- attributes: null
- }, {
- type: "misc",
- count: 1,
- title: "AC-111",
- name: "Sacrum Chu Imperium Super-Heavy Armor",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/armor.png",
- system: "E2",
- name: `Armor System`,
- stats: {
- type: "armor",
- extraHP: 284970,
- armor: 300,
- energyShield: 10,
- hp: 27900
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `SC-100`,
- name: `Ship Core`,
- attributes: null
- }, {
- type: "misc",
- count: 1,
- title: "AC-150",
- name: "Generic Super-Heavy Armor",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/speed.png",
- system: "F1",
- name: `Standard Sacrum Chu Imperium Propulsion System`,
- stats: {
- type: "propulsion",
- cruise: 220,
- warp: 1100,
- hp: 30650
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `EN-111`,
- name: `Sacrum Chu Imperium Vector Engine`,
- attributes: null
- }, {
- type: "misc",
- count: 1,
- title: "EC-111",
- name: "Sacrum Chu Imperium Warp Drive",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/speed.png",
- system: "F2",
- name: `Propulsion System`,
- stats: {
- type: "propulsion",
- cruise: 250,
- warp: 1250,
- hp: 27900
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `EN-600`,
- name: `Generic Vector Engine`,
- attributes: null
- }, {
- type: "misc",
- count: 1,
- title: "EC-600",
- name: "Generic Warp Drive",
- attributes: null
- }]
- }, {
- type: "known",
- img: "/weapons/icons/jamming.png",
- system: "G1",
- name: `Ion Enhancement Device`,
- stats: {
- type: "weapon",
- antiship: null,
- antiair: null,
- siege: null,
- hp: 27900
- },
- subsystems: [{
- type: "misc",
- count: 1,
- title: `RII-600`,
- name: "Ion Energy Acceleration Device",
- attributes: ["Increase Ion Damage"] // increases ion cannon damage by 25%
- }]
- }, {
- type: "unknown",
- img: "/weapons/icons/unknown.png",
- system: "G2",
- unknown: true
- }, {
- type: "known",
- img: "/weapons/icons/cannon.png",
- system: "H1",
- name: `Short-Range Anti-Aircraft System`,
- stats: {
- type: "weapon",
- antiship: 0,
- antiair: 5717,
- siege: 0,
- hp: 28400
- },
- subsystems: [{
- type: "weapon",
- count: 6,
- title: `FM-2x90B`,
- name: `Missile Vertical Launcher`,
- damageType: "Projectile",
- target: "Aircraft",
- lockonEfficiency: 60,
- alpha: 50,
- attributes: ["Anti-Aircraft Special Ammo", "Anti-Aircraft High-Speed Strike", "Anti-Aircraft Counterattack"]
- }]
- }, {
- type: "unknown",
- img: "/weapons/icons/unknown.png",
- system: "H2",
- unknown: true
- }]
- }
- ];
- return data;
-})
diff --git a/server/middleware/init.ts b/server/middleware/init.ts
new file mode 100644
index 0000000..c2dc734
--- /dev/null
+++ b/server/middleware/init.ts
@@ -0,0 +1,12 @@
+import admin from "firebase-admin";
+
+export default defineEventHandler(() => {
+ const config = useRuntimeConfig();
+ const decodedServiceAccount = Buffer.from(config.base64ServiceAccount, "base64").toString("utf-8");
+ const credentials = JSON.parse(decodedServiceAccount);
+
+ if (!admin.apps.length)
+ admin.initializeApp({
+ credential: admin.credential.cert(credentials)
+ });
+});
diff --git a/stores/colorGeneratorStore.ts b/stores/colorGeneratorStore.ts
deleted file mode 100644
index 67d0b85..0000000
--- a/stores/colorGeneratorStore.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-
-export const colorGeneratorStore = defineStore("colorGenerator", () => {
- const inputText = ref("");
- const outputText = ref ([]);
-
- const color1 = ref("#f957ff");
- const color2 = ref("#ffc94d");
- const intensity = ref(15);
- const compression = ref(2);
-
- return { inputText, outputText, color1, color2, intensity, compression }
-});
diff --git a/stores/equipmentStore.ts b/stores/equipmentStore.ts
deleted file mode 100644
index 5ec61c7..0000000
--- a/stores/equipmentStore.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-
-export const equipmentStore = defineStore("equipment", () => {
- const filter = ref<"Equipment" | "Blueprints" | null>(null);
- const current = ref();
- const search = ref("");
-
- return { filter, current, search }
-});
diff --git a/stores/modLibraryStore.ts b/stores/modLibraryStore.ts
deleted file mode 100644
index d340be3..0000000
--- a/stores/modLibraryStore.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-
-export const modLibraryStore = defineStore("modLibrary", () => {
- const ship = ref();
- const category = ref("M");
- const mod = ref(1);
-
- return { ship, category, mod }
-});
diff --git a/stores/raHelperStore.ts b/stores/raHelperStore.ts
deleted file mode 100644
index b67932a..0000000
--- a/stores/raHelperStore.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-
-export const raHelperStore = defineStore("raHelper", () => {
- const manufacturer = ref("Jupiter Industry");
- const direction = ref("Outstanding Firepower");
- const scope = ref("Projectile Weapon");
- const ship = ref();
- const variant = ref<"A" | "B" | "C" | "D">("A");
- const search = ref("");
-
- return { manufacturer, direction, scope, ship, variant, search }
-});
diff --git a/stores/shipComparisonStore.ts b/stores/shipComparisonStore.ts
deleted file mode 100644
index 56897b1..0000000
--- a/stores/shipComparisonStore.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-
-export const shipComparisonStore = defineStore("shipComparison", () => {
- const ship1 = ref ();
- const ship2 = ref ();
-
- return { ship1, ship2 }
-});
diff --git a/stores/shipDataStore.ts b/stores/shipDataStore.ts
deleted file mode 100644
index 33f1738..0000000
--- a/stores/shipDataStore.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-
-export const shipDataStore = defineStore("shipData", () => {
- const shipData = ref();
- const equipmentData = ref<(Equipment | TechnicalBlueprint)[]>();
-
- return { shipData, equipmentData }
-});
diff --git a/stores/user.ts b/stores/user.ts
new file mode 100644
index 0000000..0aee5f0
--- /dev/null
+++ b/stores/user.ts
@@ -0,0 +1,64 @@
+export const useUserStore = defineStore("userStore", () => {
+ const isDarkMode = ref(false);
+ const alert = ref();
+ const user = ref();
+ const shipData = ref();
+ const shipDifficulties = ref>();
+
+ // blueprint tracker
+ const blueprintsAutosave = ref();
+ const hasUnsavedChanges = ref(false);
+
+ async function getUser(createUserIfFail = true) {
+ const uid = localStorage.getItem("uid");
+ const accessToken = localStorage.getItem("token");
+
+ if (uid && accessToken) {
+ const { success, error, content } = await $fetch("/api/getUser", { method: "POST", body: { uid, accessToken, updateOrigin: false } });
+ if (!success && error !== "User not found.") return console.error(error);
+ if (success && content) {
+ user.value = content;
+ localStorage.setItem("uid", content.uid);
+ localStorage.setItem("token", content.accessToken);
+ return;
+ }
+ }
+
+ if (!createUserIfFail) return;
+
+ const { success, error, content } = await $fetch("/api/createUser");
+ if (!success && error) return console.error(error);
+ if (success && content) {
+ user.value = content;
+ localStorage.setItem("uid", content.uid);
+ localStorage.setItem("token", content.accessToken);
+ }
+ }
+
+ async function fetchShipData() {
+ const { data, difficulty } = await $fetch("/api/data/ships");
+ shipData.value = data;
+ shipDifficulties.value = difficulty;
+ }
+
+ async function fetchLatestAlert() {
+ const { success, error, content } = await $fetch("/api/getAlert");
+ if (!success && error) return console.error(error);
+
+ if (success && content) {
+ alert.value = content;
+
+ const latestClosedAlert = localStorage.getItem("alert");
+ if (!latestClosedAlert) return (alert.value.show = true);
+ alert.value.show = latestClosedAlert !== alert.value.id;
+ }
+ }
+
+ function init(createUserIfFail = true) {
+ void getUser(createUserIfFail);
+ void fetchLatestAlert();
+ void fetchShipData();
+ }
+
+ return { isDarkMode, alert, user, shipData, shipDifficulties, blueprintsAutosave, hasUnsavedChanges, getUser, init };
+});
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..0949685
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,32 @@
+import daisyUI from "daisyui";
+import flowbite from "flowbite/plugin";
+import flyonUI from "flyonui";
+
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["./app.vue", "./error.vue", "./pages/**/*.{vue,js,ts,jsx,tsx}", "./components/**/*.{vue,js,ts,jsx,tsx}", "./layouts/**/*.{vue,js,ts,jsx,tsx}", "./node_modules/flowbite/**/*.js"],
+ theme: {
+ colors: {
+ body: "var(--bg-color)"
+ },
+ extend: {
+ screens: {
+ lg: "1025px"
+ }
+ }
+ },
+ plugins: [daisyUI, flowbite, flyonUI],
+ daisyui: {
+ prefix: "du-",
+ logs: false
+ },
+ flyonui: {
+ prefix: "fo-",
+ logs: false
+ },
+ darkMode: "selector",
+ future: {
+ // mobile support for hover until tailwind v4 is out and this is default behavior
+ hoverOnlyWhenSupported: true
+ }
+};
diff --git a/tests/api/ships.test.ts b/tests/api/ships.test.ts
new file mode 100644
index 0000000..45f1319
--- /dev/null
+++ b/tests/api/ships.test.ts
@@ -0,0 +1,68 @@
+import { describe, test, expect } from "vitest";
+import { setup, $fetch } from "@nuxt/test-utils";
+
+describe("Ship Data Tests", async () => {
+ await setup({ server: true, setupTimeout: 180000 });
+
+ test("Super capital ship module subsystem stats should add up to overall module stats", async () => {
+ const response = await $fetch("/api/data/ships");
+ const data = response.data.filter((ship) => "modules" in ship).flatMap((ship) => ship.modules.map((mod) => [ship.name, mod])) as [string, AllModule][];
+
+ const invalidSubsystems: [string, string, string, string][] = [];
+ for (const [ship, mod] of data) {
+ if (mod.type === "unknown") continue;
+ if (!("antiship" in mod.stats) || !("antiair" in mod.stats) || !("siege" in mod.stats)) continue;
+ if (mod.subsystems.every((subsystem) => !("stats" in subsystem))) continue;
+
+ const stats = ["antiship", "antiair", "siege"] as (keyof typeof mod.stats)[];
+ for (const stat of stats) {
+ if (mod.stats[stat] === null || mod.subsystems.some((subsystem) => "stats" in subsystem && !(stat in subsystem.stats.targetPriority))) continue;
+ const overallStat = mod.stats[stat];
+
+ const subsystemStat = mod.subsystems.reduce((acc, curr) => {
+ if (!("stats" in curr)) return acc;
+ if (Array.isArray(curr.stats.targetPriority)) return acc;
+
+ const currentTargetPriority = curr.stats.targetPriority[stat as keyof typeof curr.stats.targetPriority];
+ if (!currentTargetPriority) return acc;
+
+ return acc + currentTargetPriority.damage;
+ }, 0);
+
+ if (overallStat !== subsystemStat) invalidSubsystems.push([ship, stat, mod.system, mod.name]);
+ }
+ }
+
+ expect(invalidSubsystems).toMatchObject([]);
+ });
+
+ test("Super capital ship module sources should be in credits", async () => {
+ const response = await $fetch("/api/data/ships");
+ const data = response.data.filter((ship) => "modules" in ship).flatMap((ship) => ship.modules.map((mod) => [ship.name, mod])) as [string, AllModule][];
+
+ const missingCredits: [string, string, string, string][] = [];
+ for (const [ship, mod] of data) {
+ if (mod.type === "unknown" || !mod.sourcedFrom) continue;
+
+ for (const source of mod.sourcedFrom) {
+ if (!credits.find((person) => person.name === source)) missingCredits.push([ship, mod.system, mod.name, source]);
+ }
+ }
+
+ expect(missingCredits).toMatchObject([]);
+ });
+
+ test("Ship image paths should follow naming scehema", async () => {
+ const response = await $fetch("/api/data/ships");
+ const data = response.data;
+
+ const wrongImages: [string, string, string, string][] = [];
+ for (const ship of data) {
+ const expectedPath = `/ships/${shipNameToImage(ship.name)}_${ship.variant.toLowerCase()}.png`;
+ const actualPath = ship.img;
+ if (actualPath !== expectedPath) wrongImages.push([ship.name, ship.variant, actualPath, expectedPath]);
+ }
+
+ expect(wrongImages).toMatchObject([]);
+ });
+});
diff --git a/tests/changelog.test.ts b/tests/changelog.test.ts
new file mode 100644
index 0000000..31ad9ea
--- /dev/null
+++ b/tests/changelog.test.ts
@@ -0,0 +1,20 @@
+import { describe, test, expect } from "vitest";
+
+describe("Changelog Tests", () => {
+ test("Versions should be unique", () => {
+ const versions = changelog.map((version) => version.version);
+ const uniqueVersions = new Set(versions);
+
+ expect(uniqueVersions.size).toBe(versions.length);
+ });
+
+ test("Version release dates should be in YYYY-MM-DD format", () => {
+ const regex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
+ const releaseDates = changelog.map((version) => version.release);
+
+ for (const release of releaseDates) {
+ expect(regex.test(release)).toBe(true);
+ expect(new Date(release).toISOString().slice(0, 10)).toBe(release);
+ }
+ });
+});
diff --git a/tests/credits.test.ts b/tests/credits.test.ts
new file mode 100644
index 0000000..ea4e621
--- /dev/null
+++ b/tests/credits.test.ts
@@ -0,0 +1,20 @@
+import { describe, test, expect } from "vitest";
+
+describe("Credits Tests", () => {
+ test("People should only have 1 credit object", () => {
+ const list = credits.map((person) => person.name);
+ const uniqueList = new Set(list);
+
+ expect(uniqueList.size).toBe(list.length);
+ });
+
+ test("Dates should be in YYYY-MM-DD format", () => {
+ const regex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
+ const dates = credits.map((person) => person.dateAdded);
+
+ for (const date of dates) {
+ expect(regex.test(date)).toBe(true);
+ expect(new Date(date).toISOString().slice(0, 10)).toBe(date);
+ }
+ });
+});
diff --git a/utils/blueprints.ts b/utils/blueprints.ts
new file mode 100644
index 0000000..ed24e29
--- /dev/null
+++ b/utils/blueprints.ts
@@ -0,0 +1,70 @@
+export interface BlueprintFighter extends Fighter {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+}
+
+export interface BlueprintCorvette extends Corvette {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+}
+
+export interface BlueprintCapitalShip extends CapitalShip {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+}
+
+export interface BlueprintMediumFighterCapitalShip extends MediumFighterCapitalShip {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+}
+
+export interface BlueprintLargeFighterCapitalShip extends LargeFighterCapitalShip {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+}
+
+export interface BlueprintCorvetteCapitalShip extends CorvetteCapitalShip {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+}
+
+export interface BlueprintUnknownModule extends UnknownModule {
+ unlocked: boolean;
+}
+
+export interface BlueprintWeaponModule extends WeaponModule {
+ unlocked: boolean;
+}
+
+export interface BlueprintPropulsionModule extends PropulsionModule {
+ unlocked: boolean;
+}
+
+export interface BlueprintMiscModule extends MiscModule {
+ unlocked: boolean;
+}
+
+export interface BlueprintSuperCapitalShip extends SuperCapitalShip {
+ unlocked: boolean;
+ techPoints: number;
+ mirrorTechPoints: boolean;
+ modules: (BlueprintUnknownModule | BlueprintWeaponModule | BlueprintPropulsionModule | BlueprintMiscModule)[];
+}
+
+export type BlueprintAllShip =
+ | BlueprintFighter
+ | BlueprintCorvette
+ | BlueprintCapitalShip
+ | BlueprintMediumFighterCapitalShip
+ | BlueprintLargeFighterCapitalShip
+ | BlueprintCorvetteCapitalShip
+ | BlueprintSuperCapitalShip;
+
+export type ShipSorter = (shipA: BlueprintAllShip, shipB: BlueprintAllShip) => number;
+export type ShipFilter = (ship: BlueprintAllShip) => boolean;
diff --git a/utils/changelog.ts b/utils/changelog.ts
index f925cc3..84d0dfc 100644
--- a/utils/changelog.ts
+++ b/utils/changelog.ts
@@ -1,247 +1,401 @@
-
export type Changelog = {
- type: "release" | "minor release" | "bugfix";
- version: string;
- release: string;
- notes: string[];
-}
+ type: "release" | "minor release" | "bugfix";
+ /** Excludes any flavor, such as a leading v
+ * @example "0.1.0"
+ */
+ version: string;
+ /** YYYY-MM-DD */
+ release: string;
+ notes: string[];
+};
-export const changelog: Changelog[] = [{
+export const changelog: readonly Changelog[] = [
+ {
type: "release",
version: "0.1.0",
- release: "January 13, 2024",
+ release: "2024-01-13",
notes: ["Initial release"]
-}, {
+ },
+ {
type: "release",
version: "0.2.0",
- release: "January 14, 2024",
- notes: ["Added header and footer", "Added fade when changing theme", "Added light mode colors",
- "Optimized font sizes for mobile users", "Made theme button bigger",
- "Fixed character counter in Color Generator", "Added Research Agreement Helper"]
-}, {
+ release: "2024-01-14",
+ notes: [
+ "Added header and footer",
+ "Added fade when changing theme",
+ "Added light mode colors",
+ "Optimized font sizes for mobile users",
+ "Made theme button bigger",
+ "Fixed character counter in Color Generator",
+ "Added Research Agreement Helper"
+ ]
+ },
+ {
type: "release",
version: "0.3.0",
- release: "January 15, 2024",
- notes: ["Added Changelog", "Removed theme button image", "Moved theme button to header buttons",
- "Added active and hover effects to header buttons"]
-}, {
+ release: "2024-01-15",
+ notes: ["Added Changelog", "Removed theme button image", "Moved theme button to header buttons", "Added active and hover effects to header buttons"]
+ },
+ {
type: "release",
version: "0.3.1",
- release: "January 16, 2024",
- notes: ["Changed the information displayed in Research Agreement Helper", "Version number in footer is now dynamic",
- "Optimized how information is displayed in Research Agreement Helper for mobile users", "Added images to Research Agreement Helper"]
-}, {
+ release: "2024-01-16",
+ notes: [
+ "Changed the information displayed in Research Agreement Helper",
+ "Version number in footer is now dynamic",
+ "Optimized how information is displayed in Research Agreement Helper for mobile users",
+ "Added images to Research Agreement Helper"
+ ]
+ },
+ {
type: "bugfix",
version: "0.3.2",
- release: "January 16, 2024",
+ release: "2024-01-16",
notes: ["Optimized Research Agreement Helper for mobile users further"]
-}, {
+ },
+ {
type: "release",
version: "0.3.3",
- release: "January 17, 2024",
- notes: ["Changed how Color Generator operates", "Color Generator is now based on text-based markers rather than highlighting text",
- "Removed the Underline option in Color Generator", "Changed tutorial text of Color Generator to match the other changes",
- "Fixed the character counters in Color Generator"]
-}, {
+ release: "2024-01-17",
+ notes: [
+ "Changed how Color Generator operates",
+ "Color Generator is now based on text-based markers rather than highlighting text",
+ "Removed the Underline option in Color Generator",
+ "Changed tutorial text of Color Generator to match the other changes",
+ "Fixed the character counters in Color Generator"
+ ]
+ },
+ {
type: "bugfix",
version: "0.3.4",
- release: "January 20, 2024",
+ release: "2024-01-20",
notes: ["Fixed a bug where Color Generator output not updating when a color marker was placed in the input"]
-}, {
+ },
+ {
type: "release",
version: "0.4.0",
- release: "January 28, 2024",
- notes: ["Added Module Library", "Fixed ST59 and Spear of Uranus being misplaced in the Research Agreement Helper ship order",
- "Changed the size of active buttons to better fit mobile devices"]
-}, {
+ release: "2024-01-28",
+ notes: ["Added Module Library", "Fixed ST59 and Spear of Uranus being misplaced in the Research Agreement Helper ship order", "Changed the size of active buttons to better fit mobile devices"]
+ },
+ {
type: "release",
version: "0.4.1",
- release: "January 29, 2024",
- notes: ["Renamed Changelog to Home", "Changed Research Agreement Helper and Module Library to save progress if you switch Gravity Assist tools",
- "Significantly changed the display of data in Module Library", "Changed Gravity Assist to default to displaying Home on load",
- "Added alternative Navigation Bar buttons to the Home Page", "Fixed some module data"]
-}, {
+ release: "2024-01-29",
+ notes: [
+ "Renamed Changelog to Home",
+ "Changed Research Agreement Helper and Module Library to save progress if you switch Gravity Assist tools",
+ "Significantly changed the display of data in Module Library",
+ "Changed Gravity Assist to default to displaying Home on load",
+ "Added alternative Navigation Bar buttons to the Home Page",
+ "Fixed some module data"
+ ]
+ },
+ {
type: "release",
version: "0.4.2",
- release: "January 30, 2024",
- notes: ["Added a search by ship feature for Research Agreement Helper", "Optimized Module Library buttons for mobile devices",
- "Removed the Theme button", "Fixed wrong results for Hayreddin's Loyal and Thunderbolt Star in Research Agreement Helper"]
-}, {
+ release: "2024-01-30",
+ notes: [
+ "Added a search by ship feature for Research Agreement Helper",
+ "Optimized Module Library buttons for mobile devices",
+ "Removed the Theme button",
+ "Fixed wrong results for Hayreddin's Loyal and Thunderbolt Star in Research Agreement Helper"
+ ]
+ },
+ {
type: "release",
version: "1.0.0",
- release: "February 17, 2024",
- notes: ["Reworked all of Color Generator", "Reworked display of Research Agreement Helper", "Added Color Generator gradients",
- "Color Generator now allows for copy to clipboard", "Improved the RA Finder algorithm", "Changed display of information in Research Agreement Helper",
- "Changed display of information in Module Library", "Changed display of information in Changelog", "Changed display of header buttons",
- "Optimized every display for mobile users", "Changed display of information in Module Library for desktop users",
- "Gravity Assist tool links are now routed", "Added Eternal Heavens to Research Agreement Helper and Module Library",
- "Disabled double-click to zoom on buttons for mobile users"]
-}, {
+ release: "2024-02-17",
+ notes: [
+ "Reworked all of Color Generator",
+ "Reworked display of Research Agreement Helper",
+ "Added Color Generator gradients",
+ "Color Generator now allows for copy to clipboard",
+ "Improved the RA Finder algorithm",
+ "Changed display of information in Research Agreement Helper",
+ "Changed display of information in Module Library",
+ "Changed display of information in Changelog",
+ "Changed display of header buttons",
+ "Optimized every display for mobile users",
+ "Changed display of information in Module Library for desktop users",
+ "Gravity Assist tool links are now routed",
+ "Added Eternal Heavens to Research Agreement Helper and Module Library",
+ "Disabled double-click to zoom on buttons for mobile users"
+ ]
+ },
+ {
type: "bugfix",
version: "1.0.1",
- release: "February 18, 2024",
- notes: ["Added an animation for copying text in Color Generator", "Fixed the Color Generator character counter not working above 1,000 characters",
- "Fixed a bug where the Color Generator reverse button wouldn't work on Chrome for iOS", "Fixed a bug where RA Finder algorithm wouldn't work",
- "Optimized display of information for mobile users in Mod Library"]
-}, {
+ release: "2024-02-18",
+ notes: [
+ "Added an animation for copying text in Color Generator",
+ "Fixed the Color Generator character counter not working above 1,000 characters",
+ "Fixed a bug where the Color Generator reverse button wouldn't work on Chrome for iOS",
+ "Fixed a bug where RA Finder algorithm wouldn't work",
+ "Optimized display of information for mobile users in Mod Library"
+ ]
+ },
+ {
type: "release",
version: "1.0.2",
- release: "February 19, 2024",
- notes: ["Added a time estimate for research agreement paths in RA Helper", "Added animations to popup windows in Color Generator and RA Helper",
- "Replaced Mod Library and RA Helper ship images with higher quality ones", "Fixed AT021-B and AT021-C appearing under the wrong filters in RA Helper"]
-}, {
+ release: "2024-02-19",
+ notes: [
+ "Added a time estimate for research agreement paths in RA Helper",
+ "Added animations to popup windows in Color Generator and RA Helper",
+ "Replaced Mod Library and RA Helper ship images with higher quality ones",
+ "Fixed AT021-B and AT021-C appearing under the wrong filters in RA Helper"
+ ]
+ },
+ {
type: "release",
version: "1.1.0",
- release: "February 20, 2024",
+ release: "2024-02-20",
notes: ["Added Equipment Encyclopedia", "Added a color compression option in Color Generator to create longer text", "Edited home tab text"]
-}, {
+ },
+ {
type: "release",
version: "1.1.1",
- release: "February 21, 2024",
- notes: ["Color Generator character counters now update automatically after switching compression",
- "Added more images to Equipment Encyclopedia", "Added 2 new colors to Color Generator", "Made red buttons more vibrant",
- "Added a credits button to Home page", "Optimized the detail cards in Equipment Encyclopedia for mobile users",
- "Fixed some data in Equipment Encylcopedia", "Added missing technical blueprints to Equipment Encyclopedia", "Full changelog is now a window"]
-}, {
+ release: "2024-02-21",
+ notes: [
+ "Color Generator character counters now update automatically after switching compression",
+ "Added more images to Equipment Encyclopedia",
+ "Added 2 new colors to Color Generator",
+ "Made red buttons more vibrant",
+ "Added a credits button to Home page",
+ "Optimized the detail cards in Equipment Encyclopedia for mobile users",
+ "Fixed some data in Equipment Encylcopedia",
+ "Added missing technical blueprints to Equipment Encyclopedia",
+ "Full changelog is now a window"
+ ]
+ },
+ {
type: "minor release",
version: "1.1.2",
- release: "February 22, 2024",
+ release: "2024-02-22",
notes: ["Finished adding all images to Eqquipment Encyclopedia", "Changed the display of information in the changelog"]
-}, {
+ },
+ {
type: "bugfix",
version: "1.1.3",
- release: "February 25, 2024",
+ release: "2024-02-25",
notes: ["Optimized display of information in Equipment Encyclopedia further for mobile users"]
-}, {
+ },
+ {
type: "release",
version: "1.1.4",
- release: "February 29, 2024",
+ release: "2024-02-29",
notes: ["Added 3 new colors to Color Generator: Rainbow, Blue/Pink, and Red/Dark"]
-}, {
+ },
+ {
type: "release",
version: "1.1.5",
- release: "March 1, 2024",
- notes: ["Reworked the display of colors when choosing a color in Color Generator", "Changed Blue/Purple to Purple/Purple in Color Generator",
- "Added 5 new colors to Color Generator: Red/Orange, Blue/Orange, Purple/Mint, Green/Green, and Sunset", "Colors are now separated into categories"]
-}, {
+ release: "2024-03-01",
+ notes: [
+ "Reworked the display of colors when choosing a color in Color Generator",
+ "Changed Blue/Purple to Purple/Purple in Color Generator",
+ "Added 5 new colors to Color Generator: Red/Orange, Blue/Orange, Purple/Mint, Green/Green, and Sunset",
+ "Colors are now separated into categories"
+ ]
+ },
+ {
type: "minor release",
version: "1.1.5.1",
- release: "March 1, 2024",
+ release: "2024-03-01",
notes: ["Revamped the color pallete of Blue/Purple in Color Generator"]
-}, {
+ },
+ {
type: "release",
version: "1.1.6",
- release: "March 2, 2024",
+ release: "2024-03-02",
notes: ["Added the ability to share links for Gravity Assist page options", "Added Eternal Heavens A2 to Module Library"]
-}, {
+ },
+ {
type: "release",
version: "1.2.0",
- release: "March 8, 2024",
- notes: ["Added Fleet Builder", "Damage and armor bar representations in Module Library now animate dynamically",
- "Some images in Module Library are now high quality SVG files", "Research Agreement Helper now displays minutes if there is a remainder",
- "Gravity Assist icon is now a high quality SVG", "Clarified the share buttons", "Added onscreen animations when clicking share buttons"]
-}, {
+ release: "2024-03-08",
+ notes: [
+ "Added Fleet Builder",
+ "Damage and armor bar representations in Module Library now animate dynamically",
+ "Some images in Module Library are now high quality SVG files",
+ "Research Agreement Helper now displays minutes if there is a remainder",
+ "Gravity Assist icon is now a high quality SVG",
+ "Clarified the share buttons",
+ "Added onscreen animations when clicking share buttons"
+ ]
+ },
+ {
type: "bugfix",
version: "1.2.1",
- release: "March 24, 2024",
- notes: ["Added Eternal Heavens B1 module", "Fixed flagship choices not changing after removing a flagship ship in Fleet Builder",
- "Edited credits"]
-}, {
+ release: "2024-03-24",
+ notes: ["Added Eternal Heavens B1 module", "Fixed flagship choices not changing after removing a flagship ship in Fleet Builder", "Edited credits"]
+ },
+ {
type: "release",
version: "1.2.2",
- release: "April 7, 2024",
- notes: ["Changed copy text and share link buttons to icons", "Added instructions to RA Helper ship search text when no ship is selected",
- "Revamped the color palettes of Blue/Purple and Sunset in Color Generator", "Added 2 new colors to Color Generator: Pink/Green and Orange/Orange",
- "Fixed the display of information in Equipment Encyclopedia for mobile users (for real this time)", "Optimized home menu buttons and added icons",
- "Condensed some credits for better readability", "Added random fun facts to the home page", "Optimized display of information in Module Library",
- "Changed the name of \"Credits\" to \"Contributors\"", "Fixed the close button on the credits screen being too small for mobile users"]
-}, {
+ release: "2024-04-07",
+ notes: [
+ "Changed copy text and share link buttons to icons",
+ "Added instructions to RA Helper ship search text when no ship is selected",
+ "Revamped the color palettes of Blue/Purple and Sunset in Color Generator",
+ "Added 2 new colors to Color Generator: Pink/Green and Orange/Orange",
+ "Fixed the display of information in Equipment Encyclopedia for mobile users (for real this time)",
+ "Optimized home menu buttons and added icons",
+ "Condensed some credits for better readability",
+ "Added random fun facts to the home page",
+ "Optimized display of information in Module Library",
+ 'Changed the name of "Credits" to "Contributors"',
+ "Fixed the close button on the credits screen being too small for mobile users"
+ ]
+ },
+ {
type: "minor release",
version: "1.2.3",
- release: "April 11, 2024",
+ release: "2024-04-11",
notes: ["Added some new home screen tips"]
-}, {
+ },
+ {
type: "bugfix",
version: "1.2.4",
- release: "April 16, 2024",
+ release: "2024-04-16",
notes: ["Edited module names for Spear of Uranus for A1, A2, and A3 to match the new ingame names."]
-}, {
+ },
+ {
type: "minor release",
version: "1.2.5",
- release: "April 27, 2024",
+ release: "2024-04-27",
notes: ["Added Ranger A and B to Research Agreement Helper", "Added Ediacaran D2 and Marshal Crux C3 to Module Library", "Edited Contributors list"]
-}, {
+ },
+ {
type: "release",
version: "1.2.6",
- release: "May 16, 2024",
+ release: "2024-05-16",
notes: ["Added Ediacaran A2, B2, and C1 to Module Library", "Made some major changes behind the scenes", "Removed Fleet Builder temporarily"]
-}, {
+ },
+ {
type: "release",
version: "1.3.0",
- release: "May 27, 2024",
- notes: ["You can now choose your own colors, intensity, and compression in Color Generator", "Completely reworked the design of the website",
- "Loading speeds improved tremendously", "You can now zoom out and in to your heart's content",
- "Buttons for navigating between pages is no longer in the header and instead in a new side bar", "Added better route navigation",
- "You can now freely select ships in Module Library without scrolling through the list", "Changelog and Contributors are now their own pages",
- "Some more images are now high-quality SVGs", "Even more major changes behind the scenes"]
-}, {
+ release: "2024-05-27",
+ notes: [
+ "You can now choose your own colors, intensity, and compression in Color Generator",
+ "Completely reworked the design of the website",
+ "Loading speeds improved tremendously",
+ "You can now zoom out and in to your heart's content",
+ "Buttons for navigating between pages is no longer in the header and instead in a new side bar",
+ "Added better route navigation",
+ "You can now freely select ships in Module Library without scrolling through the list",
+ "Changelog and Contributors are now their own pages",
+ "Some more images are now high-quality SVGs",
+ "Even more major changes behind the scenes"
+ ]
+ },
+ {
type: "minor release",
version: "1.3.0.1",
- release: "June 3, 2024",
+ release: "2024-06-03",
notes: ["Added Eternal Heavens A3"]
-}, {
+ },
+ {
type: "release",
version: "1.3.1",
- release: "June 17, 2024",
- notes: ["Changed the primary font used on mobile devices", "Edited attribute descriptions of recently reworked attributes",
- "Added variant names to ship cards in RA Helper", "Changed the way RA Helper cards are displayed on mobile devices",
- "Fixed a bug where share links would not work in some cases", "Changed the contents of the root page", "Changed the display of the cards on the home page",
- "Selecting a preset gradient in Color Generator will now close the dropdown", "Selecting an already selected equipment will now close the dropdown"]
-}, {
+ release: "2024-06-17",
+ notes: [
+ "Changed the primary font used on mobile devices",
+ "Edited attribute descriptions of recently reworked attributes",
+ "Added variant names to ship cards in RA Helper",
+ "Changed the way RA Helper cards are displayed on mobile devices",
+ "Fixed a bug where share links would not work in some cases",
+ "Changed the contents of the root page",
+ "Changed the display of the cards on the home page",
+ "Selecting a preset gradient in Color Generator will now close the dropdown",
+ "Selecting an already selected equipment will now close the dropdown"
+ ]
+ },
+ {
type: "minor release",
version: "1.3.1.1",
- release: "June 25, 2024",
+ release: "2024-06-25",
notes: ["Added Eternal Heavens B2"]
-}, {
+ },
+ {
type: "bugfix",
version: "1.3.1.2",
- release: "June 29, 2024",
+ release: "2024-06-29",
notes: ["Fixed the latest changes card not showing previous changes"]
-}, {
+ },
+ {
type: "minor release",
version: "1.3.1.3",
- release: "July 1, 2024",
+ release: "2024-07-01",
notes: ["Added preloading for images in Module Library"]
-}, {
+ },
+ {
type: "minor release",
version: "1.3.1.4",
- release: "July 6, 2024",
+ release: "2024-07-06",
notes: ["Fixed Ediacaran C1 showing as B2", "Added Ediacaran B2"]
-}, {
+ },
+ {
type: "release",
version: "1.3.2",
- release: "July 11, 2024",
- notes: ["Added Eternal Heavens M2, M3, and C3", "Added UAV Cooperation attribute to Eternal Heavens M1",
- "Fixed Eternal Heavens A3 displaying as an unknown module", "Clicking on ships in Module Library will now change the path"]
-}, {
+ release: "2024-07-11",
+ notes: [
+ "Added Eternal Heavens M2, M3, and C3",
+ "Added UAV Cooperation attribute to Eternal Heavens M1",
+ "Fixed Eternal Heavens A3 displaying as an unknown module",
+ "Clicking on ships in Module Library will now change the path"
+ ]
+ },
+ {
type: "release",
version: "1.3.3",
- release: "July 19, 2024",
- notes: ["Decreased the default compression value from 3 to 2 in Color Generator",
- "Selecting a color from the preset gradients or previous colors menu will no longer change your advanced settings",
- "Changelog cards in the full changelog now match the changelog card on the home page for parity",
- "Fixed numbers being not visible in Color Generator advanced option inputs"]
-}, {
+ release: "2024-07-19",
+ notes: [
+ "Decreased the default compression value from 3 to 2 in Color Generator",
+ "Selecting a color from the preset gradients or previous colors menu will no longer change your advanced settings",
+ "Changelog cards in the full changelog now match the changelog card on the home page for parity",
+ "Fixed numbers being not visible in Color Generator advanced option inputs"
+ ]
+ },
+ {
type: "release",
version: "1.3.4",
- release: "July 27, 2024",
- notes: ["Made the side menu visible at all times for bigger screens", "Adjusted font size for all devices", "Added Warspite to Module Library",
- "Removed the Contributors and Changelog button from the footer and moved them to the side menu"]
-}, {
+ release: "2024-07-27",
+ notes: [
+ "Made the side menu visible at all times for bigger screens",
+ "Adjusted font size for all devices",
+ "Added Warspite to Module Library",
+ "Removed the Contributors and Changelog button from the footer and moved them to the side menu"
+ ]
+ },
+ {
type: "release",
version: "1.3.5",
- release: "September 22, 2024",
- notes: ["Added Hale-Bopp to RA Helper", "Added most Warspite modules to Module Library", "Added pre-loading for all images",
- "Added an error page when trying to load a page that doesn't exist", "Fixed Module Library links not working", "Fixed share links not working",
- "Fixed invalid url encoding on refresh", "Fixed the navigation menu closing even when not pressing on a button on mobile devices"]
-}];
+ release: "2024-09-22",
+ notes: [
+ "Added Hale-Bopp to RA Helper",
+ "Added most Warspite modules to Module Library",
+ "Added pre-loading for all images",
+ "Added an error page when trying to load a page that doesn't exist",
+ "Fixed Module Library links not working",
+ "Fixed share links not working",
+ "Fixed invalid url encoding on refresh",
+ "Fixed the navigation menu closing even when not pressing on a button on mobile devices"
+ ]
+ },
+ {
+ type: "release",
+ version: "2.0.0",
+ release: "2025-01-29",
+ notes: [
+ "Redesigned entire site",
+ "Heavily optimized site networking",
+ "Added Blueprint Tracker",
+ "Added Mail Editor",
+ "Added Inostrancevia, Tempel I, and Shield of Plutus to RA Helper",
+ "Added Shield of Plutus to Module Library",
+ "Fixed RA Helper search function not properly finding optimal path",
+ "Removed Equipment Encyclopedia and Color Generator",
+ "Improved icons in Module Library",
+ "Added more information to Module Library"
+ ]
+ }
+];
diff --git a/utils/credits.ts b/utils/credits.ts
index 02d01b4..b9bef95 100644
--- a/utils/credits.ts
+++ b/utils/credits.ts
@@ -1,53 +1,104 @@
-
export type Credit = {
- name: string;
- specific: string[];
- dateAdded: string;
-}
+ name: string;
+ /** Notes for the credit */
+ specific: string[];
+ /** YYYY-MM-DD */
+ dateAdded: string;
+};
-export const credits: Credit[] = [{
+export const credits: readonly Credit[] = [
+ {
name: "Windserpent",
- specific: ["All Constantine the Great modules", "All Eternal Storm modules", "All Spear of Uranus modules", "All ST59 modules",
- "All FSV830 modules", "All CV3000 modules", "Most Marshal Crux modules", "All Solar Whale Modules"],
- dateAdded: "November 28, 2023"
-}, {
+ specific: [
+ "All Constantine the Great modules",
+ "All Eternal Storm modules",
+ "All Spear of Uranus modules",
+ "All ST59 modules",
+ "All FSV830 modules",
+ "All CV3000 modules",
+ "Most Marshal Crux modules",
+ "All Solar Whale Modules"
+ ],
+ dateAdded: "2023-11-28"
+ },
+ {
name: "WarpPrime",
- specific: ["Most Warspite modules", "Feature additions", "Bug fixes", "Maintenance"],
- dateAdded: "September 19, 2024"
-}, {
+ specific: ["Warspite M2, A2, B2, C2, D2, E2, F2", "Feature additions", "Bug fixes", "Maintenance"],
+ dateAdded: "2024-09-19"
+ },
+ {
+ name: "Sector",
+ specific: ["Ediacaran B3", "Eternal Storm M2, A2, B2, C1, D1, D2", "Spear of Uranus M2, A3, B1", "Eternal Heavens B2", "Solar Whale A3"],
+ dateAdded: "2025-01-24"
+ },
+ {
name: "Toir",
- specific: ["Ediacaran D2", "Ediacaran C1", "Module Library redesign feedback", "Bug reporting"],
- dateAdded: "April 24, 2024"
-}, {
- name: "Somnambulist",
- specific: ["Eternal Heavens B2", "Ediacaran B2"],
- dateAdded: "June 25, 2024"
-}, {
+ specific: ["Ediacaran D2, C1", "Module Library redesign feedback", "Bug reporting"],
+ dateAdded: "2024-04-24"
+ },
+ {
name: "Bullet",
specific: ["Color Generator feedback", "Color suggestions"],
- dateAdded: "November 17, 2023"
-}, {
+ dateAdded: "2023-11-27"
+ },
+ {
name: "Black Rangers",
specific: ["RA Helper and Module Library feedback", "Bug reports"],
- dateAdded: "February 16, 2024"
-}, {
+ dateAdded: "2024-02-16"
+ },
+ {
+ name: "Somnambulist",
+ specific: ["Eternal Heavens B2", "Ediacaran B2"],
+ dateAdded: "2024-06-25"
+ },
+ {
+ name: "OZY",
+ specific: ["ST59 M3", "Eternal Heavens M3"],
+ dateAdded: "2025-01-24"
+ },
+ {
+ name: "The Enlightened",
+ specific: ["Constantine the Great B3", "Solar Whale C3"],
+ dateAdded: "2025-01-25"
+ },
+ {
+ name: "Thalleous",
+ specific: ["Thunderbolt Star M2, M3, E1, E2"],
+ dateAdded: "2023-11-30"
+ },
+ {
+ name: "Spy Shark",
+ specific: ["Eternal Heavens B1, C1, C2"],
+ dateAdded: "2024-03-13"
+ },
+ {
name: "LunatiCorp",
specific: ["Eternal Heavens A2"],
- dateAdded: "March 1, 2024"
-}, {
- name: "Spy Shark",
- specific: ["Eternal Heavens B1", "Eternal Heavens C1", "Eternal Heavens C2"],
- dateAdded: "March 13, 2024"
-}, {
+ dateAdded: "2024-03-01"
+ },
+ {
name: "kitty7hell",
specific: ["Marshal Crux C3"],
- dateAdded: "April 27, 2024"
-}, {
+ dateAdded: "2024-04-27"
+ },
+ {
name: "Ultix",
specific: ["Eternal Heavens A3"],
- dateAdded: "June 3, 2024"
-}, {
+ dateAdded: "2024-06-03"
+ },
+ {
+ name: "Draconia19",
+ specific: ["Marshal Crux C3"],
+ dateAdded: "2025-01-25"
+ },
+ {
name: "NullPointer",
specific: ["Ship data"],
- dateAdded: "January 14, 2024"
-}];
+ dateAdded: "2024-01-14"
+ },
+ {
+ name: "MeshaLee Adams",
+ specific: ["o7"],
+ dateAdded: "2021-07-05"
+ }
+];
diff --git a/utils/equipmentData.ts b/utils/equipmentData.ts
deleted file mode 100644
index 0c04b96..0000000
--- a/utils/equipmentData.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-
-export type EquipmentClass = "Information" | "Logistics" | "Engineering" | "Engage" | "Efficiency";
-export type TechnicalBlueprintClass = "Strategy" | "Supply" | "Communicate" | "Command";
-
-export type Equipment = {
- displayImg: string;
- type: "Equipment",
- displayName: string;
- effectName: string;
- effectDescription: string[];
- loadWeight: number;
- class: EquipmentClass;
-}
-
-export type TechnicalBlueprint = {
- displayImg: string;
- type: "Technical Blueprint";
- displayName: string;
- effectName: string;
- effectDescription: string[];
- deliveryTarget: "Range" | "Single";
- itemMass: "Light" | "Heavy";
- activeService: number;
- productionInterval: string;
- class: TechnicalBlueprintClass;
-}
diff --git a/utils/facts.ts b/utils/facts.ts
deleted file mode 100644
index 05480c3..0000000
--- a/utils/facts.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-
-export const facts: string[] = [
- "LightSide is very trustworthy!",
- "One Solar Whale is as big as Central Park in NYC.",
- "99% of gamblers quit before winning big. Keep buying boxes!",
- "Base X20 Large Miners are worse than fully upgraded X10 Medium Miners",
- "Servers typically last between 8-9 weeks.",
- "The chat censor is very annoying.",
- "Using multiple X20 Large Miners will not result in faster building.",
- "Trojite cannot be stolen from cities they are deposited to.",
- "The Radiation Zone in Data Recovery servers gradually expands after every cycle.",
- "Pathing is very good and not flawed in any ways.",
- "Reinforce a fleet and retreat those reinforcements before they reach their target to maximize battlepass points from AP spent.",
- "The free side of the battlepass provides 3,000 proxima coins, 431,000 UECoins, and 19 Black Market boxes.",
- "The paid side of the battlepass provides 6,000 proxima coins, 320,000 UECoins, and 20 Black Market boxes.",
- "The paid battlepass gives the best value for your buck in the game.",
- "Cities provide slightly more occupancy percentage than they say they do.",
- "Miners assigned to an Advanced Mining Platform will update their Tech Point allocations after depositing at the AMP.",
- "Fleets will only update their Tech Point allocations when inside the base or outpost/platform if deployed as a subfleet.",
- "Outposts and Basic Mining Platforms take the least amount of time to build.",
- "There is still extra time left in the server after the rating point timer.",
- "Graveyards are square-ish in shape, do not have any level 3 or higher resource nodes, and can be found in any of the starter regions.",
- "If you are a leader, 90% of this game is actually played on Discord.",
- "Trying to sign an agreement in the hub is fun for the whole family!",
- "Fleets can travel through the center of the sun, but cannot land inside the center of the sun.",
- "Ships, including miners, can be permanently killed by using ships or aircraft with the \"Attack Against Systems: Propulsion System\" attribute.",
- "Rallies are a bad idea.",
- "The shop refreshes everyday at 00:00 UTC.",
- "Some liveries are pretty cool.",
- "Some liveries are atrocious, and if you buy them, you are a sociopath. Seek help.",
- "Stop spelling \"Quaoar\" incorrectly. It has feelings too.",
- "Relocating via an outpost will not stop or reset your peace shield timer.",
- "Aircraft in the Aircraft Defense Fleet are invincible and cannot be killed by any means while defending the base.",
- "Tech Point Restoration Items can only be bought twice per server. Use them wisely.",
- "Solar Whales can hold up to 16 aircraft at a time!",
- "In trojite servers, destroying a base will give you half of the base's stored trojite.",
- "In trojite servers, having your base destroyed will reset your base's stored trojite to 0.",
- "You can let your fleets escape a blockade around your base by deploying them as a subfleet to an outpost/platform somewhere else.",
- "If you are located in a Scattered Asteroid Belt, you cannot send super capital ships out, but they will still defend your base.",
- "Docking points inside a city will only give their benefits if the city is owned by your community.",
- "Learn how to convert UTC to your timezone - it'll help with coordinating with others.",
- "You can have multiple player identities linked to the same account!",
- "All module data in Module Library is crowdsourced! If you'd like to contribute, reach out to me. Your help is greatly appreciated!"
-];
diff --git a/utils/functions.ts b/utils/functions.ts
index d4241fd..7206fc5 100644
--- a/utils/functions.ts
+++ b/utils/functions.ts
@@ -1,75 +1,133 @@
+import type { Op } from "quill";
-export function delay (ms: number) {
- return new Promise((executor: any) => setTimeout(executor, ms));
+/**
+ * @warning Be sure to await this function in order to actually use the delay.
+ * @param ms - Number of milliseconds to delay.
+ * @example await delay(1000); // Wait for 1 second
+ */
+export function delay(ms: number): Promise {
+ return new Promise((executor: () => void) => setTimeout(executor, ms));
}
-export function getRandomIntInclusive (min: number, max: number) {
- const minCeiled: number = Math.ceil(min);
- const maxFloored: number = Math.floor(max);
+/** Returns a random integer between `min` and `max`, inclusive. */
+export function getRandomInt(min: number, max: number) {
+ const minCeiled = Math.ceil(min);
+ const maxFloored = Math.floor(max);
return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled);
}
-export function getRandomItemFromArray (arr: T[]) {
- return arr[getRandomIntInclusive(0, arr.length - 1)];
+/** Returns a random item from an array. */
+export function getRandomItem(array: T[] | string) {
+ return array[getRandomInt(0, array.length - 1)];
}
-export function findObjectInArray > (array: T[], target: T) {
- const find = array.find((obj) => Object.keys(obj).every((key) => target.hasOwnProperty(key) && obj[key] === target[key]));
- if (find) return find;
- else return false;
-}
-
-export function compareObjectsSingle > (obj1: T | undefined, obj2: T | undefined) {
- if (!obj1 || !obj2) return;
+const dateOptions: Readonly>> = {
+ full: { dateStyle: "long", timeZone: "UTC" },
+ numeric: { dateStyle: "short", timeZone: "UTC" }
+};
+/** Returns a date string as a localized date string
+ *
+ * If `timeDiff` is true, returns "today," "yesterday," "{n}d ago," or a localized date string
+ * @param date YYYY-MM-DD
+ * @param options "full" | "numeric" = "full"
+ * @param timeDiff boolean = false
+ */
+export function formatDate(dateString: string, options: "full" | "numeric" = "full", timeDiff = false) {
+ const formatter = new Intl.DateTimeFormat(undefined, dateOptions[options]);
+ const date = new Date(dateString);
- if (obj1 === obj2) {
- return true;
- }
+ const formattedDate = formatter.format(date);
+ if (!timeDiff) return formattedDate;
- if (obj1 == null || obj2 == null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {
- return false;
- }
+ const now = new Date();
+ const diff = now.getTime() - date.getTime();
+ const days = Math.floor(diff / (24 * 60 * 60 * 1000));
- let keys1 = Object.keys(obj1);
- let keys2 = Object.keys(obj2);
+ if (days > 7) return formattedDate;
+ if (days > 1) return `${days}d ago`;
+ if (days > 0) return "yesterday";
+ return "today";
+}
- if (keys1.length !== keys2.length) {
- return false;
+const characterSets: Readonly> = {
+ numeric: "0123456789",
+ alphanumeric: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+ alphabetical: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
+};
+/**
+ * Returns a random string of characters from the given set with the given length.
+ * @example getRandomCharacters(10, "numeric"); // Returns a random 10-digit number
+ * @example getRandomCharacters(10, "alphanumeric"); // Returns a random alphanumeric string of length 10
+ * @example getRandomCharacters(10, "alphabetical"); // Returns a random alphabetical string of length 10
+ */
+export function getRandomCharacters(length: number, set: keyof typeof characterSets = "alphanumeric") {
+ let characters = "";
+ for (let i = 0; i < length; i++) {
+ characters += getRandomItem(characterSets[set]);
}
+ return characters;
+}
- for (let key of keys1) {
- if (!keys2.includes(key) || !compareObjectsSingle(obj1[key], obj2[key])) {
- return false;
+/**
+ * Transforms an array of `Op` objects into a minified format.
+ *
+ * Each `Op` object is mapped to a new object containing:
+ * - `a.c`: the `color` attribute if it exists.
+ * - `i`: the `insert` value.
+ */
+export function truncateOps(ops: Op[]) {
+ return ops.map((op) => {
+ const newObj: Record> = {};
+
+ if (op.attributes?.color) {
+ newObj.a = {};
+ newObj.a.c = op.attributes.color as string;
}
- }
- return true;
+ newObj.i = op.insert as string;
+
+ return newObj;
+ });
}
-export function objectToArray > (obj: T) {
- const entries: [keyof T, T[keyof T]][] = [];
+/**
+ * Restores an array of `TruncatedOp` objects to their original `Op` format.
+ *
+ * Each `TruncatedOp` object is mapped to a new `Op` object containing:
+ * - `attributes.color`: the `a.c` value if it exists.
+ * - `insert`: the `i` value.
+ */
+export function untruncateOps(ops: TruncatedOp[]) {
+ return ops.map((op) => {
+ const newObj: Op = {};
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- entries.push([key, obj[key]]);
+ if (op.a?.c) {
+ newObj.attributes = {};
+ newObj.attributes.color = op.a.c;
}
- }
- return entries;
+ newObj.insert = op.i;
+
+ return newObj;
+ });
}
-export async function loopUntil (stopCondition: boolean, returnValue: T) {
- let done = false;
- let failsafe = 0;
- while (!done || failsafe < 20) {
- if (stopCondition) {
- done = true;
- console.log(returnValue)
- return returnValue;
- } else {
- await delay(5);
- failsafe++;
- }
- }
- return returnValue;
+/**
+ * Returns the key of the first entry in the given object.
+ *
+ * @param object the object to get the key from
+ * @param index the index of the key to return, defaults to 0
+ */
+export function getObjectKey(object: T, index = 0) {
+ return Object.keys(object)[index];
+}
+
+/**
+ * Returns the value of the first entry in the given object.
+ *
+ * @param object the object to get the value from
+ * @param index the index of the value to return, defaults to 0
+ */
+export function getObjectValue(object: T, index = 0) {
+ return Object.values(object)[index];
}
diff --git a/utils/general.ts b/utils/general.ts
new file mode 100644
index 0000000..8b5faa2
--- /dev/null
+++ b/utils/general.ts
@@ -0,0 +1,12 @@
+export const origins: Readonly> = {
+ "http://localhost:3000": "L",
+ "https://beta.gravityassist.xyz": "B",
+ "https://gravityassist.xyz": "P"
+};
+
+export function italicize(text: string): [string, boolean][] {
+ return text.split(/("[^"]*")/g).map((part) => {
+ if (part.startsWith('"') && part.endsWith('"')) return [part, true];
+ return [part, false];
+ });
+}
diff --git a/utils/mailTemplates.ts b/utils/mailTemplates.ts
new file mode 100644
index 0000000..d9c8f38
--- /dev/null
+++ b/utils/mailTemplates.ts
@@ -0,0 +1,87 @@
+import { Op } from "quill";
+
+export const formattingColors = {
+ R: "#ff0000",
+ O: "#ffa500",
+ D: "#ffd700",
+ Y: "#ffff00",
+ G: "#00ff00",
+ B: "#0000ff",
+ U: "#ff00ff",
+ P: "#ffc0cb",
+ W: "#ffffff",
+ K: "#000000"
+};
+
+export const mailTemplates: Readonly> = {
+ "City Siege": [
+ { attributes: { color: "#ffffff" }, insert: "Target: " },
+ { attributes: { color: "#ffe1ad" }, insert: "Ligma " },
+ { attributes: { color: "#278451", underline: true }, insert: "(6969,6969)" },
+ { insert: "\n" },
+ { attributes: { color: "#ffffff" }, insert: "Time: " },
+ { attributes: { color: "#b3e5ff" }, insert: "12:08 " },
+ { attributes: { color: "#ffffff" }, insert: "UTC" },
+ { insert: "\n" },
+ { attributes: { color: "#c7ffd2" }, insert: "Gathering location: " },
+ { attributes: { color: "#278451", underline: true }, insert: "(6969,6969)" },
+ { insert: "\n" },
+ { attributes: { color: "#f8c7ff" }, insert: "Delegates: " },
+ { attributes: { color: "#278451", underline: true }, insert: "(6969,6969)" },
+ { insert: "\n\n" },
+ { attributes: { color: "#ffffff" }, insert: "Send your fleets to the " },
+ { attributes: { color: "#c7ffd2" }, insert: "gathering location " },
+ { attributes: { color: "#278451", underline: true }, insert: "(6969,6969)" },
+ { attributes: { color: "#c7ffd2" }, insert: " " },
+ { attributes: { color: "#ffffff" }, insert: "by " },
+ { attributes: { color: "#b3e5ff" }, insert: "12:08 " },
+ { attributes: { color: "#ffffff" }, insert: "UTC." },
+ { insert: "\n" },
+ { attributes: { color: "#ffffff" }, insert: "We will do a ready check in chat at " },
+ { attributes: { color: "#b3e5ff" }, insert: "12:09 " },
+ { attributes: { color: "#ffffff" }, insert: "UTC, and move up to the " },
+ { attributes: { color: "#ffff00" }, insert: "yellow markers " },
+ { attributes: { color: "#ffffff" }, insert: "at " },
+ { attributes: { color: "#b3e5ff" }, insert: "12:10 " },
+ { attributes: { color: "#ffffff" }, insert: "UTC." },
+ { insert: "\n\n" },
+ { attributes: { color: "#ffffff" }, insert: "If you cannot manual, " },
+ { attributes: { color: "#f8c7ff" }, insert: "delegate your fleets" },
+ { attributes: { color: "#ffffff" }, insert: " to the org op at " },
+ { attributes: { color: "#278451", underline: true }, insert: "(6969,6969)" },
+ { attributes: { color: "#ffffff" }, insert: "." },
+ { insert: "\n" }
+ ],
+ '"Visit Begging"': [
+ { attributes: { color: "#ffffff" }, insert: "Hey everyone! Great job so far, it looks like we have " },
+ { attributes: { color: "#fef162" }, insert: "very few " },
+ { attributes: { color: "#ffffff" }, insert: "who have not logged into the server yet." },
+ { insert: "\n" },
+ { attributes: { color: "#ffffff" }, insert: "Now, " },
+ { attributes: { color: "#66e0ff" }, insert: "it's time for visiting!" },
+ { insert: "\n\n" },
+ { attributes: { color: "#ff6666" }, insert: "Don't" },
+ { attributes: { color: "#ffffff" }, insert: " spend your AP on destroying NPCs right now;" },
+ { insert: "\n" },
+ { attributes: { color: "#ffffff" }, insert: "Spend it " },
+ { attributes: { color: "#84fe62" }, insert: "visiting everyone in the community." },
+ { insert: "\n\n" },
+ { attributes: { color: "#ffffff" }, insert: "You can easily visit using the " },
+ { attributes: { color: "#fef162" }, insert: "quick visit" },
+ { attributes: { color: "#ffffff" }, insert: " feature:" },
+ { insert: "\n" },
+ { attributes: { color: "#ffffff" }, insert: "Tap on " },
+ { attributes: { color: "#fed7f9" }, insert: "squad" },
+ { attributes: { color: "#ffffff" }, insert: " -> " },
+ { attributes: { color: "#ff99f1" }, insert: "community" },
+ { attributes: { color: "#ffffff" }, insert: " -> " },
+ { attributes: { color: "#ff5ce9" }, insert: "view members" },
+ { attributes: { color: "#ffffff" }, insert: " -> " },
+ { attributes: { color: "#ff00dd" }, insert: "quick visit" },
+ { insert: "\n" },
+ { attributes: { color: "#ffffff" }, insert: "It'll take the hassle of searching for people off your back." },
+ { insert: "\n\n\n" },
+ { attributes: { color: "#ffd700" }, insert: "Please do your best to visit so we can unlock vision and warp ASAP!" },
+ { insert: "\n" }
+ ]
+};
diff --git a/utils/presetColors.ts b/utils/presetColors.ts
deleted file mode 100644
index 3d03039..0000000
--- a/utils/presetColors.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-
-export type Color = {
- color1: string;
- color2: string;
- intensity: number;
- compression: number;
-}
-
-export const presetColors: Color[] = [{
- color1: "#e32b2b",
- color2: "#ff9b3c",
- intensity: 15,
- compression: 2
-}, {
- color1: "#ff0f00",
- color2: "#fff000",
- intensity: 15,
- compression: 2
-}, {
- color1: "#3dcfff",
- color2: "#ffbd2c",
- intensity: 15,
- compression: 2
-}, {
- color1: "#85abff",
- color2: "#fff47a",
- intensity: 15,
- compression: 2
-}, {
- color1: "#00a1ff",
- color2: "#00fe90",
- intensity: 15,
- compression: 2
-}, {
- color1: "#8e2ff7",
- color2: "#62debd",
- intensity: 15,
- compression: 2
-}, {
- color1: "#d029fa",
- color2: "#23c8f6",
- intensity: 15,
- compression: 2
-}, {
- color1: "#fd81ff",
- color2: "#00e092",
- intensity: 15,
- compression: 2
-}, {
- color1: "#f957ff",
- color2: "#ffc94d",
- intensity: 15,
- compression: 2
-}, {
- color1: "#ff5b0f",
- color2: "#fea881",
- intensity: 15,
- compression: 2
-}, {
- color1: "#ffff00",
- color2: "#ffc400",
- intensity: 15,
- compression: 2
-}, {
- color1: "#a9ff38",
- color2: "#29ffbf",
- intensity: 15,
- compression: 2
-}, {
- color1: "#6bffff",
- color2: "#6babff",
- intensity: 15,
- compression: 2
-}, {
- color1: "#6ea3ff",
- color2: "#d15eff",
- intensity: 15,
- compression: 2
-}, {
- color1: "#dc6bff",
- color2: "#ff6bd3",
- intensity: 15,
- compression: 2
-}, {
- color1: "#ff0000",
- color2: "#ffd1d1",
- intensity: 15,
- compression: 2
-}, {
- color1: "#ffe600",
- color2: "#fffad1",
- intensity: 15,
- compression: 2
-}, {
- color1: "#05ff00",
- color2: "#d2ffd1",
- intensity: 15,
- compression: 2
-}, {
- color1: "#00b3ff",
- color2: "#d1fffc",
- intensity: 15,
- compression: 2
-}, {
- color1: "#eb00ff",
- color2: "#fbd1ff",
- intensity: 15,
- compression: 2
-}, {
- color1: "#dc0101",
- color2: "#4c1010",
- intensity: 15,
- compression: 2
-}, {
- color1: "#11dee5",
- color2: "#ec67cf",
- intensity: 15,
- compression: 2
-}, {
- color1: "#ffcf24",
- color2: "#7f243f",
- intensity: 15,
- compression: 2
-}];
-
diff --git a/utils/shipData.ts b/utils/shipData.ts
deleted file mode 100644
index 0b76e3c..0000000
--- a/utils/shipData.ts
+++ /dev/null
@@ -1,500 +0,0 @@
-
-export type ShipManufacturer = "Jupiter Industry" | "NOMA Shipping" | "Antonios" | "Dawn Accord" | "Empty";
-
-export type ShipDirection = "Outstanding Firepower" | "Sustained Combat" | "Strategy & Support" | "Fighter & Corvette" | "Empty";
-
-export type ShipScope = "Direct-Fire Weapon" | "Projectile Weapon" | "Empty";
-
-export type Attribute = "Interception Capability" | "Interception Capability (Fleet)" | "Crit" | "Anti-Aircraft Counterattack" |
-"Anti-Aircraft Support" | "Anti-Aircraft Special Ammo" | "Anti-Aircraft Lightweight Ammo" | "Anti-Aircraft Cycle" |
-"Anti-Aircraft High-Speed Strike" | "Anti-Aircraft Critical Strike" | "Increase Energy Weapon Damage" | "Ship Calibration Support" |
-"Reduce System Crit Damage Taken" | "Ship Shielding Support" | "Energy Damage Reduction" | "Physical Damage Reduction" |
-"Crit Damage Reduction" | "Increase Hit Rate" | "Additional HP Auto-Repair" | "Reduce Evasion" | "Reduce Hit Rate" |
-"Oscillatory Excitation" | "Collaborative Calibration" | "Self-holding Capability" | "Increase Production Speed" |
-"Back-Row Torpedo Hit Evasion" | "Back-Row Missile Hit Evasion" | "Increase Back-Row Missile Hit Rate" |
-"Increase Back-Row Torpedo Hit Rate" | "Ship Disguise" | "Increase Repair Speed" | "Increase Aircraft Damage" |
-"Increase Aircraft Hit Rate" | "Aircraft Recovery" | "Attack Against Systems" | "Firepower Recon Support" |
-"UAV Cooperation" | "UAV Aerial Cover Support";
-
-export type Aircraft = "Small Fighter" | "Medium Fighter" | "Large Fighter" | "Corvette";
-
-export type UAV = "Spotter UAV" | "Area-Denial Anti-Aircraft UAV" | "Shield UAV" | "Repair UAV" | "Tactical UAV" | "Info UAV" |
-"Cooperative Offensive UAV" | "Siege UAV" | "Recon UAV";
-
-export type Ship = {
- /** Name of the ship, as shown ingame.
- * @example "Conamara Chaos"
- */
- name: string;
-
- /** Title of the ship, shown next to the name.
- * @example "High-Speed Plasma Cruiser"
- */
- title: string;
-
- /** Image of the ship, found in `/public/ships`.
- *
- * Format: `shipName_variant.png`
- * @example "/ships/conamaraChaos_b.png"
- */
- img: string;
-
- /** Class of the ship. */
- type: "Fighter" | "Corvette" | "Frigate" | "Destroyer" | "Cruiser" | "Battlecruiser" | "Auxiliary Ship" | "Carrier" | "Battleship";
-
- /** If this ship is a fighter, the type of fighter. */
- fighter_type?: "Small" | "Medium" | "Large";
-
- /** Variant of the ship. */
- variant: "A" | "B" | "C" | "D";
-
- /** Name of the variant, shown next to the variant letter.
- * @example "Plasma Type"
- */
- variant_name: string;
-
- manufacturer: ShipManufacturer;
- direction: ShipDirection[];
- scope: ShipScope;
- weight: number;
- row: "Front" | "Middle" | "Back";
-
- /** Command Points. */
- cp: number;
-
- /** Active Service limit. */
- maxInFleet: number;
-
- /** If this ship is a fighter, the number of fighters per unit. */
- aircraftPerSquadron?: number;
-
- /** If this ship is a medium fighter carrier, the number of medium fighters held. */
- medium_fighters_held?: number;
-
- /** If this ship is a large fighter carrier, the number of large fighters held. */
- large_fighters_held?: number;
-
- /** If this ship is a corvette carrier, the number of corvettes held. */
- corvettes_held?: number;
-
- /** Production Info, shown after clicking the button at the top right of the Basic Stats box. */
- production: {
- metal: number;
- crystal: number;
- deuterium: number;
- /** Time to produce this ship, in seconds. */
- timeSeconds: number;
- storage: number;
- }
-
- /** Only found if this ship is a capital ship or aircraft. */
- systems?: ShipSystemAll[];
-
- /** Only found if this ship is a super capital ship. */
- modules?: (Module | UnknownModule)[];
-}
-
-export type AffectedStats = "damage" | "hp" | "armor" | "energyShield" | "cruise" | "warp" | "aircraftHitrate" | "smallHitrate" | "bigHitrate" | "generalHitrate" | "missileEvasion" | "torpedoEvasion" | "directEvasion" | "generalEvasion" | "siegeDamage";
-
-export type SystemUpgrade = {
- /** Name of the upgrade.
- * @example "Overdrive"
- */
- name: string;
-
- /** Image of the upgrade's icon, found in `/public/weapons/upgrades`.
- *
- * If upgrade is a strategy, the image is found in `/public/weapons/upgrades/strategies`.
- * @example "/weapons/upgrades/genericCooldown.png"
- */
- img: string;
-
- /** Only found if this upgrade is a strategy. */
- strategy?: true;
-
- /** Description of the upgrade, separated into strings.
- *
- * - The first string of the array is the first section of the description, up until the first instance of a yellow character. This includes the space before the yellow character.
- * - The second string of the array is/are the first yellow character(s). It should not contain any spaces and should only contain the yellow character(s).
- * - The third string is the next section of the description, including the space after the previous yellow character(s).
- * - And so on.
- *
- * @example ["Increases damage by ", "40%", " and Hit Rate by ", "25%", "."]
- */
- description: string[];
-
- /** The maximum number of tiers this upgrade has. */
- maxTiers: number;
-
- /** - If only one stat is affected by this upgrade, this property should be a string of the stat affected.
- * - If more than one stat is affected by this upgrade, this property should be an array of strings of the stats affected.
- * @example affectedStat: "damage"
- * @example affectedStat: ["damage", "generalHitrate"]
- */
- affectedStat: AffectedStats | AffectedStats[] | null;
-
- /** - If only one stat is affected by this upgrade. this property should be a number of the stat affected.
- * - If more than one stat is affected by this upgrade, this property should be an array of numbers of the stats affected.
- *
- * If `affectedStat === "armor"`, this property should be a flat value.
- * @example percentBuffPerTier: 1.02
- * @example percentBuffPerTier: [1.02, 1.15]
- * @example affectedStat: "armor"; percentBuffPerTier: 6
- */
- percentBuffPerTier: number | number[] | null;
-
- /** - If the required number of tech points stays the same throughout all tiers of the upgrade, this property should be that number.
- * - If the required number of tech points increases throughout the tiers of the upgrade, this property should be an array of numbers representing the number of tech points for each tier.
- *
- * The number of tech points for each tier can be inferred; if `maxTiers === 3` and the number of tech points to upgrade all tiers is `5`, the only possible arrangement of tech points is `[1, 2, 2]`.
- * @example tpPerTier: 2
- * @example tpPerTier: [1, 1, 1, 1, 2]
- */
- tpPerTier: number | number[];
-
- /** This property should not be present in the default ship data.
- *
- * Represents the number of tiers upgraded by the user.
- */
- tiersUpgraded?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the total number of tech points allocated to this upgrade by the user.
- */
- tpAllocated?: number;
-}
-
-export type ShipSystemAll = WeaponSystem | AircraftSystem | ArmorSystem | PropulsionSystem | EnergySystem | CommandSystem | JammingSystem | MiscSystem;
-
-interface ShipSystem {
- /** Name of the system.
- * @example "Bow-Mounted Plasma Caster"
- */
- name: string;
-
- /** Only found if this system is the main system. */
- main?: true;
-
- /** The maximum number of upgrades this system has. */
- maxUpgradeSlots: number;
-
- /** The type of system adjustment available for this system. */
- systemAdjustment: "weaponDamage" | "hp" | "aircraftDamage" | "uavEffectiveness" | "jamming" | null;
-
- /** Array of all upgrades located in this system. */
- upgrades: SystemUpgrade[];
-
- /** This property should not be present in the default ship data.
- *
- * Represents the total number of tech points allocated to this system by the user.
- */
- tpAllocated?: number;
-}
-
-export interface WeaponSystem extends ShipSystem {
- type: "weapon";
-
- /** Image of the system's icon, found in `/public/weapons/icons`.
- * @example "/weapons/icons/cannon.png"
- */
- img: "/weapons/icons/cannon.png";
-
- /** Default Anti-Ship Fire value, found after clicking the system.
- *
- * - If the ship is a figher or corvette, the Anti-Ship Fire value is different if you click the system and if you don't click the system.
- * - Use the value found after clicking the system.
- * @readonly This property should not be modified.
- */
- readonly baseAntiship: number;
-
- /** Default Air Defense value, found after clicking the system.
- *
- * - If the ship is a figher or corvette, the Air Defense value is different if you click the system and if you don't click the system.
- * - Use the value found after clicking the system.
- * @readonly This property should not be modified.
- */
- readonly baseAntiair: number;
-
- /** Default Siege Fire value, found after clicking the system.
- *
- * - If the ship is a figher or corvette, the Siege Fire value is different if you click the system and if you don't click the system.
- * - Use the value found after clicking the system.
- * @readonly This property should not be modified.
- */
- readonly baseSiege: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Anti-Ship Fire value, after system upgrades.
- */
- modifiedAntiship?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Air Defense value, after system upgrades.
- */
- modifiedAntiair?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Siege Fire value, after system upgrades.
- */
- modifiedSiege?: number;
-}
-
-export interface AircraftSystem extends ShipSystem {
- type: "aircraft";
- img: "/weapons/icons/aircraft.png";
-}
-
-export interface ArmorSystem extends ShipSystem {
- type: "armor";
- img: "/weapons/icons/armor.png";
-
- /** Default HP value.
- * @readonly This property should not be modified.
- */
- readonly baseHp: number;
-
- /** Default Armor value.
- * @readonly This property should not be modified.
- */
- readonly baseArmor: number;
-
- /** Default Energy Shield value.
- * @readonly This property should not be modified.
- */
- readonly baseEnergyShield: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified HP value, after system upgrades.
- */
- modifiedHp?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Armor value, after system upgrades.
- */
- modifiedArmor?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Energy Shield value, after system upgrades.
- */
- modifiedEnergyShield?: number;
-}
-
-export interface PropulsionSystem extends ShipSystem {
- type: "propulsion";
- img: "/weapons/icons/speed.png";
-
- /** Default Cruise Speed value.
- * @readonly This property should not be modified.
- */
- readonly baseCruise: number;
-
- /** Default Warp Speed value.
- * @readonly This property should not be modified.
- */
- readonly baseWarp: number;
-
- /** Only found if this system provides an evasion bonus.
- *
- * Represents the default Evasion value.
- * @readonly This property should not be modified. */
- readonly baseEvasion?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Crise Speed value, after system upgrades.
- */
- modifiedCruise?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Warp Speed value, after system upgrades.
- */
- modifiedWarp?: number;
-
- /** This property should not be present in the default ship data.
- *
- * Represents the modified Evasion value, after system upgrades.
- */
- modifiedEvasion?: number;
-}
-
-export interface EnergySystem extends ShipSystem {
- type: "energy";
- img: "/weapons/icons/jamming.png";
-
- /** Only found if this system provides a damage bonus.
- *
- * Represents the default damage bonus.
- * @example 1.15
- */
- baseDmgBuff?: number;
-}
-
-export interface CommandSystem extends ShipSystem {
- type: "command";
- img: "/weapons/icons/command.png";
-}
-
-export interface JammingSystem extends ShipSystem {
- type: "jamming";
- img: "/weapons/icons/jamming.png";
-}
-
-export interface MiscSystem extends ShipSystem {
- type: "misc";
- img: string;
- readonly baseEvasion?: number;
- modifiedEvasion?: number;
-}
-
-export type Module = {
- type: "known";
- img: string;
- system: "M1" | "M2" | "M3" | "A1" | "A2" | "A3" | "B1" | "B2" | "B3" | "C1" | "C2" | "C3" | "D1" | "D2" | "D3" | "E1" | "E2" | "F1" | "F2" | "G1" | "G2" | "H1" | "H2";
- name: string;
- stats: WeaponStats | ArmorStats | PropulsionStats;
- subsystems: (WeaponSubsystem | AircraftHangerSubsystem | UavHangerSubsystem | MiscSubsystem)[];
-}
-
-export type UnknownModule = {
- type: "unknown";
- img: string;
- system: "M1" | "M2" | "M3" | "A1" | "A2" | "A3" | "B1" | "B2" | "B3" | "C1" | "C2" | "C3" | "D1" | "D2" | "D3" | "E1" | "E2" | "F1" | "F2" | "G1" | "G2" | "H1" | "H2";
- unknown: true;
-}
-
-export type WeaponStats = {
- type: "weapon";
- antiship: null | number;
- antiair: null | number;
- siege: null | number;
- hp: number;
-}
-
-export type ArmorStats = {
- type: "armor";
- armor: null | number;
- extraHP: null | number;
- energyShield: null | number;
- hpRecovery?: number;
- storage?: number;
- hp: number;
-}
-
-export type PropulsionStats = {
- type: "propulsion",
- cruise: number;
- warp: number;
- hp: number;
-}
-
-export type WeaponSubsystem = {
- type: "weapon";
- count: number;
- title: string;
- name: string;
- damageType: "Projectile" | "Energy";
- target: "Building" | "Aircraft" | "Small Ship" | "Large Ship";
- lockonEfficiency: null | number;
- alpha: number;
- attributes: null | Attribute[];
-}
-
-export type AircraftHangerSubsystem = {
- type: "hanger";
- count: number;
- title: string;
- name: string;
- hanger: Aircraft;
- capacity: number;
- attributes: null | Attribute[];
-}
-
-export type UavHangerSubsystem = {
- type: "hanger";
- count: number;
- title: string;
- name: string;
- hanger: UAV;
- capacity: number;
- attributes: null | Attribute[];
- damageType?: "Projectile" | "Energy";
- target?: "Building" | "Aircraft" | "Small Ship" | "Large Ship";
- lockonEfficiency?: null | number;
- alpha?: number;
- repair?: number;
-}
-
-export type MiscSubsystem = {
- type: "misc";
- count: number;
- title: string;
- name: string;
- attributes: null | Attribute[];
-}
-
-export const attributes: Record = {
- "Interception Capability": "Has a chance to intercept missiles or torpedoes that target friendly ship in the same row",
- "Interception Capability (Fleet)": "Has a chance to intercept missiles or torpedoes that target any friendly ships in the fleet",
- "Crit": "Has a chance to deal additional Crit damage to the target",
- "Anti-Aircraft Counterattack": "When not under attack by aerial targets, it can strike at opposing air targets targetting same-row friendly ships. Can quickly counterattack aerial targets that strike this ship. During the counterattack, increases Hit Rate by an additional amount",
- "Anti-Aircraft Support": "Can provide anti-aircraft support to all friendly ships",
- "Anti-Aircraft Special Ammo": "Switches to Special Ammo when striking an aircraft target, increasing the Damage Per Hit by an additional amount",
- "Anti-Aircraft Lightweight Ammo": "Switches to Lightweight Ammo to trade for mobility when striking an aircraft, reducing the Damage Per hit by an additional amount",
- "Anti-Aircraft Cycle": "The weapon's operating efficiency is increased when striking an aircraft target, reducing the CD by an additional amount",
- "Anti-Aircraft High-Speed Strike": "Utilizes the High-Speed Strike mode when striking an aircraft target, reducing the duration of the strikes by an additional amount",
- "Ship Calibration Support": "Increase the Hit Rate of the target ship by 20%",
-
- "Anti-Aircraft Critical Strike": "Has a 25% chance to deal an additional 100% Crit Damage to aircraft",
- "Increase Energy Weapon Damage": "Increases the damage of the ship's energy weapon by 10%",
- "Reduce System Crit Damage Taken": "Reduces Crit Damage taken by all systems by 15%",
- "Ship Shielding Support": "Initiate Shielding Support to the target and increase the Evasion of the target ship to energy weapons by 15%",
- "Energy Damage Reduction": "Reduces the Damage taken from energy weapon attacks by 15%",
- "Physical Damage Reduction": "Reduces the Damage taken from projectile weapon attacks by 15%",
- "Crit Damage Reduction": "Reduces Crit Damage received by 30%",
- "Increase Hit Rate": "Increases the Hit Rate of all weapons on the ship by 5%",
- "Additional HP Auto-Repair": "Automatically repairs the damaged portion of additional HP after each battle",
- "Reduce Evasion": "Reduce ship evasion by 10%",
- "Reduce Hit Rate": "Reduces the Hit Rate of the primary weapon by 5%",
- "Oscillatory Excitation": "Triggers one of the onboard weapons to initiate an extra shot every 6 seconds",
- "Collaborative Calibration": "Calibrates the fire control of an onboard weapon once every 15s, increasing the Hit Rate by 30% for 15s",
- "Self-holding Capability": "Provides self-held command points for the auxiliary ship",
- "Increase Production Speed": "Increases Shipbuilding speed of the auxiliary ship",
- "Back-Row Torpedo Hit Evasion": "+8% torpedo evasion to back-row ships in the fleet",
- "Back-Row Missile Hit Evasion": "+8% missile evasion to back-row ships in the fleet",
- "Increase Back-Row Torpedo Hit Rate": "Raise torpedo weapon Hit Rate of back-row ships in the fleet by 12%",
- "Increase Back-Row Missile Hit Rate": "Raise missile weapon Hit Rate of back-row ships in the fleet by 12%",
- "Ship Disguise": "When itself is selected as an attack target, it will be mislabeled as a carrier by the enemy",
- "Increase Repair Speed": "When using the auxiliary ship to conduct repairs, increases the repair speed by 20%",
- "Increase Aircraft Damage": "Increases primary weapon Damage of carried Antonios aircraft by 15%",
- "Increase Aircraft Hit Rate": "Increases primary weapon Hit Rate of carried Antonios aircraft by 15%",
- "Aircraft Recovery": "Aircraft returning to all hangers recover 10% HP",
- "Attack Against Systems": "Has a chance to deal damage to the target's systems (Primary Weapon System: Low efficiency)",
- "Firepower Recon Support": "Increases allies' primary weapon's Crit Chance by 30% and Crit Damage by 40%",
- "UAV Cooperation": "Each aircraft in the same hanger comes with a UAV. Tthe UAV and the aircraft will attack the same target together.",
- "UAV Aerial Cover Support": "Each aircraft in the same hanger comes with a UAV. The UAV provides anti-aircraft support and strikes back at enemy aircraft that attack the supporting aircraft."
-}
-
-export const manufacturers: ShipManufacturer[] = ["Jupiter Industry", "NOMA Shipping", "Antonios", "Dawn Accord", "Empty"];
-export const directions: ShipDirection[] = ["Outstanding Firepower", "Sustained Combat", "Strategy & Support", "Fighter & Corvette", "Empty"];
-export const scopes: ShipScope[] = ["Projectile Weapon", "Direct-Fire Weapon", "Empty"];
-
-export const difficulty = {
- "Jupiter Industry": 3.5,
- "NOMA Shipping": 3.5,
- "Antonios": 4,
- "Dawn Accord": 2.5,
- "Outstanding Firepower": 5.5,
- "Sustained Combat": 5,
- "Strategy & Support": 5.5,
- "Fighter & Corvette": 6,
- "Projectile Weapon": 4.5,
- "Direct-Fire Weapon": 4
-};
diff --git a/utils/ships.ts b/utils/ships.ts
new file mode 100644
index 0000000..7024eef
--- /dev/null
+++ b/utils/ships.ts
@@ -0,0 +1,350 @@
+export type ManufacturerOption = "Jupiter Industry" | "NOMA Shipping" | "Antonios" | "Dawn Accord" | "Empty";
+export type DirectionOption = "Outstanding Firepower" | "Sustained Combat" | "Strategy & Support" | "Fighter & Corvette" | "Empty";
+export type ScopeOption = "Direct-Fire Weapon" | "Projectile Weapon" | "Empty";
+
+export const manufacturers: ManufacturerOption[] = ["Jupiter Industry", "Dawn Accord", "Antonios", "NOMA Shipping", "Empty"];
+export const directions: DirectionOption[] = ["Outstanding Firepower", "Sustained Combat", "Strategy & Support", "Fighter & Corvette", "Empty"];
+export const scopes: ScopeOption[] = ["Projectile Weapon", "Direct-Fire Weapon", "Empty"];
+
+export interface Ship {
+ id: number;
+ /** Name of the ship, as shown ingame.
+ * @example "Conamara Chaos"
+ */
+ name: string;
+ /** Title of the ship, shown next to the name.
+ * @example "High-Speed Plasma Cruiser"
+ */
+ title: string;
+ /** Image of the ship, found in `/public/ships`.
+ *
+ * Format: `shipName_variant.png`
+ * @example "/ships/conamaraChaos_b.png"
+ */
+ img: string;
+ variant: "A" | "B" | "C" | "D";
+ /** Name of the variant, shown next to the variant letter.
+ * @example "Plasma Type"
+ */
+ variantName: string;
+ /** Whether or not the ship has other variants. */
+ hasVariants: boolean;
+ manufacturer: ManufacturerOption;
+ direction: DirectionOption[];
+ scope: ScopeOption;
+ /** Weight of the ship's draw probability */
+ weight: number;
+ row: "Front" | "Middle" | "Back";
+ commandPoints: number;
+ serviceLimit: number;
+}
+
+export interface Fighter extends Ship {
+ type: "Fighter";
+ fighterType: "Small" | "Medium" | "Large";
+ /** Number of fighters per unit. */
+ fightersPerSquadron: number;
+}
+
+export interface Corvette extends Ship {
+ type: "Corvette";
+}
+
+export interface CapitalShip extends Ship {
+ type: "Frigate" | "Destroyer" | "Cruiser";
+}
+
+export interface MediumFighterCapitalShip extends CapitalShip {
+ /** Number of medium fighters held. */
+ mediumFighterCapacity: number;
+}
+
+export interface LargeFighterCapitalShip extends CapitalShip {
+ /** Number of large fighters held. */
+ largeFighterCapacity: number;
+}
+
+export interface CorvetteCapitalShip extends CapitalShip {
+ /** Number of corvettes held. */
+ corvetteCapacity: number;
+}
+
+export const attributes = {
+ "Interception Capability": "Has a chance to intercept missiles or torpedoes that target friendly ship in the same row",
+ "Interception Capability (Fleet)": "Has a chance to intercept missiles or torpedoes that target any friendly ships in the fleet",
+ Crit: "Has a chance to deal additional Crit damage to the target",
+ "Anti-Aircraft Counterattack":
+ "When not under attack by aerial targets, it can strike at opposing air targets targetting same-row friendly ships. Can quickly counterattack aerial targets that strike this ship. During the counterattack, increases Hit Rate by an additional amount",
+ "Anti-Aircraft Support": "Can provide anti-aircraft support to all friendly ships",
+ "Anti-Aircraft Special Ammo": "Switches to Special Ammo when striking an aircraft target, increasing the Damage Per Hit by an additional amount",
+ "Anti-Aircraft Lightweight Ammo": "Switches to Lightweight Ammo to trade for mobility when striking an aircraft, reducing the Damage Per hit by an additional amount",
+ "Anti-Aircraft Cycle": "The weapon's operating efficiency is increased when striking an aircraft target, reducing the CD by an additional amount",
+ "Anti-Aircraft High-Speed Strike": "Utilizes the High-Speed Strike mode when striking an aircraft target, reducing the duration of the strikes by an additional amount",
+ "Ship Calibration Support": "Increase the Hit Rate of the target ship by 20%",
+
+ "Anti-Aircraft Critical Strike": "Has a 25% chance to deal an additional 100% Crit Damage to aircraft",
+ "Increase Energy Weapon Damage": "Increases the damage of the ship's energy weapon by 10%",
+ "Reduce System Crit Damage Taken": "Reduces Crit Damage taken by all systems by 15%",
+ "Ship Shielding Support": "Initiate Shielding Support to the target and increase the Evasion of the target ship to energy weapons by 15%",
+ "Energy Damage Reduction": "Reduces the Damage taken from energy weapon attacks by 15%",
+ "Damage Resistance": "During the duration of the module operation, initiate Calibration Support to the target, redirecting some aircraft firepower from the locked target ship toward itself",
+ "Damage Resistance II":
+ "During the duration of the module operation, initiate Calibration Support to the target, redirecting some missile/torpedo firepower from the locked target ship toward itself",
+ "Evasive Counterattack": "When attacked, there is a chance to deal an additional counterattack on the target",
+ "Physical Damage Reduction": "Reduces the Damage taken from projectile weapon attacks by 15%",
+ "Crit Damage Reduction": "Reduces Crit Damage received by 30%",
+ "Increase Hit Rate": "Increases the Hit Rate of all weapons on the ship by 5%",
+ "Increase Ion Damage": "Increases the damage of the ship's ion weapon by 25%",
+ "Additional HP Auto-Repair": "Automatically repairs the damaged portion of additional HP after each battle",
+ "Reduce Evasion": "Reduce ship evasion by 10%",
+ "Reduce Hit Rate": "Reduces the Hit Rate of the primary weapon by 5%",
+ "Oscillatory Excitation": "Triggers one of the onboard weapons to initiate an extra shot every 6 seconds",
+ "Collaborative Calibration": "Calibrates the fire control of an onboard weapon once every 15s, increasing the Hit Rate by 30% for 15s",
+ "Self-holding Capability": "Provides self-held command points for the auxiliary ship",
+ "Increase Production Speed": "Increases Shipbuilding speed of the auxiliary ship",
+ "Back-Row Torpedo Hit Evasion": "+8% torpedo evasion to back-row ships in the fleet",
+ "Back-Row Missile Hit Evasion": "+8% missile evasion to back-row ships in the fleet",
+ "Increase Back-Row Torpedo Hit Rate": "Raise torpedo weapon Hit Rate of back-row ships in the fleet by 12%",
+ "Increase Back-Row Missile Hit Rate": "Raise missile weapon Hit Rate of back-row ships in the fleet by 12%",
+ "Ship Disguise": "When itself is selected as an attack target, it will be mislabeled as a carrier by the enemy",
+ "Increase Repair Speed": "When using the auxiliary ship to conduct repairs, increases the repair speed by 20%",
+ "Increase Aircraft Damage": "Increases primary weapon Damage of carried Antonios aircraft by 15%",
+ "Increase Aircraft Hit Rate": "Increases primary weapon Hit Rate of carried Antonios aircraft by 15%",
+ "Aircraft Recovery": "Aircraft returning to all hangers recover 10% HP",
+ "Attack Against Systems": "Has a chance to deal damage to the target's systems (Primary Weapon System: Low efficiency)",
+ "Firepower Recon Support": "Increases allies' primary weapon's Crit Chance by 30% and Crit Damage by 40%",
+ "UAV Cooperation": "Each aircraft in the same hanger comes with a UAV. Tthe UAV and the aircraft will attack the same target together.",
+ "UAV Aerial Cover Support": "Each aircraft in the same hanger comes with a UAV. The UAV provides anti-aircraft support and strikes back at enemy aircraft that attack the supporting aircraft."
+};
+
+interface Subsystem {
+ count: number;
+ title: string;
+ name: string;
+ attributes: (keyof typeof attributes)[] | null;
+}
+
+interface SubsystemStats {
+ targetPriority: {
+ antiship?: {
+ /** If antiship appears above antiair, position = 0
+ *
+ * If antiship appears below antiair, position = 1
+ */
+ position: number;
+ /** Antiship target priority represented as [order, type]
+ * @example "01 Corvette" = [1, "Corvette"]
+ * @example "02 Cruiser" = [2, "Cruiser"]
+ */
+ priorities: [number, "Frigate" | "Destroyer" | "Cruiser" | "Battlecruiser" | "Auxiliary Ship" | "Carrier" | "Battleship"][];
+ damage: number;
+ };
+ antiair?: {
+ /** If antiship appears above antiair, position = 0
+ *
+ * If antiship appears below antiair, position = 1
+ */
+ position: number;
+ /** Antiship target priority represented as [order, type]
+ * @example "01 Corvette" = [1, "Corvette"]
+ * @example "02 Cruiser" = [2, "Cruiser"]
+ */
+ priorities: [number, "Fighter" | "Corvette" | "Landing Ship"][];
+ damage: number;
+ };
+ siege?: {
+ /** If antiship appears above antiair, position = 0
+ *
+ * If antiship appears below antiair, position = 1
+ */
+ position: number;
+ damage: number;
+ };
+ };
+ /** Cooldown in seconds */
+ cooldown: number;
+ /** Lock-on time in seconds */
+ lockOnTime: number;
+}
+
+interface ProjectileSubsystemStats extends SubsystemStats {
+ /** Attacks per round (A x B) represented as [A, B]
+ * @example "2 x 1" = [2, 1]
+ */
+ attacksPerRound: [number, number];
+ /** Duration in seconds */
+ duration?: number;
+}
+
+interface EnergySubsystemStats extends SubsystemStats {
+ /** Duration in seconds */
+ duration: number;
+ damageFrequency: number;
+}
+
+interface UavSubsystemStats {
+ /** Target priority represented as [order, type]
+ * @example "01 Corvette" = [1, "Corvette"]
+ * @example "02 Cruiser" = [2, "Cruiser"]
+ */
+ targetPriority: [number, "Fighter" | "Corvette" | "Frigate" | "Destroyer" | "Cruiser" | "Battlecruiser" | "Auxiliary Ship" | "Carrier" | "Battleship"][];
+ /** Duration in seconds */
+ duration: number;
+ /** Cooldown in seconds */
+ cooldown: number;
+ /** Lock-on time in seconds */
+ lockOnTime: number;
+ /** Operation count (A x B) represented as [A, B]
+ * @example "2 x 1" = [2, 1]
+ */
+ operationCount: [number, number];
+}
+
+export interface WeaponSubsystem extends Subsystem {
+ type: "weapon";
+ damageType: "Projectile" | "Energy";
+ target: "Building" | "Aircraft" | "Small Ship" | "Large Ship";
+ /** Percentage represented as a number between 0 and 100 */
+ lockonEfficiency: number | null;
+ /** Alpha damage (damage per hit) */
+ alpha: number;
+ stats: ProjectileSubsystemStats | EnergySubsystemStats;
+}
+
+export interface AircraftSubsystem extends Subsystem {
+ type: "hanger";
+ hanger: "Small Fighter" | "Medium Fighter" | "Large Fighter" | "Corvette";
+ capacity: number;
+}
+
+export interface MiscSubsytem extends Subsystem {
+ type: "misc";
+}
+
+interface UAVSubsystem extends Subsystem {
+ type: "hanger";
+ capacity: number;
+}
+
+export interface AttackUAVSubsystem extends UAVSubsystem {
+ hanger: "Area-Denial Anti-Aircraft UAV" | "Cooperative Offensive UAV" | "Tactical UAV" | "Siege UAV" | "Military UAV" | "Guard UAV";
+ damageType: "Projectile" | "Energy";
+ target: "Building" | "Aircraft" | "Small Ship" | "Large Ship";
+ /** Percentage represented as a number between 0 and 100 */
+ lockonEfficiency: number | null;
+ /** Alpha damage (damage per hit) */
+ alpha: number;
+ stats: ProjectileSubsystemStats | EnergySubsystemStats;
+}
+
+export interface RepairUAVSubsystem extends UAVSubsystem {
+ hanger: "Repair UAV";
+ repair: number;
+}
+
+export interface MiscUAVSubsystem extends UAVSubsystem {
+ hanger: "Spotter UAV" | "Shield UAV" | "Info UAV" | "Recon UAV";
+ stats: UavSubsystemStats;
+}
+
+export type ModuleSystemName = "M1" | "M2" | "M3" | "A1" | "A2" | "A3" | "B1" | "B2" | "B3" | "C1" | "C2" | "C3" | "D1" | "D2" | "D3" | "E1" | "E2" | "F1" | "F2" | "G1" | "G2" | "H1" | "H2";
+
+interface Module {
+ /** Image of the weapon type, found in `/public/weapons/icons`. */
+ img: string;
+ system: ModuleSystemName;
+ /** Whether or not the module comes with the ship */
+ default?: boolean;
+}
+
+interface KnownModule extends Module {
+ type: "known";
+ /** Array of names of people this module's stats were sourced from */
+ sourcedFrom: string[] | null;
+}
+
+export interface UnknownModule extends Module {
+ type: "unknown";
+ unknown: true;
+}
+
+export interface WeaponModule extends KnownModule {
+ name: string;
+ stats: {
+ type: "weapon";
+ antiship: number | null;
+ antiair: number | null;
+ siege: number | null;
+ hp: number;
+ };
+ subsystems: (WeaponSubsystem | AircraftSubsystem | AttackUAVSubsystem)[];
+}
+
+export interface PropulsionModule extends KnownModule {
+ name: string;
+ stats: {
+ type: "propulsion";
+ cruise: number | null;
+ warp: number | null;
+ hp: number;
+ };
+ subsystems: MiscSubsytem[];
+}
+
+export interface MiscModule extends KnownModule {
+ name: string;
+ stats: {
+ type: "armor";
+ armor: number | null;
+ extraHP: number | null;
+ /** Percentage represented as a number between 0 and 100 */
+ energyShield: number | null;
+ hpRecovery?: number;
+ storage?: number;
+ hp: number;
+ };
+ subsystems: (MiscSubsytem | RepairUAVSubsystem | MiscUAVSubsystem)[];
+}
+
+export type AllModule = UnknownModule | WeaponModule | PropulsionModule | MiscModule;
+
+export interface SuperCapitalShip extends Ship {
+ type: "Battlecruiser" | "Auxiliary Ship" | "Carrier" | "Battleship";
+ modules: AllModule[];
+}
+
+export type AllShip = Fighter | Corvette | CapitalShip | MediumFighterCapitalShip | LargeFighterCapitalShip | CorvetteCapitalShip | SuperCapitalShip;
+
+export function findShip(ships: AllShip[] | undefined, ship: AllShip | undefined, name?: string, variant?: string) {
+ if (ship) return ships?.find((s) => s.name.toLowerCase() === ship.name.toLowerCase() && s.variant.toLowerCase() === ship.variant.toLowerCase());
+ return ships?.find((s) => s.name.toLowerCase() === name?.toLowerCase() && s.variant.toLowerCase() === variant?.toLowerCase());
+}
+
+export function findBestDirection(data: AllShip[], ship: AllShip) {
+ if (ship.direction.length === 1) {
+ return ship.direction[0];
+ }
+
+ let bestDirection: DirectionOption = "Empty";
+ const allChances: number[] = [];
+
+ for (const direction of ship.direction) {
+ const simulatedPath = data.filter((shipObj) => {
+ const manufacturerCheck = ship.manufacturer === "Empty" || shipObj.manufacturer === ship.manufacturer;
+ const directionCheck = direction === "Empty" || shipObj.direction.includes(direction);
+ const scopeCheck = ship.scope === "Empty" || shipObj.scope === ship.scope;
+
+ return manufacturerCheck && directionCheck && scopeCheck;
+ });
+
+ const chance = (ship.weight / simulatedPath.reduce((acc, item) => acc + item.weight, 0)) * 100;
+ allChances.push(chance);
+ }
+
+ bestDirection = ship.direction[allChances.indexOf(Math.max(...allChances))];
+ return bestDirection;
+}
+
+export function shipNameToImage(name: string) {
+ return name.toLowerCase().replaceAll("-", "").replaceAll("'", "").replaceAll(".", "").split(" ").join("_");
+}
diff --git a/utils/types.ts b/utils/types.ts
new file mode 100644
index 0000000..8451513
--- /dev/null
+++ b/utils/types.ts
@@ -0,0 +1,66 @@
+import type { Op } from "quill";
+
+export type SaveTemplate = {
+ id: string;
+ name: string;
+ ops: Op[];
+ /** YYYY-MM-DD */
+ lastSaved: string;
+ /** YYYY-MM-DD */
+ createdAt: string;
+};
+
+export type UserData = {
+ uid: string;
+ accessToken: string;
+ /** YYYY-MM-DD */
+ createdAt: string;
+ /** YYYY-MM-DD */
+ lastLoggedIn: string;
+ savedMails: SaveTemplate[];
+ blueprints: Record[]>[];
+ /** YYYY-MM-DD */
+ bpLastSaved: string | null;
+ origin: string;
+};
+
+export type MinifiedSaveTemplate = {
+ id: string;
+ name: string;
+ ops: {
+ a?: { c: string };
+ i: string;
+ }[];
+ /** YYYY-MM-DD */
+ lastSaved: string;
+ /** YYYY-MM-DD */
+ createdAt: string;
+};
+
+export type MinifiedUserData = {
+ uid: string;
+ accessToken: string;
+ /** YYYY-MM-DD */
+ createdAt: string;
+ /** YYYY-MM-DD */
+ lastLoggedIn: string;
+ savedMails: MinifiedSaveTemplate[];
+ blueprints: Record[]>[];
+ /** YYYY-MM-DD */
+ bpLastSaved: string | null;
+};
+
+export type Alert = {
+ id: string;
+ /** Whether to show the alert or not */
+ show: boolean;
+ tag: string;
+ description: string;
+ /** YYYY-MM-DD */
+ date: string;
+};
+
+export type TruncatedOp = {
+ a?: { c: string };
+ i: string;
+};
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 0000000..0aba0ee
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,7 @@
+import { defineVitestConfig } from "@nuxt/test-utils/config";
+
+export default defineVitestConfig({
+ test: {
+ environment: "nuxt"
+ }
+});
\ No newline at end of file