piral-core 1.0.0-pre.2296 → 1.0.1-beta.5640

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 (672) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +12 -4
  3. package/app.codegen +36 -0
  4. package/app.codegen.d.ts +29 -0
  5. package/dist/codegen.js +5308 -0
  6. package/esm/Piral.d.ts +4 -4
  7. package/esm/Piral.js +8 -11
  8. package/esm/Piral.js.map +1 -1
  9. package/esm/PiralContext.d.ts +21 -0
  10. package/esm/PiralContext.js +34 -0
  11. package/esm/PiralContext.js.map +1 -0
  12. package/esm/RootListener.d.ts +2 -0
  13. package/esm/RootListener.js +23 -0
  14. package/esm/RootListener.js.map +1 -0
  15. package/esm/actions/app.d.ts +7 -4
  16. package/esm/actions/app.js +24 -14
  17. package/esm/actions/app.js.map +1 -1
  18. package/esm/actions/components.js +5 -6
  19. package/esm/actions/components.js.map +1 -1
  20. package/esm/actions/data.js +16 -17
  21. package/esm/actions/data.js.map +1 -1
  22. package/esm/actions/define.js +2 -3
  23. package/esm/actions/define.js.map +1 -1
  24. package/esm/actions/portal.d.ts +2 -0
  25. package/esm/actions/portal.js +9 -4
  26. package/esm/actions/portal.js.map +1 -1
  27. package/esm/actions/state.js +7 -4
  28. package/esm/actions/state.js.map +1 -1
  29. package/esm/components/ErrorBoundary.d.ts +14 -31
  30. package/esm/components/ErrorBoundary.js +22 -28
  31. package/esm/components/ErrorBoundary.js.map +1 -1
  32. package/esm/components/ExtensionSlot.d.ts +1 -0
  33. package/esm/components/ExtensionSlot.js +34 -11
  34. package/esm/components/ExtensionSlot.js.map +1 -1
  35. package/esm/components/ForeignComponentContainer.d.ts +19 -0
  36. package/esm/components/ForeignComponentContainer.js +46 -0
  37. package/esm/components/ForeignComponentContainer.js.map +1 -0
  38. package/esm/components/Mediator.js +15 -12
  39. package/esm/components/Mediator.js.map +1 -1
  40. package/esm/components/PiralGlobals.d.ts +6 -0
  41. package/esm/components/PiralGlobals.js +13 -0
  42. package/esm/components/PiralGlobals.js.map +1 -0
  43. package/esm/components/PiralRoutes.d.ts +5 -0
  44. package/esm/components/PiralRoutes.js +6 -11
  45. package/esm/components/PiralRoutes.js.map +1 -1
  46. package/esm/components/PiralSuspense.d.ts +5 -0
  47. package/esm/components/PiralSuspense.js +8 -0
  48. package/esm/components/PiralSuspense.js.map +1 -0
  49. package/esm/components/PiralView.d.ts +10 -1
  50. package/esm/components/PiralView.js +12 -25
  51. package/esm/components/PiralView.js.map +1 -1
  52. package/esm/components/PortalRenderer.d.ts +5 -0
  53. package/esm/components/PortalRenderer.js +7 -0
  54. package/esm/components/PortalRenderer.js.map +1 -0
  55. package/esm/components/ResponsiveLayout.d.ts +9 -1
  56. package/esm/components/ResponsiveLayout.js +5 -13
  57. package/esm/components/ResponsiveLayout.js.map +1 -1
  58. package/esm/components/SwitchErrorInfo.js +12 -10
  59. package/esm/components/SwitchErrorInfo.js.map +1 -1
  60. package/esm/components/components.d.ts +18 -6
  61. package/esm/components/components.js +21 -9
  62. package/esm/components/components.js.map +1 -1
  63. package/esm/components/index.d.ts +4 -10
  64. package/esm/components/index.js +4 -10
  65. package/esm/components/index.js.map +1 -1
  66. package/esm/components/wrapComponent.d.ts +7 -0
  67. package/esm/components/wrapComponent.js +42 -0
  68. package/esm/components/wrapComponent.js.map +1 -0
  69. package/esm/createInstance.d.ts +2 -2
  70. package/esm/createInstance.js +34 -30
  71. package/esm/createInstance.js.map +1 -1
  72. package/esm/defaults/DefaultErrorInfo.js +10 -0
  73. package/esm/defaults/DefaultErrorInfo.js.map +1 -0
  74. package/esm/{components → defaults}/DefaultLayout.js +1 -4
  75. package/esm/defaults/DefaultLayout.js.map +1 -0
  76. package/esm/{components/DefaultLoader.js → defaults/DefaultLoadingIndicator.js} +2 -2
  77. package/esm/defaults/DefaultLoadingIndicator.js.map +1 -0
  78. package/esm/defaults/DefaultRouteSwitch_v5.d.ts +3 -0
  79. package/esm/defaults/DefaultRouteSwitch_v5.js +11 -0
  80. package/esm/defaults/DefaultRouteSwitch_v5.js.map +1 -0
  81. package/esm/defaults/DefaultRouteSwitch_v6.d.ts +3 -0
  82. package/esm/defaults/DefaultRouteSwitch_v6.js +15 -0
  83. package/esm/defaults/DefaultRouteSwitch_v6.js.map +1 -0
  84. package/esm/defaults/DefaultRouter_v5.d.ts +3 -0
  85. package/esm/defaults/DefaultRouter_v5.js +7 -0
  86. package/esm/defaults/DefaultRouter_v5.js.map +1 -0
  87. package/esm/defaults/DefaultRouter_v6.d.ts +3 -0
  88. package/esm/defaults/DefaultRouter_v6.js +7 -0
  89. package/esm/defaults/DefaultRouter_v6.js.map +1 -0
  90. package/esm/defaults/navigator_none.d.ts +5 -0
  91. package/esm/defaults/navigator_none.js +30 -0
  92. package/esm/defaults/navigator_none.js.map +1 -0
  93. package/esm/defaults/navigator_v5.d.ts +6 -0
  94. package/esm/defaults/navigator_v5.js +81 -0
  95. package/esm/defaults/navigator_v5.js.map +1 -0
  96. package/esm/defaults/navigator_v6.d.ts +6 -0
  97. package/esm/defaults/navigator_v6.js +77 -0
  98. package/esm/defaults/navigator_v6.js.map +1 -0
  99. package/esm/helpers.d.ts +12 -26
  100. package/esm/helpers.js +14 -72
  101. package/esm/helpers.js.map +1 -1
  102. package/esm/hooks/action.js +2 -3
  103. package/esm/hooks/action.js.map +1 -1
  104. package/esm/hooks/actions.js +1 -1
  105. package/esm/hooks/actions.js.map +1 -1
  106. package/esm/hooks/globalState.d.ts +7 -0
  107. package/esm/hooks/globalState.js +10 -8
  108. package/esm/hooks/globalState.js.map +1 -1
  109. package/esm/hooks/index.d.ts +2 -5
  110. package/esm/hooks/index.js +2 -5
  111. package/esm/hooks/index.js.map +1 -1
  112. package/esm/hooks/media.js +8 -7
  113. package/esm/hooks/media.js.map +1 -1
  114. package/esm/hooks/piletApi.d.ts +7 -0
  115. package/esm/hooks/piletApi.js +14 -0
  116. package/esm/hooks/piletApi.js.map +1 -0
  117. package/esm/hooks/routes.d.ts +2 -0
  118. package/esm/hooks/routes.js +11 -0
  119. package/esm/hooks/routes.js.map +1 -0
  120. package/esm/hooks/setter.js +3 -2
  121. package/esm/hooks/setter.js.map +1 -1
  122. package/esm/hooks/sharedData.js +2 -2
  123. package/esm/hooks/sharedData.js.map +1 -1
  124. package/esm/index.d.ts +3 -1
  125. package/esm/index.js +3 -1
  126. package/esm/index.js.map +1 -1
  127. package/esm/modules/api.d.ts +2 -5
  128. package/esm/modules/api.js +9 -69
  129. package/esm/modules/api.js.map +1 -1
  130. package/esm/modules/core.d.ts +3 -0
  131. package/esm/modules/core.js +50 -0
  132. package/esm/modules/core.js.map +1 -0
  133. package/esm/modules/dependencies.d.ts +5 -6
  134. package/esm/modules/dependencies.js +9 -24
  135. package/esm/modules/dependencies.js.map +1 -1
  136. package/esm/modules/element.d.ts +5 -0
  137. package/esm/modules/element.js +169 -0
  138. package/esm/modules/element.js.map +1 -0
  139. package/esm/modules/index.d.ts +1 -0
  140. package/esm/modules/index.js +1 -0
  141. package/esm/modules/index.js.map +1 -1
  142. package/esm/setters/SetComponent.js +11 -0
  143. package/esm/setters/SetComponent.js.map +1 -0
  144. package/esm/setters/SetError.js +11 -0
  145. package/esm/setters/SetError.js.map +1 -0
  146. package/esm/setters/SetErrors.js +9 -0
  147. package/esm/setters/SetErrors.js.map +1 -0
  148. package/esm/setters/SetLayout.js +9 -0
  149. package/esm/setters/SetLayout.js.map +1 -0
  150. package/esm/setters/SetProvider.js +11 -0
  151. package/esm/setters/SetProvider.js.map +1 -0
  152. package/esm/setters/SetRedirect.js +12 -0
  153. package/esm/setters/SetRedirect.js.map +1 -0
  154. package/{lib/components → esm/setters}/SetRoute.d.ts +6 -2
  155. package/esm/setters/SetRoute.js +11 -0
  156. package/esm/setters/SetRoute.js.map +1 -0
  157. package/esm/setters/index.d.ts +7 -0
  158. package/esm/setters/index.js +8 -0
  159. package/esm/setters/index.js.map +1 -0
  160. package/esm/state/createActions.d.ts +2 -2
  161. package/esm/state/createActions.js +8 -12
  162. package/esm/state/createActions.js.map +1 -1
  163. package/esm/state/createGlobalState.d.ts +1 -2
  164. package/esm/state/createGlobalState.js +9 -34
  165. package/esm/state/createGlobalState.js.map +1 -1
  166. package/esm/state/stateContext.js +1 -1
  167. package/esm/state/stateContext.js.map +1 -1
  168. package/esm/state/withApi.d.ts +1 -1
  169. package/esm/state/withApi.js +19 -104
  170. package/esm/state/withApi.js.map +1 -1
  171. package/esm/tools/codegen.d.ts +21 -0
  172. package/esm/tools/codegen.js +145 -0
  173. package/esm/tools/codegen.js.map +1 -0
  174. package/esm/tools/debugger.d.ts +4 -0
  175. package/esm/tools/debugger.js +54 -0
  176. package/esm/tools/debugger.js.map +1 -0
  177. package/esm/tools/emulator.d.ts +3 -0
  178. package/esm/tools/emulator.js +11 -0
  179. package/esm/tools/emulator.js.map +1 -0
  180. package/esm/types/api.d.ts +34 -9
  181. package/esm/types/common.d.ts +11 -11
  182. package/esm/types/components.d.ts +74 -8
  183. package/esm/types/config.d.ts +24 -17
  184. package/esm/types/data.d.ts +2 -2
  185. package/esm/types/extension.d.ts +31 -4
  186. package/esm/types/index.d.ts +1 -0
  187. package/esm/types/index.js +1 -0
  188. package/esm/types/index.js.map +1 -1
  189. package/esm/types/instance.d.ts +26 -4
  190. package/esm/types/layout.d.ts +3 -3
  191. package/esm/types/navigation.d.ts +94 -0
  192. package/esm/types/navigation.js +2 -0
  193. package/esm/types/navigation.js.map +1 -0
  194. package/esm/types/plugin.d.ts +1 -14
  195. package/esm/types/state.d.ts +66 -27
  196. package/esm/types/utils.d.ts +1 -1
  197. package/esm/utils/compare.d.ts +1 -1
  198. package/esm/utils/compare.js +24 -7
  199. package/esm/utils/compare.js.map +1 -1
  200. package/esm/utils/data.js +6 -7
  201. package/esm/utils/data.js.map +1 -1
  202. package/esm/utils/extension.d.ts +16 -0
  203. package/esm/utils/extension.js +37 -0
  204. package/esm/utils/extension.js.map +1 -0
  205. package/esm/utils/foreign.d.ts +7 -2
  206. package/esm/utils/foreign.js +20 -9
  207. package/esm/utils/foreign.js.map +1 -1
  208. package/esm/utils/guid.js +3 -3
  209. package/esm/utils/guid.js.map +1 -1
  210. package/esm/utils/helpers.d.ts +11 -8
  211. package/esm/utils/helpers.js +29 -18
  212. package/esm/utils/helpers.js.map +1 -1
  213. package/esm/utils/index.d.ts +3 -1
  214. package/esm/utils/index.js +3 -1
  215. package/esm/utils/index.js.map +1 -1
  216. package/esm/utils/media.js +8 -8
  217. package/esm/utils/media.js.map +1 -1
  218. package/esm/utils/state.d.ts +57 -0
  219. package/esm/utils/state.js +83 -0
  220. package/esm/utils/state.js.map +1 -0
  221. package/esm/utils/storage.js +13 -14
  222. package/esm/utils/storage.js.map +1 -1
  223. package/lib/Piral.d.ts +4 -4
  224. package/lib/Piral.js +11 -13
  225. package/lib/Piral.js.map +1 -1
  226. package/lib/PiralContext.d.ts +21 -0
  227. package/lib/PiralContext.js +38 -0
  228. package/lib/PiralContext.js.map +1 -0
  229. package/lib/RootListener.d.ts +2 -0
  230. package/lib/RootListener.js +27 -0
  231. package/lib/RootListener.js.map +1 -0
  232. package/lib/actions/app.d.ts +7 -4
  233. package/lib/actions/app.js +27 -16
  234. package/lib/actions/app.js.map +1 -1
  235. package/lib/actions/components.js +5 -6
  236. package/lib/actions/components.js.map +1 -1
  237. package/lib/actions/data.js +17 -18
  238. package/lib/actions/data.js.map +1 -1
  239. package/lib/actions/define.js +2 -3
  240. package/lib/actions/define.js.map +1 -1
  241. package/lib/actions/index.js +1 -1
  242. package/lib/actions/portal.d.ts +2 -0
  243. package/lib/actions/portal.js +12 -5
  244. package/lib/actions/portal.js.map +1 -1
  245. package/lib/actions/state.js +7 -4
  246. package/lib/actions/state.js.map +1 -1
  247. package/lib/components/ErrorBoundary.d.ts +14 -31
  248. package/lib/components/ErrorBoundary.js +23 -28
  249. package/lib/components/ErrorBoundary.js.map +1 -1
  250. package/lib/components/ExtensionSlot.d.ts +1 -0
  251. package/lib/components/ExtensionSlot.js +37 -14
  252. package/lib/components/ExtensionSlot.js.map +1 -1
  253. package/lib/components/ForeignComponentContainer.d.ts +19 -0
  254. package/lib/components/ForeignComponentContainer.js +50 -0
  255. package/lib/components/ForeignComponentContainer.js.map +1 -0
  256. package/lib/components/Mediator.js +18 -14
  257. package/lib/components/Mediator.js.map +1 -1
  258. package/lib/components/PiralGlobals.d.ts +6 -0
  259. package/lib/components/PiralGlobals.js +17 -0
  260. package/lib/components/PiralGlobals.js.map +1 -0
  261. package/lib/components/PiralRoutes.d.ts +5 -0
  262. package/lib/components/PiralRoutes.js +8 -12
  263. package/lib/components/PiralRoutes.js.map +1 -1
  264. package/lib/components/PiralSuspense.d.ts +5 -0
  265. package/lib/components/PiralSuspense.js +12 -0
  266. package/lib/components/PiralSuspense.js.map +1 -0
  267. package/lib/components/PiralView.d.ts +10 -1
  268. package/lib/components/PiralView.js +15 -27
  269. package/lib/components/PiralView.js.map +1 -1
  270. package/lib/components/PortalRenderer.d.ts +5 -0
  271. package/lib/components/PortalRenderer.js +11 -0
  272. package/lib/components/PortalRenderer.js.map +1 -0
  273. package/lib/components/ResponsiveLayout.d.ts +9 -1
  274. package/lib/components/ResponsiveLayout.js +7 -14
  275. package/lib/components/ResponsiveLayout.js.map +1 -1
  276. package/lib/components/SwitchErrorInfo.js +15 -12
  277. package/lib/components/SwitchErrorInfo.js.map +1 -1
  278. package/lib/components/components.d.ts +18 -6
  279. package/lib/components/components.js +24 -12
  280. package/lib/components/components.js.map +1 -1
  281. package/lib/components/index.d.ts +4 -10
  282. package/lib/components/index.js +5 -11
  283. package/lib/components/index.js.map +1 -1
  284. package/lib/components/wrapComponent.d.ts +7 -0
  285. package/lib/components/wrapComponent.js +46 -0
  286. package/lib/components/wrapComponent.js.map +1 -0
  287. package/lib/createInstance.d.ts +2 -2
  288. package/lib/createInstance.js +40 -36
  289. package/lib/createInstance.js.map +1 -1
  290. package/lib/defaults/DefaultErrorInfo.js +14 -0
  291. package/lib/defaults/DefaultErrorInfo.js.map +1 -0
  292. package/lib/{components → defaults}/DefaultLayout.js +3 -5
  293. package/lib/defaults/DefaultLayout.js.map +1 -0
  294. package/lib/{components/DefaultLoader.js → defaults/DefaultLoadingIndicator.js} +4 -3
  295. package/lib/defaults/DefaultLoadingIndicator.js.map +1 -0
  296. package/lib/defaults/DefaultRouteSwitch_v5.d.ts +3 -0
  297. package/lib/defaults/DefaultRouteSwitch_v5.js +15 -0
  298. package/lib/defaults/DefaultRouteSwitch_v5.js.map +1 -0
  299. package/lib/defaults/DefaultRouteSwitch_v6.d.ts +3 -0
  300. package/lib/defaults/DefaultRouteSwitch_v6.js +19 -0
  301. package/lib/defaults/DefaultRouteSwitch_v6.js.map +1 -0
  302. package/lib/defaults/DefaultRouter_v5.d.ts +3 -0
  303. package/lib/defaults/DefaultRouter_v5.js +11 -0
  304. package/lib/defaults/DefaultRouter_v5.js.map +1 -0
  305. package/lib/defaults/DefaultRouter_v6.d.ts +3 -0
  306. package/lib/defaults/DefaultRouter_v6.js +11 -0
  307. package/lib/defaults/DefaultRouter_v6.js.map +1 -0
  308. package/lib/defaults/navigator_none.d.ts +5 -0
  309. package/lib/defaults/navigator_none.js +37 -0
  310. package/lib/defaults/navigator_none.js.map +1 -0
  311. package/lib/defaults/navigator_v5.d.ts +6 -0
  312. package/lib/defaults/navigator_v5.js +88 -0
  313. package/lib/defaults/navigator_v5.js.map +1 -0
  314. package/lib/defaults/navigator_v6.d.ts +6 -0
  315. package/lib/defaults/navigator_v6.js +84 -0
  316. package/lib/defaults/navigator_v6.js.map +1 -0
  317. package/lib/helpers.d.ts +12 -26
  318. package/lib/helpers.js +15 -75
  319. package/lib/helpers.js.map +1 -1
  320. package/lib/hooks/action.js +2 -3
  321. package/lib/hooks/action.js.map +1 -1
  322. package/lib/hooks/actions.js +4 -4
  323. package/lib/hooks/actions.js.map +1 -1
  324. package/lib/hooks/globalState.d.ts +7 -0
  325. package/lib/hooks/globalState.js +14 -11
  326. package/lib/hooks/globalState.js.map +1 -1
  327. package/lib/hooks/index.d.ts +2 -5
  328. package/lib/hooks/index.js +3 -6
  329. package/lib/hooks/index.js.map +1 -1
  330. package/lib/hooks/media.js +10 -9
  331. package/lib/hooks/media.js.map +1 -1
  332. package/lib/hooks/piletApi.d.ts +7 -0
  333. package/lib/hooks/piletApi.js +18 -0
  334. package/lib/hooks/piletApi.js.map +1 -0
  335. package/lib/hooks/routes.d.ts +2 -0
  336. package/lib/hooks/routes.js +15 -0
  337. package/lib/hooks/routes.js.map +1 -0
  338. package/lib/hooks/setter.js +4 -3
  339. package/lib/hooks/setter.js.map +1 -1
  340. package/lib/hooks/sharedData.js +3 -3
  341. package/lib/hooks/sharedData.js.map +1 -1
  342. package/lib/index.d.ts +3 -1
  343. package/lib/index.js +4 -2
  344. package/lib/index.js.map +1 -1
  345. package/lib/modules/api.d.ts +2 -5
  346. package/lib/modules/api.js +12 -75
  347. package/lib/modules/api.js.map +1 -1
  348. package/lib/modules/core.d.ts +3 -0
  349. package/lib/modules/core.js +54 -0
  350. package/lib/modules/core.js.map +1 -0
  351. package/lib/modules/dependencies.d.ts +5 -6
  352. package/lib/modules/dependencies.js +12 -27
  353. package/lib/modules/dependencies.js.map +1 -1
  354. package/lib/modules/element.d.ts +5 -0
  355. package/lib/modules/element.js +173 -0
  356. package/lib/modules/element.js.map +1 -0
  357. package/lib/modules/index.d.ts +1 -0
  358. package/lib/modules/index.js +2 -1
  359. package/lib/modules/index.js.map +1 -1
  360. package/lib/setters/SetComponent.js +15 -0
  361. package/lib/setters/SetComponent.js.map +1 -0
  362. package/lib/setters/SetError.js +15 -0
  363. package/lib/setters/SetError.js.map +1 -0
  364. package/lib/setters/SetErrors.js +13 -0
  365. package/lib/setters/SetErrors.js.map +1 -0
  366. package/lib/setters/SetLayout.js +13 -0
  367. package/lib/setters/SetLayout.js.map +1 -0
  368. package/lib/{components → setters}/SetProvider.js +4 -5
  369. package/lib/setters/SetProvider.js.map +1 -0
  370. package/lib/setters/SetRedirect.js +16 -0
  371. package/lib/setters/SetRedirect.js.map +1 -0
  372. package/{esm/components → lib/setters}/SetRoute.d.ts +6 -2
  373. package/lib/setters/SetRoute.js +15 -0
  374. package/lib/setters/SetRoute.js.map +1 -0
  375. package/lib/setters/index.d.ts +7 -0
  376. package/lib/setters/index.js +11 -0
  377. package/lib/setters/index.js.map +1 -0
  378. package/lib/state/createActions.d.ts +2 -2
  379. package/lib/state/createActions.js +9 -13
  380. package/lib/state/createActions.js.map +1 -1
  381. package/lib/state/createGlobalState.d.ts +1 -2
  382. package/lib/state/createGlobalState.js +9 -34
  383. package/lib/state/createGlobalState.js.map +1 -1
  384. package/lib/state/index.js +1 -1
  385. package/lib/state/stateContext.js +1 -1
  386. package/lib/state/stateContext.js.map +1 -1
  387. package/lib/state/withApi.d.ts +1 -1
  388. package/lib/state/withApi.js +20 -105
  389. package/lib/state/withApi.js.map +1 -1
  390. package/lib/tools/codegen.d.ts +21 -0
  391. package/lib/tools/codegen.js +152 -0
  392. package/lib/tools/codegen.js.map +1 -0
  393. package/lib/tools/debugger.d.ts +4 -0
  394. package/lib/tools/debugger.js +58 -0
  395. package/lib/tools/debugger.js.map +1 -0
  396. package/lib/tools/emulator.d.ts +3 -0
  397. package/lib/tools/emulator.js +15 -0
  398. package/lib/tools/emulator.js.map +1 -0
  399. package/lib/types/api.d.ts +34 -9
  400. package/lib/types/common.d.ts +11 -11
  401. package/lib/types/components.d.ts +74 -8
  402. package/lib/types/config.d.ts +24 -17
  403. package/lib/types/data.d.ts +2 -2
  404. package/lib/types/extension.d.ts +31 -4
  405. package/lib/types/index.d.ts +1 -0
  406. package/lib/types/index.js +2 -1
  407. package/lib/types/index.js.map +1 -1
  408. package/lib/types/instance.d.ts +26 -4
  409. package/lib/types/layout.d.ts +3 -3
  410. package/lib/types/navigation.d.ts +94 -0
  411. package/lib/types/navigation.js +3 -0
  412. package/lib/types/navigation.js.map +1 -0
  413. package/lib/types/plugin.d.ts +1 -14
  414. package/lib/types/state.d.ts +66 -27
  415. package/lib/types/utils.d.ts +1 -1
  416. package/lib/utils/compare.d.ts +1 -1
  417. package/lib/utils/compare.js +26 -9
  418. package/lib/utils/compare.js.map +1 -1
  419. package/lib/utils/data.js +6 -7
  420. package/lib/utils/data.js.map +1 -1
  421. package/lib/utils/extension.d.ts +16 -0
  422. package/lib/utils/extension.js +42 -0
  423. package/lib/utils/extension.js.map +1 -0
  424. package/lib/utils/foreign.d.ts +7 -2
  425. package/lib/utils/foreign.js +25 -12
  426. package/lib/utils/foreign.js.map +1 -1
  427. package/lib/utils/guid.js +3 -3
  428. package/lib/utils/guid.js.map +1 -1
  429. package/lib/utils/helpers.d.ts +11 -8
  430. package/lib/utils/helpers.js +31 -18
  431. package/lib/utils/helpers.js.map +1 -1
  432. package/lib/utils/index.d.ts +3 -1
  433. package/lib/utils/index.js +7 -2
  434. package/lib/utils/index.js.map +1 -1
  435. package/lib/utils/media.js +7 -7
  436. package/lib/utils/media.js.map +1 -1
  437. package/lib/utils/react.js +1 -1
  438. package/lib/utils/react.js.map +1 -1
  439. package/lib/utils/state.d.ts +57 -0
  440. package/lib/utils/state.js +94 -0
  441. package/lib/utils/state.js.map +1 -0
  442. package/lib/utils/storage.js +11 -12
  443. package/lib/utils/storage.js.map +1 -1
  444. package/package.json +51 -20
  445. package/src/Piral.test.tsx +7 -16
  446. package/src/Piral.tsx +12 -11
  447. package/src/PiralContext.tsx +43 -0
  448. package/src/RootListener.test.tsx +46 -0
  449. package/src/RootListener.tsx +26 -0
  450. package/src/actions/app.test.ts +114 -44
  451. package/src/actions/app.ts +33 -23
  452. package/src/actions/components.test.ts +11 -11
  453. package/src/actions/components.ts +5 -33
  454. package/src/actions/data.test.ts +50 -50
  455. package/src/actions/define.test.ts +2 -2
  456. package/src/actions/portal.test.ts +62 -17
  457. package/src/actions/portal.ts +19 -1
  458. package/src/actions/state.test.ts +3 -3
  459. package/src/actions/state.ts +8 -4
  460. package/src/components/ErrorBoundary.tsx +22 -49
  461. package/src/components/ExtensionSlot.test.tsx +115 -30
  462. package/src/components/ExtensionSlot.tsx +57 -18
  463. package/src/components/ForeignComponentContainer.test.tsx +100 -0
  464. package/src/components/ForeignComponentContainer.tsx +63 -0
  465. package/src/components/Mediator.test.tsx +16 -14
  466. package/src/components/Mediator.tsx +17 -9
  467. package/src/components/PiralGlobals.tsx +16 -0
  468. package/src/components/PiralRoutes.test.tsx +65 -57
  469. package/src/components/PiralRoutes.tsx +10 -17
  470. package/src/components/PiralSuspense.tsx +19 -0
  471. package/src/components/PiralView-server.test.tsx +61 -0
  472. package/src/components/PiralView.test.tsx +27 -26
  473. package/src/components/PiralView.tsx +28 -35
  474. package/src/components/PortalRenderer.tsx +12 -0
  475. package/src/components/ResponsiveLayout.test.tsx +18 -37
  476. package/src/components/ResponsiveLayout.tsx +18 -15
  477. package/src/components/SwitchErrorInfo.test.tsx +36 -0
  478. package/src/components/SwitchErrorInfo.tsx +5 -1
  479. package/src/components/components.tsx +20 -6
  480. package/src/components/index.ts +4 -10
  481. package/src/components/wrapComponent.tsx +74 -0
  482. package/src/createInstance.test.tsx +10 -0
  483. package/src/createInstance.tsx +19 -14
  484. package/src/{components → defaults}/DefaultErrorInfo.test.tsx +15 -18
  485. package/src/{components → defaults}/DefaultErrorInfo.tsx +2 -3
  486. package/src/defaults/DefaultLayout.test.tsx +23 -0
  487. package/src/defaults/DefaultLoadingIndicator.test.tsx +10 -0
  488. package/src/defaults/DefaultRouteSwitch_v5.tsx +15 -0
  489. package/src/defaults/DefaultRouteSwitch_v6.tsx +20 -0
  490. package/src/defaults/DefaultRouter_v5.tsx +8 -0
  491. package/src/defaults/DefaultRouter_v6.tsx +8 -0
  492. package/src/defaults/navigator_none.tsx +35 -0
  493. package/src/defaults/navigator_v5.tsx +99 -0
  494. package/src/defaults/navigator_v6.tsx +96 -0
  495. package/src/helpers.test.tsx +30 -49
  496. package/src/helpers.tsx +31 -108
  497. package/src/hooks/action.ts +2 -3
  498. package/src/hooks/globalState.ts +10 -9
  499. package/src/hooks/index.ts +2 -5
  500. package/src/hooks/media.ts +2 -1
  501. package/src/hooks/piletApi.ts +14 -0
  502. package/src/hooks/routes.ts +14 -0
  503. package/src/hooks/setter-server.test.ts +22 -0
  504. package/src/hooks/setter.test.ts +18 -0
  505. package/src/hooks/setter.ts +2 -1
  506. package/src/index.tsx +3 -1
  507. package/src/modules/api.test.ts +15 -26
  508. package/src/modules/api.ts +3 -66
  509. package/src/modules/core.test.ts +148 -0
  510. package/src/modules/core.ts +52 -0
  511. package/src/modules/dependencies.test.ts +16 -5
  512. package/src/modules/dependencies.ts +13 -31
  513. package/src/modules/element-server.test.ts +29 -0
  514. package/src/modules/element.test.ts +67 -0
  515. package/src/modules/element.ts +212 -0
  516. package/src/modules/index.ts +1 -0
  517. package/src/{components → setters}/SetComponent.test.tsx +9 -8
  518. package/src/{components → setters}/SetComponent.tsx +2 -2
  519. package/src/{components → setters}/SetError.test.tsx +9 -8
  520. package/src/{components → setters}/SetError.tsx +2 -2
  521. package/src/{components → setters}/SetErrors.test.tsx +9 -8
  522. package/src/{components → setters}/SetLayout.test.tsx +9 -8
  523. package/src/{components → setters}/SetProvider.test.tsx +9 -8
  524. package/src/{components → setters}/SetProvider.tsx +2 -2
  525. package/src/{components → setters}/SetRedirect.test.tsx +9 -8
  526. package/src/{components → setters}/SetRedirect.tsx +4 -4
  527. package/src/{components → setters}/SetRoute.test.tsx +9 -8
  528. package/src/{components → setters}/SetRoute.tsx +7 -4
  529. package/src/setters/index.ts +7 -0
  530. package/src/state/createActions.test.ts +2 -2
  531. package/src/state/createActions.ts +5 -3
  532. package/src/state/createGlobalState.test.ts +55 -54
  533. package/src/state/createGlobalState.ts +4 -28
  534. package/src/state/withApi.test.tsx +87 -40
  535. package/src/state/withApi.tsx +31 -165
  536. package/src/tools/codegen.ts +193 -0
  537. package/src/tools/debugger.ts +84 -0
  538. package/src/tools/emulator.ts +13 -0
  539. package/src/types/api.ts +47 -10
  540. package/src/types/components.ts +76 -7
  541. package/src/types/config.ts +23 -17
  542. package/src/types/extension.ts +38 -5
  543. package/src/types/index.ts +1 -0
  544. package/src/types/instance.ts +28 -4
  545. package/src/types/navigation.ts +101 -0
  546. package/src/types/plugin.ts +1 -15
  547. package/src/types/state.ts +65 -25
  548. package/src/types/utils.ts +1 -1
  549. package/src/utils/compare.test.ts +15 -15
  550. package/src/utils/compare.ts +23 -3
  551. package/src/utils/extension.test.tsx +21 -0
  552. package/src/utils/extension.tsx +48 -0
  553. package/src/utils/foreign.test.ts +29 -11
  554. package/src/utils/foreign.ts +34 -7
  555. package/src/utils/guid.test.ts +6 -1
  556. package/src/utils/helpers.test.ts +52 -0
  557. package/src/utils/helpers.ts +22 -8
  558. package/src/utils/index.ts +4 -1
  559. package/src/utils/media-server.test.ts +13 -0
  560. package/src/utils/media.ts +2 -2
  561. package/src/utils/state.test.ts +37 -0
  562. package/src/utils/state.ts +131 -0
  563. package/dependencies.codegen +0 -9
  564. package/dependencies.codegen.native.js +0 -2
  565. package/esm/components/DefaultErrorInfo.js +0 -12
  566. package/esm/components/DefaultErrorInfo.js.map +0 -1
  567. package/esm/components/DefaultLayout.js.map +0 -1
  568. package/esm/components/DefaultLoader.js.map +0 -1
  569. package/esm/components/SetComponent.js +0 -12
  570. package/esm/components/SetComponent.js.map +0 -1
  571. package/esm/components/SetError.js +0 -12
  572. package/esm/components/SetError.js.map +0 -1
  573. package/esm/components/SetErrors.js +0 -10
  574. package/esm/components/SetErrors.js.map +0 -1
  575. package/esm/components/SetLayout.js +0 -10
  576. package/esm/components/SetLayout.js.map +0 -1
  577. package/esm/components/SetProvider.js +0 -12
  578. package/esm/components/SetProvider.js.map +0 -1
  579. package/esm/components/SetRedirect.js +0 -14
  580. package/esm/components/SetRedirect.js.map +0 -1
  581. package/esm/components/SetRoute.js +0 -12
  582. package/esm/components/SetRoute.js.map +0 -1
  583. package/esm/hooks/debounce.d.ts +0 -8
  584. package/esm/hooks/debounce.js +0 -18
  585. package/esm/hooks/debounce.js.map +0 -1
  586. package/esm/hooks/lockBodyScroll.d.ts +0 -6
  587. package/esm/hooks/lockBodyScroll.js +0 -13
  588. package/esm/hooks/lockBodyScroll.js.map +0 -1
  589. package/esm/hooks/onClickOutside.d.ts +0 -8
  590. package/esm/hooks/onClickOutside.js +0 -23
  591. package/esm/hooks/onClickOutside.js.map +0 -1
  592. package/esm/hooks/onScreenVisible.d.ts +0 -11
  593. package/esm/hooks/onScreenVisible.js +0 -28
  594. package/esm/hooks/onScreenVisible.js.map +0 -1
  595. package/esm/hooks/promise.d.ts +0 -13
  596. package/esm/hooks/promise.js +0 -21
  597. package/esm/hooks/promise.js.map +0 -1
  598. package/esm/utils/events.d.ts +0 -3
  599. package/esm/utils/events.js +0 -35
  600. package/esm/utils/events.js.map +0 -1
  601. package/lib/components/DefaultErrorInfo.js +0 -15
  602. package/lib/components/DefaultErrorInfo.js.map +0 -1
  603. package/lib/components/DefaultLayout.js.map +0 -1
  604. package/lib/components/DefaultLoader.js.map +0 -1
  605. package/lib/components/SetComponent.js +0 -16
  606. package/lib/components/SetComponent.js.map +0 -1
  607. package/lib/components/SetError.js +0 -16
  608. package/lib/components/SetError.js.map +0 -1
  609. package/lib/components/SetErrors.js +0 -14
  610. package/lib/components/SetErrors.js.map +0 -1
  611. package/lib/components/SetLayout.js +0 -14
  612. package/lib/components/SetLayout.js.map +0 -1
  613. package/lib/components/SetProvider.js.map +0 -1
  614. package/lib/components/SetRedirect.js +0 -18
  615. package/lib/components/SetRedirect.js.map +0 -1
  616. package/lib/components/SetRoute.js +0 -16
  617. package/lib/components/SetRoute.js.map +0 -1
  618. package/lib/hooks/debounce.d.ts +0 -8
  619. package/lib/hooks/debounce.js +0 -22
  620. package/lib/hooks/debounce.js.map +0 -1
  621. package/lib/hooks/lockBodyScroll.d.ts +0 -6
  622. package/lib/hooks/lockBodyScroll.js +0 -17
  623. package/lib/hooks/lockBodyScroll.js.map +0 -1
  624. package/lib/hooks/onClickOutside.d.ts +0 -8
  625. package/lib/hooks/onClickOutside.js +0 -27
  626. package/lib/hooks/onClickOutside.js.map +0 -1
  627. package/lib/hooks/onScreenVisible.d.ts +0 -11
  628. package/lib/hooks/onScreenVisible.js +0 -32
  629. package/lib/hooks/onScreenVisible.js.map +0 -1
  630. package/lib/hooks/promise.d.ts +0 -13
  631. package/lib/hooks/promise.js +0 -25
  632. package/lib/hooks/promise.js.map +0 -1
  633. package/lib/utils/events.d.ts +0 -3
  634. package/lib/utils/events.js +0 -39
  635. package/lib/utils/events.js.map +0 -1
  636. package/src/components/DefaultLayout.test.tsx +0 -23
  637. package/src/components/DefaultLoader.test.tsx +0 -10
  638. package/src/hooks/debounce.test.ts +0 -67
  639. package/src/hooks/debounce.ts +0 -19
  640. package/src/hooks/globalState.test.ts +0 -47
  641. package/src/hooks/lockBodyScroll.test.ts +0 -24
  642. package/src/hooks/lockBodyScroll.ts +0 -13
  643. package/src/hooks/onClickOutside.test.ts +0 -113
  644. package/src/hooks/onClickOutside.ts +0 -25
  645. package/src/hooks/onScreenVisible.test.ts +0 -68
  646. package/src/hooks/onScreenVisible.ts +0 -28
  647. package/src/hooks/promise.test.ts +0 -76
  648. package/src/hooks/promise.ts +0 -35
  649. package/src/utils/events.test.ts +0 -65
  650. package/src/utils/events.ts +0 -39
  651. package/esm/{components → defaults}/DefaultErrorInfo.d.ts +0 -0
  652. package/esm/{components → defaults}/DefaultLayout.d.ts +0 -0
  653. package/esm/{components/DefaultLoader.d.ts → defaults/DefaultLoadingIndicator.d.ts} +0 -0
  654. package/esm/{components → setters}/SetComponent.d.ts +0 -0
  655. package/esm/{components → setters}/SetError.d.ts +0 -0
  656. package/esm/{components → setters}/SetErrors.d.ts +0 -0
  657. package/esm/{components → setters}/SetLayout.d.ts +0 -0
  658. package/esm/{components → setters}/SetProvider.d.ts +0 -0
  659. package/esm/{components → setters}/SetRedirect.d.ts +0 -0
  660. package/lib/{components → defaults}/DefaultErrorInfo.d.ts +0 -0
  661. package/lib/{components → defaults}/DefaultLayout.d.ts +0 -0
  662. package/lib/{components/DefaultLoader.d.ts → defaults/DefaultLoadingIndicator.d.ts} +0 -0
  663. package/lib/{components → setters}/SetComponent.d.ts +0 -0
  664. package/lib/{components → setters}/SetError.d.ts +0 -0
  665. package/lib/{components → setters}/SetErrors.d.ts +0 -0
  666. package/lib/{components → setters}/SetLayout.d.ts +0 -0
  667. package/lib/{components → setters}/SetProvider.d.ts +0 -0
  668. package/lib/{components → setters}/SetRedirect.d.ts +0 -0
  669. package/src/{components → defaults}/DefaultLayout.tsx +1 -1
  670. /package/src/{components/DefaultLoader.tsx → defaults/DefaultLoadingIndicator.tsx} +0 -0
  671. /package/src/{components → setters}/SetErrors.tsx +0 -0
  672. /package/src/{components → setters}/SetLayout.tsx +0 -0
@@ -1,96 +1,166 @@
1
+ import create from 'zustand';
2
+ import { render } from '@testing-library/react';
1
3
  import { createElement } from 'react';
2
- import { Atom, deref } from '@dbeining/react-atom';
3
- import { changeLayout, includeProvider } from './app';
4
- import { createListener } from '../utils';
4
+ import { createListener, Pilet } from 'piral-base';
5
+ import {
6
+ includeProvider,
7
+ initialize,
8
+ injectPilet,
9
+ removePilet,
10
+ setComponent,
11
+ setErrorComponent,
12
+ setRoute,
13
+ } from './app';
5
14
  import { createActions } from '../state';
6
- import { mount } from 'enzyme';
15
+ import { RootListener } from '../RootListener';
16
+
17
+ const pilet: Pilet = {
18
+ name: 'my-pilet',
19
+ version: '1.0.0',
20
+ link: undefined,
21
+ custom: undefined,
22
+ };
7
23
 
8
24
  describe('App Actions Module', () => {
9
- it('changeLayout changes the current layout', () => {
10
- const state = Atom.of({
11
- foo: 5,
12
- app: {
13
- layout: 'tablet',
14
- },
15
- });
25
+ it('initialize initializes state data', () => {
26
+ const state: any = create(() => ({
27
+ app: {},
28
+ }));
16
29
  const ctx = createActions(state, createListener({}));
17
- changeLayout(ctx, 'mobile');
18
- expect(deref(state)).toEqual({
19
- foo: 5,
20
- app: {
21
- layout: 'mobile',
22
- },
30
+ const modules: any = ['pilet 1', 'pilet 2', 'pilet 3'];
31
+ initialize(ctx, false, undefined, modules);
32
+ expect(state.getState()).toEqual({
33
+ app: { error: undefined, loading: false },
34
+ modules: ['pilet 1', 'pilet 2', 'pilet 3'],
23
35
  });
24
36
  });
25
37
 
38
+ it('removePilet removes pilet', () => {
39
+ const state: any = create(() => ({
40
+ app: {},
41
+ modules: [pilet],
42
+ registry: { 'my-pilet': pilet },
43
+ }));
44
+ const ctx = createActions(state, createListener({}));
45
+ removePilet(ctx, 'my-pilet');
46
+ expect(state.getState()).toEqual({ app: {}, modules: [], registry: { 'my-pilet': pilet } });
47
+ });
48
+
49
+ it('injectPilet injects pilet', () => {
50
+ const pilet2: Pilet = {
51
+ name: 'my-pilet2',
52
+ version: '1.0.0',
53
+ link: undefined,
54
+ custom: undefined,
55
+ };
56
+ const state: any = create(() => ({
57
+ app: {},
58
+ modules: [pilet2],
59
+ registry: { pilet2 },
60
+ }));
61
+ const ctx = createActions(state, createListener({}));
62
+ injectPilet(ctx, pilet);
63
+ expect(state.getState()).toEqual({ app: {}, modules: [pilet2, pilet], registry: { pilet2 } });
64
+ });
65
+
66
+ it('setComponent set component', () => {
67
+ const state: any = create(() => ({
68
+ components: {},
69
+ }));
70
+ const ctx = createActions(state, createListener({}));
71
+ const node = RootListener;
72
+ setComponent(ctx, 'ComponentName', node);
73
+ expect(state.getState()).toEqual({ components: { ComponentName: RootListener } });
74
+ });
75
+
76
+ it('setErrorComponent set error component', () => {
77
+ const state: any = create(() => ({
78
+ errorComponents: {},
79
+ }));
80
+ const ctx = createActions(state, createListener({}));
81
+ const node = RootListener;
82
+ setErrorComponent(ctx, 'ComponentName', node);
83
+ expect(state.getState()).toEqual({ errorComponents: { ComponentName: RootListener } });
84
+ });
85
+
86
+ it('setRoute sets route', () => {
87
+ const state: any = create(() => ({
88
+ routes: {},
89
+ }));
90
+ const ctx = createActions(state, createListener({}));
91
+ const node = RootListener;
92
+ setRoute(ctx, './dist', RootListener);
93
+ expect(state.getState()).toEqual({ routes: { './dist': RootListener } });
94
+ });
95
+
26
96
  it('allows using includeProvider once', () => {
27
- const state = Atom.of({
97
+ const state: any = create(() => ({
28
98
  provider: undefined,
29
- });
99
+ }));
30
100
  const Provider = (props) => createElement('div', props);
31
101
  const ctx = createActions(state, createListener({}));
32
102
  includeProvider(ctx, createElement(Provider));
33
103
 
34
- const NewProvider = deref(state).provider;
104
+ const NewProvider = state.getState().provider;
35
105
  expect(NewProvider).not.toBeUndefined();
36
106
 
37
- const node = mount(createElement(NewProvider, undefined, 'Some text'));
38
- expect(node.find('div').length).toBe(1);
39
- expect(node.text()).toBe('Some text');
107
+ const node = render(createElement(NewProvider, undefined, 'Some text'));
108
+ expect(node.container.querySelectorAll('div').length).toBe(1);
109
+ expect(node.container.textContent).toBe('Some text');
40
110
  });
41
111
 
42
112
  it('allows using includeProvider twice', () => {
43
- const state = Atom.of({
113
+ const state: any = create(() => ({
44
114
  provider: undefined,
45
- });
115
+ }));
46
116
  const Provider1 = (props) => createElement('i', props);
47
117
  const Provider2 = (props) => createElement('b', props);
48
118
  const ctx = createActions(state, createListener({}));
49
119
  includeProvider(ctx, createElement(Provider1));
50
120
  includeProvider(ctx, createElement(Provider2));
51
121
 
52
- const NewProvider = deref(state).provider;
122
+ const NewProvider = state.getState().provider;
53
123
  expect(NewProvider).not.toBeUndefined();
54
124
 
55
- const node = mount(createElement(NewProvider, undefined, 'Some text'));
56
- expect(node.find('b').length).toBe(1);
57
- expect(node.find('i').length).toBe(1);
58
- expect(node.text()).toBe('Some text');
125
+ const node = render(createElement(NewProvider, undefined, 'Some text'));
126
+ expect(node.container.querySelectorAll('b').length).toBe(1);
127
+ expect(node.container.querySelectorAll('i').length).toBe(1);
128
+ expect(node.container.textContent).toBe('Some text');
59
129
  });
60
130
 
61
131
  it('allows using includeProvider with props', () => {
62
- const state = Atom.of({
132
+ const state: any = create(() => ({
63
133
  provider: undefined,
64
- });
134
+ }));
65
135
  const Provider = (props) => createElement('i', props, props.text, props.children);
66
136
  const ctx = createActions(state, createListener({}));
67
137
  includeProvider(ctx, createElement(Provider, { text: 'Icecream' }));
68
138
 
69
- const NewProvider = deref(state).provider;
139
+ const NewProvider = state.getState().provider;
70
140
  expect(NewProvider).not.toBeUndefined();
71
141
 
72
- const node = mount(createElement(NewProvider, undefined, 'Some text'));
73
- expect(node.find('b').length).toBe(0);
74
- expect(node.find('i').length).toBe(1);
75
- expect(node.text()).toBe('IcecreamSome text');
142
+ const node = render(createElement(NewProvider, undefined, 'Some text'));
143
+ expect(node.container.querySelectorAll('b').length).toBe(0);
144
+ expect(node.container.querySelectorAll('i').length).toBe(1);
145
+ expect(node.container.textContent).toBe('IcecreamSome text');
76
146
  });
77
147
 
78
148
  it('allows multiple includeProvider with props', () => {
79
- const state = Atom.of({
149
+ const state: any = create(() => ({
80
150
  provider: undefined,
81
- });
151
+ }));
82
152
  const Provider1 = (props) => createElement('i', props, props.text, props.children);
83
153
  const Provider2 = (props) => createElement('b', props, props.text, props.children);
84
154
  const ctx = createActions(state, createListener({}));
85
155
  includeProvider(ctx, createElement(Provider1, { text: 'Icecream' }));
86
156
  includeProvider(ctx, createElement(Provider2, { text: 'Chocolate' }));
87
157
 
88
- const NewProvider = deref(state).provider;
158
+ const NewProvider = state.getState().provider;
89
159
  expect(NewProvider).not.toBeUndefined();
90
160
 
91
- const node = mount(createElement(NewProvider, undefined, 'Some text'));
92
- expect(node.find('b').length).toBe(1);
93
- expect(node.find('i').length).toBe(1);
94
- expect(node.text()).toBe('IcecreamChocolateSome text');
161
+ const node = render(createElement(NewProvider, undefined, 'Some text'));
162
+ expect(node.container.querySelectorAll('b').length).toBe(1);
163
+ expect(node.container.querySelectorAll('i').length).toBe(1);
164
+ expect(node.container.textContent).toBe('IcecreamChocolateSome text');
95
165
  });
96
166
  });
@@ -1,23 +1,17 @@
1
- import { ComponentType, cloneElement, createElement } from 'react';
1
+ import { ComponentType } from 'react';
2
2
  import { RouteComponentProps } from 'react-router';
3
- import { withKey, replaceOrAddItem, removeNested } from '../utils';
3
+ import { runPilet } from 'piral-base';
4
+ import { withKey, replaceOrAddItem, removeNested, withProvider, withRoute, noop } from '../utils';
4
5
  import {
5
- LayoutType,
6
6
  ComponentsState,
7
7
  ErrorComponentsState,
8
8
  BaseRegistration,
9
9
  RegistryState,
10
10
  GlobalStateContext,
11
11
  Pilet,
12
+ PiletEntry,
12
13
  } from '../types';
13
14
 
14
- export function changeLayout(ctx: GlobalStateContext, current: LayoutType) {
15
- ctx.dispatch((state) => ({
16
- ...state,
17
- app: withKey(state.app, 'layout', current),
18
- }));
19
- }
20
-
21
15
  export function initialize(ctx: GlobalStateContext, loading: boolean, error: Error | undefined, modules: Array<Pilet>) {
22
16
  ctx.dispatch((state) => ({
23
17
  ...state,
@@ -30,16 +24,40 @@ export function initialize(ctx: GlobalStateContext, loading: boolean, error: Err
30
24
  }));
31
25
  }
32
26
 
33
- export function injectPilet(ctx: GlobalStateContext, pilet: Pilet) {
27
+ export function addPilet(ctx: GlobalStateContext, meta: PiletEntry): Promise<void> {
28
+ return ctx.options
29
+ .loadPilet(meta)
30
+ .then((pilet) => ctx.injectPilet(pilet))
31
+ .then((pilet) => runPilet(ctx.options.createApi, pilet, ctx.options.hooks))
32
+ .then(noop);
33
+ }
34
+
35
+ export function removePilet(ctx: GlobalStateContext, name: string): Promise<void> {
36
+ ctx.dispatch((state) => ({
37
+ ...state,
38
+ modules: state.modules.filter((m) => m.name !== name),
39
+ registry: removeNested<RegistryState, BaseRegistration>(state.registry, (m) => m.pilet === name),
40
+ }));
41
+
42
+ ctx.emit('unload-pilet', {
43
+ name,
44
+ });
45
+
46
+ return Promise.resolve();
47
+ }
48
+
49
+ export function injectPilet(ctx: GlobalStateContext, pilet: Pilet): Pilet {
34
50
  ctx.dispatch((state) => ({
35
51
  ...state,
36
52
  modules: replaceOrAddItem(state.modules, pilet, (m) => m.name === pilet.name),
37
53
  registry: removeNested<RegistryState, BaseRegistration>(state.registry, (m) => m.pilet === pilet.name),
38
54
  }));
39
-
55
+
40
56
  ctx.emit('unload-pilet', {
41
57
  name: pilet.name,
42
58
  });
59
+
60
+ return pilet;
43
61
  }
44
62
 
45
63
  export function setComponent<TKey extends keyof ComponentsState>(
@@ -64,22 +82,14 @@ export function setErrorComponent<TKey extends keyof ErrorComponentsState>(
64
82
  }));
65
83
  }
66
84
 
67
- export function setRoute<T = {}>(
85
+ export function setRoute<T extends { [K in keyof T]?: string } = {}>(
68
86
  ctx: GlobalStateContext,
69
87
  path: string,
70
88
  component: ComponentType<RouteComponentProps<T>>,
71
89
  ) {
72
- ctx.dispatch((state) => ({
73
- ...state,
74
- routes: withKey(state.routes, path, component),
75
- }));
90
+ ctx.dispatch(withRoute(path, component));
76
91
  }
77
92
 
78
93
  export function includeProvider(ctx: GlobalStateContext, provider: JSX.Element) {
79
- const wrapper: React.FC = (props) => cloneElement(provider, props);
80
-
81
- ctx.dispatch((state) => ({
82
- ...state,
83
- provider: !state.provider ? wrapper : (props) => createElement(state.provider, undefined, wrapper(props)),
84
- }));
94
+ ctx.dispatch(withProvider(provider));
85
95
  }
@@ -1,20 +1,20 @@
1
- import { Atom, deref } from '@dbeining/react-atom';
1
+ import create from 'zustand';
2
+ import { createListener } from 'piral-base';
2
3
  import { registerExtension, registerPage, unregisterExtension, unregisterPage } from './components';
3
4
  import { createActions } from '../state';
4
- import { createListener } from '../utils';
5
5
 
6
6
  describe('Components Actions Module', () => {
7
7
  it('registerExtension and unregisterExtension', () => {
8
- const state = Atom.of({
8
+ const state: any = create(() => ({
9
9
  foo: 5,
10
10
  registry: {
11
11
  foo: 5,
12
12
  extensions: {},
13
13
  },
14
- });
14
+ }));
15
15
  const ctx = createActions(state, createListener({}));
16
16
  registerExtension(ctx, 'foo', 10 as any);
17
- expect(deref(state)).toEqual({
17
+ expect(state.getState()).toEqual({
18
18
  foo: 5,
19
19
  registry: {
20
20
  foo: 5,
@@ -23,8 +23,8 @@ describe('Components Actions Module', () => {
23
23
  },
24
24
  },
25
25
  });
26
- unregisterExtension(ctx, 'foo');
27
- expect(deref(state)).toEqual({
26
+ unregisterExtension(ctx, 'foo', undefined);
27
+ expect(state.getState()).toEqual({
28
28
  foo: 5,
29
29
  registry: {
30
30
  foo: 5,
@@ -36,16 +36,16 @@ describe('Components Actions Module', () => {
36
36
  });
37
37
 
38
38
  it('registerPage and unregisterPage', () => {
39
- const state = Atom.of({
39
+ const state: any = create(() => ({
40
40
  foo: 5,
41
41
  registry: {
42
42
  foo: 5,
43
43
  pages: {},
44
44
  },
45
- });
45
+ }));
46
46
  const ctx = createActions(state, createListener({}));
47
47
  registerPage(ctx, 'foo', 10 as any);
48
- expect(deref(state)).toEqual({
48
+ expect(state.getState()).toEqual({
49
49
  foo: 5,
50
50
  registry: {
51
51
  foo: 5,
@@ -55,7 +55,7 @@ describe('Components Actions Module', () => {
55
55
  },
56
56
  });
57
57
  unregisterPage(ctx, 'foo');
58
- expect(deref(state)).toEqual({
58
+ expect(state.getState()).toEqual({
59
59
  foo: 5,
60
60
  registry: {
61
61
  foo: 5,
@@ -1,46 +1,18 @@
1
- import { appendItem, excludeOn, withKey, withoutKey } from '../utils';
1
+ import { withExtension, withoutExtension, withoutPage, withPage } from '../utils';
2
2
  import { PageRegistration, ExtensionRegistration, GlobalStateContext } from '../types';
3
3
 
4
4
  export function registerPage(ctx: GlobalStateContext, name: string, value: PageRegistration) {
5
- ctx.dispatch((state) => ({
6
- ...state,
7
- registry: {
8
- ...state.registry,
9
- pages: withKey(state.registry.pages, name, value),
10
- },
11
- }));
5
+ ctx.dispatch(withPage(name, value));
12
6
  }
13
7
 
14
8
  export function unregisterPage(ctx: GlobalStateContext, name: string) {
15
- ctx.dispatch((state) => ({
16
- ...state,
17
- registry: {
18
- ...state.registry,
19
- pages: withoutKey(state.registry.pages, name),
20
- },
21
- }));
9
+ ctx.dispatch(withoutPage(name));
22
10
  }
23
11
 
24
12
  export function registerExtension(ctx: GlobalStateContext, name: string, value: ExtensionRegistration) {
25
- ctx.dispatch((state) => ({
26
- ...state,
27
- registry: {
28
- ...state.registry,
29
- extensions: withKey(state.registry.extensions, name, appendItem(state.registry.extensions[name], value)),
30
- },
31
- }));
13
+ ctx.dispatch(withExtension(name, value));
32
14
  }
33
15
 
34
16
  export function unregisterExtension(ctx: GlobalStateContext, name: string, reference: any) {
35
- ctx.dispatch((state) => ({
36
- ...state,
37
- registry: {
38
- ...state.registry,
39
- extensions: withKey(
40
- state.registry.extensions,
41
- name,
42
- excludeOn(state.registry.extensions[name], (m) => m.reference === reference),
43
- ),
44
- },
45
- }));
17
+ ctx.dispatch(withoutExtension(name, reference));
46
18
  }
@@ -1,22 +1,22 @@
1
- import { Atom, deref, swap } from '@dbeining/react-atom';
1
+ import create from 'zustand';
2
+ import { createListener } from 'piral-base';
2
3
  import { readDataItem, readDataValue, resetData, tryWriteDataItem, writeDataItem } from './data';
3
- import { createListener } from '../utils';
4
4
 
5
5
  describe('Data Actions Module', () => {
6
6
  it('readDataItem reads the current item', () => {
7
- const state = Atom.of({
7
+ const state = create(() => ({
8
8
  foo: 5,
9
9
  data: {
10
10
  foo: 10,
11
11
  },
12
- });
12
+ }));
13
13
  const ctx: any = {
14
14
  state,
15
15
  dispatch(update) {
16
- swap(state, update);
16
+ state.setState(update(state.getState()));
17
17
  },
18
18
  readState(select) {
19
- return select(deref(state));
19
+ return select(state.getState());
20
20
  },
21
21
  };
22
22
  const value = readDataItem(ctx, 'foo');
@@ -24,21 +24,21 @@ describe('Data Actions Module', () => {
24
24
  });
25
25
 
26
26
  it('readDataValue reads the current value', () => {
27
- const state = Atom.of({
27
+ const state = create(() => ({
28
28
  foo: 5,
29
29
  data: {
30
30
  foo: {
31
31
  value: 15,
32
32
  },
33
33
  },
34
- });
34
+ }));
35
35
  const ctx: any = {
36
36
  state,
37
37
  dispatch(update) {
38
- swap(state, update);
38
+ state.setState(update(state.getState()));
39
39
  },
40
40
  readState(select) {
41
- return select(deref(state));
41
+ return select(state.getState());
42
42
  },
43
43
  };
44
44
  const value = readDataValue(ctx, 'foo');
@@ -46,48 +46,48 @@ describe('Data Actions Module', () => {
46
46
  });
47
47
 
48
48
  it('resetData clears all items', () => {
49
- const state = Atom.of({
49
+ const state = create(() => ({
50
50
  foo: 5,
51
51
  data: {
52
52
  foo: 10,
53
53
  bar: [5],
54
54
  },
55
- });
55
+ }));
56
56
  const ctx: any = {
57
57
  state,
58
58
  dispatch(update) {
59
- swap(state, update);
59
+ state.setState(update(state.getState()));
60
60
  },
61
61
  readState(select) {
62
- return select(deref(state));
62
+ return select(state.getState());
63
63
  },
64
64
  };
65
65
  resetData(ctx);
66
- expect(deref(state)).toEqual({
66
+ expect(state.getState()).toEqual({
67
67
  foo: 5,
68
68
  data: {},
69
69
  });
70
70
  });
71
71
 
72
72
  it('writeDataItem adds a new data item', () => {
73
- const state = Atom.of({
73
+ const state = create(() => ({
74
74
  foo: 5,
75
75
  data: {
76
76
  foo: 10,
77
77
  bar: [5],
78
78
  },
79
- });
79
+ }));
80
80
  const ctx: any = Object.assign(createListener(undefined), {
81
81
  state,
82
82
  dispatch(update) {
83
- swap(state, update);
83
+ state.setState(update(state.getState()));
84
84
  },
85
85
  readState(select) {
86
- return select(deref(state));
86
+ return select(state.getState());
87
87
  },
88
88
  });
89
- writeDataItem(ctx, 'fi', 0);
90
- expect(deref(state)).toEqual({
89
+ writeDataItem(ctx, 'fi', 0, undefined, undefined, undefined);
90
+ expect(state.getState()).toEqual({
91
91
  foo: 5,
92
92
  data: {
93
93
  foo: 10,
@@ -103,24 +103,24 @@ describe('Data Actions Module', () => {
103
103
  });
104
104
 
105
105
  it('writeDataItem overwrites an existing data item', () => {
106
- const state = Atom.of({
106
+ const state = create(() => ({
107
107
  foo: 5,
108
108
  data: {
109
109
  foo: 10,
110
110
  bar: [5],
111
111
  },
112
- });
112
+ }));
113
113
  const ctx: any = Object.assign(createListener(undefined), {
114
114
  state,
115
115
  dispatch(update) {
116
- swap(state, update);
116
+ state.setState(update(state.getState()));
117
117
  },
118
118
  readState(select) {
119
- return select(deref(state));
119
+ return select(state.getState());
120
120
  },
121
121
  });
122
- writeDataItem(ctx, 'bar', 0);
123
- expect(deref(state)).toEqual({
122
+ writeDataItem(ctx, 'bar', 0, undefined, undefined, undefined);
123
+ expect(state.getState()).toEqual({
124
124
  foo: 5,
125
125
  data: {
126
126
  foo: 10,
@@ -135,24 +135,24 @@ describe('Data Actions Module', () => {
135
135
  });
136
136
 
137
137
  it('writeDataItem removes an existing data item', () => {
138
- const state = Atom.of({
138
+ const state = create(() => ({
139
139
  foo: 5,
140
140
  data: {
141
141
  foo: 10,
142
142
  bar: [5],
143
143
  },
144
- });
144
+ }));
145
145
  const ctx: any = Object.assign(createListener(undefined), {
146
146
  state,
147
147
  dispatch(update) {
148
- swap(state, update);
148
+ state.setState(update(state.getState()));
149
149
  },
150
150
  readState(select) {
151
- return select(deref(state));
151
+ return select(state.getState());
152
152
  },
153
153
  });
154
- writeDataItem(ctx, 'bar', null);
155
- expect(deref(state)).toEqual({
154
+ writeDataItem(ctx, 'bar', null, undefined, undefined, undefined);
155
+ expect(state.getState()).toEqual({
156
156
  foo: 5,
157
157
  data: {
158
158
  foo: 10,
@@ -161,27 +161,27 @@ describe('Data Actions Module', () => {
161
161
  });
162
162
 
163
163
  it('tryWriteDataItem can write new item', () => {
164
- const state = Atom.of({
164
+ const state = create(() => ({
165
165
  foo: 5,
166
166
  data: {
167
167
  foo: 10,
168
168
  },
169
- });
169
+ }));
170
170
  const ctx: any = Object.assign(createListener(undefined), {
171
171
  state,
172
172
  dispatch(update) {
173
- swap(state, update);
173
+ state.setState(update(state.getState()));
174
174
  },
175
175
  readState(select) {
176
- return select(deref(state));
176
+ return select(state.getState());
177
177
  },
178
178
  });
179
- const success = tryWriteDataItem(ctx, 'bar', 10, 'me');
179
+ const success = tryWriteDataItem(ctx, 'bar', 10, 'me', undefined, undefined);
180
180
  expect(success).toBe(true);
181
181
  });
182
182
 
183
183
  it('tryWriteDataItem can overwrite item if owner', () => {
184
- const state = Atom.of({
184
+ const state = create(() => ({
185
185
  foo: 5,
186
186
  data: {
187
187
  foo: 10,
@@ -190,23 +190,23 @@ describe('Data Actions Module', () => {
190
190
  value: 5,
191
191
  },
192
192
  },
193
- });
193
+ }));
194
194
  const ctx: any = Object.assign(createListener(undefined), {
195
195
  state,
196
196
  dispatch(update) {
197
- swap(state, update);
197
+ state.setState(update(state.getState()));
198
198
  },
199
199
  readState(select) {
200
- return select(deref(state));
200
+ return select(state.getState());
201
201
  },
202
202
  });
203
- const success = tryWriteDataItem(ctx, 'bar', 10, 'me');
203
+ const success = tryWriteDataItem(ctx, 'bar', 10, 'me', undefined, undefined);
204
204
  expect(success).toBe(true);
205
- expect(deref(state).data.bar.value).toBe(10);
205
+ expect(state.getState().data.bar.value).toBe(10);
206
206
  });
207
207
 
208
208
  it('tryWriteDataItem can not overwrite item if not owner', () => {
209
- const state = Atom.of({
209
+ const state = create(() => ({
210
210
  foo: 5,
211
211
  data: {
212
212
  foo: 10,
@@ -215,18 +215,18 @@ describe('Data Actions Module', () => {
215
215
  value: 5,
216
216
  },
217
217
  },
218
- });
218
+ }));
219
219
  const ctx: any = Object.assign(createListener(undefined), {
220
220
  state,
221
221
  dispatch(update) {
222
- swap(state, update);
222
+ state.setState(update(state.getState()));
223
223
  },
224
224
  readState(select) {
225
- return select(deref(state));
225
+ return select(state.getState());
226
226
  },
227
227
  });
228
- const success = tryWriteDataItem(ctx, 'bar', 10, 'me');
228
+ const success = tryWriteDataItem(ctx, 'bar', 10, 'me', undefined, undefined);
229
229
  expect(success).toBe(false);
230
- expect(deref(state).data.bar.value).toBe(5);
230
+ expect(state.getState().data.bar.value).toBe(5);
231
231
  });
232
232
  });