@webiny/app 0.0.0-unstable.78f581c1d2 → 0.0.0-unstable.7be00a75a9

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 (389) hide show
  1. package/App.d.ts +25 -0
  2. package/App.js +82 -0
  3. package/App.js.map +1 -0
  4. package/AppContainer.d.ts +23 -0
  5. package/AppContainer.js +6 -0
  6. package/AppContainer.js.map +1 -0
  7. package/README.md +7 -15
  8. package/apollo-client/InMemoryCache.d.ts +3 -2
  9. package/apollo-client/InMemoryCache.js +16 -77
  10. package/apollo-client/InMemoryCache.js.map +1 -1
  11. package/apollo-client/IntrospectionFragmentMatcher.d.ts +11 -0
  12. package/apollo-client/IntrospectionFragmentMatcher.js +33 -0
  13. package/apollo-client/IntrospectionFragmentMatcher.js.map +1 -0
  14. package/components/Image.d.ts +2 -3
  15. package/components/Image.js +15 -41
  16. package/components/Image.js.map +1 -1
  17. package/components/index.d.ts +1 -2
  18. package/components/index.js +1 -21
  19. package/config/RouterConfig/Route.d.ts +29 -0
  20. package/config/RouterConfig/Route.js +28 -0
  21. package/config/RouterConfig/Route.js.map +1 -0
  22. package/config/RouterConfig.d.ts +31 -0
  23. package/config/RouterConfig.js +19 -0
  24. package/config/RouterConfig.js.map +1 -0
  25. package/config.d.ts +1 -1
  26. package/config.js +20 -29
  27. package/config.js.map +1 -1
  28. package/contexts/Ui/index.d.ts +4 -8
  29. package/contexts/Ui/index.js +27 -89
  30. package/contexts/Ui/index.js.map +1 -1
  31. package/core/Plugin.d.ts +8 -0
  32. package/core/Plugin.js +12 -0
  33. package/core/Plugin.js.map +1 -0
  34. package/core/Plugins.d.ts +15 -0
  35. package/core/Plugins.js +21 -0
  36. package/core/Plugins.js.map +1 -0
  37. package/core/Provider.d.ts +8 -0
  38. package/core/Provider.js +10 -0
  39. package/core/Provider.js.map +1 -0
  40. package/core/createProvider.d.ts +10 -0
  41. package/core/createProvider.js +6 -0
  42. package/core/createProvider.js.map +1 -0
  43. package/core/createProviderPlugin.d.ts +8 -0
  44. package/core/createProviderPlugin.js +12 -0
  45. package/core/createProviderPlugin.js.map +1 -0
  46. package/errors/AuthenticationErrorEvent.d.ts +9 -0
  47. package/errors/AuthenticationErrorEvent.js +13 -0
  48. package/errors/AuthenticationErrorEvent.js.map +1 -0
  49. package/errors/NetworkErrorEvent.d.ts +15 -0
  50. package/errors/NetworkErrorEvent.js +13 -0
  51. package/errors/NetworkErrorEvent.js.map +1 -0
  52. package/errors/abstractions.d.ts +12 -0
  53. package/errors/abstractions.js +6 -0
  54. package/errors/abstractions.js.map +1 -0
  55. package/errors/index.d.ts +6 -0
  56. package/errors/index.js +3 -0
  57. package/exports/admin/env-config.d.ts +2 -0
  58. package/exports/admin/env-config.js +2 -0
  59. package/exports/admin/graphql-client.d.ts +1 -0
  60. package/exports/admin/graphql-client.js +1 -0
  61. package/exports/admin/local-storage.d.ts +2 -0
  62. package/exports/admin/local-storage.js +2 -0
  63. package/exports/admin/router.d.ts +5 -0
  64. package/exports/admin/router.js +5 -0
  65. package/exports/admin/security.d.ts +1 -0
  66. package/exports/admin/security.js +1 -0
  67. package/exports/admin.d.ts +7 -0
  68. package/exports/admin.js +7 -0
  69. package/features/envConfig/EnvConfig.d.ts +7 -0
  70. package/features/envConfig/EnvConfig.js +16 -0
  71. package/features/envConfig/EnvConfig.js.map +1 -0
  72. package/features/envConfig/abstractions.d.ts +28 -0
  73. package/features/envConfig/abstractions.js +5 -0
  74. package/features/envConfig/abstractions.js.map +1 -0
  75. package/features/envConfig/feature.d.ts +17 -0
  76. package/features/envConfig/feature.js +15 -0
  77. package/features/envConfig/feature.js.map +1 -0
  78. package/features/envConfig/index.d.ts +1 -0
  79. package/features/envConfig/index.js +1 -0
  80. package/features/eventPublisher/EventPublisher.d.ts +8 -0
  81. package/features/eventPublisher/EventPublisher.js +19 -0
  82. package/features/eventPublisher/EventPublisher.js.map +1 -0
  83. package/features/eventPublisher/abstractions.d.ts +18 -0
  84. package/features/eventPublisher/abstractions.js +12 -0
  85. package/features/eventPublisher/abstractions.js.map +1 -0
  86. package/features/eventPublisher/feature.d.ts +3 -0
  87. package/features/eventPublisher/feature.js +17 -0
  88. package/features/eventPublisher/feature.js.map +1 -0
  89. package/features/eventPublisher/index.d.ts +3 -0
  90. package/features/eventPublisher/index.js +2 -0
  91. package/features/graphqlClient/AuthenticationErrorPublishing.d.ts +13 -0
  92. package/features/graphqlClient/AuthenticationErrorPublishing.js +35 -0
  93. package/features/graphqlClient/AuthenticationErrorPublishing.js.map +1 -0
  94. package/features/graphqlClient/BatchingGraphQLClient.d.ts +16 -0
  95. package/features/graphqlClient/BatchingGraphQLClient.js +118 -0
  96. package/features/graphqlClient/BatchingGraphQLClient.js.map +1 -0
  97. package/features/graphqlClient/FetchGraphQLClient.d.ts +7 -0
  98. package/features/graphqlClient/FetchGraphQLClient.js +51 -0
  99. package/features/graphqlClient/FetchGraphQLClient.js.map +1 -0
  100. package/features/graphqlClient/NetworkErrorPublishing.d.ts +14 -0
  101. package/features/graphqlClient/NetworkErrorPublishing.js +48 -0
  102. package/features/graphqlClient/NetworkErrorPublishing.js.map +1 -0
  103. package/features/graphqlClient/RequestValue.d.ts +21 -0
  104. package/features/graphqlClient/RequestValue.js +46 -0
  105. package/features/graphqlClient/RequestValue.js.map +1 -0
  106. package/features/graphqlClient/RetryGraphQLClient.d.ts +18 -0
  107. package/features/graphqlClient/RetryGraphQLClient.js +45 -0
  108. package/features/graphqlClient/RetryGraphQLClient.js.map +1 -0
  109. package/features/graphqlClient/__tests__/GraphQLClient.test.d.ts +1 -0
  110. package/features/graphqlClient/__tests__/GraphQLClient.test.js +397 -0
  111. package/features/graphqlClient/__tests__/GraphQLClient.test.js.map +1 -0
  112. package/features/graphqlClient/abstractions.d.ts +18 -0
  113. package/features/graphqlClient/abstractions.js +5 -0
  114. package/features/graphqlClient/abstractions.js.map +1 -0
  115. package/features/graphqlClient/feature.d.ts +6 -0
  116. package/features/graphqlClient/feature.js +25 -0
  117. package/features/graphqlClient/feature.js.map +1 -0
  118. package/features/graphqlClient/index.d.ts +1 -0
  119. package/features/graphqlClient/index.js +1 -0
  120. package/features/graphqlClient/types.d.ts +5 -0
  121. package/features/graphqlClient/types.js +0 -0
  122. package/features/localStorage/BrowserLocalStorageGateway.d.ts +9 -0
  123. package/features/localStorage/BrowserLocalStorageGateway.js +61 -0
  124. package/features/localStorage/BrowserLocalStorageGateway.js.map +1 -0
  125. package/features/localStorage/LocalStorage.d.ts +12 -0
  126. package/features/localStorage/LocalStorage.js +34 -0
  127. package/features/localStorage/LocalStorage.js.map +1 -0
  128. package/features/localStorage/LocalStorageRepository.d.ts +20 -0
  129. package/features/localStorage/LocalStorageRepository.js +82 -0
  130. package/features/localStorage/LocalStorageRepository.js.map +1 -0
  131. package/features/localStorage/abstractions.d.ts +48 -0
  132. package/features/localStorage/abstractions.js +8 -0
  133. package/features/localStorage/abstractions.js.map +1 -0
  134. package/features/localStorage/feature.d.ts +12 -0
  135. package/features/localStorage/feature.js +23 -0
  136. package/features/localStorage/feature.js.map +1 -0
  137. package/features/localStorage/index.d.ts +1 -0
  138. package/features/localStorage/index.js +1 -0
  139. package/features/mainGraphQLClient/MainGraphQLClient.d.ts +11 -0
  140. package/features/mainGraphQLClient/MainGraphQLClient.js +27 -0
  141. package/features/mainGraphQLClient/MainGraphQLClient.js.map +1 -0
  142. package/features/mainGraphQLClient/abstractions.d.ts +17 -0
  143. package/features/mainGraphQLClient/abstractions.js +5 -0
  144. package/features/mainGraphQLClient/abstractions.js.map +1 -0
  145. package/features/mainGraphQLClient/feature.d.ts +3 -0
  146. package/features/mainGraphQLClient/feature.js +17 -0
  147. package/features/mainGraphQLClient/feature.js.map +1 -0
  148. package/features/mainGraphQLClient/index.d.ts +1 -0
  149. package/features/mainGraphQLClient/index.js +1 -0
  150. package/features/router/HistoryRouterGateway.d.ts +22 -0
  151. package/features/router/HistoryRouterGateway.js +88 -0
  152. package/features/router/HistoryRouterGateway.js.map +1 -0
  153. package/features/router/HistoryRouterGateway.test.d.ts +1 -0
  154. package/features/router/HistoryRouterGateway.test.js +195 -0
  155. package/features/router/HistoryRouterGateway.test.js.map +1 -0
  156. package/features/router/Route.d.ts +19 -0
  157. package/features/router/Route.js +43 -0
  158. package/features/router/Route.js.map +1 -0
  159. package/features/router/RouteUrl.d.ts +85 -0
  160. package/features/router/RouteUrl.js +99 -0
  161. package/features/router/RouteUrl.js.map +1 -0
  162. package/features/router/Router.d.ts +45 -0
  163. package/features/router/Router.js +72 -0
  164. package/features/router/Router.js.map +1 -0
  165. package/features/router/RouterPresenter.d.ts +21 -0
  166. package/features/router/RouterPresenter.js +52 -0
  167. package/features/router/RouterPresenter.js.map +1 -0
  168. package/features/router/RouterRepository.d.ts +30 -0
  169. package/features/router/RouterRepository.js +117 -0
  170. package/features/router/RouterRepository.js.map +1 -0
  171. package/features/router/RouterRepository.test.d.ts +1 -0
  172. package/features/router/RouterRepository.test.js +138 -0
  173. package/features/router/RouterRepository.test.js.map +1 -0
  174. package/features/router/abstractions.d.ts +81 -0
  175. package/features/router/abstractions.js +7 -0
  176. package/features/router/abstractions.js.map +1 -0
  177. package/features/router/feature.d.ts +4 -0
  178. package/features/router/feature.js +19 -0
  179. package/features/router/feature.js.map +1 -0
  180. package/features/router/index.d.ts +2 -0
  181. package/features/router/index.js +1 -0
  182. package/helpers/InterfaceGenerator/date.d.ts +15 -0
  183. package/helpers/InterfaceGenerator/date.js +0 -0
  184. package/helpers/InterfaceGenerator/id.d.ts +23 -0
  185. package/helpers/InterfaceGenerator/id.js +0 -0
  186. package/helpers/InterfaceGenerator/identity.d.ts +10 -0
  187. package/helpers/InterfaceGenerator/identity.js +0 -0
  188. package/helpers/InterfaceGenerator/index.d.ts +5 -0
  189. package/helpers/InterfaceGenerator/index.js +0 -0
  190. package/helpers/InterfaceGenerator/numeric.d.ts +12 -0
  191. package/helpers/InterfaceGenerator/numeric.js +0 -0
  192. package/helpers/InterfaceGenerator/truthful.d.ts +7 -0
  193. package/helpers/InterfaceGenerator/truthful.js +0 -0
  194. package/hooks/useAutocomplete/index.d.ts +1 -1
  195. package/hooks/useAutocomplete/index.js +1 -13
  196. package/hooks/useAutocomplete/useAutocomplete.d.ts +1 -1
  197. package/hooks/useAutocomplete/useAutocomplete.js +15 -36
  198. package/hooks/useAutocomplete/useAutocomplete.js.map +1 -1
  199. package/hooks/useDataList/functions/getData.js +4 -15
  200. package/hooks/useDataList/functions/getData.js.map +1 -1
  201. package/hooks/useDataList/functions/getError.js +4 -15
  202. package/hooks/useDataList/functions/getError.js.map +1 -1
  203. package/hooks/useDataList/functions/getMeta.js +4 -15
  204. package/hooks/useDataList/functions/getMeta.js.map +1 -1
  205. package/hooks/useDataList/functions/index.d.ts +3 -3
  206. package/hooks/useDataList/functions/index.js +3 -31
  207. package/hooks/useDataList/functions/searchDataByKey.js +10 -26
  208. package/hooks/useDataList/functions/searchDataByKey.js.map +1 -1
  209. package/hooks/useDataList/index.d.ts +1 -1
  210. package/hooks/useDataList/index.js +1 -13
  211. package/hooks/useDataList/useDataList.d.ts +2 -3
  212. package/hooks/useDataList/useDataList.js +139 -205
  213. package/hooks/useDataList/useDataList.js.map +1 -1
  214. package/hooks/useDataList/utils/index.d.ts +1 -2
  215. package/hooks/useDataList/utils/index.js +1 -23
  216. package/hooks/useDataList/utils/prepareLoadListParams.d.ts +1 -2
  217. package/hooks/useDataList/utils/prepareLoadListParams.js +26 -45
  218. package/hooks/useDataList/utils/prepareLoadListParams.js.map +1 -1
  219. package/hooks/useHandler.js +14 -19
  220. package/hooks/useHandler.js.map +1 -1
  221. package/hooks/useHandlers.d.ts +3 -3
  222. package/hooks/useHandlers.js +19 -28
  223. package/hooks/useHandlers.js.map +1 -1
  224. package/hooks/useRegisterLegacyPlugin.d.ts +2 -0
  225. package/hooks/useRegisterLegacyPlugin.js +12 -0
  226. package/hooks/useRegisterLegacyPlugin.js.map +1 -0
  227. package/hooks/useUi.d.ts +1 -1
  228. package/hooks/useUi.js +5 -15
  229. package/hooks/useUi.js.map +1 -1
  230. package/i18n/i18n.js +11 -21
  231. package/i18n/i18n.js.map +1 -1
  232. package/i18n/index.d.ts +1 -1
  233. package/i18n/index.js +1 -15
  234. package/index.d.ts +25 -4
  235. package/index.js +23 -37
  236. package/package.json +38 -38
  237. package/plugins/AddQuerySelectionPlugin.d.ts +10 -3
  238. package/plugins/AddQuerySelectionPlugin.js +43 -128
  239. package/plugins/AddQuerySelectionPlugin.js.map +1 -1
  240. package/plugins/ApolloCacheObjectIdPlugin.js +15 -51
  241. package/plugins/ApolloCacheObjectIdPlugin.js.map +1 -1
  242. package/plugins/ApolloDynamicLink.d.ts +3 -2
  243. package/plugins/ApolloDynamicLink.js +24 -78
  244. package/plugins/ApolloDynamicLink.js.map +1 -1
  245. package/plugins/ApolloLinkPlugin.d.ts +1 -1
  246. package/plugins/ApolloLinkPlugin.js +21 -61
  247. package/plugins/ApolloLinkPlugin.js.map +1 -1
  248. package/plugins/ConsoleLinkPlugin.d.ts +1 -1
  249. package/plugins/ConsoleLinkPlugin.js +20 -59
  250. package/plugins/ConsoleLinkPlugin.js.map +1 -1
  251. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.d.ts +8 -13
  252. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js +47 -95
  253. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js.map +1 -1
  254. package/plugins/NetworkErrorLinkPlugin/GqlErrorOverlay.d.ts +14 -0
  255. package/plugins/NetworkErrorLinkPlugin/GqlErrorOverlay.js +27 -0
  256. package/plugins/NetworkErrorLinkPlugin/GqlErrorOverlay.js.map +1 -0
  257. package/plugins/NetworkErrorLinkPlugin/LocalAwsLambdaTimeoutMessage.d.ts +2 -0
  258. package/plugins/NetworkErrorLinkPlugin/LocalAwsLambdaTimeoutMessage.js +23 -0
  259. package/plugins/NetworkErrorLinkPlugin/LocalAwsLambdaTimeoutMessage.js.map +1 -0
  260. package/plugins/NetworkErrorLinkPlugin/StyledComponents.d.ts +8 -5
  261. package/plugins/NetworkErrorLinkPlugin/StyledComponents.js +68 -20
  262. package/plugins/NetworkErrorLinkPlugin/StyledComponents.js.map +1 -1
  263. package/plugins/NetworkErrorLinkPlugin/Typography.d.ts +8 -0
  264. package/plugins/NetworkErrorLinkPlugin/Typography.js +13 -0
  265. package/plugins/NetworkErrorLinkPlugin/Typography.js.map +1 -0
  266. package/plugins/NetworkErrorLinkPlugin/assets/close_24px.js +19 -0
  267. package/plugins/NetworkErrorLinkPlugin/assets/close_24px.js.map +1 -0
  268. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.d.ts +3 -3
  269. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js +13 -36
  270. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js.map +1 -1
  271. package/plugins/NetworkErrorLinkPlugin.d.ts +4 -1
  272. package/plugins/NetworkErrorLinkPlugin.js +51 -63
  273. package/plugins/NetworkErrorLinkPlugin.js.map +1 -1
  274. package/plugins/OmitTypenameLinkPlugin.d.ts +1 -1
  275. package/plugins/OmitTypenameLinkPlugin.js +12 -51
  276. package/plugins/OmitTypenameLinkPlugin.js.map +1 -1
  277. package/plugins/TenantHeaderLinkPlugin.d.ts +3 -8
  278. package/plugins/TenantHeaderLinkPlugin.js +25 -82
  279. package/plugins/TenantHeaderLinkPlugin.js.map +1 -1
  280. package/plugins/components/Image.d.ts +6 -0
  281. package/plugins/components/Image.js +12 -0
  282. package/plugins/components/Image.js.map +1 -0
  283. package/plugins/image.d.ts +1 -1
  284. package/plugins/image.js +97 -175
  285. package/plugins/image.js.map +1 -1
  286. package/plugins/index.d.ts +5 -5
  287. package/plugins/index.js +38 -106
  288. package/plugins/index.js.map +1 -1
  289. package/presentation/envConfig/useEnvConfig.d.ts +6 -0
  290. package/presentation/envConfig/useEnvConfig.js +9 -0
  291. package/presentation/envConfig/useEnvConfig.js.map +1 -0
  292. package/presentation/localStorage/index.d.ts +3 -0
  293. package/presentation/localStorage/index.js +3 -0
  294. package/presentation/localStorage/useLocalStorage.d.ts +6 -0
  295. package/presentation/localStorage/useLocalStorage.js +15 -0
  296. package/presentation/localStorage/useLocalStorage.js.map +1 -0
  297. package/presentation/localStorage/useLocalStorageValue.d.ts +1 -0
  298. package/presentation/localStorage/useLocalStorageValue.js +22 -0
  299. package/presentation/localStorage/useLocalStorageValue.js.map +1 -0
  300. package/presentation/localStorage/useLocalStorageValues.d.ts +5 -0
  301. package/presentation/localStorage/useLocalStorageValues.js +32 -0
  302. package/presentation/localStorage/useLocalStorageValues.js.map +1 -0
  303. package/presentation/router/RouteElementRegistry.d.ts +14 -0
  304. package/presentation/router/RouteElementRegistry.js +29 -0
  305. package/presentation/router/RouteElementRegistry.js.map +1 -0
  306. package/presentation/router/abstractions.d.ts +13 -0
  307. package/presentation/router/abstractions.js +5 -0
  308. package/presentation/router/abstractions.js.map +1 -0
  309. package/presentation/router/components/Redirect.d.ts +14 -0
  310. package/presentation/router/components/Redirect.js +13 -0
  311. package/presentation/router/components/Redirect.js.map +1 -0
  312. package/presentation/router/components/RouteContent.d.ts +2 -0
  313. package/presentation/router/components/RouteContent.js +20 -0
  314. package/presentation/router/components/RouteContent.js.map +1 -0
  315. package/presentation/router/components/RouteLink.d.ts +50 -0
  316. package/presentation/router/components/RouteLink.js +17 -0
  317. package/presentation/router/components/RouteLink.js.map +1 -0
  318. package/presentation/router/components/SimpleLink.d.ts +44 -0
  319. package/presentation/router/components/SimpleLink.js +24 -0
  320. package/presentation/router/components/SimpleLink.js.map +1 -0
  321. package/presentation/router/hooks/useRoute.d.ts +6 -0
  322. package/presentation/router/hooks/useRoute.js +22 -0
  323. package/presentation/router/hooks/useRoute.js.map +1 -0
  324. package/presentation/router/hooks/useRouter.d.ts +11 -0
  325. package/presentation/router/hooks/useRouter.js +29 -0
  326. package/presentation/router/hooks/useRouter.js.map +1 -0
  327. package/presentation/router/index.d.ts +4 -0
  328. package/presentation/router/index.js +3 -0
  329. package/presentation/router/types.d.ts +5 -0
  330. package/presentation/router/types.js +0 -0
  331. package/renderApp.d.ts +2 -0
  332. package/renderApp.js +10 -0
  333. package/renderApp.js.map +1 -0
  334. package/router.d.ts +5 -0
  335. package/router.js +5 -0
  336. package/rslib-runtime.js +14 -0
  337. package/rslib-runtime.js.map +1 -0
  338. package/shared/di/DiContainerProvider.d.ts +8 -0
  339. package/shared/di/DiContainerProvider.js +13 -0
  340. package/shared/di/DiContainerProvider.js.map +1 -0
  341. package/shared/di/createFeature.d.ts +11 -0
  342. package/shared/di/createFeature.js +10 -0
  343. package/shared/di/createFeature.js.map +1 -0
  344. package/shared/di/useFeature.d.ts +2 -0
  345. package/shared/di/useFeature.js +12 -0
  346. package/shared/di/useFeature.js.map +1 -0
  347. package/static/svg/close_24px.33adaadc.svg +1 -0
  348. package/types.d.ts +30 -30
  349. package/types.js +0 -13
  350. package/utils/createGenericContext.d.ts +13 -0
  351. package/utils/createGenericContext.js +21 -0
  352. package/utils/createGenericContext.js.map +1 -0
  353. package/utils/createHashing.d.ts +2 -0
  354. package/utils/createHashing.js +15 -0
  355. package/utils/createHashing.js.map +1 -0
  356. package/utils/index.d.ts +2 -0
  357. package/utils/index.js +2 -0
  358. package/utils/legacyPluginToReactComponent.d.ts +7 -0
  359. package/utils/legacyPluginToReactComponent.js +15 -0
  360. package/utils/legacyPluginToReactComponent.js.map +1 -0
  361. package/components/Routes.d.ts +0 -2
  362. package/components/Routes.js +0 -49
  363. package/components/Routes.js.map +0 -1
  364. package/components/View.d.ts +0 -8
  365. package/components/View.js +0 -41
  366. package/components/View.js.map +0 -1
  367. package/components/index.js.map +0 -1
  368. package/hooks/useAutocomplete/index.js.map +0 -1
  369. package/hooks/useDataList/functions/index.js.map +0 -1
  370. package/hooks/useDataList/index.js.map +0 -1
  371. package/hooks/useDataList/utils/index.js.map +0 -1
  372. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.d.ts +0 -14
  373. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js +0 -31
  374. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js.map +0 -1
  375. package/hooks/useDataList/utils/types.d.ts +0 -34
  376. package/hooks/useDataList/utils/types.js +0 -5
  377. package/hooks/useDataList/utils/types.js.map +0 -1
  378. package/i18n/index.js.map +0 -1
  379. package/index.js.map +0 -1
  380. package/plugins/LocaleHeaderLinkPlugin.d.ts +0 -15
  381. package/plugins/LocaleHeaderLinkPlugin.js +0 -77
  382. package/plugins/LocaleHeaderLinkPlugin.js.map +0 -1
  383. package/plugins/RoutePlugin.d.ts +0 -12
  384. package/plugins/RoutePlugin.js +0 -53
  385. package/plugins/RoutePlugin.js.map +0 -1
  386. package/plugins/ViewPlugin.d.ts +0 -14
  387. package/plugins/ViewPlugin.js +0 -58
  388. package/plugins/ViewPlugin.js.map +0 -1
  389. package/types.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { Route } from "./Route.js";
2
+ import { RouterRepository, RouterPresenter as Abstraction, type RouteTransitionGuardConfig, type GuardDisposer } from "./abstractions.js";
3
+ declare class RouterPresenterImpl implements Abstraction.Interface {
4
+ private routerRepository;
5
+ constructor(routerRepository: RouterRepository.Interface);
6
+ get vm(): {
7
+ currentRoute: import("./abstractions.js").MatchedRoute<Record<string, any>> | undefined;
8
+ };
9
+ bootstrap: (routes: Route[]) => void;
10
+ goToRoute: (route: any, params?: any) => void;
11
+ setRouteParams: (cb: any) => void;
12
+ getLink: (route: any, params?: any) => string;
13
+ addTransitionGuard: (config: RouteTransitionGuardConfig) => GuardDisposer;
14
+ isTransitionBlocked: () => boolean;
15
+ unblockTransition: () => void;
16
+ confirmTransition: () => void;
17
+ cancelTransition: () => void;
18
+ destroy: () => void;
19
+ }
20
+ export declare const RouterPresenter: import("@webiny/di").Implementation<typeof RouterPresenterImpl>;
21
+ export {};
@@ -0,0 +1,52 @@
1
+ import { makeAutoObservable, toJS } from "mobx";
2
+ import { createImplementation } from "@webiny/di";
3
+ import { RouterPresenter, RouterRepository } from "./abstractions.js";
4
+ class RouterPresenterImpl {
5
+ constructor(routerRepository){
6
+ this.bootstrap = (routes)=>{
7
+ this.routerRepository.registerRoutes(routes);
8
+ };
9
+ this.goToRoute = (route, params)=>{
10
+ this.routerRepository.goToRoute(route, params);
11
+ };
12
+ this.setRouteParams = (cb)=>{
13
+ const currentRoute = this.routerRepository.getCurrentRoute();
14
+ if (!currentRoute) return;
15
+ const matchedRoute = this.routerRepository.getMatchedRoute();
16
+ const newParams = cb(matchedRoute?.params ?? {});
17
+ this.goToRoute(currentRoute, newParams);
18
+ };
19
+ this.getLink = (route, params)=>this.routerRepository.getLink(route, params);
20
+ this.addTransitionGuard = (config)=>this.routerRepository.addGuard(config);
21
+ this.isTransitionBlocked = ()=>this.routerRepository.isBlocked();
22
+ this.unblockTransition = ()=>{
23
+ this.routerRepository.unblock();
24
+ };
25
+ this.confirmTransition = ()=>{
26
+ this.routerRepository.confirmTransition();
27
+ };
28
+ this.cancelTransition = ()=>{
29
+ this.routerRepository.cancelTransition();
30
+ };
31
+ this.destroy = ()=>{
32
+ this.routerRepository.destroy();
33
+ };
34
+ this.routerRepository = routerRepository;
35
+ makeAutoObservable(this);
36
+ }
37
+ get vm() {
38
+ return {
39
+ currentRoute: toJS(this.routerRepository.getMatchedRoute())
40
+ };
41
+ }
42
+ }
43
+ const RouterPresenter_RouterPresenter = createImplementation({
44
+ abstraction: RouterPresenter,
45
+ implementation: RouterPresenterImpl,
46
+ dependencies: [
47
+ RouterRepository
48
+ ]
49
+ });
50
+ export { RouterPresenter_RouterPresenter as RouterPresenter };
51
+
52
+ //# sourceMappingURL=RouterPresenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/router/RouterPresenter.js","sources":["../../../src/features/router/RouterPresenter.ts"],"sourcesContent":["import { makeAutoObservable, toJS } from \"mobx\";\nimport { createImplementation } from \"@webiny/di\";\nimport { Route } from \"./Route.js\";\nimport {\n RouterRepository,\n RouterPresenter as Abstraction,\n type RouteTransitionGuardConfig,\n type GuardDisposer\n} from \"./abstractions.js\";\n\nclass RouterPresenterImpl implements Abstraction.Interface {\n private routerRepository: RouterRepository.Interface;\n\n constructor(routerRepository: RouterRepository.Interface) {\n this.routerRepository = routerRepository;\n\n makeAutoObservable(this);\n }\n\n get vm() {\n return {\n currentRoute: toJS(this.routerRepository.getMatchedRoute())\n };\n }\n\n bootstrap = (routes: Route[]) => {\n this.routerRepository.registerRoutes(routes);\n };\n\n goToRoute = (route: any, params?: any) => {\n this.routerRepository.goToRoute(route, params);\n };\n\n setRouteParams = (cb: any) => {\n const currentRoute = this.routerRepository.getCurrentRoute();\n if (!currentRoute) {\n return;\n }\n\n const matchedRoute = this.routerRepository.getMatchedRoute();\n const newParams = cb(matchedRoute?.params ?? {});\n this.goToRoute(currentRoute, newParams);\n };\n\n getLink = (route: any, params?: any) => {\n return this.routerRepository.getLink(route, params);\n };\n\n addTransitionGuard = (config: RouteTransitionGuardConfig): GuardDisposer => {\n return this.routerRepository.addGuard(config);\n };\n\n isTransitionBlocked = (): boolean => {\n return this.routerRepository.isBlocked();\n };\n\n unblockTransition = (): void => {\n this.routerRepository.unblock();\n };\n\n confirmTransition = (): void => {\n this.routerRepository.confirmTransition();\n };\n\n cancelTransition = (): void => {\n this.routerRepository.cancelTransition();\n };\n\n destroy = () => {\n this.routerRepository.destroy();\n };\n}\n\nexport const RouterPresenter = createImplementation({\n abstraction: Abstraction,\n implementation: RouterPresenterImpl,\n dependencies: [RouterRepository]\n});\n"],"names":["RouterPresenterImpl","routerRepository","routes","route","params","cb","currentRoute","matchedRoute","newParams","config","makeAutoObservable","toJS","RouterPresenter","createImplementation","Abstraction","RouterRepository"],"mappings":";;;AAUA,MAAMA;IAGF,YAAYC,gBAA4C,CAAE;aAY1D,SAAS,GAAG,CAACC;YACT,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAACA;QACzC;aAEA,SAAS,GAAG,CAACC,OAAYC;YACrB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAACD,OAAOC;QAC3C;aAEA,cAAc,GAAG,CAACC;YACd,MAAMC,eAAe,IAAI,CAAC,gBAAgB,CAAC,eAAe;YAC1D,IAAI,CAACA,cACD;YAGJ,MAAMC,eAAe,IAAI,CAAC,gBAAgB,CAAC,eAAe;YAC1D,MAAMC,YAAYH,GAAGE,cAAc,UAAU,CAAC;YAC9C,IAAI,CAAC,SAAS,CAACD,cAAcE;QACjC;aAEA,OAAO,GAAG,CAACL,OAAYC,SACZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAACD,OAAOC;aAGhD,kBAAkB,GAAG,CAACK,SACX,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAACA;aAG1C,mBAAmB,GAAG,IACX,IAAI,CAAC,gBAAgB,CAAC,SAAS;aAG1C,iBAAiB,GAAG;YAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO;QACjC;aAEA,iBAAiB,GAAG;YAChB,IAAI,CAAC,gBAAgB,CAAC,iBAAiB;QAC3C;aAEA,gBAAgB,GAAG;YACf,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;QAC1C;aAEA,OAAO,GAAG;YACN,IAAI,CAAC,gBAAgB,CAAC,OAAO;QACjC;QAxDI,IAAI,CAAC,gBAAgB,GAAGR;QAExBS,mBAAmB,IAAI;IAC3B;IAEA,IAAI,KAAK;QACL,OAAO;YACH,cAAcC,KAAK,IAAI,CAAC,gBAAgB,CAAC,eAAe;QAC5D;IACJ;AAgDJ;AAEO,MAAMC,kCAAkBC,qBAAqB;IAChD,aAAaC;IACb,gBAAgBd;IAChB,cAAc;QAACe;KAAiB;AACpC"}
@@ -0,0 +1,30 @@
1
+ import type { MatchedRoute, RouteTransitionGuardConfig, GuardDisposer } from "./abstractions.js";
2
+ import * as Abstractions from "./abstractions.js";
3
+ import { Route, RouteParamsDefinition, RouteParamsInfer } from "./Route.js";
4
+ declare class RouterRepositoryImpl implements Abstractions.RouterRepository.Interface {
5
+ private gateway;
6
+ private currentRoute;
7
+ private routes;
8
+ private pendingTransition;
9
+ private forceUnblocked;
10
+ private guardDisposers;
11
+ constructor(gateway: Abstractions.RouterGateway.Interface);
12
+ getMatchedRoute(): MatchedRoute<Record<string, any>> | undefined;
13
+ getCurrentRoute(): Route<any> | undefined;
14
+ registerRoutes: (routes: Route[]) => void;
15
+ getLink<TParams extends RouteParamsDefinition | undefined>(route: Route<TParams>, params?: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined): string;
16
+ goToRoute<TParams extends RouteParamsDefinition | undefined>(route: Route<TParams>, params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined): void;
17
+ addGuard(config: RouteTransitionGuardConfig): GuardDisposer;
18
+ isBlocked(): boolean;
19
+ unblock(): void;
20
+ confirmTransition(): void;
21
+ cancelTransition(): void;
22
+ destroy(): void;
23
+ private routeWithAction;
24
+ private transitionToRoute;
25
+ private getRouteByName;
26
+ }
27
+ export declare const RouterRepository: typeof RouterRepositoryImpl & {
28
+ __abstraction: import("@webiny/di").Abstraction<Abstractions.IRouterRepository>;
29
+ };
30
+ export {};
@@ -0,0 +1,117 @@
1
+ import { makeAutoObservable, runInAction } from "mobx";
2
+ import { RouteUrl } from "./RouteUrl.js";
3
+ import * as __rspack_external__abstractions_js_decaaf32 from "./abstractions.js";
4
+ const INIT_ROUTE = {
5
+ name: "__init__",
6
+ path: "",
7
+ pathname: "",
8
+ params: {}
9
+ };
10
+ class RouterRepositoryImpl {
11
+ constructor(gateway){
12
+ this.currentRoute = INIT_ROUTE;
13
+ this.routes = [];
14
+ this.forceUnblocked = false;
15
+ this.guardDisposers = new Map();
16
+ this.registerRoutes = (routes)=>{
17
+ this.routes = routes;
18
+ const routesWithAction = routes.map(this.routeWithAction);
19
+ this.gateway.setRoutes(routesWithAction);
20
+ };
21
+ this.routeWithAction = (route)=>({
22
+ name: route.name,
23
+ path: route.path,
24
+ onMatch: this.transitionToRoute.bind(this)
25
+ });
26
+ this.gateway = gateway;
27
+ makeAutoObservable(this, {
28
+ pendingTransition: false,
29
+ forceUnblocked: false
30
+ });
31
+ }
32
+ getMatchedRoute() {
33
+ return this.currentRoute.name !== INIT_ROUTE.name ? this.currentRoute : void 0;
34
+ }
35
+ getCurrentRoute() {
36
+ return this.routes.find((route)=>route.name === this.currentRoute.name);
37
+ }
38
+ getLink(route, params) {
39
+ return RouteUrl.fromPattern(route.path, params);
40
+ }
41
+ goToRoute(route, params) {
42
+ this.gateway.goToRoute(route.name, params);
43
+ }
44
+ addGuard(config) {
45
+ const gatewayGuard = {
46
+ guard: ()=>{
47
+ if (this.forceUnblocked) {
48
+ this.forceUnblocked = false;
49
+ return false;
50
+ }
51
+ return config.guard();
52
+ },
53
+ onBlocked: (controller)=>{
54
+ this.pendingTransition = controller;
55
+ config.onBlocked(controller);
56
+ }
57
+ };
58
+ const disposeGatewayGuard = this.gateway.addGuard(gatewayGuard);
59
+ const dispose = ()=>{
60
+ this.guardDisposers.delete(config);
61
+ disposeGatewayGuard();
62
+ };
63
+ this.guardDisposers.set(config, dispose);
64
+ return dispose;
65
+ }
66
+ isBlocked() {
67
+ return void 0 !== this.pendingTransition;
68
+ }
69
+ unblock() {
70
+ this.forceUnblocked = true;
71
+ if (this.pendingTransition) {
72
+ this.forceUnblocked = false;
73
+ const tx = this.pendingTransition;
74
+ this.pendingTransition = void 0;
75
+ tx.continue();
76
+ } else setTimeout(()=>{
77
+ this.forceUnblocked = false;
78
+ }, 0);
79
+ }
80
+ confirmTransition() {
81
+ const tx = this.pendingTransition;
82
+ this.pendingTransition = void 0;
83
+ if (tx) tx.continue();
84
+ }
85
+ cancelTransition() {
86
+ if (this.pendingTransition) {
87
+ this.pendingTransition.cancel();
88
+ this.pendingTransition = void 0;
89
+ }
90
+ }
91
+ destroy() {
92
+ this.gateway.destroy();
93
+ }
94
+ async transitionToRoute(matchedRoute) {
95
+ const route = this.getRouteByName(matchedRoute.name);
96
+ if (!route) return;
97
+ const params = "function" == typeof route.params?.parse ? route.params.parse(matchedRoute.params) : matchedRoute.params;
98
+ runInAction(()=>{
99
+ Object.assign(this.currentRoute, {
100
+ ...matchedRoute,
101
+ params
102
+ });
103
+ });
104
+ }
105
+ getRouteByName(name) {
106
+ return this.routes.find((existingRoute)=>existingRoute.name === name);
107
+ }
108
+ }
109
+ const RouterRepository = __rspack_external__abstractions_js_decaaf32.RouterRepository.createImplementation({
110
+ implementation: RouterRepositoryImpl,
111
+ dependencies: [
112
+ __rspack_external__abstractions_js_decaaf32.RouterGateway
113
+ ]
114
+ });
115
+ export { RouterRepository };
116
+
117
+ //# sourceMappingURL=RouterRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/router/RouterRepository.js","sources":["../../../src/features/router/RouterRepository.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport type {\n MatchedRoute,\n RouteDefinition,\n RouteTransitionGuardConfig,\n GuardDisposer,\n TransitionController\n} from \"./abstractions.js\";\nimport * as Abstractions from \"./abstractions.js\";\nimport { Route, RouteParamsDefinition, RouteParamsInfer } from \"./Route.js\";\nimport { RouteUrl } from \"./RouteUrl.js\";\n\nconst INIT_ROUTE = { name: \"__init__\", path: \"\", pathname: \"\", params: {} };\n\nclass RouterRepositoryImpl implements Abstractions.RouterRepository.Interface {\n private gateway: Abstractions.RouterGateway.Interface;\n private currentRoute: MatchedRoute = INIT_ROUTE;\n private routes: Route<any>[] = [];\n private pendingTransition: TransitionController | undefined;\n private forceUnblocked = false;\n private guardDisposers = new Map<RouteTransitionGuardConfig, GuardDisposer>();\n\n constructor(gateway: Abstractions.RouterGateway.Interface) {\n this.gateway = gateway;\n\n makeAutoObservable(this, {\n pendingTransition: false,\n forceUnblocked: false\n } as any);\n }\n\n getMatchedRoute() {\n return this.currentRoute.name !== INIT_ROUTE.name ? this.currentRoute : undefined;\n }\n\n getCurrentRoute(): Route<any> | undefined {\n return this.routes.find(route => route.name === this.currentRoute.name);\n }\n\n registerRoutes = (routes: Route[]) => {\n this.routes = routes;\n const routesWithAction = routes.map<RouteDefinition>(this.routeWithAction);\n\n this.gateway.setRoutes(routesWithAction);\n };\n\n getLink<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params?: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): string {\n return RouteUrl.fromPattern(route.path, params);\n }\n\n goToRoute<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): void {\n this.gateway.goToRoute(route.name, params);\n }\n\n addGuard(config: RouteTransitionGuardConfig): GuardDisposer {\n const gatewayGuard: RouteTransitionGuardConfig = {\n guard: () => {\n if (this.forceUnblocked) {\n this.forceUnblocked = false;\n return false;\n }\n return config.guard();\n },\n onBlocked: (controller: TransitionController) => {\n this.pendingTransition = controller;\n config.onBlocked(controller);\n }\n };\n\n const disposeGatewayGuard = this.gateway.addGuard(gatewayGuard);\n\n const dispose = () => {\n this.guardDisposers.delete(config);\n disposeGatewayGuard();\n };\n\n this.guardDisposers.set(config, dispose);\n return dispose;\n }\n\n isBlocked(): boolean {\n return this.pendingTransition !== undefined;\n }\n\n unblock(): void {\n this.forceUnblocked = true;\n if (this.pendingTransition) {\n this.forceUnblocked = false;\n const tx = this.pendingTransition;\n this.pendingTransition = undefined;\n tx.continue();\n } else {\n // No pending transition — expire the flag after the current\n // call stack so it only covers synchronous navigations that\n // follow immediately (e.g. router.goToRoute on the next line).\n setTimeout(() => {\n this.forceUnblocked = false;\n }, 0);\n }\n }\n\n confirmTransition(): void {\n const tx = this.pendingTransition;\n this.pendingTransition = undefined;\n if (tx) {\n tx.continue();\n }\n }\n\n cancelTransition(): void {\n if (this.pendingTransition) {\n this.pendingTransition.cancel();\n this.pendingTransition = undefined;\n }\n }\n\n destroy() {\n this.gateway.destroy();\n }\n\n private routeWithAction = (route: Route<any>) => {\n return {\n name: route.name,\n path: route.path,\n onMatch: this.transitionToRoute.bind(this)\n };\n };\n\n private async transitionToRoute(matchedRoute: MatchedRoute) {\n const route = this.getRouteByName(matchedRoute.name);\n if (!route) {\n return;\n }\n\n const params =\n typeof route.params?.parse === \"function\"\n ? route.params.parse(matchedRoute.params)\n : matchedRoute.params;\n\n runInAction(() => {\n Object.assign(this.currentRoute, {\n ...matchedRoute,\n params\n });\n });\n }\n\n private getRouteByName(name: string) {\n return this.routes.find(existingRoute => existingRoute.name === name);\n }\n}\n\nexport const RouterRepository = Abstractions.RouterRepository.createImplementation({\n implementation: RouterRepositoryImpl,\n dependencies: [Abstractions.RouterGateway]\n});\n"],"names":["INIT_ROUTE","RouterRepositoryImpl","gateway","Map","routes","routesWithAction","route","makeAutoObservable","undefined","params","RouteUrl","config","gatewayGuard","controller","disposeGatewayGuard","dispose","tx","setTimeout","matchedRoute","runInAction","Object","name","existingRoute","RouterRepository","Abstractions"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,138 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { createMemoryHistory } from "history";
3
+ import { HistoryRouterGateway } from "./HistoryRouterGateway.js";
4
+ import { RouterRepository } from "./RouterRepository.js";
5
+ import { Route } from "./Route.js";
6
+ const wait = ()=>new Promise((resolve)=>setTimeout(resolve, 10));
7
+ const loginRouteDef = new Route({
8
+ name: "login",
9
+ path: "/login"
10
+ });
11
+ const userRouteDef = new Route({
12
+ name: "userById",
13
+ path: "/users/:id",
14
+ params: (zod)=>({
15
+ id: zod.string()
16
+ })
17
+ });
18
+ const allRoutes = [
19
+ new Route({
20
+ name: "home",
21
+ path: "/"
22
+ }),
23
+ loginRouteDef,
24
+ userRouteDef
25
+ ];
26
+ const loginRoute = {
27
+ name: "login",
28
+ path: "/login",
29
+ pathname: "/login",
30
+ params: {}
31
+ };
32
+ const userRoute = (id)=>({
33
+ name: "userById",
34
+ path: "/users/:id",
35
+ pathname: `/users/${id}`,
36
+ params: {
37
+ id
38
+ }
39
+ });
40
+ const createRepository = (routes = allRoutes)=>{
41
+ const history = createMemoryHistory();
42
+ history.replace("/__unknown__");
43
+ const gateway = new HistoryRouterGateway(history, "");
44
+ const repository = new RouterRepository(gateway);
45
+ repository.registerRoutes(routes);
46
+ return {
47
+ repository,
48
+ history
49
+ };
50
+ };
51
+ describe("Router Repository", ()=>{
52
+ beforeEach(()=>{
53
+ vi.clearAllMocks();
54
+ });
55
+ it("state should contain current route", async ()=>{
56
+ const { repository, history } = createRepository();
57
+ history.push("/login");
58
+ await wait();
59
+ expect(repository.getMatchedRoute()).toEqual(loginRoute);
60
+ });
61
+ it("transition guard should block route transition", async ()=>{
62
+ const { repository, history } = createRepository();
63
+ history.push("/login");
64
+ await wait();
65
+ const onBlocked = vi.fn();
66
+ repository.addGuard({
67
+ guard: ()=>true,
68
+ onBlocked
69
+ });
70
+ history.push("/users/123");
71
+ await wait();
72
+ expect(repository.getMatchedRoute()).toEqual(loginRoute);
73
+ expect(onBlocked).toHaveBeenCalledTimes(1);
74
+ });
75
+ it("transition guard should allow route transition when guard returns false", async ()=>{
76
+ const { repository, history } = createRepository();
77
+ history.push("/login");
78
+ await wait();
79
+ repository.addGuard({
80
+ guard: ()=>false,
81
+ onBlocked: vi.fn()
82
+ });
83
+ history.push("/users/123");
84
+ await wait();
85
+ expect(repository.getMatchedRoute()).toEqual(userRoute("123"));
86
+ });
87
+ it("confirmTransition should allow a blocked transition to proceed", async ()=>{
88
+ const { repository, history } = createRepository();
89
+ history.push("/login");
90
+ await wait();
91
+ repository.addGuard({
92
+ guard: ()=>true,
93
+ onBlocked: ()=>{
94
+ repository.confirmTransition();
95
+ }
96
+ });
97
+ history.push("/users/123");
98
+ await wait();
99
+ expect(repository.getMatchedRoute()).toEqual(userRoute("123"));
100
+ });
101
+ it("guard disposer should remove the guard", async ()=>{
102
+ const { repository, history } = createRepository();
103
+ history.push("/login");
104
+ await wait();
105
+ const dispose = repository.addGuard({
106
+ guard: ()=>true,
107
+ onBlocked: vi.fn()
108
+ });
109
+ dispose();
110
+ history.push("/users/123");
111
+ await wait();
112
+ expect(repository.getMatchedRoute()).toEqual(userRoute("123"));
113
+ });
114
+ it("should go to the right route", async ()=>{
115
+ const { repository } = createRepository();
116
+ repository.goToRoute(userRouteDef, {
117
+ id: "5"
118
+ });
119
+ await wait();
120
+ expect(repository.getMatchedRoute()).toEqual(userRoute("5"));
121
+ });
122
+ it("should generate a valid route link", async ()=>{
123
+ const { repository } = createRepository();
124
+ expect(repository.getLink(loginRouteDef)).toEqual("/login");
125
+ expect(repository.getLink(userRouteDef, {
126
+ id: "1"
127
+ })).toEqual("/users/1");
128
+ });
129
+ it("should generate a valid route link when no routes are registered", async ()=>{
130
+ const { repository } = createRepository([]);
131
+ expect(repository.getLink(loginRouteDef)).toEqual("/login");
132
+ expect(repository.getLink(userRouteDef, {
133
+ id: "1"
134
+ })).toEqual("/users/1");
135
+ });
136
+ });
137
+
138
+ //# sourceMappingURL=RouterRepository.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/router/RouterRepository.test.js","sources":["../../../src/features/router/RouterRepository.test.ts"],"sourcesContent":["import { describe, it, beforeEach, expect, vi } from \"vitest\";\nimport { createMemoryHistory } from \"history\";\nimport { HistoryRouterGateway } from \"./HistoryRouterGateway.js\";\nimport { RouterRepository } from \"./RouterRepository.js\";\nimport { Route } from \"./Route.js\";\n\nconst wait = () => new Promise(resolve => setTimeout(resolve, 10));\n\nconst loginRouteDef = new Route({ name: \"login\", path: \"/login\" });\n\nconst userRouteDef = new Route({\n name: \"userById\",\n path: \"/users/:id\",\n params: zod => {\n return {\n id: zod.string()\n };\n }\n});\n\nconst allRoutes: Route<any>[] = [\n new Route({ name: \"home\", path: \"/\" }),\n loginRouteDef,\n userRouteDef\n];\n\nconst loginRoute = {\n name: \"login\",\n path: \"/login\",\n pathname: \"/login\",\n params: {}\n};\n\nconst userRoute = (id: string) => {\n return {\n name: \"userById\",\n path: \"/users/:id\",\n pathname: `/users/${id}`,\n params: {\n id\n }\n };\n};\n\nconst createRepository = (routes = allRoutes) => {\n const history = createMemoryHistory();\n history.replace(\"/__unknown__\");\n\n const gateway = new HistoryRouterGateway(history, \"\");\n const repository = new RouterRepository(gateway);\n\n repository.registerRoutes(routes);\n\n return { repository, history };\n};\n\ndescribe(\"Router Repository\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"state should contain current route\", async () => {\n const { repository, history } = createRepository();\n history.push(\"/login\");\n await wait();\n\n expect(repository.getMatchedRoute()).toEqual(loginRoute);\n });\n\n it(\"transition guard should block route transition\", async () => {\n const { repository, history } = createRepository();\n history.push(\"/login\");\n await wait();\n\n // This guard should prevent the transition.\n const onBlocked = vi.fn();\n repository.addGuard({\n guard: () => true,\n onBlocked\n });\n\n // Trigger a history location change (imagine a click on \"Back\" button in the browser).\n history.push(\"/users/123\");\n await wait();\n\n expect(repository.getMatchedRoute()).toEqual(loginRoute);\n expect(onBlocked).toHaveBeenCalledTimes(1);\n });\n\n it(\"transition guard should allow route transition when guard returns false\", async () => {\n const { repository, history } = createRepository();\n history.push(\"/login\");\n await wait();\n\n repository.addGuard({\n guard: () => false,\n onBlocked: vi.fn()\n });\n\n // Trigger a history location change.\n history.push(\"/users/123\");\n await wait();\n\n expect(repository.getMatchedRoute()).toEqual(userRoute(\"123\"));\n });\n\n it(\"confirmTransition should allow a blocked transition to proceed\", async () => {\n const { repository, history } = createRepository();\n history.push(\"/login\");\n await wait();\n\n repository.addGuard({\n guard: () => true,\n onBlocked: () => {\n repository.confirmTransition();\n }\n });\n\n history.push(\"/users/123\");\n await wait();\n\n expect(repository.getMatchedRoute()).toEqual(userRoute(\"123\"));\n });\n\n it(\"guard disposer should remove the guard\", async () => {\n const { repository, history } = createRepository();\n history.push(\"/login\");\n await wait();\n\n const dispose = repository.addGuard({\n guard: () => true,\n onBlocked: vi.fn()\n });\n\n // Remove the guard.\n dispose();\n\n // Transition should now pass through.\n history.push(\"/users/123\");\n await wait();\n\n expect(repository.getMatchedRoute()).toEqual(userRoute(\"123\"));\n });\n\n it(\"should go to the right route\", async () => {\n const { repository } = createRepository();\n repository.goToRoute(userRouteDef, { id: \"5\" });\n await wait();\n expect(repository.getMatchedRoute()).toEqual(userRoute(\"5\"));\n });\n\n it(\"should generate a valid route link\", async () => {\n const { repository } = createRepository();\n\n expect(repository.getLink(loginRouteDef)).toEqual(\"/login\");\n expect(repository.getLink(userRouteDef, { id: \"1\" })).toEqual(\"/users/1\");\n });\n\n it(\"should generate a valid route link when no routes are registered\", async () => {\n const { repository } = createRepository([]);\n\n expect(repository.getLink(loginRouteDef)).toEqual(\"/login\");\n expect(repository.getLink(userRouteDef, { id: \"1\" })).toEqual(\"/users/1\");\n });\n});\n"],"names":["wait","Promise","resolve","setTimeout","loginRouteDef","Route","userRouteDef","zod","allRoutes","loginRoute","userRoute","id","createRepository","routes","history","createMemoryHistory","gateway","HistoryRouterGateway","repository","RouterRepository","describe","beforeEach","vi","it","expect","onBlocked","dispose"],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ import type { Route, RouteParamsDefinition, RouteParamsInfer } from "./Route.js";
3
+ import type { RequiredKeysOf } from "type-fest";
4
+ /***** Presenter *****/
5
+ export type RouteParamsArgs<TParams extends RouteParamsDefinition | undefined> = TParams extends RouteParamsDefinition ? RequiredKeysOf<RouteParamsInfer<TParams>> extends never ? [params?: RouteParamsInfer<TParams>] : [params: RouteParamsInfer<TParams>] : [];
6
+ interface RouterViewModel {
7
+ currentRoute: MatchedRoute | undefined;
8
+ }
9
+ export interface IRouterPresenter {
10
+ vm: RouterViewModel;
11
+ bootstrap(routes: Route[]): void;
12
+ goToRoute<TParams extends RouteParamsDefinition | undefined>(route: Route<TParams>, ...args: RouteParamsArgs<TParams>): void;
13
+ getLink<TParams extends RouteParamsDefinition | undefined>(route: Route<TParams>, ...args: RouteParamsArgs<TParams>): string;
14
+ setRouteParams<T extends Record<string, any>>(cb: (params: T) => T): void;
15
+ addTransitionGuard(config: RouteTransitionGuardConfig): GuardDisposer;
16
+ isTransitionBlocked(): boolean;
17
+ unblockTransition(): void;
18
+ confirmTransition(): void;
19
+ cancelTransition(): void;
20
+ destroy(): void;
21
+ }
22
+ export declare const RouterPresenter: Abstraction<IRouterPresenter>;
23
+ export declare namespace RouterPresenter {
24
+ type Interface = IRouterPresenter;
25
+ }
26
+ /***** Repository *****/
27
+ export interface MatchedRoute<TParams = Record<string, any>> {
28
+ name: string;
29
+ pathname: string;
30
+ path: string;
31
+ params: TParams;
32
+ }
33
+ export interface IRouterRepository {
34
+ getMatchedRoute(): MatchedRoute | undefined;
35
+ getCurrentRoute(): Route<any> | undefined;
36
+ goToRoute<TParams extends RouteParamsDefinition | undefined>(route: Route<TParams>, params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined): void;
37
+ getLink<TParams extends RouteParamsDefinition | undefined>(route: Route<TParams>, params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined): string;
38
+ registerRoutes(routes: Route[]): void;
39
+ addGuard(config: RouteTransitionGuardConfig): GuardDisposer;
40
+ isBlocked(): boolean;
41
+ unblock(): void;
42
+ confirmTransition(): void;
43
+ cancelTransition(): void;
44
+ destroy(): void;
45
+ }
46
+ export declare const RouterRepository: Abstraction<IRouterRepository>;
47
+ export declare namespace RouterRepository {
48
+ type Interface = IRouterRepository;
49
+ }
50
+ /***** Gateway *****/
51
+ export interface RouteDefinition {
52
+ name: string;
53
+ path: string;
54
+ onMatch(route: MatchedRoute): void;
55
+ }
56
+ export type TransitionController = {
57
+ continue: () => void;
58
+ cancel: () => void;
59
+ };
60
+ interface IRouterGateway {
61
+ setRoutes(routes: RouteDefinition[]): void;
62
+ goToRoute(name: string, params?: {
63
+ [k: string]: any;
64
+ }): void;
65
+ pushState(url: string): void;
66
+ addGuard(config: RouteTransitionGuardConfig): GuardDisposer;
67
+ destroy(): void;
68
+ }
69
+ export declare const RouterGateway: Abstraction<IRouterGateway>;
70
+ export declare namespace RouterGateway {
71
+ type Interface = IRouterGateway;
72
+ }
73
+ /***** Route Transition *****/
74
+ export type GuardDisposer = () => void;
75
+ export interface RouteTransitionGuardConfig {
76
+ /** Return true to block the transition. */
77
+ guard: () => boolean;
78
+ /** Called when this guard blocks a transition. Show a confirmation dialog here. */
79
+ onBlocked: (controller: TransitionController) => void;
80
+ }
81
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ const RouterPresenter = new Abstraction("RouterPresenter");
3
+ const RouterRepository = new Abstraction("RouterRepository");
4
+ const RouterGateway = new Abstraction("RouterGateway");
5
+ export { RouterGateway, RouterPresenter, RouterRepository };
6
+
7
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/router/abstractions.js","sources":["../../../src/features/router/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport type { Route, RouteParamsDefinition, RouteParamsInfer } from \"./Route.js\";\nimport type { RequiredKeysOf } from \"type-fest\";\n\n/***** Presenter *****/\n\nexport type RouteParamsArgs<TParams extends RouteParamsDefinition | undefined> =\n TParams extends RouteParamsDefinition\n ? RequiredKeysOf<RouteParamsInfer<TParams>> extends never\n ? [params?: RouteParamsInfer<TParams>] // all optional → param optional\n : [params: RouteParamsInfer<TParams>] // some required → param required\n : [];\n\ninterface RouterViewModel {\n currentRoute: MatchedRoute | undefined;\n}\n\nexport interface IRouterPresenter {\n vm: RouterViewModel;\n bootstrap(routes: Route[]): void;\n goToRoute<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n ...args: RouteParamsArgs<TParams>\n ): void;\n getLink<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n ...args: RouteParamsArgs<TParams>\n ): string;\n setRouteParams<T extends Record<string, any>>(cb: (params: T) => T): void;\n addTransitionGuard(config: RouteTransitionGuardConfig): GuardDisposer;\n isTransitionBlocked(): boolean;\n unblockTransition(): void;\n confirmTransition(): void;\n cancelTransition(): void;\n destroy(): void;\n}\nexport const RouterPresenter = new Abstraction<IRouterPresenter>(\"RouterPresenter\");\n\nexport namespace RouterPresenter {\n export type Interface = IRouterPresenter;\n}\n\n/***** Repository *****/\n\nexport interface MatchedRoute<TParams = Record<string, any>> {\n // Name of the matched route.\n name: string;\n // Pathname that was used to match the route.\n pathname: string;\n // Path pattern that matched this route.\n path: string;\n // Route params extracted from the pathname.\n params: TParams;\n}\n\nexport interface IRouterRepository {\n getMatchedRoute(): MatchedRoute | undefined;\n\n getCurrentRoute(): Route<any> | undefined;\n\n goToRoute<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): void;\n\n getLink<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): string;\n\n registerRoutes(routes: Route[]): void;\n\n addGuard(config: RouteTransitionGuardConfig): GuardDisposer;\n isBlocked(): boolean;\n unblock(): void;\n confirmTransition(): void;\n cancelTransition(): void;\n\n destroy(): void;\n}\n\nexport const RouterRepository = new Abstraction<IRouterRepository>(\"RouterRepository\");\n\nexport namespace RouterRepository {\n export type Interface = IRouterRepository;\n}\n\n/***** Gateway *****/\n\nexport interface RouteDefinition {\n name: string;\n path: string;\n onMatch(route: MatchedRoute): void;\n}\n\nexport type TransitionController = {\n continue: () => void;\n cancel: () => void;\n};\n\ninterface IRouterGateway {\n setRoutes(routes: RouteDefinition[]): void;\n goToRoute(name: string, params?: { [k: string]: any }): void;\n pushState(url: string): void;\n addGuard(config: RouteTransitionGuardConfig): GuardDisposer;\n destroy(): void;\n}\n\nexport const RouterGateway = new Abstraction<IRouterGateway>(\"RouterGateway\");\n\nexport namespace RouterGateway {\n export type Interface = IRouterGateway;\n}\n\n/***** Route Transition *****/\n\nexport type GuardDisposer = () => void;\n\nexport interface RouteTransitionGuardConfig {\n /** Return true to block the transition. */\n guard: () => boolean;\n /** Called when this guard blocks a transition. Show a confirmation dialog here. */\n onBlocked: (controller: TransitionController) => void;\n}\n"],"names":["RouterPresenter","Abstraction","RouterRepository","RouterGateway"],"mappings":";AAoCO,MAAMA,kBAAkB,IAAIC,YAA8B;AA6C1D,MAAMC,mBAAmB,IAAID,YAA+B;AA2B5D,MAAME,gBAAgB,IAAIF,YAA4B"}
@@ -0,0 +1,4 @@
1
+ import * as Abstractions from "../../features/router/abstractions.js";
2
+ export declare const RouterFeature: import("~/shared/di/createFeature.js").FeatureDefinition<{
3
+ presenter: Abstractions.IRouterPresenter;
4
+ }, []>;
@@ -0,0 +1,19 @@
1
+ import { RouterRepository } from "./RouterRepository.js";
2
+ import { RouterPresenter } from "./RouterPresenter.js";
3
+ import { createFeature } from "../../shared/di/createFeature.js";
4
+ import * as __rspack_external__abstractions_js_decaaf32 from "./abstractions.js";
5
+ const RouterFeature = createFeature({
6
+ name: "Router",
7
+ register (container) {
8
+ container.register(RouterRepository).inSingletonScope();
9
+ container.register(RouterPresenter).inSingletonScope();
10
+ },
11
+ resolve (container) {
12
+ return {
13
+ presenter: container.resolve(__rspack_external__abstractions_js_decaaf32.RouterPresenter)
14
+ };
15
+ }
16
+ });
17
+ export { RouterFeature };
18
+
19
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/router/feature.js","sources":["../../../src/features/router/feature.ts"],"sourcesContent":["import { RouterRepository } from \"~/features/router/RouterRepository.js\";\nimport { RouterPresenter } from \"~/features/router/RouterPresenter.js\";\nimport * as Abstractions from \"~/features/router/abstractions.js\";\nimport { createFeature } from \"~/shared/di/createFeature.js\";\n\nexport const RouterFeature = createFeature({\n name: \"Router\",\n register(container) {\n container.register(RouterRepository).inSingletonScope();\n container.register(RouterPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(Abstractions.RouterPresenter)\n };\n }\n});\n"],"names":["RouterFeature","createFeature","container","RouterRepository","RouterPresenter","Abstractions"],"mappings":";;;;AAKO,MAAMA,gBAAgBC,cAAc;IACvC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,kBAAkB,gBAAgB;QACrDD,UAAU,QAAQ,CAACE,iBAAiB,gBAAgB;IACxD;IACA,SAAQF,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACG,4CAAAA,eAA4B;QAC7D;IACJ;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { RouterPresenter, RouterGateway } from "./abstractions.js";
2
+ export type { RouteTransitionGuardConfig, GuardDisposer, TransitionController } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { RouterGateway, RouterPresenter } from "./abstractions.js";
@@ -0,0 +1,15 @@
1
+ type DateOps<T> = {
2
+ "": T;
3
+ _gt: T;
4
+ _gte: T;
5
+ _lt: T;
6
+ _lte: T;
7
+ _between: [T, T];
8
+ };
9
+ export type DateInterfaceGenerator<Name extends string> = {
10
+ [K in keyof DateOps<Date> as `${Name}${K}`]?: DateOps<Date>[K];
11
+ };
12
+ export type DateStringInterfaceGenerator<Name extends string> = {
13
+ [K in keyof DateOps<string> as `${Name}${K}`]?: DateOps<string>[K];
14
+ };
15
+ export {};
File without changes
@@ -0,0 +1,23 @@
1
+ type IdOperators<TType extends string> = {
2
+ "": TType;
3
+ _not: TType;
4
+ _in: TType[];
5
+ _not_in: TType[];
6
+ };
7
+ export type IdInterfaceGenerator<TName extends string, TType extends string = string> = {
8
+ [K in keyof IdOperators<TType> as `${TName}${K}`]?: IdOperators<TType>[K];
9
+ };
10
+ type IdMixedOperators = {
11
+ "": string;
12
+ _not: string;
13
+ _in: string[];
14
+ _not_in: string[];
15
+ _gt: number | string;
16
+ _gte: number | string;
17
+ _lt: number | string;
18
+ _lte: number | string;
19
+ };
20
+ export type IdMixedInterfaceGenerator<TName extends string> = {
21
+ [K in keyof IdMixedOperators as `${TName}${K}`]?: IdMixedOperators[K];
22
+ };
23
+ export {};
File without changes
@@ -0,0 +1,10 @@
1
+ type IdentityOps<TId> = {
2
+ "": TId;
3
+ _not: TId;
4
+ _in: TId[];
5
+ _not_in: TId[];
6
+ };
7
+ export type IdentityInterfaceGenerator<Name extends string, TId = string> = {
8
+ [K in keyof IdentityOps<TId> as `${Name}${K}`]?: IdentityOps<TId>[K];
9
+ };
10
+ export {};
File without changes
@@ -0,0 +1,5 @@
1
+ export type { IdInterfaceGenerator, IdMixedInterfaceGenerator } from "./id.js";
2
+ export type { DateInterfaceGenerator, DateStringInterfaceGenerator } from "./date.js";
3
+ export type { IdentityInterfaceGenerator } from "./identity.js";
4
+ export type { NumericInterfaceGenerator } from "./numeric.js";
5
+ export type { TruthfulInterfaceGenerator } from "./truthful.js";
File without changes
@@ -0,0 +1,12 @@
1
+ type Numeric = {
2
+ "": number;
3
+ _gt: number;
4
+ _gte: number;
5
+ _lt: number;
6
+ _lte: number;
7
+ _between: [number, number];
8
+ };
9
+ export type NumericInterfaceGenerator<Name extends string> = {
10
+ [K in keyof Numeric as `${Name}${K}`]?: Numeric[K];
11
+ };
12
+ export {};
File without changes
@@ -0,0 +1,7 @@
1
+ type Truthful = {
2
+ "": boolean;
3
+ };
4
+ export type TruthfulInterfaceGenerator<Name extends string> = {
5
+ [K in keyof Truthful as `${Name}${K}`]?: Truthful[K];
6
+ };
7
+ export {};