diff --git a/package-lock.json b/package-lock.json index 2bc24fc7e..34beef45a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.0.0-alpha.20", + "@iqss/dataverse-client-javascript": "2.0.0-alpha.24", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", @@ -45,6 +45,7 @@ "react-toastify": "11.0.2", "react-topbar-progress-indicator": "4.1.1", "sass": "1.58.1", + "turndown": "7.2.0", "typescript": "5.7.2", "use-deep-compare": "1.2.1", "vite-plugin-istanbul": "4.0.1", @@ -3680,9 +3681,9 @@ }, "node_modules/@iqss/dataverse-client-javascript": { "name": "@IQSS/dataverse-client-javascript", - "version": "2.0.0-alpha.20", - "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.0.0-alpha.20/8f9ae425098db416e5c6344ac6f8ce9c7db4fe05", - "integrity": "sha512-qIKJYbWa2aTLh7Yfr3TmHA+Pfyv234PNJU9Lu972LAs5XVCrVdPAe8vet5xS1z51Oc+W8CirMLrMtKhPisTiGA==", + "version": "2.0.0-alpha.24", + "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.0.0-alpha.24/7b25490120446b743ebf1cf320e93e51ba851974", + "integrity": "sha512-NwPAVp8zO7D4+Lb1Tjiem8uc6MFyVkSAIeraA/FUv6Q6qV/AQWJx8A+/0MsmwLMM6+z+6bCogQFIKFjPe4kZdg==", "dependencies": { "@types/node": "^18.15.11", "@types/turndown": "^5.0.1", @@ -5367,6 +5368,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@mixmark-io/domino": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", + "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==" + }, "node_modules/@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -22025,11 +22031,6 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/domino": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", - "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" - }, "node_modules/dompurify": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", @@ -41971,11 +41972,11 @@ } }, "node_modules/turndown": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.1.2.tgz", - "integrity": "sha512-ntI9R7fcUKjqBP6QU8rBK2Ehyt8LAzt3UBT9JR9tgo6GtuKvyUzpayWmeMKJw1DPdXzktvtIT8m2mVXz+bL/Qg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz", + "integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==", "dependencies": { - "domino": "^2.1.6" + "@mixmark-io/domino": "^2.2.0" } }, "node_modules/tweetnacl": { diff --git a/package.json b/package.json index 1e5ed0b88..21a506515 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.0.0-alpha.20", + "@iqss/dataverse-client-javascript": "2.0.0-alpha.24", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", @@ -49,6 +49,7 @@ "react-toastify": "11.0.2", "react-topbar-progress-indicator": "4.1.1", "sass": "1.58.1", + "turndown": "7.2.0", "typescript": "5.7.2", "use-deep-compare": "1.2.1", "vite-plugin-istanbul": "4.0.1", diff --git a/src/sections/collection/CollectionInfo.tsx b/src/sections/collection/CollectionInfo.tsx index 82c6ef0ae..57a4f325f 100644 --- a/src/sections/collection/CollectionInfo.tsx +++ b/src/sections/collection/CollectionInfo.tsx @@ -1,4 +1,5 @@ import { Collection } from '../../collection/domain/models/Collection' +import TurndownService from 'turndown' import styles from './Collection.module.scss' import { MarkdownComponent } from '../dataset/markdown/MarkdownComponent' import { Badge } from '@iqss/dataverse-design-system' @@ -7,6 +8,7 @@ import { DatasetLabelSemanticMeaning } from '../../dataset/domain/models/Dataset interface CollectionInfoProps { collection: Collection } +const turndownService = new TurndownService() export function CollectionInfo({ collection }: CollectionInfoProps) { return ( @@ -26,7 +28,7 @@ export function CollectionInfo({ collection }: CollectionInfoProps) { {collection.description && (
- +
)} diff --git a/tests/component/sections/collection/CollectionInfo.spec.tsx b/tests/component/sections/collection/CollectionInfo.spec.tsx index 08fb12bd3..809ff79d4 100644 --- a/tests/component/sections/collection/CollectionInfo.spec.tsx +++ b/tests/component/sections/collection/CollectionInfo.spec.tsx @@ -7,14 +7,15 @@ describe('CollectionInfo', () => { name: 'Collection Name', affiliation: 'Affiliation', isReleased: true, - description: 'Here is a description with [a link](https://dataverse.org)' + description: 'Here is a description with a link' }) cy.customMount() cy.findByRole('heading', { name: 'Collection Name' }).should('exist') cy.findByText('(Affiliation)').should('exist') - cy.findByText(/Here is a description with/).should('exist') + cy.findByText(/Here is a/).should('exist') cy.findByRole('link', { name: 'a link' }).should('exist') + cy.get('strong').contains('description').should('exist') cy.findByText('Unpublished').should('not.exist') }) diff --git a/tests/e2e-integration/integration/files/FileJSDataverseRepository.spec.ts b/tests/e2e-integration/integration/files/FileJSDataverseRepository.spec.ts index 1016d37b3..95a86ff00 100644 --- a/tests/e2e-integration/integration/files/FileJSDataverseRepository.spec.ts +++ b/tests/e2e-integration/integration/files/FileJSDataverseRepository.spec.ts @@ -481,10 +481,10 @@ describe('File JSDataverse Repository', () => { dataset.persistentId, dataset.version, new FilePaginationInfo(), - new FileCriteria().withFilterByType('text/tab-separated-values') + new FileCriteria().withFilterByType('text/plain') ) .then((files) => { - expect(files.length).to.equal(1) + expect(files.length).to.equal(2) }) })