@push.rocks/smartstate 2.0.12 → 2.0.14
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/dist_bundle/bundle.js +15 -5
- package/dist_bundle/bundle.js.map +2 -2
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/smartstate.classes.smartstate.d.ts +2 -1
- package/dist_ts/smartstate.classes.smartstate.js +13 -6
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/smartstate.classes.smartstate.ts +22 -9
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartstate',
|
|
6
|
-
version: '2.0.
|
|
6
|
+
version: '2.0.13',
|
|
7
7
|
description: 'a package that handles state in a good way'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDRDQUE0QztDQUMxRCxDQUFBIn0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { StatePart } from './smartstate.classes.statepart.js';
|
|
2
|
+
export type TInitMode = 'soft' | 'mandatory' | 'force' | 'persistent';
|
|
2
3
|
/**
|
|
3
4
|
* Smartstate takes care of providing state
|
|
4
5
|
*/
|
|
@@ -16,7 +17,7 @@ export declare class Smartstate<StatePartNameType> {
|
|
|
16
17
|
* @param initialArg
|
|
17
18
|
* @param initMode
|
|
18
19
|
*/
|
|
19
|
-
getStatePart<PayloadType>(statePartNameArg: string & StatePartNameType, initialArg?: PayloadType, initMode?:
|
|
20
|
+
getStatePart<PayloadType>(statePartNameArg: string & StatePartNameType, initialArg?: PayloadType, initMode?: TInitMode): Promise<StatePart<StatePartNameType, PayloadType>>;
|
|
20
21
|
/**
|
|
21
22
|
* creates a statepart
|
|
22
23
|
* @param statePartName
|
|
@@ -16,7 +16,7 @@ export class Smartstate {
|
|
|
16
16
|
* @param initialArg
|
|
17
17
|
* @param initMode
|
|
18
18
|
*/
|
|
19
|
-
getStatePart(statePartNameArg, initialArg, initMode) {
|
|
19
|
+
async getStatePart(statePartNameArg, initialArg, initMode) {
|
|
20
20
|
if (this.statePartMap[statePartNameArg]) {
|
|
21
21
|
if (initialArg && (!initMode || initMode !== 'soft')) {
|
|
22
22
|
throw new Error(`${statePartNameArg} already exists, yet you try to set an initial state again`);
|
|
@@ -27,7 +27,7 @@ export class Smartstate {
|
|
|
27
27
|
if (!initialArg) {
|
|
28
28
|
throw new Error(`${statePartNameArg} does not yet exist, yet you don't provide an initial state`);
|
|
29
29
|
}
|
|
30
|
-
return this.createStatePart(statePartNameArg, initialArg);
|
|
30
|
+
return this.createStatePart(statePartNameArg, initialArg, initMode);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
@@ -35,11 +35,18 @@ export class Smartstate {
|
|
|
35
35
|
* @param statePartName
|
|
36
36
|
* @param initialPayloadArg
|
|
37
37
|
*/
|
|
38
|
-
createStatePart(statePartName, initialPayloadArg) {
|
|
39
|
-
const newState = new StatePart(statePartName
|
|
40
|
-
|
|
38
|
+
async createStatePart(statePartName, initialPayloadArg, initMode) {
|
|
39
|
+
const newState = new StatePart(statePartName, initMode === 'persistent' ? {
|
|
40
|
+
dbName: 'smartstate',
|
|
41
|
+
storeName: statePartName,
|
|
42
|
+
} : null);
|
|
43
|
+
const currentState = newState.getState();
|
|
44
|
+
await newState.setState({
|
|
45
|
+
...initialPayloadArg,
|
|
46
|
+
...currentState,
|
|
47
|
+
});
|
|
41
48
|
this.statePartMap[statePartName] = newState;
|
|
42
49
|
return newState;
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdGF0ZS5jbGFzc2VzLnNtYXJ0c3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHN0YXRlLmNsYXNzZXMuc21hcnRzdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUk5RDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBR3JCO1FBRk8saUJBQVksR0FBeUQsRUFBRSxDQUFDO0lBRWhFLENBQUM7SUFFaEI7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsWUFBWSxDQUN2QixnQkFBNEMsRUFDNUMsVUFBd0IsRUFDeEIsUUFBb0I7UUFFcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUF1QixDQUFDLEVBQUU7WUFDOUMsSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLEVBQUU7Z0JBQ3BELE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxnQkFBZ0IsNERBQTRELENBQ2hGLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBOEMsQ0FBQztTQUN6RjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsZ0JBQWdCLDZEQUE2RCxDQUNqRixDQUFDO2FBQ0g7WUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQWMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsZUFBZSxDQUMzQixhQUFnQyxFQUNoQyxpQkFBOEIsRUFDOUIsUUFBb0I7UUFFcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQzVCLGFBQWEsRUFDYixRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLEVBQUUsWUFBWTtZQUNwQixTQUFTLEVBQUUsYUFBb0I7U0FDaEMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNULENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsWUFBWTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQW9CLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDbkQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as plugins from './smartstate.plugins.js';
|
|
2
2
|
import { StatePart } from './smartstate.classes.statepart.js';
|
|
3
3
|
|
|
4
|
+
export type TInitMode = 'soft' | 'mandatory' | 'force' | 'persistent';
|
|
5
|
+
|
|
4
6
|
/**
|
|
5
7
|
* Smartstate takes care of providing state
|
|
6
8
|
*/
|
|
@@ -18,11 +20,11 @@ export class Smartstate<StatePartNameType> {
|
|
|
18
20
|
* @param initialArg
|
|
19
21
|
* @param initMode
|
|
20
22
|
*/
|
|
21
|
-
public getStatePart<PayloadType>(
|
|
23
|
+
public async getStatePart<PayloadType>(
|
|
22
24
|
statePartNameArg: string & StatePartNameType,
|
|
23
25
|
initialArg?: PayloadType,
|
|
24
|
-
initMode?:
|
|
25
|
-
): StatePart<StatePartNameType, PayloadType
|
|
26
|
+
initMode?: TInitMode
|
|
27
|
+
): Promise<StatePart<StatePartNameType, PayloadType>> {
|
|
26
28
|
if (this.statePartMap[statePartNameArg as any]) {
|
|
27
29
|
if (initialArg && (!initMode || initMode !== 'soft')) {
|
|
28
30
|
throw new Error(
|
|
@@ -36,7 +38,7 @@ export class Smartstate<StatePartNameType> {
|
|
|
36
38
|
`${statePartNameArg} does not yet exist, yet you don't provide an initial state`
|
|
37
39
|
);
|
|
38
40
|
}
|
|
39
|
-
return this.createStatePart<PayloadType>(statePartNameArg, initialArg);
|
|
41
|
+
return this.createStatePart<PayloadType>(statePartNameArg, initialArg, initMode);
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -45,12 +47,23 @@ export class Smartstate<StatePartNameType> {
|
|
|
45
47
|
* @param statePartName
|
|
46
48
|
* @param initialPayloadArg
|
|
47
49
|
*/
|
|
48
|
-
private createStatePart<PayloadType>(
|
|
50
|
+
private async createStatePart<PayloadType>(
|
|
49
51
|
statePartName: StatePartNameType,
|
|
50
|
-
initialPayloadArg: PayloadType
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
newState
|
|
52
|
+
initialPayloadArg: PayloadType,
|
|
53
|
+
initMode?: TInitMode
|
|
54
|
+
): Promise<StatePart<StatePartNameType, PayloadType>> {
|
|
55
|
+
const newState = new StatePart<StatePartNameType, PayloadType>(
|
|
56
|
+
statePartName,
|
|
57
|
+
initMode === 'persistent' ? {
|
|
58
|
+
dbName: 'smartstate',
|
|
59
|
+
storeName: statePartName as any,
|
|
60
|
+
} : null
|
|
61
|
+
);
|
|
62
|
+
const currentState = newState.getState();
|
|
63
|
+
await newState.setState({
|
|
64
|
+
...initialPayloadArg,
|
|
65
|
+
...currentState,
|
|
66
|
+
});
|
|
54
67
|
this.statePartMap[statePartName as any] = newState;
|
|
55
68
|
return newState;
|
|
56
69
|
}
|