diff --git a/components/content/Contributors.vue b/components/content/Contributors.vue new file mode 100644 index 0000000000000000000000000000000000000000..5c173d624212826b6e80db4755ee37639d1178ae --- /dev/null +++ b/components/content/Contributors.vue @@ -0,0 +1,14 @@ +<script setup lang="ts"> + +const { page } = useContent(); +const contributorsString = computed(() => { + if (page.value?.contributors) { + return page.value.contributors.join(', ') + } else { return null } +}) + +</script> +<template> + <div v-if="contributorsString" class="mt-n6 mb-6 text-subtitle-1 text-info">Contributors: {{ contributorsString }} + </div> +</template> \ No newline at end of file diff --git a/composables/useFetchArticle.ts b/composables/useFetchArticle.ts index af26e93ae01fd7b06d1e07d111fbd6263c74a054..63439bd4e5e1af4ec70de0c0c062955ab7a101b0 100644 --- a/composables/useFetchArticle.ts +++ b/composables/useFetchArticle.ts @@ -89,7 +89,6 @@ export function useFetchArticle(doi: string) { if (store.articles.size === 0) { const localArticles = await queryContent('/_partials/_articles').where({ _partial: true }).findOne() - console.log(localArticles) if (localArticles?.articles && store.articles.size <= 0) { for (const article of localArticles.articles) { store.add(article) diff --git a/content/3.defense-systems/abi2.md b/content/3.defense-systems/abi2.md index 6f8549ec2378baf5dd358518c8fe643e1b09cf1e..808a7367c8c6f20bb252a410e57a5cec2b8d6a54 100644 --- a/content/3.defense-systems/abi2.md +++ b/content/3.defense-systems/abi2.md @@ -12,6 +12,7 @@ tableColumns: --- # Abi2 + The Abi2 system is composed of one protein: Abi_2. Here is an example found in the RefSeq database: diff --git a/content/3.defense-systems/detocs.md b/content/3.defense-systems/detocs.md index eb185621ce70d97499f9e404e6241344db5be3cc..b715ca6408329a016b39d8cb29c7cd92d0152a84 100644 --- a/content/3.defense-systems/detocs.md +++ b/content/3.defense-systems/detocs.md @@ -6,11 +6,34 @@ tableColumns: abstract: | During viral infection, cells can deploy immune strategies that deprive viruses of molecules essential for their replication. Here, we report a family of immune effectors in bacteria that, upon phage infection, degrade cellular adenosine triphosphate (ATP) and deoxyadenosine triphosphate (dATP) by cleaving the N-glycosidic bond between the adenine and sugar moieties. These ATP nucleosidase effectors are widely distributed within multiple bacterial defense systems, including cyclic oligonucleotide-based antiviral signaling systems (CBASS), prokaryotic argonautes, and nucleotide-binding leucine-rich repeat (NLR)-like proteins, and we show that ATP and dATP degradation during infection halts phage propagation. By analyzing homologs of the immune ATP nucleosidase domain, we discover and characterize Detocs, a family of bacterial defense systems with a two-component phosphotransfer-signaling architecture. The immune ATP nucleosidase domain is also encoded within diverse eukaryotic proteins with immune-like architectures, and we show biochemically that eukaryotic homologs preserve the ATP nucleosidase activity. Our findings suggest that ATP and dATP degradation is a cell-autonomous innate immune strategy conserved across the tree of life. PFAM: PF01048, PF18742 +contributors: + - François Rousset --- + # Detocs -## To do +## Description +Detocs (**De**fensive **T**w**o**-**C**omponent **S**ystem) is a family of 3-gene defense systems that mediate anti-phage activity by abortive infection. + +## Molecular mechanism + +Detocs shares homology with two-component signal transduction systems. Two-component systems are ubiquitous in prokaryotes and comprise a sensor kinase that typically senses an environmental signal through its N-terminal domain, triggering autophosphorylation of a conserved histidine residue near the C-terminal kinase domain. The phosphate group is then transferred to a conserved aspartate on the N-terminal receiver domain of the second protein, called the “response regulatorâ€. Phosphorylation of the receiver domain activates the C-terminal domain of the response regulator, usually a DNA-binding domain that regulates the expression of target genes. In Detocs, the N-terminal sensor domain on the histidine kinase (DtcA) is intracellular and comprises tetratricopeptide repeats that are believed to sense phage infection; the C-terminal domain of the response regulator (DtcC) is replaced a PNP domain that was shown to specifically cleave ATP molecules into adenine and ribose-5’-triphosphate, both in vitro and during phage infection. Detocs activity leads to a drastic reduction in ATP and dATP levels during infection and to an accumulation of adenine. In parallel, ADP, AMP, dADP and dAMP levels are also reduced, likely in an indirect manner. Detocs induces growth arrest of T5-infected cells, but not of SECphi27-infected cells, suggesting that the outcome of infection following ATP degradation is phage-specific. + +While the genetic architecture of Detocs is similar to that of regulatory two-component systems, Detocs also encodes another protein, DtcB, with a standalone receiver domain that is not linked to any effector domain. A point mutation in the receiving aspartate of DtcB is toxic, while overexpression of DtcB impairs the defense capacity of Detocs. Therefore, DtcB likely serves as a “buffer†protein that absorbs phosphate signals that result from inadvertent leaky activation of DtcA in the absence of phage infection, thus preventing autoimmunity. + +While 80% of Detocs operons encode PNP effectors, in a minority of these operons the PNP is replaced by other domains known to function as cell-killing effectors in bacterial defense systems, including endonuclease and transmembrane-spanning domains. A Detocs operon with a transmembrane α/β hydrolase effector from Enterobacter cloacae JD6301 was able to efficiently protect E. coli against diverse phages (Rousset et al., 2023). + +## Distribution of the system among prokaryotes + +Detocs is encoded in Proteobacteria, Bacteroidetes, Firmicutes, Planctomycetes and Chloroflexi phyla. + +## Experimental validation +Detocs was experimentally validated using: + +* A system from Vibrio alginolyticus UCD-32C that has defense activity against phages T2, T4, T5, T6 and SECphi27 (Rousset et al., 2023). + +* A system from Enterobacter cloacae JD6301 that has defense activity against phages T2, T4, T5, T7, SECphi4, SECphi6, SECphi18 and SECphi27 (Rousset et al., 2023). ## Structure @@ -69,3 +92,7 @@ items: --- :: + +## References + +Rousset et al., A conserved family of immune effectors cleaves cellular ATP upon viral infection. Cell 186, 1–13 (2023). https://doi.org/10.1016/j.cell.2023.07.020 diff --git a/layouts/article.vue b/layouts/article.vue index 64e4f13a0fcea8c523b2361f98226d40ad995154..f724344b203aeccdc9a32e4800c384fa08dff99b 100644 --- a/layouts/article.vue +++ b/layouts/article.vue @@ -9,7 +9,7 @@ console.log("================================") console.log(surround) console.log(prev) console.log(next) - +console.log(page) </script> <template> <VApp> diff --git a/package-lock.json b/package-lock.json index 98aed1fc5a29a47dc81782ecacd4bec5125d6bdb..484806b25bc89ba9105f0198aec73bacc0b5943f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,11 +7,10 @@ "dependencies": { "@observablehq/plot": "^0.6.11", "@pinia/nuxt": "^0.4.11", - "d3-dsv": "^3.0.1", - "d3-fetch": "^3.0.1", "meilisearch": "^0.35.0", "pinia": "^2.1.6", - "vue-json-csv": "^2.1.0" + "vue-json-csv": "^2.1.0", + "yaml": "^2.3.3" }, "devDependencies": { "@nuxt/content": "^2.8.5", @@ -53,14 +52,14 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", + "version": "7.23.2", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.0", + "version": "7.23.2", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -68,10 +67,10 @@ "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", + "@babel/helpers": "^7.23.2", "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -323,11 +322,11 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.1", + "version": "7.23.2", "license": "MIT", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0" }, "engines": { @@ -402,7 +401,7 @@ } }, "node_modules/@babel/standalone": { - "version": "7.23.1", + "version": "7.23.2", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -421,7 +420,7 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.0", + "version": "7.23.2", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.13", @@ -460,7 +459,7 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.4", + "version": "0.19.5", "cpu": [ "x64" ], @@ -527,7 +526,7 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", + "version": "0.3.20", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -585,11 +584,11 @@ } }, "node_modules/@netlify/functions": { - "version": "2.2.1", + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "@netlify/serverless-functions-api": "1.8.0", + "@netlify/serverless-functions-api": "1.9.0", "is-promise": "^4.0.0" }, "engines": { @@ -605,7 +604,7 @@ } }, "node_modules/@netlify/serverless-functions-api": { - "version": "1.8.0", + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { @@ -683,8 +682,7 @@ }, "node_modules/@nuxt/kit": { "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.7.4.tgz", - "integrity": "sha512-/S5abZL62BITCvC/TY3KWA6N721U1Osln3cQdBb56XHIeafZCBVqTi92Xb0o7ovl72mMRhrKwRu7elzvz9oT/g==", + "license": "MIT", "dependencies": { "@nuxt/schema": "3.7.4", "c12": "^1.4.2", @@ -831,11 +829,11 @@ } }, "node_modules/@nuxtjs/mdc": { - "version": "0.2.1", + "version": "0.2.2", "dev": true, "license": "MIT", "dependencies": { - "@nuxt/kit": "latest", + "@nuxt/kit": "^3.7.4", "@types/hast": "^3.0.1", "@types/mdast": "^4.0.1", "@vue/compiler-core": "^3.3.4", @@ -860,7 +858,7 @@ "remark-parse": "^10.0.2", "remark-rehype": "^10.1.0", "scule": "^1.0.0", - "shikiji": "^0.6.8", + "shikiji": "^0.6.9", "ufo": "^1.3.1", "unified": "^11.0.3", "unist-builder": "^4.0.0", @@ -1006,7 +1004,7 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.5", + "version": "25.0.7", "dev": true, "license": "MIT", "dependencies": { @@ -1015,7 +1013,7 @@ "estree-walker": "^2.0.2", "glob": "^8.0.3", "is-reference": "1.2.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" @@ -1029,25 +1027,14 @@ } } }, - "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { - "version": "0.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@rollup/plugin-inject": { - "version": "5.0.4", + "version": "5.0.5", "dev": true, "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "estree-walker": "^2.0.2", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" @@ -1061,17 +1048,6 @@ } } }, - "node_modules/@rollup/plugin-inject/node_modules/magic-string": { - "version": "0.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@rollup/plugin-json": { "version": "6.0.1", "dev": true, @@ -1116,12 +1092,12 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "5.0.3", + "version": "5.0.4", "dev": true, "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" @@ -1135,17 +1111,6 @@ } } }, - "node_modules/@rollup/plugin-replace/node_modules/magic-string": { - "version": "0.27.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@rollup/plugin-terser": { "version": "0.4.4", "dev": true, @@ -1231,7 +1196,7 @@ } }, "node_modules/@types/debug": { - "version": "4.1.9", + "version": "4.1.10", "dev": true, "license": "MIT", "dependencies": { @@ -1239,11 +1204,11 @@ } }, "node_modules/@types/estree": { - "version": "1.0.2", + "version": "1.0.3", "license": "MIT" }, "node_modules/@types/hast": { - "version": "3.0.1", + "version": "3.0.2", "dev": true, "license": "MIT", "dependencies": { @@ -1251,7 +1216,7 @@ } }, "node_modules/@types/http-proxy": { - "version": "1.17.12", + "version": "1.17.13", "dev": true, "license": "MIT", "dependencies": { @@ -1259,7 +1224,7 @@ } }, "node_modules/@types/mdast": { - "version": "4.0.1", + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { @@ -1267,12 +1232,12 @@ } }, "node_modules/@types/ms": { - "version": "0.7.32", + "version": "0.7.33", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "18.18.4", + "version": "18.18.6", "dev": true, "license": "MIT" }, @@ -1287,7 +1252,7 @@ "license": "MIT" }, "node_modules/@types/unist": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "license": "MIT" }, @@ -2159,7 +2124,7 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001547", + "version": "1.0.30001551", "funding": [ { "type": "opencollective", @@ -2469,8 +2434,7 @@ }, "node_modules/cross-fetch": { "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -3235,7 +3199,7 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.548", + "version": "1.4.559", "license": "ISC" }, "node_modules/emoji-regex": { @@ -3339,7 +3303,7 @@ } }, "node_modules/esbuild": { - "version": "0.19.4", + "version": "0.19.5", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3350,28 +3314,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.4", - "@esbuild/android-arm64": "0.19.4", - "@esbuild/android-x64": "0.19.4", - "@esbuild/darwin-arm64": "0.19.4", - "@esbuild/darwin-x64": "0.19.4", - "@esbuild/freebsd-arm64": "0.19.4", - "@esbuild/freebsd-x64": "0.19.4", - "@esbuild/linux-arm": "0.19.4", - "@esbuild/linux-arm64": "0.19.4", - "@esbuild/linux-ia32": "0.19.4", - "@esbuild/linux-loong64": "0.19.4", - "@esbuild/linux-mips64el": "0.19.4", - "@esbuild/linux-ppc64": "0.19.4", - "@esbuild/linux-riscv64": "0.19.4", - "@esbuild/linux-s390x": "0.19.4", - "@esbuild/linux-x64": "0.19.4", - "@esbuild/netbsd-x64": "0.19.4", - "@esbuild/openbsd-x64": "0.19.4", - "@esbuild/sunos-x64": "0.19.4", - "@esbuild/win32-arm64": "0.19.4", - "@esbuild/win32-ia32": "0.19.4", - "@esbuild/win32-x64": "0.19.4" + "@esbuild/android-arm": "0.19.5", + "@esbuild/android-arm64": "0.19.5", + "@esbuild/android-x64": "0.19.5", + "@esbuild/darwin-arm64": "0.19.5", + "@esbuild/darwin-x64": "0.19.5", + "@esbuild/freebsd-arm64": "0.19.5", + "@esbuild/freebsd-x64": "0.19.5", + "@esbuild/linux-arm": "0.19.5", + "@esbuild/linux-arm64": "0.19.5", + "@esbuild/linux-ia32": "0.19.5", + "@esbuild/linux-loong64": "0.19.5", + "@esbuild/linux-mips64el": "0.19.5", + "@esbuild/linux-ppc64": "0.19.5", + "@esbuild/linux-riscv64": "0.19.5", + "@esbuild/linux-s390x": "0.19.5", + "@esbuild/linux-x64": "0.19.5", + "@esbuild/netbsd-x64": "0.19.5", + "@esbuild/openbsd-x64": "0.19.5", + "@esbuild/sunos-x64": "0.19.5", + "@esbuild/win32-arm64": "0.19.5", + "@esbuild/win32-ia32": "0.19.5", + "@esbuild/win32-x64": "0.19.5" } }, "node_modules/escalade": { @@ -3474,8 +3438,7 @@ }, "node_modules/file-saver": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + "license": "MIT" }, "node_modules/file-uri-to-path": { "version": "1.0.0", @@ -3528,7 +3491,7 @@ } }, "node_modules/fraction.js": { - "version": "4.3.6", + "version": "4.3.7", "dev": true, "license": "MIT", "engines": { @@ -3673,7 +3636,7 @@ } }, "node_modules/git-url-parse": { - "version": "13.1.0", + "version": "13.1.1", "dev": true, "license": "MIT", "dependencies": { @@ -3813,7 +3776,7 @@ } }, "node_modules/hast-util-from-parse5/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -3821,7 +3784,7 @@ } }, "node_modules/hast-util-from-parse5/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -3862,7 +3825,7 @@ } }, "node_modules/hast-util-parse-selector/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -3870,7 +3833,7 @@ } }, "node_modules/hast-util-parse-selector/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -3897,7 +3860,7 @@ } }, "node_modules/hast-util-raw/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -3905,7 +3868,7 @@ } }, "node_modules/hast-util-raw/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -4150,7 +4113,7 @@ } }, "node_modules/hast-util-to-parse5/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -4158,7 +4121,7 @@ } }, "node_modules/hast-util-to-parse5/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -4203,7 +4166,7 @@ } }, "node_modules/hastscript/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -4211,7 +4174,7 @@ } }, "node_modules/hastscript/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -4800,8 +4763,7 @@ }, "node_modules/lodash.mapkeys": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapkeys/-/lodash.mapkeys-4.6.0.tgz", - "integrity": "sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA==" + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -4814,8 +4776,7 @@ }, "node_modules/lodash.pickby": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==" + "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -4839,7 +4800,7 @@ } }, "node_modules/magic-string": { - "version": "0.30.4", + "version": "0.30.5", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -4905,7 +4866,7 @@ } }, "node_modules/mdast-util-definitions/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -4913,7 +4874,7 @@ } }, "node_modules/mdast-util-definitions/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -4995,7 +4956,7 @@ } }, "node_modules/mdast-util-from-markdown/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5003,7 +4964,7 @@ } }, "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5465,7 +5426,7 @@ } }, "node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5473,7 +5434,7 @@ } }, "node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5581,7 +5542,7 @@ } }, "node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5589,7 +5550,7 @@ } }, "node_modules/mdast-util-gfm-footnote/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5640,7 +5601,7 @@ } }, "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5648,7 +5609,7 @@ } }, "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5668,7 +5629,7 @@ } }, "node_modules/mdast-util-gfm-table/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5676,7 +5637,7 @@ } }, "node_modules/mdast-util-gfm-table/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5694,7 +5655,7 @@ } }, "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5702,7 +5663,7 @@ } }, "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5720,7 +5681,7 @@ } }, "node_modules/mdast-util-phrasing/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5728,7 +5689,7 @@ } }, "node_modules/mdast-util-phrasing/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5783,7 +5744,7 @@ } }, "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -5791,7 +5752,7 @@ } }, "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -5870,8 +5831,7 @@ }, "node_modules/meilisearch": { "version": "0.35.0", - "resolved": "https://registry.npmjs.org/meilisearch/-/meilisearch-0.35.0.tgz", - "integrity": "sha512-gF1I6K5/Wpe7BWfjBnG+o19y/FIpJ9HbN+byON6CB9U3uE7qc6GvwUbjKOllh7LKXQVVxH/kCu7Jn0ODCUwqbQ==", + "license": "MIT", "dependencies": { "cross-fetch": "^3.1.6" } @@ -7979,8 +7939,7 @@ }, "node_modules/papaparse": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", - "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==" + "license": "MIT" }, "node_modules/parse-entities": { "version": "4.0.1", @@ -8002,7 +7961,7 @@ } }, "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -8114,7 +8073,7 @@ } }, "node_modules/pinia": { - "version": "2.1.6", + "version": "2.1.7", "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.5.0", @@ -8861,7 +8820,7 @@ } }, "node_modules/rehype-raw/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -8869,7 +8828,7 @@ } }, "node_modules/rehype-raw/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -8963,7 +8922,7 @@ } }, "node_modules/remark-gfm/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -8971,7 +8930,7 @@ } }, "node_modules/remark-gfm/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -9109,7 +9068,7 @@ } }, "node_modules/remark-parse/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -9117,7 +9076,7 @@ } }, "node_modules/remark-parse/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -9155,7 +9114,7 @@ } }, "node_modules/remark-rehype/node_modules/@types/hast": { - "version": "2.3.6", + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { @@ -9163,7 +9122,7 @@ } }, "node_modules/remark-rehype/node_modules/@types/mdast": { - "version": "3.0.13", + "version": "3.0.14", "dev": true, "license": "MIT", "dependencies": { @@ -9171,7 +9130,7 @@ } }, "node_modules/remark-rehype/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -9356,7 +9315,7 @@ } }, "node_modules/resolve": { - "version": "1.22.6", + "version": "1.22.8", "dev": true, "license": "MIT", "dependencies": { @@ -9691,7 +9650,7 @@ "license": "MIT" }, "node_modules/shikiji": { - "version": "0.6.9", + "version": "0.6.10", "dev": true, "license": "MIT", "dependencies": { @@ -9994,7 +9953,7 @@ "license": "ISC" }, "node_modules/terser": { - "version": "5.21.0", + "version": "5.22.0", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10124,7 +10083,7 @@ } }, "node_modules/undici": { - "version": "5.25.4", + "version": "5.26.4", "dev": true, "license": "MIT", "dependencies": { @@ -10593,7 +10552,7 @@ } }, "node_modules/vfile-location/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -10611,7 +10570,7 @@ } }, "node_modules/vfile-message/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -10628,7 +10587,7 @@ } }, "node_modules/vfile/node_modules/@types/unist": { - "version": "2.0.8", + "version": "2.0.9", "dev": true, "license": "MIT" }, @@ -10645,7 +10604,7 @@ } }, "node_modules/vite": { - "version": "4.4.11", + "version": "4.5.0", "dev": true, "license": "MIT", "dependencies": { @@ -11051,8 +11010,6 @@ }, "node_modules/vue-json-csv": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vue-json-csv/-/vue-json-csv-2.1.0.tgz", - "integrity": "sha512-JCHtHViiIIFgrJR9csLWq/d3X7sHVc8kDnPl5FgrVeCslYkaV/asacKyxKKZok8jVMPeFNWPAlwDbtUC1p/J/w==", "dependencies": { "file-saver": "^2.0.5", "lodash.mapkeys": "^4.6.0", @@ -11077,7 +11034,7 @@ } }, "node_modules/vuetify": { - "version": "3.3.20", + "version": "3.3.22", "dev": true, "license": "MIT", "engines": { @@ -11110,7 +11067,7 @@ } }, "node_modules/vuetify-nuxt-module": { - "version": "0.5.14", + "version": "0.5.15", "dev": true, "license": "MIT", "dependencies": { @@ -11275,8 +11232,7 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.3.2", - "dev": true, + "version": "2.3.3", "license": "ISC", "engines": { "node": ">= 14" diff --git a/package.json b/package.json index 4fcdc51d90f328d44c6661b53b5b5df1d938bd9f..fc09b4037ca9d62846fdf2b53f4302e39a8cf9a8 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,7 @@ "dependencies": { "@observablehq/plot": "^0.6.11", "@pinia/nuxt": "^0.4.11", - "d3-dsv": "^3.0.1", - "d3-fetch": "^3.0.1", + "yaml": "^2.3.3", "meilisearch": "^0.35.0", "pinia": "^2.1.6", "vue-json-csv": "^2.1.0" diff --git a/server/plugins/content.ts b/server/plugins/content.ts new file mode 100644 index 0000000000000000000000000000000000000000..0f843c65913eb850e528d7653738a8deb4ca9e55 --- /dev/null +++ b/server/plugins/content.ts @@ -0,0 +1,37 @@ +import YAML from 'yaml' + +export default defineNitroPlugin((nitroApp) => { + nitroApp.hooks.hook('content:file:beforeParse', + (file) => { + if (file?._id?.startsWith('content:3.defense-systems:') && file?._id?.endsWith('.md')) { + const regexp = /(?<=---\n).*?(?=\n---)/sg; + const match = file.body.match(regexp); + const frontMatter = match[0] + const parsedFrontMatter = YAML.parse(frontMatter) + if (parsedFrontMatter?.contributors?.length > 0) { + file.body = file.body.replace(/(^#[\s+]\w*[\s\S])/gm, "$1:contributors\n\n") + + } + } + }) + + + // nitroApp.hooks.hook( + // 'content:file:afterParse', + // (file) => { + // if (file._id.endsWith('.md')) { + + // file.body.children.push({ + // type: "element", + // tag: 'article-doi-list', + // props: { + // items: [ + // { doi: '10.1016/j.mib.2005.06.006' }, + // { doi: '10.1016/j.mib.2005.06.006' }] + // }, + // children: [] + // }) + + // } + // }) +}) \ No newline at end of file