diff --git a/.gitignore b/.gitignore
index 0592ec30af8ecaafd34798974544fd4087cab856..0dea1b881f19c986ccec58126f52cbca5ec6b6d6 100755
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,5 @@ scripts/Pfam-A.hmm.dat
meili_data
#refseq_res.csv
*.pyc
-# pfam-a-hmm.csv
\ No newline at end of file
+# pfam-a-hmm.csv
+.vscode
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1cea78644d5b0a47bb29ade11c93d05006b41ad8..ae93cc7e2b945298b8648f50631ea29e256a8bd2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -192,18 +192,20 @@ lint:
MEILI_HOST: "http://localhost:7700"
script:
# - rm data/list-systems.json
+ ###### REFSEQ
+ # delete all document refseq
- >
df-wiki-cli
meilisearch
--host ${MEILI_HOST}
--key ${MEILI_MASTER_KEY}
delete-all-documents refseq
+ # update refseq index
- >
- df-wiki-cli
- content systems
- --dir content/3.defense-systems/
- --pfam public/pfam-a-hmm.csv
- --output data/list-systems.json
+ df-wiki-cli meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ index-update refseq sys_id
- >
df-wiki-cli
meilisearch
@@ -211,23 +213,92 @@ lint:
--key ${MEILI_MASTER_KEY}
update
--file data/refseq_res.csv
- --document refseq
+ --document refseq
+ # REF SEQ TAXO #
+ - >
+ df-wiki-cli
+ content
+ refseq-group-per-assembly
+ --input data/refseq_res.csv
+ --output data/refseqtaxo.csv
+ - >
+ df-wiki-cli
+ meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ delete-all-documents refseqtaxo
+ - >
+ df-wiki-cli meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ index-update refseqtaxo Assembly
- >
df-wiki-cli
meilisearch
--host ${MEILI_HOST}
--key ${MEILI_MASTER_KEY}
update
- --file data/refseq_res.csv
+ --file data/refseqtaxo.csv
--document refseqtaxo
+ # REFSEQ TAXO TYPE #
+ - >
+ df-wiki-cli
+ content
+ refseq-group-per-assembly-and-type
+ --input data/refseq_res.csv
+ --output data/refseqtaxotype.csv
+ - >
+ df-wiki-cli
+ meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ delete-all-documents refseqtaxotype
+ - >
+ df-wiki-cli meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ index-update refseqtaxotype index
- >
df-wiki-cli
meilisearch
--host ${MEILI_HOST}
--key ${MEILI_MASTER_KEY}
update
- --file data/all_predictions_statistics_clean.csv
- --document structure
+ --file data/refseqtaxotype.csv
+ --document refseqtaxotype
+ # SANITIZED REFSEQ
+ - >
+ df-wiki-cli
+ content
+ refseq-sanitized-hits
+ --input data/refseq_res.csv
+ --output data/refseq-sanitized.csv
+ - >
+ df-wiki-cli
+ meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ delete-all-documents refseqsanitized
+ - >
+ df-wiki-cli meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ index-update refseqsanitized index
+ - >
+ df-wiki-cli
+ meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ update
+ --file data/refseq-sanitized.csv
+ --document refseqsanitized
+ # SYSTEMS
+ - >
+ df-wiki-cli
+ content systems
+ --dir content/3.defense-systems/
+ --pfam public/pfam-a-hmm.csv
+ --output data/list-systems.json
- >
df-wiki-cli
meilisearch
@@ -236,6 +307,16 @@ lint:
update
--file data/list-systems.json
--document systems
+ # STRUCTURE
+ - >
+ df-wiki-cli
+ meilisearch
+ --host ${MEILI_HOST}
+ --key ${MEILI_MASTER_KEY}
+ update
+ --file data/all_predictions_statistics_clean.csv
+ --document structure
+ # ARTICLES
- >
df-wiki-cli
meilisearch
diff --git a/components/AutocompleteMeiliFacets.vue b/components/AutocompleteMeiliFacets.vue
index fed95eeb55847f7041b242f50a044170ded88526..ff77c3d56e566a08afd9b9fb34424f30f6091368 100644
--- a/components/AutocompleteMeiliFacets.vue
+++ b/components/AutocompleteMeiliFacets.vue
@@ -193,6 +193,7 @@ function updateAutocompleteFocused(isFocused: boolean) {
function emitUpdateModelValue(filters: MaybeRef<FilterItem[] | undefined>) {
+ console.log(filters)
emit('update:modelValue', toValue(filters))
}
diff --git a/components/Nav/Navbar.vue b/components/Nav/Navbar.vue
index e5a879a612b4b49c8d90009a22ec15c49ed4fc34..23ae1ca901c1815ff7f9a863b9a3a29c776d5dca 100644
--- a/components/Nav/Navbar.vue
+++ b/components/Nav/Navbar.vue
@@ -36,12 +36,11 @@ const sections = ref([
href: runtimeConfig.public.defenseFinderWebservice,
},
{ id: "wiki", label: "Wiki", to: '/', },
- { id: "refseq", label: "RefSeq DB", to: '/refseq/' },
- { id: "structure", label: "Structures DB", to: '/structure/' },
+ { id: "refseq", label: "RefSeq DB", to: '/refseq' },
+ { id: "structure", label: "Structures DB", to: '/structure' },
{ id: "help", label: "Help", to: '/help/defensefinder' },
]);
-
function toggleDrawer() {
emit('update:drawer', !props.drawer)
}
@@ -63,7 +62,7 @@ function toggleDrawer() {
{{ section.label }}
</v-btn>
<v-btn @click="toggleTheme" color="primary" :icon="theme.global.current.value.dark ? 'md:light_mode' : 'md:dark_mode'
- "></v-btn>
+ "></v-btn>
</template>
<template v-else>
<v-menu>
diff --git a/components/ServerDbTable.vue b/components/ServerDbTable.vue
index 306f2ee9f80a614334bc13704536e1e0b7628dae..214e3d44b757680a6f49776ef3961d3209b0914e 100644
--- a/components/ServerDbTable.vue
+++ b/components/ServerDbTable.vue
@@ -4,7 +4,7 @@ import { useCsvDownload } from "@/composables/useCsvDownload"
import { useMeiliFilters } from "@/composables/useMeiliFilters"
import { useSlots } from 'vue'
import { useDisplay } from "vuetify";
-import { useThrottleFn } from '@vueuse/core'
+import { toValue, useThrottleFn } from '@vueuse/core'
import type { FacetInputItem, FilterItem } from '@/components/AutocompleteMeiliFacets.vue'
import { useMeiliSearch } from "#imports"
// import { saveAs } from "file-saver";
@@ -39,7 +39,7 @@ export interface Props {
autocompleteMeiliFacetsProps: AutocompleteMeiliFacetProps
}
-
+const msFilters = defineModel('msFilters')
const props = withDefaults(defineProps<Props>(), {
title: '',
columnsToDownload: undefined,
@@ -52,7 +52,9 @@ const props = withDefaults(defineProps<Props>(), {
facets: undefined
}
- }
+ },
+ msFilters: undefined
+
});
const slots = useSlots()
const sortByRef = toRef(props.sortBy)
@@ -123,20 +125,10 @@ onBeforeMount(async () => {
emitRefreshRes()
})
-const msFilterCompo = ref<FilterItem[] | undefined>(undefined)
-
-
-
const computedF = computed(() => toValue(props.numericalFilters))
-const { arrayFilters: computedFilter } = useMeiliFilters(msFilterCompo, computedF)
-// const computedFilter = computed(() => {
-// const toValFilters = toValue(msFilterCompo)
-// if (toValFilters !== undefined && toValFilters.length > 0) {
-// meiliFilterAsArray
-// }
-// })
+const { arrayFilters: computedFilter } = useMeiliFilters(msFilters, computedF)
watch(computedFilter, () => {
@@ -160,14 +152,14 @@ const throttleSearch = useThrottleFn(async () => {
const lastFilterItem = computed(() => {
- const toValFilterItems = toValue(msFilterCompo)
+ const toValFilterItems = toValue(msFilters)
if (toValFilterItems !== undefined && Array.isArray(toValFilterItems)) {
return toValFilterItems.slice(-1)[0]
}
})
const isValidFilters = computed(() => {
- const toValFilterItems = toValue(msFilterCompo)
+ const toValFilterItems = toValue(msFilters)
if (toValFilterItems === undefined || Array.isArray(toValFilterItems) && toValFilterItems?.length === 0) {
return true
}
@@ -224,10 +216,7 @@ watch(search, () => {
// emitRefreshRes()
})
-// watch(msFilterCompo, () => {
-// searchOrFilter()
-// })
async function downloadData() {
pendingDownloadData.value = true
@@ -280,7 +269,7 @@ function focusedOrBlur(isFocused: boolean) {
@update:focused="focusedOrBlur"></v-text-field>
</v-card-text>
<v-card-text>
- <AutocompleteMeiliFacets v-model="msFilterCompo" v-bind="props.autocompleteMeiliFacetsProps"
+ <AutocompleteMeiliFacets v-model="msFilters" v-bind="props.autocompleteMeiliFacetsProps"
:is-valid-filters="isValidFilters">
</AutocompleteMeiliFacets>
</v-card-text>
diff --git a/components/content/ArticleStructure.vue b/components/content/ArticleStructure.vue
new file mode 100644
index 0000000000000000000000000000000000000000..be8525eee834d802c488da460c568c26a38f36ad
--- /dev/null
+++ b/components/content/ArticleStructure.vue
@@ -0,0 +1,153 @@
+<script setup lang="ts">
+import { toValue } from '@vueuse/core';
+import MolstarPdbePlugin from './MolstarPdbePlugin.vue';
+
+
+const { page } = useContent();
+// get the structures
+const structures = ref()
+const structureTitle = ref("Structure")
+const msIndexName = ref<string>("structure")
+const stuctureUrls = ref<string[] | undefined>(undefined)
+const headers = ref<Record<string, any>[]>([
+ { title: 'Structure', key: 'structure', sortable: false, removable: false, fixed: true, minWidth: "110px" },
+
+ { title: " System", key: "System" },
+ { title: "Gene name", key: "gene_name", removable: false },
+ { title: "Subtype", key: "subtype", removable: false },
+ { title: "Proteins in structure", key: 'proteins_in_the_prediction', sortable: false, removable: true },
+ { title: "System genes", key: "system_genes", sortable: false, removable: true },
+ { title: "Prediction type", key: "prediction_type", removable: true },
+ { title: "N genes in sys", key: "system_number_of_genes", removable: true },
+ { title: "pLDDT", key: "plddts", removable: true },
+ { title: "iptm+ptm", key: "iptm+ptm", removable: true },
+ { title: "pDockQ", key: "pDockQ", removable: true },
+])
+const groupBy = ref([
+ {
+ key: 'subtype',
+ order: 'asc',
+ },
+])
+
+
+
+onBeforeMount(() => {
+ fetchStructures()
+})
+onMounted(() => {
+ fetchStructures()
+})
+
+function namesToCollapsibleChips(names: string[], systemDir: string, file: string | null = null) {
+ if (file === null) {
+ return names.filter((it) => it !== "").map(it => ({ title: it.split("__")[1] }))
+ } else {
+ return names.filter((it) => it !== "").map(it => ({ title: it.split("__")[1], href: `/wiki/${systemDir}/${file}` }))
+ }
+}
+function pdbNameToCif(pdbPath: string) {
+ const cifPath = pdbPath.split(".").slice(0, -1).join(".")
+ return `${cifPath}.cif`
+}
+function displayStructure(item) {
+ stuctureUrls.value = item.structuresUrls
+ console.log(item)
+ structureTitle.value = `${item.subtype} - ${item.gene_name}`
+
+}
+
+
+const sanitizedStructures = computed(() => {
+ const toValStructures = toValue(structures)
+ if (toValStructures?.hits?.length > 0) {
+
+ return toValStructures.hits.map(item => {
+ return {
+ ...item, structuresUrls: [`/${item.System_name_ok}/${pdbNameToCif(item.pdb)}`, `/${item.System_name_ok}/${item.pdb}`]
+ .map(url => {
+ return toValue(useRefinedUrl(url).refinedUrl)
+ })
+ }
+ })
+ }
+ return []
+
+})
+
+
+// ==================================================================================
+// ASYNC PART
+
+async function fetchStructures() {
+ const { data, error, refresh } = await useAsyncMeiliSearch({
+ index: toValue(msIndexName),
+ query: "",
+ params: {
+ facets: ["*"],
+ filter: [`System='${toValue(page).title}'`, "completed='true'"],
+ }
+ })
+ structures.value = data.value
+ if (error.value) {
+ throw createError(`Cannot get structure for system: ${page.title}`)
+ }
+}
+
+// watch(page() => {
+
+
+// refresh()
+// })
+console.log(structures)
+
+
+</script>
+<template>
+ <v-card flat>
+ <v-data-table :headers="headers" :items="sanitizedStructures" :group-by="groupBy">
+ <template #[`item.proteins_in_the_prediction`]="{ item }">
+ <CollapsibleChips
+ :items="namesToCollapsibleChips(item.proteins_in_the_prediction, item.System_name_ok, item.fasta_file)">
+ </CollapsibleChips>
+ </template>
+ <template #[`item.system_genes`]="{ item }">
+ <CollapsibleChips :items="namesToCollapsibleChips(item.system_genes, item.System_name_ok)">
+ </CollapsibleChips>
+
+ </template>
+ <template v-slot:group-header="{ item, columns, toggleGroup, isGroupOpen }">
+ <tr>
+ <td :colspan="columns.length">
+ <VBtn :icon="isGroupOpen(item) ? '$expand' : '$next'" size="small" variant="text"
+ @click="toggleGroup(item)"></VBtn>
+ {{ item.value === 'na' ? 'No subtype' : item.value }}
+ </td>
+ </tr>
+ </template>
+ <template #[`item.structure`]="{ item }">
+ <v-row justify="space-between" dense no-gutters align="center">
+ <v-col>
+ <v-btn size="x-small" variant="text" icon="md:visibility"
+ @click="displayStructure(item)"></v-btn>
+ </v-col>
+ <v-col>
+ <v-menu>
+ <template v-slot:activator="{ props }">
+ <v-btn :disabled="item.structuresUrls?.length < 1" size="x-small" variant="text"
+ icon="md:download" class="ml-1" v-bind="props"></v-btn>
+ </template>
+ <v-list>
+ <v-list-item v-for="(url, index) in item.structuresUrls" :key="index" :value="index"
+ :href="url">
+ <v-list-item-title>{{ url.split('.').slice(-1)[0] }}</v-list-item-title>
+ </v-list-item>
+ </v-list>
+ </v-menu>
+ </v-col>
+ </v-row>
+ </template>
+ </v-data-table>
+ <PdbeMolstarPlugin v-model="stuctureUrls" v-model:title="structureTitle" />
+ </v-card>
+</template>
\ No newline at end of file
diff --git a/components/content/MolstarPdbePlugin.vue b/components/content/MolstarPdbePlugin.vue
index 82f8db51cd1b8741ccde6b7ff2e503ac872cbf74..dc6457047fd354959fdd4125ca96a5bf3ffa82d5 100644
--- a/components/content/MolstarPdbePlugin.vue
+++ b/components/content/MolstarPdbePlugin.vue
@@ -2,22 +2,19 @@
import { withTrailingSlash, withLeadingSlash, joinURL } from 'ufo'
import { useRuntimeConfig, computed } from '#imports'
-import * as d3 from "d3";
-import * as Plot from "@observablehq/plot";
-import PlotFigure from "~/components/PlotFigure";
-
import { useDisplay } from "vuetify";
export interface Props {
height?: number
dataUrls?: string[]
- dataUrl?: string
+ dataUrl?: string | undefined
uniq?: boolean
format?: "pdb" | "cif"
}
-const { mobile } = useDisplay()
-// const selectedPdb = ref('')
+
+
+const { mobile, width, height } = useDisplay()
const refinedDataUrls = computed(() => {
function refinedUrl(url: string) {
@@ -54,10 +51,10 @@ const refinedDataUrls = computed(() => {
const props = withDefaults(defineProps<Props>(), {
height: 600,
uniq: false,
- format: 'pdb'
+ format: 'pdb',
+ dataUrl: undefined
})
-const { width, height } = useDisplay()
const maxWidth = ref(1500)
@@ -73,7 +70,6 @@ const computedHeight = computed(() => {
return height.value - 250
})
-const paeError: Ref<string | null> = ref(null)
function closeStructure() {
selectedPdb.value = null
@@ -105,7 +101,6 @@ useHead({
})
const pdbeMolstarComponent = ref(null)
-// const selectedPdb = ref("/wiki/avs/AVAST_I,AVAST_I__Avs1A,0,V-plddts_85.07081.pdb")
const selectedPdb: Ref<string | null> = ref(null)
const structureToDownload: Ref<string | null> = ref(null)
const selectedPaePath = computed(() => {
@@ -151,9 +146,6 @@ function setSelectedPdbToFirst() {
}
}
-// const moleculeFormat = computed(() => {
-// return toValue(selectedPdb)?.split(".")?.[-1]?.toLowerCase() ?? "pdb"
-// })
const moleculeFormat: Ref<string> = ref("pdb")
</script>
@@ -191,7 +183,8 @@ const moleculeFormat: Ref<string> = ref("pdb")
<v-card flat :rounded="false">
<v-toolbar>
<v-toolbar-title>Structures</v-toolbar-title>
- <v-select v-model="selectedPdb" label="Select PDB" :items="refinedDataUrls" hide-details="auto"></v-select>
+ <v-select v-model="selectedPdb" label="Select PDB" :items="refinedDataUrls"
+ hide-details="auto"></v-select>
<v-spacer></v-spacer>
<v-btn :disabled="!selectedPdb" icon="md:download" :href="structureToDownload"></v-btn>
@@ -207,15 +200,12 @@ const moleculeFormat: Ref<string> = ref("pdb")
class="d-flex align-center justify-center flex-wrap text-center mx-auto px-4 my-3"
:height="computedHeight" :width="computedWidth" style="position:relative;">
<pdbe-molstar ref="pdbeMolstarComponent" :custom-data-url="selectedPdb" alphafold-view
- sequence-panel="true" landscape="false" :custom-data-format="moleculeFormat"></pdbe-molstar>
+ sequence-panel="true" landscape="false"
+ :custom-data-format="moleculeFormat"></pdbe-molstar>
</v-sheet>
</v-col>
<v-col v-if="moleculeFormat === 'cif'" :cols="mobile ? 12 : undefined">
<v-img :src="selectedPaePath"></v-img>
-
- <!-- <PlotFigure v-if="sanitizedPaeData?.length > 0 && paeError === null" defer
- :options="plotPaeOptions"></PlotFigure>
- <v-alert v-else type="warning" variant="tonal">{{ paeError }}</v-alert> -->
<v-card flat color="transparent">
<v-card-title>Model Confidence</v-card-title>
<v-card-text>
diff --git a/components/content/PdbeMolstarPlugin.vue b/components/content/PdbeMolstarPlugin.vue
new file mode 100644
index 0000000000000000000000000000000000000000..6a082cdddb0f94d613f21a899ee9195133b88ae8
--- /dev/null
+++ b/components/content/PdbeMolstarPlugin.vue
@@ -0,0 +1,186 @@
+<script setup lang="ts">
+import { withTrailingSlash, withLeadingSlash, joinURL } from 'ufo'
+import { useRuntimeConfig, computed, toValue } from '#imports'
+import { useDisplay } from "vuetify";
+
+import type { MaybeRef } from "vue"
+import FoldseekDialog from '../FoldseekDialog.vue'
+
+const { mobile, width, height } = useDisplay()
+
+
+useHead({
+ link: [
+ {
+ rel: 'stylesheet',
+ href: 'https://www.ebi.ac.uk/pdbe/pdb-component-library/css/pdbe-molstar-3.1.3.css'
+ },
+ ],
+ script: [
+ // Required for IE11
+ {
+ src: "https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"
+ },
+ {
+ src: "https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs/webcomponents-lite.js"
+ },
+ {
+ type: "text/javascript",
+ src: "https://www.ebi.ac.uk/pdbe/pdb-component-library/js/pdbe-molstar-component-3.1.3.js",
+ // tagPosition: 'bodyClose'
+ }
+ ]
+})
+
+export interface Props {
+ height?: number
+ // dataUrls?: MaybeRef<string[] | undefined>
+ format?: "pdb" | "cif"
+}
+
+const props = withDefaults(defineProps<Props>(), {
+ height: 600,
+ format: 'pdb',
+ // dataUrls: undefined
+})
+
+const dataUrls = defineModel()
+const title = defineModel('title')
+const pdbeMolstarComponent = ref(null)
+
+const dialog = ref(false)
+const moleculeFormat: Ref<string> = ref("pdb")
+const selectedPdb: Ref<string | null> = ref(null)
+const structureToDownload: Ref<string | null> = ref(null)
+
+
+const computedWidth = computed(() => {
+ // if (toValue(width) > toValue(maxWidth)) return toValue(maxWidth) / 1.5
+ return toValue(width) / 1.5
+})
+
+const computedHeight = computed(() => {
+ return height.value - 250
+})
+
+
+function viewPdb(pdbPath: string | null) {
+ if (pdbPath !== null) {
+ dialog.value = true
+ const format = toValue(pdbPath)?.split(".").slice(-1)[0]?.toLowerCase() ?? "pdb"
+ moleculeFormat.value = format
+ if (pdbeMolstarComponent.value?.viewerInstance) {
+ const viewerInstance = pdbeMolstarComponent.value.viewerInstance
+ const customData = { url: pdbPath, format: format, binary: false }
+ viewerInstance.visual.update({ customData })
+
+ }
+ }
+}
+
+
+function closeStructure() {
+ selectedPdb.value = null
+ dataUrls.value = undefined
+ dialog.value = false
+}
+watch(selectedPdb, (newSelectedPdb, prevSelectPdb) => {
+ viewPdb(newSelectedPdb)
+ structureToDownload.value = newSelectedPdb
+})
+
+watchEffect(() => {
+ const toValUrl = toValue(dataUrls)
+ if (toValUrl?.length > 0) {
+ dialog.value = true
+ selectedPdb.value = dataUrls.value[0]
+ }
+ else {
+ dialog.value = false
+ }
+})
+
+</script>
+<template>
+ <v-dialog v-model="dialog" transition="dialog-bottom-transition" fullscreen :scrim="false">
+ <v-card flat :rounded="false">
+ <v-toolbar>
+ <v-toolbar-title>{{ title }}</v-toolbar-title>
+ <v-select v-model="selectedPdb" label="Select PDB" :items="dataUrls" hide-details="auto"></v-select>
+ <v-spacer></v-spacer>
+
+ <v-btn :disabled="!selectedPdb" icon="md:download" :href="structureToDownload"></v-btn>
+ <v-btn icon @click="closeStructure">
+ <v-icon>mdi-close</v-icon>
+ </v-btn>
+
+ </v-toolbar>
+ <v-card-text>
+ <v-row>
+ <v-col :cols="mobile ? 12 : 'auto'">
+ <v-sheet v-if="selectedPdb"
+ class="d-flex align-center justify-center flex-wrap text-center mx-auto px-4 my-3"
+ :height="computedHeight" :width="computedWidth" style="position:relative;">
+ <pdbe-molstar ref="pdbeMolstarComponent" :custom-data-url="selectedPdb" alphafold-view
+ sequence-panel="true" landscape="false"
+ :custom-data-format="moleculeFormat"></pdbe-molstar>
+ </v-sheet>
+ </v-col>
+ <v-col v-if="moleculeFormat === 'cif'" :cols="mobile ? 12 : undefined">
+ <v-img :src="selectedPaePath"></v-img>
+ <v-card flat color="transparent">
+ <v-card-title>Model Confidence</v-card-title>
+ <v-card-text>
+ AlphaFold produces a per-residue model
+ confidence score (pLDDT) between 0 and 100. Some regions below 50 pLDDT may be
+ unstructured
+ in isolation.
+ </v-card-text>
+ <v-list>
+ <v-list-item>
+ <template #prepend>
+ <div class="legendColor mr-2" style="background-color: rgb(0, 83, 214);">
+ </div>
+ </template>
+ <v-list-item-title>
+ Very high (pLDDT > 90)
+ </v-list-item-title>
+
+ </v-list-item>
+ <v-list-item>
+ <template #prepend>
+ <div class="legendColor mr-2" style="background-color: rgb(101, 203, 243);">
+ </div>
+ </template>
+ <v-list-item-title>
+ High (90 > pLDDT > 70)
+ </v-list-item-title>
+
+ </v-list-item>
+ <v-list-item>
+ <template #prepend>
+ <div class="legendColor mr-2" style="background-color: rgb(255, 219, 19);">
+ </div>
+ </template>
+ <v-list-item-title>
+ Low (70 > pLDDT > 50) </v-list-item-title>
+
+ </v-list-item>
+ <v-list-item>
+ <template #prepend>
+ <div class="legendColor mr-2" style="background-color: rgb(255, 125, 69);">
+ </div>
+ </template>
+ <v-list-item-title>
+ Very low (pLDDT < 50) </v-list-item-title>
+
+ </v-list-item>
+ </v-list>
+ </v-card>
+ </v-col>
+ </v-row>
+ </v-card-text>
+ </v-card>
+ </v-dialog>
+
+</template>
\ No newline at end of file
diff --git a/components/content/RefseqDb.vue b/components/content/RefseqDb.vue
index 131a9200d371a7b07ceedb11a8d3513c9a0ee21a..80b49c502f5cbed9f1f5adca52ba1ee60e5801bf 100644
--- a/components/content/RefseqDb.vue
+++ b/components/content/RefseqDb.vue
@@ -201,24 +201,26 @@ async function getAllHits(params: { index: string, params: Record<string, any>,
selectedTaxoRank.value = "Superkingdom"
}
- if (params.index === toValue(dbName)) {
-
- pendingAllHits.value = true
- try {
- const { data, error } = await useAsyncMeiliSearch({
- ...params,
- params: {
- ...params.params,
- 'attributesToRetrieve': ['type', 'Assembly', ...toValue(availableTaxo)]
- }
- })
- allHits.value = data.value
- } finally {
- pendingAllHits.value = false
+ // if (params.index === toValue(dbName)) {
- }
+ pendingAllHits.value = true
+ try {
+ const { data, error } = await useAsyncMeiliSearch({
+ ...params,
+ index: "refseqsanitized",
+ params: {
+ ...params.params,
+
+ 'attributesToRetrieve': ['type', 'Assembly', ...toValue(availableTaxo)]
+ }
+ })
+ allHits.value = data.value
+ } finally {
+ pendingAllHits.value = false
}
+
+ // }
}
@@ -287,12 +289,16 @@ const computedTaxonomyDistribution = computed(() => {
const toValSelectedTaxoRank = toValue(selectedTaxoRank)
const toValFacetsPerRank = toValue(msResult)?.facetDistribution?.[toValSelectedTaxoRank]
if (toValFacetsPerRank) {
- return Object.entries(toValFacetsPerRank).map(([key, value]) => {
- return {
+ const listFacetsPerRank = Object.entries(toValFacetsPerRank)
+ const result = new Array(listFacetsPerRank.length);
+ for (let i = 0; listFacetsPerRank.length; i++) {
+ const [key, value] = listFacetsPerRank[i]
+ result[i] = {
[toValSelectedTaxoRank]: key,
count: value
}
- }).sort()
+ }
+ return result.sort()
} else { return [] }
})
@@ -363,8 +369,8 @@ const binPlotOptions = computed(() => {
marginBottom: 200,
padding: 0,
grid: true,
+ aspectRatio: true,
x: { tickRotate: 90, label: "Systems", domain: toValue(sortedCellDomain) },
- // y: { tickFormat: 's' },
color: { scheme: "plasma", legend: true, label: `Proportion per ${selectedTaxoRank.value}`, domain: [0, 100] },
}
})
@@ -375,12 +381,18 @@ const binPlotGroup = computed(() => {
{
label: (d) => d.fill,
fill: {
+ /**
+ *
+ * @param I is the list of element index that are par of the same group (cell)
+ * @param X is the list of all elements
+ */
reduceIndex: function (I, X) {
const toValTaxonomyFacet = toValue(taxonomyFacet)
if (toValTaxonomyFacet !== undefined) {
const clade = X[I[0]][selectedTaxoRank.value]
const system = X[I[0]].type
- // Get the list of item for this group
+ // Get the list of all the items for this group (same cell)
+ // and group them per type and assembly
const itemsPerGroup = d3.rollup(I.map(index => {
return X[index]
}), D => D.length, d => d.type, d => d.Assembly)
@@ -408,22 +420,20 @@ const binPlotGroup = computed(() => {
const binPlotDataOptions = computed(() => {
const toValueAllHits = toValue(allHits)
+ const toValBinPlotGroup = toValue(binPlotGroup)
const data = toValueAllHits?.hits ?? []
+ const plotCellMark = Plot.cell(data, toValBinPlotGroup)
return toValueAllHits?.hits?.length > 0 ? {
...binPlotOptions.value,
width: width.value,
- title: "Proportion of genomes with defense system X for a given clade",
+ title: `Proportion of genomes with defense system X per ${selectedTaxoRank.value} taxonomic rank`,
color: {
...binPlotOptions.value.color,
type: scaleType.value,
tickFormat: '~s',
ticks: scaleType.value === 'symlog' ? 3 : 5,
},
- marks: [
- Plot.cell(data,
- toValue(binPlotGroup)
- ),
- ],
+ marks: [plotCellMark],
} : null
})
diff --git a/components/content/StructureDb.vue b/components/content/StructureDb.vue
index 59db42f08ca3a2d213e3a977007d718603d36f81..380ce2bc38afb1e874ffa773d63cc951a3dd0c12 100644
--- a/components/content/StructureDb.vue
+++ b/components/content/StructureDb.vue
@@ -6,13 +6,12 @@ import { ServerDbTable } from "#components"
import { withQuery, joinURL, withTrailingSlash } from 'ufo'
-
interface Item {
-
Foldseek_name: string
System_name_ok: string
-
}
+
+
const sortBy: Ref<SortItem[]> = ref([{ key: 'System', order: "asc" }])
const itemValue = ref("id");
const dbName = ref("structure")
@@ -163,49 +162,60 @@ const { refinedUrl: downloadAllCifUrl } = useRefinedUrl("/df-all-cifs.tar.gz")
:autocomplete-meili-facets-props="computedAutocompleteMeiliFacetsProps"
:numerical-filters="toRef(numericalFilters)">
<template #numerical-filters="{ search }">
- <v-list>
- <v-list-item>
- <v-list-item-title class="text-subtitle-1 text-medium-emphasis">
- pLDDT
- </v-list-item-title>
- <v-row>
- <v-col class="pt-8 pl-8" :lg="8">
- <v-range-slider v-model="plddtsRange" strict density="compact" hide-details="auto"
+ <v-row>
+ <v-col cols="12" md="4">
+ <v-card flat variant="tonal">
+ <v-card-item class="mb-4">
+ <v-card-title> pLDDT
+ </v-card-title>
+ </v-card-item>
+ <v-card-text class="pr-0">
+ <v-range-slider v-model="plddtsRange" strict density="compact" hide-details="auto" class=""
step="0.5" :min="0" :max="100" thumb-label="always" @update:modelValue="search()">
<template #append>
- <v-btn variant="text" icon="md:restart_alt" @click="plddtsReset()"></v-btn>
+ <v-btn variant="text" density="compact" icon="md:restart_alt"
+ @click="plddtsReset()"></v-btn>
</template>
</v-range-slider>
- </v-col></v-row>
- </v-list-item>
- <v-list-item>
- <v-list-item-title class="text-subtitle-1 text-medium-emphasis">
- iptm+ptm
- </v-list-item-title>
- <v-row>
- <v-col class="pt-8 pl-8" :lg="8">
+ </v-card-text>
+ </v-card>
+ </v-col>
+ <v-col cols="12" md="4">
+ <v-card flat variant="tonal">
+ <v-card-item class="mb-4">
+ <v-card-title> iptm+ptm
+ </v-card-title>
+ </v-card-item>
+ <v-card-text class="pr-0">
<v-range-slider v-model="iptmRange" strict density="compact" hide-details="auto" step="0.1"
:min="0" :max="1" thumb-label="always" @update:modelValue="search()">
<template #append>
- <v-btn variant="text" icon="md:restart_alt" @click="iptmReset()"></v-btn>
+ <v-btn variant="text" density="compact" icon="md:restart_alt"
+ @click="iptmReset()"></v-btn>
</template>
</v-range-slider>
- </v-col></v-row>
- </v-list-item>
- <v-list-item>
- <v-list-item-title class="text-subtitle-1 text-medium-emphasis">pDockQ</v-list-item-title>
- <v-row>
- <v-col class="pt-8 pl-8" :lg="8">
+ </v-card-text></v-card>
+ </v-col>
+
+ <v-col cols="12" md="4">
+ <v-card flat variant="tonal">
+ <v-card-item class="mb-4">
+ <v-card-title> pDockQ
+ </v-card-title>
+ </v-card-item>
+ <v-card-text class="pr-0">
<v-range-slider v-model="pdockqRange" density="compact" strict hide-details="auto"
step="0.1" :min="0" :max="1" thumb-label="always" @update:modelValue="search()">
<template #append>
- <v-btn variant="text" icon="md:restart_alt" @click="pdockqReset()"></v-btn>
+ <v-btn variant="text" density="compact" icon="md:restart_alt"
+ @click="pdockqReset()"></v-btn>
</template>
</v-range-slider>
- </v-col></v-row>
- </v-list-item>
- </v-list>
+ </v-card-text>
+ </v-card>
+ </v-col>
+ </v-row>
</template>
<template #[`item.Foldseek_name`]="{ item }">
<FoldseekDialog v-if="item.Foldseek_name !== 'na'" :foldseek-path="toFolseekUrl(item)"></FoldseekDialog>
@@ -227,16 +237,6 @@ const { refinedUrl: downloadAllCifUrl } = useRefinedUrl("/df-all-cifs.tar.gz")
uniq format="cif">
</MolstarPdbePlugin>
</v-row>
- <!-- <v-row no-gutters align="center">
- <MolstarPdbePlugin v-if="item?.pdb && item.pdb !== 'na'"
- :data-urls="[`/${item.System_name_ok}/${item.pdb}`]" uniq format="pdb">
- </MolstarPdbePlugin>
- </v-row> -->
-
-
-
- <!-- <v-icon v-else color="warning" icon="md:dangerous"></v-icon> -->
-
</template>
<template #[`item.completed`]="{ item }">
<v-icon v-if="item.completed" color="success" icon="md:check"></v-icon>
diff --git a/composables/useRefinedUrl.ts b/composables/useRefinedUrl.ts
index 9ac7397ff4f79894334609e1ab4674ffbef902bd..7120de550f55cb6b1de082afb6d3e3e058e8a9ed 100644
--- a/composables/useRefinedUrl.ts
+++ b/composables/useRefinedUrl.ts
@@ -1,19 +1,18 @@
-import { withTrailingSlash, withLeadingSlash, joinURL } from "ufo";
+import { withoutTrailingSlash, withLeadingSlash, joinURL } from "ufo";
-
-export function useRefinedUrl(url: string | Ref<string>) {
+export function useRefinedUrl(url: MaybeRef<string>) {
const refinedUrl = computed(() => {
const sanitzedUrl = toValue(url)
if (sanitzedUrl.startsWith("/") && !sanitzedUrl.startsWith("//")) {
const _base = withLeadingSlash(
- withTrailingSlash(useRuntimeConfig().app.baseURL)
+ withoutTrailingSlash(useRuntimeConfig().app.baseURL)
);
if (_base !== "/" && !sanitzedUrl.startsWith(_base)) {
return joinURL(_base, sanitzedUrl);
}
}
- return toValue(url);
+ return sanitzedUrl;
});
return { refinedUrl }
}
\ No newline at end of file
diff --git a/content/2.general-concepts/3.defense-systems-effectors.md b/content/2.general-concepts/3.defense-systems-effectors.md
index 461d46fecee0aef8ecd5ff66ac4f81fc6932d795..fa4a8904c4ea687a877502e92a4caaf6317d4863 100644
--- a/content/2.general-concepts/3.defense-systems-effectors.md
+++ b/content/2.general-concepts/3.defense-systems-effectors.md
@@ -11,7 +11,7 @@ contributors:
Most of the anti-phage defense systems of bacteria can be described as a combination of two main components.
First, a sensing component that detects phage infection to trigger the immune response
-(see [defense-systems_trigger](/general-concepts/defense-systems_trigger/)).
+(see [defense-systems_trigger](/general-concepts/defense-systems_trigger)).
Second, an effector component that mediates the immune response following the detection of phage infection.
The effector components of anti-phage systems are very diverse, and can be arbitrarily distributed in broad categories :ref{doi=10.1038/s41579-023-00934-x} :
diff --git a/content/3.defense-systems/avs.md b/content/3.defense-systems/avs.md
index c56bd7711cdfa1adc3000c135aefa544a773361a..8e224bc2ef668725f0cf8ff18e944fe94e1fb4d3 100644
--- a/content/3.defense-systems/avs.md
+++ b/content/3.defense-systems/avs.md
@@ -74,64 +74,11 @@ The system was detected in 366 different species.
Proportion of genome encoding the Avs system for the 14 phyla with more than 50 genomes in the RefSeq database.
## Structure
-### AVAST_I
-##### Example 1
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
- - /avs/AVAST_I.AVAST_I__Avs1A.0.V.cif
- - /avs/AVAST_I.AVAST_I__Avs1C.0.V.cif
- - /avs/AVAST_I.AVAST_I__Avs1B.0.V.cif
----
+::article-structure
::
-### AVAST_II
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
- - /avs/AVAST_II__Avs2A.cif
----
-::
-### AVAST_III
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
- - /avs/AVAST_III.AVAST_III__Avs3B.0.V.cif
- - /avs/AVAST_III.AVAST_III__Avs3A.0.V.cif
-
----
-::
-### AVAST_IV
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
- - /avs/AVAST_IV__Avs4A.cif
-
----
-::
-### AVAST_V
-##### Example 1
-
-::molstar-pdbe-plugin
----
-height: 700
-dataUrls:
- - /avs/AVAST_V__Avs5A.cif
-
----
-::
## Experimental validation
diff --git a/data/refseq_res.csv b/data/refseq_res.csv
index becb696192d60bc89a646284da9d6d86ba120069..0a1eb9240b45c61ab360341a90d140ed28017fc9 100644
--- a/data/refseq_res.csv
+++ b/data/refseq_res.csv
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1a7d382a7f767718dc48aa49ae3dd9b0159fdffd96e48946c7a167bcbc516deb
-size 68772089
+oid sha256:cdd04a43d107190f9a80e39be9684f6a130908a45de88b65e31b821393e3b9be
+size 68458331
diff --git a/data/refseq_res_sm.csv b/data/refseq_res_sm.csv
deleted file mode 100644
index 0fc07a648f019b58b75e3834c9417aee56f6e363..0000000000000000000000000000000000000000
--- a/data/refseq_res_sm.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a9d3cf3c0649a0a3158a686e1f4c79b8978faf4ba5e14d365bf8349553c25a55
-size 2254987
diff --git a/docker-compose.yml b/docker-compose.yml
index 1d7e174e51d23ed142a117a8847c8a9ece08d9bc..0cedb3670df391be58a329e1d72b5524cde783c0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,7 +5,7 @@ services:
context: .
target: dev
args:
- BASE_URL: /wiki/
+ BASE_URL: /wiki
MEILI_HOST: http://localhost:7700
MEILI_API_KEY: f9cc073016cbb392365aae86517878cb3f3408bb85c1fafd06e27f73ccb35e3d
HOST_URL: http://localhost:8082
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 7e0d8d3e8364702641fd3ca8dd94433daa0d3b79..a38f2c06e286a9b000bd4f9414dc87f9a34a1bde 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -1,7 +1,7 @@
import { md3 } from 'vuetify/blueprints'
// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
- ssr: true,
+ // ssr: false,
modules: [
'@unocss/nuxt',
'@nuxt/content',
@@ -20,11 +20,12 @@ export default defineNuxtConfig({
"data-domaim": "defense-finder.dev.pasteur.cloud",
src: "https://plausible.pasteur.cloud/js/script.js"
}
-
-
]
}
},
+ router: {
+ strict: true
+ },
site: {
url: 'https://defensefinder.mdmlab.fr',
name: 'DefenseFinder webservice and knowledge base',
diff --git a/package-lock.json b/package-lock.json
index 5e235c3d99a4202bc7c085e325f48bf0cbdf0a9f..92be4468f20ad15133c3d8512e710a16ec84c32d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,7 +31,7 @@
"@unocss/preset-icons": "^0.58.3",
"@vueuse/core": "^10.7.1",
"@vueuse/nuxt": "^10.7.1",
- "nuxt": "^3.9.1",
+ "nuxt": "^3.11.1",
"nuxt-meilisearch": "^1.1.0",
"vuetify-nuxt-module": "^0.9.0"
}
@@ -1136,86 +1136,6 @@
"@css-inline/css-inline-win32-x64-msvc": "0.13.0"
}
},
- "node_modules/@css-inline/css-inline-darwin-arm64": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@css-inline/css-inline-darwin-arm64/-/css-inline-darwin-arm64-0.13.0.tgz",
- "integrity": "sha512-A4QvlZdhp8v+3IHKF/UftRf5GrAVUMEHCGRuk2Dx594xn/UR4ieh+B70aMm5rfONh2hv5mlR9UcoYAkVpEQ99g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@css-inline/css-inline-darwin-x64": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@css-inline/css-inline-darwin-x64/-/css-inline-darwin-x64-0.13.0.tgz",
- "integrity": "sha512-px9z4ypzeECMyBEtlrNzTMpA1tnw5MmMIiMkBRhb8UGRr2pOBZY3yd/eEIxWzVVSPt0aIjVDwUOJ3+d0Z+BskA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@css-inline/css-inline-linux-arm-gnueabihf": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-arm-gnueabihf/-/css-inline-linux-arm-gnueabihf-0.13.0.tgz",
- "integrity": "sha512-+uo0coLQNgk/AKeOB8mXSRd8VIlUg38zRSB9B9q0ior9oBCDPtEdn1HuCSvWxHoOSJ8QNNk+uwbz0zW4CETzFw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@css-inline/css-inline-linux-arm64-gnu": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-arm64-gnu/-/css-inline-linux-arm64-gnu-0.13.0.tgz",
- "integrity": "sha512-GVrsFbY5l0Hxyzxsm5S5JPGObvHm/Ybf2wZgnWBsQigxqGtr1FL535HaTwEnq6aHOpH3f08gR5Vx33gB7jG4pw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@css-inline/css-inline-linux-arm64-musl": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-arm64-musl/-/css-inline-linux-arm64-musl-0.13.0.tgz",
- "integrity": "sha512-V5h5+CRnE01EgoafI/kyjEcM8zvN+sKLnp17Aq9LqQfsut7mO3i72d8g/xeVC37DCLoGQFLvDCzbze2NbF2dIQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@css-inline/css-inline-linux-x64-gnu": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@css-inline/css-inline-linux-x64-gnu/-/css-inline-linux-x64-gnu-0.13.0.tgz",
@@ -1257,26 +1177,10 @@
"node": ">= 10"
}
},
- "node_modules/@css-inline/css-inline-win32-x64-msvc": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@css-inline/css-inline-win32-x64-msvc/-/css-inline-win32-x64-msvc-0.13.0.tgz",
- "integrity": "sha512-6VFhFSXp4FH+NzJhLd6fFi7jKCPvIRW+vq0tV+CPuiQ3zPzMfC9nIk8sB/1VJR8EcvBAjMV53YnacuDjRFRT9g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz",
- "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
"cpu": [
"ppc64"
],
@@ -1290,9 +1194,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz",
- "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
"cpu": [
"arm"
],
@@ -1306,9 +1210,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz",
- "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
"cpu": [
"arm64"
],
@@ -1322,9 +1226,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz",
- "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
"cpu": [
"x64"
],
@@ -1338,9 +1242,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz",
- "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==",
+ "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==",
"cpu": [
"arm64"
],
@@ -1354,9 +1258,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz",
- "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
"cpu": [
"x64"
],
@@ -1370,9 +1274,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz",
- "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
"cpu": [
"arm64"
],
@@ -1386,9 +1290,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz",
- "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
"cpu": [
"x64"
],
@@ -1402,9 +1306,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz",
- "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
"cpu": [
"arm"
],
@@ -1418,9 +1322,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz",
- "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==",
+ "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==",
"cpu": [
"arm64"
],
@@ -1434,9 +1338,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz",
- "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
"cpu": [
"ia32"
],
@@ -1450,9 +1354,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz",
- "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
"cpu": [
"loong64"
],
@@ -1466,9 +1370,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz",
- "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
"cpu": [
"mips64el"
],
@@ -1482,9 +1386,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz",
- "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
"cpu": [
"ppc64"
],
@@ -1498,9 +1402,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz",
- "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
"cpu": [
"riscv64"
],
@@ -1514,9 +1418,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz",
- "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
"cpu": [
"s390x"
],
@@ -1530,9 +1434,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz",
- "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
"cpu": [
"x64"
],
@@ -1546,9 +1450,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz",
- "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
"cpu": [
"x64"
],
@@ -1562,9 +1466,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz",
- "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
"cpu": [
"x64"
],
@@ -1578,9 +1482,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz",
- "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
"cpu": [
"x64"
],
@@ -1594,9 +1498,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz",
- "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
"cpu": [
"arm64"
],
@@ -1610,9 +1514,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz",
- "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
"cpu": [
"ia32"
],
@@ -1626,9 +1530,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz",
- "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
"cpu": [
"x64"
],
@@ -2251,9 +2155,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp/node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
"dev": true,
"engines": {
"node": ">=8"
@@ -2788,12 +2692,12 @@
}
},
"node_modules/@nuxt/kit": {
- "version": "3.10.3",
- "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.10.3.tgz",
- "integrity": "sha512-PUjYB9Mvx0qD9H1QZBwwtY4fLlCLET+Mm9BVqUOtXCaGoXd6u6BE4e/dGFPk2UEKkIcDGrUMSbqkHYvsEuK9NQ==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.11.1.tgz",
+ "integrity": "sha512-8VVlhaY4N+wipgHmSXP+gLM+esms9TEBz13I/J++PbOUJuf2cJlUUTyqMoRVL0xudVKK/8fJgSndRkyidy1m2w==",
"dependencies": {
- "@nuxt/schema": "3.10.3",
- "c12": "^1.9.0",
+ "@nuxt/schema": "3.11.1",
+ "c12": "^1.10.0",
"consola": "^3.2.3",
"defu": "^6.1.4",
"globby": "^14.0.1",
@@ -2801,12 +2705,12 @@
"ignore": "^5.3.1",
"jiti": "^1.21.0",
"knitwork": "^1.0.0",
- "mlly": "^1.6.0",
+ "mlly": "^1.6.1",
"pathe": "^1.1.2",
"pkg-types": "^1.0.3",
"scule": "^1.3.0",
"semver": "^7.6.0",
- "ufo": "^1.4.0",
+ "ufo": "^1.5.2",
"unctx": "^2.3.1",
"unimport": "^3.7.1",
"untyped": "^1.4.2"
@@ -2816,9 +2720,9 @@
}
},
"node_modules/@nuxt/schema": {
- "version": "3.10.3",
- "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.10.3.tgz",
- "integrity": "sha512-a4cYbeskEVBPazgAhvUGkL/j7ho/iPWMK3vCEm6dRMjSqHVEITRosrj0aMfLbRrDpTrMjlRs0ZitxiaUfE/p5Q==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.11.1.tgz",
+ "integrity": "sha512-XyGlJsf3DtkouBCvBHlvjz+xvN4vza3W7pY3YBNMnktxlMQtfFiF3aB3A2NGLmBnJPqD3oY0j7lljraELb5hkg==",
"dependencies": {
"@nuxt/ui-templates": "^1.3.1",
"consola": "^3.2.3",
@@ -2828,7 +2732,7 @@
"pkg-types": "^1.0.3",
"scule": "^1.3.0",
"std-env": "^3.7.0",
- "ufo": "^1.4.0",
+ "ufo": "^1.5.2",
"unimport": "^3.7.1",
"untyped": "^1.4.2"
},
@@ -2870,43 +2774,43 @@
"integrity": "sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA=="
},
"node_modules/@nuxt/vite-builder": {
- "version": "3.10.3",
- "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.10.3.tgz",
- "integrity": "sha512-BqkbrYkEk1AVUJleofbqTRV+ltf2p1CDjGDK78zENPCgrSABlj4F4oK8rze8vmRY5qoH7kMZxgMa2dXVXCp6OA==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.11.1.tgz",
+ "integrity": "sha512-8DVK2Jb9xgfnvTfKr5mL3UDdAIrd3q3F4EmoVsXVKJe8NTt9LW38QdGwGViIQm9wzLDDEo0mgWF+n7WoGEH0xQ==",
"dev": true,
"dependencies": {
- "@nuxt/kit": "3.10.3",
+ "@nuxt/kit": "3.11.1",
"@rollup/plugin-replace": "^5.0.5",
"@vitejs/plugin-vue": "^5.0.4",
"@vitejs/plugin-vue-jsx": "^3.1.0",
- "autoprefixer": "^10.4.17",
+ "autoprefixer": "^10.4.18",
"clear": "^0.1.0",
"consola": "^3.2.3",
- "cssnano": "^6.0.3",
+ "cssnano": "^6.1.0",
"defu": "^6.1.4",
- "esbuild": "^0.20.1",
+ "esbuild": "^0.20.2",
"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.10.2",
+ "h3": "^1.11.1",
"knitwork": "^1.0.0",
- "magic-string": "^0.30.7",
- "mlly": "^1.6.0",
+ "magic-string": "^0.30.8",
+ "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.35",
+ "postcss": "^8.4.36",
"rollup-plugin-visualizer": "^5.12.0",
"std-env": "^3.7.0",
"strip-literal": "^2.0.0",
- "ufo": "^1.4.0",
+ "ufo": "^1.5.2",
"unenv": "^1.9.0",
- "unplugin": "^1.7.1",
- "vite": "^5.1.4",
- "vite-node": "^1.3.1",
+ "unplugin": "^1.10.0",
+ "vite": "^5.1.6",
+ "vite-node": "^1.4.0",
"vite-plugin-checker": "^0.6.4",
"vue-bundle-renderer": "^2.0.0"
},
@@ -3091,17 +2995,17 @@
"@parcel/watcher-win32-x64": "2.4.1"
}
},
- "node_modules/@parcel/watcher-android-arm64": {
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
"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==",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
+ "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
"cpu": [
- "arm64"
+ "x64"
],
"dev": true,
"optional": true,
"os": [
- "android"
+ "linux"
],
"engines": {
"node": ">= 10.0.0"
@@ -3111,17 +3015,17 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/watcher-darwin-arm64": {
+ "node_modules/@parcel/watcher-linux-x64-musl": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
- "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
+ "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
"cpu": [
- "arm64"
+ "x64"
],
"dev": true,
"optional": true,
"os": [
- "darwin"
+ "linux"
],
"engines": {
"node": ">= 10.0.0"
@@ -3131,18 +3035,19 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/watcher-darwin-x64": {
+ "node_modules/@parcel/watcher-wasm": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
- "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
- "cpu": [
- "x64"
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz",
+ "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==",
+ "bundleDependencies": [
+ "napi-wasm"
],
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "dependencies": {
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "napi-wasm": "^1.1.0"
+ },
"engines": {
"node": ">= 10.0.0"
},
@@ -3151,72 +3056,80 @@
"url": "https://opencollective.com/parcel"
}
},
- "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==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": {
+ "version": "1.1.0",
"dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">= 10.0.0"
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "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==",
+ "dependencies": {
+ "@nuxt/kit": "^3.5.0",
+ "pinia": ">=2.1.7"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
+ "url": "https://github.com/sponsors/posva"
}
},
- "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==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
"optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
+ "node": ">=14"
}
},
- "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==",
- "cpu": [
- "arm64"
- ],
+ "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==",
+ "dev": true
+ },
+ "node_modules/@replit/codemirror-indentation-markers": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@replit/codemirror-indentation-markers/-/codemirror-indentation-markers-6.5.0.tgz",
+ "integrity": "sha512-5RgeuQ6erfROi1EVI2X7G4UR+KByjb07jhYMynvpvlrV22JlnARifmKMGEUKy0pKcxBNfwbFqoUlTYHPgyZNlg==",
+ "dev": true,
+ "peerDependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0"
+ }
+ },
+ "node_modules/@resvg/resvg-js": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz",
+ "integrity": "sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
- "node": ">= 10.0.0"
+ "node": ">= 10"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
+ "optionalDependencies": {
+ "@resvg/resvg-js-android-arm-eabi": "2.6.0",
+ "@resvg/resvg-js-android-arm64": "2.6.0",
+ "@resvg/resvg-js-darwin-arm64": "2.6.0",
+ "@resvg/resvg-js-darwin-x64": "2.6.0",
+ "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.0",
+ "@resvg/resvg-js-linux-arm64-gnu": "2.6.0",
+ "@resvg/resvg-js-linux-arm64-musl": "2.6.0",
+ "@resvg/resvg-js-linux-x64-gnu": "2.6.0",
+ "@resvg/resvg-js-linux-x64-musl": "2.6.0",
+ "@resvg/resvg-js-win32-arm64-msvc": "2.6.0",
+ "@resvg/resvg-js-win32-ia32-msvc": "2.6.0",
+ "@resvg/resvg-js-win32-x64-msvc": "2.6.0"
}
},
- "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==",
+ "node_modules/@resvg/resvg-js-linux-x64-gnu": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.0.tgz",
+ "integrity": "sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==",
"cpu": [
- "arm64"
+ "x64"
],
"dev": true,
"optional": true,
@@ -3224,17 +3137,13 @@
"linux"
],
"engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
+ "node": ">= 10"
}
},
- "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==",
+ "node_modules/@resvg/resvg-js-linux-x64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.0.tgz",
+ "integrity": "sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==",
"cpu": [
"x64"
],
@@ -3243,371 +3152,6 @@
"os": [
"linux"
],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "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==",
- "bundleDependencies": [
- "napi-wasm"
- ],
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3",
- "micromatch": "^4.0.5",
- "napi-wasm": "^1.1.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": {
- "version": "1.1.0",
- "dev": true,
- "inBundle": true,
- "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==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "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==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "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==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "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==",
- "dependencies": {
- "@nuxt/kit": "^3.5.0",
- "pinia": ">=2.1.7"
- },
- "funding": {
- "url": "https://github.com/sponsors/posva"
- }
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "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==",
- "dev": true
- },
- "node_modules/@replit/codemirror-indentation-markers": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@replit/codemirror-indentation-markers/-/codemirror-indentation-markers-6.5.0.tgz",
- "integrity": "sha512-5RgeuQ6erfROi1EVI2X7G4UR+KByjb07jhYMynvpvlrV22JlnARifmKMGEUKy0pKcxBNfwbFqoUlTYHPgyZNlg==",
- "dev": true,
- "peerDependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0"
- }
- },
- "node_modules/@resvg/resvg-js": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.0.tgz",
- "integrity": "sha512-Tf3YpbBKcQn991KKcw/vg7vZf98v01seSv6CVxZBbRkL/xyjnoYB6KgrFL6zskT1A4dWC/vg77KyNOW+ePaNlA==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- },
- "optionalDependencies": {
- "@resvg/resvg-js-android-arm-eabi": "2.6.0",
- "@resvg/resvg-js-android-arm64": "2.6.0",
- "@resvg/resvg-js-darwin-arm64": "2.6.0",
- "@resvg/resvg-js-darwin-x64": "2.6.0",
- "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.0",
- "@resvg/resvg-js-linux-arm64-gnu": "2.6.0",
- "@resvg/resvg-js-linux-arm64-musl": "2.6.0",
- "@resvg/resvg-js-linux-x64-gnu": "2.6.0",
- "@resvg/resvg-js-linux-x64-musl": "2.6.0",
- "@resvg/resvg-js-win32-arm64-msvc": "2.6.0",
- "@resvg/resvg-js-win32-ia32-msvc": "2.6.0",
- "@resvg/resvg-js-win32-x64-msvc": "2.6.0"
- }
- },
- "node_modules/@resvg/resvg-js-android-arm-eabi": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.0.tgz",
- "integrity": "sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-android-arm64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.0.tgz",
- "integrity": "sha512-N527f529bjMwYWShZYfBD60dXA4Fux+D695QsHQ93BDYZSHUoOh1CUGUyICevnTxs7VgEl98XpArmUWBZQVMfQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-darwin-arm64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.0.tgz",
- "integrity": "sha512-MabUKLVayEwlPo0mIqAmMt+qESN8LltCvv5+GLgVga1avpUrkxj/fkU1TKm8kQegutUjbP/B0QuMuUr0uhF8ew==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-darwin-x64": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.0.tgz",
- "integrity": "sha512-zrFetdnSw/suXjmyxSjfDV7i61hahv6DDG6kM7BYN2yJ3Es5+BZtqYZTcIWogPJedYKmzN1YTMWGd/3f0ubFiA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.0.tgz",
- "integrity": "sha512-sH4gxXt7v7dGwjGyzLwn7SFGvwZG6DQqLaZ11MmzbCwd9Zosy1TnmrMJfn6TJ7RHezmQMgBPi18bl55FZ1AT4A==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-linux-arm64-gnu": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.0.tgz",
- "integrity": "sha512-fCyMncqCJtrlANADIduYF4IfnWQ295UKib7DAxFXQhBsM9PLDTpizr0qemZcCNadcwSVHnAIzL4tliZhCM8P6A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-linux-arm64-musl": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.0.tgz",
- "integrity": "sha512-ouLjTgBQHQyxLht4FdMPTvuY8xzJigM9EM2Tlu0llWkN1mKyTQrvYWi6TA6XnKdzDJHy7ZLpWpjZi7F5+Pg+Vg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-linux-x64-gnu": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.0.tgz",
- "integrity": "sha512-n3zC8DWsvxC1AwxpKFclIPapDFibs5XdIRoV/mcIlxlh0vseW1F49b97F33BtJQRmlntsqqN6GMMqx8byB7B+Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-linux-x64-musl": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.0.tgz",
- "integrity": "sha512-n4tasK1HOlAxdTEROgYA1aCfsEKk0UOFDNd/AQTTZlTmCbHKXPq+O8npaaKlwXquxlVK8vrkcWbksbiGqbCAcw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-win32-arm64-msvc": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.0.tgz",
- "integrity": "sha512-X2+EoBJFwDI5LDVb51Sk7ldnVLitMGr9WwU/i21i3fAeAXZb3hM16k67DeTy16OYkT2dk/RfU1tP1wG+rWbz2Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-win32-ia32-msvc": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.0.tgz",
- "integrity": "sha512-L7oevWjQoUgK5W1fCKn0euSVemhDXVhrjtwqpc7MwBKKimYeiOshO1Li1pa8bBt5PESahenhWgdB6lav9O0fEg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@resvg/resvg-js-win32-x64-msvc": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.0.tgz",
- "integrity": "sha512-8lJlghb+Unki5AyKgsnFbRJwkEj9r1NpwyuBG8yEJiG1W9eEGl03R3I7bsVa3haof/3J1NlWf0rzSa1G++A2iw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
"engines": {
"node": ">= 10"
}
@@ -3744,174 +3288,70 @@
"optional": true
}
}
- },
- "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==",
- "dev": true,
- "dependencies": {
- "@rollup/pluginutils": "^5.0.1",
- "magic-string": "^0.30.3"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
- }
- },
- "node_modules/@rollup/plugin-terser": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
- "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
- "dev": true,
- "dependencies": {
- "serialize-javascript": "^6.0.1",
- "smob": "^1.0.0",
- "terser": "^5.17.4"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.0.0||^3.0.0||^4.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
- }
- },
- "node_modules/@rollup/pluginutils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
- "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
- }
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz",
- "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz",
- "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz",
- "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz",
- "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz",
- "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz",
- "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz",
- "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==",
- "cpu": [
- "arm64"
- ],
+ },
+ "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==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "magic-string": "^0.30.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
},
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz",
- "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==",
- "cpu": [
- "riscv64"
- ],
+ "node_modules/@rollup/plugin-terser": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
+ "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
+ "dependencies": {
+ "serialize-javascript": "^6.0.1",
+ "smob": "^1.0.0",
+ "terser": "^5.17.4"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.13.0",
@@ -3939,45 +3379,6 @@
"linux"
]
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz",
- "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz",
- "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz",
- "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ]
- },
"node_modules/@rushstack/eslint-patch": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
@@ -4576,13 +3977,38 @@
}
},
"node_modules/@unhead/dom": {
- "version": "1.8.13",
- "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.13.tgz",
- "integrity": "sha512-BWqtatmrcrT+rN/FBZ/Il7mW0TuPlS4bXrsZewAVanOPU3ahr+sHAIUDJmDjziBjSUsO5wLOEYXA+4t08AZnrQ==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.9.2.tgz",
+ "integrity": "sha512-yREmUAfYJsPV9qR3G85MkdH+FdvsHf8AIJRm7FgQidrPxFr8tCICdID3+jXULz3oq8pFye1tAyHlBHXeq3SIpA==",
"dev": true,
"dependencies": {
- "@unhead/schema": "1.8.13",
- "@unhead/shared": "1.8.13"
+ "@unhead/schema": "1.9.2",
+ "@unhead/shared": "1.9.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/dom/node_modules/@unhead/schema": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+ "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+ "dev": true,
+ "dependencies": {
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/dom/node_modules/@unhead/shared": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+ "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+ "dev": true,
+ "dependencies": {
+ "@unhead/schema": "1.9.2"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
@@ -4630,28 +4056,53 @@
}
},
"node_modules/@unhead/ssr": {
- "version": "1.8.13",
- "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.8.13.tgz",
- "integrity": "sha512-4GzpVlwJn8HRa6YE+9UuABf3XSe1WvcqLOWszCJiD3oUaFCZ2jqrVXS4v/jhJ6bAm7LTHrfT7Znyw4nQG57/XQ==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.9.2.tgz",
+ "integrity": "sha512-XKNAK3A67ZZpNq8arTyUj7brmTOYH3PJrVSx546MCQQvCuP6U3brWyIPy12+a/XiAxr4z62vd2IHCZya8OrZrQ==",
"dev": true,
"dependencies": {
- "@unhead/schema": "1.8.13",
- "@unhead/shared": "1.8.13"
+ "@unhead/schema": "1.9.2",
+ "@unhead/shared": "1.9.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/ssr/node_modules/@unhead/schema": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+ "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+ "dev": true,
+ "dependencies": {
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/ssr/node_modules/@unhead/shared": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+ "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+ "dev": true,
+ "dependencies": {
+ "@unhead/schema": "1.9.2"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
"node_modules/@unhead/vue": {
- "version": "1.8.13",
- "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.13.tgz",
- "integrity": "sha512-2CIwSeadfJxFfY44nz7U+w/F7lg646aw2t8G58P4A08t6KtPRoAVA0cR0iX+yqQEZIAKYEoaNINv3p/GMxyvBw==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.9.2.tgz",
+ "integrity": "sha512-wp0eOyb7tu2isSt1IiDGm194W/8DVL3cXZd8uvhVlhS9yPL3TzwrSNbvwx95fhfrGuXFraoLjp4SpZ2BCszFsg==",
"dev": true,
"dependencies": {
- "@unhead/schema": "1.8.13",
- "@unhead/shared": "1.8.13",
+ "@unhead/schema": "1.9.2",
+ "@unhead/shared": "1.9.2",
"hookable": "^5.5.3",
- "unhead": "1.8.13"
+ "unhead": "1.9.2"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
@@ -4660,6 +4111,31 @@
"vue": ">=2.7 || >=3"
}
},
+ "node_modules/@unhead/vue/node_modules/@unhead/schema": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+ "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+ "dev": true,
+ "dependencies": {
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/vue/node_modules/@unhead/shared": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+ "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+ "dev": true,
+ "dependencies": {
+ "@unhead/schema": "1.9.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
"node_modules/@unocss/astro": {
"version": "0.58.5",
"resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.58.5.tgz",
@@ -5728,9 +5204,9 @@
}
},
"node_modules/acorn-import-attributes": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.2.tgz",
- "integrity": "sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==",
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.4.tgz",
+ "integrity": "sha512-dNIX/5UEnZvVL94dV2scl4VIooK36D8AteP4xiz7cPKhDbhLhSuWkzG580g+Q7TXJklp+Z21SiaK7/HpLO84Qg==",
"dev": true,
"peerDependencies": {
"acorn": "^8"
@@ -6100,9 +5576,9 @@
"dev": true
},
"node_modules/autoprefixer": {
- "version": "10.4.18",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz",
- "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==",
+ "version": "10.4.19",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
+ "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
"dev": true,
"funding": [
{
@@ -6120,7 +5596,7 @@
],
"dependencies": {
"browserslist": "^4.23.0",
- "caniuse-lite": "^1.0.30001591",
+ "caniuse-lite": "^1.0.30001599",
"fraction.js": "^4.3.7",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@@ -6168,9 +5644,9 @@
"dev": true
},
"node_modules/bare-events": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz",
- "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
+ "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
"dev": true,
"optional": true
},
@@ -6498,9 +5974,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001597",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz",
- "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==",
+ "version": "1.0.30001600",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz",
+ "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==",
"funding": [
{
"type": "opencollective",
@@ -7150,9 +6626,9 @@
}
},
"node_modules/css-declaration-sorter": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz",
- "integrity": "sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
+ "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
"dev": true,
"engines": {
"node": "^14 || ^16 || >=18"
@@ -7226,12 +6702,12 @@
}
},
"node_modules/cssnano": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.0.tgz",
- "integrity": "sha512-e2v4w/t3OFM6HTuSweI4RSdABaqgVgHlJp5FZrQsopHnKKHLFIvK2D3C4kHWeFIycN/1L1J5VIrg5KlDzn3r/g==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz",
+ "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==",
"dev": true,
"dependencies": {
- "cssnano-preset-default": "^6.1.0",
+ "cssnano-preset-default": "^6.1.2",
"lilconfig": "^3.1.1"
},
"engines": {
@@ -7246,13 +6722,13 @@
}
},
"node_modules/cssnano-preset-default": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.0.tgz",
- "integrity": "sha512-4DUXZoDj+PI3fRl3MqMjl9DwLGjcsFP4qt+92nLUcN1RGfw2TY+GwNoG2B38Usu1BrcTs8j9pxNfSusmvtSjfg==",
+ "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==",
"dev": true,
"dependencies": {
"browserslist": "^4.23.0",
- "css-declaration-sorter": "^7.1.1",
+ "css-declaration-sorter": "^7.2.0",
"cssnano-utils": "^4.0.2",
"postcss-calc": "^9.0.1",
"postcss-colormin": "^6.1.0",
@@ -7261,12 +6737,12 @@
"postcss-discard-duplicates": "^6.0.3",
"postcss-discard-empty": "^6.0.3",
"postcss-discard-overridden": "^6.0.2",
- "postcss-merge-longhand": "^6.0.4",
- "postcss-merge-rules": "^6.1.0",
- "postcss-minify-font-values": "^6.0.3",
+ "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.3",
+ "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",
@@ -7280,7 +6756,7 @@
"postcss-reduce-initial": "^6.1.0",
"postcss-reduce-transforms": "^6.0.2",
"postcss-svgo": "^6.0.3",
- "postcss-unique-selectors": "^6.0.3"
+ "postcss-unique-selectors": "^6.0.4"
},
"engines": {
"node": "^14 || ^16 || >=18.0"
@@ -8289,9 +7765,9 @@
"peer": true
},
"node_modules/esbuild": {
- "version": "0.20.1",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz",
- "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
"dev": true,
"hasInstallScript": true,
"bin": {
@@ -8301,29 +7777,29 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.20.1",
- "@esbuild/android-arm": "0.20.1",
- "@esbuild/android-arm64": "0.20.1",
- "@esbuild/android-x64": "0.20.1",
- "@esbuild/darwin-arm64": "0.20.1",
- "@esbuild/darwin-x64": "0.20.1",
- "@esbuild/freebsd-arm64": "0.20.1",
- "@esbuild/freebsd-x64": "0.20.1",
- "@esbuild/linux-arm": "0.20.1",
- "@esbuild/linux-arm64": "0.20.1",
- "@esbuild/linux-ia32": "0.20.1",
- "@esbuild/linux-loong64": "0.20.1",
- "@esbuild/linux-mips64el": "0.20.1",
- "@esbuild/linux-ppc64": "0.20.1",
- "@esbuild/linux-riscv64": "0.20.1",
- "@esbuild/linux-s390x": "0.20.1",
- "@esbuild/linux-x64": "0.20.1",
- "@esbuild/netbsd-x64": "0.20.1",
- "@esbuild/openbsd-x64": "0.20.1",
- "@esbuild/sunos-x64": "0.20.1",
- "@esbuild/win32-arm64": "0.20.1",
- "@esbuild/win32-ia32": "0.20.1",
- "@esbuild/win32-x64": "0.20.1"
+ "@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"
}
},
"node_modules/escalade": {
@@ -13421,9 +12897,9 @@
"peer": true
},
"node_modules/nitropack": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.9.3.tgz",
- "integrity": "sha512-k3wXlhxmTNkkFXnVyRYJ6CCdZmvlqjYJ4oaL8o9uTKIjg7A1udAle+3cVDxUWi2r9owwEysAP2+quNsAujZyTg==",
+ "version": "2.9.5",
+ "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.9.5.tgz",
+ "integrity": "sha512-ClanSILi9O6HX95QNIC+TwxojpRpOSn9n3e3wmHExAHhLN5HdnHGmHN4LwtJdE2p91nse3kDULOTR7k1xRVJ/g==",
"dev": true,
"dependencies": {
"@cloudflare/kv-asset-handler": "^0.3.1",
@@ -13438,7 +12914,7 @@
"@rollup/pluginutils": "^5.1.0",
"@types/http-proxy": "^1.17.14",
"@vercel/nft": "^0.26.4",
- "archiver": "^7.0.0",
+ "archiver": "^7.0.1",
"c12": "^1.10.0",
"chalk": "^5.3.0",
"chokidar": "^3.6.0",
@@ -13451,7 +12927,7 @@
"defu": "^6.1.4",
"destr": "^2.0.3",
"dot-prop": "^8.0.2",
- "esbuild": "^0.20.1",
+ "esbuild": "^0.20.2",
"escape-string-regexp": "^5.0.0",
"etag": "^1.8.1",
"fs-extra": "^11.2.0",
@@ -13460,6 +12936,7 @@
"h3": "^1.11.1",
"hookable": "^5.5.3",
"httpxy": "^0.1.5",
+ "ioredis": "^5.3.2",
"is-primitive": "^3.0.1",
"jiti": "^1.21.0",
"klona": "^2.0.6",
@@ -13469,29 +12946,29 @@
"mime": "^4.0.1",
"mlly": "^1.6.1",
"mri": "^1.2.0",
- "node-fetch-native": "^1.6.2",
- "ofetch": "^1.3.3",
+ "node-fetch-native": "^1.6.4",
+ "ofetch": "^1.3.4",
"ohash": "^1.1.3",
- "openapi-typescript": "^6.7.4",
+ "openapi-typescript": "^6.7.5",
"pathe": "^1.1.2",
"perfect-debounce": "^1.0.0",
"pkg-types": "^1.0.3",
"pretty-bytes": "^6.1.1",
- "radix3": "^1.1.1",
- "rollup": "^4.12.1",
+ "radix3": "^1.1.2",
+ "rollup": "^4.13.0",
"rollup-plugin-visualizer": "^5.12.0",
"scule": "^1.3.0",
"semver": "^7.6.0",
"serve-placeholder": "^2.0.1",
"serve-static": "^1.15.0",
"std-env": "^3.7.0",
- "ufo": "^1.4.0",
+ "ufo": "^1.5.3",
"uncrypto": "^0.1.3",
"unctx": "^2.3.1",
"unenv": "^1.9.0",
"unimport": "^3.7.1",
- "unstorage": "^1.10.1",
- "unwasm": "^0.3.7"
+ "unstorage": "^1.10.2",
+ "unwasm": "^0.3.8"
},
"bin": {
"nitro": "dist/cli/index.mjs",
@@ -13568,9 +13045,9 @@
}
},
"node_modules/node-fetch-native": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz",
- "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w=="
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
+ "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ=="
},
"node_modules/node-forge": {
"version": "1.3.1",
@@ -13901,9 +13378,9 @@
}
},
"node_modules/nuxi": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.10.1.tgz",
- "integrity": "sha512-ZNt858+FOZDIiKKFJkXO7uJAnALytDdn1XbLgtZAqbtWNMayHbOnWcnxh+WSOE4H9uOi2+loWXEqKElmNWLgcQ==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.11.1.tgz",
+ "integrity": "sha512-AW71TpxRHNg8MplQVju9tEFvXPvX42e0wPYknutSStDuAjV99vWTWYed4jxr/grk2FtKAuv2KvdJxcn2W59qyg==",
"dev": true,
"bin": {
"nuxi": "bin/nuxi.mjs",
@@ -13912,70 +13389,71 @@
"nuxt-cli": "bin/nuxi.mjs"
},
"engines": {
- "node": "^14.18.0 || >=16.10.0"
+ "node": "^16.10.0 || >=18.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
}
},
"node_modules/nuxt": {
- "version": "3.10.3",
- "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.10.3.tgz",
- "integrity": "sha512-NchGNiiz9g/ErJAb462W/lpX2NqcXYb9hugySKWvLXNdrjeAPiJ2/7mhgwUSiZA9MpjuQg3saiEajr1zlRIOCg==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.11.1.tgz",
+ "integrity": "sha512-CsncE1dxP0cmOYT+PBdjMD0bOK8eZizG5tgNWUOJAAAtU45sO38maoBumYYL2kUpT/SC/dMP+831DAcVPvi9pQ==",
"dev": true,
"dependencies": {
"@nuxt/devalue": "^2.0.2",
"@nuxt/devtools": "^1.0.8",
- "@nuxt/kit": "3.10.3",
- "@nuxt/schema": "3.10.3",
+ "@nuxt/kit": "3.11.1",
+ "@nuxt/schema": "3.11.1",
"@nuxt/telemetry": "^2.5.3",
"@nuxt/ui-templates": "^1.3.1",
- "@nuxt/vite-builder": "3.10.3",
- "@unhead/dom": "^1.8.10",
- "@unhead/ssr": "^1.8.10",
- "@unhead/vue": "^1.8.10",
- "@vue/shared": "^3.4.19",
+ "@nuxt/vite-builder": "3.11.1",
+ "@unhead/dom": "^1.8.20",
+ "@unhead/ssr": "^1.8.20",
+ "@unhead/vue": "^1.8.20",
+ "@vue/shared": "^3.4.21",
"acorn": "8.11.3",
- "c12": "^1.9.0",
+ "c12": "^1.10.0",
"chokidar": "^3.6.0",
"cookie-es": "^1.0.0",
"defu": "^6.1.4",
"destr": "^2.0.3",
"devalue": "^4.3.2",
- "esbuild": "^0.20.1",
+ "esbuild": "^0.20.2",
"escape-string-regexp": "^5.0.0",
"estree-walker": "^3.0.3",
"fs-extra": "^11.2.0",
"globby": "^14.0.1",
- "h3": "^1.10.2",
+ "h3": "^1.11.1",
"hookable": "^5.5.3",
"jiti": "^1.21.0",
"klona": "^2.0.6",
"knitwork": "^1.0.0",
- "magic-string": "^0.30.7",
- "mlly": "^1.6.0",
- "nitropack": "^2.8.1",
- "nuxi": "^3.10.1",
- "nypm": "^0.3.6",
+ "magic-string": "^0.30.8",
+ "mlly": "^1.6.1",
+ "nitropack": "^2.9.4",
+ "nuxi": "^3.11.0",
+ "nypm": "^0.3.8",
"ofetch": "^1.3.3",
"ohash": "^1.1.3",
"pathe": "^1.1.2",
"perfect-debounce": "^1.0.0",
"pkg-types": "^1.0.3",
- "radix3": "^1.1.0",
+ "radix3": "^1.1.1",
"scule": "^1.3.0",
"std-env": "^3.7.0",
"strip-literal": "^2.0.0",
- "ufo": "^1.4.0",
+ "ufo": "^1.5.2",
"ultrahtml": "^1.5.3",
"uncrypto": "^0.1.3",
"unctx": "^2.3.1",
"unenv": "^1.9.0",
"unimport": "^3.7.1",
- "unplugin": "^1.7.1",
+ "unplugin": "^1.10.0",
"unplugin-vue-router": "^0.7.0",
+ "unstorage": "^1.10.2",
"untyped": "^1.4.2",
- "vue": "^3.4.19",
+ "vue": "^3.4.21",
"vue-bundle-renderer": "^2.0.0",
"vue-devtools-stub": "^0.1.0",
"vue-router": "^4.3.0"
@@ -14516,14 +13994,14 @@
}
},
"node_modules/ofetch": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz",
- "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==",
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz",
+ "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==",
"dev": true,
"dependencies": {
- "destr": "^2.0.1",
- "node-fetch-native": "^1.4.0",
- "ufo": "^1.3.0"
+ "destr": "^2.0.3",
+ "node-fetch-native": "^1.6.3",
+ "ufo": "^1.5.3"
}
},
"node_modules/ohash": {
@@ -14611,9 +14089,9 @@
}
},
"node_modules/openapi-typescript": {
- "version": "6.7.4",
- "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.4.tgz",
- "integrity": "sha512-EZyeW9Wy7UDCKv0iYmKrq2pVZtquXiD/YHiUClAKqiMi42nodx/EQH11K6fLqjt1IZlJmVokrAsExsBMM2RROQ==",
+ "version": "6.7.5",
+ "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.5.tgz",
+ "integrity": "sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==",
"dev": true,
"dependencies": {
"ansi-colors": "^4.1.3",
@@ -15042,9 +14520,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.35",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
- "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
"funding": [
{
"type": "opencollective",
@@ -15062,7 +14540,7 @@
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
+ "source-map-js": "^1.2.0"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -15167,13 +14645,13 @@
}
},
"node_modules/postcss-merge-longhand": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.4.tgz",
- "integrity": "sha512-vAfWGcxUUGlFiPM3nDMZA+/Yo9sbpc3JNkcYZez8FfJDv41Dh7tAgA3QGVTocaHCZZL6aXPXPOaBMJsjujodsA==",
+ "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==",
"dev": true,
"dependencies": {
"postcss-value-parser": "^4.2.0",
- "stylehacks": "^6.1.0"
+ "stylehacks": "^6.1.1"
},
"engines": {
"node": "^14 || ^16 || >=18.0"
@@ -15183,15 +14661,15 @@
}
},
"node_modules/postcss-merge-rules": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.0.tgz",
- "integrity": "sha512-lER+W3Gr6XOvxOYk1Vi/6UsAgKMg6MDBthmvbNqi2XxAk/r9XfhdYZSigfWjuWWn3zYw2wLelvtM8XuAEFqRkA==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz",
+ "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==",
"dev": true,
"dependencies": {
"browserslist": "^4.23.0",
"caniuse-api": "^3.0.0",
"cssnano-utils": "^4.0.2",
- "postcss-selector-parser": "^6.0.15"
+ "postcss-selector-parser": "^6.0.16"
},
"engines": {
"node": "^14 || ^16 || >=18.0"
@@ -15201,9 +14679,9 @@
}
},
"node_modules/postcss-minify-font-values": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.3.tgz",
- "integrity": "sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==",
+ "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==",
"dev": true,
"dependencies": {
"postcss-value-parser": "^4.2.0"
@@ -15250,12 +14728,12 @@
}
},
"node_modules/postcss-minify-selectors": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.3.tgz",
- "integrity": "sha512-IcV7ZQJcaXyhx4UBpWZMsinGs2NmiUC60rJSkyvjPCPqhNjVGsrJUM+QhAtCaikZ0w0/AbZuH4wVvF/YMuMhvA==",
+ "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==",
"dev": true,
"dependencies": {
- "postcss-selector-parser": "^6.0.15"
+ "postcss-selector-parser": "^6.0.16"
},
"engines": {
"node": "^14 || ^16 || >=18.0"
@@ -15445,9 +14923,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.15",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
- "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "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==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -15474,12 +14952,12 @@
}
},
"node_modules/postcss-unique-selectors": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.3.tgz",
- "integrity": "sha512-NFXbYr8qdmCr/AFceaEfdcsKGCvWTeGO6QVC9h2GvtWgj0/0dklKQcaMMVzs6tr8bY+ase8hOtHW8OBTTRvS8A==",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz",
+ "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==",
"dev": true,
"dependencies": {
- "postcss-selector-parser": "^6.0.15"
+ "postcss-selector-parser": "^6.0.16"
},
"engines": {
"node": "^14 || ^16 || >=18.0"
@@ -15686,9 +15164,9 @@
"dev": true
},
"node_modules/radix3": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.1.tgz",
- "integrity": "sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
+ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
"dev": true
},
"node_modules/randombytes": {
@@ -16963,9 +16441,9 @@
}
},
"node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"engines": {
"node": ">=0.10.0"
}
@@ -17256,13 +16734,13 @@
"dev": true
},
"node_modules/stylehacks": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.0.tgz",
- "integrity": "sha512-ETErsPFgwlfYZ/CSjMO2Ddf+TsnkCVPBPaoB99Ro8WMAxf7cglzmFsRBhRmKObFjibtcvlNxFFPHuyr3sNlNUQ==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz",
+ "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==",
"dev": true,
"dependencies": {
"browserslist": "^4.23.0",
- "postcss-selector-parser": "^6.0.15"
+ "postcss-selector-parser": "^6.0.16"
},
"engines": {
"node": "^14 || ^16 || >=18.0"
@@ -17694,9 +17172,9 @@
}
},
"node_modules/ufo": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz",
- "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ=="
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz",
+ "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw=="
},
"node_modules/ultrahtml": {
"version": "1.5.3",
@@ -17788,20 +17266,45 @@
}
},
"node_modules/unhead": {
- "version": "1.8.13",
- "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.13.tgz",
- "integrity": "sha512-VL1eOXc1U0zI6XO2JJQ98tywcEW9cM6tfrmuNcltOKSB7Xg3isVXFSf2bEbO4XPUjg8D5Uy3Q3Zi9cN9XSiTyA==",
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.9.2.tgz",
+ "integrity": "sha512-CveP8bjL8gUJnZ1NqcMU1roe+VuM14wr0cJfNek/LCSI2i968mHDD5tbDXNcMSAVOhffKj6WkTngTUKNOZxA7g==",
"dev": true,
"dependencies": {
- "@unhead/dom": "1.8.13",
- "@unhead/schema": "1.8.13",
- "@unhead/shared": "1.8.13",
+ "@unhead/dom": "1.9.2",
+ "@unhead/schema": "1.9.2",
+ "@unhead/shared": "1.9.2",
"hookable": "^5.5.3"
},
"funding": {
"url": "https://github.com/sponsors/harlan-zw"
}
},
+ "node_modules/unhead/node_modules/@unhead/schema": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.2.tgz",
+ "integrity": "sha512-NRCAcuWtD2WCL8u3qR1yn41JpDB+ExjBnSLAuJseOD9+XJjQBqPRgx/bhxZ3Dx6vrrCnCF+SvKr+W1pa+3mWdA==",
+ "dev": true,
+ "dependencies": {
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/unhead/node_modules/@unhead/shared": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.2.tgz",
+ "integrity": "sha512-jXQ4vK9wXf66hflOSBUXQKVsOLJrYVSOknDH+9PTwz5CIgJv/Y/o/NkRCJjyf5W7qFf605Te28lbTeLumT+BeQ==",
+ "dev": true,
+ "dependencies": {
+ "@unhead/schema": "1.9.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
"node_modules/unicode-emoji-modifier-base": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz",
@@ -18051,9 +17554,9 @@
}
},
"node_modules/unplugin": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.9.0.tgz",
- "integrity": "sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz",
+ "integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==",
"dependencies": {
"acorn": "^8.11.3",
"chokidar": "^3.6.0",
@@ -18124,36 +17627,36 @@
}
},
"node_modules/unstorage": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz",
- "integrity": "sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==",
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz",
+ "integrity": "sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==",
"dev": true,
"dependencies": {
"anymatch": "^3.1.3",
- "chokidar": "^3.5.3",
- "destr": "^2.0.2",
- "h3": "^1.8.2",
- "ioredis": "^5.3.2",
- "listhen": "^1.5.5",
- "lru-cache": "^10.0.2",
+ "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.4.1",
+ "node-fetch-native": "^1.6.2",
"ofetch": "^1.3.3",
- "ufo": "^1.3.1"
+ "ufo": "^1.4.0"
},
"peerDependencies": {
- "@azure/app-configuration": "^1.4.1",
+ "@azure/app-configuration": "^1.5.0",
"@azure/cosmos": "^4.0.0",
"@azure/data-tables": "^13.2.2",
- "@azure/identity": "^3.3.2",
- "@azure/keyvault-secrets": "^4.7.0",
- "@azure/storage-blob": "^12.16.0",
- "@capacitor/preferences": "^5.0.6",
- "@netlify/blobs": "^6.2.0",
- "@planetscale/database": "^1.11.0",
- "@upstash/redis": "^1.23.4",
- "@vercel/kv": "^0.2.3",
- "idb-keyval": "^6.2.1"
+ "@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",
+ "@vercel/kv": "^1.0.1",
+ "idb-keyval": "^6.2.1",
+ "ioredis": "^5.3.2"
},
"peerDependenciesMeta": {
"@azure/app-configuration": {
@@ -18191,6 +17694,9 @@
},
"idb-keyval": {
"optional": true
+ },
+ "ioredis": {
+ "optional": true
}
}
},
@@ -18235,16 +17741,17 @@
}
},
"node_modules/unwasm": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.3.7.tgz",
- "integrity": "sha512-+s4iWvHHYnLuwNo+9mqVFLBmBzGc3gIuzkVZ8fdMN9K/kWopCnfaUVnDagd2OX3It5nRR5EenI5nSQb8FOd0fA==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.3.8.tgz",
+ "integrity": "sha512-nIJQXxGl/gTUp5dZkSc8jbxAqSOa9Vv4jjSZXNI6OK0JXdvW3SQUHR+KY66rjI0W//km59jivGgd5TCvBUWsnA==",
"dev": true,
"dependencies": {
- "magic-string": "^0.30.5",
- "mlly": "^1.5.0",
+ "knitwork": "^1.0.0",
+ "magic-string": "^0.30.8",
+ "mlly": "^1.6.1",
"pathe": "^1.1.2",
"pkg-types": "^1.0.3",
- "unplugin": "^1.6.0"
+ "unplugin": "^1.9.0"
}
},
"node_modules/upath": {
@@ -18547,9 +18054,9 @@
}
},
"node_modules/vite-node": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.3.1.tgz",
- "integrity": "sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.4.0.tgz",
+ "integrity": "sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==",
"dev": true,
"dependencies": {
"cac": "^6.7.14",
diff --git a/package.json b/package.json
index 05c5aa35c0d03aa75bd08fde7b3cd7df2c9fdbde..e9bcee5d0ac62736490a415c5c1b6ac9a888b20f 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"@unocss/preset-icons": "^0.58.3",
"@vueuse/core": "^10.7.1",
"@vueuse/nuxt": "^10.7.1",
- "nuxt": "^3.9.1",
+ "nuxt": "^3.11.1",
"nuxt-meilisearch": "^1.1.0",
"vuetify-nuxt-module": "^0.9.0"
},
diff --git a/packages/df-wiki-cli/data/test/refseq.csv b/packages/df-wiki-cli/data/test/refseq.csv
new file mode 100644
index 0000000000000000000000000000000000000000..63cae96a82b258d253725663ae0d4de7cf6a0d5f
--- /dev/null
+++ b/packages/df-wiki-cli/data/test/refseq.csv
@@ -0,0 +1,19 @@
+sys_id,Assembly,replicon,type,subtype,sys_beg,sys_end,protein_in_syst,genes_count,name_of_profiles_in_sys,accession_in_sys,Superkingdom,phylum,class,order,family,genus,species
+GCF_001602115_NZ_CP014352_AbiE_1,GCF_001602115.1,NZ_CP014352,AbiE,AbiE,GCF_001602115.1_NZ_CP014352_01750,GCF_001602115.1_NZ_CP014352_01751,"GCF_001602115.1_NZ_CP014352_01750, GCF_001602115.1_NZ_CP014352_01751",2.0,"AbiEii__AbiEii, AbiEii__AbiEi_1","WP_062819585.1, WP_062819586.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_Thoeris_II_1,GCF_001602115.1,NZ_CP014352,Thoeris,Thoeris_II,GCF_001602115.1_NZ_CP014352_00483,GCF_001602115.1_NZ_CP014352_00484,"GCF_001602115.1_NZ_CP014352_00483, GCF_001602115.1_NZ_CP014352_00484",2.0,"Thoeris__ThsB_Global, Thoeris_II__ThsA_new_petit","WP_062818945.1, WP_082815879.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_IIG_5,GCF_001602115.1,NZ_CP014352,RM,RM_Type_IIG,GCF_001602115.1_NZ_CP014352_00058,GCF_001602115.1_NZ_CP014352_00058,GCF_001602115.1_NZ_CP014352_00058,1.0,RM_Type_IIG__Type_IIG,WP_062818741.1,Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_I_1,GCF_001602115.1,NZ_CP014352,RM,RM_Type_I,GCF_001602115.1_NZ_CP014352_00060,GCF_001602115.1_NZ_CP014352_00062,"GCF_001602115.1_NZ_CP014352_00060, GCF_001602115.1_NZ_CP014352_00061, GCF_001602115.1_NZ_CP014352_00062",3.0,"RM__Type_I_REases, RM__Type_I_S, RM__Type_I_MTases","WP_062818743.1, WP_062818744.1, WP_062818745.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_IIG_6,GCF_001602115.1,NZ_CP014352,RM,RM_Type_IIG,GCF_001602115.1_NZ_CP014352_00069,GCF_001602115.1_NZ_CP014352_00069,GCF_001602115.1_NZ_CP014352_00069,1.0,RM_Type_IIG__Type_IIG,WP_062818749.1,Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_I_2,GCF_001602115.1,NZ_CP014352,RM,RM_Type_I,GCF_001602115.1_NZ_CP014352_00475,GCF_001602115.1_NZ_CP014352_00477,"GCF_001602115.1_NZ_CP014352_00475, GCF_001602115.1_NZ_CP014352_00476, GCF_001602115.1_NZ_CP014352_00477",3.0,"RM__Type_I_MTases, RM__Type_I_S, RM__Type_I_REases","WP_062818938.1, WP_082815877.1, WP_062818940.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_I_3,GCF_001602115.1,NZ_CP014352,RM,RM_Type_I,GCF_001602115.1_NZ_CP014352_02756,GCF_001602115.1_NZ_CP014352_02758,"GCF_001602115.1_NZ_CP014352_02756, GCF_001602115.1_NZ_CP014352_02757, GCF_001602115.1_NZ_CP014352_02758",3.0,"RM__Type_I_REases, RM__Type_I_S, RM__Type_I_MTases","WP_062820191.1, WP_062820192.1, WP_062820839.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_IIG_7,GCF_001602115.1,NZ_CP014352,RM,RM_Type_IIG,GCF_001602115.1_NZ_CP014352_03005,GCF_001602115.1_NZ_CP014352_03005,GCF_001602115.1_NZ_CP014352_03005,1.0,RM_Type_IIG__Type_IIG,WP_198401420.1,Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_I_4,GCF_001602115.1,NZ_CP014352,RM,RM_Type_I,GCF_001602115.1_NZ_CP014352_03420,GCF_001602115.1_NZ_CP014352_03422,"GCF_001602115.1_NZ_CP014352_03420, GCF_001602115.1_NZ_CP014352_03421, GCF_001602115.1_NZ_CP014352_03422",3.0,"RM__Type_I_REases, RM__Type_I_S, RM__Type_I_MTases","WP_062818743.1, WP_062818744.1, WP_062818745.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_RM_Type_IIG_8,GCF_001602115.1,NZ_CP014352,RM,RM_Type_IIG,GCF_001602115.1_NZ_CP014352_03427,GCF_001602115.1_NZ_CP014352_03427,GCF_001602115.1_NZ_CP014352_03427,1.0,RM_Type_IIG__Type_IIG,WP_157773967.1,Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014353,GCF_001602115.1,NZ_CP014353,No system found,,,,,,,,Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_001602115_NZ_CP014352_CAS_Class1-Subtype-I-G_1,GCF_001602115.1,NZ_CP014352,Cas,CAS_Class1-Subtype-I-G,GCF_001602115.1_NZ_CP014352_01614,GCF_001602115.1_NZ_CP014352_01620,"GCF_001602115_NZ_CP014352_01614, GCF_001602115_NZ_CP014352_01615, GCF_001602115_NZ_CP014352_01616, GCF_001602115_NZ_CP014352_01617, GCF_001602115_NZ_CP014352_01618, GCF_001602115_NZ_CP014352_01619, GCF_001602115_NZ_CP014352_01620",7.0,"DEDDh_I_II_III_IV_V_VI_1, csb1gr7_I-G_1, csb2gr5_I-G_1, cas3_I-G_3, csb3_I-G_1, cas1_I_II_III_IV_V_VI_1, cas2_I_II_III_IV_V_VI_3","WP_198401461.1, WP_062819507.1, WP_062819508.1, WP_062819509.1, WP_062819510.1, WP_062819511.1, WP_062819512.1",Bacteria,Actinomycetota,Actinomycetes,Propionibacteriales,Propionibacteriaceae,Acidipropionibacterium,Acidipropionibacterium acidipropionici
+GCF_000830055_NZ_CP010781_Gabija_1,GCF_000830055.1,NZ_CP010781,Gabija,Gabija,GCF_000830055.1_NZ_CP010781_01480,GCF_000830055.1_NZ_CP010781_01481,"GCF_000830055.1_NZ_CP010781_01480, GCF_000830055.1_NZ_CP010781_01481",2.0,"Gabija__GajA, Gabija__GajB_2","WP_005115822.1, WP_000073989.1",Bacteria,Pseudomonadota,Gammaproteobacteria,Moraxellales,Moraxellaceae,Acinetobacter,Acinetobacter baumannii
+GCF_000830055_NZ_CP010781_Gao_Qat_1,GCF_000830055.1,NZ_CP010781,Gao_Qat,Gao_Qat,GCF_000830055.1_NZ_CP010781_00952,GCF_000830055.1_NZ_CP010781_00955,"GCF_000830055.1_NZ_CP010781_00952, GCF_000830055.1_NZ_CP010781_00953, GCF_000830055.1_NZ_CP010781_00954, GCF_000830055.1_NZ_CP010781_00955",4.0,"Gao_Qat__QatA, Gao_Qat__QatB, Gao_Qat__QatC, Gao_Qat__QatD","WP_000269396.1, WP_000537345.1, WP_041152179.1, WP_000937120.1",Bacteria,Pseudomonadota,Gammaproteobacteria,Moraxellales,Moraxellaceae,Acinetobacter,Acinetobacter baumannii
+GCF_000830055_NZ_CP010781_RosmerTA_1,GCF_000830055.1,NZ_CP010781,RosmerTA,RosmerTA,GCF_000830055.1_NZ_CP010781_00651,GCF_000830055.1_NZ_CP010781_00652,"GCF_000830055.1_NZ_CP010781_00651, GCF_000830055.1_NZ_CP010781_00652",2.0,"RosmerTA__RmrA_2634932349, RosmerTA__RmrT_2634932349","WP_000482796.1, WP_001182927.1",Bacteria,Pseudomonadota,Gammaproteobacteria,Moraxellales,Moraxellaceae,Acinetobacter,Acinetobacter baumannii
+GCF_000830055_NZ_CP010781_RM_Type_II_1,GCF_000830055.1,NZ_CP010781,RM,RM_Type_II,GCF_000830055.1_NZ_CP010781_03697,GCF_000830055.1_NZ_CP010781_03698,"GCF_000830055.1_NZ_CP010781_03697, GCF_000830055.1_NZ_CP010781_03698",2.0,"RM_Type_II__Type_II_REases, RM_Type_II__Type_II_MTases","WP_001062713.1, WP_000862934.1",Bacteria,Pseudomonadota,Gammaproteobacteria,Moraxellales,Moraxellaceae,Acinetobacter,Acinetobacter baumannii
+GCF_000830055_NZ_CP010782,GCF_000830055.1,NZ_CP010782,No system found,,,,,,,,Bacteria,Pseudomonadota,Gammaproteobacteria,Moraxellales,Moraxellaceae,Acinetobacter,Acinetobacter baumannii
+GCF_000830055_NZ_CP010781_CAS_Class1-Subtype-I-F_1,GCF_000830055.1,NZ_CP010781,Cas,CAS_Class1-Subtype-I-F,GCF_000830055.1_NZ_CP010781_02755,GCF_000830055.1_NZ_CP010781_02760,"GCF_000830055_NZ_CP010781_02755, GCF_000830055_NZ_CP010781_02756, GCF_000830055_NZ_CP010781_02757, GCF_000830055_NZ_CP010781_02758, GCF_000830055_NZ_CP010781_02759, GCF_000830055_NZ_CP010781_02760",6.0,"cas6f_I_II_III_IV_V_VI_3, cas7f_I-F_2, cas5f_I-F_4, cas8f_I-F_8, cas3f_I-F_1, cas1_I-F_1","WP_001104789.1, WP_001097003.1, WP_001215684.1, WP_000841022.1, WP_000637362.1, WP_000436801.1",Bacteria,Pseudomonadota,Gammaproteobacteria,Moraxellales,Moraxellaceae,Acinetobacter,Acinetobacter baumannii
diff --git a/packages/df-wiki-cli/df_wiki_cli/content/main.py b/packages/df-wiki-cli/df_wiki_cli/content/main.py
index 17b7865777a7117790fa90495b7ddd602bc903f7..319089d3217665ec3a28f0663c10228479553be4 100644
--- a/packages/df-wiki-cli/df_wiki_cli/content/main.py
+++ b/packages/df-wiki-cli/df_wiki_cli/content/main.py
@@ -4,6 +4,7 @@ import json
import pandas as pd
import shutil
import csv
+import tempfile
import matplotlib.pyplot as plt
from pandas.errors import ParserError
from typing_extensions import Annotated
@@ -244,7 +245,7 @@ def pae2png(tsv_file, png_file):
plt.close()
-@app.command()
+@app.command(help="Remove version from sys_id")
def refseq(
input: Annotated[
Path,
@@ -276,3 +277,224 @@ def refseq(
console.print(f"[green]{row['sys_id']} -> {result}")
row["sys_id"] = result
writer.writerow(row)
+
+
+@app.command(
+ help='Remove "No system found" hits if the are not the only hit for an assembly'
+)
+def refseq_sanitized_hits(
+ input: Annotated[
+ Path,
+ typer.Option(
+ exists=False,
+ file_okay=True,
+ writable=True,
+ ),
+ ],
+ output: Annotated[
+ Path,
+ typer.Option(
+ file_okay=True,
+ dir_okay=False,
+ writable=True,
+ resolve_path=True,
+ ),
+ ],
+):
+ df = pd.read_csv(input)
+ df_final = _sanitized_refseq_hits(df)
+ df_final.reset_index().to_csv(output, index=False)
+ return df_final
+
+
+@app.command(help="Group hits per assembly and types (from 'sanitized-hits')")
+def refseq_group_per_assembly_and_type(
+ input: Annotated[
+ Path,
+ typer.Option(
+ exists=False,
+ file_okay=True,
+ writable=True,
+ ),
+ ],
+ output: Annotated[
+ Path,
+ typer.Option(
+ file_okay=True,
+ dir_okay=False,
+ writable=True,
+ resolve_path=True,
+ ),
+ ],
+):
+ df = pd.read_csv(input)
+ df_final = _sanitized_refseq_hits(df)
+ df_final_grouped = df_final.groupby(
+ [
+ "Assembly",
+ "type",
+ "Superkingdom",
+ "phylum",
+ "class",
+ "order",
+ "family",
+ "genus",
+ "species",
+ ],
+ as_index=False,
+ ).size()
+ df_final_grouped.reset_index().to_csv(output, index=False)
+
+
+@app.command()
+def refseq_group_per_assembly(
+ input: Annotated[
+ Path,
+ typer.Option(
+ exists=False,
+ file_okay=True,
+ writable=True,
+ ),
+ ],
+ output: Annotated[
+ Path,
+ typer.Option(
+ file_okay=True,
+ dir_okay=False,
+ writable=True,
+ resolve_path=True,
+ ),
+ ],
+):
+ df = pd.read_csv(input)
+
+ df["Assembly"] = df["Assembly"].apply(remove_version)
+ df_grouped = df.groupby(
+ [
+ "Assembly",
+ "Superkingdom",
+ "phylum",
+ "class",
+ "order",
+ "family",
+ "genus",
+ "species",
+ ],
+ as_index=False,
+ ).size()
+ df_grouped.reset_index().to_csv(output, index=False)
+
+
+@app.command()
+def refseq_type_count(
+ input: Annotated[
+ Path,
+ typer.Option(
+ exists=False,
+ file_okay=True,
+ writable=True,
+ help="csv file with type and taxo (No system found removed when other system are founded in the same assembly)",
+ ),
+ ],
+ output: Annotated[
+ Path,
+ typer.Option(
+ file_okay=True,
+ dir_okay=False,
+ writable=True,
+ resolve_path=True,
+ ),
+ ],
+):
+ df = pd.read_csv(input)
+ grouped_per_type = df.groupby(
+ ["type"],
+ as_index=False,
+ ).size()
+ grouped_per_type.reset_index().to_csv(output, index=False)
+
+
+@app.command()
+def markdown(
+ dir: Annotated[
+ Path,
+ typer.Option(
+ exists=True,
+ file_okay=False,
+ writable=True,
+ readable=True,
+ resolve_path=True,
+ help="Dir where all systems article are",
+ ),
+ ],
+):
+ for file in dir.iterdir():
+ if file.suffix == ".md":
+
+ console.rule(f"[bold blue]{file.name}", style="blue")
+ # make a copy of file
+ _, tmp_path = tempfile.mkstemp()
+ # with open(dst, "w") as tmp_f:
+ dst = Path(tmp_path)
+ dst.write_bytes(file.read_bytes())
+
+ with open(dst, "r+") as f:
+ new_f = re.sub(
+ r"##\s+Structure\n.*##\s+Experimental\s+validation",
+ "## Structure\n\n::article-structure\n::\n\n## Experimental validation",
+ f.read(),
+ flags=re.DOTALL,
+ )
+ with open(file, "w") as f_out:
+ f_out.write(new_f)
+
+
+def remove_version(assembly):
+ return assembly.split(".")[0]
+
+
+def _sanitized_refseq_hits(df):
+ df["Assembly"] = df["Assembly"].apply(remove_version)
+ # Lower type namesmc
+ # df["type"] = df["type"].apply(lambda x: x.lower())
+
+ # Get all row with no system type
+ df_no_system = df.loc[df["type"] == "No system found"]
+ # unique assembly with no sys
+ serie_assembly_with_no_sys = df_no_system["Assembly"].unique()
+ # filter assembly to have those with no sys
+ df_with_no_sys = df[df["Assembly"].isin(serie_assembly_with_no_sys)]
+ # Group them by assembly, type, taxo
+ no_sys_assembly_by_size = df_with_no_sys.groupby(
+ [
+ "Assembly",
+ "type",
+ "Superkingdom",
+ "phylum",
+ "class",
+ "order",
+ "family",
+ "genus",
+ "species",
+ ],
+ as_index=False,
+ ).size()
+
+ # count each occurrence
+ df_again_per_assembly = no_sys_assembly_by_size.groupby(
+ "Assembly",
+ as_index=False,
+ ).size()
+ # filter to keep only size > 1 (when == 1 it means that there is only "no system found for an assembly")
+ # so we should keep it
+ df_size_sup_1 = df_again_per_assembly[df_again_per_assembly["size"] > 1]
+ assembly_where_should_remove_no_sys_found = df_size_sup_1["Assembly"].unique()
+
+ # Construct new dataset to remove entries with no system found
+ # while found system on other replicon that belongs to the
+ # same assembly
+ df_filtered_assembly_only_with_sys = df[
+ (df["type"] != "No system found")
+ | ~df.Assembly.isin(assembly_where_should_remove_no_sys_found)
+ ]
+ return df_filtered_assembly_only_with_sys
diff --git a/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py b/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py
index 5707df46949c4fd609e35340458fb61e1a5c30aa..52668833951380349e912f84de1e06f3b9fe508e 100644
--- a/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py
+++ b/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py
@@ -38,6 +38,28 @@ class RefSeqCsv(BaseModel):
species: str
+class RefSeqTaxo(BaseModel):
+ index: int
+ Assembly: str
+ Superkingdom: str
+ phylum: str
+ class_: str = Field(..., alias="class")
+ order: str
+ family: str
+ genus: str
+ species: str
+ size: int
+
+
+class RefSeqTaxoType(RefSeqTaxo):
+ type: str
+
+
+class RefSeqTypeCount(BaseModel):
+ type: str
+ size: int
+
+
class StructureTypes(str, Enum):
Validated = "Validated"
DF = "DF"
@@ -84,28 +106,57 @@ def update_refseqtaxo(host: str, key: str, file: Path, document: str):
documents = []
with open(file, "r") as csvfile:
csvreader = csv.DictReader(csvfile)
- assembly = {}
for row in csvreader:
- assembly_id = row["Assembly"]
- assembly[row["Assembly"]] = {
- k: row[k]
- for k in (
- "Superkingdom",
- "phylum",
- "class",
- "order",
- "family",
- "genus",
- "species",
- "Assembly",
- )
- if k in row
- }
- assembly[assembly_id]["Assembly"] = assembly[assembly_id]["Assembly"].split('.')[0]
- for item in assembly.values():
- documents.append(item)
+ doc = RefSeqTaxo(**row)
+ documents.append(doc.model_dump(by_alias=True))
tasks = index.add_documents_in_batches(documents, primary_key="Assembly")
- print(tasks)
+ for task in tasks:
+ console.print(task)
+ index.update_pagination_settings({"maxTotalHits": 1000000})
+ index.update_filterable_attributes(
+ body=[
+ "Superkingdom",
+ "phylum",
+ "class",
+ "order",
+ "family",
+ "genus",
+ "species",
+ "Assembly",
+ ]
+ )
+ index.update_sortable_attributes(
+ [
+ "Superkingdom",
+ "phylum",
+ "class",
+ "order",
+ "family",
+ "genus",
+ "species",
+ "Assembly",
+ "size",
+ ]
+ )
+ params = {
+ "maxValuesPerFacet": 1000000,
+ "sortFacetValuesBy": {"*": "count"},
+ }
+ index.update_faceting_settings(params)
+
+
+def update_refseqtaxotype(host: str, key: str, file: Path, document: str):
+ client = meilisearch.Client(host, key)
+ index = client.index(document.lower())
+ documents = []
+ with open(file, "r") as csvfile:
+ csvreader = csv.DictReader(csvfile)
+ for row in csvreader:
+ doc = RefSeqTaxoType(**row)
+ documents.append(doc.model_dump(by_alias=True))
+ tasks = index.add_documents_in_batches(documents, primary_key="index")
+ for task in tasks:
+ console.print(task)
index.update_pagination_settings({"maxTotalHits": 1000000})
index.update_filterable_attributes(
body=[
@@ -129,6 +180,35 @@ def update_refseqtaxo(host: str, key: str, file: Path, document: str):
"genus",
"species",
"Assembly",
+ "type",
+ "size",
+ ]
+ )
+ params = {
+ "maxValuesPerFacet": 1000000,
+ "sortFacetValuesBy": {"*": "count"},
+ }
+ index.update_faceting_settings(params)
+
+
+def update_refseqtypecount(host: str, key: str, file: Path, document: str):
+ client = meilisearch.Client(host, key)
+ index = client.index(document.lower())
+ documents = []
+ with open(file, "r") as csvfile:
+ csvreader = csv.DictReader(csvfile)
+ for row in csvreader:
+ doc = RefSeqTypeCount(**row)
+ documents.append(doc.model_dump(by_alias=True))
+ tasks = index.add_documents_in_batches(documents, primary_key="type")
+ for task in tasks:
+ console.print(task)
+ index.update_pagination_settings({"maxTotalHits": 1000000})
+ index.update_filterable_attributes(body=["type"])
+ index.update_sortable_attributes(
+ [
+ "type",
+ "size",
]
)
params = {
@@ -342,7 +422,6 @@ def update_articles(
print(attr_task)
-
def split_on_comma(str_val: str) -> List[str]:
for val in str_val.split(","):
yield val.strip()
diff --git a/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py b/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py
index e6cb0e7b9c38fe0874f3efa988810e8494633c9f..b722a7a7cf965837c610584c1c2a086f660cd039 100644
--- a/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py
+++ b/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py
@@ -6,6 +6,8 @@ from df_wiki_cli.meilisearch import (
update_refseqtaxo,
update_articles,
update_refseq,
+ update_refseqtaxotype,
+ update_refseqtypecount,
update_structure,
update_systems,
)
@@ -21,6 +23,9 @@ app = typer.Typer()
class Documents(str, Enum):
refseqtaxo = "refseqtaxo"
+ refseqtaxotype = "refseqtaxotype"
+ refseqtypecount = "refseqtypecount"
+ refseqsanitized = "refseqsanitized"
refseq = "refseq"
structure = "structure"
systems = "systems"
@@ -63,6 +68,7 @@ def update(
] = Documents.refseq,
content_type: Annotated[str, typer.Option(help="Content-Type header")] = "text/csv",
):
+
if document == "refseqtaxo":
update_refseqtaxo(ctx.obj.host, ctx.obj.key, file, document)
if document == "refseq":
@@ -73,6 +79,12 @@ def update(
update_systems(ctx.obj.host, ctx.obj.key, file, document)
if document == "article":
update_articles(ctx.obj.host, ctx.obj.key, file, document)
+ if document == "refseqtaxotype":
+ update_refseqtaxotype(ctx.obj.host, ctx.obj.key, file, document)
+ if document == "refseqsanitized":
+ update_refseq(ctx.obj.host, ctx.obj.key, file, document)
+ if document == "refseqtypecount":
+ update_refseqtypecount(ctx.obj.host, ctx.obj.key, file, document)
@app.command()
@@ -97,6 +109,12 @@ def index_update(ctx: typer.Context, index: str, primary_key: str):
console.print(task)
+@app.command()
+def index_delete(ctx: typer.Context, index: str):
+ client = meilisearch.Client(ctx.obj.host, ctx.obj.key)
+ client.index(index).delete()
+
+
@app.command()
def task(ctx: typer.Context, id: str):
client = meilisearch.Client(ctx.obj.host, ctx.obj.key)
diff --git a/packages/df-wiki-cli/pyproject.toml b/packages/df-wiki-cli/pyproject.toml
index d0a3341443d8102a33b93a44f44f7b16797bb3ed..b6763ddc21e03ebb437cb3085a4e46142d434989 100644
--- a/packages/df-wiki-cli/pyproject.toml
+++ b/packages/df-wiki-cli/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "df-wiki-cli"
-version = "0.1.6"
+version = "0.1.7"
description = ""
authors = ["Remi PLANEL <rplanel@pasteur.fr>"]
readme = "README.md"