diff --git a/EHR_App/jest.config.js b/EHR_App/jest.config.js index 7e0447d6d..ca687170f 100644 --- a/EHR_App/jest.config.js +++ b/EHR_App/jest.config.js @@ -36,6 +36,7 @@ module.exports = { }, moduleFileExtensions: ['ts', 'tsx', 'js'], roots: [''], + setupFiles: ['./src/client/test/jest.polyfills.ts'], setupFilesAfterEnv: [ './src/client/test/jest.setup.ts' ], diff --git a/EHR_App/package-lock.json b/EHR_App/package-lock.json index 7dadc514f..a201c6cc4 100644 --- a/EHR_App/package-lock.json +++ b/EHR_App/package-lock.json @@ -8,11 +8,11 @@ "name": "EHR_App", "version": "0.0.0", "dependencies": { - "@labkey/components": "7.55.2", - "@labkey/ehr": "0.0.9" + "@labkey/components": "7.58.1", + "@labkey/ehr": "0.0.10" }, "devDependencies": { - "@labkey/build": "10.1.0", + "@labkey/build": "10.1.2", "@labkey/eslint-config": "1.2.3", "@types/jest": "30.0.0", "@types/react": "18.3.31", @@ -2472,14 +2472,14 @@ "license": "Apache-2.0" }, "node_modules/@labkey/build": { - "version": "10.1.0", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-10.1.0.tgz", - "integrity": "sha512-ZFU+Cy4lTX8wlAu8Pbead/dd5GOlc/s0ghuSPVpYiGyygToTgYaD5PgGsI7H2l6TfKk8V1fq1uCuLDBhx2bJig==", + "version": "10.1.2", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-10.1.2.tgz", + "integrity": "sha512-Qu0KJvxWpwZ8cxbTiNBzMgZEK9UyuuDrE1K0z/zccUIYRt8IYAyd4rgW4mChXqux/CeDAcatMdh6qfPFNUAGDQ==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@rspack/cli": "~2.1.8", - "@rspack/core": "~2.1.8", + "@rspack/cli": "~2.1.9", + "@rspack/core": "~2.1.9", "@rspack/dev-server": "~2.2.0", "@rspack/plugin-react-refresh": "~2.0.2", "bootstrap-sass": "~3.4.3", @@ -2500,9 +2500,9 @@ } }, "node_modules/@labkey/components": { - "version": "7.55.2", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.55.2.tgz", - "integrity": "sha512-PqjPJwF4QVRooUOv4eBJ6gpCMJ+rpOM1TfUf35/eA8MLvceaWyYlBb0ORaPrLhp5l3jiivmEXFGTXIP8stCgdg==", + "version": "7.58.1", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.58.1.tgz", + "integrity": "sha512-bgsETI9c7mOAY8/1sxoEWK8py40+YF4pUOxcWU2PdSObPHS/Ncv66nZCvB7l7GNDfghQnD4E8x01Ze6lvpoMmQ==", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", @@ -2511,13 +2511,12 @@ "@testing-library/jest-dom": "~7.0.1", "@testing-library/react": "~16.3.2", "@testing-library/user-event": "~14.6.1", - "bootstrap": "~3.4.1", "classnames": "~2.5.1", "date-fns": "~3.6.0", "date-fns-tz": "~3.2.0", "font-awesome": "~4.7.0", "immer": "~11.1.15", - "immutable": "~3.8.3", + "immutable": "~3.8.4", "normalizr": "~3.6.2", "numeral": "~2.0.6", "papaparse": "5.5.4", @@ -2525,7 +2524,7 @@ "react-color": "~2.19.3", "react-datepicker": "~7.6.0", "react-dom": "~18.3.1", - "react-router-dom": "~6.30.4", + "react-router": "~7.18.2", "react-select": "~5.10.2", "react-treebeard": "~3.2.4", "vis-data": "~8.0.3", @@ -2533,12 +2532,12 @@ } }, "node_modules/@labkey/ehr": { - "version": "0.0.9", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/ehr/-/@labkey/ehr-0.0.9.tgz", - "integrity": "sha512-EqxMiA3YdvamJbzpLLZ4jAGFEzZkE078q9zh6+xirQ5RjPZ8YO20YA0TW3Y99dsoz7q6WPkviksEqPhLh3TMLg==", + "version": "0.0.10", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/ehr/-/@labkey/ehr-0.0.10.tgz", + "integrity": "sha512-H3Q3/ZeqkWP52Pi/uhT9m0pp/6iNo3kmb6qN2yT6/EBdot1dUlcqwTMK+I9tZvL021fa6iVJkZCK4ZAZ1IGU0A==", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@labkey/components": "7.55.2" + "@labkey/components": "7.58.1" } }, "node_modules/@labkey/eslint-config": { @@ -3139,15 +3138,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@remix-run/router": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.3.tgz", - "integrity": "sha512-4An71tdz9X8+3sI4Qqqd2LWd9vS39J7sqd9EU4Scw7TJE/qB10Flv/UuqbPVgfQV9XoK8Np6jNquZitnZq5i+Q==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@rspack/binding": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.1.9.tgz", @@ -5202,16 +5192,6 @@ "dev": true, "license": "ISC" }, - "node_modules/bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/bootstrap-sass": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", @@ -5628,6 +5608,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -8012,9 +8005,9 @@ } }, "node_modules/immutable": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.3.tgz", - "integrity": "sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.4.tgz", + "integrity": "sha512-ZQv17KolYrYmsDoDB8N67zhIKsNi9mGYlk96y/yuxyAqJB2hLzSGSM7k/sB0/ZvO4kx27U9+fBeD/XlLGh/uXQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11223,35 +11216,25 @@ } }, "node_modules/react-router": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.4.tgz", - "integrity": "sha512-SVUsDe+DybHM/WmYKIVYhZh1o5Dcuf16yM6WjG02Q9XVFMZIJyHYhwrr6bFBXZkVP6z69kNkMyBCujt8FaFLJA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.2.tgz", + "integrity": "sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.3" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.4.tgz", - "integrity": "sha512-q4HvNl+mmDdkS0g+MqiBZNteQJCuimWoOyHMy4T/RQLAn9Z29+E91QXRaxOujeMl2HTzRSS0KFPd7lxX3PjV0Q==", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.3", - "react-router": "6.30.4" + "react": ">=18", + "react-dom": ">=18" }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "node_modules/react-select": { @@ -11806,6 +11789,12 @@ "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/EHR_App/package.json b/EHR_App/package.json index 230db1127..fe8206d30 100644 --- a/EHR_App/package.json +++ b/EHR_App/package.json @@ -21,11 +21,11 @@ "lint-branch-fix": "node lint.diff.mjs --currentBranch --fix" }, "dependencies": { - "@labkey/components": "7.55.2", - "@labkey/ehr": "0.0.9" + "@labkey/components": "7.58.1", + "@labkey/ehr": "0.0.10" }, "devDependencies": { - "@labkey/build": "10.1.0", + "@labkey/build": "10.1.2", "@labkey/eslint-config": "1.2.3", "@types/jest": "30.0.0", "@types/react": "18.3.31", diff --git a/EHR_App/src/client/test/jest.polyfills.ts b/EHR_App/src/client/test/jest.polyfills.ts new file mode 100644 index 000000000..627453657 --- /dev/null +++ b/EHR_App/src/client/test/jest.polyfills.ts @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2026 LabKey Corporation. All rights reserved. No portion of this work may be reproduced + * in any form or by any electronic or mechanical means without written permission from LabKey Corporation. + */ +import { TextDecoder, TextEncoder } from 'util'; + +// JSDom treats TextEncoder/TextDecoder as Node globals and omits them, but react-router constructs an encoder at module +// scope, so anything importing it throws before a test can run. Browsers provide these natively. +globalThis.TextEncoder = TextEncoder; +globalThis.TextDecoder = TextDecoder as typeof globalThis.TextDecoder; diff --git a/ehr/package-lock.json b/ehr/package-lock.json index d1b7d366e..b76916125 100644 --- a/ehr/package-lock.json +++ b/ehr/package-lock.json @@ -9,11 +9,11 @@ "version": "0.0.0", "dependencies": { "@labkey/api": "1.51.4", - "@labkey/components": "7.55.2", - "@labkey/ehr": "0.0.9" + "@labkey/components": "7.58.1", + "@labkey/ehr": "0.0.10" }, "devDependencies": { - "@labkey/build": "10.1.0", + "@labkey/build": "10.1.2", "@labkey/eslint-config": "1.2.3", "@types/jest": "30.0.0", "@types/react": "18.3.31", @@ -2473,14 +2473,14 @@ "license": "Apache-2.0" }, "node_modules/@labkey/build": { - "version": "10.1.0", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-10.1.0.tgz", - "integrity": "sha512-ZFU+Cy4lTX8wlAu8Pbead/dd5GOlc/s0ghuSPVpYiGyygToTgYaD5PgGsI7H2l6TfKk8V1fq1uCuLDBhx2bJig==", + "version": "10.1.2", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-10.1.2.tgz", + "integrity": "sha512-Qu0KJvxWpwZ8cxbTiNBzMgZEK9UyuuDrE1K0z/zccUIYRt8IYAyd4rgW4mChXqux/CeDAcatMdh6qfPFNUAGDQ==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@rspack/cli": "~2.1.8", - "@rspack/core": "~2.1.8", + "@rspack/cli": "~2.1.9", + "@rspack/core": "~2.1.9", "@rspack/dev-server": "~2.2.0", "@rspack/plugin-react-refresh": "~2.0.2", "bootstrap-sass": "~3.4.3", @@ -2501,9 +2501,9 @@ } }, "node_modules/@labkey/components": { - "version": "7.55.2", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.55.2.tgz", - "integrity": "sha512-PqjPJwF4QVRooUOv4eBJ6gpCMJ+rpOM1TfUf35/eA8MLvceaWyYlBb0ORaPrLhp5l3jiivmEXFGTXIP8stCgdg==", + "version": "7.58.1", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.58.1.tgz", + "integrity": "sha512-bgsETI9c7mOAY8/1sxoEWK8py40+YF4pUOxcWU2PdSObPHS/Ncv66nZCvB7l7GNDfghQnD4E8x01Ze6lvpoMmQ==", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", @@ -2512,13 +2512,12 @@ "@testing-library/jest-dom": "~7.0.1", "@testing-library/react": "~16.3.2", "@testing-library/user-event": "~14.6.1", - "bootstrap": "~3.4.1", "classnames": "~2.5.1", "date-fns": "~3.6.0", "date-fns-tz": "~3.2.0", "font-awesome": "~4.7.0", "immer": "~11.1.15", - "immutable": "~3.8.3", + "immutable": "~3.8.4", "normalizr": "~3.6.2", "numeral": "~2.0.6", "papaparse": "5.5.4", @@ -2526,7 +2525,7 @@ "react-color": "~2.19.3", "react-datepicker": "~7.6.0", "react-dom": "~18.3.1", - "react-router-dom": "~6.30.4", + "react-router": "~7.18.2", "react-select": "~5.10.2", "react-treebeard": "~3.2.4", "vis-data": "~8.0.3", @@ -2540,12 +2539,12 @@ "license": "Apache-2.0" }, "node_modules/@labkey/ehr": { - "version": "0.0.9", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/ehr/-/@labkey/ehr-0.0.9.tgz", - "integrity": "sha512-EqxMiA3YdvamJbzpLLZ4jAGFEzZkE078q9zh6+xirQ5RjPZ8YO20YA0TW3Y99dsoz7q6WPkviksEqPhLh3TMLg==", + "version": "0.0.10", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/ehr/-/@labkey/ehr-0.0.10.tgz", + "integrity": "sha512-H3Q3/ZeqkWP52Pi/uhT9m0pp/6iNo3kmb6qN2yT6/EBdot1dUlcqwTMK+I9tZvL021fa6iVJkZCK4ZAZ1IGU0A==", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@labkey/components": "7.55.2" + "@labkey/components": "7.58.1" } }, "node_modules/@labkey/eslint-config": { @@ -3146,15 +3145,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@remix-run/router": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.3.tgz", - "integrity": "sha512-4An71tdz9X8+3sI4Qqqd2LWd9vS39J7sqd9EU4Scw7TJE/qB10Flv/UuqbPVgfQV9XoK8Np6jNquZitnZq5i+Q==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@rspack/binding": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.1.9.tgz", @@ -5209,16 +5199,6 @@ "dev": true, "license": "ISC" }, - "node_modules/bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/bootstrap-sass": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", @@ -5635,6 +5615,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -8019,9 +8012,9 @@ } }, "node_modules/immutable": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.3.tgz", - "integrity": "sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.4.tgz", + "integrity": "sha512-ZQv17KolYrYmsDoDB8N67zhIKsNi9mGYlk96y/yuxyAqJB2hLzSGSM7k/sB0/ZvO4kx27U9+fBeD/XlLGh/uXQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11230,35 +11223,25 @@ } }, "node_modules/react-router": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.4.tgz", - "integrity": "sha512-SVUsDe+DybHM/WmYKIVYhZh1o5Dcuf16yM6WjG02Q9XVFMZIJyHYhwrr6bFBXZkVP6z69kNkMyBCujt8FaFLJA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.2.tgz", + "integrity": "sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.3" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.4.tgz", - "integrity": "sha512-q4HvNl+mmDdkS0g+MqiBZNteQJCuimWoOyHMy4T/RQLAn9Z29+E91QXRaxOujeMl2HTzRSS0KFPd7lxX3PjV0Q==", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.3", - "react-router": "6.30.4" + "react": ">=18", + "react-dom": ">=18" }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "node_modules/react-select": { @@ -11813,6 +11796,12 @@ "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/ehr/package.json b/ehr/package.json index 447d45f8d..fb57b4356 100644 --- a/ehr/package.json +++ b/ehr/package.json @@ -16,11 +16,11 @@ }, "dependencies": { "@labkey/api": "1.51.4", - "@labkey/components": "7.55.2", - "@labkey/ehr": "0.0.9" + "@labkey/components": "7.58.1", + "@labkey/ehr": "0.0.10" }, "devDependencies": { - "@labkey/build": "10.1.0", + "@labkey/build": "10.1.2", "@labkey/eslint-config": "1.2.3", "@types/jest": "30.0.0", "@types/react": "18.3.31", diff --git a/labkey-ui-ehr/jest.config.js b/labkey-ui-ehr/jest.config.js index 63ec937a1..3f4c5a3b5 100644 --- a/labkey-ui-ehr/jest.config.js +++ b/labkey-ui-ehr/jest.config.js @@ -36,6 +36,7 @@ module.exports = { }, moduleFileExtensions: ['ts', 'tsx', 'js'], roots: [''], + setupFiles: ['./src/test/jest.polyfills.ts'], setupFilesAfterEnv: [ './src/test/jest.setup.ts' ], diff --git a/labkey-ui-ehr/justfile b/labkey-ui-ehr/justfile index c6a994b07..664559a07 100644 --- a/labkey-ui-ehr/justfile +++ b/labkey-ui-ehr/justfile @@ -3,7 +3,10 @@ default: just --list currentBranch := `git branch --show-current` -branchAsTag := replace(currentBranch, '_', '-') +# The release prefix (e.g. 26.8_) must be stripped: its '.' becomes a prerelease separator, so `npm version prerelease` +# can't match the preid against the existing identifiers and keeps regenerating '.0' instead of bumping. +branchAsPreId := replace(replace_regex(currentBranch, '^\d{2}\.\d{1,2}_', ''), '_', '-') +branchAsTag := replace(replace(currentBranch, '.', '-'), '_', '-') packageName := '@labkey/ehr' ehr := ".." / "ehr" @@ -32,8 +35,8 @@ bc: build copy # Bumps version to a prerelease version based on the current branch name preVersion: - @echo {{ GREEN }}Bumping prerelease version with preid='{{CYAN}}'{{ branchAsTag }}{{ NORMAL }} - @npm version prerelease --preid {{ branchAsTag }} --no-git-tag-version + @echo {{ GREEN }}Bumping prerelease version with preid='{{CYAN}}'{{ branchAsPreId }}{{ NORMAL }} + @npm version prerelease --preid {{ branchAsPreId }} --no-git-tag-version # Publishes the current version with the current branch name as a tag publishPreVersion: diff --git a/labkey-ui-ehr/package-lock.json b/labkey-ui-ehr/package-lock.json index 99ed215cb..7f64c37fc 100644 --- a/labkey-ui-ehr/package-lock.json +++ b/labkey-ui-ehr/package-lock.json @@ -1,18 +1,18 @@ { "name": "@labkey/ehr", - "version": "0.0.9", + "version": "0.0.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/ehr", - "version": "0.0.9", + "version": "0.0.10", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@labkey/components": "7.55.2" + "@labkey/components": "7.58.1" }, "devDependencies": { - "@labkey/build": "10.1.0", + "@labkey/build": "10.1.2", "@labkey/eslint-config": "1.2.3", "@types/jest": "30.0.0", "@types/react": "18.3.31", @@ -2472,14 +2472,14 @@ "license": "Apache-2.0" }, "node_modules/@labkey/build": { - "version": "10.1.0", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-10.1.0.tgz", - "integrity": "sha512-ZFU+Cy4lTX8wlAu8Pbead/dd5GOlc/s0ghuSPVpYiGyygToTgYaD5PgGsI7H2l6TfKk8V1fq1uCuLDBhx2bJig==", + "version": "10.1.2", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/build/-/@labkey/build-10.1.2.tgz", + "integrity": "sha512-Qu0KJvxWpwZ8cxbTiNBzMgZEK9UyuuDrE1K0z/zccUIYRt8IYAyd4rgW4mChXqux/CeDAcatMdh6qfPFNUAGDQ==", "dev": true, "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@rspack/cli": "~2.1.8", - "@rspack/core": "~2.1.8", + "@rspack/cli": "~2.1.9", + "@rspack/core": "~2.1.9", "@rspack/dev-server": "~2.2.0", "@rspack/plugin-react-refresh": "~2.0.2", "bootstrap-sass": "~3.4.3", @@ -2500,9 +2500,9 @@ } }, "node_modules/@labkey/components": { - "version": "7.55.2", - "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.55.2.tgz", - "integrity": "sha512-PqjPJwF4QVRooUOv4eBJ6gpCMJ+rpOM1TfUf35/eA8MLvceaWyYlBb0ORaPrLhp5l3jiivmEXFGTXIP8stCgdg==", + "version": "7.58.1", + "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.58.1.tgz", + "integrity": "sha512-bgsETI9c7mOAY8/1sxoEWK8py40+YF4pUOxcWU2PdSObPHS/Ncv66nZCvB7l7GNDfghQnD4E8x01Ze6lvpoMmQ==", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", @@ -2511,13 +2511,12 @@ "@testing-library/jest-dom": "~7.0.1", "@testing-library/react": "~16.3.2", "@testing-library/user-event": "~14.6.1", - "bootstrap": "~3.4.1", "classnames": "~2.5.1", "date-fns": "~3.6.0", "date-fns-tz": "~3.2.0", "font-awesome": "~4.7.0", "immer": "~11.1.15", - "immutable": "~3.8.3", + "immutable": "~3.8.4", "normalizr": "~3.6.2", "numeral": "~2.0.6", "papaparse": "5.5.4", @@ -2525,7 +2524,7 @@ "react-color": "~2.19.3", "react-datepicker": "~7.6.0", "react-dom": "~18.3.1", - "react-router-dom": "~6.30.4", + "react-router": "~7.18.2", "react-select": "~5.10.2", "react-treebeard": "~3.2.4", "vis-data": "~8.0.3", @@ -3130,15 +3129,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@remix-run/router": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.3.tgz", - "integrity": "sha512-4An71tdz9X8+3sI4Qqqd2LWd9vS39J7sqd9EU4Scw7TJE/qB10Flv/UuqbPVgfQV9XoK8Np6jNquZitnZq5i+Q==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@rspack/binding": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.1.9.tgz", @@ -5193,16 +5183,6 @@ "dev": true, "license": "ISC" }, - "node_modules/bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/bootstrap-sass": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz", @@ -5619,6 +5599,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -8003,9 +7996,9 @@ } }, "node_modules/immutable": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.3.tgz", - "integrity": "sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.4.tgz", + "integrity": "sha512-ZQv17KolYrYmsDoDB8N67zhIKsNi9mGYlk96y/yuxyAqJB2hLzSGSM7k/sB0/ZvO4kx27U9+fBeD/XlLGh/uXQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11214,35 +11207,25 @@ } }, "node_modules/react-router": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.4.tgz", - "integrity": "sha512-SVUsDe+DybHM/WmYKIVYhZh1o5Dcuf16yM6WjG02Q9XVFMZIJyHYhwrr6bFBXZkVP6z69kNkMyBCujt8FaFLJA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.2.tgz", + "integrity": "sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.3" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.30.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.4.tgz", - "integrity": "sha512-q4HvNl+mmDdkS0g+MqiBZNteQJCuimWoOyHMy4T/RQLAn9Z29+E91QXRaxOujeMl2HTzRSS0KFPd7lxX3PjV0Q==", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.3", - "react-router": "6.30.4" + "react": ">=18", + "react-dom": ">=18" }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "node_modules/react-select": { @@ -11797,6 +11780,12 @@ "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/labkey-ui-ehr/package.json b/labkey-ui-ehr/package.json index e4f5905e6..6b360583a 100644 --- a/labkey-ui-ehr/package.json +++ b/labkey-ui-ehr/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/ehr", - "version": "0.0.9", + "version": "0.0.10", "description": "Components, models, actions, and utility functions for LabKey EHR applications and pages", "sideEffects": false, "files": [ @@ -50,10 +50,10 @@ }, "homepage": "https://github.com/LabKey/ehrModules/labkey-ui-ehr#readme", "dependencies": { - "@labkey/components": "7.55.2" + "@labkey/components": "7.58.1" }, "devDependencies": { - "@labkey/build": "10.1.0", + "@labkey/build": "10.1.2", "@labkey/eslint-config": "1.2.3", "@types/jest": "30.0.0", "@types/react": "18.3.31", diff --git a/labkey-ui-ehr/src/test/jest.polyfills.ts b/labkey-ui-ehr/src/test/jest.polyfills.ts new file mode 100644 index 000000000..627453657 --- /dev/null +++ b/labkey-ui-ehr/src/test/jest.polyfills.ts @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2026 LabKey Corporation. All rights reserved. No portion of this work may be reproduced + * in any form or by any electronic or mechanical means without written permission from LabKey Corporation. + */ +import { TextDecoder, TextEncoder } from 'util'; + +// JSDom treats TextEncoder/TextDecoder as Node globals and omits them, but react-router constructs an encoder at module +// scope, so anything importing it throws before a test can run. Browsers provide these natively. +globalThis.TextEncoder = TextEncoder; +globalThis.TextDecoder = TextDecoder as typeof globalThis.TextDecoder;