@punch-in/strapi-admin 1.0.7 → 1.0.8

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 (706) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/admin/src/app.js +0 -0
  4. package/admin/src/assets/icons/icon_auth-permissions.svg +0 -0
  5. package/admin/src/assets/icons/icon_content-manager.svg +0 -0
  6. package/admin/src/assets/icons/icon_content-type-builder.svg +0 -0
  7. package/admin/src/assets/icons/icon_settings-manager.svg +0 -0
  8. package/admin/src/assets/icons/icon_success.svg +0 -0
  9. package/admin/src/assets/images/background_empty.svg +0 -0
  10. package/admin/src/assets/images/background_welcome_homepage.png +0 -0
  11. package/admin/src/assets/images/banner_strapi-rocket.png +0 -0
  12. package/admin/src/assets/images/banner_t-shirt.png +0 -0
  13. package/admin/src/assets/images/bg_hp_tee_shirt.png +0 -0
  14. package/admin/src/assets/images/logo-strapi.png +0 -0
  15. package/admin/src/assets/images/logo-t-shirt.svg +0 -0
  16. package/admin/src/assets/images/logo_github.png +0 -0
  17. package/admin/src/assets/images/logo_slack.png +0 -0
  18. package/admin/src/assets/images/logo_stack_overflow.png +0 -0
  19. package/admin/src/assets/images/oops.png +0 -0
  20. package/admin/src/assets/images/punchinlogo.webp +0 -0
  21. package/admin/src/assets/images/social_discord.png +0 -0
  22. package/admin/src/assets/images/social_gh.png +0 -0
  23. package/admin/src/assets/images/social_reddit.png +0 -0
  24. package/admin/src/assets/images/social_strapi.png +0 -0
  25. package/admin/src/assets/images/social_twitter.png +0 -0
  26. package/admin/src/components/BaselineAlignement/index.js +0 -0
  27. package/admin/src/components/Bloc/index.js +0 -0
  28. package/admin/src/components/ContainerFluid/index.js +0 -0
  29. package/admin/src/components/Fonts/index.js +12 -12
  30. package/admin/src/components/FormBloc/index.js +1 -1
  31. package/admin/src/components/FullWidthButton/index.js +1 -1
  32. package/admin/src/components/GlobalStyle/index.js +1 -1
  33. package/admin/src/components/Header/index.js +0 -0
  34. package/admin/src/components/HeaderSearch/HeaderSearch.js +0 -0
  35. package/admin/src/components/HeaderSearch/index.js +0 -0
  36. package/admin/src/components/IntlInput/index.js +1 -1
  37. package/admin/src/components/LeftMenu/LeftMenuFooter/Wrapper.js +0 -0
  38. package/admin/src/components/LeftMenu/LeftMenuFooter/index.js +0 -0
  39. package/admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.js +3 -0
  40. package/admin/src/components/LeftMenu/LeftMenuHeader/index.js +1 -3
  41. package/admin/src/components/LeftMenu/LeftMenuLink/A.js +6 -8
  42. package/admin/src/components/LeftMenu/LeftMenuLink/LeftMenuIcon.js +0 -0
  43. package/admin/src/components/LeftMenu/LeftMenuLink/LeftMenuLinkContent.js +10 -3
  44. package/admin/src/components/LeftMenu/LeftMenuLink/NotificationCount.js +1 -1
  45. package/admin/src/components/LeftMenu/LeftMenuLink/index.js +0 -0
  46. package/admin/src/components/LeftMenu/LeftMenuLinkHeader/Search.js +1 -1
  47. package/admin/src/components/LeftMenu/LeftMenuLinkHeader/SearchButton.js +0 -0
  48. package/admin/src/components/LeftMenu/LeftMenuLinkHeader/SearchWrapper.js +0 -0
  49. package/admin/src/components/LeftMenu/LeftMenuLinkHeader/Title.js +3 -2
  50. package/admin/src/components/LeftMenu/LeftMenuLinkHeader/index.js +0 -0
  51. package/admin/src/components/LeftMenu/LeftMenuLinkHeader/messages.json +1 -1
  52. package/admin/src/components/LeftMenu/LeftMenuLinkSection/EmptyLinksList.js +0 -0
  53. package/admin/src/components/LeftMenu/LeftMenuLinkSection/EmptyLinksListWrapper.js +0 -0
  54. package/admin/src/components/LeftMenu/LeftMenuLinkSection/LeftMenuListLink.js +6 -2
  55. package/admin/src/components/LeftMenu/LeftMenuLinkSection/index.js +0 -0
  56. package/admin/src/components/LeftMenu/LinksContainer/index.js +22 -3
  57. package/admin/src/components/LeftMenu/index.js +0 -0
  58. package/admin/src/components/NavTopRightWrapper/index.js +4 -0
  59. package/admin/src/components/Notifications/Notification/Li.js +0 -0
  60. package/admin/src/components/Notifications/Notification/index.js +1 -1
  61. package/admin/src/components/Notifications/NotificationsContainer/Wrapper.js +0 -0
  62. package/admin/src/components/Notifications/NotificationsContainer/index.js +0 -0
  63. package/admin/src/components/Notifications/index.js +0 -0
  64. package/admin/src/components/PageTitle/index.js +0 -0
  65. package/admin/src/components/ProviderButton/ProviderButtonStyles.js +43 -0
  66. package/admin/src/components/ProviderButton/index.js +54 -0
  67. package/admin/src/components/Roles/ButtonWithNumber/NumberCard.js +0 -0
  68. package/admin/src/components/Roles/ButtonWithNumber/index.js +1 -1
  69. package/admin/src/components/Roles/CheckboxWithCondition/index.js +1 -1
  70. package/admin/src/components/Roles/Chevron/index.js +0 -0
  71. package/admin/src/components/Roles/CollapseLabel/index.js +1 -1
  72. package/admin/src/components/Roles/ConditionsButton/Wrapper.js +0 -0
  73. package/admin/src/components/Roles/ConditionsButton/index.js +1 -1
  74. package/admin/src/components/Roles/ConditionsModal/ActionRow/Wrapper.js +0 -0
  75. package/admin/src/components/Roles/ConditionsModal/ActionRow/index.js +1 -1
  76. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/ClearIndicator.js +1 -1
  77. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/CustomDropdownIndicator.js +1 -1
  78. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/IndicatorSeparator.js +0 -0
  79. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/MenuList/SubUl.js +0 -0
  80. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/MenuList/Ul.js +0 -0
  81. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/MenuList/UpperFirst.js +0 -0
  82. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/MenuList/index.js +2 -2
  83. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/MenuList/utils/constants.js +0 -0
  84. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/MenuList/utils/createCollapsesObject.js +0 -0
  85. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/SingleValue.js +1 -1
  86. package/admin/src/components/Roles/ConditionsModal/ConditionsSelect/index.js +0 -0
  87. package/admin/src/components/Roles/ConditionsModal/Separator.js +0 -0
  88. package/admin/src/components/Roles/ConditionsModal/index.js +1 -1
  89. package/admin/src/components/Roles/ConditionsModal/utils/createDefaultConditionsForm.js +0 -0
  90. package/admin/src/components/Roles/ConditionsModal/utils/selectStyle.js +0 -0
  91. package/admin/src/components/Roles/ContentTypeCollapse/Collapse/Wrapper.js +1 -1
  92. package/admin/src/components/Roles/ContentTypeCollapse/Collapse/index.js +1 -1
  93. package/admin/src/components/Roles/ContentTypeCollapse/Collapse/utils/constants.js +0 -0
  94. package/admin/src/components/Roles/ContentTypeCollapse/Collapse/utils/generateCheckboxesActions.js +0 -0
  95. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/Wrapper.js +1 -1
  96. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js +1 -1
  97. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/constants.js +0 -0
  98. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/getRowLabelCheckboxeState.js +0 -0
  99. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/Header/index.js +1 -1
  100. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/Wrapper.js +0 -0
  101. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js +1 -1
  102. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/row.js +1 -1
  103. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/timeline.js +0 -0
  104. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/utils/constants.js +0 -0
  105. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/Wrapper.js +0 -0
  106. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/index.js +1 -1
  107. package/admin/src/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/utils/generateHeadersFromActions.js +0 -0
  108. package/admin/src/components/Roles/ContentTypeCollapse/Wrapper.js +0 -0
  109. package/admin/src/components/Roles/ContentTypeCollapse/index.js +0 -0
  110. package/admin/src/components/Roles/ContentTypeCollapse/utils/activeStyle.js +1 -1
  111. package/admin/src/components/Roles/ContentTypeCollapse/utils/getAvailableActions.js +0 -0
  112. package/admin/src/components/Roles/ContentTypeCollapse/utils/index.js +0 -0
  113. package/admin/src/components/Roles/ContentTypeCollapses/index.js +0 -0
  114. package/admin/src/components/Roles/ContentTypes/Wrapper.js +0 -0
  115. package/admin/src/components/Roles/ContentTypes/index.js +1 -1
  116. package/admin/src/components/Roles/Curve/index.js +0 -0
  117. package/admin/src/components/Roles/EmptyRole/index.js +1 -1
  118. package/admin/src/components/Roles/GlobalActions/Wrapper.js +0 -0
  119. package/admin/src/components/Roles/GlobalActions/index.js +1 -1
  120. package/admin/src/components/Roles/GlobalActions/utils/constants.js +0 -0
  121. package/admin/src/components/Roles/GlobalActions/utils/findDisplayedActions.js +0 -0
  122. package/admin/src/components/Roles/GlobalActions/utils/getRowLabelCheckboxesState.js +0 -0
  123. package/admin/src/components/Roles/GlobalActions/utils/index.js +0 -0
  124. package/admin/src/components/Roles/HiddenAction/index.js +0 -0
  125. package/admin/src/components/Roles/Permissions/README.md +0 -0
  126. package/admin/src/components/Roles/Permissions/index.js +0 -0
  127. package/admin/src/components/Roles/Permissions/init.js +0 -0
  128. package/admin/src/components/Roles/Permissions/reducer.js +0 -0
  129. package/admin/src/components/Roles/Permissions/utils/createDefaultCTFormFromLayout.js +0 -0
  130. package/admin/src/components/Roles/Permissions/utils/createDefaultPluginsFormFromLayout.js +0 -0
  131. package/admin/src/components/Roles/Permissions/utils/findMatchingPermissions.js +0 -0
  132. package/admin/src/components/Roles/Permissions/utils/formatContentTypesPermissionToAPI.js +0 -0
  133. package/admin/src/components/Roles/Permissions/utils/formatLayoutForSettingsAndPlugins.js +0 -0
  134. package/admin/src/components/Roles/Permissions/utils/formatPermissionsToAPI.js +0 -0
  135. package/admin/src/components/Roles/Permissions/utils/formatSettingsPermissionsToAPI.js +0 -0
  136. package/admin/src/components/Roles/Permissions/utils/tabLabels.js +0 -0
  137. package/admin/src/components/Roles/Permissions/utils/updateConditionsToFalse.js +0 -0
  138. package/admin/src/components/Roles/Permissions/utils/updateValues.js +0 -0
  139. package/admin/src/components/Roles/PermissionsDataManagerProvider/index.js +0 -0
  140. package/admin/src/components/Roles/PluginsAndSettings/ListWrapper.js +0 -0
  141. package/admin/src/components/Roles/PluginsAndSettings/Row/Wrapper.js +1 -1
  142. package/admin/src/components/Roles/PluginsAndSettings/Row/index.js +1 -1
  143. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/CheckboxWrapper.js +0 -0
  144. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/ConditionsButtonWrapper.js +0 -0
  145. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/Wrapper.js +0 -0
  146. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/index.js +1 -1
  147. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/utils/constants.js +0 -0
  148. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/utils/formatActions.js +0 -0
  149. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/utils/getConditionsButtonState.js +0 -0
  150. package/admin/src/components/Roles/PluginsAndSettings/SubCategory/utils/index.js +0 -0
  151. package/admin/src/components/Roles/PluginsAndSettings/index.js +1 -1
  152. package/admin/src/components/Roles/RequiredSign/index.js +0 -0
  153. package/admin/src/components/Roles/RoleForm/NameInput.js +0 -0
  154. package/admin/src/components/Roles/RoleForm/RoleForm.js +0 -0
  155. package/admin/src/components/Roles/RoleForm/index.js +0 -0
  156. package/admin/src/components/Roles/RoleList/RoleDescription.js +1 -1
  157. package/admin/src/components/Roles/RoleList/RoleListWrapper.js +0 -0
  158. package/admin/src/components/Roles/RoleList/RoleRow.js +2 -2
  159. package/admin/src/components/Roles/RoleList/index.js +0 -0
  160. package/admin/src/components/Roles/RowLabelWithCheckbox/Wrapper.js +0 -0
  161. package/admin/src/components/Roles/RowLabelWithCheckbox/index.js +1 -1
  162. package/admin/src/components/Roles/Tabs/Tab.js +0 -0
  163. package/admin/src/components/Roles/Tabs/TabsWrapper.js +0 -0
  164. package/admin/src/components/Roles/Tabs/index.js +1 -1
  165. package/admin/src/components/Roles/index.js +0 -0
  166. package/admin/src/components/Roles/utils/createArrayOfValues.js +0 -0
  167. package/admin/src/components/Roles/utils/getCheckboxState.js +0 -0
  168. package/admin/src/components/Roles/utils/index.js +0 -0
  169. package/admin/src/components/Roles/utils/removeConditionKeyFromData.js +0 -0
  170. package/admin/src/components/Settings/Header/index.js +1 -1
  171. package/admin/src/components/Settings/index.js +0 -0
  172. package/admin/src/components/SettingsPageTitle/index.js +0 -0
  173. package/admin/src/components/SizedInput/index.js +0 -0
  174. package/admin/src/components/UpgradePlanModal/components/Arrow/arrow.png +0 -0
  175. package/admin/src/components/UpgradePlanModal/components/Arrow/index.js +0 -0
  176. package/admin/src/components/UpgradePlanModal/components/Download/index.js +0 -0
  177. package/admin/src/components/UpgradePlanModal/components/Option/Wrapper.js +0 -0
  178. package/admin/src/components/UpgradePlanModal/components/Option/index.js +1 -1
  179. package/admin/src/components/UpgradePlanModal/components/Wrapper/balloon.png +0 -0
  180. package/admin/src/components/UpgradePlanModal/components/Wrapper/index.js +0 -0
  181. package/admin/src/components/UpgradePlanModal/components/index.js +0 -0
  182. package/admin/src/components/UpgradePlanModal/index.js +1 -1
  183. package/admin/src/components/Users/Filter/index.js +1 -1
  184. package/admin/src/components/Users/FilterPicker/Button.js +0 -0
  185. package/admin/src/components/Users/FilterPicker/Card/Input.js +1 -1
  186. package/admin/src/components/Users/FilterPicker/Card/Wrapper.js +0 -0
  187. package/admin/src/components/Users/FilterPicker/Card/index.js +1 -1
  188. package/admin/src/components/Users/FilterPicker/Card/init.js +0 -0
  189. package/admin/src/components/Users/FilterPicker/Card/reducer.js +0 -0
  190. package/admin/src/components/Users/FilterPicker/Card/utils/form.js +0 -0
  191. package/admin/src/components/Users/FilterPicker/Card/utils/formatInputValue.js +0 -0
  192. package/admin/src/components/Users/FilterPicker/Card/utils/getInputValue.js +0 -0
  193. package/admin/src/components/Users/FilterPicker/Card/utils/index.js +0 -0
  194. package/admin/src/components/Users/FilterPicker/index.js +1 -1
  195. package/admin/src/components/Users/Footer/Wrapper.js +0 -0
  196. package/admin/src/components/Users/Footer/index.js +1 -1
  197. package/admin/src/components/Users/LinkNotification/Envelope.js +0 -0
  198. package/admin/src/components/Users/LinkNotification/IconWrapper.js +1 -1
  199. package/admin/src/components/Users/LinkNotification/Wrapper.js +0 -0
  200. package/admin/src/components/Users/LinkNotification/index.js +2 -2
  201. package/admin/src/components/Users/List/ActiveStatus.js +0 -0
  202. package/admin/src/components/Users/List/Wrapper.js +0 -0
  203. package/admin/src/components/Users/List/index.js +1 -1
  204. package/admin/src/components/Users/List/init.js +0 -0
  205. package/admin/src/components/Users/List/reducer.js +0 -0
  206. package/admin/src/components/Users/List/utils/checkIfAllEntriesAreSelected.js +0 -0
  207. package/admin/src/components/Users/List/utils/getSelectedIds.js +0 -0
  208. package/admin/src/components/Users/List/utils/headers.js +0 -0
  209. package/admin/src/components/Users/List/utils/index.js +0 -0
  210. package/admin/src/components/Users/List/utils/updateRows.js +0 -0
  211. package/admin/src/components/Users/MagicLink/index.js +0 -0
  212. package/admin/src/components/Users/ModalCreateBody/Wrapper.js +0 -0
  213. package/admin/src/components/Users/ModalCreateBody/index.js +1 -1
  214. package/admin/src/components/Users/ModalCreateBody/init.js +0 -0
  215. package/admin/src/components/Users/ModalCreateBody/reducer.js +0 -0
  216. package/admin/src/components/Users/ModalCreateBody/utils/form.js +0 -0
  217. package/admin/src/components/Users/ModalCreateBody/utils/formDataModel.js +0 -0
  218. package/admin/src/components/Users/ModalCreateBody/utils/roleSettingsForm.js +0 -0
  219. package/admin/src/components/Users/ModalCreateBody/utils/schema.js +0 -0
  220. package/admin/src/components/Users/RoleSettingsModalSection/RolesSelectComponent.js +2 -2
  221. package/admin/src/components/Users/RoleSettingsModalSection/index.js +1 -1
  222. package/admin/src/components/Users/SelectRoles/ClearIndicator.js +1 -1
  223. package/admin/src/components/Users/SelectRoles/DropdownIndicator.js +1 -1
  224. package/admin/src/components/Users/SelectRoles/ErrorMessage.js +1 -1
  225. package/admin/src/components/Users/SelectRoles/IndicatorSeparator.js +0 -0
  226. package/admin/src/components/Users/SelectRoles/MultiValueContainer.js +0 -0
  227. package/admin/src/components/Users/SelectRoles/StyledOption.js +1 -1
  228. package/admin/src/components/Users/SelectRoles/index.js +1 -1
  229. package/admin/src/components/Users/SelectRoles/utils/styles.js +0 -0
  230. package/admin/src/components/Users/SortPicker/Button.js +0 -0
  231. package/admin/src/components/Users/SortPicker/List.js +0 -0
  232. package/admin/src/components/Users/SortPicker/ListItem.js +1 -1
  233. package/admin/src/components/Users/SortPicker/ListWrapper.js +1 -1
  234. package/admin/src/components/Users/SortPicker/StyledListItem.js +0 -0
  235. package/admin/src/components/Users/SortPicker/index.js +1 -1
  236. package/admin/src/components/Users/index.js +0 -0
  237. package/admin/src/components/Webhooks/EventInput/EventRow.js +1 -1
  238. package/admin/src/components/Webhooks/EventInput/Wrapper.js +1 -1
  239. package/admin/src/components/Webhooks/EventInput/index.js +0 -0
  240. package/admin/src/components/Webhooks/EventInput/utils/formatValue.js +0 -0
  241. package/admin/src/components/Webhooks/HeadersInput/Wrapper.js +1 -1
  242. package/admin/src/components/Webhooks/HeadersInput/index.js +2 -2
  243. package/admin/src/components/Webhooks/HeadersInput/keys.js +0 -0
  244. package/admin/src/components/Webhooks/HeadersInput/utils/getBorderColor.js +0 -0
  245. package/admin/src/components/Webhooks/Inputs/Wrapper.js +1 -1
  246. package/admin/src/components/Webhooks/Inputs/index.js +2 -2
  247. package/admin/src/components/Webhooks/ListRow/StyledListRow.js +1 -1
  248. package/admin/src/components/Webhooks/ListRow/index.js +1 -1
  249. package/admin/src/components/Webhooks/Switch/Toggle.js +0 -0
  250. package/admin/src/components/Webhooks/Switch/Wrapper.js +0 -0
  251. package/admin/src/components/Webhooks/Switch/index.js +0 -0
  252. package/admin/src/components/Webhooks/TriggerContainer/Wrapper.js +0 -0
  253. package/admin/src/components/Webhooks/TriggerContainer/index.js +1 -1
  254. package/admin/src/components/Webhooks/index.js +0 -0
  255. package/admin/src/config.js +0 -0
  256. package/admin/src/configureStore.js +0 -0
  257. package/admin/src/containers/Admin/Content.js +3 -4
  258. package/admin/src/containers/Admin/Logout/components.js +0 -0
  259. package/admin/src/containers/Admin/Logout/index.js +0 -0
  260. package/admin/src/containers/Admin/Wrapper.js +8 -1
  261. package/admin/src/containers/Admin/actions.js +0 -0
  262. package/admin/src/containers/Admin/constants.js +0 -0
  263. package/admin/src/containers/Admin/index.js +10 -6
  264. package/admin/src/containers/Admin/reducer.js +0 -0
  265. package/admin/src/containers/Admin/selectors.js +0 -0
  266. package/admin/src/containers/App/actions.js +0 -0
  267. package/admin/src/containers/App/components.js +3 -1
  268. package/admin/src/containers/App/constants.js +0 -0
  269. package/admin/src/containers/App/index.js +0 -21
  270. package/admin/src/containers/App/reducer.js +0 -0
  271. package/admin/src/containers/App/selectors.js +0 -0
  272. package/admin/src/containers/App/styles/website.css +0 -0
  273. package/admin/src/containers/App/utils/customRoutes.js +0 -0
  274. package/admin/src/containers/App/utils/defaultRoutes.js +0 -0
  275. package/admin/src/containers/App/utils/index.js +0 -0
  276. package/admin/src/containers/App/utils/routes.js +0 -0
  277. package/admin/src/containers/App/utils/unique-identifier.js +0 -0
  278. package/admin/src/containers/ApplicationInfosPage/components/Detail/index.js +1 -1
  279. package/admin/src/containers/ApplicationInfosPage/components/InfoText/index.js +1 -1
  280. package/admin/src/containers/ApplicationInfosPage/components/Link/components.js +2 -2
  281. package/admin/src/containers/ApplicationInfosPage/components/Link/index.js +1 -1
  282. package/admin/src/containers/ApplicationInfosPage/components/Wrapper/index.js +0 -0
  283. package/admin/src/containers/ApplicationInfosPage/components/index.js +0 -0
  284. package/admin/src/containers/ApplicationInfosPage/index.js +2 -2
  285. package/admin/src/containers/AuthPage/components/AuthLink/Link.js +0 -0
  286. package/admin/src/containers/AuthPage/components/AuthLink/Wrapper.js +0 -0
  287. package/admin/src/containers/AuthPage/components/AuthLink/index.js +1 -1
  288. package/admin/src/containers/AuthPage/components/Box/Wrapper.js +8 -7
  289. package/admin/src/containers/AuthPage/components/Box/index.js +1 -1
  290. package/admin/src/containers/AuthPage/components/ForgotPassword/index.js +1 -1
  291. package/admin/src/containers/AuthPage/components/ForgotPasswordSuccess/Envelope.js +0 -0
  292. package/admin/src/containers/AuthPage/components/ForgotPasswordSuccess/index.js +1 -1
  293. package/admin/src/containers/AuthPage/components/Input/index.js +1 -1
  294. package/admin/src/containers/AuthPage/components/Login/BaseLogin.js +68 -6
  295. package/admin/src/containers/AuthPage/components/Login/index.js +0 -0
  296. package/admin/src/containers/AuthPage/components/Logo/Img.js +0 -0
  297. package/admin/src/containers/AuthPage/components/Logo/index.js +1 -1
  298. package/admin/src/containers/AuthPage/components/Oops/Img.js +0 -0
  299. package/admin/src/containers/AuthPage/components/Oops/index.js +1 -1
  300. package/admin/src/containers/AuthPage/components/Providers/index.js +109 -0
  301. package/admin/src/containers/AuthPage/components/Register/CustomLabel.js +1 -1
  302. package/admin/src/containers/AuthPage/components/Register/InputWrapper.js +0 -0
  303. package/admin/src/containers/AuthPage/components/Register/Span.js +1 -1
  304. package/admin/src/containers/AuthPage/components/Register/index.js +1 -1
  305. package/admin/src/containers/AuthPage/components/ResetPassword/index.js +1 -1
  306. package/admin/src/containers/AuthPage/components/Section/index.js +0 -0
  307. package/admin/src/containers/AuthPage/index.js +1 -1
  308. package/admin/src/containers/AuthPage/init.js +0 -0
  309. package/admin/src/containers/AuthPage/reducer.js +0 -0
  310. package/admin/src/containers/AuthPage/utils/forms.js +9 -0
  311. package/admin/src/containers/AuthPage/utils/index.js +0 -0
  312. package/admin/src/containers/HomePage/BlogPost.js +0 -0
  313. package/admin/src/containers/HomePage/SocialLink.js +0 -0
  314. package/admin/src/containers/HomePage/components.js +0 -0
  315. package/admin/src/containers/HomePage/hooks.js +0 -0
  316. package/admin/src/containers/HomePage/index.js +0 -0
  317. package/admin/src/containers/InstalledPluginsPage/ListWrapper.js +0 -0
  318. package/admin/src/containers/InstalledPluginsPage/Logo.js +0 -0
  319. package/admin/src/containers/InstalledPluginsPage/Row.js +2 -2
  320. package/admin/src/containers/InstalledPluginsPage/index.js +1 -1
  321. package/admin/src/containers/InstalledPluginsPage/utils/generateRows.js +0 -0
  322. package/admin/src/containers/LanguageProvider/actions.js +0 -0
  323. package/admin/src/containers/LanguageProvider/constants.js +0 -0
  324. package/admin/src/containers/LanguageProvider/hooks/useChangeLanguage.js +0 -0
  325. package/admin/src/containers/LanguageProvider/index.js +0 -0
  326. package/admin/src/containers/LanguageProvider/reducer.js +0 -0
  327. package/admin/src/containers/LanguageProvider/selectors.js +0 -0
  328. package/admin/src/containers/LeftMenu/Loader.js +0 -0
  329. package/admin/src/containers/LeftMenu/LoaderWrapper.js +0 -0
  330. package/admin/src/containers/LeftMenu/Wrapper.js +4 -5
  331. package/admin/src/containers/LeftMenu/actions.js +0 -0
  332. package/admin/src/containers/LeftMenu/constants.js +0 -0
  333. package/admin/src/containers/LeftMenu/index.js +0 -3
  334. package/admin/src/containers/LeftMenu/reducer.js +0 -0
  335. package/admin/src/containers/LeftMenu/selectors.js +0 -0
  336. package/admin/src/containers/LeftMenu/useMenuSections.js +0 -0
  337. package/admin/src/containers/LeftMenu/utils/checkPermissions.js +0 -0
  338. package/admin/src/containers/LeftMenu/utils/generateModelsLinks.js +0 -0
  339. package/admin/src/containers/LeftMenu/utils/getCtOrStLinks.js +0 -0
  340. package/admin/src/containers/LeftMenu/utils/getGeneralLinks.js +0 -0
  341. package/admin/src/containers/LeftMenu/utils/getPluginSectionLinks.js +0 -0
  342. package/admin/src/containers/LeftMenu/utils/getSettingsMenuLinksPermissions.js +0 -0
  343. package/admin/src/containers/LeftMenu/utils/index.js +0 -0
  344. package/admin/src/containers/LeftMenu/utils/toPluginLinks.js +0 -0
  345. package/admin/src/containers/LocaleToggle/Wrapper.js +0 -0
  346. package/admin/src/containers/LocaleToggle/actions.js +0 -0
  347. package/admin/src/containers/LocaleToggle/constants.js +0 -0
  348. package/admin/src/containers/LocaleToggle/index.js +0 -0
  349. package/admin/src/containers/LocaleToggle/reducer.js +0 -0
  350. package/admin/src/containers/LocaleToggle/selectors.js +0 -0
  351. package/admin/src/containers/MarketplacePage/MarketplaceBanner/Wrapper.js +0 -0
  352. package/admin/src/containers/MarketplacePage/MarketplaceBanner/index.js +0 -0
  353. package/admin/src/containers/MarketplacePage/PluginCard/Wrapper.js +0 -0
  354. package/admin/src/containers/MarketplacePage/PluginCard/index.js +0 -0
  355. package/admin/src/containers/MarketplacePage/Wrapper.js +0 -0
  356. package/admin/src/containers/MarketplacePage/index.js +1 -1
  357. package/admin/src/containers/NewNotification/Notification/index.js +2 -2
  358. package/admin/src/containers/NewNotification/Notification/styledComponents.js +1 -1
  359. package/admin/src/containers/NewNotification/Wrapper.js +0 -0
  360. package/admin/src/containers/NewNotification/actions.js +0 -0
  361. package/admin/src/containers/NewNotification/constants.js +0 -0
  362. package/admin/src/containers/NewNotification/index.js +0 -0
  363. package/admin/src/containers/NewNotification/reducer.js +0 -0
  364. package/admin/src/containers/NotFoundPage/index.js +0 -0
  365. package/admin/src/containers/NotificationProvider/actions.js +0 -0
  366. package/admin/src/containers/NotificationProvider/constants.js +0 -0
  367. package/admin/src/containers/NotificationProvider/index.js +0 -0
  368. package/admin/src/containers/NotificationProvider/reducer.js +0 -0
  369. package/admin/src/containers/NotificationProvider/selectors.js +0 -0
  370. package/admin/src/containers/Onboarding/Li.js +0 -0
  371. package/admin/src/containers/Onboarding/StaticLinks/StyledLink.js +0 -0
  372. package/admin/src/containers/Onboarding/StaticLinks/index.js +0 -0
  373. package/admin/src/containers/Onboarding/Video.js +0 -0
  374. package/admin/src/containers/Onboarding/Wrapper.js +0 -0
  375. package/admin/src/containers/Onboarding/index.js +0 -0
  376. package/admin/src/containers/Onboarding/init.js +0 -0
  377. package/admin/src/containers/Onboarding/reducer.js +0 -0
  378. package/admin/src/containers/Onboarding/utils/formatAndStoreVideoArray.js +0 -0
  379. package/admin/src/containers/PermissionsManager/actions.js +0 -0
  380. package/admin/src/containers/PermissionsManager/constants.js +0 -0
  381. package/admin/src/containers/PermissionsManager/index.js +0 -0
  382. package/admin/src/containers/PermissionsManager/reducer.js +0 -0
  383. package/admin/src/containers/PluginDispatcher/index.js +0 -0
  384. package/admin/src/containers/PrivateRoute/index.js +0 -0
  385. package/admin/src/containers/ProfilePage/components.js +1 -1
  386. package/admin/src/containers/ProfilePage/index.js +1 -1
  387. package/admin/src/containers/ProfilePage/utils/form.js +0 -0
  388. package/admin/src/containers/ProfilePage/utils/index.js +0 -0
  389. package/admin/src/containers/ProfilePage/utils/schema.js +0 -0
  390. package/admin/src/containers/Roles/CreatePage/index.js +0 -0
  391. package/admin/src/containers/Roles/EditPage/index.js +2 -2
  392. package/admin/src/containers/Roles/EditPage/utils/schema.js +0 -0
  393. package/admin/src/containers/Roles/ListPage/BaselineAlignment.js +0 -0
  394. package/admin/src/containers/Roles/ListPage/index.js +3 -3
  395. package/admin/src/containers/Roles/ProtectedEditPage/index.js +0 -0
  396. package/admin/src/containers/Roles/ProtectedListPage/index.js +0 -0
  397. package/admin/src/containers/SettingsHeaderSearchContextProvider/index.js +0 -0
  398. package/admin/src/containers/SettingsPage/components/ApplicationDetailLink/Icon.js +0 -0
  399. package/admin/src/containers/SettingsPage/components/ApplicationDetailLink/Link.js +0 -0
  400. package/admin/src/containers/SettingsPage/components/ApplicationDetailLink/Notif.js +0 -0
  401. package/admin/src/containers/SettingsPage/components/ApplicationDetailLink/Wrapper.js +0 -0
  402. package/admin/src/containers/SettingsPage/components/ApplicationDetailLink/index.js +1 -1
  403. package/admin/src/containers/SettingsPage/components/MenuWrapper/index.js +0 -0
  404. package/admin/src/containers/SettingsPage/components/SettingDispatcher/index.js +0 -0
  405. package/admin/src/containers/SettingsPage/components/StyledLeftMenu/index.js +0 -0
  406. package/admin/src/containers/SettingsPage/components/Wrapper/index.js +0 -0
  407. package/admin/src/containers/SettingsPage/components/index.js +0 -0
  408. package/admin/src/containers/SettingsPage/index.js +1 -1
  409. package/admin/src/containers/SettingsPage/utils/createPluginsLinksRoutes.js +0 -0
  410. package/admin/src/containers/SettingsPage/utils/createRoute.js +0 -0
  411. package/admin/src/containers/SettingsPage/utils/customRoutes.js +0 -0
  412. package/admin/src/containers/SettingsPage/utils/defaultRoutes.js +0 -0
  413. package/admin/src/containers/SettingsPage/utils/findFirstAllowedEndpoint.js +0 -0
  414. package/admin/src/containers/SettingsPage/utils/getSectionsToDisplay.js +0 -0
  415. package/admin/src/containers/SettingsPage/utils/index.js +0 -0
  416. package/admin/src/containers/SettingsPage/utils/makeUniqueRoutes.js +0 -0
  417. package/admin/src/containers/SettingsPage/utils/routes.js +0 -0
  418. package/admin/src/containers/Theme/index.js +0 -0
  419. package/admin/src/containers/Users/EditPage/index.js +1 -1
  420. package/admin/src/containers/Users/EditPage/utils/form.js +0 -0
  421. package/admin/src/containers/Users/ListPage/Header.js +3 -3
  422. package/admin/src/containers/Users/ListPage/ModalForm.js +1 -1
  423. package/admin/src/containers/Users/ListPage/index.js +1 -1
  424. package/admin/src/containers/Users/ListPage/init.js +0 -0
  425. package/admin/src/containers/Users/ListPage/reducer.js +0 -0
  426. package/admin/src/containers/Users/ListPage/stepper.js +0 -0
  427. package/admin/src/containers/Users/ListPage/utils/getFilters.js +0 -0
  428. package/admin/src/containers/Users/ProtectedEditPage/index.js +0 -0
  429. package/admin/src/containers/Users/ProtectedListPage/index.js +0 -0
  430. package/admin/src/containers/Webhooks/EditView/Wrapper.js +0 -0
  431. package/admin/src/containers/Webhooks/EditView/index.js +2 -2
  432. package/admin/src/containers/Webhooks/EditView/reducer.js +0 -0
  433. package/admin/src/containers/Webhooks/EditView/utils/fieldsRegex.js +0 -0
  434. package/admin/src/containers/Webhooks/EditView/utils/form.js +0 -0
  435. package/admin/src/containers/Webhooks/EditView/utils/formatData.js +0 -0
  436. package/admin/src/containers/Webhooks/EditView/utils/index.js +0 -0
  437. package/admin/src/containers/Webhooks/EditView/utils/schema.js +0 -0
  438. package/admin/src/containers/Webhooks/ListView/Wrapper.js +0 -0
  439. package/admin/src/containers/Webhooks/ListView/index.js +3 -3
  440. package/admin/src/containers/Webhooks/ListView/reducer.js +0 -0
  441. package/admin/src/containers/Webhooks/ProtectedCreateView/index.js +0 -0
  442. package/admin/src/containers/Webhooks/ProtectedEditView/index.js +0 -0
  443. package/admin/src/containers/Webhooks/ProtectedListView/index.js +0 -0
  444. package/admin/src/contexts/MarketPlace/index.js +0 -0
  445. package/admin/src/contexts/PermisssionsDataManagerContext/index.js +0 -0
  446. package/admin/src/contexts/SettingsHeaderSearchContext/index.js +0 -0
  447. package/admin/src/contexts/index.js +0 -0
  448. package/admin/src/favicon.png +0 -0
  449. package/admin/src/hooks/index.js +1 -0
  450. package/admin/src/hooks/useAuthProviders/index.js +54 -0
  451. package/admin/src/hooks/useAuthProviders/initialState.js +16 -0
  452. package/admin/src/hooks/useAuthProviders/reducer.js +39 -0
  453. package/admin/src/hooks/useFetchPermissionsLayout/index.js +0 -0
  454. package/admin/src/hooks/useFetchPermissionsLayout/reducer.js +0 -0
  455. package/admin/src/hooks/useFetchPluginsFromMarketPlace/index.js +0 -0
  456. package/admin/src/hooks/useFetchRole/index.js +0 -0
  457. package/admin/src/hooks/useFetchRole/reducer.js +0 -0
  458. package/admin/src/hooks/useModels/index.js +0 -0
  459. package/admin/src/hooks/useModels/reducer.js +0 -0
  460. package/admin/src/hooks/usePermissionsDataManager/index.js +0 -0
  461. package/admin/src/hooks/useRolesList/index.js +0 -0
  462. package/admin/src/hooks/useRolesList/init.js +0 -0
  463. package/admin/src/hooks/useRolesList/reducer.js +0 -0
  464. package/admin/src/hooks/useSettingsForm/index.js +0 -0
  465. package/admin/src/hooks/useSettingsForm/init.js +0 -0
  466. package/admin/src/hooks/useSettingsForm/reducer.js +0 -0
  467. package/admin/src/hooks/useSettingsHeaderSearchContext/index.js +0 -0
  468. package/admin/src/hooks/useSettingsMenu/index.js +0 -0
  469. package/admin/src/hooks/useSettingsMenu/init.js +3 -1
  470. package/admin/src/hooks/useSettingsMenu/reducer.js +0 -0
  471. package/admin/src/hooks/useSettingsMenu/utils/customGlobalLinks.js +0 -0
  472. package/admin/src/hooks/useSettingsMenu/utils/defaultGlobalLinks.js +0 -0
  473. package/admin/src/hooks/useSettingsMenu/utils/formatLinks.js +0 -0
  474. package/admin/src/hooks/useSettingsMenu/utils/globalLinks.js +0 -0
  475. package/admin/src/i18n.js +0 -0
  476. package/admin/src/index.html +0 -0
  477. package/admin/src/permissions/customPermissions.js +0 -0
  478. package/admin/src/permissions/defaultPermissions.js +0 -0
  479. package/admin/src/permissions/index.js +0 -0
  480. package/admin/src/plugins.js +0 -0
  481. package/admin/src/public-path.js +0 -0
  482. package/admin/src/reducers.js +0 -0
  483. package/admin/src/themes/colors.js +6 -5
  484. package/admin/src/themes/fontWeights.js +0 -0
  485. package/admin/src/themes/index.js +0 -0
  486. package/admin/src/themes/sizes.js +1 -1
  487. package/admin/src/translations/ar.json +0 -0
  488. package/admin/src/translations/cs.json +0 -0
  489. package/admin/src/translations/de.json +0 -0
  490. package/admin/src/translations/dk.json +0 -0
  491. package/admin/src/translations/en.json +1 -0
  492. package/admin/src/translations/es.json +0 -0
  493. package/admin/src/translations/fr.json +0 -0
  494. package/admin/src/translations/he.json +0 -0
  495. package/admin/src/translations/id.json +0 -0
  496. package/admin/src/translations/index.js +0 -0
  497. package/admin/src/translations/it.json +0 -0
  498. package/admin/src/translations/ja.json +0 -0
  499. package/admin/src/translations/ko.json +0 -0
  500. package/admin/src/translations/ms.json +0 -0
  501. package/admin/src/translations/nl.json +0 -0
  502. package/admin/src/translations/no.json +0 -0
  503. package/admin/src/translations/pl.json +0 -0
  504. package/admin/src/translations/pt-BR.json +0 -0
  505. package/admin/src/translations/pt.json +0 -0
  506. package/admin/src/translations/ru.json +0 -0
  507. package/admin/src/translations/sk.json +0 -0
  508. package/admin/src/translations/sv.json +0 -0
  509. package/admin/src/translations/th.json +0 -0
  510. package/admin/src/translations/tr.json +0 -0
  511. package/admin/src/translations/uk.json +0 -0
  512. package/admin/src/translations/vi.json +0 -0
  513. package/admin/src/translations/zh-Hans.json +0 -0
  514. package/admin/src/translations/zh.json +0 -0
  515. package/admin/src/utils/ComponentApi.js +0 -0
  516. package/admin/src/utils/FieldApi.js +0 -0
  517. package/admin/src/utils/MiddlewareApi.js +0 -0
  518. package/admin/src/utils/Plugin.js +0 -0
  519. package/admin/src/utils/Strapi.js +0 -0
  520. package/admin/src/utils/basename.js +0 -0
  521. package/admin/src/utils/checkFormValidity.js +0 -0
  522. package/admin/src/utils/checkLatestStrapiVersion.js +0 -0
  523. package/admin/src/utils/checkStore.js +0 -0
  524. package/admin/src/utils/constants.js +0 -0
  525. package/admin/src/utils/formatAPIErrors.js +0 -0
  526. package/admin/src/utils/getAttributesToDisplay.js +0 -0
  527. package/admin/src/utils/getExistingActions.js +0 -0
  528. package/admin/src/utils/getRequestUrl.js +0 -0
  529. package/admin/src/utils/history.js +0 -0
  530. package/admin/src/utils/index.js +0 -0
  531. package/admin/src/utils/injectReducer.js +0 -0
  532. package/admin/src/utils/injectSaga.js +0 -0
  533. package/admin/src/utils/reducerInjectors.js +0 -0
  534. package/admin/src/utils/retrieveGlobalLinks.js +0 -0
  535. package/admin/src/utils/retrievePluginsMenu.js +0 -0
  536. package/admin/src/utils/sagaInjectors.js +0 -0
  537. package/admin/src/utils/sortLinks.js +0 -0
  538. package/admin/src/validations/users/edit.js +0 -0
  539. package/admin/src/validations/users/index.js +0 -0
  540. package/admin/src/validations/users/profile.js +0 -0
  541. package/admin/src/validations/users/roles.js +0 -0
  542. package/config/admin-actions.js +0 -0
  543. package/config/admin-conditions.js +0 -0
  544. package/config/email-templates/forgot-password.js +0 -0
  545. package/config/functions/bootstrap.js +0 -0
  546. package/config/functions/register.js +0 -0
  547. package/config/layout.js +0 -0
  548. package/config/migrations/permissions-fields-to-properties.js +0 -0
  549. package/config/policies/hasPermissions.js +0 -0
  550. package/config/policies/isAuthenticatedAdmin.js +0 -0
  551. package/config/routes.json +0 -0
  552. package/config/settings.js +0 -0
  553. package/controllers/Webhooks.js +0 -0
  554. package/controllers/admin.js +0 -0
  555. package/controllers/authenticated-user.js +0 -0
  556. package/controllers/authentication.js +93 -0
  557. package/controllers/formatters/conditions.js +0 -0
  558. package/controllers/formatters/format-actions-by-sections.js +0 -0
  559. package/controllers/formatters/index.js +0 -0
  560. package/controllers/permission.js +0 -0
  561. package/controllers/role.js +0 -0
  562. package/controllers/user.js +0 -0
  563. package/css/custom.css +9 -0
  564. package/doc/change-the-login-page-logo.md +0 -0
  565. package/doc/customize-menu.md +0 -0
  566. package/doc/disable-tracking.md +0 -0
  567. package/domain/action/index.js +0 -0
  568. package/domain/action/provider.js +0 -0
  569. package/domain/condition/index.js +0 -0
  570. package/domain/condition/provider.js +0 -0
  571. package/domain/permission/index.js +0 -0
  572. package/domain/role.js +0 -0
  573. package/domain/user.js +0 -0
  574. package/ee/LICENSE +0 -0
  575. package/ee/admin/components/ProviderButton/ProviderButtonStyles.js +1 -1
  576. package/ee/admin/components/ProviderButton/index.js +2 -2
  577. package/ee/admin/components/Roles/ConditionsModal/ConditionsSelect/MenuList/utils/constants.js +0 -0
  578. package/ee/admin/components/Roles/ContentTypeCollapse/Collapse/utils/constants.js +0 -0
  579. package/ee/admin/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/constants.js +0 -0
  580. package/ee/admin/components/Roles/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/utils/constants.js +0 -0
  581. package/ee/admin/components/Roles/GlobalActions/utils/constants.js +0 -0
  582. package/ee/admin/components/Roles/PluginsAndSettings/SubCategory/utils/constants.js +0 -0
  583. package/ee/admin/components/Roles/RoleForm/index.js +0 -0
  584. package/ee/admin/components/Users/MagicLink/index.js +0 -0
  585. package/ee/admin/components/Users/ModalCreateBody/utils/formDataModel.js +0 -0
  586. package/ee/admin/components/Users/ModalCreateBody/utils/roleSettingsForm.js +0 -0
  587. package/ee/admin/containers/App/utils/customRoutes.js +0 -0
  588. package/ee/admin/containers/AuthPage/components/Login/index.js +3 -3
  589. package/ee/admin/containers/AuthPage/components/Providers/index.js +2 -2
  590. package/ee/admin/containers/AuthPage/utils/forms.js +0 -0
  591. package/ee/admin/containers/AuthResponse/index.js +0 -0
  592. package/ee/admin/containers/Roles/CreatePage/index.js +2 -2
  593. package/ee/admin/containers/Roles/CreatePage/utils/schema.js +0 -0
  594. package/ee/admin/containers/Roles/ListPage/BaselineAlignment.js +0 -0
  595. package/ee/admin/containers/Roles/ListPage/CustomCheckbox.js +1 -1
  596. package/ee/admin/containers/Roles/ListPage/RoleRow.js +1 -1
  597. package/ee/admin/containers/Roles/ListPage/index.js +3 -3
  598. package/ee/admin/containers/Roles/ListPage/reducer.js +0 -0
  599. package/ee/admin/containers/Roles/ProtectedListPage/index.js +0 -0
  600. package/ee/admin/containers/SettingsPage/SingleSignOn/index.js +0 -0
  601. package/ee/admin/containers/SettingsPage/SingleSignOn/utils/form.js +0 -0
  602. package/ee/admin/containers/SettingsPage/SingleSignOn/utils/index.js +0 -0
  603. package/ee/admin/containers/SettingsPage/SingleSignOn/utils/schema.js +0 -0
  604. package/ee/admin/containers/SettingsPage/utils/customRoutes.js +0 -0
  605. package/ee/admin/hooks/index.js +0 -0
  606. package/ee/admin/hooks/useAuthProviders/index.js +0 -0
  607. package/ee/admin/hooks/useAuthProviders/reducer.js +0 -0
  608. package/ee/admin/hooks/useSettingsMenu/utils/customGlobalLinks.js +0 -0
  609. package/ee/admin/permissions/customPermissions.js +0 -0
  610. package/ee/config/admin-actions.js +0 -0
  611. package/ee/config/functions/bootstrap.js +0 -0
  612. package/ee/config/routes.json +0 -0
  613. package/ee/controllers/authentication/constants.js +0 -0
  614. package/ee/controllers/authentication/index.js +0 -0
  615. package/ee/controllers/authentication/middlewares.js +0 -0
  616. package/ee/controllers/authentication/utils.js +0 -0
  617. package/ee/controllers/authentication.js +0 -0
  618. package/ee/controllers/permission.js +0 -0
  619. package/ee/controllers/role.js +0 -0
  620. package/ee/controllers/user.js +0 -0
  621. package/ee/middlewares/features-routes/defaults.json +0 -0
  622. package/ee/middlewares/features-routes/index.js +0 -0
  623. package/ee/middlewares/features-routes/routes.js +0 -0
  624. package/ee/services/passport/provider-registry.js +0 -0
  625. package/ee/services/passport/sso.js +0 -0
  626. package/ee/services/passport.js +0 -0
  627. package/ee/services/role.js +0 -0
  628. package/ee/validation/authentication.js +0 -0
  629. package/ee/validation/permission.js +0 -0
  630. package/ee/validation/role.js +0 -0
  631. package/ee/validation/user.js +0 -0
  632. package/index.html +1 -1
  633. package/index.js +2 -1
  634. package/middlewares/auth/defaults.json +0 -0
  635. package/middlewares/auth/index.js +0 -0
  636. package/middlewares/features-routes/defaults.json +16 -0
  637. package/middlewares/features-routes/index.js +31 -0
  638. package/middlewares/features-routes/routes.js +54 -0
  639. package/models/Permission.js +0 -0
  640. package/models/Permission.settings.json +0 -0
  641. package/models/Role.js +0 -0
  642. package/models/Role.settings.json +0 -0
  643. package/models/User.js +0 -0
  644. package/models/User.settings.json +0 -0
  645. package/package.json +36 -31
  646. package/services/action.js +0 -0
  647. package/services/auth.js +0 -0
  648. package/services/condition.js +0 -0
  649. package/services/constants.js +0 -0
  650. package/services/content-type.js +0 -0
  651. package/services/metrics.js +0 -0
  652. package/services/passport/local-strategy.js +0 -0
  653. package/services/passport.js +0 -0
  654. package/services/permission/engine-hooks.js +0 -0
  655. package/services/permission/engine.js +0 -0
  656. package/services/permission/permissions-manager/index.js +0 -0
  657. package/services/permission/permissions-manager/query-builers.js +0 -0
  658. package/services/permission/queries.js +0 -0
  659. package/services/permission/sections-builder/builder.js +0 -0
  660. package/services/permission/sections-builder/handlers.js +0 -0
  661. package/services/permission/sections-builder/index.js +0 -0
  662. package/services/permission/sections-builder/section.js +0 -0
  663. package/services/permission/sections-builder/utils.js +0 -0
  664. package/services/permission.js +0 -0
  665. package/services/role.js +0 -0
  666. package/services/token.js +0 -0
  667. package/services/user.js +0 -0
  668. package/strapi-admin/node_modules/is-wsl/index.d.ts +15 -0
  669. package/strapi-admin/node_modules/is-wsl/index.js +31 -0
  670. package/strapi-admin/node_modules/is-wsl/license +9 -0
  671. package/strapi-admin/node_modules/is-wsl/package.json +77 -0
  672. package/strapi-admin/node_modules/is-wsl/readme.md +36 -0
  673. package/strapi-admin/node_modules/qs/.editorconfig +39 -0
  674. package/strapi-admin/node_modules/qs/.eslintignore +2 -0
  675. package/strapi-admin/node_modules/qs/.eslintrc +35 -0
  676. package/strapi-admin/node_modules/qs/.github/FUNDING.yml +12 -0
  677. package/strapi-admin/node_modules/qs/.nycrc +13 -0
  678. package/strapi-admin/node_modules/qs/CHANGELOG.md +372 -0
  679. package/strapi-admin/node_modules/qs/LICENSE.md +29 -0
  680. package/strapi-admin/node_modules/qs/README.md +611 -0
  681. package/strapi-admin/node_modules/qs/dist/qs.js +1903 -0
  682. package/strapi-admin/node_modules/qs/lib/formats.js +23 -0
  683. package/strapi-admin/node_modules/qs/lib/index.js +11 -0
  684. package/strapi-admin/node_modules/qs/lib/parse.js +263 -0
  685. package/strapi-admin/node_modules/qs/lib/stringify.js +290 -0
  686. package/strapi-admin/node_modules/qs/lib/utils.js +251 -0
  687. package/strapi-admin/node_modules/qs/package.json +100 -0
  688. package/strapi-admin/node_modules/qs/test/parse.js +781 -0
  689. package/strapi-admin/node_modules/qs/test/stringify.js +848 -0
  690. package/strapi-admin/node_modules/qs/test/utils.js +136 -0
  691. package/utils/index.js +0 -0
  692. package/validation/action-provider.js +0 -0
  693. package/validation/authentication/forgot-password.js +0 -0
  694. package/validation/authentication/index.js +0 -0
  695. package/validation/authentication/register.js +0 -0
  696. package/validation/authentication/reset-password.js +0 -0
  697. package/validation/common-functions/check-fields-are-correctly-nested.js +0 -0
  698. package/validation/common-functions/check-fields-dont-have-duplicates.js +0 -0
  699. package/validation/common-functions/index.js +0 -0
  700. package/validation/common-validators.js +0 -0
  701. package/validation/permission.js +0 -0
  702. package/validation/policies/hasPermissions.js +0 -0
  703. package/validation/role.js +0 -0
  704. package/validation/user.js +0 -0
  705. package/webpack.alias.js +6 -6
  706. package/webpack.config.js +5 -5
@@ -0,0 +1,781 @@
1
+ 'use strict';
2
+
3
+ var test = require('tape');
4
+ var qs = require('../');
5
+ var utils = require('../lib/utils');
6
+ var iconv = require('iconv-lite');
7
+ var SaferBuffer = require('safer-buffer').Buffer;
8
+
9
+ test('parse()', function (t) {
10
+ t.test('parses a simple string', function (st) {
11
+ st.deepEqual(qs.parse('0=foo'), { 0: 'foo' });
12
+ st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' });
13
+ st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } });
14
+ st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } });
15
+ st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } });
16
+ st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null });
17
+ st.deepEqual(qs.parse('foo'), { foo: '' });
18
+ st.deepEqual(qs.parse('foo='), { foo: '' });
19
+ st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' });
20
+ st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' });
21
+ st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' });
22
+ st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' });
23
+ st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' });
24
+ st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null });
25
+ st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' });
26
+ st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), {
27
+ cht: 'p3',
28
+ chd: 't:60,40',
29
+ chs: '250x100',
30
+ chl: 'Hello|World'
31
+ });
32
+ st.end();
33
+ });
34
+
35
+ t.test('arrayFormat: brackets allows only explicit arrays', function (st) {
36
+ st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
37
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
38
+ st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'brackets' }), { a: 'b,c' });
39
+ st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'brackets' }), { a: ['b', 'c'] });
40
+ st.end();
41
+ });
42
+
43
+ t.test('arrayFormat: indices allows only indexed arrays', function (st) {
44
+ st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
45
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
46
+ st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'indices' }), { a: 'b,c' });
47
+ st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'indices' }), { a: ['b', 'c'] });
48
+ st.end();
49
+ });
50
+
51
+ t.test('arrayFormat: comma allows only comma-separated arrays', function (st) {
52
+ st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
53
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
54
+ st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'comma' }), { a: 'b,c' });
55
+ st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'comma' }), { a: ['b', 'c'] });
56
+ st.end();
57
+ });
58
+
59
+ t.test('arrayFormat: repeat allows only repeated values', function (st) {
60
+ st.deepEqual(qs.parse('a[]=b&a[]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
61
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
62
+ st.deepEqual(qs.parse('a=b,c', { arrayFormat: 'repeat' }), { a: 'b,c' });
63
+ st.deepEqual(qs.parse('a=b&a=c', { arrayFormat: 'repeat' }), { a: ['b', 'c'] });
64
+ st.end();
65
+ });
66
+
67
+ t.test('allows enabling dot notation', function (st) {
68
+ st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' });
69
+ st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } });
70
+ st.end();
71
+ });
72
+
73
+ t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string');
74
+ t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string');
75
+ t.deepEqual(
76
+ qs.parse('a[b][c][d][e][f][g][h]=i'),
77
+ { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } },
78
+ 'defaults to a depth of 5'
79
+ );
80
+
81
+ t.test('only parses one level when depth = 1', function (st) {
82
+ st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } });
83
+ st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } });
84
+ st.end();
85
+ });
86
+
87
+ t.test('uses original key when depth = 0', function (st) {
88
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' });
89
+ st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: 0 }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' });
90
+ st.end();
91
+ });
92
+
93
+ t.test('uses original key when depth = false', function (st) {
94
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: false }), { 'a[0]': 'b', 'a[1]': 'c' });
95
+ st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: false }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' });
96
+ st.end();
97
+ });
98
+
99
+ t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array');
100
+
101
+ t.test('parses an explicit array', function (st) {
102
+ st.deepEqual(qs.parse('a[]=b'), { a: ['b'] });
103
+ st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] });
104
+ st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] });
105
+ st.end();
106
+ });
107
+
108
+ t.test('parses a mix of simple and explicit arrays', function (st) {
109
+ st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
110
+ st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
111
+ st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] });
112
+ st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] });
113
+
114
+ st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
115
+ st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
116
+ st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
117
+
118
+ st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
119
+ st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
120
+ st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
121
+
122
+ st.end();
123
+ });
124
+
125
+ t.test('parses a nested array', function (st) {
126
+ st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } });
127
+ st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } });
128
+ st.end();
129
+ });
130
+
131
+ t.test('allows to specify array indices', function (st) {
132
+ st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] });
133
+ st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] });
134
+ st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] });
135
+ st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } });
136
+ st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] });
137
+ st.end();
138
+ });
139
+
140
+ t.test('limits specific array indices to arrayLimit', function (st) {
141
+ st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] });
142
+ st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } });
143
+ st.end();
144
+ });
145
+
146
+ t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number');
147
+
148
+ t.test('supports encoded = signs', function (st) {
149
+ st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' });
150
+ st.end();
151
+ });
152
+
153
+ t.test('is ok with url encoded strings', function (st) {
154
+ st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } });
155
+ st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } });
156
+ st.end();
157
+ });
158
+
159
+ t.test('allows brackets in the value', function (st) {
160
+ st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' });
161
+ st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' });
162
+ st.end();
163
+ });
164
+
165
+ t.test('allows empty values', function (st) {
166
+ st.deepEqual(qs.parse(''), {});
167
+ st.deepEqual(qs.parse(null), {});
168
+ st.deepEqual(qs.parse(undefined), {});
169
+ st.end();
170
+ });
171
+
172
+ t.test('transforms arrays to objects', function (st) {
173
+ st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } });
174
+ st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } });
175
+ st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } });
176
+ st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } });
177
+ st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } });
178
+ st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
179
+
180
+ st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } });
181
+ st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } });
182
+ st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } });
183
+ st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } });
184
+ st.end();
185
+ });
186
+
187
+ t.test('transforms arrays to objects (dot notation)', function (st) {
188
+ st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } });
189
+ st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } });
190
+ st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } });
191
+ st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] });
192
+ st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] });
193
+ st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } });
194
+ st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } });
195
+ st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } });
196
+ st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } });
197
+ st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
198
+ st.end();
199
+ });
200
+
201
+ t.test('correctly prunes undefined values when converting an array to an object', function (st) {
202
+ st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } });
203
+ st.end();
204
+ });
205
+
206
+ t.test('supports malformed uri characters', function (st) {
207
+ st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null });
208
+ st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' });
209
+ st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' });
210
+ st.end();
211
+ });
212
+
213
+ t.test('doesn\'t produce empty keys', function (st) {
214
+ st.deepEqual(qs.parse('_r=1&'), { _r: '1' });
215
+ st.end();
216
+ });
217
+
218
+ t.test('cannot access Object prototype', function (st) {
219
+ qs.parse('constructor[prototype][bad]=bad');
220
+ qs.parse('bad[constructor][prototype][bad]=bad');
221
+ st.equal(typeof Object.prototype.bad, 'undefined');
222
+ st.end();
223
+ });
224
+
225
+ t.test('parses arrays of objects', function (st) {
226
+ st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
227
+ st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] });
228
+ st.end();
229
+ });
230
+
231
+ t.test('allows for empty strings in arrays', function (st) {
232
+ st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] });
233
+
234
+ st.deepEqual(
235
+ qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }),
236
+ { a: ['b', null, 'c', ''] },
237
+ 'with arrayLimit 20 + array indices: null then empty string works'
238
+ );
239
+ st.deepEqual(
240
+ qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }),
241
+ { a: ['b', null, 'c', ''] },
242
+ 'with arrayLimit 0 + array brackets: null then empty string works'
243
+ );
244
+
245
+ st.deepEqual(
246
+ qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }),
247
+ { a: ['b', '', 'c', null] },
248
+ 'with arrayLimit 20 + array indices: empty string then null works'
249
+ );
250
+ st.deepEqual(
251
+ qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }),
252
+ { a: ['b', '', 'c', null] },
253
+ 'with arrayLimit 0 + array brackets: empty string then null works'
254
+ );
255
+
256
+ st.deepEqual(
257
+ qs.parse('a[]=&a[]=b&a[]=c'),
258
+ { a: ['', 'b', 'c'] },
259
+ 'array brackets: empty strings work'
260
+ );
261
+ st.end();
262
+ });
263
+
264
+ t.test('compacts sparse arrays', function (st) {
265
+ st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] });
266
+ st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] });
267
+ st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] });
268
+ st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] });
269
+ st.end();
270
+ });
271
+
272
+ t.test('parses sparse arrays', function (st) {
273
+ /* eslint no-sparse-arrays: 0 */
274
+ st.deepEqual(qs.parse('a[4]=1&a[1]=2', { allowSparse: true }), { a: [, '2', , , '1'] });
275
+ st.deepEqual(qs.parse('a[1][b][2][c]=1', { allowSparse: true }), { a: [, { b: [, , { c: '1' }] }] });
276
+ st.deepEqual(qs.parse('a[1][2][3][c]=1', { allowSparse: true }), { a: [, [, , [, , , { c: '1' }]]] });
277
+ st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { allowSparse: true }), { a: [, [, , [, , , { c: [, '1'] }]]] });
278
+ st.end();
279
+ });
280
+
281
+ t.test('parses semi-parsed strings', function (st) {
282
+ st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } });
283
+ st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } });
284
+ st.end();
285
+ });
286
+
287
+ t.test('parses buffers correctly', function (st) {
288
+ var b = SaferBuffer.from('test');
289
+ st.deepEqual(qs.parse({ a: b }), { a: b });
290
+ st.end();
291
+ });
292
+
293
+ t.test('parses jquery-param strings', function (st) {
294
+ // readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8'
295
+ var encoded = 'filter%5B0%5D%5B%5D=int1&filter%5B0%5D%5B%5D=%3D&filter%5B0%5D%5B%5D=77&filter%5B%5D=and&filter%5B2%5D%5B%5D=int2&filter%5B2%5D%5B%5D=%3D&filter%5B2%5D%5B%5D=8';
296
+ var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] };
297
+ st.deepEqual(qs.parse(encoded), expected);
298
+ st.end();
299
+ });
300
+
301
+ t.test('continues parsing when no parent is found', function (st) {
302
+ st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' });
303
+ st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' });
304
+ st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' });
305
+ st.end();
306
+ });
307
+
308
+ t.test('does not error when parsing a very long array', function (st) {
309
+ var str = 'a[]=a';
310
+ while (Buffer.byteLength(str) < 128 * 1024) {
311
+ str = str + '&' + str;
312
+ }
313
+
314
+ st.doesNotThrow(function () {
315
+ qs.parse(str);
316
+ });
317
+
318
+ st.end();
319
+ });
320
+
321
+ t.test('should not throw when a native prototype has an enumerable property', function (st) {
322
+ Object.prototype.crash = '';
323
+ Array.prototype.crash = '';
324
+ st.doesNotThrow(qs.parse.bind(null, 'a=b'));
325
+ st.deepEqual(qs.parse('a=b'), { a: 'b' });
326
+ st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c'));
327
+ st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] });
328
+ delete Object.prototype.crash;
329
+ delete Array.prototype.crash;
330
+ st.end();
331
+ });
332
+
333
+ t.test('parses a string with an alternative string delimiter', function (st) {
334
+ st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' });
335
+ st.end();
336
+ });
337
+
338
+ t.test('parses a string with an alternative RegExp delimiter', function (st) {
339
+ st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' });
340
+ st.end();
341
+ });
342
+
343
+ t.test('does not use non-splittable objects as delimiters', function (st) {
344
+ st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' });
345
+ st.end();
346
+ });
347
+
348
+ t.test('allows overriding parameter limit', function (st) {
349
+ st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' });
350
+ st.end();
351
+ });
352
+
353
+ t.test('allows setting the parameter limit to Infinity', function (st) {
354
+ st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' });
355
+ st.end();
356
+ });
357
+
358
+ t.test('allows overriding array limit', function (st) {
359
+ st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } });
360
+ st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } });
361
+ st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } });
362
+ st.end();
363
+ });
364
+
365
+ t.test('allows disabling array parsing', function (st) {
366
+ var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false });
367
+ st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } });
368
+ st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array');
369
+
370
+ var emptyBrackets = qs.parse('a[]=b', { parseArrays: false });
371
+ st.deepEqual(emptyBrackets, { a: { 0: 'b' } });
372
+ st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array');
373
+
374
+ st.end();
375
+ });
376
+
377
+ t.test('allows for query string prefix', function (st) {
378
+ st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
379
+ st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
380
+ st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' });
381
+ st.end();
382
+ });
383
+
384
+ t.test('parses an object', function (st) {
385
+ var input = {
386
+ 'user[name]': { 'pop[bob]': 3 },
387
+ 'user[email]': null
388
+ };
389
+
390
+ var expected = {
391
+ user: {
392
+ name: { 'pop[bob]': 3 },
393
+ email: null
394
+ }
395
+ };
396
+
397
+ var result = qs.parse(input);
398
+
399
+ st.deepEqual(result, expected);
400
+ st.end();
401
+ });
402
+
403
+ t.test('parses string with comma as array divider', function (st) {
404
+ st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] });
405
+ st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } });
406
+ st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' });
407
+ st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' });
408
+ st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null });
409
+ st.end();
410
+ });
411
+
412
+ t.test('parses values with comma as array divider', function (st) {
413
+ st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: false }), { foo: 'bar,tee' });
414
+ st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: true }), { foo: ['bar', 'tee'] });
415
+ st.end();
416
+ });
417
+
418
+ t.test('use number decoder, parses string that has one number with comma option enabled', function (st) {
419
+ var decoder = function (str, defaultDecoder, charset, type) {
420
+ if (!isNaN(Number(str))) {
421
+ return parseFloat(str);
422
+ }
423
+ return defaultDecoder(str, defaultDecoder, charset, type);
424
+ };
425
+
426
+ st.deepEqual(qs.parse('foo=1', { comma: true, decoder: decoder }), { foo: 1 });
427
+ st.deepEqual(qs.parse('foo=0', { comma: true, decoder: decoder }), { foo: 0 });
428
+
429
+ st.end();
430
+ });
431
+
432
+ t.test('parses brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) {
433
+ st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] });
434
+ st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=', { comma: true }), { foo: [['1', '2', '3'], ''] });
435
+ st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] });
436
+ st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] });
437
+
438
+ st.end();
439
+ });
440
+
441
+ t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) {
442
+ st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' });
443
+ st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] });
444
+ st.deepEqual(qs.parse('foo=a%2C%20b,c%2C%20d', { comma: true }), { foo: ['a, b', 'c, d'] });
445
+
446
+ st.end();
447
+ });
448
+
449
+ t.test('parses an object in dot notation', function (st) {
450
+ var input = {
451
+ 'user.name': { 'pop[bob]': 3 },
452
+ 'user.email.': null
453
+ };
454
+
455
+ var expected = {
456
+ user: {
457
+ name: { 'pop[bob]': 3 },
458
+ email: null
459
+ }
460
+ };
461
+
462
+ var result = qs.parse(input, { allowDots: true });
463
+
464
+ st.deepEqual(result, expected);
465
+ st.end();
466
+ });
467
+
468
+ t.test('parses an object and not child values', function (st) {
469
+ var input = {
470
+ 'user[name]': { 'pop[bob]': { test: 3 } },
471
+ 'user[email]': null
472
+ };
473
+
474
+ var expected = {
475
+ user: {
476
+ name: { 'pop[bob]': { test: 3 } },
477
+ email: null
478
+ }
479
+ };
480
+
481
+ var result = qs.parse(input);
482
+
483
+ st.deepEqual(result, expected);
484
+ st.end();
485
+ });
486
+
487
+ t.test('does not blow up when Buffer global is missing', function (st) {
488
+ var tempBuffer = global.Buffer;
489
+ delete global.Buffer;
490
+ var result = qs.parse('a=b&c=d');
491
+ global.Buffer = tempBuffer;
492
+ st.deepEqual(result, { a: 'b', c: 'd' });
493
+ st.end();
494
+ });
495
+
496
+ t.test('does not crash when parsing circular references', function (st) {
497
+ var a = {};
498
+ a.b = a;
499
+
500
+ var parsed;
501
+
502
+ st.doesNotThrow(function () {
503
+ parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
504
+ });
505
+
506
+ st.equal('foo' in parsed, true, 'parsed has "foo" property');
507
+ st.equal('bar' in parsed.foo, true);
508
+ st.equal('baz' in parsed.foo, true);
509
+ st.equal(parsed.foo.bar, 'baz');
510
+ st.deepEqual(parsed.foo.baz, a);
511
+ st.end();
512
+ });
513
+
514
+ t.test('does not crash when parsing deep objects', function (st) {
515
+ var parsed;
516
+ var str = 'foo';
517
+
518
+ for (var i = 0; i < 5000; i++) {
519
+ str += '[p]';
520
+ }
521
+
522
+ str += '=bar';
523
+
524
+ st.doesNotThrow(function () {
525
+ parsed = qs.parse(str, { depth: 5000 });
526
+ });
527
+
528
+ st.equal('foo' in parsed, true, 'parsed has "foo" property');
529
+
530
+ var depth = 0;
531
+ var ref = parsed.foo;
532
+ while ((ref = ref.p)) {
533
+ depth += 1;
534
+ }
535
+
536
+ st.equal(depth, 5000, 'parsed is 5000 properties deep');
537
+
538
+ st.end();
539
+ });
540
+
541
+ t.test('parses null objects correctly', { skip: !Object.create }, function (st) {
542
+ var a = Object.create(null);
543
+ a.b = 'c';
544
+
545
+ st.deepEqual(qs.parse(a), { b: 'c' });
546
+ var result = qs.parse({ a: a });
547
+ st.equal('a' in result, true, 'result has "a" property');
548
+ st.deepEqual(result.a, a);
549
+ st.end();
550
+ });
551
+
552
+ t.test('parses dates correctly', function (st) {
553
+ var now = new Date();
554
+ st.deepEqual(qs.parse({ a: now }), { a: now });
555
+ st.end();
556
+ });
557
+
558
+ t.test('parses regular expressions correctly', function (st) {
559
+ var re = /^test$/;
560
+ st.deepEqual(qs.parse({ a: re }), { a: re });
561
+ st.end();
562
+ });
563
+
564
+ t.test('does not allow overwriting prototype properties', function (st) {
565
+ st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {});
566
+ st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {});
567
+
568
+ st.deepEqual(
569
+ qs.parse('toString', { allowPrototypes: false }),
570
+ {},
571
+ 'bare "toString" results in {}'
572
+ );
573
+
574
+ st.end();
575
+ });
576
+
577
+ t.test('can allow overwriting prototype properties', function (st) {
578
+ st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } });
579
+ st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' });
580
+
581
+ st.deepEqual(
582
+ qs.parse('toString', { allowPrototypes: true }),
583
+ { toString: '' },
584
+ 'bare "toString" results in { toString: "" }'
585
+ );
586
+
587
+ st.end();
588
+ });
589
+
590
+ t.test('params starting with a closing bracket', function (st) {
591
+ st.deepEqual(qs.parse(']=toString'), { ']': 'toString' });
592
+ st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' });
593
+ st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' });
594
+ st.end();
595
+ });
596
+
597
+ t.test('params starting with a starting bracket', function (st) {
598
+ st.deepEqual(qs.parse('[=toString'), { '[': 'toString' });
599
+ st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' });
600
+ st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' });
601
+ st.end();
602
+ });
603
+
604
+ t.test('add keys to objects', function (st) {
605
+ st.deepEqual(
606
+ qs.parse('a[b]=c&a=d'),
607
+ { a: { b: 'c', d: true } },
608
+ 'can add keys to objects'
609
+ );
610
+
611
+ st.deepEqual(
612
+ qs.parse('a[b]=c&a=toString'),
613
+ { a: { b: 'c' } },
614
+ 'can not overwrite prototype'
615
+ );
616
+
617
+ st.deepEqual(
618
+ qs.parse('a[b]=c&a=toString', { allowPrototypes: true }),
619
+ { a: { b: 'c', toString: true } },
620
+ 'can overwrite prototype with allowPrototypes true'
621
+ );
622
+
623
+ st.deepEqual(
624
+ qs.parse('a[b]=c&a=toString', { plainObjects: true }),
625
+ { __proto__: null, a: { __proto__: null, b: 'c', toString: true } },
626
+ 'can overwrite prototype with plainObjects true'
627
+ );
628
+
629
+ st.end();
630
+ });
631
+
632
+ t.test('can return null objects', { skip: !Object.create }, function (st) {
633
+ var expected = Object.create(null);
634
+ expected.a = Object.create(null);
635
+ expected.a.b = 'c';
636
+ expected.a.hasOwnProperty = 'd';
637
+ st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected);
638
+ st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null));
639
+ var expectedArray = Object.create(null);
640
+ expectedArray.a = Object.create(null);
641
+ expectedArray.a[0] = 'b';
642
+ expectedArray.a.c = 'd';
643
+ st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray);
644
+ st.end();
645
+ });
646
+
647
+ t.test('can parse with custom encoding', function (st) {
648
+ st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', {
649
+ decoder: function (str) {
650
+ var reg = /%([0-9A-F]{2})/ig;
651
+ var result = [];
652
+ var parts = reg.exec(str);
653
+ while (parts) {
654
+ result.push(parseInt(parts[1], 16));
655
+ parts = reg.exec(str);
656
+ }
657
+ return String(iconv.decode(SaferBuffer.from(result), 'shift_jis'));
658
+ }
659
+ }), { 県: '大阪府' });
660
+ st.end();
661
+ });
662
+
663
+ t.test('receives the default decoder as a second argument', function (st) {
664
+ st.plan(1);
665
+ qs.parse('a', {
666
+ decoder: function (str, defaultDecoder) {
667
+ st.equal(defaultDecoder, utils.decode);
668
+ }
669
+ });
670
+ st.end();
671
+ });
672
+
673
+ t.test('throws error with wrong decoder', function (st) {
674
+ st['throws'](function () {
675
+ qs.parse({}, { decoder: 'string' });
676
+ }, new TypeError('Decoder has to be a function.'));
677
+ st.end();
678
+ });
679
+
680
+ t.test('does not mutate the options argument', function (st) {
681
+ var options = {};
682
+ qs.parse('a[b]=true', options);
683
+ st.deepEqual(options, {});
684
+ st.end();
685
+ });
686
+
687
+ t.test('throws if an invalid charset is specified', function (st) {
688
+ st['throws'](function () {
689
+ qs.parse('a=b', { charset: 'foobar' });
690
+ }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'));
691
+ st.end();
692
+ });
693
+
694
+ t.test('parses an iso-8859-1 string if asked to', function (st) {
695
+ st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { '¢': '½' });
696
+ st.end();
697
+ });
698
+
699
+ var urlEncodedCheckmarkInUtf8 = '%E2%9C%93';
700
+ var urlEncodedOSlashInUtf8 = '%C3%B8';
701
+ var urlEncodedNumCheckmark = '%26%2310003%3B';
702
+ var urlEncodedNumSmiley = '%26%239786%3B';
703
+
704
+ t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) {
705
+ st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { ø: 'ø' });
706
+ st.end();
707
+ });
708
+
709
+ t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) {
710
+ st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'ø': 'ø' });
711
+ st.end();
712
+ });
713
+
714
+ t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) {
715
+ st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'ø' });
716
+ st.end();
717
+ });
718
+
719
+ t.test('should ignore an utf8 sentinel with an unknown value', function (st) {
720
+ st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' });
721
+ st.end();
722
+ });
723
+
724
+ t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) {
725
+ st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { ø: 'ø' });
726
+ st.end();
727
+ });
728
+
729
+ t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) {
730
+ st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'ø': 'ø' });
731
+ st.end();
732
+ });
733
+
734
+ t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) {
735
+ st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: '☺' });
736
+ st.end();
737
+ });
738
+
739
+ t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) {
740
+ st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, {
741
+ charset: 'iso-8859-1',
742
+ decoder: function (str, defaultDecoder, charset) {
743
+ return str ? defaultDecoder(str, defaultDecoder, charset) : null;
744
+ },
745
+ interpretNumericEntities: true
746
+ }), { foo: null, bar: '☺' });
747
+ st.end();
748
+ });
749
+
750
+ t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) {
751
+ st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '&#9786;' });
752
+ st.end();
753
+ });
754
+
755
+ t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) {
756
+ st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '&#9786;' });
757
+ st.end();
758
+ });
759
+
760
+ t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) {
761
+ st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' });
762
+ st.end();
763
+ });
764
+
765
+ t.test('allows for decoding keys and values differently', function (st) {
766
+ var decoder = function (str, defaultDecoder, charset, type) {
767
+ if (type === 'key') {
768
+ return defaultDecoder(str, defaultDecoder, charset, type).toLowerCase();
769
+ }
770
+ if (type === 'value') {
771
+ return defaultDecoder(str, defaultDecoder, charset, type).toUpperCase();
772
+ }
773
+ throw 'this should never happen! type: ' + type;
774
+ };
775
+
776
+ st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' });
777
+ st.end();
778
+ });
779
+
780
+ t.end();
781
+ });