From 97366ae97dd34976f89f574798d04b44f3a70520 Mon Sep 17 00:00:00 2001 From: Nell Hardcastle Date: Wed, 30 Oct 2024 11:01:57 -0700 Subject: [PATCH 1/4] fix: Use our fork of nifti-reader-js to fix console output bugs --- bids-validator/deno.json | 2 +- bids-validator/src/files/nifti.ts | 13 +------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/bids-validator/deno.json b/bids-validator/deno.json index 92b6a278..d3d4398a 100644 --- a/bids-validator/deno.json +++ b/bids-validator/deno.json @@ -35,7 +35,7 @@ "@hed/validator": "npm:hed-validator@3.15.5", "@ignore": "npm:ignore@5.3.2", "@libs/xml": "jsr:@libs/xml@5.4.13", - "@mango/nifti": "npm:nifti-reader-js@0.6.8", + "@mango/nifti": "npm:@bids/nifti-reader-js@0.6.9", "@std/assert": "jsr:@std/assert@1.0.2", "@std/fmt": "jsr:@std/fmt@1.0.0", "@std/fs": "jsr:@std/fs@1.0.1", diff --git a/bids-validator/src/files/nifti.ts b/bids-validator/src/files/nifti.ts index 41f49831..58a05895 100644 --- a/bids-validator/src/files/nifti.ts +++ b/bids-validator/src/files/nifti.ts @@ -27,22 +27,11 @@ async function extract(buffer: Uint8Array, nbytes: number): Promise return result } -function readHeaderQuiet(buf: ArrayBuffer) { - const console_error = console.error - const console_log = console.log - console.error = (msg: string) => { logger.info(msg)} - console.log = (msg: string) => { logger.info(msg)} - const header = readHeader(buf) - console.error = console_error - console.log = console_log - return header -} - export async function loadHeader(file: BIDSFile): Promise { try { const buf = await file.readBytes(1024) const data = isCompressed(buf.buffer) ? await extract(buf, 540) : buf - const header = readHeaderQuiet(data.buffer) + const header = readHeader(data.buffer) if (!header) { throw { key: 'NIFTI_HEADER_UNREADABLE' } } From beb0101485562e46eebf57d25d86d37893b6040c Mon Sep 17 00:00:00 2001 From: Alexander Jones Date: Fri, 25 Oct 2024 09:00:52 -0500 Subject: [PATCH 2/4] Fix legacy HED tests (which had several pieces of actually invalid data) --- bids-validator/tests/hed.spec.js | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/bids-validator/tests/hed.spec.js b/bids-validator/tests/hed.spec.js index 11ea1c5a..cf5fe8f1 100644 --- a/bids-validator/tests/hed.spec.js +++ b/bids-validator/tests/hed.spec.js @@ -27,7 +27,7 @@ describe('HED', function () { ] const jsonDictionary = { '/sub01/sub01_task-test_events.json': { - myCodes: { + test: { HED: { one: 'Duration/5 s', }, @@ -55,12 +55,8 @@ describe('HED', function () { ] const jsonDictionary = { '/sub01/sub01_task-test_events.json': { - myCodes: { - test: { - HED: { - one: 'Label/#', - }, - }, + test: { + HED: 'Label/#', }, }, '/dataset_description.json': { HEDVersion: '8.0.0' }, @@ -86,11 +82,9 @@ describe('HED', function () { const jsonDictionary = { '/sub01/sub01_task-test_events.json': { - myCodes: { - test: { - HED: { - one: 'ts:Sensory-presentation, Label/#', - }, + test: { + HED: { + one: 'ts:Sensory-presentation, Train', }, }, }, @@ -148,11 +142,9 @@ describe('HED', function () { const jsonDictionary = { '/sub01/sub01_task-test_events.json': { - myCodes: { - test: { - HED: { - one: 'ts:Sensory-presentation, Label/#, sc:Sleep-deprivation', - }, + test: { + HED: { + one: 'ts:Sensory-presentation, Walk, sc:Sleep-deprivation', }, }, }, @@ -260,7 +252,7 @@ describe('HED', function () { ] const jsonDictionary = { '/sub01/sub01_task-test_events.json': { - myCodes: { + test: { HED: { one: 'Duration/5 s', }, From a656a9c619e25ef5a2c51aeb0a9e7514d1e17e9c Mon Sep 17 00:00:00 2001 From: Alexander Jones Date: Wed, 30 Oct 2024 20:54:27 -0500 Subject: [PATCH 3/4] Fix handling of IssueErrors thrown from hed-validator (second attempt) This does not issue warnings for missing HEDVersion fields for every dataset. --- bids-validator/validators/hed.js | 60 ++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/bids-validator/validators/hed.js b/bids-validator/validators/hed.js index 4dde02b4..59ea86c5 100644 --- a/bids-validator/validators/hed.js +++ b/bids-validator/validators/hed.js @@ -29,32 +29,24 @@ async function checkHedStrings(tsvs, jsonContents, jsonFiles) { ) } - const issues = [] - for (const [sidecarName, sidecarContents] of Object.entries(jsonContents)) { - try { - const sidecarFile = buildSidecar(sidecarName, sidecarContents, jsonFiles) - issues.push(...validateFile(sidecarFile, hedSchemas)) - } catch (e) { - issues.push(new Issue({ code: 109 })) - return issues - } - } + const sidecarIssues = validateFiles( + buildSidecars(jsonContents, jsonFiles), + hedSchemas, + ) - if (issues.some((issue) => issue.isError())) { - return issues + if (sidecarIssues.some((issue) => issue.isError() || issue.code === 109)) { + return sidecarIssues } - for (const tsv of tsvs) { - try { - const tsvFile = buildTsv(tsv, jsonContents) - issues.push(...validateFile(tsvFile, hedSchemas)) - } catch (e) { - issues.push(new Issue({ code: 109 })) - return issues - } - } + const tsvIssues = validateFiles(buildTsvs(tsvs, jsonContents), hedSchemas) - return issues + return [...sidecarIssues, ...tsvIssues] +} + +function* buildSidecars(jsonContents, jsonFiles) { + for (const [sidecarName, sidecarContents] of Object.entries(jsonContents)) { + yield buildSidecar(sidecarName, sidecarContents, jsonFiles) + } } function buildSidecar(sidecarName, sidecarContents, jsonFiles) { @@ -63,6 +55,12 @@ function buildSidecar(sidecarName, sidecarContents, jsonFiles) { return new hedValidator.bids.BidsSidecar(sidecarName, sidecarContents, file) } +function* buildTsvs(tsvs, jsonContents) { + for (const tsv of tsvs) { + yield buildTsv(tsv, jsonContents) + } +} + function buildTsv(tsv, jsonContents) { const potentialSidecars = utils.files.potentialLocations( tsv.file.relativePath.replace('.tsv', '.json'), @@ -81,12 +79,20 @@ function buildTsv(tsv, jsonContents) { ) } -function validateFile(file, hedSchemas) { - const issues = file.validate(hedSchemas) - if (issues === null) { - throw new Error() +function validateFiles(fileGenerator, hedSchemas) { + const issues = [] + for (const file of fileGenerator) { + try { + const fileIssues = file.validate(hedSchemas) + if (fileIssues === null) { + return [new hedValidator.bids.BidsIssue(109)] + } + issues.push(fileIssues) + } catch (issueError) { + return hedValidator.bids.BidsHedIssue.fromHedIssues(issueError, file.file) + } } - return issues + return issues.flat() } function getSidecarFileObject(sidecarName, jsonFiles) { From eaf1f86d349ad40b98f7503075704974571742ec Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 13:27:09 +0000 Subject: [PATCH 4/4] Update all npm dependencies (2024-10-31) --- bids-validator-web/package.json | 4 +- bids-validator/package.json | 4 +- package-lock.json | 265 +++++++++++++++++--------------- 3 files changed, 144 insertions(+), 129 deletions(-) diff --git a/bids-validator-web/package.json b/bids-validator-web/package.json index 9abd4978..1421ecc2 100644 --- a/bids-validator-web/package.json +++ b/bids-validator-web/package.json @@ -7,7 +7,7 @@ "dependencies": { "@babel/runtime": "^7.22.10", "bootstrap": "^5.3.3", - "eslint-config-next": "^14.2.13", + "eslint-config-next": "^14.2.15", "next": "^14.0.0", "pluralize": "^8.0.0", "react": "^18.3.1", @@ -21,6 +21,6 @@ "start": "next start" }, "devDependencies": { - "@next/eslint-plugin-next": "^14.2.13" + "@next/eslint-plugin-next": "^14.2.15" } } diff --git a/bids-validator/package.json b/bids-validator/package.json index 3b330701..2bbbbaec 100644 --- a/bids-validator/package.json +++ b/bids-validator/package.json @@ -45,7 +45,7 @@ "date-fns": "^4.1.0", "events": "^3.3.0", "exifreader": "^4.23.7", - "hed-validator": "^3.15.4", + "hed-validator": "^3.15.5", "ignore": "^6.0.2", "is-utf8": "^0.2.1", "jest": "^29.7.0", @@ -53,7 +53,7 @@ "lerna": "^8.1.8", "lodash": "^4.17.21", "minimatch": "3.0.5", - "next": "14.2.13", + "next": "14.2.15", "nifti-js": "^1.0.1", "p-limit": "^2.1.0", "pako": "^1.0.6", diff --git a/package-lock.json b/package-lock.json index 11c68edd..3a109b42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ "date-fns": "^4.1.0", "events": "^3.3.0", "exifreader": "^4.23.7", - "hed-validator": "^3.15.4", + "hed-validator": "3.15.5", "ignore": "^6.0.2", "is-utf8": "^0.2.1", "jest": "^29.7.0", @@ -45,7 +45,7 @@ "lerna": "^8.1.8", "lodash": "^4.17.21", "minimatch": "3.0.5", - "next": "14.2.13", + "next": "14.2.15", "nifti-js": "^1.0.1", "p-limit": "^2.1.0", "pako": "^1.0.6", @@ -64,7 +64,7 @@ }, "devDependencies": { "adm-zip": "", - "chai": "", + "chai": "5.1.2", "esbuild": "^0.24.0", "esbuild-plugin-globals": "^0.2.0", "esbuild-runner": "^2.2.2", @@ -85,8 +85,8 @@ "dependencies": { "@babel/runtime": "^7.22.10", "bootstrap": "^5.3.3", - "eslint-config-next": "^14.2.13", - "next": "^14.0.0", + "eslint-config-next": "14.2.15", + "next": "14.2.15", "pluralize": "^8.0.0", "react": "^18.3.1", "react-bootstrap": "^2.10.5", @@ -94,7 +94,7 @@ "sass": "^1.79.4" }, "devDependencies": { - "@next/eslint-plugin-next": "^14.2.13" + "@next/eslint-plugin-next": "14.2.15" } }, "bids-validator/node_modules/date-fns": { @@ -4283,14 +4283,14 @@ } }, "node_modules/@next/env": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz", - "integrity": "sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==" + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz", + "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==" }, "node_modules/@next/eslint-plugin-next": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.13.tgz", - "integrity": "sha512-z8Mk0VljxhIzsSiZUSdt3wp+t2lKd+jk5a9Jsvh3zDGkItgDMfjv/ZbET6HsxEl/fSihVoHGsXV6VLyDH0lfTQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.15.tgz", + "integrity": "sha512-pKU0iqKRBlFB/ocOI1Ip2CkKePZpYpnw5bEItEkuZ/Nr9FQP1+p7VDWr4VfOdff4i9bFmrOaeaU1bFEyAcxiMQ==", "dependencies": { "glob": "10.3.10" } @@ -4339,9 +4339,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz", - "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", + "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==", "cpu": [ "arm64" ], @@ -4354,9 +4354,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz", - "integrity": "sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz", + "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==", "cpu": [ "x64" ], @@ -4369,9 +4369,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz", - "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz", + "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==", "cpu": [ "arm64" ], @@ -4384,9 +4384,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz", - "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz", + "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==", "cpu": [ "arm64" ], @@ -4399,9 +4399,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz", - "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz", + "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==", "cpu": [ "x64" ], @@ -4414,9 +4414,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz", - "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz", + "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==", "cpu": [ "x64" ], @@ -4429,9 +4429,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz", - "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz", + "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==", "cpu": [ "arm64" ], @@ -4444,9 +4444,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz", - "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz", + "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==", "cpu": [ "ia32" ], @@ -4459,9 +4459,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz", - "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz", + "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==", "cpu": [ "x64" ], @@ -7719,9 +7719,9 @@ "dev": true }, "node_modules/chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", "dev": true, "dependencies": { "assertion-error": "^2.0.1", @@ -9219,11 +9219,11 @@ } }, "node_modules/eslint-config-next": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.13.tgz", - "integrity": "sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.15.tgz", + "integrity": "sha512-mKg+NC/8a4JKLZRIOBplxXNdStgxy7lzWuedUaCc8tev+Al9mwDUTujQH6W6qXDH9kycWiVo28tADWGvpBsZcQ==", "dependencies": { - "@next/eslint-plugin-next": "14.2.13", + "@next/eslint-plugin-next": "14.2.15", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -10898,9 +10898,9 @@ } }, "node_modules/hed-validator": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/hed-validator/-/hed-validator-3.15.4.tgz", - "integrity": "sha512-40Jbd5CQ3mShQtJKQyYUiNB8Ym4FrLq21zzaQ067Mxj/9ILSJanx+Pmab4G1vVBl45NPLU9wLFvo+5YDomzlWA==", + "version": "3.15.5", + "resolved": "https://registry.npmjs.org/hed-validator/-/hed-validator-3.15.5.tgz", + "integrity": "sha512-os1Q2ecNT2QwVLHISjjHKvodW3cyuSnOKCadjggcMd7f6QmMwuSg1E4pyqOX2MxruMbAt4/K4Qiju+lIUm89iQ==", "dependencies": { "buffer": "^6.0.3", "cross-fetch": "^4.0.0", @@ -10912,6 +10912,7 @@ "pluralize": "^8.0.0", "semver": "^7.6.0", "string_decoder": "^1.3.0", + "unicode-name": "^1.0.2", "xml2js": "^0.6.2" }, "engines": { @@ -14950,11 +14951,11 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/next": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.13.tgz", - "integrity": "sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz", + "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==", "dependencies": { - "@next/env": "14.2.13", + "@next/env": "14.2.15", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -14969,15 +14970,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.13", - "@next/swc-darwin-x64": "14.2.13", - "@next/swc-linux-arm64-gnu": "14.2.13", - "@next/swc-linux-arm64-musl": "14.2.13", - "@next/swc-linux-x64-gnu": "14.2.13", - "@next/swc-linux-x64-musl": "14.2.13", - "@next/swc-win32-arm64-msvc": "14.2.13", - "@next/swc-win32-ia32-msvc": "14.2.13", - "@next/swc-win32-x64-msvc": "14.2.13" + "@next/swc-darwin-arm64": "14.2.15", + "@next/swc-darwin-x64": "14.2.15", + "@next/swc-linux-arm64-gnu": "14.2.15", + "@next/swc-linux-arm64-musl": "14.2.15", + "@next/swc-linux-x64-gnu": "14.2.15", + "@next/swc-linux-x64-musl": "14.2.15", + "@next/swc-win32-arm64-msvc": "14.2.15", + "@next/swc-win32-ia32-msvc": "14.2.15", + "@next/swc-win32-x64-msvc": "14.2.15" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -18657,6 +18658,14 @@ "node": ">=4" } }, + "node_modules/unicode-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-name/-/unicode-name-1.0.4.tgz", + "integrity": "sha512-Y8KWGWHyZo5MVHsdjSFIshZesmQbLkh0l7RAv4uFNgVMjBIaCWVZAzch5b9jKaMHDnhroebDoM79/lLpzBLKvQ==", + "engines": { + "node": ">=18.20" + } + }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", @@ -22318,14 +22327,14 @@ } }, "@next/env": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz", - "integrity": "sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==" + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz", + "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==" }, "@next/eslint-plugin-next": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.13.tgz", - "integrity": "sha512-z8Mk0VljxhIzsSiZUSdt3wp+t2lKd+jk5a9Jsvh3zDGkItgDMfjv/ZbET6HsxEl/fSihVoHGsXV6VLyDH0lfTQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.15.tgz", + "integrity": "sha512-pKU0iqKRBlFB/ocOI1Ip2CkKePZpYpnw5bEItEkuZ/Nr9FQP1+p7VDWr4VfOdff4i9bFmrOaeaU1bFEyAcxiMQ==", "requires": { "glob": "10.3.10" }, @@ -22361,57 +22370,57 @@ } }, "@next/swc-darwin-arm64": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz", - "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", + "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==", "optional": true }, "@next/swc-darwin-x64": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz", - "integrity": "sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz", + "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==", "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz", - "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz", + "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==", "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz", - "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz", + "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==", "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz", - "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz", + "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==", "optional": true }, "@next/swc-linux-x64-musl": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz", - "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz", + "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==", "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz", - "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz", + "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==", "optional": true }, "@next/swc-win32-ia32-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz", - "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz", + "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==", "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz", - "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz", + "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==", "optional": true }, "@nodelib/fs.scandir": { @@ -24591,7 +24600,7 @@ "adm-zip": "", "ajv": "^6.5.2", "bytes": "^3.1.2", - "chai": "", + "chai": "5.1.2", "colors": "^1.4.0", "cross-fetch": "^4.0.0", "date-fns": "^4.1.0", @@ -24603,7 +24612,7 @@ "eslint-plugin-prettier": "^5.2.1", "events": "^3.3.0", "exifreader": "^4.23.7", - "hed-validator": "^3.15.4", + "hed-validator": "3.15.5", "husky": "^9.1.6", "ignore": "^6.0.2", "is-utf8": "^0.2.1", @@ -24613,7 +24622,7 @@ "lockfile": "^1.0.4", "lodash": "^4.17.21", "minimatch": "3.0.5", - "next": "14.2.13", + "next": "14.2.15", "nifti-js": "^1.0.1", "p-limit": "^2.1.0", "pako": "^1.0.6", @@ -24650,10 +24659,10 @@ "version": "file:bids-validator-web", "requires": { "@babel/runtime": "^7.22.10", - "@next/eslint-plugin-next": "^14.2.13", + "@next/eslint-plugin-next": "14.2.15", "bootstrap": "^5.3.3", - "eslint-config-next": "^14.2.13", - "next": "^14.0.0", + "eslint-config-next": "14.2.15", + "next": "14.2.15", "pluralize": "^8.0.0", "react": "^18.3.1", "react-bootstrap": "^2.10.5", @@ -24890,9 +24899,9 @@ "dev": true }, "chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", "dev": true, "requires": { "assertion-error": "^2.0.1", @@ -26178,11 +26187,11 @@ } }, "eslint-config-next": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.13.tgz", - "integrity": "sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.15.tgz", + "integrity": "sha512-mKg+NC/8a4JKLZRIOBplxXNdStgxy7lzWuedUaCc8tev+Al9mwDUTujQH6W6qXDH9kycWiVo28tADWGvpBsZcQ==", "requires": { - "@next/eslint-plugin-next": "14.2.13", + "@next/eslint-plugin-next": "14.2.15", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -27203,9 +27212,9 @@ } }, "hed-validator": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/hed-validator/-/hed-validator-3.15.4.tgz", - "integrity": "sha512-40Jbd5CQ3mShQtJKQyYUiNB8Ym4FrLq21zzaQ067Mxj/9ILSJanx+Pmab4G1vVBl45NPLU9wLFvo+5YDomzlWA==", + "version": "3.15.5", + "resolved": "https://registry.npmjs.org/hed-validator/-/hed-validator-3.15.5.tgz", + "integrity": "sha512-os1Q2ecNT2QwVLHISjjHKvodW3cyuSnOKCadjggcMd7f6QmMwuSg1E4pyqOX2MxruMbAt4/K4Qiju+lIUm89iQ==", "requires": { "buffer": "^6.0.3", "cross-fetch": "^4.0.0", @@ -27217,6 +27226,7 @@ "pluralize": "^8.0.0", "semver": "^7.6.0", "string_decoder": "^1.3.0", + "unicode-name": "^1.0.2", "xml2js": "^0.6.2" }, "dependencies": { @@ -30166,20 +30176,20 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "next": { - "version": "14.2.13", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.13.tgz", - "integrity": "sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==", - "requires": { - "@next/env": "14.2.13", - "@next/swc-darwin-arm64": "14.2.13", - "@next/swc-darwin-x64": "14.2.13", - "@next/swc-linux-arm64-gnu": "14.2.13", - "@next/swc-linux-arm64-musl": "14.2.13", - "@next/swc-linux-x64-gnu": "14.2.13", - "@next/swc-linux-x64-musl": "14.2.13", - "@next/swc-win32-arm64-msvc": "14.2.13", - "@next/swc-win32-ia32-msvc": "14.2.13", - "@next/swc-win32-x64-msvc": "14.2.13", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz", + "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==", + "requires": { + "@next/env": "14.2.15", + "@next/swc-darwin-arm64": "14.2.15", + "@next/swc-darwin-x64": "14.2.15", + "@next/swc-linux-arm64-gnu": "14.2.15", + "@next/swc-linux-arm64-musl": "14.2.15", + "@next/swc-linux-x64-gnu": "14.2.15", + "@next/swc-linux-x64-musl": "14.2.15", + "@next/swc-win32-arm64-msvc": "14.2.15", + "@next/swc-win32-ia32-msvc": "14.2.15", + "@next/swc-win32-x64-msvc": "14.2.15", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -32881,6 +32891,11 @@ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, + "unicode-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-name/-/unicode-name-1.0.4.tgz", + "integrity": "sha512-Y8KWGWHyZo5MVHsdjSFIshZesmQbLkh0l7RAv4uFNgVMjBIaCWVZAzch5b9jKaMHDnhroebDoM79/lLpzBLKvQ==" + }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",