piral-core 0.15.0-alpha.4314 → 0.15.0-alpha.4355

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 (157) hide show
  1. package/app.codegen +191 -0
  2. package/{debug.codegen.d.ts → app.codegen.d.ts} +10 -1
  3. package/esm/actions/app.d.ts +1 -0
  4. package/esm/actions/app.js +3 -0
  5. package/esm/actions/app.js.map +1 -1
  6. package/esm/actions/state.js +6 -7
  7. package/esm/actions/state.js.map +1 -1
  8. package/esm/components/PiralRoutes.js +2 -6
  9. package/esm/components/PiralRoutes.js.map +1 -1
  10. package/esm/components/wrapComponent.js +2 -2
  11. package/esm/components/wrapComponent.js.map +1 -1
  12. package/esm/createInstance.js +1 -1
  13. package/esm/createInstance.js.map +1 -1
  14. package/esm/debugger.js +4 -2
  15. package/esm/debugger.js.map +1 -1
  16. package/esm/defaults/{DefaultRouteSwitch.d.ts → DefaultRouteSwitch_v5.d.ts} +0 -0
  17. package/esm/defaults/{DefaultRouteSwitch.js → DefaultRouteSwitch_v5.js} +2 -1
  18. package/esm/defaults/DefaultRouteSwitch_v5.js.map +1 -0
  19. package/{lib/defaults/DefaultRouteSwitch.d.ts → esm/defaults/DefaultRouteSwitch_v6.d.ts} +0 -0
  20. package/esm/defaults/DefaultRouteSwitch_v6.js +15 -0
  21. package/esm/defaults/DefaultRouteSwitch_v6.js.map +1 -0
  22. package/esm/defaults/{DefaultRouter.d.ts → DefaultRouter_v5.d.ts} +0 -0
  23. package/esm/defaults/{DefaultRouter.js → DefaultRouter_v5.js} +2 -1
  24. package/esm/defaults/DefaultRouter_v5.js.map +1 -0
  25. package/{lib/defaults/DefaultRouter.d.ts → esm/defaults/DefaultRouter_v6.d.ts} +0 -0
  26. package/esm/defaults/DefaultRouter_v6.js +9 -0
  27. package/esm/defaults/DefaultRouter_v6.js.map +1 -0
  28. package/esm/emulator.js +2 -3
  29. package/esm/emulator.js.map +1 -1
  30. package/esm/helpers.js +1 -1
  31. package/esm/helpers.js.map +1 -1
  32. package/esm/hooks/globalState.js +2 -9
  33. package/esm/hooks/globalState.js.map +1 -1
  34. package/esm/hooks/index.d.ts +1 -0
  35. package/esm/hooks/index.js +1 -0
  36. package/esm/hooks/index.js.map +1 -1
  37. package/esm/hooks/routes.d.ts +2 -0
  38. package/esm/hooks/routes.js +11 -0
  39. package/esm/hooks/routes.js.map +1 -0
  40. package/esm/modules/dependencies.js +1 -1
  41. package/esm/modules/dependencies.js.map +1 -1
  42. package/esm/state/createActions.d.ts +2 -2
  43. package/esm/state/createActions.js.map +1 -1
  44. package/esm/state/createGlobalState.d.ts +1 -2
  45. package/esm/state/createGlobalState.js +4 -27
  46. package/esm/state/createGlobalState.js.map +1 -1
  47. package/esm/types/components.d.ts +14 -10
  48. package/esm/types/state.d.ts +8 -3
  49. package/lib/actions/app.d.ts +1 -0
  50. package/lib/actions/app.js +5 -1
  51. package/lib/actions/app.js.map +1 -1
  52. package/lib/actions/state.js +6 -7
  53. package/lib/actions/state.js.map +1 -1
  54. package/lib/components/PiralRoutes.js +1 -5
  55. package/lib/components/PiralRoutes.js.map +1 -1
  56. package/lib/components/wrapComponent.js +2 -2
  57. package/lib/components/wrapComponent.js.map +1 -1
  58. package/lib/createInstance.js +1 -1
  59. package/lib/createInstance.js.map +1 -1
  60. package/lib/debugger.js +4 -2
  61. package/lib/debugger.js.map +1 -1
  62. package/lib/defaults/DefaultRouteSwitch_v5.d.ts +3 -0
  63. package/lib/defaults/{DefaultRouteSwitch.js → DefaultRouteSwitch_v5.js} +2 -1
  64. package/lib/defaults/DefaultRouteSwitch_v5.js.map +1 -0
  65. package/lib/defaults/DefaultRouteSwitch_v6.d.ts +3 -0
  66. package/lib/defaults/DefaultRouteSwitch_v6.js +19 -0
  67. package/lib/defaults/DefaultRouteSwitch_v6.js.map +1 -0
  68. package/lib/defaults/DefaultRouter_v5.d.ts +3 -0
  69. package/lib/defaults/{DefaultRouter.js → DefaultRouter_v5.js} +2 -1
  70. package/lib/defaults/DefaultRouter_v5.js.map +1 -0
  71. package/lib/defaults/DefaultRouter_v6.d.ts +3 -0
  72. package/lib/defaults/DefaultRouter_v6.js +13 -0
  73. package/lib/defaults/DefaultRouter_v6.js.map +1 -0
  74. package/lib/emulator.js +2 -3
  75. package/lib/emulator.js.map +1 -1
  76. package/lib/helpers.js +3 -3
  77. package/lib/helpers.js.map +1 -1
  78. package/lib/hooks/globalState.js +2 -9
  79. package/lib/hooks/globalState.js.map +1 -1
  80. package/lib/hooks/index.d.ts +1 -0
  81. package/lib/hooks/index.js +1 -0
  82. package/lib/hooks/index.js.map +1 -1
  83. package/lib/hooks/routes.d.ts +2 -0
  84. package/lib/hooks/routes.js +15 -0
  85. package/lib/hooks/routes.js.map +1 -0
  86. package/lib/modules/dependencies.js +3 -3
  87. package/lib/modules/dependencies.js.map +1 -1
  88. package/lib/state/createActions.d.ts +2 -2
  89. package/lib/state/createActions.js.map +1 -1
  90. package/lib/state/createGlobalState.d.ts +1 -2
  91. package/lib/state/createGlobalState.js +4 -27
  92. package/lib/state/createGlobalState.js.map +1 -1
  93. package/lib/types/components.d.ts +14 -10
  94. package/lib/types/state.d.ts +8 -3
  95. package/package.json +13 -17
  96. package/src/Piral.test.tsx +7 -5
  97. package/src/RootListener.test.tsx +8 -4
  98. package/src/actions/app.test.ts +32 -32
  99. package/src/actions/app.ts +4 -0
  100. package/src/actions/components.test.ts +10 -10
  101. package/src/actions/data.test.ts +49 -49
  102. package/src/actions/define.test.ts +2 -2
  103. package/src/actions/portal.test.ts +17 -17
  104. package/src/actions/state.test.ts +3 -3
  105. package/src/actions/state.ts +7 -8
  106. package/src/components/ForeignComponentContainer.test.tsx +9 -5
  107. package/src/components/Mediator.test.tsx +11 -10
  108. package/src/components/PiralRoutes.test.tsx +23 -16
  109. package/src/components/PiralRoutes.tsx +2 -8
  110. package/src/components/wrapComponent.tsx +2 -2
  111. package/src/createInstance.tsx +1 -1
  112. package/src/debugger.ts +4 -2
  113. package/src/defaults/{DefaultRouteSwitch.tsx → DefaultRouteSwitch_v5.tsx} +1 -0
  114. package/src/defaults/DefaultRouteSwitch_v6.tsx +20 -0
  115. package/src/defaults/{DefaultRouter.tsx → DefaultRouter_v5.tsx} +1 -0
  116. package/src/defaults/DefaultRouter_v6.tsx +10 -0
  117. package/src/emulator.ts +2 -10
  118. package/src/helpers.test.tsx +9 -8
  119. package/src/helpers.tsx +1 -1
  120. package/src/hooks/globalState.ts +2 -11
  121. package/src/hooks/index.ts +1 -0
  122. package/src/hooks/routes.ts +14 -0
  123. package/src/hooks/setter.test.ts +1 -1
  124. package/src/modules/dependencies.ts +1 -1
  125. package/src/modules/element-server.test.ts +4 -4
  126. package/src/modules/element.test.ts +6 -6
  127. package/src/setters/SetComponent.test.tsx +7 -6
  128. package/src/setters/SetError.test.tsx +7 -6
  129. package/src/setters/SetErrors.test.tsx +7 -6
  130. package/src/setters/SetLayout.test.tsx +7 -6
  131. package/src/setters/SetProvider.test.tsx +7 -6
  132. package/src/setters/SetRedirect.test.tsx +7 -6
  133. package/src/setters/SetRoute.test.tsx +7 -6
  134. package/src/state/createActions.ts +3 -3
  135. package/src/state/createGlobalState.test.ts +53 -58
  136. package/src/state/createGlobalState.ts +4 -34
  137. package/src/state/withApi.test.tsx +5 -5
  138. package/src/types/components.ts +15 -10
  139. package/src/types/state.ts +8 -3
  140. package/src/utils/foreign.test.ts +1 -1
  141. package/debug.codegen +0 -24
  142. package/dependencies.codegen +0 -37
  143. package/dependencies.codegen.d.ts +0 -1
  144. package/dependencies.codegen.native.js +0 -2
  145. package/esm/defaults/DefaultRouteSwitch.js.map +0 -1
  146. package/esm/defaults/DefaultRouter.js.map +0 -1
  147. package/esm/defaults/index.d.ts +0 -5
  148. package/esm/defaults/index.js +0 -6
  149. package/esm/defaults/index.js.map +0 -1
  150. package/lib/defaults/DefaultRouteSwitch.js.map +0 -1
  151. package/lib/defaults/DefaultRouter.js.map +0 -1
  152. package/lib/defaults/index.d.ts +0 -5
  153. package/lib/defaults/index.js +0 -9
  154. package/lib/defaults/index.js.map +0 -1
  155. package/src/defaults/index.ts +0 -5
  156. package/src/hooks/globalState-server.test.ts +0 -41
  157. package/src/hooks/globalState.test.ts +0 -47
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createGlobalState = void 0;
4
- const react_atom_1 = require("@dbeining/react-atom");
5
- const defaults_1 = require("../defaults");
4
+ const zustand_1 = require("zustand");
5
+ const app_codegen_1 = require("../../app.codegen");
6
6
  function extend(defaultState, customState) {
7
7
  for (const key of Object.keys(customState)) {
8
8
  if (key === '__proto__' || key === 'constructor') {
@@ -16,31 +16,8 @@ function extend(defaultState, customState) {
16
16
  return defaultState;
17
17
  }
18
18
  function createGlobalState(customState = {}) {
19
- const defaultState = {
20
- app: {
21
- error: undefined,
22
- loading: typeof window !== 'undefined',
23
- publicPath: process.env.PIRAL_PUBLIC_PATH || '/',
24
- },
25
- components: {
26
- ErrorInfo: defaults_1.DefaultErrorInfo,
27
- LoadingIndicator: defaults_1.DefaultLoadingIndicator,
28
- Router: defaults_1.DefaultRouter,
29
- RouteSwitch: defaults_1.DefaultRouteSwitch,
30
- Layout: defaults_1.DefaultLayout,
31
- },
32
- errorComponents: {},
33
- registry: {
34
- extensions: {},
35
- pages: {},
36
- wrappers: {},
37
- },
38
- routes: {},
39
- data: {},
40
- portals: {},
41
- modules: [],
42
- };
43
- return react_atom_1.Atom.of(extend(defaultState, customState));
19
+ const defaultState = (0, app_codegen_1.createDefaultState)();
20
+ return (0, zustand_1.default)(() => extend(defaultState, customState));
44
21
  }
45
22
  exports.createGlobalState = createGlobalState;
46
23
  //# sourceMappingURL=createGlobalState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createGlobalState.js","sourceRoot":"","sources":["../../src/state/createGlobalState.ts"],"names":[],"mappings":";;;AAAA,qDAA4C;AAE5C,0CAMqB;AAErB,SAAS,MAAM,CAAI,YAAe,EAAE,WAA6B;IAC/D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAC1C,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,EAAE;YAChD,SAAS;SACV;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACzE,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAC9D;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,iBAAiB,CAAC,cAA0C,EAAE;IAC5E,MAAM,YAAY,GAAgB;QAChC,GAAG,EAAE;YACH,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO,MAAM,KAAK,WAAW;YACtC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG;SACjD;QACD,UAAU,EAAE;YACV,SAAS,EAAE,2BAAgB;YAC3B,gBAAgB,EAAE,kCAAuB;YACzC,MAAM,EAAE,wBAAa;YACrB,WAAW,EAAE,6BAAkB;YAC/B,MAAM,EAAE,wBAAa;SACtB;QACD,eAAe,EAAE,EAAE;QACnB,QAAQ,EAAE;YACR,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;SACb;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,OAAO,iBAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AACpD,CAAC;AA3BD,8CA2BC"}
1
+ {"version":3,"file":"createGlobalState.js","sourceRoot":"","sources":["../../src/state/createGlobalState.ts"],"names":[],"mappings":";;;AAAA,qCAA6B;AAC7B,mDAAuD;AAGvD,SAAS,MAAM,CAAI,YAAe,EAAE,WAA6B;IAC/D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAC1C,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,EAAE;YAChD,SAAS;SACV;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACzE,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAC9D;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,iBAAiB,CAAC,cAA0C,EAAE;IAC5E,MAAM,YAAY,GAAgB,IAAA,gCAAkB,GAAE,CAAC;IACvD,OAAO,IAAA,iBAAM,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AACzD,CAAC;AAHD,8CAGC"}
@@ -192,6 +192,19 @@ export interface RouterProps {
192
192
  */
193
193
  children?: ReactNode;
194
194
  }
195
+ /**
196
+ * Represents a path in the app registration.
197
+ */
198
+ export interface AppPath {
199
+ /**
200
+ * The exact path to use.
201
+ */
202
+ path: string;
203
+ /**
204
+ * The component to register for this path.
205
+ */
206
+ Component: ComponentType<RouteComponentProps>;
207
+ }
195
208
  /**
196
209
  * The props of the RouteSwitch component.
197
210
  */
@@ -203,14 +216,5 @@ export interface RouteSwitchProps extends SwitchProps {
203
216
  /**
204
217
  * The component to register for the different paths.
205
218
  */
206
- paths: Array<{
207
- /**
208
- * The exact path to use.
209
- */
210
- path: string;
211
- /**
212
- * The component to register for this path.
213
- */
214
- Component: ComponentType<RouteComponentProps>;
215
- }>;
219
+ paths: Array<AppPath>;
216
220
  }
@@ -1,7 +1,7 @@
1
1
  import type { ComponentType, ReactPortal, PropsWithChildren } from 'react';
2
2
  import type { RouteComponentProps } from 'react-router';
3
- import type { Atom } from '@dbeining/react-atom';
4
3
  import type { LoadPiletsOptions } from 'piral-base';
4
+ import type { UseBoundStore } from 'zustand';
5
5
  import type { Dict, Without } from './common';
6
6
  import type { SharedDataItem, DataStoreTarget } from './data';
7
7
  import type { PiralCustomActions, PiralCustomState, PiralCustomRegistryState, PiralCustomComponentsState } from './custom';
@@ -12,7 +12,6 @@ export interface StateDispatcher<TState> {
12
12
  }
13
13
  declare module './components' {
14
14
  interface ComponentContext {
15
- state: Atom<GlobalState>;
16
15
  readState: PiralActions['readState'];
17
16
  }
18
17
  }
@@ -314,6 +313,12 @@ export interface PiralActions extends PiralCustomActions {
314
313
  * @returns The desired part.
315
314
  */
316
315
  readState<S>(select: (state: GlobalState) => S): S;
316
+ /**
317
+ * Performs a navigation.
318
+ * @param path The path to navigate to.
319
+ * @param state The optional state for the navigation.
320
+ */
321
+ navigate(path: string, state?: any): void;
317
322
  }
318
323
  /**
319
324
  * The Piral app instance context.
@@ -323,7 +328,7 @@ export interface GlobalStateContext extends PiralActions, EventEmitter {
323
328
  * The global state context atom.
324
329
  * Changes to the state should always be dispatched via the `dispatch` action.
325
330
  */
326
- state: Atom<GlobalState>;
331
+ state: UseBoundStore<GlobalState>;
327
332
  /**
328
333
  * The API objects created for the loaded pilets.
329
334
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-core",
3
- "version": "0.15.0-alpha.4314",
3
+ "version": "0.15.0-alpha.4355",
4
4
  "description": "The core library for creating a Piral instance.",
5
5
  "keywords": [
6
6
  "portal",
@@ -17,10 +17,7 @@
17
17
  "react-dom": "react-dom",
18
18
  "react-router": "react-router",
19
19
  "react-router-dom": "react-router-dom",
20
- "history": "history",
21
- "path-to-regexp": "path-to-regexp",
22
- "@libre/atom": "@libre/atom",
23
- "@dbeining/react-atom": "@dbeining/react-atom"
20
+ "history": "history"
24
21
  }
25
22
  },
26
23
  "author": "smapiot",
@@ -40,6 +37,10 @@
40
37
  "./lib/*": {
41
38
  "require": "./lib/*"
42
39
  },
40
+ "./_/*": {
41
+ "import": "./esm/*.js",
42
+ "require": "./lib/*.js"
43
+ },
43
44
  "./package.json": "./package.json"
44
45
  },
45
46
  "sideEffects": false,
@@ -47,10 +48,8 @@
47
48
  "esm",
48
49
  "lib",
49
50
  "src",
50
- "debug.codegen",
51
- "debug.codegen.*",
52
- "dependencies.codegen",
53
- "dependencies.codegen.*"
51
+ "app.codegen",
52
+ "app.codegen.d.ts"
54
53
  ],
55
54
  "funding": {
56
55
  "type": "github",
@@ -72,9 +71,9 @@
72
71
  "test": "echo \"Error: run tests from root\" && exit 1"
73
72
  },
74
73
  "dependencies": {
75
- "@dbeining/react-atom": "^4.0.0",
76
- "piral-base": "0.15.0-alpha.4314",
77
- "piral-debug-utils": "0.15.0-alpha.4314"
74
+ "piral-base": "0.15.0-alpha.4355",
75
+ "piral-debug-utils": "0.15.0-alpha.4355",
76
+ "zustand": "^3.0.0"
78
77
  },
79
78
  "peerDependencies": {
80
79
  "react": ">=16.8.0",
@@ -99,10 +98,7 @@
99
98
  "react-router",
100
99
  "react-router-dom",
101
100
  "history",
102
- "tslib",
103
- "path-to-regexp",
104
- "@libre/atom",
105
- "@dbeining/react-atom"
101
+ "tslib"
106
102
  ],
107
- "gitHead": "8bd59debe22a0fed137458a5295eb2ea43d9e0d3"
103
+ "gitHead": "a4dda359fe03992cd06bfb808df916747beb065d"
108
104
  }
@@ -5,11 +5,13 @@ import { Piral } from './Piral';
5
5
  import { RegisteredRouter } from './components';
6
6
  import { createInstance } from './createInstance';
7
7
 
8
- async function waitForComponentToPaint<P = {}>(wrapper: ReactWrapper<P>, amount = 0) {
9
- await act(async () => {
10
- await new Promise((resolve) => setTimeout(resolve, amount));
11
- wrapper.update();
12
- });
8
+ function resolveAfter(time = 5) {
9
+ return new Promise<void>((resolve) => setTimeout(resolve, time));
10
+ }
11
+
12
+ async function waitForComponentToPaint<P = {}>(wrapper: ReactWrapper<P>, amount = 5) {
13
+ await act(resolveAfter);
14
+ wrapper.update();
13
15
  }
14
16
 
15
17
  describe('Piral Component', () => {
@@ -9,6 +9,10 @@ jest.mock('./hooks/globalState', () => ({
9
9
  }),
10
10
  }));
11
11
 
12
+ function resolveAfter(time = 5) {
13
+ return new Promise<void>(resolve => setTimeout(resolve, time));
14
+ }
15
+
12
16
  describe('RootListener Component', () => {
13
17
  it('renders the RootListener instance with default settings', async () => {
14
18
  const element = document.createElement('div');
@@ -27,9 +31,9 @@ describe('RootListener Component', () => {
27
31
  },
28
32
  });
29
33
  element.dispatchEvent(event);
30
- return Promise.resolve();
34
+ return resolveAfter();
31
35
  });
32
- await act(() => Promise.resolve());
36
+ await act(resolveAfter);
33
37
  expect(removed).not.toHaveBeenCalled();
34
38
  });
35
39
 
@@ -39,9 +43,9 @@ describe('RootListener Component', () => {
39
43
  const root = createRoot(container);
40
44
  root.render(<RootListener />);
41
45
  document.body.removeEventListener = removed;
42
- await act(() => Promise.resolve());
46
+ await act(resolveAfter);
43
47
  root.unmount();
44
- await act(() => Promise.resolve());
48
+ await act(resolveAfter);
45
49
  expect(removed).toHaveBeenCalled();
46
50
  });
47
51
  });
@@ -1,6 +1,6 @@
1
+ import create from 'zustand';
1
2
  import { mount } from 'enzyme';
2
3
  import { createElement } from 'react';
3
- import { Atom, deref } from '@dbeining/react-atom';
4
4
  import { createListener, Pilet } from 'piral-base';
5
5
  import {
6
6
  includeProvider,
@@ -23,27 +23,27 @@ const pilet: Pilet = {
23
23
 
24
24
  describe('App Actions Module', () => {
25
25
  it('initialize initializes state data', () => {
26
- const state = Atom.of({
26
+ const state: any = create(() => ({
27
27
  app: {},
28
- });
28
+ }));
29
29
  const ctx = createActions(state, createListener({}));
30
- const modules = ['pilet 1', 'pilet 2', 'pilet 3'];
30
+ const modules: any = ['pilet 1', 'pilet 2', 'pilet 3'];
31
31
  initialize(ctx, false, undefined, modules);
32
- expect(deref(state)).toEqual({
32
+ expect(state.getState()).toEqual({
33
33
  app: { error: undefined, loading: false },
34
34
  modules: ['pilet 1', 'pilet 2', 'pilet 3'],
35
35
  });
36
36
  });
37
37
 
38
38
  it('removePilet removes pilet', () => {
39
- const state = Atom.of({
39
+ const state: any = create(() => ({
40
40
  app: {},
41
41
  modules: [pilet],
42
42
  registry: { 'my-pilet': pilet },
43
- });
43
+ }));
44
44
  const ctx = createActions(state, createListener({}));
45
45
  removePilet(ctx, 'my-pilet');
46
- expect(deref(state)).toEqual({ app: {}, modules: [], registry: { 'my-pilet': pilet } });
46
+ expect(state.getState()).toEqual({ app: {}, modules: [], registry: { 'my-pilet': pilet } });
47
47
  });
48
48
 
49
49
  it('injectPilet injects pilet', () => {
@@ -53,55 +53,55 @@ describe('App Actions Module', () => {
53
53
  link: undefined,
54
54
  custom: undefined,
55
55
  };
56
- const state = Atom.of({
56
+ const state: any = create(() => ({
57
57
  app: {},
58
58
  modules: [pilet2],
59
59
  registry: { pilet2 },
60
- });
60
+ }));
61
61
  const ctx = createActions(state, createListener({}));
62
62
  injectPilet(ctx, pilet);
63
- expect(deref(state)).toEqual({ app: {}, modules: [pilet2, pilet], registry: { pilet2 } });
63
+ expect(state.getState()).toEqual({ app: {}, modules: [pilet2, pilet], registry: { pilet2 } });
64
64
  });
65
65
 
66
66
  it('setComponent set component', () => {
67
- const state = Atom.of({
67
+ const state: any = create(() => ({
68
68
  components: {},
69
- });
69
+ }));
70
70
  const ctx = createActions(state, createListener({}));
71
71
  const node = RootListener;
72
72
  setComponent(ctx, 'ComponentName', node);
73
- expect(deref(state)).toEqual({ components: { ComponentName: RootListener } });
73
+ expect(state.getState()).toEqual({ components: { ComponentName: RootListener } });
74
74
  });
75
75
 
76
76
  it('setErrorComponent set error component', () => {
77
- const state = Atom.of({
77
+ const state: any = create(() => ({
78
78
  errorComponents: {},
79
- });
79
+ }));
80
80
  const ctx = createActions(state, createListener({}));
81
81
  const node = RootListener;
82
82
  setErrorComponent(ctx, 'ComponentName', node);
83
- expect(deref(state)).toEqual({ errorComponents: { ComponentName: RootListener } });
83
+ expect(state.getState()).toEqual({ errorComponents: { ComponentName: RootListener } });
84
84
  });
85
85
 
86
86
  it('setRoute sets route', () => {
87
- const state = Atom.of({
87
+ const state: any = create(() => ({
88
88
  routes: {},
89
- });
89
+ }));
90
90
  const ctx = createActions(state, createListener({}));
91
91
  const node = RootListener;
92
92
  setRoute(ctx, './dist', RootListener);
93
- expect(deref(state)).toEqual({ routes: { './dist': RootListener } });
93
+ expect(state.getState()).toEqual({ routes: { './dist': RootListener } });
94
94
  });
95
95
 
96
96
  it('allows using includeProvider once', () => {
97
- const state = Atom.of({
97
+ const state: any = create(() => ({
98
98
  provider: undefined,
99
- });
99
+ }));
100
100
  const Provider = (props) => createElement('div', props);
101
101
  const ctx = createActions(state, createListener({}));
102
102
  includeProvider(ctx, createElement(Provider));
103
103
 
104
- const NewProvider = deref(state).provider;
104
+ const NewProvider = state.getState().provider;
105
105
  expect(NewProvider).not.toBeUndefined();
106
106
 
107
107
  const node = mount(createElement(NewProvider, undefined, 'Some text'));
@@ -110,16 +110,16 @@ describe('App Actions Module', () => {
110
110
  });
111
111
 
112
112
  it('allows using includeProvider twice', () => {
113
- const state = Atom.of({
113
+ const state: any = create(() => ({
114
114
  provider: undefined,
115
- });
115
+ }));
116
116
  const Provider1 = (props) => createElement('i', props);
117
117
  const Provider2 = (props) => createElement('b', props);
118
118
  const ctx = createActions(state, createListener({}));
119
119
  includeProvider(ctx, createElement(Provider1));
120
120
  includeProvider(ctx, createElement(Provider2));
121
121
 
122
- const NewProvider = deref(state).provider;
122
+ const NewProvider = state.getState().provider;
123
123
  expect(NewProvider).not.toBeUndefined();
124
124
 
125
125
  const node = mount(createElement(NewProvider, undefined, 'Some text'));
@@ -129,14 +129,14 @@ describe('App Actions Module', () => {
129
129
  });
130
130
 
131
131
  it('allows using includeProvider with props', () => {
132
- const state = Atom.of({
132
+ const state: any = create(() => ({
133
133
  provider: undefined,
134
- });
134
+ }));
135
135
  const Provider = (props) => createElement('i', props, props.text, props.children);
136
136
  const ctx = createActions(state, createListener({}));
137
137
  includeProvider(ctx, createElement(Provider, { text: 'Icecream' }));
138
138
 
139
- const NewProvider = deref(state).provider;
139
+ const NewProvider = state.getState().provider;
140
140
  expect(NewProvider).not.toBeUndefined();
141
141
 
142
142
  const node = mount(createElement(NewProvider, undefined, 'Some text'));
@@ -146,16 +146,16 @@ describe('App Actions Module', () => {
146
146
  });
147
147
 
148
148
  it('allows multiple includeProvider with props', () => {
149
- const state = Atom.of({
149
+ const state: any = create(() => ({
150
150
  provider: undefined,
151
- });
151
+ }));
152
152
  const Provider1 = (props) => createElement('i', props, props.text, props.children);
153
153
  const Provider2 = (props) => createElement('b', props, props.text, props.children);
154
154
  const ctx = createActions(state, createListener({}));
155
155
  includeProvider(ctx, createElement(Provider1, { text: 'Icecream' }));
156
156
  includeProvider(ctx, createElement(Provider2, { text: 'Chocolate' }));
157
157
 
158
- const NewProvider = deref(state).provider;
158
+ const NewProvider = state.getState().provider;
159
159
  expect(NewProvider).not.toBeUndefined();
160
160
 
161
161
  const node = mount(createElement(NewProvider, undefined, 'Some text'));
@@ -24,6 +24,10 @@ export function initialize(ctx: GlobalStateContext, loading: boolean, error: Err
24
24
  }));
25
25
  }
26
26
 
27
+ export function navigate(ctx: GlobalStateContext, path: string, state?: any) {
28
+ ctx.emit('navigate', { path, state });
29
+ }
30
+
27
31
  export function addPilet(ctx: GlobalStateContext, meta: PiletEntry): Promise<void> {
28
32
  return ctx.options
29
33
  .loadPilet(meta)
@@ -1,20 +1,20 @@
1
- import { Atom, deref } from '@dbeining/react-atom';
1
+ import create from 'zustand';
2
2
  import { createListener } from 'piral-base';
3
3
  import { registerExtension, registerPage, unregisterExtension, unregisterPage } from './components';
4
4
  import { createActions } from '../state';
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,