@openneuro/app 4.20.4 → 4.20.6-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/__mocks__/fileMock.js +1 -1
  2. package/package.json +5 -5
  3. package/pluralize-esm.js +204 -211
  4. package/src/@types/custom.d.ts +3 -3
  5. package/src/@types/react.d.ts +3 -4
  6. package/src/client.jsx +17 -16
  7. package/src/scripts/__mocks__/config.ts +6 -6
  8. package/src/scripts/__utils__/mock-app-shell.tsx +9 -8
  9. package/src/scripts/apm.js +6 -6
  10. package/src/scripts/app.tsx +7 -7
  11. package/src/scripts/authentication/__tests__/profile.spec.js +10 -10
  12. package/src/scripts/authentication/admin-user.jsx +2 -2
  13. package/src/scripts/authentication/logged-in.jsx +2 -2
  14. package/src/scripts/authentication/logged-out.jsx +2 -2
  15. package/src/scripts/authentication/loginCheck.js +2 -2
  16. package/src/scripts/authentication/loginUrls.ts +1 -1
  17. package/src/scripts/authentication/profile.ts +7 -7
  18. package/src/scripts/authentication/regular-user.tsx +3 -3
  19. package/src/scripts/authentication/signOut.ts +2 -2
  20. package/src/scripts/authentication/withProfile.jsx +6 -6
  21. package/src/scripts/common/block-navigation.jsx +3 -4
  22. package/src/scripts/common/containers/__tests__/header.spec.tsx +16 -16
  23. package/src/scripts/common/containers/footer.tsx +3 -3
  24. package/src/scripts/common/containers/header.tsx +30 -30
  25. package/src/scripts/common/forms/__tests__/warn-button.spec.jsx +6 -6
  26. package/src/scripts/common/forms/warn-button.jsx +21 -17
  27. package/src/scripts/common/partials/block-navigation.jsx +3 -4
  28. package/src/scripts/common/partials/freshdesk-widget.jsx +17 -20
  29. package/src/scripts/common/partials/toast-content.jsx +2 -2
  30. package/src/scripts/components/__tests__/data-table.spec.tsx +7 -7
  31. package/src/scripts/components/data-table.tsx +23 -22
  32. package/src/scripts/config.ts +2 -2
  33. package/src/scripts/datalad/dataset/comments-fragments.js +1 -1
  34. package/src/scripts/datalad/dataset/dataset-context.js +1 -1
  35. package/src/scripts/datalad/dataset/dataset-query-context.js +1 -1
  36. package/src/scripts/datalad/dataset/dataset-query-fragments.js +1 -1
  37. package/src/scripts/datalad/mutations/cache-clear.jsx +7 -6
  38. package/src/scripts/datalad/mutations/cache-id.js +2 -2
  39. package/src/scripts/datalad/mutations/delete-comment.jsx +13 -11
  40. package/src/scripts/datalad/mutations/delete.jsx +10 -9
  41. package/src/scripts/datalad/mutations/follow.jsx +12 -11
  42. package/src/scripts/datalad/mutations/publish.jsx +13 -12
  43. package/src/scripts/datalad/mutations/remove-permissions.jsx +8 -8
  44. package/src/scripts/datalad/mutations/revalidate.jsx +7 -6
  45. package/src/scripts/datalad/mutations/snapshot.tsx +7 -7
  46. package/src/scripts/datalad/mutations/star.jsx +12 -11
  47. package/src/scripts/datalad/mutations/submit-metadata.jsx +14 -12
  48. package/src/scripts/datalad/mutations/update-permissions.jsx +14 -13
  49. package/src/scripts/datalad/mutations/update-ref.jsx +7 -6
  50. package/src/scripts/datalad/routes/dataset-redirect.tsx +49 -49
  51. package/src/scripts/datalad/subscriptions/__tests__/files-subscription.spec.jsx +32 -32
  52. package/src/scripts/datalad/subscriptions/files-subscription.jsx +16 -16
  53. package/src/scripts/datalad/subscriptions/useDatasetDeletedSubscription.jsx +4 -4
  54. package/src/scripts/datalad/subscriptions/useDraftSubscription.js +4 -4
  55. package/src/scripts/datalad/subscriptions/usePermissionsSubscription.js +4 -4
  56. package/src/scripts/datalad/subscriptions/useSnapshotsUpdatedSubscriptions.js +3 -3
  57. package/src/scripts/dataset/__tests__/__snapshots__/snapshot-container.spec.tsx.snap +2 -2
  58. package/src/scripts/dataset/__tests__/snapshot-container.spec.tsx +12 -12
  59. package/src/scripts/dataset/comments/__tests__/comment.spec.jsx +21 -21
  60. package/src/scripts/dataset/comments/__tests__/comments.spec.jsx +10 -10
  61. package/src/scripts/dataset/comments/block-style-controls.jsx +15 -15
  62. package/src/scripts/dataset/comments/comment-editor.jsx +31 -31
  63. package/src/scripts/dataset/comments/comment.jsx +50 -50
  64. package/src/scripts/dataset/comments/comments.jsx +24 -22
  65. package/src/scripts/dataset/comments/inline-style-controls.jsx +9 -9
  66. package/src/scripts/dataset/comments/style-button.jsx +8 -9
  67. package/src/scripts/dataset/common/follow-toggles.tsx +3 -3
  68. package/src/scripts/dataset/dataset-query-context.js +1 -1
  69. package/src/scripts/dataset/dataset-query.jsx +34 -31
  70. package/src/scripts/dataset/dataset-routes.jsx +5 -5
  71. package/src/scripts/dataset/download/__tests__/download-command-line.spec.jsx +13 -13
  72. package/src/scripts/dataset/download/__tests__/download-link.spec.jsx +10 -10
  73. package/src/scripts/dataset/download/__tests__/download-native.spec.js +7 -7
  74. package/src/scripts/dataset/download/__tests__/shell-example.spec.jsx +5 -5
  75. package/src/scripts/dataset/download/download-command-line.jsx +9 -7
  76. package/src/scripts/dataset/download/download-datalad.jsx +22 -20
  77. package/src/scripts/dataset/download/download-derivative-datalad.tsx +2 -2
  78. package/src/scripts/dataset/download/download-derivative-s3.tsx +2 -2
  79. package/src/scripts/dataset/download/download-link.jsx +6 -6
  80. package/src/scripts/dataset/download/download-native.js +20 -19
  81. package/src/scripts/dataset/download/download-query.js +2 -3
  82. package/src/scripts/dataset/download/download-s3.jsx +8 -8
  83. package/src/scripts/dataset/download/download-script.tsx +23 -20
  84. package/src/scripts/dataset/download/native-file-toast.jsx +13 -11
  85. package/src/scripts/dataset/download/shell-example.jsx +1 -1
  86. package/src/scripts/dataset/download/track-download.js +5 -5
  87. package/src/scripts/dataset/draft-container.tsx +104 -102
  88. package/src/scripts/dataset/draft-snapshot-routes.tsx +3 -3
  89. package/src/scripts/dataset/files/__tests__/file-tree-unloaded-directory.spec.jsx +23 -23
  90. package/src/scripts/dataset/files/__tests__/file-tree.spec.jsx +57 -58
  91. package/src/scripts/dataset/files/__tests__/file-viewer-type.spec.jsx +6 -6
  92. package/src/scripts/dataset/files/__tests__/file.spec.jsx +15 -15
  93. package/src/scripts/dataset/files/file-display.jsx +11 -11
  94. package/src/scripts/dataset/files/file-tree-unloaded-directory.jsx +10 -10
  95. package/src/scripts/dataset/files/file-tree.tsx +27 -27
  96. package/src/scripts/dataset/files/file-view.jsx +4 -4
  97. package/src/scripts/dataset/files/file-viewer-type.jsx +21 -21
  98. package/src/scripts/dataset/files/file.tsx +85 -80
  99. package/src/scripts/dataset/files/files.tsx +41 -40
  100. package/src/scripts/dataset/files/index.tsx +2 -2
  101. package/src/scripts/dataset/files/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -24
  102. package/src/scripts/dataset/files/viewers/__tests__/file-viewer-json.spec.jsx +9 -9
  103. package/src/scripts/dataset/files/viewers/__tests__/parse-tabular.spec.js +8 -8
  104. package/src/scripts/dataset/files/viewers/file-viewer-csv.jsx +5 -5
  105. package/src/scripts/dataset/files/viewers/file-viewer-html.jsx +3 -3
  106. package/src/scripts/dataset/files/viewers/file-viewer-json.jsx +4 -4
  107. package/src/scripts/dataset/files/viewers/file-viewer-nifti.tsx +4 -4
  108. package/src/scripts/dataset/files/viewers/file-viewer-table.tsx +3 -3
  109. package/src/scripts/dataset/files/viewers/file-viewer-text.jsx +3 -3
  110. package/src/scripts/dataset/files/viewers/file-viewer-tsv.jsx +5 -5
  111. package/src/scripts/dataset/files/viewers/parse-tabular.js +4 -4
  112. package/src/scripts/dataset/fragments/__tests__/cancel-button.spec.tsx +5 -5
  113. package/src/scripts/dataset/fragments/__tests__/dataset-alert-draft.spec.tsx +9 -9
  114. package/src/scripts/dataset/fragments/__tests__/dataset-citation.spec.jsx +10 -10
  115. package/src/scripts/dataset/fragments/__tests__/doi-link.spec.tsx +29 -29
  116. package/src/scripts/dataset/fragments/__tests__/edit-button.spec.tsx +5 -5
  117. package/src/scripts/dataset/fragments/__tests__/edit-list.spec.jsx +13 -13
  118. package/src/scripts/dataset/fragments/__tests__/save-button.spec.tsx +5 -5
  119. package/src/scripts/dataset/fragments/__tests__/select-input.spec.tsx +26 -26
  120. package/src/scripts/dataset/fragments/cancel-button.tsx +2 -2
  121. package/src/scripts/dataset/fragments/comments-fragments.js +1 -1
  122. package/src/scripts/dataset/fragments/copyable-tooltip.jsx +14 -13
  123. package/src/scripts/dataset/fragments/dataset-alert-draft.tsx +17 -13
  124. package/src/scripts/dataset/fragments/dataset-alert-version.tsx +5 -4
  125. package/src/scripts/dataset/fragments/dataset-citation.jsx +23 -21
  126. package/src/scripts/dataset/fragments/dataset-history.jsx +12 -12
  127. package/src/scripts/dataset/fragments/dataset-reviewers.ts +1 -1
  128. package/src/scripts/dataset/fragments/doi-link.tsx +6 -6
  129. package/src/scripts/dataset/fragments/edit-button.tsx +2 -2
  130. package/src/scripts/dataset/fragments/edit-description-field.jsx +23 -21
  131. package/src/scripts/dataset/fragments/edit-description-list.jsx +8 -8
  132. package/src/scripts/dataset/fragments/edit-list.jsx +8 -8
  133. package/src/scripts/dataset/fragments/number-input.tsx +36 -35
  134. package/src/scripts/dataset/fragments/save-button.tsx +2 -2
  135. package/src/scripts/dataset/fragments/select-input.tsx +87 -86
  136. package/src/scripts/dataset/fragments/text-array-input.tsx +38 -37
  137. package/src/scripts/dataset/fragments/text-input.tsx +79 -78
  138. package/src/scripts/dataset/mutations/__tests__/cache-id.spec.js +5 -5
  139. package/src/scripts/dataset/mutations/__tests__/delete-file.spec.jsx +85 -83
  140. package/src/scripts/dataset/mutations/__tests__/delete.spec.jsx +8 -8
  141. package/src/scripts/dataset/mutations/__tests__/deprecate-snapshot.spec.tsx +17 -17
  142. package/src/scripts/dataset/mutations/__tests__/deprecate-version.spec.tsx +19 -19
  143. package/src/scripts/dataset/mutations/__tests__/description.spec.jsx +51 -51
  144. package/src/scripts/dataset/mutations/__tests__/remove-permissions.spec.tsx +9 -9
  145. package/src/scripts/dataset/mutations/__tests__/update-permissions.spec.jsx +7 -7
  146. package/src/scripts/dataset/mutations/admin-exports.jsx +13 -12
  147. package/src/scripts/dataset/mutations/cache-clear.jsx +6 -6
  148. package/src/scripts/dataset/mutations/cache-id.js +2 -2
  149. package/src/scripts/dataset/mutations/comment.jsx +25 -23
  150. package/src/scripts/dataset/mutations/create-anonymous-reviewer.tsx +36 -30
  151. package/src/scripts/dataset/mutations/dataset-relations.tsx +28 -29
  152. package/src/scripts/dataset/mutations/delete-anonymous-reviewer.tsx +7 -8
  153. package/src/scripts/dataset/mutations/delete-comment.jsx +14 -12
  154. package/src/scripts/dataset/mutations/delete-dataset-form.jsx +20 -22
  155. package/src/scripts/dataset/mutations/delete-file.jsx +8 -8
  156. package/src/scripts/dataset/mutations/delete.jsx +10 -9
  157. package/src/scripts/dataset/mutations/deprecate-version.tsx +5 -6
  158. package/src/scripts/dataset/mutations/description.jsx +21 -20
  159. package/src/scripts/dataset/mutations/flag-annex-object.jsx +10 -9
  160. package/src/scripts/dataset/mutations/follow.tsx +15 -14
  161. package/src/scripts/dataset/mutations/import-dataset.tsx +5 -5
  162. package/src/scripts/dataset/mutations/metadata-form.jsx +94 -97
  163. package/src/scripts/dataset/mutations/publish.jsx +13 -13
  164. package/src/scripts/dataset/mutations/readme.jsx +12 -11
  165. package/src/scripts/dataset/mutations/remove-annex-object.jsx +10 -9
  166. package/src/scripts/dataset/mutations/remove-permissions.tsx +5 -6
  167. package/src/scripts/dataset/mutations/revalidate.jsx +7 -7
  168. package/src/scripts/dataset/mutations/snapshot.tsx +8 -8
  169. package/src/scripts/dataset/mutations/star.tsx +14 -13
  170. package/src/scripts/dataset/mutations/submit-metadata.jsx +12 -11
  171. package/src/scripts/dataset/mutations/undo-deprecate-version.tsx +5 -6
  172. package/src/scripts/dataset/mutations/update-file.jsx +6 -6
  173. package/src/scripts/dataset/mutations/update-permissions.tsx +9 -9
  174. package/src/scripts/dataset/mutations/update-ref.jsx +7 -7
  175. package/src/scripts/dataset/routes/__tests__/deprecate-snapshot-page.spec.tsx +5 -5
  176. package/src/scripts/dataset/routes/add-metadata.jsx +19 -20
  177. package/src/scripts/dataset/routes/admin-datalad.jsx +7 -7
  178. package/src/scripts/dataset/routes/dataset-default.tsx +12 -10
  179. package/src/scripts/dataset/routes/delete-page.tsx +12 -12
  180. package/src/scripts/dataset/routes/deprecate-snapshot-page.tsx +8 -8
  181. package/src/scripts/dataset/routes/derivatives.tsx +10 -10
  182. package/src/scripts/dataset/routes/download-dataset.tsx +20 -20
  183. package/src/scripts/dataset/routes/manage-anonymous-reviewers.tsx +37 -35
  184. package/src/scripts/dataset/routes/manage-permissions.jsx +22 -22
  185. package/src/scripts/dataset/routes/publish.jsx +32 -30
  186. package/src/scripts/dataset/routes/snapshot-default.tsx +7 -7
  187. package/src/scripts/dataset/routes/snapshot.tsx +44 -43
  188. package/src/scripts/dataset/routes/styles/dataset-page-border.tsx +3 -3
  189. package/src/scripts/dataset/routes/styles/dataset-page-tab-container.tsx +3 -3
  190. package/src/scripts/dataset/routes/styles/header-row.tsx +3 -3
  191. package/src/scripts/dataset/routes/tab-routes-draft.tsx +12 -12
  192. package/src/scripts/dataset/routes/tab-routes-snapshot.tsx +8 -8
  193. package/src/scripts/dataset/snapshot-container.tsx +78 -86
  194. package/src/scripts/errors/403page.tsx +11 -11
  195. package/src/scripts/errors/404page.tsx +12 -12
  196. package/src/scripts/errors/errorBoundary.jsx +13 -12
  197. package/src/scripts/errors/errorRoute.jsx +6 -6
  198. package/src/scripts/errors/freshdesk-widget.jsx +17 -20
  199. package/src/scripts/errors/freshdeskInterface.jsx +9 -9
  200. package/src/scripts/errors/orcid/email.jsx +3 -3
  201. package/src/scripts/errors/orcid/family.jsx +4 -4
  202. package/src/scripts/errors/orcid/general.jsx +1 -1
  203. package/src/scripts/errors/orcid/given.jsx +4 -4
  204. package/src/scripts/fixtures/dataset-query.ts +119 -119
  205. package/src/scripts/fixtures/mock-app-wrapper.tsx +4 -4
  206. package/src/scripts/index.tsx +9 -9
  207. package/src/scripts/pages/admin/admin.jsx +5 -5
  208. package/src/scripts/pages/admin/flagged-files.jsx +33 -31
  209. package/src/scripts/pages/admin/user-fragment.ts +1 -1
  210. package/src/scripts/pages/admin/user-tools.tsx +13 -11
  211. package/src/scripts/pages/admin/users.jsx +38 -39
  212. package/src/scripts/pages/api.jsx +20 -19
  213. package/src/scripts/pages/citation-page.tsx +4 -4
  214. package/src/scripts/pages/faq/faq.tsx +2 -2
  215. package/src/scripts/pages/front-page/aggregate-queries/aggregate-counts-container.tsx +6 -5
  216. package/src/scripts/pages/front-page/aggregate-queries/use-participant-count.ts +2 -2
  217. package/src/scripts/pages/front-page/aggregate-queries/use-publicDatasets-count.ts +2 -2
  218. package/src/scripts/pages/front-page/front-page-content.ts +42 -42
  219. package/src/scripts/pages/front-page/front-page.tsx +18 -14
  220. package/src/scripts/pages/front-page-comp.tsx +3 -3
  221. package/src/scripts/pages/import-dataset.tsx +10 -10
  222. package/src/scripts/pages/metadata/dataset-metadata.tsx +15 -14
  223. package/src/scripts/pages/pet-redirect.tsx +2 -2
  224. package/src/scripts/queries/dataset.ts +3 -3
  225. package/src/scripts/resources/__tests__/kibana.spec.js +9 -9
  226. package/src/scripts/resources/kibana.js +3 -3
  227. package/src/scripts/resources/strings.js +2 -2
  228. package/src/scripts/routes.tsx +14 -14
  229. package/src/scripts/search/__helpers__/search-render.tsx +3 -3
  230. package/src/scripts/search/__tests__/search-container.spec.tsx +22 -22
  231. package/src/scripts/search/__tests__/search-params-ctx.spec.tsx +20 -20
  232. package/src/scripts/search/es-query-builders.ts +21 -5
  233. package/src/scripts/search/filters-block-container.tsx +14 -16
  234. package/src/scripts/search/initial-search-params.tsx +45 -45
  235. package/src/scripts/search/inputs/__tests__/sort-by-select.spec.tsx +23 -23
  236. package/src/scripts/search/inputs/admin-allDatasets-toggle.tsx +12 -12
  237. package/src/scripts/search/inputs/age-range-input.tsx +9 -8
  238. package/src/scripts/search/inputs/author-input.tsx +14 -11
  239. package/src/scripts/search/inputs/date-radios.tsx +8 -7
  240. package/src/scripts/search/inputs/diagnosis-select.tsx +6 -6
  241. package/src/scripts/search/inputs/index.ts +33 -33
  242. package/src/scripts/search/inputs/keyword-input.tsx +13 -13
  243. package/src/scripts/search/inputs/modality-select.tsx +33 -30
  244. package/src/scripts/search/inputs/pet/bodyParts_input.tsx +18 -16
  245. package/src/scripts/search/inputs/pet/scannerManufacturersModelNames_input.tsx +18 -16
  246. package/src/scripts/search/inputs/pet/scannerManufacturers_input.tsx +18 -16
  247. package/src/scripts/search/inputs/pet/tracerNames_input.tsx +16 -15
  248. package/src/scripts/search/inputs/pet/tracerRadionuclides_input.tsx +18 -16
  249. package/src/scripts/search/inputs/section-select.tsx +6 -6
  250. package/src/scripts/search/inputs/sex-radios.tsx +6 -6
  251. package/src/scripts/search/inputs/show-datasets-radios.tsx +31 -29
  252. package/src/scripts/search/inputs/sort-by-select.tsx +10 -11
  253. package/src/scripts/search/inputs/species-select.tsx +6 -6
  254. package/src/scripts/search/inputs/study-domain-input.tsx +18 -16
  255. package/src/scripts/search/inputs/subject-count-range-input.tsx +8 -7
  256. package/src/scripts/search/inputs/task-input.tsx +18 -16
  257. package/src/scripts/search/search-container.tsx +83 -85
  258. package/src/scripts/search/search-params-ctx.tsx +40 -38
  259. package/src/scripts/search/search-routes.tsx +4 -4
  260. package/src/scripts/search/use-search-results.tsx +125 -99
  261. package/src/scripts/styles/media.tsx +3 -3
  262. package/src/scripts/styles/support-modal.jsx +2 -2
  263. package/src/scripts/sw.ts +12 -11
  264. package/src/scripts/test-utils.js +4 -4
  265. package/src/scripts/uploader/add-path-to-files.js +7 -7
  266. package/src/scripts/uploader/file-select.tsx +3 -3
  267. package/src/scripts/uploader/file-upload.js +13 -12
  268. package/src/scripts/uploader/input.jsx +8 -7
  269. package/src/scripts/uploader/upload-button.jsx +3 -3
  270. package/src/scripts/uploader/upload-disclaimer-input.tsx +66 -66
  271. package/src/scripts/uploader/upload-disclaimer.jsx +6 -5
  272. package/src/scripts/uploader/upload-file-status.jsx +4 -4
  273. package/src/scripts/uploader/upload-issues.jsx +32 -29
  274. package/src/scripts/uploader/upload-metadata.jsx +18 -17
  275. package/src/scripts/uploader/upload-mutation.js +17 -20
  276. package/src/scripts/uploader/upload-progress-button.jsx +5 -4
  277. package/src/scripts/uploader/upload-progress.jsx +3 -3
  278. package/src/scripts/uploader/upload-rename.jsx +6 -5
  279. package/src/scripts/uploader/upload-resume.jsx +26 -24
  280. package/src/scripts/uploader/upload-select.jsx +10 -9
  281. package/src/scripts/uploader/upload-status.jsx +5 -5
  282. package/src/scripts/uploader/upload-step.jsx +9 -9
  283. package/src/scripts/uploader/uploader-context.js +1 -1
  284. package/src/scripts/uploader/uploader-location.js +1 -1
  285. package/src/scripts/uploader/uploader-modal.jsx +8 -7
  286. package/src/scripts/uploader/uploader-setup-routes.jsx +10 -10
  287. package/src/scripts/uploader/uploader-status-routes.jsx +6 -6
  288. package/src/scripts/uploader/uploader-view.jsx +4 -4
  289. package/src/scripts/uploader/uploader.jsx +50 -48
  290. package/src/scripts/users/username.tsx +3 -3
  291. package/src/scripts/utils/__tests__/csv.spec.ts +16 -16
  292. package/src/scripts/utils/__tests__/date.spec.js +4 -4
  293. package/src/scripts/utils/__tests__/json-ld.spec.js +12 -12
  294. package/src/scripts/utils/__tests__/newid.spec.js +9 -9
  295. package/src/scripts/utils/__tests__/userNotify.spec.js +10 -10
  296. package/src/scripts/utils/analytics.tsx +3 -3
  297. package/src/scripts/utils/cookies.js +1 -1
  298. package/src/scripts/utils/csv.ts +13 -15
  299. package/src/scripts/utils/datalad.js +1 -1
  300. package/src/scripts/utils/dataset-url.js +2 -2
  301. package/src/scripts/utils/date.js +2 -2
  302. package/src/scripts/utils/global-polyfill.ts +2 -2
  303. package/src/scripts/utils/gtag.js +6 -6
  304. package/src/scripts/utils/json-ld.js +13 -13
  305. package/src/scripts/utils/newid.js +1 -1
  306. package/src/scripts/utils/user-login-modal-ctx.tsx +4 -4
  307. package/src/scripts/utils/userNotify.js +2 -2
  308. package/src/scripts/validation/validation-panel.jsx +3 -3
  309. package/src/scripts/validation/validation-results.issues.issue.jsx +9 -9
  310. package/src/scripts/validation/validation-results.issues.jsx +19 -17
  311. package/src/scripts/validation/validation-results.jsx +10 -10
  312. package/src/scripts/validation/validation-status.jsx +19 -17
  313. package/src/scripts/validation/validation.jsx +5 -5
  314. package/src/scripts/workers/schema.ts +2 -2
  315. package/src/scripts/workers/schema.worker.ts +4 -4
  316. package/src/scripts/workers/validate.ts +2 -2
  317. package/src/scripts/workers/validate.worker.ts +7 -5
  318. package/vite.config.js +17 -17
  319. package/src/dist/assets/activity-icon.9ab0c828.png +0 -0
  320. package/src/dist/assets/bids.da8810b3.jpg +0 -0
  321. package/src/dist/assets/brand_mark.28e7645d.png +0 -0
  322. package/src/dist/assets/close-button.21e700a6.png +0 -0
  323. package/src/dist/assets/cube-get.39ed5636.png +0 -0
  324. package/src/dist/assets/cube-share.9b558c29.png +0 -0
  325. package/src/dist/assets/cube-use.ccf2ddc5.png +0 -0
  326. package/src/dist/assets/datalad.a35b15b8.jpg +0 -0
  327. package/src/dist/assets/eeg.1dc1dc54.jpg +0 -0
  328. package/src/dist/assets/email-header.1cb8bf76.png +0 -0
  329. package/src/dist/assets/ieeg.f91deb0a.jpg +0 -0
  330. package/src/dist/assets/index.3db805fb.js +0 -23127
  331. package/src/dist/assets/index.3db805fb.js.map +0 -1
  332. package/src/dist/assets/index.5eb79d2c.css +0 -1
  333. package/src/dist/assets/ljaf.567e9566.png +0 -0
  334. package/src/dist/assets/logo_app.8c986cf9.png +0 -0
  335. package/src/dist/assets/logo_cube.5224b745.png +0 -0
  336. package/src/dist/assets/logo_data.3e1d5743.png +0 -0
  337. package/src/dist/assets/logo_users.a84a265a.png +0 -0
  338. package/src/dist/assets/meg.1e1928f8.jpg +0 -0
  339. package/src/dist/assets/mri.b01e4f42.jpg +0 -0
  340. package/src/dist/assets/nih-bi-logo.80d76e1d.png +0 -0
  341. package/src/dist/assets/nih-stanford.2a7c496e.jpg +0 -0
  342. package/src/dist/assets/nih.78a64d38.png +0 -0
  343. package/src/dist/assets/nimh.0ec775d8.png +0 -0
  344. package/src/dist/assets/nru-logo.f3097dc5.png +0 -0
  345. package/src/dist/assets/nsf.eee1d3f7.png +0 -0
  346. package/src/dist/assets/nsf.f87e96e7.png +0 -0
  347. package/src/dist/assets/on-dark-horz.e1f213d0.svg +0 -1
  348. package/src/dist/assets/on-dark.12f4e2ce.svg +0 -1
  349. package/src/dist/assets/on-light-horz.23ff22c3.svg +0 -1
  350. package/src/dist/assets/on-light.50592f7f.svg +0 -1
  351. package/src/dist/assets/pet-scan.21d98a3d.jpg +0 -0
  352. package/src/dist/assets/revicons.4ca02b8a.ttf +0 -0
  353. package/src/dist/assets/revicons.9e4d4c68.eot +0 -0
  354. package/src/dist/assets/revicons.f7b9c306.woff +0 -0
  355. package/src/dist/assets/sqm-logo.9cd0cca5.png +0 -0
  356. package/src/dist/assets/squishymedia.fa3c5919.png +0 -0
  357. package/src/dist/assets/stanford.5f245936.png +0 -0
  358. package/src/dist/index.html +0 -25
@@ -1,61 +1,61 @@
1
- import React from 'react'
2
- import Markdown from 'markdown-to-jsx'
3
- import Helmet from 'react-helmet'
4
- import { useLocation, Navigate } from 'react-router-dom'
5
- import pluralize from 'pluralize'
6
- import formatDistanceToNow from 'date-fns/formatDistanceToNow'
7
- import parseISO from 'date-fns/parseISO'
8
- import { pageTitle } from '../resources/strings.js'
1
+ import React from "react"
2
+ import Markdown from "markdown-to-jsx"
3
+ import Helmet from "react-helmet"
4
+ import { Navigate, useLocation } from "react-router-dom"
5
+ import pluralize from "pluralize"
6
+ import formatDistanceToNow from "date-fns/formatDistanceToNow"
7
+ import parseISO from "date-fns/parseISO"
8
+ import { pageTitle } from "../resources/strings.js"
9
9
 
10
- import { DatasetPageTabContainer } from './routes/styles/dataset-page-tab-container'
11
- import Validation from '../validation/validation.jsx'
12
- import { config } from '../config'
10
+ import { DatasetPageTabContainer } from "./routes/styles/dataset-page-tab-container"
11
+ import Validation from "../validation/validation.jsx"
12
+ import { config } from "../config"
13
13
  import {
14
14
  getUnexpiredProfile,
15
- hasEditPermissions,
16
15
  hasDatasetAdminPermissions,
17
- } from '../authentication/profile'
18
- import { useCookies } from 'react-cookie'
19
- import { DatasetAlertDraft } from './fragments/dataset-alert-draft'
16
+ hasEditPermissions,
17
+ } from "../authentication/profile"
18
+ import { useCookies } from "react-cookie"
19
+ import { DatasetAlertDraft } from "./fragments/dataset-alert-draft"
20
20
  import {
21
- MetaDataBlock,
22
- ModalitiesMetaDataBlock,
23
21
  BrainLifeButton,
24
- ValidationBlock,
25
22
  CloneDropdown,
26
- DatasetHeader,
27
23
  DatasetGitAccess,
28
- VersionList,
24
+ DatasetHeader,
29
25
  DatasetTools,
30
- } from '@openneuro/components/dataset'
31
- import { Username } from '../users/username'
26
+ MetaDataBlock,
27
+ ModalitiesMetaDataBlock,
28
+ ValidationBlock,
29
+ VersionList,
30
+ } from "@openneuro/components/dataset"
31
+ import { Username } from "../users/username"
32
32
 
33
- import { FollowDataset } from './mutations/follow'
34
- import { StarDataset } from './mutations/star'
33
+ import { FollowDataset } from "./mutations/follow"
34
+ import { StarDataset } from "./mutations/star"
35
35
 
36
- import EditDescriptionField from './fragments/edit-description-field.jsx'
37
- import EditDescriptionList from './fragments/edit-description-list.jsx'
38
- import { DOILink } from './fragments/doi-link'
36
+ import EditDescriptionField from "./fragments/edit-description-field.jsx"
37
+ import EditDescriptionList from "./fragments/edit-description-list.jsx"
38
+ import { DOILink } from "./fragments/doi-link"
39
39
 
40
- import { TabRoutesDraft } from './routes/tab-routes-draft'
41
- import { FollowToggles } from './common/follow-toggles'
40
+ import { TabRoutesDraft } from "./routes/tab-routes-draft"
41
+ import { FollowToggles } from "./common/follow-toggles"
42
42
 
43
43
  export interface DraftContainerProps {
44
44
  dataset
45
45
  tag?: string
46
46
  }
47
47
 
48
- const formatDate = dateObject =>
49
- new Date(dateObject).toISOString().split('T')[0]
48
+ const formatDate = (dateObject) =>
49
+ new Date(dateObject).toISOString().split("T")[0]
50
50
 
51
51
  // Helper function for getting version from URL
52
- const snapshotVersion = location => {
52
+ const snapshotVersion = (location) => {
53
53
  const matches = location.pathname.match(/versions\/(.*?)(\/|$)/)
54
54
  return matches && matches[1]
55
55
  }
56
56
  const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
57
57
  const location = useLocation()
58
- const activeDataset = snapshotVersion(location) || 'draft'
58
+ const activeDataset = snapshotVersion(location) || "draft"
59
59
 
60
60
  const [selectedVersion, setSelectedVersion] = React.useState(activeDataset)
61
61
 
@@ -63,8 +63,9 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
63
63
  const description = dataset.draft.description
64
64
  const datasetId = dataset.id
65
65
 
66
- const numSessions =
67
- summary && summary.sessions.length > 0 ? summary.sessions.length : 1
66
+ const numSessions = summary && summary.sessions.length > 0
67
+ ? summary.sessions.length
68
+ : 1
68
69
 
69
70
  const dateAdded = formatDate(dataset.created)
70
71
  const dateAddedDifference = formatDistanceToNow(parseISO(dataset.created))
@@ -76,15 +77,14 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
76
77
  const [cookies] = useCookies()
77
78
  const profile = getUnexpiredProfile(cookies)
78
79
  const isAdmin = profile?.admin
79
- const hasEdit =
80
- hasEditPermissions(dataset.permissions, profile?.sub) || isAdmin
81
- const hasDraftChanges =
82
- dataset.snapshots.length === 0 ||
80
+ const hasEdit = hasEditPermissions(dataset.permissions, profile?.sub) ||
81
+ isAdmin
82
+ const hasDraftChanges = dataset.snapshots.length === 0 ||
83
83
  dataset.draft.head !==
84
84
  dataset.snapshots[dataset.snapshots.length - 1].hexsha
85
85
  const isDatasetAdmin =
86
86
  hasDatasetAdminPermissions(dataset.permissions, profile?.sub) || isAdmin
87
- const modality: string = summary?.modalities[0] || ''
87
+ const modality: string = summary?.modalities[0] || ""
88
88
  const hasDerivatives = dataset?.derivatives.length > 0
89
89
 
90
90
  return (
@@ -97,15 +97,16 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
97
97
  {dataset.snapshots.length !== 0 &&
98
98
  dataset.snapshots[dataset.snapshots.length - 1].tag &&
99
99
  !hasEdit && (
100
- <Navigate
101
- to={`/datasets/${dataset.id}/versions/${
102
- dataset.snapshots[dataset.snapshots.length - 1].tag
103
- }`}
104
- replace
105
- />
106
- )}
100
+ <Navigate
101
+ to={`/datasets/${dataset.id}/versions/${
102
+ dataset.snapshots[dataset.snapshots.length - 1].tag
103
+ }`}
104
+ replace
105
+ />
106
+ )}
107
107
  <div
108
- className={`dataset dataset-draft dataset-page dataset-page-${modality?.toLowerCase()}`}>
108
+ className={`dataset dataset-draft dataset-page dataset-page-${modality?.toLowerCase()}`}
109
+ >
109
110
  <DatasetHeader
110
111
  pageHeading={description.Name}
111
112
  modality={modality}
@@ -116,7 +117,8 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
116
117
  field="Name"
117
118
  rows={2}
118
119
  description={description.Name}
119
- editMode={hasEdit}>
120
+ editMode={hasEdit}
121
+ >
120
122
  {description.Name}
121
123
  </EditDescriptionField>
122
124
  <FollowToggles>
@@ -193,8 +195,9 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
193
195
  field="Authors"
194
196
  heading="Authors"
195
197
  description={description.Authors}
196
- editMode={hasEdit}>
197
- {description?.Authors?.length ? description.Authors : ['N/A']}
198
+ editMode={hasEdit}
199
+ >
200
+ {description?.Authors?.length ? description.Authors : ["N/A"]}
198
201
  </EditDescriptionList>
199
202
  {summary && (
200
203
  <ModalitiesMetaDataBlock
@@ -203,7 +206,7 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
203
206
  />
204
207
  )}
205
208
  <MetaDataBlock
206
- heading={dataset.snapshots.length ? 'Versions' : 'Version'}
209
+ heading={dataset.snapshots.length ? "Versions" : "Version"}
207
210
  item={
208
211
  <div className="version-block">
209
212
  <VersionList
@@ -222,62 +225,54 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
222
225
  {summary && (
223
226
  <MetaDataBlock
224
227
  heading="Tasks"
225
- item={summary.tasks.length ? summary.tasks.join(', ') : 'N/A'}
228
+ item={summary.tasks.length ? summary.tasks.join(", ") : "N/A"}
226
229
  className="dmb-inline-list"
227
230
  />
228
231
  )}
229
- {summary?.modalities.includes('pet') ||
230
- summary?.modalities.includes('Pet') ||
231
- (summary?.modalities.includes('PET') && (
232
+ {summary?.modalities.includes("pet") ||
233
+ summary?.modalities.includes("Pet") ||
234
+ (summary?.modalities.includes("PET") && (
232
235
  <>
233
236
  <MetaDataBlock
234
- heading={pluralize('Target', summary.pet?.BodyPart)}
237
+ heading={pluralize("Target", summary.pet?.BodyPart)}
235
238
  item={summary.pet?.BodyPart}
236
239
  />
237
240
  <MetaDataBlock
238
241
  heading={pluralize(
239
- 'Scanner Manufacturer',
242
+ "Scanner Manufacturer",
240
243
  summary.pet?.ScannerManufacturer,
241
244
  )}
242
- item={
243
- summary.pet?.ScannerManufacturer
244
- ? summary.pet?.ScannerManufacturer
245
- : 'N/A'
246
- }
245
+ item={summary.pet?.ScannerManufacturer
246
+ ? summary.pet?.ScannerManufacturer
247
+ : "N/A"}
247
248
  />
248
249
 
249
250
  <MetaDataBlock
250
251
  heading={pluralize(
251
- 'Scanner Model',
252
+ "Scanner Model",
252
253
  summary.pet?.ScannerManufacturersModelName,
253
254
  )}
254
- item={
255
- summary.pet?.ScannerManufacturersModelName
256
- ? summary.pet?.ScannerManufacturersModelName
257
- : 'N/A'
258
- }
255
+ item={summary.pet?.ScannerManufacturersModelName
256
+ ? summary.pet?.ScannerManufacturersModelName
257
+ : "N/A"}
259
258
  />
260
259
  <MetaDataBlock
261
260
  heading={pluralize(
262
- 'Radionuclide',
261
+ "Radionuclide",
263
262
  summary.pet?.TracerRadionuclide,
264
263
  )}
265
- item={
266
- summary.pet?.TracerRadionuclide
267
- ? summary.pet?.TracerRadionuclide
268
- : 'N/A'
269
- }
264
+ item={summary.pet?.TracerRadionuclide
265
+ ? summary.pet?.TracerRadionuclide
266
+ : "N/A"}
270
267
  />
271
268
  <MetaDataBlock
272
269
  heading={pluralize(
273
- 'Radiotracer',
270
+ "Radiotracer",
274
271
  summary.pet?.TracerName,
275
272
  )}
276
- item={
277
- summary.pet?.TracerName
278
- ? summary.pet?.TracerName
279
- : 'N/A'
280
- }
273
+ item={summary.pet?.TracerName
274
+ ? summary.pet?.TracerName
275
+ : "N/A"}
281
276
  />
282
277
  </>
283
278
  ))}
@@ -285,21 +280,23 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
285
280
  heading="Uploaded by"
286
281
  item={
287
282
  <>
288
- <Username user={dataset.uploader} /> on {dateAdded} -{' '}
283
+ <Username user={dataset.uploader} /> on {dateAdded} -{" "}
289
284
  {dateAddedDifference} ago
290
285
  </>
291
286
  }
292
287
  />
293
- {dataset.snapshots?.length ? (
294
- <MetaDataBlock
295
- heading="Last Updated"
296
- item={
297
- <>
298
- {dateModified} - {dateUpdatedDifference} ago
299
- </>
300
- }
301
- />
302
- ) : null}
288
+ {dataset.snapshots?.length
289
+ ? (
290
+ <MetaDataBlock
291
+ heading="Last Updated"
292
+ item={
293
+ <>
294
+ {dateModified} - {dateUpdatedDifference} ago
295
+ </>
296
+ }
297
+ />
298
+ )
299
+ : null}
303
300
  <MetaDataBlock heading="Sessions" item={numSessions} />
304
301
  <>
305
302
  {summary && (
@@ -325,8 +322,9 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
325
322
  field="Acknowledgements"
326
323
  rows={2}
327
324
  description={description.Acknowledgements}
328
- editMode={hasEdit}>
329
- <Markdown>{description.Acknowledgements || 'N/A'}</Markdown>
325
+ editMode={hasEdit}
326
+ >
327
+ <Markdown>{description.Acknowledgements || "N/A"}</Markdown>
330
328
  </EditDescriptionField>
331
329
  )}
332
330
  />
@@ -339,8 +337,9 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
339
337
  field="HowToAcknowledge"
340
338
  rows={2}
341
339
  description={description.HowToAcknowledge}
342
- editMode={hasEdit}>
343
- <Markdown>{description.HowToAcknowledge || 'N/A'}</Markdown>
340
+ editMode={hasEdit}
341
+ >
342
+ <Markdown>{description.HowToAcknowledge || "N/A"}</Markdown>
344
343
  </EditDescriptionField>
345
344
  )}
346
345
  />
@@ -350,8 +349,9 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
350
349
  field="Funding"
351
350
  heading="Funding"
352
351
  description={description.Funding}
353
- editMode={hasEdit}>
354
- {description.Funding?.length ? description.Funding : ['N/A']}
352
+ editMode={hasEdit}
353
+ >
354
+ {description.Funding?.length ? description.Funding : ["N/A"]}
355
355
  </EditDescriptionList>
356
356
  <EditDescriptionList
357
357
  className="dmb-list"
@@ -359,10 +359,11 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
359
359
  field="ReferencesAndLinks"
360
360
  heading="References and Links"
361
361
  description={description.ReferencesAndLinks}
362
- editMode={hasEdit}>
362
+ editMode={hasEdit}
363
+ >
363
364
  {description.ReferencesAndLinks?.length
364
365
  ? description.ReferencesAndLinks
365
- : ['N/A']}
366
+ : ["N/A"]}
366
367
  </EditDescriptionList>
367
368
  <EditDescriptionList
368
369
  className="dmb-list"
@@ -370,10 +371,11 @@ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
370
371
  field="EthicsApprovals"
371
372
  heading="Ethics Approvals"
372
373
  description={description.EthicsApprovals}
373
- editMode={hasEdit}>
374
+ editMode={hasEdit}
375
+ >
374
376
  {description.EthicsApprovals?.length
375
377
  ? description.EthicsApprovals
376
- : ['N/A']}
378
+ : ["N/A"]}
377
379
  </EditDescriptionList>
378
380
  </div>
379
381
  </div>
@@ -1,6 +1,6 @@
1
- import React from 'react'
2
- import { Route, Routes } from 'react-router-dom'
3
- import DatasetQuery from './dataset-query'
1
+ import React from "react"
2
+ import { Route, Routes } from "react-router-dom"
3
+ import DatasetQuery from "./dataset-query"
4
4
 
5
5
  const Dataset = () => {
6
6
  return (
@@ -1,56 +1,56 @@
1
- import React from 'react'
2
- import { render, screen, fireEvent } from '@testing-library/react'
3
- import DatasetQueryContext from '../../../datalad/dataset/dataset-query-context.js'
1
+ import React from "react"
2
+ import { fireEvent, render, screen } from "@testing-library/react"
3
+ import DatasetQueryContext from "../../../datalad/dataset/dataset-query-context.js"
4
4
  import FileTreeUnloadedDirectory, {
5
5
  mergeNewFiles,
6
- } from '../file-tree-unloaded-directory.jsx'
6
+ } from "../file-tree-unloaded-directory.jsx"
7
7
 
8
8
  const dir = {
9
- filename: 'test directory',
9
+ filename: "test directory",
10
10
  }
11
11
 
12
- describe('FileTreeUnloadedDirectory component', () => {
13
- it('calls fetchMoreDirectory when clicked', () => {
12
+ describe("FileTreeUnloadedDirectory component", () => {
13
+ it("calls fetchMoreDirectory when clicked", () => {
14
14
  const fetchMore = vi.fn()
15
15
  render(
16
16
  <DatasetQueryContext.Provider value={{ fetchMore }}>
17
- <FileTreeUnloadedDirectory datasetId={'ds000001'} directory={dir} />
17
+ <FileTreeUnloadedDirectory datasetId={"ds000001"} directory={dir} />
18
18
  </DatasetQueryContext.Provider>,
19
19
  )
20
20
  // Label is filename
21
21
  fireEvent.click(screen.getByLabelText(dir.filename))
22
22
  expect(fetchMore).toHaveBeenCalled()
23
23
  })
24
- describe('mergeNewFiles', () => {
25
- it('should return a new object', () => {
24
+ describe("mergeNewFiles", () => {
25
+ it("should return a new object", () => {
26
26
  const defaultObj = { dataset: { draft: { files: [] } } }
27
27
  expect(
28
28
  mergeNewFiles(defaultObj, { fetchMoreResult: { ...defaultObj } }),
29
29
  ).not.toBe(defaultObj)
30
30
  })
31
- it('merges file lists', () => {
32
- const dir = { filename: 'sub-01', directory: true }
33
- const a = { id: '1234', filename: 'a', directory: false }
34
- const b = { id: '5678', filename: 'b', directory: false }
35
- const c = { id: '91011', filename: 'c', directory: false }
31
+ it("merges file lists", () => {
32
+ const dir = { filename: "sub-01", directory: true }
33
+ const a = { id: "1234", filename: "a", directory: false }
34
+ const b = { id: "5678", filename: "b", directory: false }
35
+ const c = { id: "91011", filename: "c", directory: false }
36
36
  const defaultObj = { dataset: { draft: { files: [a, b] } } }
37
37
  const updatedObj = { dataset: { draft: { files: [c] } } }
38
38
  expect(
39
39
  mergeNewFiles(dir)(defaultObj, { fetchMoreResult: updatedObj }).dataset
40
40
  .draft.files,
41
- ).toEqual([a, b, { ...c, filename: 'sub-01:c' }])
41
+ ).toEqual([a, b, { ...c, filename: "sub-01:c" }])
42
42
  })
43
- it('works with snapshots', () => {
44
- const dir = { filename: 'sub-01', directory: true }
45
- const a = { id: '1234', filename: 'a', directory: false }
46
- const b = { id: '5678', filename: 'b', directory: false }
47
- const c = { id: '91011', filename: 'c', directory: false }
43
+ it("works with snapshots", () => {
44
+ const dir = { filename: "sub-01", directory: true }
45
+ const a = { id: "1234", filename: "a", directory: false }
46
+ const b = { id: "5678", filename: "b", directory: false }
47
+ const c = { id: "91011", filename: "c", directory: false }
48
48
  const defaultObj = { snapshot: { files: [dir, a, b] } }
49
49
  const updatedObj = { snapshot: { files: [c] } }
50
50
  expect(
51
- mergeNewFiles(dir, '1.0.0')(defaultObj, { fetchMoreResult: updatedObj })
51
+ mergeNewFiles(dir, "1.0.0")(defaultObj, { fetchMoreResult: updatedObj })
52
52
  .snapshot.files,
53
- ).toEqual([dir, a, b, { ...c, filename: 'sub-01:c' }])
53
+ ).toEqual([dir, a, b, { ...c, filename: "sub-01:c" }])
54
54
  })
55
55
  })
56
56
  })