@push.rocks/smartstate 2.0.13 → 2.0.15

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartstate',
6
- version: '2.0.12',
6
+ version: '2.0.14',
7
7
  description: 'a package that handles state in a good way'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDRDQUE0QztDQUMxRCxDQUFBIn0=
@@ -17,7 +17,7 @@ export declare class Smartstate<StatePartNameType> {
17
17
  * @param initialArg
18
18
  * @param initMode
19
19
  */
20
- getStatePart<PayloadType>(statePartNameArg: string & StatePartNameType, initialArg?: PayloadType, initMode?: TInitMode): StatePart<StatePartNameType, PayloadType>;
20
+ getStatePart<PayloadType>(statePartNameArg: string & StatePartNameType, initialArg?: PayloadType, initMode?: TInitMode): Promise<StatePart<StatePartNameType, PayloadType>>;
21
21
  /**
22
22
  * creates a statepart
23
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`);
@@ -35,14 +35,19 @@ export class Smartstate {
35
35
  * @param statePartName
36
36
  * @param initialPayloadArg
37
37
  */
38
- createStatePart(statePartName, initialPayloadArg, initMode) {
38
+ async createStatePart(statePartName, initialPayloadArg, initMode) {
39
39
  const newState = new StatePart(statePartName, initMode === 'persistent' ? {
40
40
  dbName: 'smartstate',
41
41
  storeName: statePartName,
42
42
  } : null);
43
- newState.setState(initialPayloadArg);
43
+ await newState.init();
44
+ const currentState = newState.getState();
45
+ await newState.setState({
46
+ ...initialPayloadArg,
47
+ ...currentState,
48
+ });
44
49
  this.statePartMap[statePartName] = newState;
45
50
  return newState;
46
51
  }
47
52
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdGF0ZS5jbGFzc2VzLnNtYXJ0c3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHN0YXRlLmNsYXNzZXMuc21hcnRzdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUk5RDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBR3JCO1FBRk8saUJBQVksR0FBeUQsRUFBRSxDQUFDO0lBRWhFLENBQUM7SUFFaEI7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLENBQ2pCLGdCQUE0QyxFQUM1QyxVQUF3QixFQUN4QixRQUFvQjtRQUVwQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQXVCLENBQUMsRUFBRTtZQUM5QyxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLFFBQVEsS0FBSyxNQUFNLENBQUMsRUFBRTtnQkFDcEQsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLGdCQUFnQiw0REFBNEQsQ0FDaEYsQ0FBQzthQUNIO1lBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUE4QyxDQUFDO1NBQ3pGO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxnQkFBZ0IsNkRBQTZELENBQ2pGLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBYyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbEY7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGVBQWUsQ0FDckIsYUFBZ0MsRUFDaEMsaUJBQThCLEVBQzlCLFFBQW9CO1FBRXBCLE1BQU0sUUFBUSxHQUFHLElBQUksU0FBUyxDQUM1QixhQUFhLEVBQ2IsUUFBUSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsU0FBUyxFQUFFLGFBQW9CO1NBQ2hDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDVCxDQUFDO1FBQ0YsUUFBUSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBb0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNuRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdGF0ZS5jbGFzc2VzLnNtYXJ0c3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHN0YXRlLmNsYXNzZXMuc21hcnRzdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUk5RDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBR3JCO1FBRk8saUJBQVksR0FBeUQsRUFBRSxDQUFDO0lBRWhFLENBQUM7SUFFaEI7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsWUFBWSxDQUN2QixnQkFBNEMsRUFDNUMsVUFBd0IsRUFDeEIsUUFBb0I7UUFFcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUF1QixDQUFDLEVBQUU7WUFDOUMsSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLEVBQUU7Z0JBQ3BELE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxnQkFBZ0IsNERBQTRELENBQ2hGLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBOEMsQ0FBQztTQUN6RjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsZ0JBQWdCLDZEQUE2RCxDQUNqRixDQUFDO2FBQ0g7WUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQWMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsZUFBZSxDQUMzQixhQUFnQyxFQUNoQyxpQkFBOEIsRUFDOUIsUUFBb0I7UUFFcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQzVCLGFBQWEsRUFDYixRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLEVBQUUsWUFBWTtZQUNwQixTQUFTLEVBQUUsYUFBb0I7U0FDaEMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNULENBQUM7UUFDRixNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsWUFBWTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQW9CLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDbkQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
@@ -5,12 +5,13 @@ export declare class StatePart<TStatePartName, TStatePayload> {
5
5
  state: plugins.smartrx.rxjs.Subject<TStatePayload>;
6
6
  stateStore: TStatePayload;
7
7
  private cumulativeDeferred;
8
+ private webStoreOptions;
8
9
  private webStore;
9
- constructor(nameArg: TStatePartName, webStoreOptions?: plugins.webstore.IWebStoreOptions);
10
+ constructor(nameArg: TStatePartName, webStoreOptionsArg?: plugins.webstore.IWebStoreOptions);
10
11
  /**
11
12
  * initializes the webstore
12
13
  */
13
- private initWebStore;
14
+ init(): Promise<void>;
14
15
  /**
15
16
  * gets the state from the state store
16
17
  */
@@ -1,22 +1,22 @@
1
1
  import * as plugins from './smartstate.plugins.js';
2
2
  import { StateAction } from './smartstate.classes.stateaction.js';
3
3
  export class StatePart {
4
- constructor(nameArg, webStoreOptions) {
4
+ constructor(nameArg, webStoreOptionsArg) {
5
5
  this.state = new plugins.smartrx.rxjs.Subject();
6
6
  this.cumulativeDeferred = plugins.smartpromise.cumulativeDefer();
7
7
  this.webStore = null; // Add WebStore instance
8
8
  this.name = nameArg;
9
9
  // Initialize WebStore if webStoreOptions are provided
10
- if (webStoreOptions) {
11
- this.webStore = new plugins.webstore.WebStore(webStoreOptions);
12
- this.initWebStore();
10
+ if (webStoreOptionsArg) {
11
+ this.webStoreOptions = webStoreOptionsArg;
13
12
  }
14
13
  }
15
14
  /**
16
15
  * initializes the webstore
17
16
  */
18
- async initWebStore() {
19
- if (this.webStore) {
17
+ async init() {
18
+ if (this.webStoreOptions) {
19
+ this.webStore = new plugins.webstore.WebStore(this.webStoreOptions);
20
20
  await this.webStore.init();
21
21
  const storedState = await this.webStore.get(String(this.name));
22
22
  if (storedState) {
@@ -124,4 +124,4 @@ export class StatePart {
124
124
  this.setState(await resultPromise);
125
125
  }
126
126
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdGF0ZS5jbGFzc2VzLnN0YXRlcGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RhdGUuY2xhc3Nlcy5zdGF0ZXBhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLHFDQUFxQyxDQUFDO0FBRW5GLE1BQU0sT0FBTyxTQUFTO0lBUXBCLFlBQVksT0FBdUIsRUFBRSxlQUFtRDtRQU5qRixVQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQWlCLENBQUM7UUFFekQsdUJBQWtCLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1RCxhQUFRLEdBQW9ELElBQUksQ0FBQyxDQUFDLHdCQUF3QjtRQUdoRyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUVwQixzREFBc0Q7UUFDdEQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFnQixlQUFlLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsWUFBWTtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO2dCQUM5QixJQUFJ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
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzdGF0ZS5jbGFzc2VzLnN0YXRlcGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3RhdGUuY2xhc3Nlcy5zdGF0ZXBhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLHFDQUFxQyxDQUFDO0FBRW5GLE1BQU0sT0FBTyxTQUFTO0lBU3BCLFlBQVksT0FBdUIsRUFBRSxrQkFBc0Q7UUFQcEYsVUFBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFpQixDQUFDO1FBRXpELHVCQUFrQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7UUFHNUQsYUFBUSxHQUFvRCxJQUFJLENBQUMsQ0FBQyx3QkFBd0I7UUFHaEcsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFFcEIsc0RBQXNEO1FBQ3RELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLFdBQVcsRUFBRTtnQkFDZixJQUFJLENBQUMsVUFBVSxHQUFHLFdB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartstate",
3
- "version": "2.0.13",
3
+ "version": "2.0.15",
4
4
  "private": false,
5
5
  "description": "a package that handles state in a good way",
6
6
  "main": "dist_ts/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartstate',
6
- version: '2.0.13',
6
+ version: '2.0.15',
7
7
  description: 'a package that handles state in a good way'
8
8
  }
@@ -20,11 +20,11 @@ export class Smartstate<StatePartNameType> {
20
20
  * @param initialArg
21
21
  * @param initMode
22
22
  */
23
- public getStatePart<PayloadType>(
23
+ public async getStatePart<PayloadType>(
24
24
  statePartNameArg: string & StatePartNameType,
25
25
  initialArg?: PayloadType,
26
26
  initMode?: TInitMode
27
- ): StatePart<StatePartNameType, PayloadType> {
27
+ ): Promise<StatePart<StatePartNameType, PayloadType>> {
28
28
  if (this.statePartMap[statePartNameArg as any]) {
29
29
  if (initialArg && (!initMode || initMode !== 'soft')) {
30
30
  throw new Error(
@@ -47,11 +47,11 @@ export class Smartstate<StatePartNameType> {
47
47
  * @param statePartName
48
48
  * @param initialPayloadArg
49
49
  */
50
- private createStatePart<PayloadType>(
50
+ private async createStatePart<PayloadType>(
51
51
  statePartName: StatePartNameType,
52
52
  initialPayloadArg: PayloadType,
53
53
  initMode?: TInitMode
54
- ): StatePart<StatePartNameType, PayloadType> {
54
+ ): Promise<StatePart<StatePartNameType, PayloadType>> {
55
55
  const newState = new StatePart<StatePartNameType, PayloadType>(
56
56
  statePartName,
57
57
  initMode === 'persistent' ? {
@@ -59,7 +59,12 @@ export class Smartstate<StatePartNameType> {
59
59
  storeName: statePartName as any,
60
60
  } : null
61
61
  );
62
- newState.setState(initialPayloadArg);
62
+ await newState.init();
63
+ const currentState = newState.getState();
64
+ await newState.setState({
65
+ ...initialPayloadArg,
66
+ ...currentState,
67
+ });
63
68
  this.statePartMap[statePartName as any] = newState;
64
69
  return newState;
65
70
  }
@@ -7,23 +7,24 @@ export class StatePart<TStatePartName, TStatePayload> {
7
7
  public stateStore: TStatePayload;
8
8
  private cumulativeDeferred = plugins.smartpromise.cumulativeDefer();
9
9
 
10
+ private webStoreOptions: plugins.webstore.IWebStoreOptions;
10
11
  private webStore: plugins.webstore.WebStore<TStatePayload> | null = null; // Add WebStore instance
11
12
 
12
- constructor(nameArg: TStatePartName, webStoreOptions?: plugins.webstore.IWebStoreOptions) {
13
+ constructor(nameArg: TStatePartName, webStoreOptionsArg?: plugins.webstore.IWebStoreOptions) {
13
14
  this.name = nameArg;
14
15
 
15
16
  // Initialize WebStore if webStoreOptions are provided
16
- if (webStoreOptions) {
17
- this.webStore = new plugins.webstore.WebStore<TStatePayload>(webStoreOptions);
18
- this.initWebStore();
17
+ if (webStoreOptionsArg) {
18
+ this.webStoreOptions = webStoreOptionsArg;
19
19
  }
20
20
  }
21
21
 
22
22
  /**
23
23
  * initializes the webstore
24
24
  */
25
- private async initWebStore() {
26
- if (this.webStore) {
25
+ public async init() {
26
+ if (this.webStoreOptions) {
27
+ this.webStore = new plugins.webstore.WebStore<TStatePayload>(this.webStoreOptions);
27
28
  await this.webStore.init();
28
29
  const storedState = await this.webStore.get(String(this.name));
29
30
  if (storedState) {