From b6d2b05d5efb8584657b52ff90a51624197e9fa1 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Wed, 18 Jan 2023 01:15:06 +0800 Subject: [PATCH] Disable mdx parsing in turbotrace (vercel/turbo#3304) It's not necessary to enable `MDX` parsing in turbotrace, and there was a parsing error that caused the build to fail when I was trying to enable turbotrace in `verce/site`: https://vercel.com/vercel/vercel-site/7pFWUVMWVAv3jC44WD2nBnwrbJpM Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- crates/node-file-trace/src/lib.rs | 14 +- crates/turbopack/src/module_options/mod.rs | 16 +- .../module_options/module_options_context.rs | 1 + crates/turbopack/tests/node-file-trace.rs | 1 + .../node-file-trace/integration/mdx/empty.js | 0 .../integration/mdx/example.mdx | 10 + .../node-file-trace/integration/mdx/index.js | 14 ++ .../integration/mdx/snowfall.jsx | 7 + .../tests/node-file-trace/package.json | 1 + .../tests/node-file-trace/pnpm-lock.yaml | 218 ++++++++++++++---- 10 files changed, 233 insertions(+), 49 deletions(-) create mode 100644 crates/turbopack/tests/node-file-trace/integration/mdx/empty.js create mode 100644 crates/turbopack/tests/node-file-trace/integration/mdx/example.mdx create mode 100644 crates/turbopack/tests/node-file-trace/integration/mdx/index.js create mode 100644 crates/turbopack/tests/node-file-trace/integration/mdx/snowfall.jsx diff --git a/crates/node-file-trace/src/lib.rs b/crates/node-file-trace/src/lib.rs index 76b559420271c..38eaf4c1b6fe8 100644 --- a/crates/node-file-trace/src/lib.rs +++ b/crates/node-file-trace/src/lib.rs @@ -125,6 +125,11 @@ pub struct CommonArgs { #[cfg_attr(feature = "cli", clap(short, long))] #[cfg_attr(feature = "node-api", serde(default))] exact: bool, + + /// Whether to enable mdx parsing while tracing dependencies + #[cfg_attr(feature = "cli", clap(short, long))] + #[cfg_attr(feature = "node-api", serde(default))] + enable_mdx: bool, } #[cfg_attr(feature = "cli", derive(Parser))] @@ -230,6 +235,7 @@ async fn input_to_modules<'a>( input: Vec, process_cwd: Option, exact: bool, + enable_mdx: bool, ) -> Result { let root = fs.root(); let env = EnvironmentVc::new( @@ -259,6 +265,7 @@ async fn input_to_modules<'a>( env, ModuleOptionsContext { enable_types: true, + enable_mdx, ..Default::default() } .cell(), @@ -513,6 +520,7 @@ async fn main_operation( ref input, watch, exact, + enable_mdx, ref context_directory, ref process_cwd, .. @@ -526,7 +534,7 @@ async fn main_operation( let input = process_input(&dir, &context, input).unwrap(); let mut result = BTreeSet::new(); let fs = create_fs("context directory", &context, watch).await?; - let modules = input_to_modules(fs, input, process_cwd, exact).await?; + let modules = input_to_modules(fs, input, process_cwd, exact, enable_mdx).await?; for module in modules.iter() { let set = all_assets(*module); IssueVc::attach_context(module.path(), "gathering list of assets".to_string(), set) @@ -544,7 +552,7 @@ async fn main_operation( let fs = create_fs("context directory", &context, watch).await?; let mut output_nft_assets = Vec::new(); let mut emits = Vec::new(); - for module in input_to_modules(fs, input, process_cwd, exact) + for module in input_to_modules(fs, input, process_cwd, exact, enable_mdx) .await? .iter() { @@ -570,7 +578,7 @@ async fn main_operation( let input_dir = fs.root(); let output_dir = out_fs.root(); let mut emits = Vec::new(); - for module in input_to_modules(fs, input, process_cwd, exact) + for module in input_to_modules(fs, input, process_cwd, exact, enable_mdx) .await? .iter() { diff --git a/crates/turbopack/src/module_options/mod.rs b/crates/turbopack/src/module_options/mod.rs index 702ac8ea1d83b..9e3b06ea69bcc 100644 --- a/crates/turbopack/src/module_options/mod.rs +++ b/crates/turbopack/src/module_options/mod.rs @@ -55,6 +55,7 @@ impl ModuleOptionsVc { enable_styled_components, enable_types, enable_typescript_transform, + enable_mdx, ref enable_postcss_transform, ref enable_webpack_loaders, preset_env_versions, @@ -128,12 +129,6 @@ impl ModuleOptionsVc { ModuleRuleCondition::ResourcePathEndsWith(".json".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Json)], ), - ModuleRule::new( - ModuleRuleCondition::ResourcePathEndsWith(".mdx".to_string()), - vec![ModuleRuleEffect::ModuleType(ModuleType::Mdx( - mdx_transforms, - ))], - ), ModuleRule::new( ModuleRuleCondition::ResourcePathEndsWith(".css".to_string()), [ @@ -238,6 +233,15 @@ impl ModuleOptionsVc { ), ]; + if enable_mdx { + rules.push(ModuleRule::new( + ModuleRuleCondition::ResourcePathEndsWith(".mdx".to_string()), + vec![ModuleRuleEffect::ModuleType(ModuleType::Mdx( + mdx_transforms, + ))], + )); + } + if let Some(webpack_loaders_options) = enable_webpack_loaders { let execution_context = execution_context .context("execution_context is required for webpack_loaders")? diff --git a/crates/turbopack/src/module_options/module_options_context.rs b/crates/turbopack/src/module_options/module_options_context.rs index 1949cf87622ea..ece5109e1f736 100644 --- a/crates/turbopack/src/module_options/module_options_context.rs +++ b/crates/turbopack/src/module_options/module_options_context.rs @@ -54,6 +54,7 @@ pub struct ModuleOptionsContext { pub enable_webpack_loaders: Option, pub enable_types: bool, pub enable_typescript_transform: bool, + pub enable_mdx: bool, pub preset_env_versions: Option, pub custom_ecmascript_app_transforms: Vec, pub custom_ecmascript_transforms: Vec, diff --git a/crates/turbopack/tests/node-file-trace.rs b/crates/turbopack/tests/node-file-trace.rs index b276fb2b002df..5483b4cf9b359 100644 --- a/crates/turbopack/tests/node-file-trace.rs +++ b/crates/turbopack/tests/node-file-trace.rs @@ -110,6 +110,7 @@ static ALLOC: turbo_malloc::TurboMalloc = turbo_malloc::TurboMalloc; #[case::mailgun("integration/mailgun.js")] #[case::mariadb("integration/mariadb.js")] #[case::memcached("integration/memcached.js")] +#[case::mdx("integration/mdx/index.js")] #[case::mongoose("integration/mongoose.js")] #[case::mysql("integration/mysql.js")] #[case::npm("integration/npm.js")] diff --git a/crates/turbopack/tests/node-file-trace/integration/mdx/empty.js b/crates/turbopack/tests/node-file-trace/integration/mdx/empty.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/crates/turbopack/tests/node-file-trace/integration/mdx/example.mdx b/crates/turbopack/tests/node-file-trace/integration/mdx/example.mdx new file mode 100644 index 0000000000000..f075575d4f495 --- /dev/null +++ b/crates/turbopack/tests/node-file-trace/integration/mdx/example.mdx @@ -0,0 +1,10 @@ +import {Chart} from './snowfall.jsx' +export const year = 2018 + +# Last year’s snowfall + +In {year}, the snowfall was above average. +It was followed by a warm spring which caused +flood conditions in many of the nearby rivers. + + diff --git a/crates/turbopack/tests/node-file-trace/integration/mdx/index.js b/crates/turbopack/tests/node-file-trace/integration/mdx/index.js new file mode 100644 index 0000000000000..6c67116b8c75e --- /dev/null +++ b/crates/turbopack/tests/node-file-trace/integration/mdx/index.js @@ -0,0 +1,14 @@ +const moduleAlias = require("module-alias"); +const os = require("os"); + +require("./empty"); + +moduleAlias.addAlias("./example.mdx", __dirname + "/empty.js"); + +const Example = require("./example.mdx"); + +const { existsSync } = eval("require")("fs"); + +if (__dirname.startsWith(os.tmpdir()) && existsSync("./snowfall.jsx")) { + throw new Error("snowfall.jsx should not exist"); +} diff --git a/crates/turbopack/tests/node-file-trace/integration/mdx/snowfall.jsx b/crates/turbopack/tests/node-file-trace/integration/mdx/snowfall.jsx new file mode 100644 index 0000000000000..ccbb34d9d08c1 --- /dev/null +++ b/crates/turbopack/tests/node-file-trace/integration/mdx/snowfall.jsx @@ -0,0 +1,7 @@ +export function Chart({ year, color }) { + return ( +
+ {year} - {color} +
+ ); +} diff --git a/crates/turbopack/tests/node-file-trace/package.json b/crates/turbopack/tests/node-file-trace/package.json index 8e5956b018a2c..f69efabbea004 100644 --- a/crates/turbopack/tests/node-file-trace/package.json +++ b/crates/turbopack/tests/node-file-trace/package.json @@ -68,6 +68,7 @@ "mailgun": "^0.5.0", "mariadb": "^2.0.5", "memcached": "^2.2.2", + "module-alias": "^2.2.2", "mongoose": "^5.7.5", "mysql": "^2.17.1", "npm": "^6.14.6", diff --git a/crates/turbopack/tests/node-file-trace/pnpm-lock.yaml b/crates/turbopack/tests/node-file-trace/pnpm-lock.yaml index fcd3d951df853..763af9a8cea09 100644 --- a/crates/turbopack/tests/node-file-trace/pnpm-lock.yaml +++ b/crates/turbopack/tests/node-file-trace/pnpm-lock.yaml @@ -71,6 +71,7 @@ importers: mailgun: ^0.5.0 mariadb: ^2.0.5 memcached: ^2.2.2 + module-alias: ^2.2.2 mongoose: ^5.7.5 mysql: ^2.17.1 npm: ^6.14.6 @@ -130,8 +131,8 @@ importers: '@google-cloud/bigquery': 4.7.0 '@google-cloud/firestore': 4.15.1 '@sentry/node': 5.30.0 - '@tensorflow/tfjs-node': 3.21.1 - '@tpluscode/sparql-builder': 0.3.24_sufudhb4ydobipwgremzchogk4 + '@tensorflow/tfjs-node': 3.21.1_rcmuo7smh7fzz6k3hklbpqge5m + '@tpluscode/sparql-builder': 0.3.24_slsvosy6xxqbautd42fx6h6cpe '@types/bindings': 1.5.1 '@types/debug': 4.1.7 '@types/estree': 0.0.47 @@ -170,7 +171,7 @@ importers: fast-glob: 3.2.12 fetch-h2: 2.5.1 firebase: 7.24.0 - firebase-admin: 9.12.0 + firebase-admin: 9.12.0_z647trzgxljldlenlw3uaenztq fluent-ffmpeg: 2.1.2 geo-tz: 7.0.3 got: 11.8.5 @@ -189,6 +190,7 @@ importers: mailgun: 0.5.0 mariadb: 2.5.6 memcached: 2.2.2 + module-alias: 2.2.2 mongoose: 5.13.15 mysql: 2.18.1 npm: 6.14.17 @@ -827,6 +829,16 @@ packages: tslib: 1.14.1 dev: true + /@firebase/app-compat/0.2.0: + resolution: {integrity: sha512-Y8Cpuheai61jCdVflt437I94n8cdRbXY0e1dQMmTWHCShJUfWwpa5y2ZMnxClWnorXy9hC/3yNZMVlu79f1zGA==} + dependencies: + '@firebase/app': 0.9.0 + '@firebase/component': 0.6.0 + '@firebase/logger': 0.4.0 + '@firebase/util': 1.8.0 + tslib: 2.4.0 + dev: true + /@firebase/app-types/0.6.1: resolution: {integrity: sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==} dev: true @@ -851,6 +863,16 @@ packages: xmlhttprequest: 1.8.0 dev: true + /@firebase/app/0.9.0: + resolution: {integrity: sha512-sa15stSK6FoGW4mCeAVDt0TvBFxPjvNcG2rhacGudOzMaW3g2TS326zXTFG+p5jnTCPZ2SO5TTSiGHn1NNcD9Q==} + dependencies: + '@firebase/component': 0.6.0 + '@firebase/logger': 0.4.0 + '@firebase/util': 1.8.0 + idb: 7.0.1 + tslib: 2.4.0 + dev: true + /@firebase/auth-interop-types/0.1.5_lte4mhp7x3upapyonwhuugbpfq: resolution: {integrity: sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==} peerDependencies: @@ -861,12 +883,13 @@ packages: '@firebase/util': 0.3.2 dev: true - /@firebase/auth-interop-types/0.1.6_@firebase+util@1.5.2: + /@firebase/auth-interop-types/0.1.6_uzaylzqz7y23sj27ypdw6yti3m: resolution: {integrity: sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==} peerDependencies: '@firebase/app-types': 0.x '@firebase/util': 1.x dependencies: + '@firebase/app-types': 0.7.0 '@firebase/util': 1.5.2 dev: true @@ -906,13 +929,21 @@ packages: tslib: 2.4.0 dev: true - /@firebase/database-compat/0.1.8: + /@firebase/component/0.6.0: + resolution: {integrity: sha512-9hyNc4OmrXMtthDJq6zyJHll/UIYBWYmMG3rXty2eMeWxHWB0vlsq3AOI+k14PL15aSBAQolv0EZJWVJv/gCEg==} + dependencies: + '@firebase/util': 1.8.0 + tslib: 2.4.0 + dev: true + + /@firebase/database-compat/0.1.8_z647trzgxljldlenlw3uaenztq: resolution: {integrity: sha512-dhXr5CSieBuKNdU96HgeewMQCT9EgOIkfF1GNy+iRrdl7BWLxmlKuvLfK319rmIytSs/vnCzcD9uqyxTeU/A3A==} peerDependencies: '@firebase/app-compat': 0.x dependencies: + '@firebase/app-compat': 0.2.0 '@firebase/component': 0.5.13 - '@firebase/database': 0.12.8 + '@firebase/database': 0.12.8_@firebase+app-types@0.7.0 '@firebase/database-types': 0.9.7 '@firebase/logger': 0.3.2 '@firebase/util': 1.5.2 @@ -940,10 +971,10 @@ packages: '@firebase/util': 1.5.2 dev: true - /@firebase/database/0.12.8: + /@firebase/database/0.12.8_@firebase+app-types@0.7.0: resolution: {integrity: sha512-JBQVfFLzfhxlQbl4OU6ov9fdsddkytBQdtSSR49cz48homj38ccltAhK6seum+BI7f28cV2LFHF9672lcN+qxA==} dependencies: - '@firebase/auth-interop-types': 0.1.6_@firebase+util@1.5.2 + '@firebase/auth-interop-types': 0.1.6_uzaylzqz7y23sj27ypdw6yti3m '@firebase/component': 0.5.13 '@firebase/logger': 0.3.2 '@firebase/util': 1.5.2 @@ -1047,6 +1078,12 @@ packages: tslib: 2.4.0 dev: true + /@firebase/logger/0.4.0: + resolution: {integrity: sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==} + dependencies: + tslib: 2.4.0 + dev: true + /@firebase/messaging-types/0.5.0_@firebase+app-types@0.6.1: resolution: {integrity: sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==} peerDependencies: @@ -1155,6 +1192,12 @@ packages: tslib: 2.4.0 dev: true + /@firebase/util/1.8.0: + resolution: {integrity: sha512-clK6pTTxIiLMYz4UrvDTVAs2rIaOiroAuFdX67C0JalvEwzi6Vv8li6xAGj38tkj7Qax06mosM1fQkxf2h4VTg==} + dependencies: + tslib: 2.4.0 + dev: true + /@firebase/webchannel-wrapper/0.4.0: resolution: {integrity: sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==} dev: true @@ -2389,7 +2432,7 @@ packages: - encoding dev: true - /@tensorflow/tfjs-data/3.21.0_aipmo6igpprgzt4umpaa3m6sn4: + /@tensorflow/tfjs-data/3.21.0_5g5qgh2bedza5bmf2zfn7wcrmu: resolution: {integrity: sha512-eFLfw2wIcFNxnP2Iv/SnVlihehzKMumk1b5Prcx1ixk/SbkCo5u0Lt7OVOWaEOKVqvB2sT+dJcTjAh6lrCC/QA==} peerDependencies: '@tensorflow/tfjs-core': 3.21.0 @@ -2398,6 +2441,7 @@ packages: '@tensorflow/tfjs-core': 3.21.0 '@types/node-fetch': 2.6.2 node-fetch: 2.6.7 + seedrandom: 3.0.5 string_decoder: 1.3.0 transitivePeerDependencies: - encoding @@ -2411,7 +2455,7 @@ packages: '@tensorflow/tfjs-core': 3.21.0 dev: true - /@tensorflow/tfjs-node/3.21.1: + /@tensorflow/tfjs-node/3.21.1_rcmuo7smh7fzz6k3hklbpqge5m: resolution: {integrity: sha512-WV77fiuux6E5RR7FRD8RL3yCruhoHjZMI9yybztGLItJwco2YVjHr6h4TOjaZcIMnxu9748iV118MN2ZeLXbdQ==} engines: {node: '>=8.11.0'} requiresBuild: true @@ -2419,7 +2463,8 @@ packages: '@tensorflow/tfjs-core': ^3.20.0 dependencies: '@mapbox/node-pre-gyp': 1.0.9 - '@tensorflow/tfjs': 3.21.0 + '@tensorflow/tfjs': 3.21.0_nxjg75y2zgl7lttraz7l4axffa + '@tensorflow/tfjs-core': 3.21.0 adm-zip: 0.5.9 google-protobuf: 3.21.2 https-proxy-agent: 2.2.4 @@ -2433,7 +2478,7 @@ packages: - supports-color dev: true - /@tensorflow/tfjs/3.21.0: + /@tensorflow/tfjs/3.21.0_nxjg75y2zgl7lttraz7l4axffa: resolution: {integrity: sha512-khcARd3/872llL/oF4ouR40qlT71mylU66PGT8kHP/GJ5YKj44sv8lDRjU7lOVlJK7jsJFWEsNVHI3eMc/GWNQ==} hasBin: true peerDependencies: @@ -2443,11 +2488,12 @@ packages: '@tensorflow/tfjs-backend-webgl': 3.21.0_aipmo6igpprgzt4umpaa3m6sn4 '@tensorflow/tfjs-converter': 3.21.0_aipmo6igpprgzt4umpaa3m6sn4 '@tensorflow/tfjs-core': 3.21.0 - '@tensorflow/tfjs-data': 3.21.0_aipmo6igpprgzt4umpaa3m6sn4 + '@tensorflow/tfjs-data': 3.21.0_5g5qgh2bedza5bmf2zfn7wcrmu '@tensorflow/tfjs-layers': 3.21.0_aipmo6igpprgzt4umpaa3m6sn4 argparse: 1.0.10 chalk: 4.1.2 core-js: 3.26.0 + long: 5.2.0 regenerator-runtime: 0.13.10 yargs: 16.2.0 transitivePeerDependencies: @@ -2466,7 +2512,7 @@ packages: dev: true optional: true - /@tpluscode/rdf-ns-builders/2.0.1_avxno5gj4nj53hmmkfaodbzpti: + /@tpluscode/rdf-ns-builders/2.0.1_yhkfgkr7iwowyhao5pbebc2kya: resolution: {integrity: sha512-P/pwfjhcj/JOZF3epheHiDd/f9tSkceydQBqBuqThpNX2NIg+4BSgwtG2YfKBa24mmGFfyzN6RVeFclhA8wZBw==} hasBin: true peerDependencies: @@ -2480,38 +2526,21 @@ packages: '@rdf-esm/namespace': 0.5.5 '@rdfjs/types': 1.1.0 '@zazuko/rdf-vocabularies': 2022.6.29 + clownface: 1.5.1 commander: 7.2.0 fs-extra: 10.1.0 + safe-identifier: 0.4.2 ts-morph: 15.1.0 ts-node: 10.9.1_sqjhzn5m3vxyw66a2xhtc43hby dev: true - /@tpluscode/rdf-ns-builders/2.0.1_sufudhb4ydobipwgremzchogk4: - resolution: {integrity: sha512-P/pwfjhcj/JOZF3epheHiDd/f9tSkceydQBqBuqThpNX2NIg+4BSgwtG2YfKBa24mmGFfyzN6RVeFclhA8wZBw==} - hasBin: true - peerDependencies: - '@zazuko/rdf-vocabularies': '*' - clownface: ^1 - safe-identifier: ^0.4.2 - ts-morph: '>=11' - ts-node: '>= 8' - dependencies: - '@rdf-esm/data-model': 0.5.4 - '@rdf-esm/namespace': 0.5.5 - '@rdfjs/types': 1.1.0 - commander: 7.2.0 - fs-extra: 10.1.0 - ts-morph: 15.1.0 - ts-node: 10.9.1_sqjhzn5m3vxyw66a2xhtc43hby - dev: true - - /@tpluscode/rdf-string/0.2.26_sufudhb4ydobipwgremzchogk4: + /@tpluscode/rdf-string/0.2.26_ojb5ngvomwtbjompogvvdlrvle: resolution: {integrity: sha512-zfNGMmY8D9jVuJ9qHwNrIWMwhibIkO42/1KtCfo59m4vXYTfJrXcn1ny9pj5kuhbpSubRbJ69zmYxP4UrXVPQw==} dependencies: '@rdf-esm/data-model': 0.5.4 '@rdf-esm/term-map': 0.5.1 '@rdfjs/types': 1.1.0 - '@tpluscode/rdf-ns-builders': 2.0.1_avxno5gj4nj53hmmkfaodbzpti + '@tpluscode/rdf-ns-builders': 2.0.1_yhkfgkr7iwowyhao5pbebc2kya '@zazuko/rdf-vocabularies': 2022.6.29 transitivePeerDependencies: - clownface @@ -2520,7 +2549,7 @@ packages: - ts-node dev: true - /@tpluscode/sparql-builder/0.3.24_sufudhb4ydobipwgremzchogk4: + /@tpluscode/sparql-builder/0.3.24_slsvosy6xxqbautd42fx6h6cpe: resolution: {integrity: sha512-5DjQafLbdAOn3BwHv6eianSfO8jV54IJDy8usY6rO8Rz81e+BkpdUcqzx9gHoghISVgffgq2hwSLL44Fa/PG+Q==} requiresBuild: true peerDependencies: @@ -2529,9 +2558,10 @@ packages: '@rdf-esm/data-model': 0.5.4 '@rdf-esm/term-set': 0.5.0 '@rdfjs/types': 1.1.0 - '@tpluscode/rdf-ns-builders': 2.0.1_sufudhb4ydobipwgremzchogk4 - '@tpluscode/rdf-string': 0.2.26_sufudhb4ydobipwgremzchogk4 + '@tpluscode/rdf-ns-builders': 2.0.1_yhkfgkr7iwowyhao5pbebc2kya + '@tpluscode/rdf-string': 0.2.26_ojb5ngvomwtbjompogvvdlrvle debug: 4.3.4 + sparql-http-client: 2.4.2 transitivePeerDependencies: - '@zazuko/rdf-vocabularies' - clownface @@ -4048,6 +4078,13 @@ packages: engines: {node: '>=10.0.0'} dev: true + /@zazuko/node-fetch/2.6.6: + resolution: {integrity: sha512-mrEqq7BJyNBlK5oT7U1S0EfLbFPpVHLXQJswhrN8Mv/3BKmWIBtMBaphK8AXF7XEhgK9vzRs/f3AIG8oHlPdpg==} + engines: {node: 4.x || >=6.0.0} + dependencies: + whatwg-url: 5.0.0 + dev: true + /@zazuko/rdf-vocabularies/2022.6.29: resolution: {integrity: sha512-E1IyTK3WfeeB0LAPxtDapcBPB+uizhYFGBgjK0z9xMnGIeWWtWb59jpGxLTfVjHMbGbxeTm/HPAKLwtB1gX1xQ==} hasBin: true @@ -5935,6 +5972,13 @@ packages: engines: {node: '>=0.8'} dev: true + /clownface/1.5.1: + resolution: {integrity: sha512-Ko8N/UFsnhEGmPlyE1bUFhbRhVgDbxqlIjcqxtLysc4dWaY0A7iCdg3savhAxs7Lheb7FCygIyRh7ADYZWVIng==} + dependencies: + '@rdfjs/data-model': 1.3.4 + '@rdfjs/namespace': 1.1.0 + dev: true + /cls-bluebird/2.1.0: resolution: {integrity: sha512-XVb0RPmHQyy35Tz9z34gvtUcBKUK8A/1xkGCyeFc9B0C7Zr5SysgFaswRVdwI5NEMcO+3JKlIDGIOgERSn9NdA==} dependencies: @@ -6555,6 +6599,14 @@ packages: luxon: 3.0.4 dev: true + /cross-fetch/3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + /cross-spawn/5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: @@ -8214,12 +8266,12 @@ packages: path-exists: 4.0.0 dev: true - /firebase-admin/9.12.0: + /firebase-admin/9.12.0_z647trzgxljldlenlw3uaenztq: resolution: {integrity: sha512-AtA7OH5RbIFGoc0gZOQgaYC6cdjdhZv4w3XgWoupkPKO1HY+0GzixOuXDa75kFeoVyhIyo4PkLg/GAC1dC1P6w==} engines: {node: '>=10.13.0'} requiresBuild: true dependencies: - '@firebase/database-compat': 0.1.8 + '@firebase/database-compat': 0.1.8_z647trzgxljldlenlw3uaenztq '@firebase/database-types': 0.7.3 '@types/node': 14.18.29 dicer: 0.3.1 @@ -9435,6 +9487,10 @@ packages: resolution: {integrity: sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==} dev: true + /idb/7.0.1: + resolution: {integrity: sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==} + dev: true + /ieee754/1.1.13: resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} dev: true @@ -11043,6 +11099,16 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /jsonstream2/3.0.0: + resolution: {integrity: sha512-8ngq2XB8NjYrpe3+Xtl9lFJl6RoV2dNT4I7iyaHwxUpTBwsj0AlAR7epGfeYVP0z4Z7KxMoSxRgJWrd2jmBT/Q==} + engines: {node: '>=5.10.0'} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through2: 3.0.2 + type-component: 0.0.1 + dev: true + /jsonwebtoken/8.5.1: resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} engines: {node: '>=4', npm: '>=1.4.28'} @@ -12388,6 +12454,10 @@ packages: obliterator: 1.6.1 dev: true + /module-alias/2.2.2: + resolution: {integrity: sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==} + dev: true + /module-deps/6.2.3: resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} engines: {node: '>= 0.8.0'} @@ -12807,6 +12877,18 @@ packages: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true + /nodeify-fetch/2.2.2: + resolution: {integrity: sha512-4b1Jysy9RGyya0wJpseTQyxUgSbx6kw9ocHTY0OFRXWlxa2Uy5PrSo/P/nwoUn59rBR9YKty2kd7g4LKXmsZVA==} + dependencies: + '@zazuko/node-fetch': 2.6.6 + concat-stream: 1.6.2 + cross-fetch: 3.1.5 + readable-error: 1.0.0 + readable-stream: 3.6.0 + transitivePeerDependencies: + - encoding + dev: true + /nodemailer-direct-transport/3.3.2: resolution: {integrity: sha512-vEMLWdUZP9NpbeabM8VTiB3Ar1R0ixASp/6DdKX372LK4USKB4Lq12/WCp69k/+kWk4RiCWWEGo57CcsXOs/bw==} dependencies: @@ -14062,6 +14144,10 @@ packages: dev: true optional: true + /promise-the-world/1.0.1: + resolution: {integrity: sha512-eAXctcYU0ksq9YT5LT0N3e8yvdEAp0aYuzIiaJo9CpZwga45i08MW05GMXZIow7N05d1o4EBoR5hjkb7jhzqKg==} + dev: true + /promise.prototype.finally/3.1.3: resolution: {integrity: sha512-EXRF3fC9/0gz4qkt/f5EP5iW4kj9oFpBICNpCNOb/52+8nlHIX07FPLbi/q4qYBQ1xZqivMzTpNQSnArVASolQ==} engines: {node: '>= 0.4'} @@ -14483,6 +14569,13 @@ packages: resolution: {integrity: sha512-1ocjoxovKc4+AyS4Tgtroay5R33yrtM2kQnAGvVaB0iGSRggukHxMJW0y8xTR7TwKZabS+7oMSQNMdbu/qTtCQ==} dev: true + /rdf-transform-triple-to-quad/1.0.2: + resolution: {integrity: sha512-cr8wgJcj+SvPLichNhWhUTyXHcoD1EVgajVmvbtwYbMRw479KAaW03TTviQaJAUqgcWzIzkrWLtWkrY2FgwryQ==} + dependencies: + '@rdfjs/data-model': 1.3.4 + readable-stream: 3.6.0 + dev: true + /react-dom/16.14.0_react@16.14.0: resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} requiresBuild: true @@ -14520,6 +14613,12 @@ packages: readable-stream: 2.3.7 dev: true + /readable-error/1.0.0: + resolution: {integrity: sha512-CLnInu5bUphmFiZ3pD/BC6+Cg4/BzK6ZMvWfd0b2QMzYo159Z/f/nVFQ9L5IeMrqUxy0EFsp3XJ+BRfLfY13IQ==} + dependencies: + readable-stream: 2.3.7 + dev: true + /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -14961,6 +15060,10 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-identifier/0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + dev: true + /safe-regex-test/1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -15096,6 +15199,12 @@ packages: lower-case: 1.1.4 dev: true + /separate-stream/1.0.1: + resolution: {integrity: sha512-UKFCzmddW2akOq40YdGehllv5gu6AD3y6nGSVuZuwI1kify2CiW7Zwsxx4ioaNLxx4LZaZMkcjdICHtSxpEpaA==} + dependencies: + readable-stream: 3.6.0 + dev: true + /sequelize-pool/2.3.0: resolution: {integrity: sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA==} engines: {node: '>= 6.0.0'} @@ -15535,6 +15644,24 @@ packages: engines: {node: '>= 8'} dev: true + /sparql-http-client/2.4.2: + resolution: {integrity: sha512-b7KBjs3BEJVQJAbWeaTx4EdBSOU1L0KfWLVgnkeRyBUoSTI8F1kTHuX7wzme/+UlfCS2zYsKGdpma5DwdaVRBQ==} + dependencies: + '@rdfjs/data-model': 1.3.4 + '@rdfjs/parser-n3': 1.1.4 + '@rdfjs/to-ntriples': 1.0.2 + get-stream: 5.2.0 + jsonstream2: 3.0.0 + lodash: 4.17.21 + nodeify-fetch: 2.2.2 + promise-the-world: 1.0.1 + rdf-transform-triple-to-quad: 1.0.2 + readable-stream: 3.6.0 + separate-stream: 1.0.1 + transitivePeerDependencies: + - encoding + dev: true + /sparse-bitfield/3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} dependencies: @@ -16332,6 +16459,13 @@ packages: xtend: 4.0.2 dev: true + /through2/3.0.2: + resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + /through2/4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: @@ -16648,6 +16782,10 @@ packages: prelude-ls: 1.1.2 dev: true + /type-component/0.0.1: + resolution: {integrity: sha512-mDZRBQS2yZkwRQKfjJvQ8UIYJeBNNWCq+HBNstl9N5s9jZ4dkVYXEGkVPsSCEh5Ld4JM1kmrZTzjnrqSAIQ7dw==} + dev: true + /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'}