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.
- package/app.codegen +191 -0
- package/{debug.codegen.d.ts → app.codegen.d.ts} +10 -1
- package/esm/actions/app.d.ts +1 -0
- package/esm/actions/app.js +3 -0
- package/esm/actions/app.js.map +1 -1
- package/esm/actions/state.js +6 -7
- package/esm/actions/state.js.map +1 -1
- package/esm/components/PiralRoutes.js +2 -6
- package/esm/components/PiralRoutes.js.map +1 -1
- package/esm/components/wrapComponent.js +2 -2
- package/esm/components/wrapComponent.js.map +1 -1
- package/esm/createInstance.js +1 -1
- package/esm/createInstance.js.map +1 -1
- package/esm/debugger.js +4 -2
- package/esm/debugger.js.map +1 -1
- package/esm/defaults/{DefaultRouteSwitch.d.ts → DefaultRouteSwitch_v5.d.ts} +0 -0
- package/esm/defaults/{DefaultRouteSwitch.js → DefaultRouteSwitch_v5.js} +2 -1
- package/esm/defaults/DefaultRouteSwitch_v5.js.map +1 -0
- package/{lib/defaults/DefaultRouteSwitch.d.ts → esm/defaults/DefaultRouteSwitch_v6.d.ts} +0 -0
- package/esm/defaults/DefaultRouteSwitch_v6.js +15 -0
- package/esm/defaults/DefaultRouteSwitch_v6.js.map +1 -0
- package/esm/defaults/{DefaultRouter.d.ts → DefaultRouter_v5.d.ts} +0 -0
- package/esm/defaults/{DefaultRouter.js → DefaultRouter_v5.js} +2 -1
- package/esm/defaults/DefaultRouter_v5.js.map +1 -0
- package/{lib/defaults/DefaultRouter.d.ts → esm/defaults/DefaultRouter_v6.d.ts} +0 -0
- package/esm/defaults/DefaultRouter_v6.js +9 -0
- package/esm/defaults/DefaultRouter_v6.js.map +1 -0
- package/esm/emulator.js +2 -3
- package/esm/emulator.js.map +1 -1
- package/esm/helpers.js +1 -1
- package/esm/helpers.js.map +1 -1
- package/esm/hooks/globalState.js +2 -9
- package/esm/hooks/globalState.js.map +1 -1
- package/esm/hooks/index.d.ts +1 -0
- package/esm/hooks/index.js +1 -0
- package/esm/hooks/index.js.map +1 -1
- package/esm/hooks/routes.d.ts +2 -0
- package/esm/hooks/routes.js +11 -0
- package/esm/hooks/routes.js.map +1 -0
- package/esm/modules/dependencies.js +1 -1
- package/esm/modules/dependencies.js.map +1 -1
- package/esm/state/createActions.d.ts +2 -2
- package/esm/state/createActions.js.map +1 -1
- package/esm/state/createGlobalState.d.ts +1 -2
- package/esm/state/createGlobalState.js +4 -27
- package/esm/state/createGlobalState.js.map +1 -1
- package/esm/types/components.d.ts +14 -10
- package/esm/types/state.d.ts +8 -3
- package/lib/actions/app.d.ts +1 -0
- package/lib/actions/app.js +5 -1
- package/lib/actions/app.js.map +1 -1
- package/lib/actions/state.js +6 -7
- package/lib/actions/state.js.map +1 -1
- package/lib/components/PiralRoutes.js +1 -5
- package/lib/components/PiralRoutes.js.map +1 -1
- package/lib/components/wrapComponent.js +2 -2
- package/lib/components/wrapComponent.js.map +1 -1
- package/lib/createInstance.js +1 -1
- package/lib/createInstance.js.map +1 -1
- package/lib/debugger.js +4 -2
- package/lib/debugger.js.map +1 -1
- package/lib/defaults/DefaultRouteSwitch_v5.d.ts +3 -0
- package/lib/defaults/{DefaultRouteSwitch.js → DefaultRouteSwitch_v5.js} +2 -1
- package/lib/defaults/DefaultRouteSwitch_v5.js.map +1 -0
- package/lib/defaults/DefaultRouteSwitch_v6.d.ts +3 -0
- package/lib/defaults/DefaultRouteSwitch_v6.js +19 -0
- package/lib/defaults/DefaultRouteSwitch_v6.js.map +1 -0
- package/lib/defaults/DefaultRouter_v5.d.ts +3 -0
- package/lib/defaults/{DefaultRouter.js → DefaultRouter_v5.js} +2 -1
- package/lib/defaults/DefaultRouter_v5.js.map +1 -0
- package/lib/defaults/DefaultRouter_v6.d.ts +3 -0
- package/lib/defaults/DefaultRouter_v6.js +13 -0
- package/lib/defaults/DefaultRouter_v6.js.map +1 -0
- package/lib/emulator.js +2 -3
- package/lib/emulator.js.map +1 -1
- package/lib/helpers.js +3 -3
- package/lib/helpers.js.map +1 -1
- package/lib/hooks/globalState.js +2 -9
- package/lib/hooks/globalState.js.map +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/routes.d.ts +2 -0
- package/lib/hooks/routes.js +15 -0
- package/lib/hooks/routes.js.map +1 -0
- package/lib/modules/dependencies.js +3 -3
- package/lib/modules/dependencies.js.map +1 -1
- package/lib/state/createActions.d.ts +2 -2
- package/lib/state/createActions.js.map +1 -1
- package/lib/state/createGlobalState.d.ts +1 -2
- package/lib/state/createGlobalState.js +4 -27
- package/lib/state/createGlobalState.js.map +1 -1
- package/lib/types/components.d.ts +14 -10
- package/lib/types/state.d.ts +8 -3
- package/package.json +13 -17
- package/src/Piral.test.tsx +7 -5
- package/src/RootListener.test.tsx +8 -4
- package/src/actions/app.test.ts +32 -32
- package/src/actions/app.ts +4 -0
- package/src/actions/components.test.ts +10 -10
- package/src/actions/data.test.ts +49 -49
- package/src/actions/define.test.ts +2 -2
- package/src/actions/portal.test.ts +17 -17
- package/src/actions/state.test.ts +3 -3
- package/src/actions/state.ts +7 -8
- package/src/components/ForeignComponentContainer.test.tsx +9 -5
- package/src/components/Mediator.test.tsx +11 -10
- package/src/components/PiralRoutes.test.tsx +23 -16
- package/src/components/PiralRoutes.tsx +2 -8
- package/src/components/wrapComponent.tsx +2 -2
- package/src/createInstance.tsx +1 -1
- package/src/debugger.ts +4 -2
- package/src/defaults/{DefaultRouteSwitch.tsx → DefaultRouteSwitch_v5.tsx} +1 -0
- package/src/defaults/DefaultRouteSwitch_v6.tsx +20 -0
- package/src/defaults/{DefaultRouter.tsx → DefaultRouter_v5.tsx} +1 -0
- package/src/defaults/DefaultRouter_v6.tsx +10 -0
- package/src/emulator.ts +2 -10
- package/src/helpers.test.tsx +9 -8
- package/src/helpers.tsx +1 -1
- package/src/hooks/globalState.ts +2 -11
- package/src/hooks/index.ts +1 -0
- package/src/hooks/routes.ts +14 -0
- package/src/hooks/setter.test.ts +1 -1
- package/src/modules/dependencies.ts +1 -1
- package/src/modules/element-server.test.ts +4 -4
- package/src/modules/element.test.ts +6 -6
- package/src/setters/SetComponent.test.tsx +7 -6
- package/src/setters/SetError.test.tsx +7 -6
- package/src/setters/SetErrors.test.tsx +7 -6
- package/src/setters/SetLayout.test.tsx +7 -6
- package/src/setters/SetProvider.test.tsx +7 -6
- package/src/setters/SetRedirect.test.tsx +7 -6
- package/src/setters/SetRoute.test.tsx +7 -6
- package/src/state/createActions.ts +3 -3
- package/src/state/createGlobalState.test.ts +53 -58
- package/src/state/createGlobalState.ts +4 -34
- package/src/state/withApi.test.tsx +5 -5
- package/src/types/components.ts +15 -10
- package/src/types/state.ts +8 -3
- package/src/utils/foreign.test.ts +1 -1
- package/debug.codegen +0 -24
- package/dependencies.codegen +0 -37
- package/dependencies.codegen.d.ts +0 -1
- package/dependencies.codegen.native.js +0 -2
- package/esm/defaults/DefaultRouteSwitch.js.map +0 -1
- package/esm/defaults/DefaultRouter.js.map +0 -1
- package/esm/defaults/index.d.ts +0 -5
- package/esm/defaults/index.js +0 -6
- package/esm/defaults/index.js.map +0 -1
- package/lib/defaults/DefaultRouteSwitch.js.map +0 -1
- package/lib/defaults/DefaultRouter.js.map +0 -1
- package/lib/defaults/index.d.ts +0 -5
- package/lib/defaults/index.js +0 -9
- package/lib/defaults/index.js.map +0 -1
- package/src/defaults/index.ts +0 -5
- package/src/hooks/globalState-server.test.ts +0 -41
- 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
|
|
5
|
-
const
|
|
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
|
-
|
|
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,
|
|
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
|
}
|
package/lib/types/state.d.ts
CHANGED
|
@@ -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:
|
|
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.
|
|
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
|
-
"
|
|
51
|
-
"
|
|
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
|
-
"
|
|
76
|
-
"piral-
|
|
77
|
-
"
|
|
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": "
|
|
103
|
+
"gitHead": "a4dda359fe03992cd06bfb808df916747beb065d"
|
|
108
104
|
}
|
package/src/Piral.test.tsx
CHANGED
|
@@ -5,11 +5,13 @@ import { Piral } from './Piral';
|
|
|
5
5
|
import { RegisteredRouter } from './components';
|
|
6
6
|
import { createInstance } from './createInstance';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
|
34
|
+
return resolveAfter();
|
|
31
35
|
});
|
|
32
|
-
await act(
|
|
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(
|
|
46
|
+
await act(resolveAfter);
|
|
43
47
|
root.unmount();
|
|
44
|
-
await act(
|
|
48
|
+
await act(resolveAfter);
|
|
45
49
|
expect(removed).toHaveBeenCalled();
|
|
46
50
|
});
|
|
47
51
|
});
|
package/src/actions/app.test.ts
CHANGED
|
@@ -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 =
|
|
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(
|
|
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 =
|
|
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(
|
|
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 =
|
|
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(
|
|
63
|
+
expect(state.getState()).toEqual({ app: {}, modules: [pilet2, pilet], registry: { pilet2 } });
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
it('setComponent set component', () => {
|
|
67
|
-
const state =
|
|
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(
|
|
73
|
+
expect(state.getState()).toEqual({ components: { ComponentName: RootListener } });
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
it('setErrorComponent set error component', () => {
|
|
77
|
-
const state =
|
|
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(
|
|
83
|
+
expect(state.getState()).toEqual({ errorComponents: { ComponentName: RootListener } });
|
|
84
84
|
});
|
|
85
85
|
|
|
86
86
|
it('setRoute sets route', () => {
|
|
87
|
-
const state =
|
|
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(
|
|
93
|
+
expect(state.getState()).toEqual({ routes: { './dist': RootListener } });
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
it('allows using includeProvider once', () => {
|
|
97
|
-
const state =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
158
|
+
const NewProvider = state.getState().provider;
|
|
159
159
|
expect(NewProvider).not.toBeUndefined();
|
|
160
160
|
|
|
161
161
|
const node = mount(createElement(NewProvider, undefined, 'Some text'));
|
package/src/actions/app.ts
CHANGED
|
@@ -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
|
|
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 =
|
|
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(
|
|
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(
|
|
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 =
|
|
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(
|
|
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(
|
|
58
|
+
expect(state.getState()).toEqual({
|
|
59
59
|
foo: 5,
|
|
60
60
|
registry: {
|
|
61
61
|
foo: 5,
|