@openneuro/app 4.2.0 → 4.2.1

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 (552) hide show
  1. package/package.json +9 -18
  2. package/src/scripts/common/forms/warn-button.jsx +1 -1
  3. package/src/scripts/pages/citation-page.tsx +41 -0
  4. package/src/scripts/refactor_2021/admin/admin.jsx +1 -1
  5. package/src/scripts/refactor_2021/admin/flagged-files.jsx +2 -1
  6. package/src/scripts/refactor_2021/admin/user-tools.tsx +3 -5
  7. package/src/scripts/refactor_2021/admin/users.jsx +7 -10
  8. package/src/scripts/{authentication → refactor_2021/authentication}/__tests__/profile.spec.js +1 -1
  9. package/src/scripts/{datalad/dataset → refactor_2021/dataset/comments}/__tests__/__snapshots__/comment.spec.jsx.snap +0 -8
  10. package/src/scripts/refactor_2021/dataset/comments/__tests__/__snapshots__/comments.spec.jsx.snap +129 -0
  11. package/src/scripts/{datalad/dataset → refactor_2021/dataset/comments}/__tests__/comment.spec.jsx +0 -0
  12. package/src/scripts/{datalad/dataset → refactor_2021/dataset/comments}/__tests__/comments.spec.jsx +0 -0
  13. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/__snapshots__/download-command-line.spec.jsx.snap +0 -0
  14. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/__snapshots__/download-link.spec.jsx.snap +645 -105
  15. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/__snapshots__/shell-example.spec.jsx.snap +6 -3
  16. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/download-command-line.spec.jsx +0 -0
  17. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/download-link.spec.jsx +0 -0
  18. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/download-native.spec.js +0 -0
  19. package/src/scripts/{datalad → refactor_2021/dataset}/download/__tests__/shell-example.spec.jsx +0 -0
  20. package/src/scripts/refactor_2021/dataset/files/file-tree.jsx +3 -2
  21. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/cancel-button.spec.tsx.snap +10 -0
  22. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/edit-button.spec.tsx.snap +10 -0
  23. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +24 -0
  24. package/src/scripts/refactor_2021/dataset/fragments/__tests__/__snapshots__/save-button.spec.tsx.snap +10 -0
  25. package/src/scripts/{datalad/fragments/__tests__/__snapshots__/select-input.spec.jsx.snap → refactor_2021/dataset/fragments/__tests__/__snapshots__/select-input.spec.tsx.snap} +0 -0
  26. package/src/scripts/{datalad/fragments/__tests__/cancel-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/cancel-button.spec.tsx} +2 -2
  27. package/src/scripts/{datalad → refactor_2021/dataset}/fragments/__tests__/dataset-citation.spec.jsx +0 -0
  28. package/src/scripts/{datalad/fragments/__tests__/edit-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/edit-button.spec.tsx} +2 -2
  29. package/src/scripts/refactor_2021/dataset/fragments/__tests__/edit-list.spec.jsx +27 -0
  30. package/src/scripts/{datalad/fragments/__tests__/save-button.spec.jsx → refactor_2021/dataset/fragments/__tests__/save-button.spec.tsx} +2 -2
  31. package/src/scripts/{datalad/fragments/__tests__/select-input.spec.jsx → refactor_2021/dataset/fragments/__tests__/select-input.spec.tsx} +0 -0
  32. package/src/scripts/refactor_2021/dataset/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +50 -0
  33. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/__snapshots__/description.spec.jsx.snap +0 -0
  34. package/src/scripts/refactor_2021/dataset/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +27 -0
  35. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/cache-id.spec.js +0 -0
  36. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/delete.spec.jsx +8 -8
  37. package/src/scripts/{datalad → refactor_2021/dataset}/mutations/__tests__/description.spec.jsx +0 -0
  38. package/src/scripts/{datalad/mutations/__tests__/remove-permissions.spec.jsx → refactor_2021/dataset/mutations/__tests__/remove-permissions.spec.tsx} +1 -1
  39. package/src/scripts/refactor_2021/dataset/mutations/__tests__/update-permissions.spec.jsx +28 -0
  40. package/src/scripts/refactor_2021/dataset/mutations/update-file.jsx +2 -2
  41. package/src/scripts/refactor_2021/routes.tsx +1 -1
  42. package/src/scripts/refactor_2021/search/initial-search-params.tsx +7 -7
  43. package/src/scripts/refactor_2021/search/inputs/index.ts +2 -2
  44. package/src/scripts/refactor_2021/search/inputs/{gender-radios.tsx → sex-radios.tsx} +10 -10
  45. package/src/scripts/refactor_2021/search/search-container.tsx +2 -2
  46. package/src/scripts/refactor_2021/search/search-params-ctx.tsx +3 -3
  47. package/src/scripts/refactor_2021/search/use-search-results.tsx +3 -3
  48. package/src/scripts/refactor_2021/user/api.jsx +11 -6
  49. package/src/sass/_bootstrap-compass.scss +0 -9
  50. package/src/sass/_bootstrap-mincer.scss +0 -19
  51. package/src/sass/_bootstrap-sprockets.scss +0 -9
  52. package/src/sass/_bootstrap.scss +0 -50
  53. package/src/sass/animate/_attention-seekers/_bounce.scss +0 -15
  54. package/src/sass/animate/_attention-seekers/_flash.scss +0 -14
  55. package/src/sass/animate/_attention-seekers/_pulse.scss +0 -17
  56. package/src/sass/animate/_attention-seekers/_rubberBand.scss +0 -19
  57. package/src/sass/animate/_attention-seekers/_shake.scss +0 -15
  58. package/src/sass/animate/_attention-seekers/_swing.scss +0 -19
  59. package/src/sass/animate/_attention-seekers/_tada.scss +0 -17
  60. package/src/sass/animate/_attention-seekers/_wobble.scss +0 -21
  61. package/src/sass/animate/_attention-seekers/attention-seekers.scss +0 -12
  62. package/src/sass/animate/_bouncing-entrances/_bounceIn.scss +0 -26
  63. package/src/sass/animate/_bouncing-entrances/_bounceInDown.scss +0 -26
  64. package/src/sass/animate/_bouncing-entrances/_bounceInLeft.scss +0 -26
  65. package/src/sass/animate/_bouncing-entrances/_bounceInRight.scss +0 -26
  66. package/src/sass/animate/_bouncing-entrances/_bounceInUp.scss +0 -26
  67. package/src/sass/animate/_bouncing-entrances/bouncing-entrances.scss +0 -9
  68. package/src/sass/animate/_bouncing-exits/_bounceOut.scss +0 -26
  69. package/src/sass/animate/_bouncing-exits/_bounceOutDown.scss +0 -23
  70. package/src/sass/animate/_bouncing-exits/_bounceOutLeft.scss +0 -23
  71. package/src/sass/animate/_bouncing-exits/_bounceOutRight.scss +0 -23
  72. package/src/sass/animate/_bouncing-exits/_bounceOutUp.scss +0 -23
  73. package/src/sass/animate/_bouncing-exits/bouncing-exits.scss +0 -4
  74. package/src/sass/animate/_fading-entrances/_fadeIn.scss +0 -14
  75. package/src/sass/animate/_fading-entrances/_fadeInDown.scss +0 -20
  76. package/src/sass/animate/_fading-entrances/_fadeInDownBig.scss +0 -20
  77. package/src/sass/animate/_fading-entrances/_fadeInLeft.scss +0 -20
  78. package/src/sass/animate/_fading-entrances/_fadeInLeftBig.scss +0 -20
  79. package/src/sass/animate/_fading-entrances/_fadeInRight.scss +0 -20
  80. package/src/sass/animate/_fading-entrances/_fadeInRightBig.scss +0 -20
  81. package/src/sass/animate/_fading-entrances/_fadeInUp.scss +0 -19
  82. package/src/sass/animate/_fading-entrances/_fadeInUpBig.scss +0 -20
  83. package/src/sass/animate/_fading-entrances/fading-entrances.scss +0 -5
  84. package/src/sass/animate/_fading-exits/_fadeOut.scss +0 -14
  85. package/src/sass/animate/_fading-exits/_fadeOutDown.scss +0 -20
  86. package/src/sass/animate/_fading-exits/_fadeOutDownBig.scss +0 -20
  87. package/src/sass/animate/_fading-exits/_fadeOutLeft.scss +0 -20
  88. package/src/sass/animate/_fading-exits/_fadeOutLeftBig.scss +0 -20
  89. package/src/sass/animate/_fading-exits/_fadeOutRight.scss +0 -20
  90. package/src/sass/animate/_fading-exits/_fadeOutRightBig.scss +0 -20
  91. package/src/sass/animate/_fading-exits/_fadeOutUp.scss +0 -20
  92. package/src/sass/animate/_fading-exits/_fadeOutUpBig.scss +0 -20
  93. package/src/sass/animate/_fading-exits/fading-exits.scss +0 -5
  94. package/src/sass/animate/_flippers/_flip.scss +0 -33
  95. package/src/sass/animate/_flippers/_flipInX.scss +0 -26
  96. package/src/sass/animate/_flippers/_flipInY.scss +0 -26
  97. package/src/sass/animate/_flippers/_flipOutX.scss +0 -20
  98. package/src/sass/animate/_flippers/_flipOutY.scss +0 -20
  99. package/src/sass/animate/_flippers/flippers.scss +0 -8
  100. package/src/sass/animate/_lightspeed/_lightSpeedIn.scss +0 -29
  101. package/src/sass/animate/_lightspeed/_lightSpeedOut.scss +0 -21
  102. package/src/sass/animate/_lightspeed/lightspeed.scss +0 -3
  103. package/src/sass/animate/_properties.scss +0 -119
  104. package/src/sass/animate/_rotating-entrances/_rotateIn.scss +0 -22
  105. package/src/sass/animate/_rotating-entrances/_rotateInDownLeft.scss +0 -22
  106. package/src/sass/animate/_rotating-entrances/_rotateInDownRight.scss +0 -22
  107. package/src/sass/animate/_rotating-entrances/_rotateInUpLeft.scss +0 -22
  108. package/src/sass/animate/_rotating-entrances/_rotateInUpRight.scss +0 -22
  109. package/src/sass/animate/_rotating-entrances/rotating-entrances.scss +0 -8
  110. package/src/sass/animate/_rotating-exits/_rotateOut.scss +0 -22
  111. package/src/sass/animate/_rotating-exits/_rotateOutDownLeft.scss +0 -22
  112. package/src/sass/animate/_rotating-exits/_rotateOutDownRight.scss +0 -22
  113. package/src/sass/animate/_rotating-exits/_rotateOutUpLeft.scss +0 -22
  114. package/src/sass/animate/_rotating-exits/_rotateOutUpRight.scss +0 -22
  115. package/src/sass/animate/_rotating-exits/rotating-exits.scss +0 -8
  116. package/src/sass/animate/_sliding-entrances/_slideInDown.scss +0 -19
  117. package/src/sass/animate/_sliding-entrances/_slideInLeft.scss +0 -19
  118. package/src/sass/animate/_sliding-entrances/_slideInRight.scss +0 -42
  119. package/src/sass/animate/_sliding-entrances/_slideInUp.scss +0 -19
  120. package/src/sass/animate/_sliding-entrances/sliding-entrances.scss +0 -7
  121. package/src/sass/animate/_sliding-exits/_slideOutDown.scss +0 -19
  122. package/src/sass/animate/_sliding-exits/_slideOutLeft.scss +0 -19
  123. package/src/sass/animate/_sliding-exits/_slideOutRight.scss +0 -19
  124. package/src/sass/animate/_sliding-exits/_slideOutUp.scss +0 -19
  125. package/src/sass/animate/_sliding-exits/sliding-exits.scss +0 -7
  126. package/src/sass/animate/_specials/_hinge.scss +0 -37
  127. package/src/sass/animate/_specials/_rollIn.scss +0 -20
  128. package/src/sass/animate/_specials/_rollOut.scss +0 -22
  129. package/src/sass/animate/_specials/specials.scss +0 -6
  130. package/src/sass/animate/_zooming-entrances/_zoomIn.scss +0 -19
  131. package/src/sass/animate/_zooming-entrances/_zoomInDown.scss +0 -22
  132. package/src/sass/animate/_zooming-entrances/_zoomInLeft.scss +0 -22
  133. package/src/sass/animate/_zooming-entrances/_zoomInRight.scss +0 -22
  134. package/src/sass/animate/_zooming-entrances/_zoomInUp.scss +0 -22
  135. package/src/sass/animate/_zooming-entrances/zooming-entrances.scss +0 -4
  136. package/src/sass/animate/_zooming-exits/_zoomOut.scss +0 -22
  137. package/src/sass/animate/_zooming-exits/_zoomOutDown.scss +0 -23
  138. package/src/sass/animate/_zooming-exits/_zoomOutLeft.scss +0 -21
  139. package/src/sass/animate/_zooming-exits/_zoomOutRight.scss +0 -21
  140. package/src/sass/animate/_zooming-exits/_zoomOutUp.scss +0 -23
  141. package/src/sass/animate/_zooming-exits/zooming-exits.scss +0 -4
  142. package/src/sass/animate/animate.css +0 -7497
  143. package/src/sass/animate/animate.css.map +0 -7
  144. package/src/sass/animate/animate.min.css +0 -2
  145. package/src/sass/animate/animate.min.css.map +0 -7
  146. package/src/sass/animate/animate.scss +0 -30
  147. package/src/sass/animate/bower.json +0 -22
  148. package/src/sass/bootstrap/_alerts.scss +0 -70
  149. package/src/sass/bootstrap/_badges.scss +0 -68
  150. package/src/sass/bootstrap/_breadcrumbs.scss +0 -26
  151. package/src/sass/bootstrap/_button-groups.scss +0 -243
  152. package/src/sass/bootstrap/_buttons.scss +0 -160
  153. package/src/sass/bootstrap/_carousel.scss +0 -269
  154. package/src/sass/bootstrap/_close.scss +0 -36
  155. package/src/sass/bootstrap/_code.scss +0 -69
  156. package/src/sass/bootstrap/_component-animations.scss +0 -37
  157. package/src/sass/bootstrap/_dropdowns.scss +0 -223
  158. package/src/sass/bootstrap/_forms.scss +0 -613
  159. package/src/sass/bootstrap/_grid.scss +0 -84
  160. package/src/sass/bootstrap/_input-groups.scss +0 -166
  161. package/src/sass/bootstrap/_jumbotron.scss +0 -50
  162. package/src/sass/bootstrap/_labels.scss +0 -66
  163. package/src/sass/bootstrap/_list-group.scss +0 -124
  164. package/src/sass/bootstrap/_media.scss +0 -61
  165. package/src/sass/bootstrap/_mixins.scss +0 -39
  166. package/src/sass/bootstrap/_modals.scss +0 -150
  167. package/src/sass/bootstrap/_navbar.scss +0 -647
  168. package/src/sass/bootstrap/_navs.scss +0 -243
  169. package/src/sass/bootstrap/_normalize.scss +0 -427
  170. package/src/sass/bootstrap/_pager.scss +0 -54
  171. package/src/sass/bootstrap/_pagination.scss +0 -88
  172. package/src/sass/bootstrap/_panels.scss +0 -265
  173. package/src/sass/bootstrap/_popovers.scss +0 -135
  174. package/src/sass/bootstrap/_print.scss +0 -107
  175. package/src/sass/bootstrap/_progress-bars.scss +0 -87
  176. package/src/sass/bootstrap/_responsive-embed.scss +0 -35
  177. package/src/sass/bootstrap/_responsive-utilities.scss +0 -177
  178. package/src/sass/bootstrap/_scaffolding.scss +0 -162
  179. package/src/sass/bootstrap/_tables.scss +0 -234
  180. package/src/sass/bootstrap/_theme.scss +0 -273
  181. package/src/sass/bootstrap/_thumbnails.scss +0 -38
  182. package/src/sass/bootstrap/_tooltip.scss +0 -102
  183. package/src/sass/bootstrap/_type.scss +0 -298
  184. package/src/sass/bootstrap/_utilities.scss +0 -55
  185. package/src/sass/bootstrap/_variables.scss +0 -866
  186. package/src/sass/bootstrap/_wells.scss +0 -29
  187. package/src/sass/bootstrap/float-label.scss +0 -70
  188. package/src/sass/bootstrap/mixins/_alerts.scss +0 -14
  189. package/src/sass/bootstrap/mixins/_background-variant.scss +0 -11
  190. package/src/sass/bootstrap/mixins/_border-radius.scss +0 -18
  191. package/src/sass/bootstrap/mixins/_buttons.scss +0 -52
  192. package/src/sass/bootstrap/mixins/_center-block.scss +0 -7
  193. package/src/sass/bootstrap/mixins/_clearfix.scss +0 -22
  194. package/src/sass/bootstrap/mixins/_forms.scss +0 -88
  195. package/src/sass/bootstrap/mixins/_gradients.scss +0 -58
  196. package/src/sass/bootstrap/mixins/_grid-framework.scss +0 -81
  197. package/src/sass/bootstrap/mixins/_grid.scss +0 -122
  198. package/src/sass/bootstrap/mixins/_hide-text.scss +0 -21
  199. package/src/sass/bootstrap/mixins/_image.scss +0 -33
  200. package/src/sass/bootstrap/mixins/_labels.scss +0 -12
  201. package/src/sass/bootstrap/mixins/_list-group.scss +0 -31
  202. package/src/sass/bootstrap/mixins/_nav-divider.scss +0 -10
  203. package/src/sass/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  204. package/src/sass/bootstrap/mixins/_opacity.scss +0 -8
  205. package/src/sass/bootstrap/mixins/_pagination.scss +0 -23
  206. package/src/sass/bootstrap/mixins/_panels.scss +0 -24
  207. package/src/sass/bootstrap/mixins/_progress-bar.scss +0 -10
  208. package/src/sass/bootstrap/mixins/_reset-filter.scss +0 -8
  209. package/src/sass/bootstrap/mixins/_resize.scss +0 -6
  210. package/src/sass/bootstrap/mixins/_responsive-visibility.scss +0 -21
  211. package/src/sass/bootstrap/mixins/_size.scss +0 -10
  212. package/src/sass/bootstrap/mixins/_tab-focus.scss +0 -9
  213. package/src/sass/bootstrap/mixins/_table-row.scss +0 -28
  214. package/src/sass/bootstrap/mixins/_text-emphasis.scss +0 -11
  215. package/src/sass/bootstrap/mixins/_text-overflow.scss +0 -8
  216. package/src/sass/bootstrap/mixins/_vendor-prefixes.scss +0 -222
  217. package/src/sass/crn_app/_admin.admin.scss +0 -205
  218. package/src/sass/crn_app/_admin.graphs.scss +0 -51
  219. package/src/sass/crn_app/_admin.tools.scss +0 -24
  220. package/src/sass/crn_app/_api.scss +0 -65
  221. package/src/sass/crn_app/_bootstrap.overrides.scss +0 -54
  222. package/src/sass/crn_app/_colors.scss +0 -88
  223. package/src/sass/crn_app/_common.click-to-edit.scss +0 -187
  224. package/src/sass/crn_app/_common.modals.scss +0 -686
  225. package/src/sass/crn_app/_common.pagination.scss +0 -41
  226. package/src/sass/crn_app/_common.papaya.scss +0 -348
  227. package/src/sass/crn_app/_common.progress-bar.scss +0 -26
  228. package/src/sass/crn_app/_common.spinner.scss +0 -63
  229. package/src/sass/crn_app/_common.status.scss +0 -103
  230. package/src/sass/crn_app/_common.tooltip.scss +0 -22
  231. package/src/sass/crn_app/_common.typeahead.scss +0 -31
  232. package/src/sass/crn_app/_common.variables.scss +0 -16
  233. package/src/sass/crn_app/_dashboard.datasets.scss +0 -588
  234. package/src/sass/crn_app/_dataset.comments.scss +0 -201
  235. package/src/sass/crn_app/_dataset.dataset.scss +0 -161
  236. package/src/sass/crn_app/_dataset.file-tree.scss +0 -277
  237. package/src/sass/crn_app/_dataset.jobs.scss +0 -701
  238. package/src/sass/crn_app/_dataset.sidebar.scss +0 -265
  239. package/src/sass/crn_app/_dataset.tools.scss +0 -118
  240. package/src/sass/crn_app/_elements-wrappers.scss +0 -870
  241. package/src/sass/crn_app/_faq.scss +0 -37
  242. package/src/sass/crn_app/_frontPage.scss +0 -569
  243. package/src/sass/crn_app/_nav.navbar.scss +0 -387
  244. package/src/sass/crn_app/_theme.scss +0 -87
  245. package/src/sass/crn_app/_upload.upload.scss +0 -393
  246. package/src/sass/crn_app/_upload.validation.scss +0 -210
  247. package/src/sass/draft/draft.scss +0 -11
  248. package/src/sass/draft/rich-editor.scss +0 -73
  249. package/src/sass/font-awesome/_animated.scss +0 -34
  250. package/src/sass/font-awesome/_bordered-pulled.scss +0 -25
  251. package/src/sass/font-awesome/_core.scss +0 -12
  252. package/src/sass/font-awesome/_fixed-width.scss +0 -6
  253. package/src/sass/font-awesome/_font-awesome.scss +0 -17
  254. package/src/sass/font-awesome/_icons.scss +0 -697
  255. package/src/sass/font-awesome/_larger.scss +0 -13
  256. package/src/sass/font-awesome/_list.scss +0 -19
  257. package/src/sass/font-awesome/_mixins.scss +0 -26
  258. package/src/sass/font-awesome/_path.scss +0 -15
  259. package/src/sass/font-awesome/_rotated-flipped.scss +0 -20
  260. package/src/sass/font-awesome/_stacked.scss +0 -20
  261. package/src/sass/font-awesome/_variables.scss +0 -713
  262. package/src/sass/main.scss +0 -317
  263. package/src/sass/pre-refactor-with-wrapper-main.scss +0 -1549
  264. package/src/scripts/admin/__tests__/__snapshots__/exports.spec.jsx.snap +0 -112
  265. package/src/scripts/admin/__tests__/exports.spec.jsx +0 -15
  266. package/src/scripts/admin/__tests__/users.spec.jsx +0 -15
  267. package/src/scripts/admin/admin.jsx +0 -53
  268. package/src/scripts/admin/flagged-files.jsx +0 -178
  269. package/src/scripts/admin/user-fragment.ts +0 -14
  270. package/src/scripts/admin/user-tools.tsx +0 -83
  271. package/src/scripts/admin/users.jsx +0 -224
  272. package/src/scripts/authentication/admin-user.jsx +0 -23
  273. package/src/scripts/authentication/buttons.jsx +0 -26
  274. package/src/scripts/authentication/globus-button.jsx +0 -39
  275. package/src/scripts/authentication/google-button.jsx +0 -32
  276. package/src/scripts/authentication/logged-in.jsx +0 -12
  277. package/src/scripts/authentication/logged-out.jsx +0 -12
  278. package/src/scripts/authentication/loginCheck.js +0 -7
  279. package/src/scripts/authentication/orcid-button.jsx +0 -32
  280. package/src/scripts/authentication/withProfile.jsx +0 -22
  281. package/src/scripts/classic.tsx +0 -18
  282. package/src/scripts/common/forms/file-select.tsx +0 -71
  283. package/src/scripts/common/partials/__tests__/__snapshots__/footer.spec.jsx.snap +0 -42
  284. package/src/scripts/common/partials/__tests__/__snapshots__/metric.spec.jsx.snap +0 -101
  285. package/src/scripts/common/partials/__tests__/footer.spec.jsx +0 -10
  286. package/src/scripts/common/partials/__tests__/metric.spec.jsx +0 -31
  287. package/src/scripts/common/partials/footer.jsx +0 -40
  288. package/src/scripts/common/partials/login.jsx +0 -99
  289. package/src/scripts/common/partials/metric.jsx +0 -73
  290. package/src/scripts/common/partials/spinner.jsx +0 -34
  291. package/src/scripts/common/partials/status.jsx +0 -96
  292. package/src/scripts/common/partials/timeout.jsx +0 -47
  293. package/src/scripts/common/partials/tooltip.jsx +0 -36
  294. package/src/scripts/components/__tests__/dropdown-button.spec.tsx +0 -49
  295. package/src/scripts/components/dropdown-button.tsx +0 -42
  296. package/src/scripts/components/panel-group.tsx +0 -24
  297. package/src/scripts/components/panel.tsx +0 -42
  298. package/src/scripts/datalad/__tests__/snapshotVersion.spec.js +0 -21
  299. package/src/scripts/datalad/comments/__tests__/comment-editor.spec.jsx +0 -19
  300. package/src/scripts/datalad/comments/block-style-controls.jsx +0 -46
  301. package/src/scripts/datalad/comments/comment-editor.jsx +0 -79
  302. package/src/scripts/datalad/comments/inline-style-controls.jsx +0 -34
  303. package/src/scripts/datalad/comments/style-button.jsx +0 -28
  304. package/src/scripts/datalad/dashboard/__tests__/__snapshots__/dashboard.spec.jsx.snap +0 -163
  305. package/src/scripts/datalad/dashboard/__tests__/dashboard.spec.jsx +0 -21
  306. package/src/scripts/datalad/dashboard/dashboard.jsx +0 -54
  307. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-filter.spec.jsx.snap +0 -20
  308. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-row-skeleton.spec.jsx.snap +0 -13
  309. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-row.spec.jsx.snap +0 -65
  310. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-sorter.spec.jsx.snap +0 -14
  311. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/dataset-virtual-scroller.spec.jsx.snap +0 -17
  312. package/src/scripts/datalad/dashboard/datasets/__tests__/__snapshots__/uploaded.spec.jsx.snap +0 -27
  313. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-filter.spec.jsx +0 -67
  314. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-query.spec.jsx +0 -72
  315. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-row-skeleton.spec.jsx +0 -9
  316. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-row.spec.jsx +0 -53
  317. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-sorter.spec.jsx +0 -69
  318. package/src/scripts/datalad/dashboard/datasets/__tests__/dataset-virtual-scroller.spec.jsx +0 -65
  319. package/src/scripts/datalad/dashboard/datasets/__tests__/uploaded.spec.jsx +0 -17
  320. package/src/scripts/datalad/dashboard/datasets/dataset-filter.jsx +0 -78
  321. package/src/scripts/datalad/dashboard/datasets/dataset-query.jsx +0 -102
  322. package/src/scripts/datalad/dashboard/datasets/dataset-row-error-boundary.jsx +0 -52
  323. package/src/scripts/datalad/dashboard/datasets/dataset-row-skeleton.jsx +0 -10
  324. package/src/scripts/datalad/dashboard/datasets/dataset-row.jsx +0 -58
  325. package/src/scripts/datalad/dashboard/datasets/dataset-sorter.jsx +0 -148
  326. package/src/scripts/datalad/dashboard/datasets/dataset-statuses.jsx +0 -44
  327. package/src/scripts/datalad/dashboard/datasets/dataset-tab.jsx +0 -192
  328. package/src/scripts/datalad/dashboard/datasets/dataset-virtual-scroller.jsx +0 -126
  329. package/src/scripts/datalad/dashboard/datasets/row-height.jsx +0 -7
  330. package/src/scripts/datalad/dashboard/datasets/uploaded.jsx +0 -33
  331. package/src/scripts/datalad/dataset/__tests__/__snapshots__/comments.spec.jsx.snap +0 -137
  332. package/src/scripts/datalad/dataset/__tests__/__snapshots__/dataset-page.spec.jsx.snap +0 -69
  333. package/src/scripts/datalad/dataset/__tests__/__snapshots__/dataset-query.spec.jsx.snap +0 -15
  334. package/src/scripts/datalad/dataset/__tests__/__snapshots__/left-siderbar.spec.jsx.snap +0 -85
  335. package/src/scripts/datalad/dataset/__tests__/dataset-page.spec.jsx +0 -33
  336. package/src/scripts/datalad/dataset/__tests__/dataset-query.spec.jsx +0 -20
  337. package/src/scripts/datalad/dataset/__tests__/left-siderbar.spec.jsx +0 -106
  338. package/src/scripts/datalad/dataset/comment.jsx +0 -90
  339. package/src/scripts/datalad/dataset/comments.jsx +0 -83
  340. package/src/scripts/datalad/dataset/dataset-description.jsx +0 -111
  341. package/src/scripts/datalad/dataset/dataset-main.jsx +0 -29
  342. package/src/scripts/datalad/dataset/dataset-page.jsx +0 -63
  343. package/src/scripts/datalad/dataset/dataset-query.jsx +0 -192
  344. package/src/scripts/datalad/dataset/dataset.jsx +0 -22
  345. package/src/scripts/datalad/dataset/delete-page.tsx +0 -92
  346. package/src/scripts/datalad/dataset/left-sidebar.jsx +0 -109
  347. package/src/scripts/datalad/download/__tests__/__snapshots__/download-dataset.spec.jsx.snap +0 -7
  348. package/src/scripts/datalad/download/__tests__/__snapshots__/download-tool.spec.jsx.snap +0 -26
  349. package/src/scripts/datalad/download/__tests__/download-dataset.spec.jsx +0 -19
  350. package/src/scripts/datalad/download/__tests__/download-tool.spec.jsx +0 -19
  351. package/src/scripts/datalad/download/download-command-line.jsx +0 -43
  352. package/src/scripts/datalad/download/download-datalad.jsx +0 -58
  353. package/src/scripts/datalad/download/download-dataset.jsx +0 -61
  354. package/src/scripts/datalad/download/download-link.jsx +0 -41
  355. package/src/scripts/datalad/download/download-native.js +0 -118
  356. package/src/scripts/datalad/download/download-query.js +0 -22
  357. package/src/scripts/datalad/download/download-s3.jsx +0 -46
  358. package/src/scripts/datalad/download/download-tool.jsx +0 -44
  359. package/src/scripts/datalad/download/native-file-toast.jsx +0 -90
  360. package/src/scripts/datalad/download/shell-example.jsx +0 -9
  361. package/src/scripts/datalad/download/track-download.js +0 -15
  362. package/src/scripts/datalad/fragments/__tests__/__snapshots__/cancel-button.spec.jsx.snap +0 -21
  363. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-analytics.spec.jsx.snap +0 -41
  364. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-authors.spec.jsx.snap +0 -13
  365. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-readme.spec.jsx.snap +0 -49
  366. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-title.spec.jsx.snap +0 -7
  367. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-tools.spec.jsx.snap +0 -346
  368. package/src/scripts/datalad/fragments/__tests__/__snapshots__/dataset-uploaded.spec.jsx.snap +0 -7
  369. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-button.spec.jsx.snap +0 -21
  370. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +0 -34
  371. package/src/scripts/datalad/fragments/__tests__/__snapshots__/edit-readme.spec.jsx.snap +0 -3
  372. package/src/scripts/datalad/fragments/__tests__/__snapshots__/save-button.spec.jsx.snap +0 -21
  373. package/src/scripts/datalad/fragments/__tests__/dataset-analytics.spec.jsx +0 -16
  374. package/src/scripts/datalad/fragments/__tests__/dataset-authors.spec.jsx +0 -22
  375. package/src/scripts/datalad/fragments/__tests__/dataset-prominent-links.spec.jsx +0 -32
  376. package/src/scripts/datalad/fragments/__tests__/dataset-readme.spec.jsx +0 -10
  377. package/src/scripts/datalad/fragments/__tests__/dataset-summary.spec.jsx +0 -55
  378. package/src/scripts/datalad/fragments/__tests__/dataset-title.spec.jsx +0 -10
  379. package/src/scripts/datalad/fragments/__tests__/dataset-tools.spec.jsx +0 -55
  380. package/src/scripts/datalad/fragments/__tests__/dataset-uploaded.spec.jsx +0 -16
  381. package/src/scripts/datalad/fragments/__tests__/edit-list.spec.jsx +0 -25
  382. package/src/scripts/datalad/fragments/__tests__/edit-readme.spec.jsx +0 -10
  383. package/src/scripts/datalad/fragments/cancel-button.jsx +0 -24
  384. package/src/scripts/datalad/fragments/copyable-tooltip.jsx +0 -82
  385. package/src/scripts/datalad/fragments/dataset-analytics.jsx +0 -27
  386. package/src/scripts/datalad/fragments/dataset-authors.jsx +0 -16
  387. package/src/scripts/datalad/fragments/dataset-citation.jsx +0 -77
  388. package/src/scripts/datalad/fragments/dataset-files.jsx +0 -50
  389. package/src/scripts/datalad/fragments/dataset-git-access.jsx +0 -56
  390. package/src/scripts/datalad/fragments/dataset-git-hash.jsx +0 -27
  391. package/src/scripts/datalad/fragments/dataset-history.jsx +0 -95
  392. package/src/scripts/datalad/fragments/dataset-modified.jsx +0 -17
  393. package/src/scripts/datalad/fragments/dataset-prominent-links.jsx +0 -129
  394. package/src/scripts/datalad/fragments/dataset-readme.jsx +0 -42
  395. package/src/scripts/datalad/fragments/dataset-summary.jsx +0 -230
  396. package/src/scripts/datalad/fragments/dataset-title.jsx +0 -10
  397. package/src/scripts/datalad/fragments/dataset-tools.jsx +0 -190
  398. package/src/scripts/datalad/fragments/dataset-uploaded.jsx +0 -25
  399. package/src/scripts/datalad/fragments/edit-button.jsx +0 -24
  400. package/src/scripts/datalad/fragments/edit-description-field.jsx +0 -54
  401. package/src/scripts/datalad/fragments/edit-description-list.jsx +0 -49
  402. package/src/scripts/datalad/fragments/edit-list.jsx +0 -82
  403. package/src/scripts/datalad/fragments/edit-readme.jsx +0 -44
  404. package/src/scripts/datalad/fragments/incomplete-dataset.jsx +0 -23
  405. package/src/scripts/datalad/fragments/metadata-tool.jsx +0 -34
  406. package/src/scripts/datalad/fragments/number-input.tsx +0 -126
  407. package/src/scripts/datalad/fragments/save-button.jsx +0 -24
  408. package/src/scripts/datalad/fragments/select-input.tsx +0 -247
  409. package/src/scripts/datalad/fragments/share-dataset-button.jsx +0 -32
  410. package/src/scripts/datalad/fragments/text-array-input.tsx +0 -119
  411. package/src/scripts/datalad/fragments/text-input.tsx +0 -206
  412. package/src/scripts/datalad/mutations/__tests__/__snapshots__/comment.spec.jsx.snap +0 -5
  413. package/src/scripts/datalad/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +0 -181
  414. package/src/scripts/datalad/mutations/__tests__/__snapshots__/manage-permissions.spec.jsx.snap +0 -361
  415. package/src/scripts/datalad/mutations/__tests__/__snapshots__/subscribe-to-newsletter.spec.jsx.snap +0 -83
  416. package/src/scripts/datalad/mutations/__tests__/__snapshots__/update-file.spec.jsx.snap +0 -25
  417. package/src/scripts/datalad/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +0 -361
  418. package/src/scripts/datalad/mutations/__tests__/comment.spec.jsx +0 -154
  419. package/src/scripts/datalad/mutations/__tests__/manage-permissions.spec.jsx +0 -21
  420. package/src/scripts/datalad/mutations/__tests__/subscribe-to-newsletter.spec.jsx +0 -10
  421. package/src/scripts/datalad/mutations/__tests__/update-file.spec.jsx +0 -15
  422. package/src/scripts/datalad/mutations/__tests__/update-permissions.spec.jsx +0 -21
  423. package/src/scripts/datalad/mutations/add-metadata.jsx +0 -164
  424. package/src/scripts/datalad/mutations/comment.jsx +0 -164
  425. package/src/scripts/datalad/mutations/delete-dataset-form.jsx +0 -82
  426. package/src/scripts/datalad/mutations/description.jsx +0 -129
  427. package/src/scripts/datalad/mutations/flag-annex-object.jsx +0 -62
  428. package/src/scripts/datalad/mutations/metadata-form.jsx +0 -388
  429. package/src/scripts/datalad/mutations/readme.jsx +0 -53
  430. package/src/scripts/datalad/mutations/remove-annex-object.jsx +0 -71
  431. package/src/scripts/datalad/mutations/subscribe-to-newsletter.jsx +0 -26
  432. package/src/scripts/datalad/mutations/update-file.jsx +0 -51
  433. package/src/scripts/datalad/routes/__tests__/__snapshots__/manage-permissions.spec.jsx.snap +0 -159
  434. package/src/scripts/datalad/routes/__tests__/__snapshots__/snapshot.spec.jsx.snap +0 -31
  435. package/src/scripts/datalad/routes/__tests__/dataset-content.spec.jsx +0 -108
  436. package/src/scripts/datalad/routes/__tests__/file-display.spec.jsx +0 -22
  437. package/src/scripts/datalad/routes/__tests__/manage-permissions.spec.jsx +0 -101
  438. package/src/scripts/datalad/routes/__tests__/snapshot.spec.jsx +0 -49
  439. package/src/scripts/datalad/routes/admin-datalad.jsx +0 -45
  440. package/src/scripts/datalad/routes/admin-exports.jsx +0 -125
  441. package/src/scripts/datalad/routes/dataset-content.jsx +0 -198
  442. package/src/scripts/datalad/routes/dataset-routes.jsx +0 -162
  443. package/src/scripts/datalad/routes/file-display.jsx +0 -84
  444. package/src/scripts/datalad/routes/manage-permissions.jsx +0 -128
  445. package/src/scripts/datalad/routes/snapshot-content.jsx +0 -135
  446. package/src/scripts/datalad/routes/snapshot.jsx +0 -131
  447. package/src/scripts/datalad/snapshotVersion.js +0 -7
  448. package/src/scripts/datalad/validation/validation-panel.jsx +0 -48
  449. package/src/scripts/datalad/validation/validation-status.jsx +0 -120
  450. package/src/scripts/datalad/validation/validation.jsx +0 -40
  451. package/src/scripts/dataset/dataset.metrics.jsx +0 -61
  452. package/src/scripts/file-tree/__tests__/__snapshots__/file-tree-unloaded-directory.spec.jsx.snap +0 -26
  453. package/src/scripts/file-tree/__tests__/__snapshots__/file-tree.spec.jsx.snap +0 -18
  454. package/src/scripts/file-tree/__tests__/__snapshots__/file.spec.jsx.snap +0 -81
  455. package/src/scripts/file-tree/__tests__/file-tree-loading.spec.jsx +0 -18
  456. package/src/scripts/file-tree/__tests__/file-tree-unloaded-directory.spec.jsx +0 -74
  457. package/src/scripts/file-tree/__tests__/file-tree.spec.jsx +0 -94
  458. package/src/scripts/file-tree/__tests__/file-viewer-type.spec.jsx +0 -15
  459. package/src/scripts/file-tree/__tests__/file.spec.jsx +0 -44
  460. package/src/scripts/file-tree/__tests__/flat-to-tree.spec.js +0 -55
  461. package/src/scripts/file-tree/file-tree-loading.jsx +0 -64
  462. package/src/scripts/file-tree/file-tree-unloaded-directory.jsx +0 -108
  463. package/src/scripts/file-tree/file-tree.jsx +0 -133
  464. package/src/scripts/file-tree/file-view.jsx +0 -31
  465. package/src/scripts/file-tree/file-viewer-type.jsx +0 -45
  466. package/src/scripts/file-tree/file.jsx +0 -123
  467. package/src/scripts/file-tree/files.jsx +0 -126
  468. package/src/scripts/file-tree/flat-to-tree.js +0 -49
  469. package/src/scripts/file-tree/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -51
  470. package/src/scripts/file-tree/viewers/__tests__/file-viewer-json.spec.jsx +0 -15
  471. package/src/scripts/file-tree/viewers/__tests__/parse-tabular.spec.js +0 -24
  472. package/src/scripts/file-tree/viewers/file-viewer-csv.jsx +0 -16
  473. package/src/scripts/file-tree/viewers/file-viewer-html.jsx +0 -20
  474. package/src/scripts/file-tree/viewers/file-viewer-json.jsx +0 -50
  475. package/src/scripts/file-tree/viewers/file-viewer-nifti.jsx +0 -11
  476. package/src/scripts/file-tree/viewers/file-viewer-table.jsx +0 -34
  477. package/src/scripts/file-tree/viewers/file-viewer-text.jsx +0 -13
  478. package/src/scripts/file-tree/viewers/file-viewer-tsv.jsx +0 -16
  479. package/src/scripts/file-tree/viewers/parse-tabular.js +0 -18
  480. package/src/scripts/front-page/__tests__/__snapshots__/email-subscription-box.spec.jsx.snap +0 -190
  481. package/src/scripts/front-page/__tests__/__snapshots__/front-page-stats.spec.jsx.snap +0 -29
  482. package/src/scripts/front-page/__tests__/__snapshots__/front-page-top-datasets.spec.jsx.snap +0 -464
  483. package/src/scripts/front-page/__tests__/dataset-count.spec.jsx +0 -33
  484. package/src/scripts/front-page/__tests__/email-subscription-box.spec.jsx +0 -57
  485. package/src/scripts/front-page/__tests__/front-page-stats.spec.jsx +0 -10
  486. package/src/scripts/front-page/__tests__/front-page-top-datasets.spec.jsx +0 -27
  487. package/src/scripts/front-page/__tests__/participant-count.spec.jsx +0 -31
  488. package/src/scripts/front-page/dataset-count.jsx +0 -29
  489. package/src/scripts/front-page/email-subscription-box.jsx +0 -131
  490. package/src/scripts/front-page/front-page-additional-info.jsx +0 -15
  491. package/src/scripts/front-page/front-page-collaborators.jsx +0 -117
  492. package/src/scripts/front-page/front-page-stats.jsx +0 -71
  493. package/src/scripts/front-page/front-page-support.jsx +0 -30
  494. package/src/scripts/front-page/front-page-tabs.jsx +0 -166
  495. package/src/scripts/front-page/front-page-top-datasets.jsx +0 -203
  496. package/src/scripts/front-page/front-page.jsx +0 -95
  497. package/src/scripts/front-page/participant-count.jsx +0 -25
  498. package/src/scripts/hooks/use-measure.js +0 -15
  499. package/src/scripts/hooks/use-previous.js +0 -7
  500. package/src/scripts/nav/assets/brand_mark.png +0 -0
  501. package/src/scripts/nav/assets/favicon-upload.png +0 -0
  502. package/src/scripts/nav/assets/logo_app.png +0 -0
  503. package/src/scripts/nav/navbar.jsx +0 -144
  504. package/src/scripts/nav/navbar.navmenu.jsx +0 -106
  505. package/src/scripts/nav/navbar.usermenu.jsx +0 -52
  506. package/src/scripts/pages/citation-page.jsx +0 -43
  507. package/src/scripts/pet/__tests__/__snapshots__/dummy.spec.jsx.snap +0 -70
  508. package/src/scripts/pet/__tests__/dummy.spec.jsx +0 -10
  509. package/src/scripts/pet/dummy.jsx +0 -61
  510. package/src/scripts/refactor_2021/dataset/dataset-pre-refactor-container.tsx +0 -12
  511. package/src/scripts/routes.tsx +0 -36
  512. package/src/scripts/search/search-input.tsx +0 -42
  513. package/src/scripts/search/search-results.tsx +0 -114
  514. package/src/scripts/styles/capitalized.jsx +0 -6
  515. package/src/scripts/styles/uppercase.jsx +0 -6
  516. package/src/scripts/uploader/__tests__/add-path-to-files.spec.js +0 -29
  517. package/src/scripts/uploader/__tests__/file-upload.spec.js +0 -116
  518. package/src/scripts/uploader/__tests__/upload-disclaimer.spec.jsx +0 -67
  519. package/src/scripts/uploader/__tests__/upload-mutation.spec.js +0 -57
  520. package/src/scripts/uploader/__tests__/uploader.spec.js +0 -31
  521. package/src/scripts/uploader/add-path-to-files.js +0 -19
  522. package/src/scripts/uploader/file-upload.js +0 -88
  523. package/src/scripts/uploader/upload-button.jsx +0 -18
  524. package/src/scripts/uploader/upload-disclaimer.jsx +0 -92
  525. package/src/scripts/uploader/upload-file-status.jsx +0 -20
  526. package/src/scripts/uploader/upload-issues.jsx +0 -131
  527. package/src/scripts/uploader/upload-metadata.jsx +0 -59
  528. package/src/scripts/uploader/upload-mutation.js +0 -111
  529. package/src/scripts/uploader/upload-progress-button.jsx +0 -20
  530. package/src/scripts/uploader/upload-progress-class.js +0 -36
  531. package/src/scripts/uploader/upload-progress.jsx +0 -15
  532. package/src/scripts/uploader/upload-rename.jsx +0 -33
  533. package/src/scripts/uploader/upload-resume.jsx +0 -35
  534. package/src/scripts/uploader/upload-select.jsx +0 -29
  535. package/src/scripts/uploader/upload-status.jsx +0 -23
  536. package/src/scripts/uploader/upload-step.jsx +0 -48
  537. package/src/scripts/uploader/uploader-context.js +0 -6
  538. package/src/scripts/uploader/uploader-location.js +0 -5
  539. package/src/scripts/uploader/uploader-modal.jsx +0 -27
  540. package/src/scripts/uploader/uploader-setup-routes.jsx +0 -52
  541. package/src/scripts/uploader/uploader-status-routes.jsx +0 -30
  542. package/src/scripts/uploader/uploader-view.jsx +0 -45
  543. package/src/scripts/uploader/uploader.jsx +0 -388
  544. package/src/scripts/user/__mocks__/user.store.js +0 -1
  545. package/src/scripts/user/api.jsx +0 -132
  546. package/src/scripts/user/avatar.jsx +0 -40
  547. package/src/scripts/utils/crn.js +0 -15
  548. package/src/scripts/utils/request.js +0 -107
  549. package/src/scripts/utils/user.js +0 -18
  550. package/src/scripts/validation/validation-results.issues.issue.jsx +0 -90
  551. package/src/scripts/validation/validation-results.issues.jsx +0 -79
  552. package/src/scripts/validation/validation-results.jsx +0 -96
@@ -1,116 +0,0 @@
1
- import { getRelativePath, encodeFilePath } from '../file-upload.js'
2
-
3
- describe('file upload helpers', () => {
4
- describe('getRelativePath', () => {
5
- it('works with a few directory levels', () => {
6
- expect(
7
- getRelativePath({ webkitRelativePath: 'test/paths/like/this' }),
8
- ).toBe('paths/like/this')
9
- })
10
- it('works if the path is not actually relative', () => {
11
- expect(
12
- getRelativePath({ webkitRelativePath: 'dataset_description.json' }),
13
- ).toBe('dataset_description.json')
14
- })
15
- })
16
- describe('encodeFilePath', () => {
17
- it('supports directory upload from a webkit-derived browser (stripRelativePath: true)', () => {
18
- expect(
19
- encodeFilePath(
20
- {
21
- name: 'sub-02_T1w.nii.gz',
22
- lastModified: 1604713385516,
23
- webkitRelativePath: 'dataset/sub-02/anat/sub-02_T1w.nii.gz',
24
- size: 311112,
25
- type: 'application/gzip',
26
- },
27
- { stripRelativePath: true },
28
- ),
29
- ).toEqual('sub-02:anat:sub-02_T1w.nii.gz')
30
- })
31
- it('supports directory upload from a webkit-derived browser (stripRelativePath: false)', () => {
32
- expect(
33
- encodeFilePath(
34
- {
35
- name: 'sub-02_T1w.nii.gz',
36
- lastModified: 1604713385516,
37
- webkitRelativePath: 'sub-02/anat/sub-02_T1w.nii.gz',
38
- size: 311112,
39
- type: 'application/gzip',
40
- },
41
- { stripRelativePath: false },
42
- ),
43
- ).toEqual('sub-02:anat:sub-02_T1w.nii.gz')
44
- })
45
- it('supports file upload from a webkit-derived browser (stripRelativePath: true)', () => {
46
- expect(
47
- encodeFilePath(
48
- {
49
- name: 'README',
50
- lastModified: 1604713385516,
51
- webkitRelativePath: '',
52
- size: 809,
53
- type: 'text/plain',
54
- },
55
- { stripRelativePath: true },
56
- ),
57
- ).toEqual('README')
58
- })
59
- it('supports file upload from a webkit-derived browser (stripRelativePath: false)', () => {
60
- expect(
61
- encodeFilePath(
62
- {
63
- name: 'README',
64
- lastModified: 1604713385516,
65
- webkitRelativePath: '',
66
- size: 809,
67
- type: 'text/plain',
68
- },
69
- { stripRelativePath: false },
70
- ),
71
- ).toEqual('README')
72
- })
73
- it('supports nested file upload from a webkit-derived browser (stripRelativePath: true)', () => {
74
- expect(
75
- encodeFilePath(
76
- {
77
- name: 'sub-02_T1w.nii.gz',
78
- lastModified: 1604713385516,
79
- webkitRelativePath: '/dataset/sub-02/anat/',
80
- size: 2000,
81
- type: 'text/plain',
82
- },
83
- { stripRelativePath: true },
84
- ),
85
- ).toEqual('sub-02:anat:sub-02_T1w.nii.gz')
86
- })
87
- it('supports nested file upload from a webkit-derived browser (stripRelativePath: false)', () => {
88
- expect(
89
- encodeFilePath(
90
- {
91
- name: 'sub-02_T1w.nii.gz',
92
- lastModified: 1604713385516,
93
- webkitRelativePath: '/sub-02/anat/',
94
- size: 2000,
95
- type: 'text/plain',
96
- },
97
- { stripRelativePath: false },
98
- ),
99
- ).toEqual('sub-02:anat:sub-02_T1w.nii.gz')
100
- })
101
- it('supports nested directory upload from a webkit-derived browser (stripRelativePath: false)', () => {
102
- expect(
103
- encodeFilePath(
104
- {
105
- name: 'sub-02_T1w.nii.gz',
106
- lastModified: 1604713385516,
107
- webkitRelativePath: '/sub-02/anat/sub-02_T1w.nii.gz',
108
- size: 2000,
109
- type: 'text/plain',
110
- },
111
- { stripRelativePath: false },
112
- ),
113
- ).toEqual('sub-02:anat:sub-02_T1w.nii.gz')
114
- })
115
- })
116
- })
@@ -1,67 +0,0 @@
1
- import React from 'react'
2
- import { render, screen, fireEvent } from '@testing-library/react'
3
- import UploadDisclaimer from '../upload-disclaimer.jsx'
4
- import UploaderContext from '../uploader-context.js'
5
-
6
- describe('UploadDisclaimer component', () => {
7
- it('renders as expected', () => {
8
- expect(() =>
9
- render(
10
- <UploaderContext.Provider value={{ uploader: jest.fn() }}>
11
- <UploadDisclaimer />
12
- </UploaderContext.Provider>,
13
- ),
14
- ).not.toThrowError()
15
- })
16
- it('starts with the upload button disabled', () => {
17
- render(
18
- <UploaderContext.Provider value={{ uploader: jest.fn() }}>
19
- <UploadDisclaimer />
20
- </UploaderContext.Provider>,
21
- )
22
- expect(screen.getByText('I Agree')).toBeDisabled()
23
- })
24
- it('disable the upload button when both boxes are checked', () => {
25
- const { getByLabelText } = render(
26
- <UploaderContext.Provider value={{ uploader: jest.fn() }}>
27
- <UploadDisclaimer />
28
- </UploaderContext.Provider>,
29
- )
30
- fireEvent.click(
31
- getByLabelText(
32
- 'All structural scans have been defaced, obscuring any tissue on or near the face that could potentially be used to reconstruct the facial structure.',
33
- ),
34
- )
35
- fireEvent.click(
36
- getByLabelText(
37
- 'I have explicit participant consent and ethical authorization to publish structural scans without defacing.',
38
- ),
39
- )
40
- expect(screen.getByText('I Agree')).toBeDisabled()
41
- })
42
- it('enable the upload button when one box is checked', () => {
43
- const { getByLabelText } = render(
44
- <UploaderContext.Provider value={{ uploader: jest.fn() }}>
45
- <UploadDisclaimer />
46
- </UploaderContext.Provider>,
47
- )
48
- fireEvent.click(
49
- getByLabelText(
50
- 'All structural scans have been defaced, obscuring any tissue on or near the face that could potentially be used to reconstruct the facial structure.',
51
- ),
52
- )
53
- expect(screen.getByText('I Agree')).not.toBeDisabled()
54
- // Disable the first and enable the second to test the alternate state
55
- fireEvent.click(
56
- getByLabelText(
57
- 'All structural scans have been defaced, obscuring any tissue on or near the face that could potentially be used to reconstruct the facial structure.',
58
- ),
59
- )
60
- fireEvent.click(
61
- getByLabelText(
62
- 'I have explicit participant consent and ethical authorization to publish structural scans without defacing.',
63
- ),
64
- )
65
- expect(screen.getByText('I Agree')).not.toBeDisabled()
66
- })
67
- })
@@ -1,57 +0,0 @@
1
- import { mkLevels, treeFromList } from '../upload-mutation.js'
2
-
3
- describe('Uploader mutations', () => {
4
- describe('mkLevels', () => {
5
- it('updates the parent argument by pushing file objects', () => {
6
- const file = new Blob(['Trouble on Blobolonia'], { type: 'text/plain' })
7
- const parent = { files: [], directories: [], name: '' }
8
- mkLevels(file, parent, ['README'])
9
- expect(parent.files).toEqual([file])
10
- expect(parent.directories).toEqual([])
11
- })
12
- it('creates new directories for nested paths', () => {
13
- const file = new Blob(['1234'], { type: 'text/plain' })
14
- const parent = { files: [], directories: [], name: '' }
15
- mkLevels(file, parent, ['derivatives', 'README'])
16
- expect(parent.files).toEqual([])
17
- expect(parent.directories).toHaveLength(1)
18
- expect(parent.directories[0].files).toHaveLength(1)
19
- expect(parent.directories[0].files[0]).toEqual(file)
20
- })
21
- it('updates existing directories with newly found files', () => {
22
- const file = new Blob(['{}'], { type: 'application/json' })
23
- const parent = {
24
- files: [],
25
- directories: [{ name: '/derivatives', files: [], directories: [] }],
26
- name: '',
27
- }
28
- mkLevels(file, parent, ['derivatives', 'data.json'])
29
- expect(parent.files).toEqual([])
30
- expect(parent.directories).toHaveLength(1)
31
- expect(parent.directories[0].files).toHaveLength(1)
32
- expect(parent.directories[0].files[0]).toEqual(file)
33
- })
34
- })
35
- describe('treeFromList', () => {
36
- it('handles a tree from <input type="file" multiple />', () => {
37
- const mockFileA = new Blob(['file one'], { type: 'text/plain' })
38
- const mockFileB = new Blob(['file two'], { type: 'text/plain' })
39
- mockFileA.webkitRelativePath = '/'
40
- mockFileB.webkitRelativePath = '/'
41
- const mockFileList = [mockFileA, mockFileB]
42
- const fileTree = treeFromList(mockFileList)
43
- expect(typeof fileTree).toBe('object')
44
- expect(fileTree.directories).toEqual([])
45
- expect(fileTree.files).toHaveLength(2)
46
- expect(fileTree.name).toBe('')
47
- })
48
- it('should work for files without webkitRelativePath', () => {
49
- const mockFile = new Blob(['a boy and his blob'], { type: 'text/plain' })
50
- const mockFileList = [mockFile]
51
- const fileTree = treeFromList(mockFileList)
52
- expect(fileTree.directories).toEqual([])
53
- expect(fileTree.files).toHaveLength(1)
54
- expect(fileTree.name).toBe('')
55
- })
56
- })
57
- })
@@ -1,31 +0,0 @@
1
- import React from 'react'
2
- import { shallow } from 'enzyme'
3
- import { UploadClient } from '../uploader.jsx'
4
- import { JSDOM } from 'jsdom'
5
- const { window } = new JSDOM('', { runScripts: 'outside-only' })
6
-
7
- // Stub constructor for File-like objects with webkitRelativePath
8
- function TestFile(body, name, webkitRelativePath) {
9
- const file = new window.Blob(body)
10
- file.name = name
11
- file.webkitRelativePath = webkitRelativePath ? webkitRelativePath : name
12
- return file
13
- }
14
-
15
- describe('uploader', () => {
16
- it('select files updates state', async done => {
17
- const wrapper = shallow(<UploadClient />)
18
- try {
19
- await wrapper.instance().selectFiles({
20
- files: [
21
- new TestFile(['file body one'], 'file_one'),
22
- new TestFile(['file body two'], 'file_two'),
23
- ],
24
- })
25
- expect(wrapper.instance().state.files).toHaveLength(2)
26
- done()
27
- } catch (e) {
28
- done.fail(e)
29
- }
30
- })
31
- })
@@ -1,19 +0,0 @@
1
- /**
2
- * Prefix all files with a path
3
- * This supports uploading within another directory
4
- * @param {any[]} fileList FileList for upload
5
- * @param {string} path Prefix path for all files
6
- * @returns {Array} Updated array of files with adapted paths
7
- */
8
- export const addPathToFiles = (fileList, path) => {
9
- return path
10
- ? Array.prototype.map.call(fileList, file => {
11
- // Override webkitRelativePath with a new property
12
- Object.defineProperty(file, 'webkitRelativePath', {
13
- value: `/${path}/${file.webkitRelativePath}`,
14
- writable: false,
15
- })
16
- return file
17
- })
18
- : fileList
19
- }
@@ -1,88 +0,0 @@
1
- import { config } from '../config'
2
- import { uploads } from '@openneuro/client'
3
-
4
- /**
5
- * Trim the webkitRelativePath value to only include the dataset relative path
6
- * @param {File} file FileAPI object from a browser multiple file selector
7
- */
8
- export const getRelativePath = (
9
- file,
10
- options = { stripRelativePath: true },
11
- ) => {
12
- const path = file.webkitRelativePath
13
- const pathTokens = path.split('/')
14
- if (pathTokens.length === 1) {
15
- return path
16
- }
17
- if (pathTokens[0] === '') {
18
- pathTokens.shift()
19
- }
20
- if (pathTokens[pathTokens.length - 1] === '') {
21
- pathTokens[pathTokens.length - 1] = file.name
22
- }
23
- if (options.stripRelativePath) {
24
- return pathTokens.slice(1).join('/')
25
- } else {
26
- return pathTokens.join('/')
27
- }
28
- }
29
-
30
- /**
31
- * Handle all variants of File objects and return the encoded upload file path
32
- *
33
- * Top level files have webkitRelativePath '' in some scenarios, use just the filename in that case
34
- *
35
- * @param {File} file
36
- * @param {object} options
37
- * @param {boolean} options.stripRelativePath
38
- **/
39
- export const encodeFilePath = (file, options = { stripRelativePath: false }) =>
40
- file.webkitRelativePath
41
- ? uploads.encodeFilePath(getRelativePath(file, options))
42
- : file.name
43
-
44
- /**
45
- * This provides a similar interface to Apollo mutation for a background fetch with a promise that resolves once all promises have settled
46
- * @param {object} options
47
- * @param {string} options.uploadId Upload identifier for resume
48
- * @param {string} options.datasetId Accession number
49
- * @param {number} options.endpoint Offset for upload endpoint
50
- * @param {Array<object>} options.filesToUpload Array of file objects
51
- * @param {string} options.token Credentials
52
- * @param {import('./upload-progress-class').UploadProgress} options.uploadProgress Controller for reporting upload progress
53
- * @param {AbortController} options.abortController Fetch AbortController for halting uploads
54
- * @param {boolean} options.stripRelativePath True will remove the top-most directory name
55
- */
56
- export async function uploadFiles({
57
- uploadId,
58
- datasetId,
59
- endpoint,
60
- filesToUpload,
61
- token,
62
- uploadProgress,
63
- abortController,
64
- stripRelativePath = true,
65
- }) {
66
- // Maps FileAPI objects to Request with the correct URL and body
67
- let totalSize = 0
68
- const requests = filesToUpload.map(f => {
69
- totalSize += f.size
70
- const encodedFilePath = encodeFilePath(f, {
71
- stripRelativePath,
72
- })
73
- const fileUrl = `${config.url}/uploads/${endpoint}/${datasetId}/${uploadId}/${encodedFilePath}`
74
- return new Request(fileUrl, {
75
- method: 'POST',
76
- body: f,
77
- headers: {
78
- Authorization: `Bearer ${token}`,
79
- },
80
- credentials: 'omit',
81
- signal: abortController.signal,
82
- })
83
- })
84
-
85
- // No background fetch
86
- // Parallelism is handled by the client in this case
87
- return uploads.uploadParallel(requests, totalSize, uploadProgress, fetch)
88
- }
@@ -1,18 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
-
4
- const UploadButton = ({ onClick }) => (
5
- <span className="upload-btn-wrap">
6
- <a className="nav-link nl-upload" onClick={onClick}>
7
- <span className="link-name">
8
- <i className="fa fa-upload" /> Upload Dataset
9
- </span>
10
- </a>
11
- </span>
12
- )
13
-
14
- UploadButton.propTypes = {
15
- onClick: PropTypes.func,
16
- }
17
-
18
- export default UploadButton
@@ -1,92 +0,0 @@
1
- import React, { useState } from 'react'
2
- import UploaderContext from './uploader-context.js'
3
-
4
- const UploadDisclaimer = () => {
5
- const [affirmedDefaced, setAffirmedDefaced] = useState(false)
6
- const [affirmedConsent, setAffirmedConsent] = useState(false)
7
- return (
8
- <UploaderContext.Consumer>
9
- {uploader => (
10
- <div className="disclaimer fade-in">
11
- <h4>
12
- By uploading this dataset to OpenNeuro I agree to the following
13
- conditions:
14
- </h4>
15
- <p>
16
- I am the owner of this dataset and have any necessary ethics
17
- permissions to share the data publicly. This dataset does not
18
- include any identifiable personal health information as defined by
19
- the{' '}
20
- <a href="https://www.hhs.gov/hipaa/for-professionals/privacy/laws-regulations/">
21
- Health Insurance Portability and Accountability Act of 1996
22
- </a>{' '}
23
- (including names, zip codes, dates of birth, acquisition dates,
24
- etc). I agree to destroy any key linking the personal identity of
25
- research participants to the subject codes used in the dataset.
26
- </p>
27
- <p>
28
- I agree that this dataset will become publicly available under a{' '}
29
- <a href="https://wiki.creativecommons.org/wiki/CC0">
30
- Creative Commons CC0
31
- </a>{' '}
32
- license after a grace period of 36 months counted from the date of
33
- the first snapshot creation for this dataset. You will be able to
34
- apply for up to two 6 month extensions to increase the grace period
35
- in case the publication of a corresponding paper takes longer than
36
- expected. See <a href="/faq">FAQ</a> for details.
37
- </p>
38
- <p>This dataset is not subject to GDPR protections.</p>
39
- <p>
40
- Generally, data should only be uploaded to a single data archive. In
41
- the rare cases where it is necessary to upload the data to two
42
- databases (such as the NIMH Data Archive), I agree to ensure that
43
- the datasets are harmonized across archives.
44
- </p>
45
- <p>Please affirm one of the following:</p>
46
- <label>
47
- <input
48
- type="checkbox"
49
- onChange={() => setAffirmedDefaced(!affirmedDefaced)}
50
- defaultChecked={affirmedDefaced}
51
- />
52
- &nbsp; All structural scans have been defaced, obscuring any tissue
53
- on or near the face that could potentially be used to reconstruct
54
- the facial structure.
55
- </label>
56
- <label>
57
- <input
58
- type="checkbox"
59
- onChange={() => setAffirmedConsent(!affirmedConsent)}
60
- defaultChecked={affirmedConsent}
61
- />
62
- &nbsp; I have explicit participant consent and ethical authorization
63
- to publish structural scans without defacing.
64
- </label>
65
- <span className="message">
66
- <button
67
- className="fileupload-btn btn-blue"
68
- onClick={() => {
69
- uploader.captureMetadata({
70
- ...uploader.metadata,
71
- affirmedDefaced,
72
- affirmedConsent,
73
- })
74
- uploader.upload({ affirmedDefaced, affirmedConsent })
75
- }}
76
- disabled={
77
- !(
78
- (affirmedDefaced && !affirmedConsent) ||
79
- (!affirmedDefaced && affirmedConsent)
80
- )
81
- }
82
- >
83
- I Agree
84
- </button>
85
- </span>
86
- </div>
87
- )}
88
- </UploaderContext.Consumer>
89
- )
90
- }
91
-
92
- export default UploadDisclaimer
@@ -1,20 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
-
4
- const UploadFileStatus = ({ uploadingFiles, failedFiles }) => (
5
- <>
6
- <p>{[...uploadingFiles].join(', ')}</p>
7
- <p>
8
- {failedFiles.size
9
- ? `Too many failed attempts for '${[...failedFiles].join(', ')}'`
10
- : null}
11
- </p>
12
- </>
13
- )
14
-
15
- UploadFileStatus.propTypes = {
16
- uploadingFiles: PropTypes.instanceOf(Set),
17
- failedFiles: PropTypes.instanceOf(Set),
18
- }
19
-
20
- export default UploadFileStatus
@@ -1,131 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import pluralize from 'pluralize'
4
- import Spinner from '../common/partials/spinner.jsx'
5
- import Results from '../validation/validation-results.jsx'
6
- import UploaderContext from './uploader-context.js'
7
- import validate from '../workers/validate'
8
-
9
- const UploadValidatorStatus = ({ issues, next, reset }) => {
10
- const errorCount = issues.errors.length
11
- const warnCount = issues.warnings.length
12
- const issuesCount = errorCount + warnCount
13
- if (issuesCount === 0) {
14
- return (
15
- <div className="message fade-in">
16
- This dataset has no issues.
17
- <button className="fileupload-btn btn-blue" onClick={next}>
18
- Continue
19
- </button>
20
- </div>
21
- )
22
- } else if (errorCount === 0 && warnCount > 0) {
23
- return (
24
- <div className="message warn fade-in">
25
- We found {warnCount} {pluralize('warning', warnCount)} in your dataset.
26
- You are not required to fix warnings, but doing so will make your
27
- dataset more BIDS compliant. Continue or fix the issues and select
28
- folder again.
29
- <button className="fileupload-btn btn-blue" onClick={next}>
30
- Continue
31
- </button>
32
- </div>
33
- )
34
- } else {
35
- return (
36
- <div className="message error fade-in">
37
- Your dataset is not a valid BIDS dataset. Fix the{' '}
38
- <strong>
39
- {errorCount} {pluralize('error', errorCount)}
40
- </strong>{' '}
41
- and{' '}
42
- <a
43
- href="#"
44
- onClick={e => {
45
- e.preventDefault()
46
- reset()
47
- }}>
48
- select your folder again.
49
- </a>{' '}
50
- </div>
51
- )
52
- }
53
- }
54
-
55
- class UploadValidator extends React.Component {
56
- constructor(props) {
57
- super(props)
58
- this.state = {
59
- validating: true,
60
- issues: {
61
- errors: [],
62
- warnings: [],
63
- },
64
- summary: {},
65
- }
66
- const options = {
67
- config: {
68
- error: ['NO_AUTHORS'],
69
- ignoreSubjectConsistency: true,
70
- },
71
- }
72
- validate(this.props.files, options).then(this.done)
73
- }
74
-
75
- /**
76
- * Called when validation finishes
77
- */
78
- done = ({ issues, summary }) => {
79
- this.setState({ issues, summary, validating: false })
80
- }
81
-
82
- render() {
83
- if (this.state.validating) {
84
- return <Spinner text="validating" active={true} />
85
- } else {
86
- return (
87
- <div>
88
- <UploadValidatorStatus
89
- issues={this.state.issues}
90
- next={this.props.next}
91
- reset={this.props.reset}
92
- />
93
- <Results
94
- errors={this.state.issues.errors}
95
- warnings={this.state.issues.warnings}
96
- />
97
- <span className="bids-link">
98
- Click to view details on{' '}
99
- <a
100
- href="http://bids.neuroimaging.io"
101
- target="_blank"
102
- rel="noopener noreferrer">
103
- BIDS specification
104
- </a>
105
- </span>
106
- </div>
107
- )
108
- }
109
- }
110
- }
111
-
112
- UploadValidator.propTypes = {
113
- // Files can be an FileList object or an array of File objects
114
- files: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
115
- next: PropTypes.func,
116
- reset: PropTypes.func,
117
- }
118
-
119
- const UploadIssues = () => (
120
- <UploaderContext.Consumer>
121
- {uploader => (
122
- <UploadValidator
123
- files={uploader.selectedFiles}
124
- next={() => uploader.setLocation('/upload/metadata')}
125
- reset={() => uploader.setLocation('/upload')}
126
- />
127
- )}
128
- </UploaderContext.Consumer>
129
- )
130
-
131
- export default UploadIssues