diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index 1927298446..0f7997c61d 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.47.0", + "version": "7.48.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.47.0", + "version": "7.48.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", @@ -2803,30 +2803,30 @@ } }, "node_modules/@rspack/binding": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.1.4.tgz", - "integrity": "sha512-iye4BaTYtTt0qa39avWwEsUobVxFNhQHr6B8reFeKU7sdaZsC9LUoDR8JAt5gOnbnzFMPdKgrdU/VzkC6rXbIg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.1.5.tgz", + "integrity": "sha512-lF3ZLeeyV0AN3BL0m2jAmNZD5pP9IHsQ8gUXN7mo0g4xsW6nf6hsN7o9CnEHECz5uUZb+EoWsuWzAAmnA9Ip8Q==", "dev": true, "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "2.1.4", - "@rspack/binding-darwin-x64": "2.1.4", - "@rspack/binding-linux-arm64-gnu": "2.1.4", - "@rspack/binding-linux-arm64-musl": "2.1.4", - "@rspack/binding-linux-riscv64-gnu": "2.1.4", - "@rspack/binding-linux-riscv64-musl": "2.1.4", - "@rspack/binding-linux-x64-gnu": "2.1.4", - "@rspack/binding-linux-x64-musl": "2.1.4", - "@rspack/binding-wasm32-wasi": "2.1.4", - "@rspack/binding-win32-arm64-msvc": "2.1.4", - "@rspack/binding-win32-ia32-msvc": "2.1.4", - "@rspack/binding-win32-x64-msvc": "2.1.4" + "@rspack/binding-darwin-arm64": "2.1.5", + "@rspack/binding-darwin-x64": "2.1.5", + "@rspack/binding-linux-arm64-gnu": "2.1.5", + "@rspack/binding-linux-arm64-musl": "2.1.5", + "@rspack/binding-linux-riscv64-gnu": "2.1.5", + "@rspack/binding-linux-riscv64-musl": "2.1.5", + "@rspack/binding-linux-x64-gnu": "2.1.5", + "@rspack/binding-linux-x64-musl": "2.1.5", + "@rspack/binding-wasm32-wasi": "2.1.5", + "@rspack/binding-win32-arm64-msvc": "2.1.5", + "@rspack/binding-win32-ia32-msvc": "2.1.5", + "@rspack/binding-win32-x64-msvc": "2.1.5" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.1.4.tgz", - "integrity": "sha512-3Xcs01iw48F4WeE4SHga6bCNb/UEFvtQX4P4eMIaJfGPjTQuxfabGE8yCPm9e3tpLZ5uo+IBnJ6nh5r6tIDOXQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.1.5.tgz", + "integrity": "sha512-XLAN6YSU36qkciJtV9DY9z57pdHOjKy/f1HyoqpZenRg8p46jnXPziV45lfrTZpG+FF6g/jtTUc4dKbeyoWqPw==", "cpu": [ "arm64" ], @@ -2838,9 +2838,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.1.4.tgz", - "integrity": "sha512-bz/AsCplLs+3fXULPQU9d4r8H4PdeljgHFyItvVIrA/NKZqzQ8sX0topf/zJVZAOtPH7GNnrKjq0/F0U2DHikQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.1.5.tgz", + "integrity": "sha512-KLW7PV86jyCOyqJSqrkZdvYUWYCFX/Q4LsGmVc8tyDA8jBYLMHJDewC/lNf9ot3rU2SoLDZKhDUh7q7dX0FRmg==", "cpu": [ "x64" ], @@ -2852,9 +2852,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.1.4.tgz", - "integrity": "sha512-x0HQTLU1MusCtNamuXxf3ayEPkvh9uuaq4wVyBqveRkn4FznSOoHUsxTAKMnjGARX+vdLV/y/SwWJRDp2RI4zw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.1.5.tgz", + "integrity": "sha512-KOooAC8L+Ljx5sY7ZuMeaXCQ310FNWaPWXcYQJpFPApF3qyLeSfuOftUGwxcxeo5U0mS5OY3zxp7/5CaHWKYjg==", "cpu": [ "arm64" ], @@ -2866,9 +2866,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.1.4.tgz", - "integrity": "sha512-SEYCQD9UflKJMkYGnG5nt2gcsqdkgJsQmryBC/jxo+bOuY9gUSReU99FqCt7WRQrsHLbGeAFeTWs1QzItWG/Bw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.1.5.tgz", + "integrity": "sha512-0GFc07gT71+uRbHtejDecBfSL0fs7dQAwCtXYieXboACauL7UvS3Hwr6v8A91aGtAcvLotnCaIa3CWWYwtYlYQ==", "cpu": [ "arm64" ], @@ -2880,9 +2880,9 @@ ] }, "node_modules/@rspack/binding-linux-riscv64-gnu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-2.1.4.tgz", - "integrity": "sha512-jYtQKtnDRaVfyasvTGY04Z7m+xDWZYVwAIEOB4hP7czM7FVLOMgHlMlvw/EgF0DNHrBthqbPfBIS2tP50CzpEA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-2.1.5.tgz", + "integrity": "sha512-isQQDp3fBzPSZpLVFzPqVXIVA4I9b9mKs58TfUgOzDP/1g1582YSV3iFopgFogvEliihXDuuXvM6aAkP+w8Z+Q==", "cpu": [ "riscv64" ], @@ -2894,9 +2894,9 @@ ] }, "node_modules/@rspack/binding-linux-riscv64-musl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-2.1.4.tgz", - "integrity": "sha512-ZgxKjQAm9pidq2kChQO2PqKI9OQpLuGD7iPBuyT0gQg3m1+7vvbbkArLBPzJ12CQHVZvqua7n/QGx8pQjJI2Zw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-2.1.5.tgz", + "integrity": "sha512-/SP6VknY4kH60BYplI2FDNAJCo4U4DUszLxhKsgVlgA5ImgHC8Ew2AsKgidk7ceiYV9OcKzYuWYe9tVpysBYVA==", "cpu": [ "riscv64" ], @@ -2908,9 +2908,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.1.4.tgz", - "integrity": "sha512-C53B3e6M4yzlYn4hDxR9cHZV+HqkfFGR0zuhH8QCfdBfN5KyGsmXmujiFU85ANEvBgf9CF8VreBQeJ20lyto/g==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.1.5.tgz", + "integrity": "sha512-/GJmS+buA4pilT10gs5mfAhAZxSHXpDD8veZ3QpYvNUuoU9gvempAq9TgjbyNN/vc5pf76GdXPXKFMiehudYSA==", "cpu": [ "x64" ], @@ -2922,9 +2922,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.1.4.tgz", - "integrity": "sha512-UaeG3FRo7e5RameQvWRNQ6KeXF29LEk67U/ohb9tF4U38mKH1OGqhmwCf5yLkqiOSgOi7Ff3ireOZD83Fso1iw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.1.5.tgz", + "integrity": "sha512-iwS3t75nZ2TnUjB05KtvpvjpdkOy/nLxbaOnwjbdnNZZXpUaMadLbllGAWayHPGCMsL2yKBEhVEESZpR7tK3SA==", "cpu": [ "x64" ], @@ -2936,9 +2936,9 @@ ] }, "node_modules/@rspack/binding-wasm32-wasi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.1.4.tgz", - "integrity": "sha512-0P1WZEfu7JOPzD/jQfk9U/6gnRFc7RpvYCQaYZVVYZNJ2gU6O0/yLegRGKNK/2L0zjYwiD0ynhOIBVUUERf5Pw==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.1.5.tgz", + "integrity": "sha512-jOhW69t1H/jcRaSMB5U8jVzWP18j0YQIlo0nT8W+KvNVScJeyOze4FFc+5RIS7VmuT8/jid7hUyydZOfm6UgqA==", "cpu": [ "wasm32" ], @@ -2986,9 +2986,9 @@ } }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.1.4.tgz", - "integrity": "sha512-+aStQipk1EakLRPfD+/aQbtmTXfxqSWetcRRDWV3cAsD4ebv1tF8FLKYY1PCaFpQbX1FxzCBGF0KHxkAsi9cxA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.1.5.tgz", + "integrity": "sha512-OLfMXmtFBcrWr9BRGKXJYrWgYR0JSaoAWr3EVFDjKGi/YR5aUwQSGc3AJPBph9g0YsdSqRuUhtQGtCk84DeeEA==", "cpu": [ "arm64" ], @@ -3000,9 +3000,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.1.4.tgz", - "integrity": "sha512-7nyrLRQ07j6i6omZuwiwwTI6rpjdy/Su3niLDAG7WsLL21u3/UQQrw6Fvm8SH3XYteghoHLSM3dhgaisuUhdJg==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.1.5.tgz", + "integrity": "sha512-p4OSmnj21+AY8vpIADveLEBXfXJRXonOTYim2VLVWV4TbXfhYNMLiX3qESHCdNnn6lVJM0q6zxxzEUfTyAKydw==", "cpu": [ "ia32" ], @@ -3014,9 +3014,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.1.4.tgz", - "integrity": "sha512-Z4je7JBaDpO9vvNMgCxlycycRJq+GQwwuXSXagW2xvvGM10Ij63YVtIehSMG9xaW8PED41oc9nWndoEsiD60pA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.1.5.tgz", + "integrity": "sha512-YCkLLDGMkHsw5CpcsFtFhzCu+JZEsNrcH9O1GpWMkyxR2ku2Fq1i2wEHYSm26HyW+PJ3+Fv347MPWMFZIz9q2g==", "cpu": [ "x64" ], @@ -3028,9 +3028,9 @@ ] }, "node_modules/@rspack/cli": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-2.1.4.tgz", - "integrity": "sha512-DYFvcDwL8jzqPV+7zt7DKpq2Fsk7ZtK8YswhTTje6iaIwvtzAPLFI3BsG6YrQ3yfMj7jqjSe4Vb5MDPCxR/g4A==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-2.1.5.tgz", + "integrity": "sha512-N6Bm8sxHwatNoiZR68+/VKvVMDh19ya39t2Nfxu1/fBmGCrQX1ct8uPooVSysLtUF2Qx31sSRl1DX1SS0eYt2A==", "dev": true, "license": "MIT", "bin": { @@ -3047,13 +3047,13 @@ } }, "node_modules/@rspack/core": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.1.4.tgz", - "integrity": "sha512-lpJgtr+JAXuDAMBJfRJ1LHyWVuYJyhZu6L6aj9t4lipUU03qwakHnzn3vwSCr68PsVvVPzR6NbJE1gJienSV0g==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.1.5.tgz", + "integrity": "sha512-YHjL7xVXycAWsjJtF39cRZ2u+ddiNFxY+FcNgEBe6Y8OaLeUfMfjba3gK+B1Oj32UcKD6BmXGsPfu9p+OII/Yw==", "dev": true, "license": "MIT", "dependencies": { - "@rspack/binding": "2.1.4" + "@rspack/binding": "2.1.5" }, "engines": { "node": "^20.19.0 || >=22.12.0" @@ -4996,19 +4996,41 @@ } }, "node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", "dependencies": { - "readdirp": "^5.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 20.19.0" + "node": ">= 8.10.0" }, "funding": { "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/ci-info": { @@ -6603,9 +6625,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", - "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", + "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", "dev": true, "funding": [ { @@ -10759,17 +10781,29 @@ } }, "node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">= 20.19.0" + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/redent": { @@ -11180,13 +11214,43 @@ } } }, + "node_modules/sass/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sass/node_modules/immutable": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", - "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.6.tgz", + "integrity": "sha512-q1swsS8K7L8usSHuOqF2TAoCCkonYz0SG38wLAggaa4Wml70zixIvt2ql4coQ2C2B3hTjltJry4r6bULwgAXLQ==", "dev": true, "license": "MIT" }, + "node_modules/sass/node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -12160,70 +12224,6 @@ } } }, - "node_modules/ts-checker-rspack-plugin/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ts-checker-rspack-plugin/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ts-checker-rspack-plugin/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/ts-checker-rspack-plugin/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/ts-jest": { "version": "29.4.11", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz", diff --git a/packages/components/package.json b/packages/components/package.json index a18bd56bdb..49fcfc1c63 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.47.0", + "version": "7.48.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index d555cce754..bd738fbf34 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -521,6 +521,7 @@ import { parseEntityParentKey, SAMPLE_ID_FIELD_KEY, sampleDeleteDependencyText, + sourceDeleteDependencyText, updateCellKeySampleIdMap, } from './internal/components/entities/utils'; import { @@ -1708,6 +1709,7 @@ export { showPremiumFeatures, sleep, SOURCE_AUDIT_QUERY, + sourceDeleteDependencyText, SourceTypeImportAliasRenderer, spliceURL, SplitButton, diff --git a/packages/components/src/internal/components/auditlog/constants.ts b/packages/components/src/internal/components/auditlog/constants.ts index 6a07567446..a752ebee5f 100644 --- a/packages/components/src/internal/components/auditlog/constants.ts +++ b/packages/components/src/internal/components/auditlog/constants.ts @@ -89,7 +89,7 @@ export const ASSAY_RESULT_AUDIT_QUERY: AuditQuery = { export const WORKFLOW_AUDIT_QUERY: AuditQuery = { hasDetail: true, hasTransactionId: true, - label: 'Sample Workflow Events', + label: 'Workflow Events', value: 'SamplesWorkflowAuditEvent', }; export const SOURCE_AUDIT_QUERY: AuditQuery = { diff --git a/packages/components/src/internal/components/auditlog/utils.test.ts b/packages/components/src/internal/components/auditlog/utils.test.ts index 57c4a81fe3..529abb8ba3 100644 --- a/packages/components/src/internal/components/auditlog/utils.test.ts +++ b/packages/components/src/internal/components/auditlog/utils.test.ts @@ -51,7 +51,7 @@ describe('getAuditQueries', () => { test('LKSM professional', () => { const auditQueries = getAuditQueries(TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT); expect(auditQueries.length).toBe(18); - expect(auditQueries.findIndex(entry => entry === INVENTORY_AUDIT_QUERY)).toBe(16); + expect(auditQueries.findIndex(entry => entry === INVENTORY_AUDIT_QUERY)).toBe(15); expect(auditQueries.findIndex(entry => entry === ASSAY_AUDIT_QUERY)).toBeGreaterThanOrEqual(0); expect(auditQueries.findIndex(entry => entry === WORKFLOW_AUDIT_QUERY)).toBeGreaterThanOrEqual(0); expect(auditQueries.findIndex(entry => entry === SOURCE_AUDIT_QUERY)).toBeGreaterThanOrEqual(0); @@ -79,7 +79,7 @@ describe('getAuditQueries', () => { }; const auditQueries = getAuditQueries(moduleContext); expect(auditQueries.length).toBe(19); - expect(auditQueries.findIndex(entry => entry === INVENTORY_AUDIT_QUERY)).toBe(17); + expect(auditQueries.findIndex(entry => entry === INVENTORY_AUDIT_QUERY)).toBe(16); expect(auditQueries.findIndex(entry => entry === ASSAY_AUDIT_QUERY)).toBeGreaterThanOrEqual(0); expect(auditQueries.findIndex(entry => entry === ASSAY_RESULT_AUDIT_QUERY)).toBeGreaterThanOrEqual(0); expect(auditQueries.findIndex(entry => entry === WORKFLOW_AUDIT_QUERY)).toBeGreaterThanOrEqual(0); diff --git a/packages/components/src/internal/components/entities/constants.ts b/packages/components/src/internal/components/entities/constants.ts index 99a9361dce..0633bf4522 100644 --- a/packages/components/src/internal/components/entities/constants.ts +++ b/packages/components/src/internal/components/entities/constants.ts @@ -12,14 +12,14 @@ import { DELETE_ASSAY_RUNS_TOPIC, DELETE_SAMPLES_TOPIC } from '../../util/helpLi import { SAMPLE_TYPE_KEY, SAMPLES_KEY } from '../../app/constants'; -import { SAMPLE_STORAGE_COLUMNS_WITH_SUBSELECT_EXPR } from '../samples/constants'; +import { SAMPLE_DATA_EXPORT_CONFIG, SAMPLE_STORAGE_COLUMNS_WITH_SUBSELECT_EXPR } from '../samples/constants'; import { SchemaQuery } from '../../../public/SchemaQuery'; import { SAMPLE_PROPERTY_ALL_SAMPLE_TYPE } from '../search/constants'; import { EntityDataType } from './models'; -import { sampleDeleteDependencyText } from './utils'; +import { sampleDeleteDependencyText, sourceDeleteDependencyText } from './utils'; const DATA_OPERATION_CONFIRMATION_ACTION = 'getDataOperationConfirmationData.api'; const SAMPLE_OPERATION_CONFIRMATION_ACTION = 'getMaterialOperationConfirmationData.api'; @@ -146,6 +146,7 @@ export const SampleTypeDataType: EntityDataType = { folderConfigurableDataType: 'SampleType', labelColorCol: 'labelcolor', extraFinderFields: ['storagepositionnumber', 'storageterminallocation'], + exportConfig: SAMPLE_DATA_EXPORT_CONFIG, }; export const SampleParentDataType = { @@ -155,6 +156,11 @@ export const SampleParentDataType = { containerFilter: Query.containerFilter.currentPlusProjectAndShared, }; +export const SOURCE_EXPORT_CONFIG = { + 'exportAlias.name': 'SourceID', + 'exportAlias.folder': 'Folder', +}; + export const DataClassDataType: EntityDataType = { typeListingSchemaQuery: SCHEMAS.EXP_TABLES.DATA_CLASSES, listingSchemaQuery: SCHEMAS.EXP_TABLES.DATA, @@ -171,7 +177,7 @@ export const DataClassDataType: EntityDataType = { descriptionSingular: 'parent type', descriptionPlural: 'parent types', uniqueFieldKey: 'Name', - dependencyText: 'derived data or sample dependencies', + dependencyText: sourceDeleteDependencyText, deleteHelpLinkTopic: 'dataClass#prevent', inputColumnName: 'Inputs/Data/First', ancestorColumnName: 'Ancestors/OtherData', @@ -182,6 +188,7 @@ export const DataClassDataType: EntityDataType = { typeIcon: 'source_type', sampleFinderCardType: 'dataclassparent', folderConfigurableDataType: 'DataClass', + exportConfig: SOURCE_EXPORT_CONFIG, }; export const ParentEntityLineageColumns = List.of('Inputs/Materials/First', 'Inputs/Data/First'); @@ -210,5 +217,5 @@ export const DATA_CLASS_IMPORT_PREFIX = 'dataInputs/'; export enum JobOperation { Delete, - Move + Move, } diff --git a/packages/components/src/internal/components/entities/models.ts b/packages/components/src/internal/components/entities/models.ts index 81ee350ee7..7d53a3e9ea 100644 --- a/packages/components/src/internal/components/entities/models.ts +++ b/packages/components/src/internal/components/entities/models.ts @@ -474,6 +474,7 @@ export interface EntityDataType { descriptionSingular: string; editTypeAppUrlPrefix?: string; exprColumnsWithSubSelect?: string[]; + exportConfig?: Record; extraFinderFields?: string[]; filterArray?: Filter.IFilter[]; filterCardHeaderClass?: string; diff --git a/packages/components/src/internal/components/entities/utils.test.ts b/packages/components/src/internal/components/entities/utils.test.ts index 23a79ac491..1be96516c2 100644 --- a/packages/components/src/internal/components/entities/utils.test.ts +++ b/packages/components/src/internal/components/entities/utils.test.ts @@ -32,6 +32,7 @@ import { getSampleIdCellKey, parseEntityParentKey, sampleDeleteDependencyText, + sourceDeleteDependencyText, updateCellKeySampleIdMap, } from './utils'; import { DataClassDataType, SampleTypeDataType } from './constants'; @@ -275,6 +276,34 @@ describe('sampleDeleteDependencyText', () => { }); }); +describe('sourceDeleteDependencyText', () => { + let moduleContext; + + // We need to store and reset the module context before and after these tests so we don't impact other tests in this + // file. + beforeEach(() => { + moduleContext = LABKEY.moduleContext; + }); + + afterEach(() => { + LABKEY.moduleContext = moduleContext; + }); + + test('cannot delete, professional', () => { + LABKEY.moduleContext = { ...TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT }; + expect(sourceDeleteDependencyText()).toBe( + 'derived sample or source dependencies or references in one or more jobs or active notebooks' + ); + }); + + test('cannot delete, no workflow', () => { + LABKEY.moduleContext = { ...TEST_LKS_STARTER_MODULE_CONTEXT }; + expect(sourceDeleteDependencyText()).toBe( + 'derived sample or source dependencies' + ); + }); +}); + describe('getIdentifyingColumns', () => { const columns = [ { fieldKey: 'intCol', jsonType: 'int', name: 'intCol' }, diff --git a/packages/components/src/internal/components/entities/utils.ts b/packages/components/src/internal/components/entities/utils.ts index 8c9a60d651..171381adee 100644 --- a/packages/components/src/internal/components/entities/utils.ts +++ b/packages/components/src/internal/components/entities/utils.ts @@ -23,6 +23,16 @@ import { EntityChoice, EntityDataType, IEntityTypeOption } from './models'; import { ParentIdData } from './actions'; +export function sourceDeleteDependencyText(): string { + let deleteMsg = 'derived sample or source dependencies'; + if (isELNEnabled()) { + deleteMsg += ' or references in one or more ' + (isWorkflowEnabled() ? 'jobs or' : '') + ' active notebooks'; + } else if (isWorkflowEnabled()) { + deleteMsg += ' or references in one or more jobs'; + } + return deleteMsg; +} + export function sampleDeleteDependencyText(): string { let deleteMsg = ''; if (isWorkflowEnabled()) { diff --git a/packages/components/src/internal/components/labelPrinting/APIWrapper.ts b/packages/components/src/internal/components/labelPrinting/APIWrapper.ts index 5326fba91e..c12b8c3380 100644 --- a/packages/components/src/internal/components/labelPrinting/APIWrapper.ts +++ b/packages/components/src/internal/components/labelPrinting/APIWrapper.ts @@ -9,7 +9,6 @@ import { getQueryModelExportParams } from '../../../public/QueryModel/utils'; import { SAMPLE_MANAGER_APP_PROPERTIES } from '../../app/constants'; import { EXPORT_TYPES } from '../../constants'; import { buildURL } from '../../url/AppURL'; -import { SAMPLE_DATA_EXPORT_CONFIG } from '../samples/constants'; import { selectRows } from '../../query/selectRows'; @@ -19,6 +18,7 @@ import { handleRequestFailure } from '../../request'; import { LABEL_TEMPLATE_SQ } from './constants'; import { BarTenderConfiguration, BarTenderResponse, LabelTemplate } from './models'; +import { SampleTypeDataType } from '../entities/constants'; function handleBarTenderConfigurationResponse( resolve: (value: BarTenderConfiguration | PromiseLike) => void @@ -147,7 +147,7 @@ export class LabelPrintingServerAPIWrapper implements LabelPrintingAPIWrapper { Ajax.request({ url: buildURL(SAMPLE_MANAGER_APP_PROPERTIES.controllerName, 'printBarTenderLabels.api'), params: getQueryModelExportParams(sampleModel, EXPORT_TYPES.LABEL, { - ...SAMPLE_DATA_EXPORT_CONFIG, + ...SampleTypeDataType.exportConfig, labelFormat, numCopies, // We override the showRows value because of the strange default behavior for grid export that diff --git a/packages/components/src/internal/schemas.ts b/packages/components/src/internal/schemas.ts index 21e33edf3c..83fdd0f3e7 100644 --- a/packages/components/src/internal/schemas.ts +++ b/packages/components/src/internal/schemas.ts @@ -123,6 +123,7 @@ export const WORKFLOW = { JOB_TEMPLATE: new SchemaQuery(WORKFLOW_SCHEMA, 'JobTemplate'), JOB_PRIORITY: new SchemaQuery(WORKFLOW_SCHEMA, 'WorkflowJobPriority'), JOB_INPUT_SAMPLES: new SchemaQuery(WORKFLOW_SCHEMA, 'JobInputSamples'), + JOB_INPUT_SOURCES: new SchemaQuery(WORKFLOW_SCHEMA, 'JobInputSources'), }; // STUDY