feat(dicomImageLoader): replace wado image loader with the new library (#3339)

* use new dicom image loader instead of cswil

new dicom image loader fails

update dicom image loader

update yarn lock

modify webpack

* update webpack

* fix webpack

* update package versions

* update package versions
This commit is contained in:
Alireza 2023-04-26 20:55:56 -04:00 committed by GitHub
parent 66863281c4
commit eea0ed487b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 80 additions and 93 deletions

View File

@ -103,8 +103,8 @@ module.exports = (env, argv, { SRC_DIR, DIST_DIR }) => {
'@hooks': path.resolve(__dirname, '../platform/viewer/src/hooks'), '@hooks': path.resolve(__dirname, '../platform/viewer/src/hooks'),
'@routes': path.resolve(__dirname, '../platform/viewer/src/routes'), '@routes': path.resolve(__dirname, '../platform/viewer/src/routes'),
'@state': path.resolve(__dirname, '../platform/viewer/src/state'), '@state': path.resolve(__dirname, '../platform/viewer/src/state'),
'cornerstone-wado-image-loader': '@cornerstonejs/dicom-image-loader':
'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min.js', '@cornerstonejs/dicom-image-loader/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js',
}, },
// Which directories to search when resolving modules // Which directories to search when resolving modules
modules: [ modules: [

View File

@ -47,6 +47,6 @@
"classnames": "^2.3.2", "classnames": "^2.3.2",
"@cornerstonejs/adapters": "^0.6.0", "@cornerstonejs/adapters": "^0.6.0",
"@cornerstonejs/core": "^0.42.2", "@cornerstonejs/core": "^0.42.2",
"@cornerstonejs/tools": "^0.63.2" "@cornerstonejs/tools": "^0.65.0"
} }
} }

View File

@ -34,7 +34,11 @@
"peerDependencies": { "peerDependencies": {
"@ohif/core": "^3.0.0", "@ohif/core": "^3.0.0",
"@ohif/ui": "^2.0.0", "@ohif/ui": "^2.0.0",
"cornerstone-wado-image-loader": "^4.13.0", "@cornerstonejs/dicom-image-loader": "^0.4.0",
"@cornerstonejs/codec-charls": "^1.2.3",
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
"@cornerstonejs/codec-openjpeg": "^1.2.2",
"@cornerstonejs/codec-openjph": "^2.4.2",
"dcmjs": "^0.29.5", "dcmjs": "^0.29.5",
"dicom-parser": "^1.8.9", "dicom-parser": "^1.8.9",
"hammerjs": "^2.0.8", "hammerjs": "^2.0.8",
@ -50,8 +54,8 @@
"@babel/runtime": "^7.20.13", "@babel/runtime": "^7.20.13",
"@cornerstonejs/adapters": "^0.6.0", "@cornerstonejs/adapters": "^0.6.0",
"@cornerstonejs/core": "^0.42.2", "@cornerstonejs/core": "^0.42.2",
"@cornerstonejs/streaming-image-volume-loader": "^0.16.2", "@cornerstonejs/streaming-image-volume-loader": "^0.18.0",
"@cornerstonejs/tools": "^0.63.2", "@cornerstonejs/tools": "^0.65.0",
"@kitware/vtk.js": "26.5.6", "@kitware/vtk.js": "26.5.6",
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"lodash.debounce": "4.0.8", "lodash.debounce": "4.0.8",

View File

@ -1,9 +1,9 @@
import * as cornerstone from '@cornerstonejs/core'; import * as cornerstone from '@cornerstonejs/core';
import { volumeLoader } from '@cornerstonejs/core'; import { volumeLoader } from '@cornerstonejs/core';
import { cornerstoneStreamingImageVolumeLoader } from '@cornerstonejs/streaming-image-volume-loader'; import { cornerstoneStreamingImageVolumeLoader } from '@cornerstonejs/streaming-image-volume-loader';
import cornerstoneWADOImageLoader, { import dicomImageLoader, {
webWorkerManager, webWorkerManager,
} from 'cornerstone-wado-image-loader'; } from '@cornerstonejs/dicom-image-loader';
import dicomParser from 'dicom-parser'; import dicomParser from 'dicom-parser';
import { errorHandler } from '@ohif/core'; import { errorHandler } from '@ohif/core';
@ -28,7 +28,7 @@ function initWebWorkers(appConfig) {
}; };
if (!initialized) { if (!initialized) {
cornerstoneWADOImageLoader.webWorkerManager.initialize(config); dicomImageLoader.webWorkerManager.initialize(config);
initialized = true; initialized = true;
} }
} }
@ -37,18 +37,18 @@ export default function initWADOImageLoader(
userAuthenticationService, userAuthenticationService,
appConfig appConfig
) { ) {
cornerstoneWADOImageLoader.external.cornerstone = cornerstone; dicomImageLoader.external.cornerstone = cornerstone;
cornerstoneWADOImageLoader.external.dicomParser = dicomParser; dicomImageLoader.external.dicomParser = dicomParser;
registerVolumeLoader( registerVolumeLoader(
'cornerstoneStreamingImageVolume', 'cornerstoneStreamingImageVolume',
cornerstoneStreamingImageVolumeLoader cornerstoneStreamingImageVolumeLoader
); );
cornerstoneWADOImageLoader.configure({ dicomImageLoader.configure({
decodeConfig: { decodeConfig: {
// !! IMPORTANT !! // !! IMPORTANT !!
// We should set this flag to false, since, by default cornerstone-wado-image-loader // We should set this flag to false, since, by default @cornerstonejs/dicom-image-loader
// will convert everything to integers (to be able to work with cornerstone-2d). // will convert everything to integers (to be able to work with cornerstone-2d).
// Until the default is set to true (which is the case for cornerstone3D), // Until the default is set to true (which is the case for cornerstone3D),
// we should set this flag to false. // we should set this flag to false.

View File

@ -1,5 +1,5 @@
import { imageLoader } from '@cornerstonejs/core'; import { imageLoader } from '@cornerstonejs/core';
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import dicomImageLoader from '@cornerstonejs/dicom-image-loader';
import { api } from 'dicomweb-client'; import { api } from 'dicomweb-client';
import { DICOMWeb, errorHandler } from '@ohif/core'; import { DICOMWeb, errorHandler } from '@ohif/core';
@ -114,7 +114,7 @@ class DicomLoaderService {
} }
if (!someInvalidStrings(imageId)) { if (!someInvalidStrings(imageId)) {
return cornerstoneWADOImageLoader.wadouri.loadFileRequest(imageId); return dicomImageLoader.wadouri.loadFileRequest(imageId);
} }
} }

View File

@ -8,7 +8,7 @@ async function getStudiesForPatientByStudyInstanceUID(
// TODO: The `DicomMetadataStore` should short-circuit both of these requests // TODO: The `DicomMetadataStore` should short-circuit both of these requests
// Data _could_ be here from route query, or if using JSON data source // Data _could_ be here from route query, or if using JSON data source
// We could also force this to "await" these values being available in the DICOMStore? // We could also force this to "await" these values being available in the DICOMStore?
// Kind of like promise fulfillment in cornerstone-wado-image-loader when there are multiple // Kind of like promise fulfillment in @cornerstonejs/dicom-image-loader when there are multiple
// outgoing requests for the same data // outgoing requests for the same data
const getStudyResult = await dataSource.query.studies.search({ const getStudyResult = await dataSource.query.studies.search({
studyInstanceUid: StudyInstanceUID, studyInstanceUid: StudyInstanceUID,

View File

@ -33,7 +33,7 @@
"@ohif/core": "^3.0.0", "@ohif/core": "^3.0.0",
"classnames": "^2.3.2", "classnames": "^2.3.2",
"@cornerstonejs/core": "^0.42.2", "@cornerstonejs/core": "^0.42.2",
"@cornerstonejs/tools": "^0.63.2", "@cornerstonejs/tools": "^0.65.0",
"@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0",
"dcmjs": "^0.29.5", "dcmjs": "^0.29.5",
"lodash.debounce": "^4.17.21", "lodash.debounce": "^4.17.21",

View File

@ -8,7 +8,7 @@ async function getStudiesForPatientByStudyInstanceUID(
// TODO: The `DicomMetadataStore` should short-circuit both of these requests // TODO: The `DicomMetadataStore` should short-circuit both of these requests
// Data _could_ be here from route query, or if using JSON data source // Data _could_ be here from route query, or if using JSON data source
// We could also force this to "await" these values being available in the DICOMStore? // We could also force this to "await" these values being available in the DICOMStore?
// Kind of like promise fulfillment in cornerstone-wado-image-loader when there are multiple // Kind of like promise fulfillment in @cornerstonejs/dicom-image-loader when there are multiple
// outgoing requests for the same data // outgoing requests for the same data
const getStudyResult = await dataSource.query.studies.search({ const getStudyResult = await dataSource.query.studies.search({
studyInstanceUid: StudyInstanceUID, studyInstanceUid: StudyInstanceUID,

View File

@ -32,7 +32,11 @@
}, },
"peerDependencies": { "peerDependencies": {
"cornerstone-math": "0.1.9", "cornerstone-math": "0.1.9",
"cornerstone-wado-image-loader": "^4.13.0", "@cornerstonejs/dicom-image-loader": "^0.4.0",
"@cornerstonejs/codec-charls": "^1.2.3",
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
"@cornerstonejs/codec-openjpeg": "^1.2.2",
"@cornerstonejs/codec-openjph": "^2.4.2",
"dicom-parser": "^1.8.9", "dicom-parser": "^1.8.9",
"@ohif/ui": "^2.0.0" "@ohif/ui": "^2.0.0"
}, },

View File

@ -116,14 +116,14 @@ class MetadataProvider {
return instance[naturalizedTagOrWADOImageLoaderTag]; return instance[naturalizedTagOrWADOImageLoaderTag];
} }
// Maybe its a legacy CornerstoneWADOImageLoader tag then: // Maybe its a legacy dicomImageLoader tag then:
return this._getCornerstoneWADOImageLoaderTag( return this._getCornerstoneDICOMImageLoaderTag(
naturalizedTagOrWADOImageLoaderTag, naturalizedTagOrWADOImageLoaderTag,
instance instance
); );
} }
_getCornerstoneWADOImageLoaderTag(wadoImageLoaderTag, instance) { _getCornerstoneDICOMImageLoaderTag(wadoImageLoaderTag, instance) {
let metadata; let metadata;
switch (wadoImageLoaderTag) { switch (wadoImageLoaderTag) {
@ -496,7 +496,7 @@ const metadataProvider = new MetadataProvider();
export default metadataProvider; export default metadataProvider;
const WADO_IMAGE_LOADER_TAGS = { const WADO_IMAGE_LOADER_TAGS = {
// CornerstoneWADOImageLoader specific // dicomImageLoader specific
GENERAL_SERIES_MODULE: 'generalSeriesModule', GENERAL_SERIES_MODULE: 'generalSeriesModule',
PATIENT_STUDY_MODULE: 'patientStudyModule', PATIENT_STUDY_MODULE: 'patientStudyModule',
IMAGE_PLANE_MODULE: 'imagePlaneModule', IMAGE_PLANE_MODULE: 'imagePlaneModule',

View File

@ -124,7 +124,7 @@ module.exports = (env, argv) => {
patterns: [ patterns: [
{ {
from: from:
'../../../node_modules/cornerstone-wado-image-loader/dist/dynamic-import', '../../../node_modules/@cornerstonejs/dicom-image-loader/dist/dynamic-import',
to: DIST_DIR, to: DIST_DIR,
}, },
], ],

View File

@ -66,7 +66,11 @@
"config-point": "^0.4.8", "config-point": "^0.4.8",
"core-js": "^3.16.1", "core-js": "^3.16.1",
"cornerstone-math": "^0.1.9", "cornerstone-math": "^0.1.9",
"cornerstone-wado-image-loader": "^4.13.0", "@cornerstonejs/dicom-image-loader": "^0.4.0",
"@cornerstonejs/codec-charls": "^1.2.3",
"@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
"@cornerstonejs/codec-openjpeg": "^1.2.2",
"@cornerstonejs/codec-openjph": "^2.4.2",
"dcmjs": "^0.29.5", "dcmjs": "^0.29.5",
"detect-gpu": "^4.0.16", "detect-gpu": "^4.0.16",
"dicom-parser": "^1.8.9", "dicom-parser": "^1.8.9",

View File

@ -1,11 +1,11 @@
import dcmjs from 'dcmjs'; import dcmjs from 'dcmjs';
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import dicomImageLoader from '@cornerstonejs/dicom-image-loader';
import FileLoader from './fileLoader'; import FileLoader from './fileLoader';
const DICOMFileLoader = new (class extends FileLoader { const DICOMFileLoader = new (class extends FileLoader {
fileType = 'application/dicom'; fileType = 'application/dicom';
loadFile(file, imageId) { loadFile(file, imageId) {
return cornerstoneWADOImageLoader.wadouri.loadFileRequest(imageId); return dicomImageLoader.wadouri.loadFileRequest(imageId);
} }
getDataset(image, imageId) { getDataset(image, imageId) {

View File

@ -1,4 +1,4 @@
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import dicomImageLoader from '@cornerstonejs/dicom-image-loader';
import FileLoader from './fileLoader'; import FileLoader from './fileLoader';
import PDFFileLoader from './pdfFileLoader'; import PDFFileLoader from './pdfFileLoader';
@ -15,7 +15,7 @@ class FileLoaderService extends FileLoader {
} }
addFile(file) { addFile(file) {
return cornerstoneWADOImageLoader.wadouri.fileManager.add(file); return dicomImageLoader.wadouri.fileManager.add(file);
} }
loadFile(file, imageId) { loadFile(file, imageId) {

View File

@ -1,10 +1,10 @@
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import dicomImageLoader from '@cornerstonejs/dicom-image-loader';
import FileLoader from './fileLoader'; import FileLoader from './fileLoader';
const PDFFileLoader = new (class extends FileLoader { const PDFFileLoader = new (class extends FileLoader {
fileType = 'application/pdf'; fileType = 'application/pdf';
loadFile(file, imageId) { loadFile(file, imageId) {
return cornerstoneWADOImageLoader.wadouri.loadFileRequest(imageId); return dicomImageLoader.wadouri.loadFileRequest(imageId);
} }
getDataset(image, imageId) { getDataset(image, imageId) {

View File

@ -1443,44 +1443,53 @@
resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81" resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81"
integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng== integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng==
"@cornerstonejs/core@^0.41.0":
version "0.41.0"
resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.41.0.tgz#1268bc9cb70e101b52e5eee9055a84541d76ef5d"
integrity sha512-Wk4BpDaKYz9KRr6eNiYatxg/ZNsluNN2p5QsK0qNYyquR5ABo/fuBexI160plP3jI4pDKlMH+OpbXuLx3T3ngw==
dependencies:
detect-gpu "^4.0.45"
lodash.clonedeep "4.5.0"
"@cornerstonejs/core@^0.42.2": "@cornerstonejs/core@^0.42.2":
version "0.42.2" version "0.42.3"
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.42.2.tgz#be69adbfd7b63718316a4f18fa55ca473506cee5" resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.42.3.tgz#c88d509f9f884942b1498e9c3dc1a4144e6c8854"
integrity sha512-sLRqCOzR8cxBtQel9fltRti/rQRiYs1Wgx/CaYRPXlWID9Gj9os4j2PJHa70OiMIp4shMsF3jyVW7BPK0t6ZJQ== integrity sha512-WhNMnc8fqq0K//BWczPgaC05zM73+4r7MXC7tKLUj75+54JPouy7NQshOxP/p23nBOYcdpm1FEkTKTw61qbDVw==
dependencies: dependencies:
detect-gpu "^4.0.45" detect-gpu "^4.0.45"
lodash.clonedeep "4.5.0" lodash.clonedeep "4.5.0"
"@cornerstonejs/core@^0.43.1": "@cornerstonejs/core@^0.44.0":
version "0.43.1" version "0.44.0"
resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.43.1.tgz#b51e3310156136e4407d56b1be9fc981022ae4dd" resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.44.0.tgz#f1a9af5407b25510e91e3e17b55dd9f3c61c557b"
integrity sha512-TT2EZHWFblkwYnMqiUWYCwtwzWEseXy819YnquWU8OzzsF14k/2JAQPvw8FB0ephv/LoVyXZPC/zARA6U30weg== integrity sha512-EZURQAuILsmiUdp5nusUpL6pJjteVgY7DqrqkFSqeeSlDjt2j+0h+kFvvbpRAhjyWz/1OjK9vtvbRFCpwhnzJw==
dependencies: dependencies:
detect-gpu "^4.0.45" detect-gpu "^4.0.45"
lodash.clonedeep "4.5.0" lodash.clonedeep "4.5.0"
"@cornerstonejs/streaming-image-volume-loader@^0.16.2": "@cornerstonejs/dicom-image-loader@^0.4.0":
version "0.16.2" version "0.4.0"
resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.16.2.tgz#7ac513a21d4d8045047a7aa2fb57b5a85682c036" resolved "https://registry.npmjs.org/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-0.4.0.tgz#c7f5c5659a10a6f4f5e96367ab6d27784daeb424"
integrity sha512-2FT0uyuj6+sarAFAdLjd3mGEeW4vD3OPMd/bJltJNyf0eJn0YRC6ke0PwEJj1uyJhEjbhquxsMqhGQIUN8vzpg== integrity sha512-ORnF/4qAbTninkesz7ADQu832PW+/xcbUhxSPU1ZPukjr9cglynsDzKjsEYJlY10+rWzbIQ+JEgefrXZgVoT1g==
dependencies: dependencies:
"@cornerstonejs/core" "^0.41.0" "@babel/eslint-parser" "^7.19.1"
"@cornerstonejs/codec-charls" "^1.2.3"
"@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2"
"@cornerstonejs/codec-openjpeg" "^1.2.2"
"@cornerstonejs/codec-openjph" "^2.4.2"
"@cornerstonejs/core" "^0.44.0"
coverage-istanbul-loader "^3.0.5"
date-format "^4.0.14"
dicom-parser "^1.8.9"
pako "^2.0.4"
uuid "^9.0.0"
"@cornerstonejs/streaming-image-volume-loader@^0.18.0":
version "0.18.0"
resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.18.0.tgz#69ed58328428710ea0a500d42fdaad4f4f867eed"
integrity sha512-mQpX8ajlKpVsmLx1GpBqoi6/M2VolG/b+Vh/W5pduRUGekewz3p2oAwIrwiRj6R/O7XhLiNTtcae7sT1+7xqpQ==
dependencies:
"@cornerstonejs/core" "^0.44.0"
cornerstone-wado-image-loader "^4.10.2" cornerstone-wado-image-loader "^4.10.2"
"@cornerstonejs/tools@^0.63.2": "@cornerstonejs/tools@^0.65.0":
version "0.63.3" version "0.65.0"
resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.63.3.tgz#a66df8e8a3dc0c1bd5224d85db5d2231ab946f12" resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.65.0.tgz#419800eed71d5c16809b393d5327dfb96b074a32"
integrity sha512-cgs/6OYcp3p+RSEOb77gR61eziTfb6Y0uK/GrdpgEet3InhFohJCst1TI8rbrHJd4wUX2VDzXHIm5gf6TlwRsA== integrity sha512-OemuMWJkRx7rvfkhI0QxXC1+3DjREuI1y74vNsyLHk9tOjX6ozbURMAGwoHrUu/Bz+8Xb/n8d6IfAF1CtjaqbA==
dependencies: dependencies:
"@cornerstonejs/core" "^0.43.1" "@cornerstonejs/core" "^0.44.0"
lodash.clonedeep "4.5.0" lodash.clonedeep "4.5.0"
lodash.get "^4.4.2" lodash.get "^4.4.2"
@ -8560,22 +8569,6 @@ cornerstone-wado-image-loader@^4.10.2:
pako "^2.0.4" pako "^2.0.4"
uuid "^9.0.0" uuid "^9.0.0"
cornerstone-wado-image-loader@^4.13.0:
version "4.13.0"
resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.13.0.tgz#277173973b1d5ec90a2d10557df1f667065953da"
integrity sha512-pv3Ic1wDXUopa3DuSJ/IVmnrdUzEsva8ARB5w/I2JPnH3GaO80yZB6TtCqP8BUf3bl33O15k7EsGSICd2KoeCw==
dependencies:
"@babel/eslint-parser" "^7.19.1"
"@cornerstonejs/codec-charls" "^1.2.3"
"@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2"
"@cornerstonejs/codec-openjpeg" "^1.2.2"
"@cornerstonejs/codec-openjph" "^2.4.2"
coverage-istanbul-loader "^3.0.5"
date-format "^4.0.14"
dicom-parser "^1.8.9"
pako "^2.0.4"
uuid "^9.0.0"
cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1:
version "5.2.1" version "5.2.1"
resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
@ -17927,27 +17920,9 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.2
picocolors "^0.2.1" picocolors "^0.2.1"
source-map "^0.6.1" source-map "^0.6.1"
postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5: postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.18, postcss@^8.4.19:
version "8.4.14"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
dependencies:
nanoid "^3.3.4"
picocolors "^1.0.0"
source-map-js "^1.0.2"
postcss@^8.4.14:
version "8.4.16"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c"
integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==
dependencies:
nanoid "^3.3.4"
picocolors "^1.0.0"
source-map-js "^1.0.2"
postcss@^8.4.17, postcss@^8.4.18, postcss@^8.4.19:
version "8.4.21" version "8.4.21"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
dependencies: dependencies:
nanoid "^3.3.4" nanoid "^3.3.4"
@ -21056,7 +21031,7 @@ table@^6.0.9:
tailwindcss@3.2.4: tailwindcss@3.2.4:
version "3.2.4" version "3.2.4"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250"
integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==
dependencies: dependencies:
arg "^5.0.2" arg "^5.0.2"