diff --git a/craco.config.js b/craco.config.js index 1039d728..cbcb67b9 100644 --- a/craco.config.js +++ b/craco.config.js @@ -58,6 +58,20 @@ module.exports = { config.experiments = { asyncWebAssembly: true } + + /* Viv / Deck.gl / Luma ship modern JS; transpile for CRA 5 / webpack 5. */ + config.module.rules.push({ + test: /\.m?js$/, + include: /node_modules[\\/](@deck\.gl|@luma\.gl|@math\.gl|@probe\.gl|@hms-dbmi[\\/]viv)[\\/]/, + use: { + loader: require.resolve('babel-loader'), + options: { + presets: [require.resolve('babel-preset-react-app/dependencies')], + cacheDirectory: true + } + } + }) + return config } }, diff --git a/package.json b/package.json index e52744ae..b0669581 100644 --- a/package.json +++ b/package.json @@ -37,12 +37,26 @@ ] }, "dependencies": { + "@deck.gl/core": "9.1.15", + "@deck.gl/extensions": "9.1.15", + "@deck.gl/geo-layers": "9.1.15", + "@deck.gl/layers": "9.1.15", + "@deck.gl/mesh-layers": "9.1.15", + "@deck.gl/react": "9.1.15", + "@deck.gl/widgets": "9.1.15", + "@vivjs/layers": "^0.20.0", + "@vivjs/loaders": "^0.20.0", + "@luma.gl/constants": "~9.1.10", + "@luma.gl/core": "~9.1.10", + "@luma.gl/engine": "~9.1.10", + "@luma.gl/shadertools": "~9.1.10", + "@luma.gl/webgl": "~9.1.10", "antd": "^4.22.8", "classnames": "^2.2.6", "dcmjs": "^0.35.0", "detect-browser": "^5.2.1", + "dicomweb-client": "^0.11.2", "dicom-microscopy-viewer": "^0.48.21", - "dicomweb-client": "0.10.3", "oidc-client": "^1.11.5", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -91,7 +105,15 @@ }, "pnpm": { "overrides": { + "@types/minimatch": "5.1.2", "@types/d3-dispatch": "3.0.6", + "@deck.gl/core": "9.1.15", + "@deck.gl/extensions": "9.1.15", + "@deck.gl/geo-layers": "9.1.15", + "@deck.gl/layers": "9.1.15", + "@deck.gl/mesh-layers": "9.1.15", + "@deck.gl/react": "9.1.15", + "@deck.gl/widgets": "9.1.15", "axios": "1.17.0", "nth-check": "2.0.1", "wrap-ansi": "7.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ade0035..fe633b1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,15 @@ settings: excludeLinksFromLockfile: false overrides: + '@types/minimatch': 5.1.2 '@types/d3-dispatch': 3.0.6 + '@deck.gl/core': 9.1.15 + '@deck.gl/extensions': 9.1.15 + '@deck.gl/geo-layers': 9.1.15 + '@deck.gl/layers': 9.1.15 + '@deck.gl/mesh-layers': 9.1.15 + '@deck.gl/react': 9.1.15 + '@deck.gl/widgets': 9.1.15 axios: 1.17.0 nth-check: 2.0.1 wrap-ansi: 7.0.0 @@ -22,6 +30,48 @@ importers: .: dependencies: + '@deck.gl/core': + specifier: 9.1.15 + version: 9.1.15 + '@deck.gl/extensions': + specifier: 9.1.15 + version: 9.1.15(@deck.gl/core@9.1.15)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/geo-layers': + specifier: 9.1.15 + version: 9.1.15(@deck.gl/core@9.1.15)(@deck.gl/extensions@9.1.15(@deck.gl/core@9.1.15)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@deck.gl/layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@deck.gl/mesh-layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/layers': + specifier: 9.1.15 + version: 9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/mesh-layers': + specifier: 9.1.15 + version: 9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/react': + specifier: 9.1.15 + version: 9.1.15(@deck.gl/core@9.1.15)(@deck.gl/widgets@9.1.15(@deck.gl/core@9.1.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@deck.gl/widgets': + specifier: 9.1.15 + version: 9.1.15(@deck.gl/core@9.1.15) + '@luma.gl/constants': + specifier: ~9.1.10 + version: 9.1.10 + '@luma.gl/core': + specifier: ~9.1.10 + version: 9.1.10 + '@luma.gl/engine': + specifier: ~9.1.10 + version: 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': + specifier: ~9.1.10 + version: 9.1.10(@luma.gl/core@9.1.10) + '@luma.gl/webgl': + specifier: ~9.1.10 + version: 9.1.10(@luma.gl/core@9.1.10) + '@vivjs/layers': + specifier: ^0.20.0 + version: 0.20.1(d95fa3acf411e7bd1855aa20a8b44eb1) + '@vivjs/loaders': + specifier: ^0.20.0 + version: 0.20.1 antd: specifier: ^4.22.8 version: 4.24.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -38,8 +88,8 @@ importers: specifier: ^0.48.21 version: 0.48.21 dicomweb-client: - specifier: 0.10.3 - version: 0.10.3 + specifier: ^0.11.2 + version: 0.11.2 oidc-client: specifier: ^1.11.5 version: 1.11.5 @@ -1109,6 +1159,55 @@ packages: resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} + '@deck.gl/core@9.1.15': + resolution: {integrity: sha512-2Tx2aKNskDS8SZ6EB7V53exo3SVntCJJGjrAnz3KhNj4fA4BVqOH++LSpjCFhuG9m4WOWDSDq9s7w4DQnTiT+Q==} + + '@deck.gl/extensions@9.1.15': + resolution: {integrity: sha512-pH3SArgiEibHwrYwbKTknUurgpUndUFa+O97in+zRVF6KFGNZSLm1AePERh1gQjcpuQ+GwrxJ/ijmVmuH2zOow==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@luma.gl/core': ~9.1.9 + '@luma.gl/engine': ~9.1.9 + + '@deck.gl/geo-layers@9.1.15': + resolution: {integrity: sha512-dehvciiUyCnklCfY5v0JgGAgJfbQ0Rn/ml55Maqdw5c5K6fIQzi4xMglu1NdgO3L+MOutWWA1eFD9WLT2X0mkA==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@deck.gl/extensions': 9.1.15 + '@deck.gl/layers': 9.1.15 + '@deck.gl/mesh-layers': 9.1.15 + '@loaders.gl/core': ^4.2.0 + '@luma.gl/core': ~9.1.9 + '@luma.gl/engine': ~9.1.9 + + '@deck.gl/layers@9.1.15': + resolution: {integrity: sha512-4C8LaCXnd/cHGMGwuLu6YUqcf/4dyz82Im+C0IrY56OgJnVOKf2f75zwAKa1Uekq4XEsyPgqg9k5MWEohBzGYw==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@loaders.gl/core': ^4.2.0 + '@luma.gl/core': ~9.1.9 + '@luma.gl/engine': ~9.1.9 + + '@deck.gl/mesh-layers@9.1.15': + resolution: {integrity: sha512-/GuXxa2Y5Bv/6DSOA6sgPalCZAPN137cTE5SDbOH88yKAY0ggn5FmgcimhGNRcR28tGy+yOCy/PbtIDoba6dpw==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@luma.gl/core': ~9.1.9 + '@luma.gl/engine': ~9.1.9 + + '@deck.gl/react@9.1.15': + resolution: {integrity: sha512-QJuCWyX3mBzW/rzFs0Bq/53rDEMMFbP1wDBTpnAeDDda4QLJK3bLReWLKzM/p0Ewoil0re/OHAWnSf1w9ePhDA==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@deck.gl/widgets': 9.1.15 + react: '>=16.3.0' + react-dom: '>=16.3.0' + + '@deck.gl/widgets@9.1.15': + resolution: {integrity: sha512-cSscNelsIlgjNrfVCmgXiXcYQbvJxmFv8iedpUPxTYLrW0hQq/ftZtLVZ8sWsNkn/EM8/KKysO5IXeEVj3iGbQ==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1251,9 +1350,173 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@loaders.gl/3d-tiles@4.4.2': + resolution: {integrity: sha512-rf2R7x/+t41hQpaQ3iKofooE6unZ0+sGlYUXBo7lYFEnoMmalzrOI6jCs+CV96TALMPQcpfPa566XWF74XkaBQ==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/compression@4.4.2': + resolution: {integrity: sha512-/LzblCXn6wOg7ca2zkUOTO0zhjjaPAOqlLp4/kwd57v7KZU8M8aKUNlU1DAuWKW9p/+TpGsLKwDqOCO+hjrOnQ==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/core@4.4.2': + resolution: {integrity: sha512-DZmsTwxdKh3q+mS1vSOW2EXFgwxZ4nIBte4H5g6e4VyQoQ6jAOkk0M6V+Asgy/eqjGTNjhfBA1HIkyBl0A9hcA==} + + '@loaders.gl/crypto@4.4.2': + resolution: {integrity: sha512-3QQxNFmCeznMIsY/ZD4pYO4SvS4i3nq5aJJ993DEIZVB1i0z19OmyJu4TSovvirXXrNWPQRJFPUUwdPxol9wLA==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/draco@4.4.2': + resolution: {integrity: sha512-UByWIt/yhxMFBIlyoqJYaj0rnTz/wwDWbI4CVQc/MzbLZW7NtUkDyYDcjbjE2SBWpu6Ef4ryojGd/NWIA3Yknw==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/geoarrow@4.4.2': + resolution: {integrity: sha512-FGCtUsvTwdxiNqS8cEtys1FdM/m6pwMzvNEa32sHfrI4Si465Oa2iJkyu2q/XMgL/vhfE/G3EezpVKZARbCzkw==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/gis@4.4.2': + resolution: {integrity: sha512-VMs1XcqUCqLczfySsI9VA/L3WDuuNRPqVoHcXU3FZuSe49x++gtwmxF1TEhJCaQINk0CkCOnxBbKOz3I9M1e3w==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/gltf@4.4.2': + resolution: {integrity: sha512-aBvI7P/1GxePdHIvuyTM4A8yt3F5ph4dq0mkyJHmEjBl1Cwh3mDZJI1JSlZAFVilTZ6NxJZOiHUYWe1pBloVvw==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/images@4.4.2': + resolution: {integrity: sha512-b+1keNvPlyLniWtX4ZaThz2dF2aohi8Q+OEsDF2hJNZYyZJOqP9b/72UhlVk+inxTJfTLRBNARs2TJ2ssBlelg==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/loader-utils@4.4.2': + resolution: {integrity: sha512-kqwBbyRC7rrQVsnJyKeoaig9hxaa5oj91OKqWm27HPuVn4q2dD67SEhiG0ND62eRp0tLY6jTqEcI5kDzHBZ6MA==} + + '@loaders.gl/math@4.4.2': + resolution: {integrity: sha512-Pcm1DKrzH3EqC5PkBxQX0oVjmXM3RIm2Gfj0cXQoqly+8c/NBtQrcBA9tl12h2ozZe8Ednue/kockbGsyKAx5A==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/mvt@4.4.2': + resolution: {integrity: sha512-yji3TAUofTA3GXvvyemwfrRwbd1ILpv2qe4mRduHdzjJdy2httH1cCKkesavFuLeRQqEuVyhhxYK+aSAbdt9Kg==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/schema-utils@4.4.2': + resolution: {integrity: sha512-yYYRD/POBEO72rhIyLASrqKUUhfIOQuFk/fgInN6Td2qvFgsHbo5UaCM4sTqVUWwNxNvXDQi8ezpbnCa/yi+OQ==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/schema@4.4.2': + resolution: {integrity: sha512-mJTZehTHIFl8ed+03nebuPAMnLP8Yp00DKTzCnKT2HNy/uV4+Sw+GrGIuhPHGU8tdQmtBXRURGM2ZxUAxMfGKg==} + + '@loaders.gl/terrain@4.4.2': + resolution: {integrity: sha512-ScE90mhUrIOOf+248+G8bxgg5xfLptE94gVxtYsLysyG8b4Ne2WEb6J2gpvQqmaLz3k9OqgPR7M8F1zI5BVO0w==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/textures@4.4.2': + resolution: {integrity: sha512-+GKcHEE0GjpuSJ6qbuRsB0CaOSUhJ1epUvhMP5GVK7I6+bwSvG8nqmRRGXFQNmYsbFANwG+wjwKf16wqJwP6vg==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/tiles@4.4.2': + resolution: {integrity: sha512-DHqMC38e6IEzWEDc15GfIKsZT82VZH7ocF79xLRScey0eZfCb3qI5nDLeg5adSBBsHkG3Li0S0PEnwxQmKT3qw==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/wms@4.4.2': + resolution: {integrity: sha512-7uhis6fOTHeqRLIU1EPoC1oqeXVk5p1pM136fSqMw0CbVSNj87b0FFMwlJwzwTfL8Vte8GyKrNcDa47PjaT19Q==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/worker-utils@4.4.2': + resolution: {integrity: sha512-oiZ0SoC1QKrOkhYPlVZ6Q06CtmuFRyZw2rwzmT08ZyaGtOArIJHDjlhxzwWiv+6fdws47Ub5uIGsdI1Ab1xYsA==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/xml@4.4.2': + resolution: {integrity: sha512-OOPqpYH1PK9szuzXh3Oy7aErMXTXB+aiKi79LPCI93Wsb8pdbQiDiRRW8X/op9qABhxpCAMXF5N89eDJv3XdtQ==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@loaders.gl/zip@4.4.2': + resolution: {integrity: sha512-KdgmJRNra9+9jt2zzHUvFXnBqwzeN7dW4MEgTmH/NtraGy8bz5Tk5NrIUj8JXPxhx+vP2vxUWbeCEUoLGO/m9A==} + peerDependencies: + '@loaders.gl/core': ~4.4.0 + + '@luma.gl/constants@9.1.10': + resolution: {integrity: sha512-O4Nx8UbWmrHHZ7ihKB8WiscX1cz05l1KvKorYTgq+xeXwz2Beh3MkXBMnA46uuyEtimN945OEdYshZnbh80jyw==} + + '@luma.gl/core@9.1.10': + resolution: {integrity: sha512-izvT0DDjlVpchpTokXMNYJeyhgTdGuf21LHEpVa/3EtGFDAJESb3eH99Q3KfzgbqqIAwrTy+25TSStV/3r2svA==} + + '@luma.gl/engine@9.1.10': + resolution: {integrity: sha512-Og1cFpDGq8IUDI9Oaytnm08sdeitxcStsFrjiE4AejZQgx6OdHo+tE33M3WLAUzp6oQYQwl6r2USOhH4BuEiRg==} + peerDependencies: + '@luma.gl/core': ~9.1.0 + '@luma.gl/shadertools': ~9.1.0 + + '@luma.gl/gltf@9.1.10': + resolution: {integrity: sha512-xiLHbusWaPlPzpjs4G+y9/SudFKxv98nY9aSds19M0krISLARjisEVe2wr7HUeVYvNFcIsh/wX93Z8iYmG+ZVg==} + peerDependencies: + '@luma.gl/core': ~9.1.0 + '@luma.gl/engine': ~9.1.0 + '@luma.gl/shadertools': ~9.1.0 + + '@luma.gl/shadertools@9.1.10': + resolution: {integrity: sha512-ET2Vs9Vws5zkjSC07RWBVEFQ6EDP5yTiEZBnvblkb5y4wgjLHAgM5NBJw51Xb5BRBH0aC4piwP+2SnDA29dOlg==} + peerDependencies: + '@luma.gl/core': ~9.1.0 + + '@luma.gl/webgl@9.1.10': + resolution: {integrity: sha512-mwIsNEzxt6GW/fnCqBgJAorzFPi5c//3ZukKFHso+F1mvtHhTE4NQfA/pEvj4HBg/IdYkMvkoQsMrSn5+jko3A==} + peerDependencies: + '@luma.gl/core': ~9.1.0 + + '@mapbox/martini@0.2.0': + resolution: {integrity: sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==} + + '@mapbox/point-geometry@0.1.0': + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + + '@mapbox/tiny-sdf@2.2.0': + resolution: {integrity: sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==} + + '@mapbox/vector-tile@1.3.1': + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + + '@math.gl/core@4.1.0': + resolution: {integrity: sha512-FrdHBCVG3QdrworwrUSzXIaK+/9OCRLscxI2OUy6sLOHyHgBMyfnEGs99/m3KNvs+95BsnQLWklVfpKfQzfwKA==} + + '@math.gl/culling@4.1.0': + resolution: {integrity: sha512-jFmjFEACnP9kVl8qhZxFNhCyd47qPfSVmSvvjR0/dIL6R9oD5zhR1ub2gN16eKDO/UM7JF9OHKU3EBIfeR7gtg==} + + '@math.gl/geospatial@4.1.0': + resolution: {integrity: sha512-BzsUhpVvnmleyYF6qdqJIip6FtIzJmnWuPTGhlBuPzh7VBHLonCFSPtQpbkRuoyAlbSyaGXcVt6p6lm9eK2vtg==} + + '@math.gl/polygon@4.1.0': + resolution: {integrity: sha512-YA/9PzaCRHbIP5/0E9uTYrqe+jsYTQoqoDWhf6/b0Ixz8bPZBaGDEafLg3z7ffBomZLacUty9U3TlPjqMtzPjA==} + + '@math.gl/sun@4.1.0': + resolution: {integrity: sha512-i3q6OCBLSZ5wgZVhXg+X7gsjY/TUtuFW/2KBiq/U1ypLso3S4sEykoU/MGjxUv1xiiGtr+v8TeMbO1OBIh/HmA==} + + '@math.gl/types@4.1.0': + resolution: {integrity: sha512-clYZdHcmRvMzVK5fjeDkQlHUzXQSNdZ7s4xOqC3nJPgz4C/TZkUecTo9YS4PruZqtDda/ag4erndP0MIn40dGA==} + + '@math.gl/web-mercator@4.1.0': + resolution: {integrity: sha512-HZo3vO5GCMkXJThxRJ5/QYUYRr3XumfT8CzNNCwoJfinxy5NtKUd7dusNTXn7yJ40UoB8FMIwkVwNlqaiRZZAw==} + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + '@nodable/entities@2.1.1': + resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1409,6 +1672,15 @@ packages: resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} engines: {node: '>=12'} + '@probe.gl/env@4.1.1': + resolution: {integrity: sha512-+68seNDMVsEegRB47pFA/Ws1Fjy8agcFYXxzorKToyPcD6zd+gZ5uhwoLd7TzsSw6Ydns//2KEszWn+EnNHTbA==} + + '@probe.gl/log@4.1.1': + resolution: {integrity: sha512-kcZs9BT44pL7hS1OkRGKYRXI/SN9KejUlPD+BY40DguRLzdC5tLG/28WGMyfKdn/51GT4a0p+0P8xvDn1Ez+Kg==} + + '@probe.gl/stats@4.1.1': + resolution: {integrity: sha512-4VpAyMHOqydSvPlEyHwXaE+AkIdR03nX+Qhlxsk2D/IW4OVmDZgIsvJB1cDzyEEtcfKcnaEbfXeiPgejBceT6g==} + '@rc-component/portal@1.1.2': resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} engines: {node: '>=8.x'} @@ -1601,6 +1873,9 @@ packages: resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} engines: {node: '>=10'} + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + '@testing-library/dom@9.3.4': resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} @@ -1637,6 +1912,24 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@turf/boolean-clockwise@5.1.5': + resolution: {integrity: sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA==} + + '@turf/clone@5.1.5': + resolution: {integrity: sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg==} + + '@turf/helpers@5.1.5': + resolution: {integrity: sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw==} + + '@turf/invariant@5.2.0': + resolution: {integrity: sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA==} + + '@turf/meta@5.2.0': + resolution: {integrity: sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q==} + + '@turf/rewind@5.1.5': + resolution: {integrity: sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -1658,12 +1951,24 @@ packages: '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + '@types/brotli@1.3.5': + resolution: {integrity: sha512-9xoNr+bcxT236/7ZgcWw/6Pb2RRetE13p4bFy1xYSckKwyOiRfmInay8baUWZgH7/284Wl6IPe7+nOI9+OQg/A==} + + '@types/command-line-args@5.2.3': + resolution: {integrity: sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==} + + '@types/command-line-usage@5.0.4': + resolution: {integrity: sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==} + '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/crypto-js@4.2.2': + resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} + '@types/d3-dispatch@3.0.6': resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} @@ -1685,6 +1990,9 @@ packages: '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -1733,12 +2041,21 @@ packages: '@types/node@14.18.63': resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} + '@types/node@24.13.0': + resolution: {integrity: sha512-5vtOqGQr4NJKeEzV441FcOi2MeG9UTWq9LqVLGneDdu4vlX17H8kQ2PA2UmNwCUGPVDj4oBjNhS7ReVEIWJJrg==} + '@types/node@25.9.1': resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/offscreencanvas@2019.7.3': + resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} + + '@types/pako@1.0.7': + resolution: {integrity: sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1895,6 +2212,32 @@ packages: '@ungap/structured-clone@1.3.1': resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + '@vivjs/constants@0.20.1': + resolution: {integrity: sha512-VYtQnT/3bO/kVx2RTspTCzX7lrTyeYMojDBzVy1zgJ/4co8iBan3Xtnbz7HlhvFFGBe3AssFTjNwwb6XdA8Cbw==} + + '@vivjs/extensions@0.20.1': + resolution: {integrity: sha512-ZWTqVHosSc0NIrteAL0yjQj1CWqpOtsm2K3SK/w3L6nLA/HMCIfbBcgRfkYerLFcUb8hRD86BNkGgV9kN2Iejg==} + peerDependencies: + '@deck.gl/core': 9.1.15 + + '@vivjs/layers@0.20.1': + resolution: {integrity: sha512-DrB68BgLCTymmX/3sKd0h11K/ubA4x3Vy6TRUUOK3sX83j3a+SAsx0RHr2g/b7ethc0C/ZnQFBFJX6hTXHYzsA==} + peerDependencies: + '@deck.gl/core': 9.1.15 + '@deck.gl/geo-layers': 9.1.15 + '@deck.gl/layers': 9.1.15 + '@luma.gl/constants': ~9.1.9 + '@luma.gl/core': ~9.1.9 + '@luma.gl/engine': ~9.1.9 + '@luma.gl/shadertools': ~9.1.9 + '@luma.gl/webgl': ~9.1.9 + + '@vivjs/loaders@0.20.1': + resolution: {integrity: sha512-7F9uYXkoFPH945o+A+YO/2DIv2WO0LJYGFHiz0ZhO0THl1mBw8NaHO1YodwzM/sqoT4X+5oGCh+5E91YX87t7g==} + + '@vivjs/types@0.20.1': + resolution: {integrity: sha512-VfWhqv893UDHii3Lr4UbWiSafDtqjXp2zsojYDAiabnLA7n4Q7bSk/BCoTt6CaehwwI7t8o3J6m9Axb2cLH4nQ==} + '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -1946,6 +2289,9 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@zarrita/storage@0.1.4': + resolution: {integrity: sha512-qURfJAQcQGRfDQ4J9HaCjGaj3jlJKc66bnRk6G/IeLUsM7WKyG7Bzsuf1EZurSXyc0I4LVcu6HaeQQ4d3kZ16g==} + '@zarrita/storage@0.2.0': resolution: {integrity: sha512-855ZXqtnds7spnT8vNvD+MXa3QExP1m2GqShe8yt7uZXHnQLgJHgkpVwFjE1B0KDDRO0ki09hmk6OboTaIfPsQ==} @@ -2099,6 +2445,10 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + apache-arrow@21.1.0: + resolution: {integrity: sha512-kQrYLxhC+NTVVZ4CCzGF6L/uPVOzJmD1T3XgbiUnP7oTeVFOFgEUu6IKNwCDkpFoBVqDKQivlX4RUFqqnWFlEA==} + hasBin: true + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -2121,6 +2471,10 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} + array-back@6.2.3: + resolution: {integrity: sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==} + engines: {node: '>=12.17'} + array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} @@ -2400,6 +2754,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} @@ -2411,6 +2768,10 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buf-compare@1.0.1: + resolution: {integrity: sha512-Bvx4xH00qweepGc43xFvMs5BKASXTbHaHm6+kDYIK9p/4iFwjATQkmPKHQSgJZzKbAymhztRbXUf1Nqhzl73/Q==} + engines: {node: '>=0.10.0'} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2475,6 +2836,10 @@ packages: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} + chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -2499,6 +2864,9 @@ packages: resolution: {integrity: sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==} engines: {node: '>=12.20'} + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + check-types@11.2.3: resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} @@ -2580,6 +2948,19 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + command-line-args@6.0.2: + resolution: {integrity: sha512-AIjYVxrV9X752LmPDLbVYv8aMCuHPSLZJXEo2qo/xJfv+NYhaZ4sMSF01rM+gHPaMgvPM0l5D/F+Qx+i2WfSmQ==} + engines: {node: '>=12.20'} + peerDependencies: + '@75lb/nature': latest + peerDependenciesMeta: + '@75lb/nature': + optional: true + + command-line-usage@7.0.4: + resolution: {integrity: sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==} + engines: {node: '>=12.20.0'} + commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -2701,6 +3082,10 @@ packages: peerDependencies: webpack: ^5.1.0 + core-assert@0.2.1: + resolution: {integrity: sha512-IG97qShIP+nrJCXMCgkNZgH7jZQ4n8RpPyPeXX++T6avR/KhLhgLiHKoEn5Rc1KjfycSfA9DMa6m+4C4eguHhw==} + engines: {node: '>=0.10.0'} + core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} @@ -2751,6 +3136,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} @@ -2976,6 +3364,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deep-strict-equal@0.2.0: + resolution: {integrity: sha512-3daSWyvZ/zwJvuMGlzG1O+Ow0YSadGfb3jsh9xoCutv2tWyB9dA4YvR9L9/fSdDZa2dByYQe+TqapSGUrjnkoA==} + engines: {node: '>=0.10.0'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -3036,6 +3428,9 @@ packages: dicomweb-client@0.10.3: resolution: {integrity: sha512-/fHNEAYiz8j+9TNOrNJ0k+hYqirbOT85B7vM7I4VkY8DeDQb4BDUeL3RX6huDVtn6ZQlR91dI+2tejLc5c99wA==} + dicomweb-client@0.11.2: + resolution: {integrity: sha512-HsjQtmw4XY35ZyrhW5WY7P5ZgGIrY1M1jfLeq2IKANDIqfWoE4QW496VcsbuX4qnTNoeHBauei73vU0WwMYrYg==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -3120,6 +3515,9 @@ packages: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} + draco3d@1.5.7: + resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -3130,6 +3528,9 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + earcut@3.0.2: resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==} @@ -3499,6 +3900,13 @@ packages: fast-uri@3.1.2: resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-xml-builder@1.2.0: + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + + fast-xml-parser@5.8.0: + resolution: {integrity: sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==} + hasBin: true + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -3518,6 +3926,9 @@ packages: picomatch: optional: true + fflate@0.7.4: + resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + fflate@0.8.3: resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} @@ -3574,6 +3985,15 @@ packages: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} + find-replace@5.0.2: + resolution: {integrity: sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==} + engines: {node: '>=14'} + peerDependencies: + '@75lb/nature': latest + peerDependenciesMeta: + '@75lb/nature': + optional: true + find-up-simple@1.0.1: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} @@ -3606,6 +4026,9 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} + flatbuffers@25.9.23: + resolution: {integrity: sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==} + flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} @@ -3706,6 +4129,10 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + geotiff@2.1.3: + resolution: {integrity: sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==} + engines: {node: '>=10.19'} + geotiff@3.0.5: resolution: {integrity: sha512-OWcL9S9+yDZ6iAlXMt32T1iwUApJM8UiD47xbm6ZP1h33d10fqkPs14EG/ttT5EnefpZSx3G15iDFC5FxUNUwA==} engines: {node: '>=10.19'} @@ -3820,6 +4247,10 @@ packages: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} + h3-js@4.4.0: + resolution: {integrity: sha512-DvJh07MhGgY2KcC4OeZc8SSyA+ZXpdvoh6uCzGpoKvWtZxJB+g6VXXC1+eWYkaMIsLz7J/ErhOalHCpcs1KYog==} + engines: {node: '>=4', npm: '>=3', yarn: '>=1.3.0'} + handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} @@ -4015,6 +4446,9 @@ packages: resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} engines: {node: '>=4'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -4028,10 +4462,18 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + image-size@0.7.5: + resolution: {integrity: sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==} + engines: {node: '>=6.9.0'} + hasBin: true + image-type@4.1.0: resolution: {integrity: sha512-CFJMJ8QK8lJvRlTCEgarL4ro6hfDQKif2HjSvYCdQZESaIPV4v9imrf7BQHK+sQeTeNeMpWciR9hyC/g8ybXEg==} engines: {node: '>=6'} + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immer@9.0.21: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} @@ -4151,6 +4593,9 @@ packages: engines: {node: '>=8'} hasBin: true + is-error@2.2.2: + resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4562,6 +5007,10 @@ packages: engines: {node: '>=6'} hasBin: true + json-bignum@0.0.3: + resolution: {integrity: sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==} + engines: {node: '>=0.8'} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -4620,6 +5069,9 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -4635,6 +5087,9 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} + ktx-parse@0.7.1: + resolution: {integrity: sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ==} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -4671,6 +5126,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -4725,6 +5183,9 @@ packages: lodash-es@4.18.1: resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} @@ -4768,6 +5229,13 @@ packages: resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} engines: {node: '>= 0.6.0'} + long@3.2.0: + resolution: {integrity: sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==} + engines: {node: '>=0.6'} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -4789,6 +5257,12 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + lz4js@0.2.0: + resolution: {integrity: sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==} + + lzw-tiff-decoder@0.1.1: + resolution: {integrity: sha512-RUiNDPLzKEhX3JM9BgnFneerJd/uLgV4TeaNnkNJ0eO/GdlPeX01PKDCUsob8jhWILxOl3dGlDbD98KGex39ig==} + magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -4825,11 +5299,17 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + math.gl@4.1.0: + resolution: {integrity: sha512-FtvCJuuAlvn4358e2SkepTv2gnV7VTvu0y/hwkkjS/urDk+nY9x/4Tsn19LmaJl1wqKaqn+QFZhbnjAsuMOkWA==} + mathjs@11.12.0: resolution: {integrity: sha512-UGhVw8rS1AyedyI55DGz9q1qZ0p98kyKPyc9vherBkoueLntPfKtPBh14x+V4cdUWK0NZV2TBwqRFlvadscSuw==} engines: {node: '>= 14'} hasBin: true + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} @@ -4927,6 +5407,9 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mjolnir.js@3.0.0: + resolution: {integrity: sha512-siX3YCG7N2HnmN1xMH3cK4JkUZJhbkhRFJL+G5N1vH0mh1t5088rJknIoqDFWDIU6NPGvRRgLnYW3ZHjSMEBLA==} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -5355,6 +5838,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} @@ -5414,6 +5900,10 @@ packages: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -5440,6 +5930,10 @@ packages: resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} engines: {node: '>=18'} + pbf@3.3.0: + resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} + hasBin: true + pbf@4.0.1: resolution: {integrity: sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==} hasBin: true @@ -5933,6 +6427,9 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} + preact@10.29.2: + resolution: {integrity: sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -6022,6 +6519,9 @@ packages: resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} engines: {node: '>=12'} + quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + quickselect@3.0.0: resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} @@ -6666,6 +7166,9 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -6730,6 +7233,9 @@ packages: resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} engines: {node: '>=8.0.0'} + snappyjs@0.6.1: + resolution: {integrity: sha512-YIK6I2lsH072UE0aOFxxY1dPDCS43I5ktqHpeAsuLNYWkE5pGxRGWfDM4/vSUfNzXjC1Ivzt3qx31PCLmc9yqg==} + sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} @@ -6937,6 +7443,9 @@ packages: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} + strnum@2.3.0: + resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==} + style-loader@3.3.4: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} @@ -6991,6 +7500,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + table-layout@4.1.1: + resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} + engines: {node: '>=12.17'} + tailwindcss@3.4.19: resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} engines: {node: '>=14.0.0'} @@ -7092,6 +7605,10 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + texture-compressor@1.0.2: + resolution: {integrity: sha512-dStVgoaQ11mA5htJ+RzZ51ZxIZqNOgWKAIvtjLrW1AliQQLCmrDqNzQZ8Jh91YealQ95DXt4MEduLzJmbs6lig==} + hasBin: true + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -7274,6 +7791,10 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + typical@7.3.0: + resolution: {integrity: sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==} + engines: {node: '>=12.17'} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -7286,6 +7807,9 @@ packages: underscore@1.13.8: resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} @@ -7346,6 +7870,10 @@ packages: unquote@1.1.1: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + unzipit@1.4.3: + resolution: {integrity: sha512-gsq2PdJIWWGhx5kcdWStvNWit9FVdTewm4SEG7gFskWs+XCVaULt9+BwuoBtJiRE8eo3L1IPAOrbByNLtLtIlg==} + engines: {node: '>=12'} + unzipit@2.0.0: resolution: {integrity: sha512-DVeVIWUZCAQPNzm5sB0hpsG1GygTTdBnzNtYYEpInkttx5evkyqRgZi6rTczoySqp8hO5jHVKzrH0f23X8FZLg==} engines: {node: '>=18'} @@ -7393,6 +7921,9 @@ packages: deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true + uzip-module@1.0.3: + resolution: {integrity: sha512-AMqwWZaknLM77G+VPYNZLEruMGWGzyigPK3/Whg99B3S6vGHuqsyl5ZrOv1UUF3paGK1U6PM0cnayioaryg/fA==} + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -7496,6 +8027,9 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} + wgsl_reflect@1.3.0: + resolution: {integrity: sha512-liK+dXfDMQUrr8QcZhZi75EFD4us4VhsIT218YMkKZr8aDExc7A5znDpfmf7IxM3nIooFPCKAnK9u8WY5XizAw==} + whatwg-encoding@1.0.5: resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation @@ -7549,6 +8083,10 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + wordwrapjs@5.1.1: + resolution: {integrity: sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==} + engines: {node: '>=12.17'} + workbox-background-sync@6.6.0: resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} @@ -7643,6 +8181,10 @@ packages: xml-name-validator@3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + xml-naming@0.1.0: + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + engines: {node: '>=16.0.0'} + xml-utils@1.10.2: resolution: {integrity: sha512-RqM+2o1RYs6T8+3DzDSoTRAUfrvaejbVHcp3+thnAtDKo8LskR+HomLajEy5UjTz24rpka7AxVBRR3g2wTUkJA==} @@ -7699,9 +8241,21 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + zarrita@0.5.4: + resolution: {integrity: sha512-i88iN2+HqIQ+uiCEWLfhjbYNXAJD7IrM4h3lFwFclfqEOOhxp10amRWtqmgN5jbuy3+h0LwdyLVVzk4y9rTLgg==} + zarrita@0.7.3: resolution: {integrity: sha512-wChTQ1Ox75INoQCzKAfLWAfB70JJ4KjdW8Sz5x4ZWrFB4Dw+YZdnxHTL0xSdsrB9EmKSeK7fS1Y+I2ibhfGbkw==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zstd-codec@0.1.5: + resolution: {integrity: sha512-v3fyjpK8S/dpY/X5WxqTK3IoCnp/ZOLxn144GZVlNUjtwAchzrVo03h+oMATFhCIiJ5KTr4V3vDQQYz4RU684g==} + + zstddec@0.1.0: + resolution: {integrity: sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==} + zstddec@0.2.0: resolution: {integrity: sha512-oyPnDa1X5c13+Y7mA/FDMNJrn4S8UNBe0KCqtDmor40Re7ALrPN6npFwyYVRRh+PqozZQdeg23QtbcamZnG5rA==} @@ -8799,6 +9353,106 @@ snapshots: '@ctrl/tinycolor@3.6.1': {} + '@deck.gl/core@9.1.15': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@luma.gl/constants': 9.1.10 + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@luma.gl/webgl': 9.1.10(@luma.gl/core@9.1.10) + '@math.gl/core': 4.1.0 + '@math.gl/sun': 4.1.0 + '@math.gl/types': 4.1.0 + '@math.gl/web-mercator': 4.1.0 + '@probe.gl/env': 4.1.1 + '@probe.gl/log': 4.1.1 + '@probe.gl/stats': 4.1.1 + '@types/offscreencanvas': 2019.7.3 + gl-matrix: 3.4.4 + mjolnir.js: 3.0.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@deck.gl/extensions@9.1.15(@deck.gl/core@9.1.15)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))': + dependencies: + '@deck.gl/core': 9.1.15 + '@luma.gl/constants': 9.1.10 + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@math.gl/core': 4.1.0 + + '@deck.gl/geo-layers@9.1.15(@deck.gl/core@9.1.15)(@deck.gl/extensions@9.1.15(@deck.gl/core@9.1.15)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@deck.gl/layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@deck.gl/mesh-layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))': + dependencies: + '@deck.gl/core': 9.1.15 + '@deck.gl/extensions': 9.1.15(@deck.gl/core@9.1.15)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/layers': 9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/mesh-layers': 9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@loaders.gl/3d-tiles': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/core': 4.4.2 + '@loaders.gl/gis': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/mvt': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/terrain': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/tiles': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/wms': 4.4.2(@loaders.gl/core@4.4.2) + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/gltf': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@math.gl/core': 4.1.0 + '@math.gl/culling': 4.1.0 + '@math.gl/web-mercator': 4.1.0 + '@types/geojson': 7946.0.16 + h3-js: 4.4.0 + long: 3.2.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@deck.gl/layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))': + dependencies: + '@deck.gl/core': 9.1.15 + '@loaders.gl/core': 4.4.2 + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@mapbox/tiny-sdf': 2.2.0 + '@math.gl/core': 4.1.0 + '@math.gl/polygon': 4.1.0 + '@math.gl/web-mercator': 4.1.0 + earcut: 2.2.4 + transitivePeerDependencies: + - '@75lb/nature' + + '@deck.gl/mesh-layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))': + dependencies: + '@deck.gl/core': 9.1.15 + '@loaders.gl/gltf': 4.4.2(@loaders.gl/core@4.4.2) + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/gltf': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + transitivePeerDependencies: + - '@75lb/nature' + - '@loaders.gl/core' + + '@deck.gl/react@9.1.15(@deck.gl/core@9.1.15)(@deck.gl/widgets@9.1.15(@deck.gl/core@9.1.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@deck.gl/core': 9.1.15 + '@deck.gl/widgets': 9.1.15(@deck.gl/core@9.1.15) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@deck.gl/widgets@9.1.15(@deck.gl/core@9.1.15)': + dependencies: + '@deck.gl/core': 9.1.15 + preact: 10.29.2 + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': dependencies: eslint: 8.57.1 @@ -9058,10 +9712,315 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} + '@loaders.gl/3d-tiles@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/compression': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/core': 4.4.2 + '@loaders.gl/crypto': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/draco': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/gltf': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/math': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/tiles': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/zip': 4.4.2(@loaders.gl/core@4.4.2) + '@math.gl/core': 4.1.0 + '@math.gl/culling': 4.1.0 + '@math.gl/geospatial': 4.1.0 + '@probe.gl/log': 4.1.1 + long: 5.3.2 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/compression@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/worker-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@types/pako': 1.0.7 + fflate: 0.7.4 + pako: 1.0.11 + snappyjs: 0.6.1 + optionalDependencies: + '@types/brotli': 1.3.5 + brotli: 1.3.3 + lz4js: 0.2.0 + zstd-codec: 0.1.5 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/core@4.4.2': + dependencies: + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/schema-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/worker-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@probe.gl/log': 4.1.1 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/crypto@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/worker-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@types/crypto-js': 4.2.2 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/draco@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/schema-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/worker-utils': 4.4.2(@loaders.gl/core@4.4.2) + draco3d: 1.5.7 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/geoarrow@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@math.gl/polygon': 4.1.0 + apache-arrow: 21.1.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/gis@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/geoarrow': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/schema-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@mapbox/vector-tile': 1.3.1 + '@math.gl/polygon': 4.1.0 + pbf: 3.3.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/gltf@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/draco': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/textures': 4.4.2(@loaders.gl/core@4.4.2) + '@math.gl/core': 4.1.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/images@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/loader-utils@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/worker-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@probe.gl/log': 4.1.1 + '@probe.gl/stats': 4.1.1 + transitivePeerDependencies: + - '@75lb/nature' + - '@loaders.gl/core' + + '@loaders.gl/math@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@math.gl/core': 4.1.0 + + '@loaders.gl/mvt@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/gis': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@math.gl/polygon': 4.1.0 + '@probe.gl/stats': 4.1.1 + pbf: 3.3.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/schema-utils@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/schema': 4.4.2 + '@types/geojson': 7946.0.16 + apache-arrow: 21.1.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/schema@4.4.2': + dependencies: + '@types/geojson': 7946.0.16 + apache-arrow: 21.1.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/terrain@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@mapbox/martini': 0.2.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/textures@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/worker-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@math.gl/types': 4.1.0 + ktx-parse: 0.7.1 + texture-compressor: 1.0.2 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/tiles@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/math': 4.4.2(@loaders.gl/core@4.4.2) + '@math.gl/core': 4.1.0 + '@math.gl/culling': 4.1.0 + '@math.gl/geospatial': 4.1.0 + '@math.gl/web-mercator': 4.1.0 + '@probe.gl/stats': 4.1.1 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/wms@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/images': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + '@loaders.gl/xml': 4.4.2(@loaders.gl/core@4.4.2) + '@turf/rewind': 5.1.5 + deep-strict-equal: 0.2.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/worker-utils@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + + '@loaders.gl/xml@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/schema': 4.4.2 + fast-xml-parser: 5.8.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@loaders.gl/zip@4.4.2(@loaders.gl/core@4.4.2)': + dependencies: + '@loaders.gl/compression': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/core': 4.4.2 + '@loaders.gl/crypto': 4.4.2(@loaders.gl/core@4.4.2) + '@loaders.gl/loader-utils': 4.4.2(@loaders.gl/core@4.4.2) + jszip: 3.10.1 + md5: 2.3.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@luma.gl/constants@9.1.10': {} + + '@luma.gl/core@9.1.10': + dependencies: + '@math.gl/types': 4.1.0 + '@probe.gl/env': 4.1.1 + '@probe.gl/log': 4.1.1 + '@probe.gl/stats': 4.1.1 + '@types/offscreencanvas': 2019.7.3 + + '@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))': + dependencies: + '@luma.gl/core': 9.1.10 + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@math.gl/core': 4.1.0 + '@math.gl/types': 4.1.0 + '@probe.gl/log': 4.1.1 + '@probe.gl/stats': 4.1.1 + + '@luma.gl/gltf@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)))(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))': + dependencies: + '@loaders.gl/core': 4.4.2 + '@loaders.gl/textures': 4.4.2(@loaders.gl/core@4.4.2) + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@math.gl/core': 4.1.0 + transitivePeerDependencies: + - '@75lb/nature' + + '@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)': + dependencies: + '@luma.gl/core': 9.1.10 + '@math.gl/core': 4.1.0 + '@math.gl/types': 4.1.0 + wgsl_reflect: 1.3.0 + + '@luma.gl/webgl@9.1.10(@luma.gl/core@9.1.10)': + dependencies: + '@luma.gl/constants': 9.1.10 + '@luma.gl/core': 9.1.10 + '@math.gl/types': 4.1.0 + '@probe.gl/env': 4.1.1 + + '@mapbox/martini@0.2.0': {} + + '@mapbox/point-geometry@0.1.0': {} + + '@mapbox/tiny-sdf@2.2.0': {} + + '@mapbox/vector-tile@1.3.1': + dependencies: + '@mapbox/point-geometry': 0.1.0 + + '@math.gl/core@4.1.0': + dependencies: + '@math.gl/types': 4.1.0 + + '@math.gl/culling@4.1.0': + dependencies: + '@math.gl/core': 4.1.0 + '@math.gl/types': 4.1.0 + + '@math.gl/geospatial@4.1.0': + dependencies: + '@math.gl/core': 4.1.0 + '@math.gl/types': 4.1.0 + + '@math.gl/polygon@4.1.0': + dependencies: + '@math.gl/core': 4.1.0 + + '@math.gl/sun@4.1.0': {} + + '@math.gl/types@4.1.0': {} + + '@math.gl/web-mercator@4.1.0': + dependencies: + '@math.gl/core': 4.1.0 + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: eslint-scope: 5.1.1 + '@nodable/entities@2.1.1': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -9228,6 +10187,14 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 + '@probe.gl/env@4.1.1': {} + + '@probe.gl/log@4.1.1': + dependencies: + '@probe.gl/env': 4.1.1 + + '@probe.gl/stats@4.1.1': {} + '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.29.7 @@ -9528,6 +10495,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + '@testing-library/dom@9.3.4': dependencies: '@babel/code-frame': 7.29.7 @@ -9575,6 +10546,33 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@turf/boolean-clockwise@5.1.5': + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + + '@turf/clone@5.1.5': + dependencies: + '@turf/helpers': 5.1.5 + + '@turf/helpers@5.1.5': {} + + '@turf/invariant@5.2.0': + dependencies: + '@turf/helpers': 5.1.5 + + '@turf/meta@5.2.0': + dependencies: + '@turf/helpers': 5.1.5 + + '@turf/rewind@5.1.5': + dependencies: + '@turf/boolean-clockwise': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -9607,6 +10605,15 @@ snapshots: dependencies: '@types/node': 14.18.63 + '@types/brotli@1.3.5': + dependencies: + '@types/node': 14.18.63 + optional: true + + '@types/command-line-args@5.2.3': {} + + '@types/command-line-usage@5.0.4': {} + '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.1.1 @@ -9616,6 +10623,8 @@ snapshots: dependencies: '@types/node': 14.18.63 + '@types/crypto-js@4.2.2': {} + '@types/d3-dispatch@3.0.6': {} '@types/eslint@8.56.12': @@ -9648,6 +10657,8 @@ snapshots: '@types/qs': 6.15.1 '@types/serve-static': 1.15.10 + '@types/geojson@7946.0.16': {} + '@types/graceful-fs@4.1.9': dependencies: '@types/node': 14.18.63 @@ -9693,12 +10704,20 @@ snapshots: '@types/node@14.18.63': {} + '@types/node@24.13.0': + dependencies: + undici-types: 7.18.2 + '@types/node@25.9.1': dependencies: undici-types: 7.24.6 '@types/normalize-package-data@2.4.4': {} + '@types/offscreencanvas@2019.7.3': {} + + '@types/pako@1.0.7': {} + '@types/parse-json@4.0.2': {} '@types/prettier@2.7.3': {} @@ -9886,6 +10905,46 @@ snapshots: '@ungap/structured-clone@1.3.1': {} + '@vivjs/constants@0.20.1': + dependencies: + '@luma.gl/constants': 9.1.10 + + '@vivjs/extensions@0.20.1(@deck.gl/core@9.1.15)': + dependencies: + '@deck.gl/core': 9.1.15 + '@vivjs/constants': 0.20.1 + + '@vivjs/layers@0.20.1(d95fa3acf411e7bd1855aa20a8b44eb1)': + dependencies: + '@deck.gl/core': 9.1.15 + '@deck.gl/geo-layers': 9.1.15(@deck.gl/core@9.1.15)(@deck.gl/extensions@9.1.15(@deck.gl/core@9.1.15)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@deck.gl/layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@deck.gl/mesh-layers@9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))))(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@deck.gl/layers': 9.1.15(@deck.gl/core@9.1.15)(@loaders.gl/core@4.4.2)(@luma.gl/core@9.1.10)(@luma.gl/engine@9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10))) + '@luma.gl/constants': 9.1.10 + '@luma.gl/core': 9.1.10 + '@luma.gl/engine': 9.1.10(@luma.gl/core@9.1.10)(@luma.gl/shadertools@9.1.10(@luma.gl/core@9.1.10)) + '@luma.gl/shadertools': 9.1.10(@luma.gl/core@9.1.10) + '@luma.gl/webgl': 9.1.10(@luma.gl/core@9.1.10) + '@math.gl/core': 4.1.0 + '@math.gl/culling': 4.1.0 + '@vivjs/constants': 0.20.1 + '@vivjs/extensions': 0.20.1(@deck.gl/core@9.1.15) + '@vivjs/loaders': 0.20.1 + '@vivjs/types': 0.20.1 + + '@vivjs/loaders@0.20.1': + dependencies: + '@vivjs/types': 0.20.1 + geotiff: 2.1.3 + lzw-tiff-decoder: 0.1.1 + quickselect: 2.0.0 + zarrita: 0.5.4 + zod: 3.25.76 + + '@vivjs/types@0.20.1': + dependencies: + '@vivjs/constants': 0.20.1 + math.gl: 4.1.0 + '@webassemblyjs/ast@1.14.1': dependencies: '@webassemblyjs/helper-numbers': 1.13.2 @@ -9966,6 +11025,11 @@ snapshots: '@xtuc/long@4.2.2': {} + '@zarrita/storage@0.1.4': + dependencies: + reference-spec-reader: 0.2.0 + unzipit: 1.4.3 + '@zarrita/storage@0.2.0': dependencies: reference-spec-reader: 0.2.0 @@ -10141,6 +11205,20 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.2 + apache-arrow@21.1.0: + dependencies: + '@swc/helpers': 0.5.23 + '@types/command-line-args': 5.2.3 + '@types/command-line-usage': 5.0.4 + '@types/node': 24.13.0 + command-line-args: 6.0.2 + command-line-usage: 7.0.4 + flatbuffers: 25.9.23 + json-bignum: 0.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - '@75lb/nature' + arg@4.1.3: {} arg@5.0.2: {} @@ -10159,6 +11237,8 @@ snapshots: aria-query@5.3.2: {} + array-back@6.2.3: {} + array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.4 @@ -10524,6 +11604,11 @@ snapshots: dependencies: fill-range: 7.1.1 + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + optional: true + browser-process-hrtime@1.0.0: {} browserslist@4.28.2: @@ -10538,6 +11623,8 @@ snapshots: dependencies: node-int64: 0.4.0 + buf-compare@1.0.1: {} + buffer-from@1.1.2: {} buffer-image-size@0.6.4: @@ -10600,6 +11687,10 @@ snapshots: case-sensitive-paths-webpack-plugin@2.4.0: {} + chalk-template@0.4.0: + dependencies: + chalk: 4.1.2 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -10622,6 +11713,8 @@ snapshots: char-regex@2.0.2: {} + charenc@0.0.2: {} + check-types@11.2.3: {} chokidar@3.6.0: @@ -10706,6 +11799,20 @@ snapshots: dependencies: delayed-stream: 1.0.0 + command-line-args@6.0.2: + dependencies: + array-back: 6.2.3 + find-replace: 5.0.2 + lodash.camelcase: 4.3.0 + typical: 7.3.0 + + command-line-usage@7.0.4: + dependencies: + array-back: 6.2.3 + chalk-template: 0.4.0 + table-layout: 4.1.1 + typical: 7.3.0 + commander@14.0.3: {} commander@2.20.3: {} @@ -10829,6 +11936,11 @@ snapshots: serialize-javascript: 7.0.5 webpack: 5.107.2(postcss@8.5.15) + core-assert@0.2.1: + dependencies: + buf-compare: 1.0.1 + is-error: 2.2.2 + core-js-compat@3.49.0: dependencies: browserslist: 4.28.2 @@ -10891,6 +12003,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypt@0.0.2: {} + crypto-js@4.2.0: {} crypto-random-string@2.0.0: {} @@ -11137,6 +12251,10 @@ snapshots: deep-is@0.1.4: {} + deep-strict-equal@0.2.0: + dependencies: + core-assert: 0.2.1 + deepmerge@4.3.1: {} default-gateway@6.0.3: @@ -11197,6 +12315,8 @@ snapshots: dicomweb-client@0.10.3: {} + dicomweb-client@0.11.2: {} + didyoumean@1.2.2: {} diff-sequences@27.5.1: {} @@ -11278,6 +12398,8 @@ snapshots: dotenv@10.0.0: {} + draco3d@1.5.7: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -11290,6 +12412,8 @@ snapshots: duplexer@0.1.2: {} + earcut@2.2.4: {} + earcut@3.0.2: {} ee-first@1.1.1: {} @@ -11861,6 +12985,19 @@ snapshots: fast-uri@3.1.2: {} + fast-xml-builder@1.2.0: + dependencies: + path-expression-matcher: 1.5.0 + xml-naming: 0.1.0 + + fast-xml-parser@5.8.0: + dependencies: + '@nodable/entities': 2.1.1 + fast-xml-builder: 1.2.0 + path-expression-matcher: 1.5.0 + strnum: 2.3.0 + xml-naming: 0.1.0 + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -11877,6 +13014,8 @@ snapshots: optionalDependencies: picomatch: 4.0.4 + fflate@0.7.4: {} + fflate@0.8.3: {} figures@2.0.0: @@ -11940,6 +13079,8 @@ snapshots: make-dir: 3.1.0 pkg-dir: 4.2.0 + find-replace@5.0.2: {} + find-up-simple@1.0.1: {} find-up@2.1.0: @@ -11975,6 +13116,8 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 + flatbuffers@25.9.23: {} + flatted@3.4.2: {} follow-redirects@1.16.0: {} @@ -12081,6 +13224,17 @@ snapshots: gensync@1.0.0-beta.2: {} + geotiff@2.1.3: + dependencies: + '@petamoriken/float16': 3.9.3 + lerc: 3.0.0 + pako: 2.1.0 + parse-headers: 2.0.6 + quick-lru: 6.1.2 + web-worker: 1.5.0 + xml-utils: 1.10.2 + zstddec: 0.1.0 + geotiff@3.0.5: dependencies: '@petamoriken/float16': 3.9.3 @@ -12230,6 +13384,8 @@ snapshots: dependencies: duplexer: 0.1.2 + h3-js@4.4.0: {} + handle-thing@2.0.1: {} handlebars@4.7.9: @@ -12439,6 +13595,8 @@ snapshots: dependencies: harmony-reflect: 1.6.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -12446,10 +13604,14 @@ snapshots: image-size@0.5.5: optional: true + image-size@0.7.5: {} + image-type@4.1.0: dependencies: file-type: 10.11.0 + immediate@3.0.6: {} + immer@9.0.21: {} import-fresh@3.3.1: @@ -12562,6 +13724,8 @@ snapshots: is-docker@2.2.1: {} + is-error@2.2.2: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -13229,6 +14393,8 @@ snapshots: jsesc@3.1.0: {} + json-bignum@0.0.3: {} + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} @@ -13282,6 +14448,13 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -13292,6 +14465,8 @@ snapshots: klona@2.0.6: {} + ktx-parse@0.7.1: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -13335,6 +14510,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lie@3.3.0: + dependencies: + immediate: 3.0.6 + lilconfig@2.1.0: {} lilconfig@3.1.3: {} @@ -13384,6 +14563,8 @@ snapshots: lodash-es@4.18.1: {} + lodash.camelcase@4.3.0: {} + lodash.capitalize@4.2.1: {} lodash.clonedeep@4.5.0: {} @@ -13412,6 +14593,10 @@ snapshots: loglevel@1.9.2: {} + long@3.2.0: {} + + long@5.3.2: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -13432,6 +14617,11 @@ snapshots: lz-string@1.5.0: {} + lz4js@0.2.0: + optional: true + + lzw-tiff-decoder@0.1.1: {} + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -13464,6 +14654,10 @@ snapshots: math-intrinsics@1.1.0: {} + math.gl@4.1.0: + dependencies: + '@math.gl/core': 4.1.0 + mathjs@11.12.0: dependencies: '@babel/runtime': 7.29.7 @@ -13476,6 +14670,12 @@ snapshots: tiny-emitter: 2.1.0 typed-function: 4.2.2 + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + mdn-data@2.0.14: {} mdn-data@2.0.4: {} @@ -13557,6 +14757,8 @@ snapshots: minimist@1.2.8: {} + mjolnir.js@3.0.0: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -13856,6 +15058,8 @@ snapshots: p-try@2.2.0: {} + pako@1.0.11: {} + pako@2.1.0: {} param-case@3.0.4: @@ -13914,6 +15118,8 @@ snapshots: path-exists@5.0.0: {} + path-expression-matcher@1.5.0: {} + path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -13928,6 +15134,11 @@ snapshots: path-type@6.0.0: {} + pbf@3.3.0: + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + pbf@4.0.1: dependencies: resolve-protobuf-schema: 2.1.0 @@ -14398,6 +15609,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + preact@10.29.2: {} + prelude-ls@1.2.1: {} pretty-bytes@5.6.0: {} @@ -14477,6 +15690,8 @@ snapshots: quick-lru@6.1.2: {} + quickselect@2.0.0: {} + quickselect@3.0.0: {} raf@3.4.1: @@ -15430,6 +16645,8 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.2 + setimmediate@1.0.5: {} + setprototypeof@1.2.0: {} shallowequal@1.1.0: {} @@ -15490,6 +16707,8 @@ snapshots: slugify@1.6.9: {} + snappyjs@0.6.1: {} + sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -15741,6 +16960,8 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + strnum@2.3.0: {} + style-loader@3.3.4(webpack@5.107.2(postcss@8.5.15)): dependencies: webpack: 5.107.2(postcss@8.5.15) @@ -15810,6 +17031,11 @@ snapshots: symbol-tree@3.2.4: {} + table-layout@4.1.1: + dependencies: + array-back: 6.2.3 + wordwrapjs: 5.1.1 + tailwindcss@3.4.19: dependencies: '@alloc/quick-lru': 5.2.0 @@ -15916,6 +17142,11 @@ snapshots: text-table@0.2.0: {} + texture-compressor@1.0.2: + dependencies: + argparse: 1.0.10 + image-size: 0.7.5 + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -16087,6 +17318,8 @@ snapshots: typescript@4.9.5: {} + typical@7.3.0: {} + uglify-js@3.19.3: optional: true @@ -16099,6 +17332,8 @@ snapshots: underscore@1.13.8: {} + undici-types@7.18.2: {} + undici-types@7.24.6: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -16138,6 +17373,10 @@ snapshots: unquote@1.1.1: {} + unzipit@1.4.3: + dependencies: + uzip-module: 1.0.3 + unzipit@2.0.0: {} upath@1.2.0: {} @@ -16176,6 +17415,8 @@ snapshots: uuid@9.0.1: {} + uzip-module@1.0.3: {} + v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@8.1.1: @@ -16338,6 +17579,8 @@ snapshots: websocket-extensions@0.1.4: {} + wgsl_reflect@1.3.0: {} + whatwg-encoding@1.0.5: dependencies: iconv-lite: 0.4.24 @@ -16413,6 +17656,8 @@ snapshots: wordwrap@1.0.0: {} + wordwrapjs@5.1.1: {} + workbox-background-sync@6.6.0: dependencies: idb: 7.1.1 @@ -16559,6 +17804,8 @@ snapshots: xml-name-validator@3.0.0: {} + xml-naming@0.1.0: {} + xml-utils@1.10.2: {} xmlchars@2.2.0: {} @@ -16605,9 +17852,21 @@ snapshots: yoctocolors@2.1.2: {} + zarrita@0.5.4: + dependencies: + '@zarrita/storage': 0.1.4 + numcodecs: 0.3.2 + zarrita@0.7.3: dependencies: '@zarrita/storage': 0.2.0 numcodecs: 0.3.2 + zod@3.25.76: {} + + zstd-codec@0.1.5: + optional: true + + zstddec@0.1.0: {} + zstddec@0.2.0: {} diff --git a/src/App.tsx b/src/App.tsx index 70f0cde4..5c31814c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,7 @@ import { Navigate, Route, Routes, + useLocation, useParams, } from 'react-router-dom' @@ -47,6 +48,8 @@ function ParametrizedCaseViewer({ config: AppConfig }): JSX.Element { const { studyInstanceUID } = useParams() + const location = useLocation() + const isVivRoute = location.pathname.startsWith('/viv/') if (studyInstanceUID === undefined) { return @@ -64,6 +67,8 @@ function ParametrizedCaseViewer({ app={app} enableAnnotationTools={enableAnnotationTools} studyInstanceUID={studyInstanceUID} + isVivRoute={isVivRoute} + vivSettings={config.vivSettings} /> ) @@ -462,6 +467,52 @@ class App extends React.Component { this.signIn() } + /** Shared layout for study viewer routes (classic and `/viv/...`). */ + private renderCaseViewerShell( + appInfo: { + name: string + version: string + homepage: string + uid: string + organization?: string + }, + enableWorklist: boolean, + enableServerSelection: boolean, + enableMemoryMonitoring: boolean, + isLogoutPossible: boolean, + onLogout: () => void, + layoutStyle: { height: string }, + layoutContentStyle: { height: string }, + ): JSX.Element { + return ( + + +
+ + + + {enableMemoryMonitoring && ( + + )} + + + ) + } + render(): React.ReactNode { const appInfo = { name: this.props.name, @@ -564,63 +615,55 @@ class App extends React.Component { /> - -
- - - - {enableMemoryMonitoring && ( - - )} - - - } + element={this.renderCaseViewerShell( + appInfo, + enableWorklist, + enableServerSelection, + enableMemoryMonitoring, + isLogoutPossible, + onLogout, + layoutStyle, + layoutContentStyle, + )} /> - -
- - - - {enableMemoryMonitoring && ( - - )} - - - } + element={this.renderCaseViewerShell( + appInfo, + enableWorklist, + enableServerSelection, + enableMemoryMonitoring, + isLogoutPossible, + onLogout, + layoutStyle, + layoutContentStyle, + )} + /> + + + colors?: Array<[number, number, number]> + initialViewState?: { + target: [number, number, number] + zoom?: number + } +} + export default interface AppConfig { /** * Currently, only one server is supported. However, support for multiple @@ -107,4 +124,6 @@ export default interface AppConfig { enableInDevelopment?: boolean } enableMemoryMonitoring?: boolean + /** Optional display overrides for the Viv slide viewer at `/viv/...` routes (channels, contrast, etc.). */ + vivSettings?: VivSettings } diff --git a/src/DicomWebManager.ts b/src/DicomWebManager.ts index df65c6d8..fc40527e 100644 --- a/src/DicomWebManager.ts +++ b/src/DicomWebManager.ts @@ -157,6 +157,20 @@ export default class DicomWebManager implements dwc.api.DICOMwebClient { return this.stores[0].client.headers } + /** + * Run a callback on the primary {@link dwc.api.DICOMwebClient} (the store used for reads). + * Used e.g. to append Viv tile {@link dwc.api.DICOMwebClientOptions.requestHooks} that must + * see the same XHR pipeline as {@link dmv.viewer.VolumeImageViewer}. + */ + applyToPrimaryDicomwebClient( + fn: (client: dwc.api.DICOMwebClient) => void, + ): void { + if (this.stores.length === 0) { + return + } + fn(this.stores[0].client) + } + storeInstances = async ( options: dwc.api.StoreInstancesOptions, ): Promise => { diff --git a/src/components/CaseViewer.tsx b/src/components/CaseViewer.tsx index c9ca3738..907c8c03 100644 --- a/src/components/CaseViewer.tsx +++ b/src/components/CaseViewer.tsx @@ -1,21 +1,37 @@ -import { Layout, Menu } from 'antd' +import type { MenuProps } from 'antd' +import { Layout, Menu, Select, Tag } from 'antd' // skipcq: JS-C1003 import * as dcmjs from 'dcmjs' -import { useEffect, useState } from 'react' +// skipcq: JS-C1003 +import type * as dmv from 'dicom-microscopy-viewer' +import { + Fragment, + type ReactNode, + useCallback, + useEffect, + useState, +} from 'react' import { Route, Routes, useLocation, useParams } from 'react-router-dom' -import type { AnnotationSettings } from '../AppConfig' +import type { AnnotationSettings, VivSettings } from '../AppConfig' import type { User } from '../auth' import type DicomWebManager from '../DicomWebManager' import type { Slide } from '../data/slides' import { StorageClasses } from '../data/uids' import { useSlides } from '../hooks/useSlides' +import DicomMetadataStore from '../services/DICOMMetadataStore' import { type RouteComponentProps, withRouter } from '../utils/router' +import type { VivBulkAnnotationCatalogPayload } from '../viv/loadBulkAnnotationLayers' +import VivSlideViewport from '../viv/VivSlideViewport' +import { EMPTY_VIV_BULK_LOAD_STATUS } from '../viv/vivBulkLoadStatus' +import AnnotationGroupList from './AnnotationGroupList' import ClinicalTrial from './ClinicalTrial' import Patient from './Patient' import SlideList from './SlideList' import SlideViewer from './SlideViewer' import Study from './Study' +import VivBulkAnnotationLoadIndicator from './VivBulkAnnotationLoadIndicator' +import VivSettingsDrawer from './VivSettingsDrawer' const { naturalizeDataset } = dcmjs.data.DicomMetaDictionary @@ -52,6 +68,66 @@ const findSeriesSlide = ( }) } +/** Non-interactive menu row for custom panel content (avoids invalid DOM props). */ +const menuPanelItemStyle: React.CSSProperties = { + height: 'auto', + cursor: 'default', + padding: 0, + lineHeight: 'normal', +} + +function menuPanelItem( + key: string, + label: ReactNode, +): NonNullable[number] { + return { + key, + label, + disabled: true, + style: menuPanelItemStyle, + } +} + +/** Viv path: main viewport + slim right rail (classic viewer uses ~300px sider). */ +const vivChrome = (main: JSX.Element, rightPanel?: ReactNode): JSX.Element => ( +
+
+ {main} +
+ +
+) + function ParametrizedSlideViewer({ clients, slides, @@ -60,6 +136,8 @@ function ParametrizedSlideViewer({ preload, enableAnnotationTools, annotations, + isVivRoute, + vivSettings, }: { clients: { [key: string]: DicomWebManager } slides: Slide[] @@ -73,6 +151,8 @@ function ParametrizedSlideViewer({ preload: boolean enableAnnotationTools: boolean annotations: AnnotationSettings[] + isVivRoute: boolean + vivSettings?: VivSettings }): JSX.Element | null { const { studyInstanceUID = '', seriesInstanceUID = '' } = useParams<{ studyInstanceUID: string @@ -85,8 +165,126 @@ function ParametrizedSlideViewer({ ) const [derivedDataset, setDerivedDataset] = useState(null) + const [vivBulkCatalog, setVivBulkCatalog] = + useState(null) + const [vivVisibleAnnotationGroupUIDs, setVivVisibleAnnotationGroupUIDs] = + useState>(new Set()) + const [vivAnnotationGroupStyles, setVivAnnotationGroupStyles] = useState< + Record + >({}) + const [vivAnnGroupSeriesSelection, setVivAnnGroupSeriesSelection] = + useState('all') + const [vivIccProfilesAvailable, setVivIccProfilesAvailable] = useState(true) + const [vivBulkLoadStatus, setVivBulkLoadStatus] = useState( + EMPTY_VIV_BULK_LOAD_STATUS, + ) + + const getVivSeriesDescription = (seriesInstanceUID: string): string => { + const study = DicomMetadataStore.getStudy(studyInstanceUID) + if (study?.series != null && study !== undefined) { + const series = study.series.find( + (s) => s.SeriesInstanceUID === seriesInstanceUID, + ) + if ( + series?.SeriesDescription !== undefined && + series.SeriesDescription !== '' + ) { + return series.SeriesDescription + } + } + return `Series ${seriesInstanceUID.slice(0, 8)}…` + } + + const handleVivIccAvailability = useCallback((hasIccProfiles: boolean) => { + setVivIccProfilesAvailable(hasIccProfiles) + }, []) + + const handleVivBulkCatalogChange = useCallback( + (c: VivBulkAnnotationCatalogPayload | null) => { + setVivBulkCatalog(c) + if (c == null) { + setVivBulkLoadStatus(EMPTY_VIV_BULK_LOAD_STATUS) + } + if (c != null && c.annotationGroups.length > 0) { + setVivAnnGroupSeriesSelection('all') + setVivVisibleAnnotationGroupUIDs(new Set()) + setVivAnnotationGroupStyles({ ...c.defaultStylesByGroupUID }) + } else if (c != null) { + setVivVisibleAnnotationGroupUIDs(new Set()) + setVivAnnotationGroupStyles({}) + } else { + setVivVisibleAnnotationGroupUIDs(new Set()) + setVivAnnotationGroupStyles({}) + setVivAnnGroupSeriesSelection('all') + } + }, + [], + ) + + const handleVivAnnotationGroupVisibilityChange = useCallback( + ({ + annotationGroupUID, + isVisible, + }: { + annotationGroupUID: string + isVisible: boolean + }) => { + setVivVisibleAnnotationGroupUIDs((prev) => { + const next = new Set(prev) + if (isVisible) { + next.add(annotationGroupUID) + } else { + next.delete(annotationGroupUID) + } + return next + }) + }, + [], + ) + + const handleVivAnnotationGroupStyleChange = useCallback( + ({ + uid, + styleOptions, + }: { + uid: string + styleOptions: { + opacity?: number + color?: number[] + measurement?: dcmjs.sr.coding.CodedConcept + limitValues?: number[] + } + }) => { + setVivAnnotationGroupStyles((prev) => { + const base = prev[uid] ?? + vivBulkCatalog?.defaultStylesByGroupUID[uid] ?? { + opacity: 1, + color: [220, 60, 60], + } + return { + ...prev, + [uid]: { + opacity: styleOptions.opacity ?? base.opacity, + color: styleOptions.color ?? base.color, + }, + } + }) + }, + [vivBulkCatalog], + ) + + const handleVivAnnotationGroupSeriesSelect = useCallback((value: string) => { + setVivVisibleAnnotationGroupUIDs(new Set()) + setVivAnnGroupSeriesSelection(value) + }, []) + + const handleVivAnnotationGroupClick = useCallback((_uid: string) => { + /* Viv preview: no VolumeImageViewer.zoomToROI equivalent yet */ + }, []) useEffect(() => { + setVivIccProfilesAvailable(true) + const currentSlideMatchesSeries = selectedSlide?.seriesInstanceUIDs.some( (uid: string) => uid === seriesInstanceUID, @@ -171,21 +369,261 @@ function ParametrizedSlideViewer({ let viewer = null if (selectedSlide != null && selectedSlide !== undefined) { - viewer = ( - - ) + if (isVivRoute) { + const microscopyClient = + clients[StorageClasses.VL_WHOLE_SLIDE_MICROSCOPY_IMAGE] ?? + clients.default + if (microscopyClient === undefined) { + return null + } + const bulkAnnotationClient = + clients[StorageClasses.MICROSCOPY_BULK_SIMPLE_ANNOTATION] ?? + microscopyClient + + let vivAnnotationGroupListSection: ReactNode = null + if ( + vivBulkCatalog != null && + vivBulkCatalog.annotationGroups.length > 0 + ) { + const annotationGroups = vivBulkCatalog.annotationGroups + const annotationGroupsBySeries: { + [seriesInstanceUID: string]: dmv.annotation.AnnotationGroup[] + } = {} + for (const ag of annotationGroups) { + const seriesUID = ag.seriesInstanceUID + if (!(seriesUID in annotationGroupsBySeries)) { + annotationGroupsBySeries[seriesUID] = [] + } + annotationGroupsBySeries[seriesUID]?.push(ag) + } + const dropdownOptions = [ + { value: 'all', label: 'All' }, + ...Object.keys(annotationGroupsBySeries).map((seriesUID) => ({ + value: seriesUID, + label: `${getVivSeriesDescription(seriesUID)} (${annotationGroupsBySeries[seriesUID]?.length ?? 0} groups)`, + })), + ] + const selectedSeriesAnnotationGroups = + vivAnnGroupSeriesSelection === 'all' + ? annotationGroups + : (annotationGroupsBySeries[vivAnnGroupSeriesSelection] ?? []) + + vivAnnotationGroupListSection = ( + <> +
+