diff --git a/plugins/dotplot-view/src/DotplotView/components/ImportForm/ImportCustomTrack.tsx b/plugins/dotplot-view/src/DotplotView/components/ImportForm/ImportCustomTrack.tsx index 814e075bfb..41e9f816c5 100644 --- a/plugins/dotplot-view/src/DotplotView/components/ImportForm/ImportCustomTrack.tsx +++ b/plugins/dotplot-view/src/DotplotView/components/ImportForm/ImportCustomTrack.tsx @@ -19,6 +19,7 @@ function getAdapter({ assembly1, assembly2, fileLocation, + indexFileLocation, bed1Location, bed2Location, }: { @@ -26,6 +27,7 @@ function getAdapter({ assembly1: string assembly2: string fileLocation?: FileLocation + indexFileLocation?: FileLocation bed1Location?: FileLocation bed2Location?: FileLocation }) { @@ -73,6 +75,13 @@ function getAdapter({ bed2Location, assemblyNames: [assembly1, assembly2], } + } else if (radioOption === '.pif.gz') { + return { + type: 'PairwiseIndexedPAFAdapter', + pifGzLocation: fileLocation, + index: { location: indexFileLocation }, + assemblyNames: [assembly1, assembly2], + } } else { throw new Error( `Unknown to detect type ${radioOption} from filename (select radio button to clarify)`, @@ -82,174 +91,206 @@ function getAdapter({ type Conf = SnapshotIn -const OpenTrack = observer( - ({ - assembly1, - assembly2, - setSessionTrackData, - }: { - sessionTrackData: Conf - assembly1: string - assembly2: string - setSessionTrackData: (arg: Conf) => void - }) => { - const [bed2Location, setBed2Location] = useState() - const [bed1Location, setBed1Location] = useState() - const [fileLocation, setFileLocation] = useState() - const [value, setValue] = useState('') - const [error, setError] = useState() - const fileName = getName(fileLocation) +const ImportCustomTrack = observer(function ({ + assembly1, + assembly2, + setSessionTrackData, +}: { + sessionTrackData: Conf + assembly1: string + assembly2: string + setSessionTrackData: (arg: Conf) => void +}) { + const [bed2Location, setBed2Location] = useState() + const [bed1Location, setBed1Location] = useState() + const [fileLocation, setFileLocation] = useState() + const [indexFileLocation, setIndexFileLocation] = useState() + const [value, setValue] = useState('') + const [error, setError] = useState() + const fileName = getName(fileLocation) - const radioOption = value || (fileName ? extName(stripGz(fileName)) : '') + const radioOption = value || (fileName ? extName(stripGz(fileName)) : '') - useEffect(() => { - try { - if (fileLocation) { - const fn = fileName ? basename(fileName) : 'MyTrack' - const trackId = `${fn}-${Date.now()}` - setError(undefined) + useEffect(() => { + try { + if (fileLocation) { + const fn = fileName ? basename(fileName) : 'MyTrack' + const trackId = `${fn}-${Date.now()}` + setError(undefined) - setSessionTrackData({ - trackId, - name: fn, - assemblyNames: [assembly2, assembly1], - type: 'SyntenyTrack', - adapter: getAdapter({ - radioOption, - assembly1, - assembly2, - fileLocation, - bed1Location, - bed2Location, - }), - }) - } - } catch (e) { - console.error(e) - setError(e) + setSessionTrackData({ + trackId, + name: fn, + assemblyNames: [assembly2, assembly1], + type: 'SyntenyTrack', + adapter: getAdapter({ + radioOption, + assembly1, + assembly2, + fileLocation, + indexFileLocation, + bed1Location, + bed2Location, + }), + }) } - }, [ - fileName, - assembly1, - assembly2, - bed1Location, - bed2Location, - fileLocation, - radioOption, - setSessionTrackData, - ]) - return ( - - {error ? : null} - - Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or - .anchors.simple (MCScan) file to view in the dotplot. These file types - can also be gzipped. The first assembly should be the query sequence - (e.g. left column of the PAF) and the second assembly should be the - target sequence (e.g. right column of the PAF) - - { - setValue(event.target.value) - }} - > - - - } label=".paf" /> - - - } label=".out" /> - - - } - label=".delta" - /> - - - } - label=".chain" - /> - - - } - label=".anchors" - /> - - - } - label=".anchors.simple" - /> - - - + } catch (e) { + console.error(e) + setError(e) + } + }, [ + fileName, + assembly1, + assembly2, + bed1Location, + bed2Location, + fileLocation, + indexFileLocation, + radioOption, + setSessionTrackData, + ]) + return ( + + {error ? : null} + + Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or + .anchors.simple (MCScan) file to view. These file types can also be + gzipped. The first assembly should be the query sequence (e.g. left + column of the PAF) and the second assembly should be the target sequence + (e.g. right column of the PAF) + + { + setValue(event.target.value) + }} + > - {value === '.anchors' || value === '.anchors.simple' ? ( -
-
- Open the {value} and .bed files for both genome assemblies - from the MCScan (Python version) pipeline{' '} - - (more info) - + } label=".paf" /> + + + } label=".out" /> + + + + } + label=".delta" + /> + + + } + label=".chain" + /> + + + } + label=".anchors" + /> + + + } + label=".anchors.simple" + /> + + + } + label=".pif.gz" + /> + + + + + + {value === '.anchors' || value === '.anchors.simple' ? ( +
+
+ Open the {value} and .bed files for both genome assemblies from + the MCScan (Python version) pipeline{' '} + + (more info) + +
+
+
+ { + setFileLocation(loc) + }} + />
-
-
- { - setFileLocation(loc) - }} - /> -
-
- { - setBed1Location(loc) - }} - /> -
-
- { - setBed2Location(loc) - }} - /> -
+
+ { + setBed1Location(loc) + }} + /> +
+
+ { + setBed2Location(loc) + }} + />
- ) : ( - { - setFileLocation(loc) - }} - /> - )} - +
+ ) : value === '.pif.gz' ? ( +
+
+ { + setFileLocation(loc) + }} + /> +
+
+ { + setIndexFileLocation(loc) + }} + /> +
+
+ ) : ( + { + setFileLocation(loc) + }} + /> + )} - - ) - }, -) + + + ) +}) -export default OpenTrack +export default ImportCustomTrack diff --git a/plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportCustomTrack.tsx b/plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportCustomTrack.tsx index a17f83d529..41e9f816c5 100644 --- a/plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportCustomTrack.tsx +++ b/plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportCustomTrack.tsx @@ -12,13 +12,14 @@ import { ErrorMessage, FileSelector } from '@jbrowse/core/ui' import { FileLocation } from '@jbrowse/core/util/types' import { observer } from 'mobx-react' import { AnyConfigurationModel } from '@jbrowse/core/configuration' -import { extName, getName, stripGz, basename } from './util' +import { basename, extName, getName, stripGz } from './util' function getAdapter({ radioOption, assembly1, assembly2, fileLocation, + indexFileLocation, bed1Location, bed2Location, }: { @@ -26,6 +27,7 @@ function getAdapter({ assembly1: string assembly2: string fileLocation?: FileLocation + indexFileLocation?: FileLocation bed1Location?: FileLocation bed2Location?: FileLocation }) { @@ -73,6 +75,13 @@ function getAdapter({ bed2Location, assemblyNames: [assembly1, assembly2], } + } else if (radioOption === '.pif.gz') { + return { + type: 'PairwiseIndexedPAFAdapter', + pifGzLocation: fileLocation, + index: { location: indexFileLocation }, + assemblyNames: [assembly1, assembly2], + } } else { throw new Error( `Unknown to detect type ${radioOption} from filename (select radio button to clarify)`, @@ -82,174 +91,206 @@ function getAdapter({ type Conf = SnapshotIn -const OpenTrack = observer( - ({ - assembly1, - assembly2, - setSessionTrackData, - }: { - sessionTrackData: Conf - assembly1: string - assembly2: string - setSessionTrackData: (arg: Conf) => void - }) => { - const [bed2Location, setBed2Location] = useState() - const [bed1Location, setBed1Location] = useState() - const [fileLocation, setFileLocation] = useState() - const [value, setValue] = useState('') - const [error, setError] = useState() - const fileName = getName(fileLocation) +const ImportCustomTrack = observer(function ({ + assembly1, + assembly2, + setSessionTrackData, +}: { + sessionTrackData: Conf + assembly1: string + assembly2: string + setSessionTrackData: (arg: Conf) => void +}) { + const [bed2Location, setBed2Location] = useState() + const [bed1Location, setBed1Location] = useState() + const [fileLocation, setFileLocation] = useState() + const [indexFileLocation, setIndexFileLocation] = useState() + const [value, setValue] = useState('') + const [error, setError] = useState() + const fileName = getName(fileLocation) - const radioOption = value || (fileName ? extName(stripGz(fileName)) : '') + const radioOption = value || (fileName ? extName(stripGz(fileName)) : '') - useEffect(() => { - try { - if (fileLocation) { - const fn = fileName ? basename(fileName) : 'MyTrack' - const trackId = `${fn}-${Date.now()}` - setError(undefined) + useEffect(() => { + try { + if (fileLocation) { + const fn = fileName ? basename(fileName) : 'MyTrack' + const trackId = `${fn}-${Date.now()}` + setError(undefined) - setSessionTrackData({ - trackId, - name: fn, - assemblyNames: [assembly2, assembly1], - type: 'SyntenyTrack', - adapter: getAdapter({ - radioOption, - assembly1, - assembly2, - fileLocation, - bed1Location, - bed2Location, - }), - }) - } - } catch (e) { - console.error(e) - setError(e) + setSessionTrackData({ + trackId, + name: fn, + assemblyNames: [assembly2, assembly1], + type: 'SyntenyTrack', + adapter: getAdapter({ + radioOption, + assembly1, + assembly2, + fileLocation, + indexFileLocation, + bed1Location, + bed2Location, + }), + }) } - }, [ - fileName, - assembly1, - assembly2, - bed1Location, - bed2Location, - fileLocation, - radioOption, - setSessionTrackData, - ]) - return ( - - {error ? : null} - - Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or - .anchors.simple (MCScan) file to view in the dotplot. These file types - can also be gzipped. The first assembly should be the query sequence - (e.g. left column of the PAF) and the second assembly should be the - target sequence (e.g. right column of the PAF) - - { - setValue(event.target.value) - }} - > - - - } label=".paf" /> - - - } label=".out" /> - - - } - label=".delta" - /> - - - } - label=".chain" - /> - - - } - label=".anchors" - /> - - - } - label=".anchors.simple" - /> - - - + } catch (e) { + console.error(e) + setError(e) + } + }, [ + fileName, + assembly1, + assembly2, + bed1Location, + bed2Location, + fileLocation, + indexFileLocation, + radioOption, + setSessionTrackData, + ]) + return ( + + {error ? : null} + + Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or + .anchors.simple (MCScan) file to view. These file types can also be + gzipped. The first assembly should be the query sequence (e.g. left + column of the PAF) and the second assembly should be the target sequence + (e.g. right column of the PAF) + + { + setValue(event.target.value) + }} + > - {value === '.anchors' || value === '.anchors.simple' ? ( -
-
- Open the {value} and .bed files for both genome assemblies - from the MCScan (Python version) pipeline{' '} - - (more info) - + } label=".paf" /> + + + } label=".out" /> + + + + } + label=".delta" + /> + + + } + label=".chain" + /> + + + } + label=".anchors" + /> + + + } + label=".anchors.simple" + /> + + + } + label=".pif.gz" + /> + + + + + + {value === '.anchors' || value === '.anchors.simple' ? ( +
+
+ Open the {value} and .bed files for both genome assemblies from + the MCScan (Python version) pipeline{' '} + + (more info) + +
+
+
+ { + setFileLocation(loc) + }} + />
-
-
- { - setFileLocation(loc) - }} - /> -
-
- { - setBed1Location(loc) - }} - /> -
-
- { - setBed2Location(loc) - }} - /> -
+
+ { + setBed1Location(loc) + }} + /> +
+
+ { + setBed2Location(loc) + }} + />
- ) : ( - { - setFileLocation(loc) - }} - /> - )} - +
+ ) : value === '.pif.gz' ? ( +
+
+ { + setFileLocation(loc) + }} + /> +
+
+ { + setIndexFileLocation(loc) + }} + /> +
+
+ ) : ( + { + setFileLocation(loc) + }} + /> + )} - - ) - }, -) + + + ) +}) -export default OpenTrack +export default ImportCustomTrack diff --git a/products/jbrowse-web/src/__snapshots__/jbrowseModel.test.ts.snap b/products/jbrowse-web/src/__snapshots__/jbrowseModel.test.ts.snap index 0f62f7bfdd..571ef18387 100644 --- a/products/jbrowse-web/src/__snapshots__/jbrowseModel.test.ts.snap +++ b/products/jbrowse-web/src/__snapshots__/jbrowseModel.test.ts.snap @@ -4262,6 +4262,57 @@ exports[`JBrowse model creates with non-empty snapshot 1`] = ` "trackId": "volvox_bedpe", "type": "VariantTrack", }, + { + "adapter": { + "assemblyNames": [ + "volvox_ins", + "volvox", + ], + "index": { + "location": { + "internetAccountId": undefined, + "internetAccountPreAuthorization": undefined, + "locationType": "UriLocation", + "uri": "volvox_ins.pif.gz.tbi", + }, + }, + "pifGzLocation": { + "internetAccountId": undefined, + "internetAccountPreAuthorization": undefined, + "locationType": "UriLocation", + "uri": "volvox_ins.pif.gz", + }, + "type": "PairwiseIndexedPAFAdapter", + }, + "assemblyNames": [ + "volvox_ins", + "volvox", + ], + "category": [ + "Synteny", + ], + "displays": [ + { + "displayId": "volvox_ins.pif-DotplotDisplay", + "type": "DotplotDisplay", + }, + { + "displayId": "volvox_ins.pif-LinearComparativeDisplay", + "type": "LinearComparativeDisplay", + }, + { + "displayId": "volvox_ins.pif-LinearSyntenyDisplay", + "type": "LinearSyntenyDisplay", + }, + { + "displayId": "volvox_ins.pif-LGVSyntenyDisplay", + "type": "LGVSyntenyDisplay", + }, + ], + "name": "volvox_ins.pif", + "trackId": "volvox_ins.pif", + "type": "SyntenyTrack", + }, ], } `; diff --git a/test_data/volvox/config.json b/test_data/volvox/config.json index 54074a496f..950f6b6c49 100644 --- a/test_data/volvox/config.json +++ b/test_data/volvox/config.json @@ -2180,6 +2180,28 @@ "displayId": "volvox_bedpe-LinearPairedArcDisplay" } ] + }, + { + "type": "SyntenyTrack", + "trackId": "volvox_ins.pif", + "name": "volvox_ins.pif", + "category": ["Synteny"], + "adapter": { + "type": "PairwiseIndexedPAFAdapter", + "pifGzLocation": { + "uri": "volvox_ins.pif.gz", + "locationType": "UriLocation" + }, + "index": { + "location": { + "uri": "volvox_ins.pif.gz.tbi", + "locationType": "UriLocation" + }, + "indexType": "TBI" + }, + "assemblyNames": ["volvox_ins", "volvox"] + }, + "assemblyNames": ["volvox_ins", "volvox"] } ], "plugins": [ diff --git a/test_data/volvox/volvox_ins.pif.gz b/test_data/volvox/volvox_ins.pif.gz new file mode 100644 index 0000000000..cb54fe8046 Binary files /dev/null and b/test_data/volvox/volvox_ins.pif.gz differ diff --git a/test_data/volvox/volvox_ins.pif.gz.tbi b/test_data/volvox/volvox_ins.pif.gz.tbi new file mode 100644 index 0000000000..dbc7323ae1 Binary files /dev/null and b/test_data/volvox/volvox_ins.pif.gz.tbi differ diff --git a/yarn.lock b/yarn.lock index 94f1355b24..c378c0bd16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1741,9 +1741,9 @@ promise-retry "^2.0.1" "@electron/notarize@^2.0.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.4.0.tgz#efa35dbd86b25d97b41d4a70cf19d1800f6e4603" - integrity sha512-ArHnRPIJJGrmV+uWNQSINAht+cM4gAo3uA3WFI54bYF93mzmD15gzhPQ0Dd+v/fkMhnRiiIO8NNkGdn87Vsy0g== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.5.0.tgz#d4d25356adfa29df4a76bd64a8bd347237cd251e" + integrity sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A== dependencies: debug "^4.1.1" fs-extra "^9.0.1" @@ -3113,7 +3113,7 @@ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== -"@npmcli/package-json@5.2.0", "@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": +"@npmcli/package-json@5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.0.tgz#a1429d3111c10044c7efbfb0fce9f2c501f4cfad" integrity sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ== @@ -3126,6 +3126,19 @@ proc-log "^4.0.0" semver "^7.5.3" +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" + integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + "@npmcli/promise-spawn@^7.0.0": version "7.0.2" resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" @@ -3157,27 +3170,27 @@ proc-log "^4.0.0" which "^4.0.0" -"@nrwl/devkit@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-19.7.3.tgz#2e63946604f1e262bb6155009f879891cf6d12f3" - integrity sha512-g9vANTuxgHan6uAkI6M6tkfLjHECLmbZ4A80UqpxJNQJsCJFEHkzIC9oxhf8bWV3PjgCH6Xm4VyQ2GHwb3sgWw== +"@nrwl/devkit@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-19.7.4.tgz#7945f4fc2f296e88d7184dea29bf2a0eac38da6d" + integrity sha512-gajVVlfQmCwY8Uu3SFwqwtdu9QcmaBGYW826vXPzOvQNvOsGHwu+bB3ozJq4sfsjxpuGjbdjBdQOuZYBgqbnTw== dependencies: - "@nx/devkit" "19.7.3" + "@nx/devkit" "19.7.4" -"@nrwl/tao@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-19.7.3.tgz#1771861d0f8aeedda6bc336422ab736e4351a53b" - integrity sha512-cIGhnSFPZdVTp4bI0fqwFoE9i7ToPg5jXz+hNMl/MTwcOQfKQ1JJY/ZPLM3aBUPORFIZ/GECQEycUb6+xCB56g== +"@nrwl/tao@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-19.7.4.tgz#569b543f42fb2b8475376dd83781a27b32605b71" + integrity sha512-vyfVcdtG3/I+/nKraEyPuaw70gxMIvKxQAD/n1k+T9J/dDpADoeOGZaygRCVRgIU1PPc7/TaRh8dBQAkZhDJxg== dependencies: - nx "19.7.3" + nx "19.7.4" tslib "^2.3.0" -"@nx/devkit@19.7.3", "@nx/devkit@>=17.1.2 < 20": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-19.7.3.tgz#a5c37b13309dbe3490bab16197dcfdd1ddd4ce02" - integrity sha512-dIavuzfcMLCTa5uhd4R7HsxcFO0w9fHwG4wDg76wyBAbPGJlrR+9zg359hZ/SkXdguO6bMVmmQg/EXIvo6g69A== +"@nx/devkit@19.7.4", "@nx/devkit@>=17.1.2 < 20": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-19.7.4.tgz#49ed45f57696ecda3a420933cd8d77b7ce39ae89" + integrity sha512-n+iFVq6Jp1dyV3JAJp2xY2yo4fzC6ImO32qHJZ+2Aqbh3Ks+yYsfuGpdj6f0/2HfkFylPygJnxphWSu1UDXMug== dependencies: - "@nrwl/devkit" "19.7.3" + "@nrwl/devkit" "19.7.4" ejs "^3.1.7" enquirer "~2.3.6" ignore "^5.0.4" @@ -3187,55 +3200,55 @@ tslib "^2.3.0" yargs-parser "21.1.1" -"@nx/nx-darwin-arm64@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.7.3.tgz#d48031ac741660d99c8f4499f95b6ca68268ce56" - integrity sha512-0dDK0UkMR0vBv4AP/48Q9A+OC2dvpivdt8su/4W/CPADy69M9B5O3jPiK+jTRsLshQG/soC9JG0Rll1BNWymPg== - -"@nx/nx-darwin-x64@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-19.7.3.tgz#9e6faae8a8698b8b8fbbb10e0fc13191a6f680c8" - integrity sha512-hTdv5YY2GQTdT7GwVO7ST27ZzvCmAQvmkEapfnCdy74QsL4gapaXJFvtWLHVfG6qHNRHWXbpdegvR3VswRHZVQ== - -"@nx/nx-freebsd-x64@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.7.3.tgz#b9a0357906371c2d5ad55ebe8b59b721aad0650b" - integrity sha512-dwuB/3eoV2RbD0b0LHnagQOXa9PKAjLi7g5vNxzw6LuNT1tdaLaUZZGv2tfG0hHjsV0cOaAX41rEyOIwJyE7zg== - -"@nx/nx-linux-arm-gnueabihf@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.7.3.tgz#7d0b416c6fc7d16e7c9242256e949e05176f4cd3" - integrity sha512-X/eG3IqvIxlCfIOiCQKv7RKwra54I+SN9zj2TeSOtd/uK0paa3mYSlGUJqoP3wpzasW1+EPIGkTQqV283IA15w== - -"@nx/nx-linux-arm64-gnu@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.7.3.tgz#8b7bcb5db0f4ff928d66ee1f34d8779969fc32ad" - integrity sha512-LNaX8DVcPlFVJhMf1AAAR6j1DZF9BlVhWlilRM44tIfnmvPfKIahKJIJbuikHE7q+lkvMrQUUDXKiQJlmm/qDw== - -"@nx/nx-linux-arm64-musl@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.7.3.tgz#d06cc5d688e82ec100907be47cab74860982344d" - integrity sha512-TJ9PqSebhrn8NfrW+wqMXB9N65U0L0Kjt8FfahWffNKtSAEUvhurbNhqna2Rt5WJe2qaVf6zN2pOHKhF/5pL0w== - -"@nx/nx-linux-x64-gnu@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.7.3.tgz#24269a68c64652b65416cfa60a0f2af8e0100d57" - integrity sha512-YMb4WGGovwgxsP6VvAEnyWvLoUwsDrdE5CxFQ2yoThD2BixmSHUKLtx6dtPDHz25nOE3v1ZzM0xTwYXBhPaeRQ== - -"@nx/nx-linux-x64-musl@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.7.3.tgz#86dab17ac802120f86fbe2de58c169e83b6d480b" - integrity sha512-zkjgDSvw2eDN+KuJBPPAPhU/lOdiMvJU0UMthJFw85dhQIYfAO8+UgiFg/qBsKo0kQ0MkhntnIPBPF8bH40qWg== - -"@nx/nx-win32-arm64-msvc@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.7.3.tgz#9bb07b15194ed4309dd5361fdb173216860ddc51" - integrity sha512-qCTFG6VxNvEe5JfoAELGZsjWDL4G+2NVSoSS3tByJYwVX256qgALcVoUHMjpxBn9FeOvUW9w5PL4Am4PKDdXLw== - -"@nx/nx-win32-x64-msvc@19.7.3": - version "19.7.3" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.7.3.tgz#c5059f2cdcdccf21e103c1ab745e2781f68b8f2c" - integrity sha512-ULNf73gLgB5cU/O4dlQe6tetbRIROTmaUNYTUUCCAC0BqVwZwPDxn4u9C5LgiErVyfPwwAhlserCGei5taLASQ== +"@nx/nx-darwin-arm64@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.7.4.tgz#94118c298561e2dde68d3f2fcb839003bd667009" + integrity sha512-EqfxGZ+4r5cv6g4xBXSfYIiwKGH9xr0EMNlMTZe7rwToqEpdirhtjuNbgWB0uiZRyeZRHlEXM6xKEEu8J6tjSA== + +"@nx/nx-darwin-x64@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-19.7.4.tgz#14bc9d80c10796b6d7406a81acb0af42096b5250" + integrity sha512-rqYjJiomI0kPjnUVJLnu5mQjyuWUbGA72RTEZ19XltJAbTssAMS4TtUY6YlW5LcjuVfKLlVEtW6nuW5ULejRCA== + +"@nx/nx-freebsd-x64@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.7.4.tgz#cb0397c52275b5507dd7f382650c7cc9654bd4e8" + integrity sha512-2TwWRk4nyfLcyOeSAFVJsXFkIKV/l90W/S6yv5W7k2xtU8slqmZkugJ8Z90adks2yRdqY6RdTk4Lc/Y0Orh0Gw== + +"@nx/nx-linux-arm-gnueabihf@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.7.4.tgz#a62d2d9d65d0ec873dcb33e0348d94c35f7b1ff3" + integrity sha512-DpazABUWfXqBzorDDFLnIfahKQb80PJYGfmIIWvkuZNtvukHdP/XMXZUEOEu4+Q8ijBitQISPYclyzNrf4yuwQ== + +"@nx/nx-linux-arm64-gnu@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.7.4.tgz#efb0ae2a66321dedbbdeaeba11cfc7fbc1dd5ee6" + integrity sha512-6vD6LKpuYf7cqnXEIqcmm1rQWWAxHxPlLww/NtT9dXkf91u922Fdb3JGcEAhB8cbCez7cazsOiulB0fQO+K78w== + +"@nx/nx-linux-arm64-musl@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.7.4.tgz#4c8c929259243e6f6fc6b8e6fa65c26e93b05c76" + integrity sha512-befwJELs3qtNbjt2gqnnDmKeQ+EAt0hihLLIgLtCZ7xLvoaJV6UodqsZ2wAOQbCZqT9CN4huFD1bi9SFZWRmPg== + +"@nx/nx-linux-x64-gnu@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.7.4.tgz#72fa45cfbe9795c8bdd78a1688815d9ab4d9792b" + integrity sha512-ZKfVMmaBJejS1K0goHYtXyDlQZ3B4xRFkWZBFe/W56VJo5UGJpTunBo5FcT1RC9hXrT1RE6Ane6AdeTLmqi42A== + +"@nx/nx-linux-x64-musl@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.7.4.tgz#d616998556849659c51fd6fc87c620c6d9f5abea" + integrity sha512-myUwejkxak2vwlvEFeTRJjtYWSVNEMB4sc1YyPBHm3SO4lhArarkuMuFZjHHmlpU32ZIKRy4VGzTzg4m8kKf/Q== + +"@nx/nx-win32-arm64-msvc@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.7.4.tgz#c4f4bb96e705da13c7e883d7406f4742714e7a7c" + integrity sha512-GSPCJTOBMsg3dQevGDVfBPilFPU3wR8DSgu4izJqNiBT893SQCSPtaSjsAicCpcf/wPU4kPUoOpRwnfunL2GlA== + +"@nx/nx-win32-x64-msvc@19.7.4": + version "19.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.7.4.tgz#603b32160aa5a3cd5e9687177af5a0f636d84a76" + integrity sha512-2Je+RfNxlXBAjCJ01z+bptNkQjjXkuhWIpZmXqUNwf6VGQQL5b43CUqHAAAY1DAbO748rVeYCDU8CiOpSbhslg== "@oclif/core@4.0.19": version "4.0.19" @@ -4261,9 +4274,9 @@ integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== "@storybook/icons@^1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.10.tgz#d3d44912a3a88f3f04f77ce2c23a7e47e796f766" - integrity sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og== + version "1.2.12" + resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.12.tgz#3e4c939113b67df7ab17b78f805dbb57f4acf0db" + integrity sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q== "@storybook/manager-api@^8.3.1": version "8.3.1" @@ -4678,9 +4691,9 @@ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== "@types/express-oauth-server@^2.0.4": version "2.0.7" @@ -8036,9 +8049,9 @@ electron-publish@25.0.3: mime "^2.5.2" electron-to-chromium@^1.5.4: - version "1.5.24" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz#b3cd2f71b7a84bac340d862e3b7b0aadf48478de" - integrity sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA== + version "1.5.25" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz#492ade1cde401332b9b75aa0c55fd5e1550ca66c" + integrity sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g== electron-updater@^6.1.1: version "6.3.4" @@ -11784,9 +11797,9 @@ memfs@^3.1.2, memfs@^3.4.1, memfs@^3.4.12: fs-monkey "^1.0.4" memfs@^4.6.0: - version "4.11.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.11.1.tgz#9c9c8e65bf8ac72c0db8d0fbbbe29248cf51d56a" - integrity sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ== + version "4.11.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.11.2.tgz#7b036eb53374f6b7bc79920c2ae2033adb1feb9e" + integrity sha512-VcR7lEtgQgv7AxGkrNNeUAimFLT+Ov8uGu1LuOfbe/iF/dKoh/QgpoaMZlhfejvLtMxtXYyeoT7Ar1jEbWdbPA== dependencies: "@jsonjoy.com/json-pack" "^1.0.3" "@jsonjoy.com/util" "^1.3.0" @@ -12507,13 +12520,13 @@ nwsapi@^2.2.12, nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== -nx@19.7.3, "nx@>=17.1.2 < 20": - version "19.7.3" - resolved "https://registry.yarnpkg.com/nx/-/nx-19.7.3.tgz#ca76e9b9fcca9a61a1a65179daef1a3914121b0e" - integrity sha512-8F4CzKavSuOFv+uKVwXHc00Px0q40CWAYCW6NC5IgU3AMaJVumyHzgB8Sn+yfkaVgfVnZVqznOsyrbZUWuj/VA== +nx@19.7.4, "nx@>=17.1.2 < 20": + version "19.7.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-19.7.4.tgz#5067c18ee0ba87d06f5ccc99bad45430600323ee" + integrity sha512-xvOUQp+jZHtXr7MYF8RdtY2fAz7vzPK58l3o73Wo4LpfFFULIPVF+f33TT1jyAQCez/tsDc9fBOSycr86df+5w== dependencies: "@napi-rs/wasm-runtime" "0.2.4" - "@nrwl/tao" "19.7.3" + "@nrwl/tao" "19.7.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.7" @@ -12548,16 +12561,16 @@ nx@19.7.3, "nx@>=17.1.2 < 20": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "19.7.3" - "@nx/nx-darwin-x64" "19.7.3" - "@nx/nx-freebsd-x64" "19.7.3" - "@nx/nx-linux-arm-gnueabihf" "19.7.3" - "@nx/nx-linux-arm64-gnu" "19.7.3" - "@nx/nx-linux-arm64-musl" "19.7.3" - "@nx/nx-linux-x64-gnu" "19.7.3" - "@nx/nx-linux-x64-musl" "19.7.3" - "@nx/nx-win32-arm64-msvc" "19.7.3" - "@nx/nx-win32-x64-msvc" "19.7.3" + "@nx/nx-darwin-arm64" "19.7.4" + "@nx/nx-darwin-x64" "19.7.4" + "@nx/nx-freebsd-x64" "19.7.4" + "@nx/nx-linux-arm-gnueabihf" "19.7.4" + "@nx/nx-linux-arm64-gnu" "19.7.4" + "@nx/nx-linux-arm64-musl" "19.7.4" + "@nx/nx-linux-x64-gnu" "19.7.4" + "@nx/nx-linux-x64-musl" "19.7.4" + "@nx/nx-win32-arm64-msvc" "19.7.4" + "@nx/nx-win32-x64-msvc" "19.7.4" object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1"