@nexigen/entity-normalizer 0.1.6 → 0.3.0

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 (64) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +54 -54
  3. package/dist/async/async-duck.d.ts +2 -0
  4. package/dist/async/async-duck.js +11 -0
  5. package/dist/async/async-duck.js.map +1 -1
  6. package/dist/async/execution-context.d.ts +10 -0
  7. package/dist/async/execution-context.js +25 -0
  8. package/dist/async/execution-context.js.map +1 -0
  9. package/dist/async/index.d.ts +1 -0
  10. package/dist/async/index.js +1 -0
  11. package/dist/async/index.js.map +1 -1
  12. package/dist/async/public.d.ts +7 -1
  13. package/dist/async/types.d.ts +1 -0
  14. package/dist/create/cleaner.d.ts +7 -0
  15. package/dist/create/cleaner.js +54 -42
  16. package/dist/create/cleaner.js.map +1 -1
  17. package/dist/create/constants.d.ts +1 -0
  18. package/dist/create/constants.js +2 -0
  19. package/dist/create/constants.js.map +1 -0
  20. package/dist/create/create-store.js.map +1 -1
  21. package/dist/create/extractor.d.ts +1 -4
  22. package/dist/create/extractor.js +5 -7
  23. package/dist/create/extractor.js.map +1 -1
  24. package/dist/create/manager.js +8 -11
  25. package/dist/create/manager.js.map +1 -1
  26. package/dist/create/proxy.d.ts +2 -0
  27. package/dist/create/proxy.js +35 -4
  28. package/dist/create/proxy.js.map +1 -1
  29. package/dist/create/scanner.js +1 -0
  30. package/dist/create/scanner.js.map +1 -1
  31. package/dist/create/utils.d.ts +2 -0
  32. package/dist/create/utils.js +19 -0
  33. package/dist/create/utils.js.map +1 -1
  34. package/dist/create-store-hooks.d.ts +1 -1
  35. package/dist/di/register-root-store.d.ts +1 -1
  36. package/dist/entities/cleaner/store.js.map +1 -1
  37. package/dist/entities/collection/entity-collection.d.ts +1 -0
  38. package/dist/entities/collection/entity-collection.js +12 -0
  39. package/dist/entities/collection/entity-collection.js.map +1 -1
  40. package/dist/entities/collection/multi-entity-collection.js.map +1 -1
  41. package/dist/entities/collection/public.d.ts +1 -0
  42. package/dist/entities/processor.js.map +1 -1
  43. package/dist/entities/record/create-entity-record.js.map +1 -1
  44. package/dist/entities/record/entity-record.d.ts +1 -0
  45. package/dist/entities/record/entity-record.js +9 -0
  46. package/dist/entities/record/entity-record.js.map +1 -1
  47. package/dist/entities/record/public.d.ts +2 -0
  48. package/dist/index.d.ts +2 -2
  49. package/dist/index.js +2 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/root/coreApi/create-core-api.d.ts +1 -0
  52. package/dist/root/coreApi/create-core-api.js +1 -0
  53. package/dist/root/coreApi/create-core-api.js.map +1 -1
  54. package/dist/root/coreApi/entities.d.ts +1 -1
  55. package/dist/root/coreApi/types.d.ts +2 -0
  56. package/dist/root/create-root-store.d.ts +1 -1
  57. package/dist/root/create-root-store.js +1 -1
  58. package/dist/root/create-root-store.js.map +1 -1
  59. package/dist/root/{RootStore.d.ts → root-store.d.ts} +17 -0
  60. package/dist/root/{RootStore.js → root-store.js} +106 -57
  61. package/dist/root/root-store.js.map +1 -0
  62. package/dist/root/types.d.ts +3 -2
  63. package/package.json +8 -3
  64. package/dist/root/RootStore.js.map +0 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 negixenjs
3
+ Copyright (c) 2025 nexigenjs
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -105,8 +105,8 @@ yarn add @nexigen/entity-normalizer mobx mobx-react-lite
105
105
 
106
106
  ```ts
107
107
  export const ENTITY_KEY = {
108
- VIEWER: 'viewers',
109
- POST: 'posts',
108
+ VIEWER: 'viewers',
109
+ POST: 'posts',
110
110
  } as const;
111
111
  ```
112
112
 
@@ -116,20 +116,20 @@ export const ENTITY_KEY = {
116
116
 
117
117
  ```ts
118
118
  export const viewerSchema = createEntitySchema(
119
- ENTITY_KEY.VIEWER,
120
- {},
121
- { model: ViewerModel }
119
+ ENTITY_KEY.VIEWER,
120
+ {},
121
+ { model: ViewerModel },
122
122
  );
123
123
  ```
124
124
 
125
125
  ```ts
126
126
  export const postSchema = createEntitySchema(
127
- ENTITY_KEY.POST,
128
- {
129
- viewer: viewerSchema,
130
- viewers: [viewerSchema],
131
- },
132
- { model: PostModel }
127
+ ENTITY_KEY.POST,
128
+ {
129
+ viewer: viewerSchema,
130
+ viewers: [viewerSchema],
131
+ },
132
+ { model: PostModel },
133
133
  );
134
134
  ```
135
135
 
@@ -139,8 +139,8 @@ export const postSchema = createEntitySchema(
139
139
 
140
140
  ```ts
141
141
  export const schemaMap = {
142
- [ENTITY_KEY.VIEWER]: viewerSchema,
143
- [ENTITY_KEY.POST]: postSchema,
142
+ [ENTITY_KEY.VIEWER]: viewerSchema,
143
+ [ENTITY_KEY.POST]: postSchema,
144
144
  };
145
145
  ```
146
146
 
@@ -153,16 +153,16 @@ They never own related entities directly.
153
153
 
154
154
  ```ts
155
155
  export class PostModel {
156
- constructor(dto, get) {
157
- this.id = dto.id;
158
- this.viewerId = dto.viewerId;
159
- this.title = dto.title;
160
- makeAutoObservable(this);
161
- }
162
-
163
- get viewer() {
164
- return this.get(ENTITY_KEY.VIEWER, this.viewerId);
165
- }
156
+ constructor(dto, get) {
157
+ this.id = dto.id;
158
+ this.viewerId = dto.viewerId;
159
+ this.title = dto.title;
160
+ makeAutoObservable(this);
161
+ }
162
+
163
+ get viewer() {
164
+ return this.get(ENTITY_KEY.VIEWER, this.viewerId);
165
+ }
166
166
  }
167
167
  ```
168
168
 
@@ -175,22 +175,22 @@ They never store entity data directly.
175
175
 
176
176
  ```ts
177
177
  export class PostsStore {
178
- lists;
179
-
180
- constructor(deps) {
181
- this.lists = deps.core.entities.createMultiCollection({
182
- entityKey: ENTITY_KEY.POST,
183
- collectionId: 'posts',
184
- limit: 20,
185
- });
186
-
187
- makeAutoObservable(this);
188
- }
189
-
190
- fetchPosts = createDuck(async ({ group }) => {
191
- const res = await deps.api.Posts.getPosts({ group });
192
- this.lists[group].set(res);
193
- });
178
+ lists;
179
+
180
+ constructor(deps) {
181
+ this.lists = deps.core.entities.createMultiCollection({
182
+ entityKey: ENTITY_KEY.POST,
183
+ collectionId: 'posts',
184
+ limit: 20,
185
+ });
186
+
187
+ makeAutoObservable(this);
188
+ }
189
+
190
+ fetchPosts = createDuck(async ({ group }) => {
191
+ const res = await deps.api.Posts.getPosts({ group });
192
+ this.lists[group].set(res);
193
+ });
194
194
  }
195
195
  ```
196
196
 
@@ -200,15 +200,15 @@ export class PostsStore {
200
200
 
201
201
  ```ts
202
202
  export const rootStore = createRootStore({
203
- api: Api,
204
- schemaMap,
205
- stores: {
206
- posts: PostsStore,
207
- viewer: ViewerStore,
208
- },
209
- services: {
210
- bootstrap: BootstrapService,
211
- },
203
+ api: Api,
204
+ schemaMap,
205
+ stores: {
206
+ posts: PostsStore,
207
+ viewer: ViewerStore,
208
+ },
209
+ services: {
210
+ bootstrap: BootstrapService,
211
+ },
212
212
  });
213
213
  ```
214
214
 
@@ -222,18 +222,18 @@ registerRootStore(rootStore);
222
222
 
223
223
  ```ts
224
224
  export const { useStores, useServices, useCore } =
225
- createStoreHooks<typeof rootStore>();
225
+ createStoreHooks<typeof rootStore>();
226
226
  ```
227
227
 
228
228
  ```tsx
229
229
  const PostsScreen = observer(() => {
230
- const { posts } = useStores();
230
+ const { posts } = useStores();
231
231
 
232
- useEffect(() => {
233
- posts.fetchPosts.run({ group: 'active' });
234
- }, []);
232
+ useEffect(() => {
233
+ posts.fetchPosts.run({ group: 'active' });
234
+ }, []);
235
235
 
236
- return <List data={posts.lists.active.getList} />;
236
+ return <List data={posts.lists.active.getList} />;
237
237
  });
238
238
  ```
239
239
 
@@ -9,6 +9,7 @@ export declare class AsyncDuck<TParams, TResult> {
9
9
  private _keyed;
10
10
  private _proxy?;
11
11
  private _pendingPromise;
12
+ private _lastRunParams?;
12
13
  constructor(fn: (params?: TParams) => Promise<TResult>);
13
14
  getKeyed(key: string): AsyncDuck<TParams, TResult>;
14
15
  private setLoading;
@@ -18,6 +19,7 @@ export declare class AsyncDuck<TParams, TResult> {
18
19
  private sleep;
19
20
  private runWithRetry;
20
21
  run(options?: RunOptions<TParams, TResult>): Promise<TResult | undefined>;
22
+ refresh(): Promise<TResult | undefined>;
21
23
  get isLoading(): boolean;
22
24
  get isRetrying(): boolean;
23
25
  get isError(): boolean;
@@ -1,4 +1,5 @@
1
1
  import { makeObservable, observable, action } from 'mobx';
2
+ import { executionAsyncContext } from './execution-context';
2
3
  import { DUCK_TAG } from './marker';
3
4
  import { defaultRetryStrategy } from './retry';
4
5
  export class AsyncDuck {
@@ -76,6 +77,7 @@ export class AsyncDuck {
76
77
  this._data = null;
77
78
  this._hasEverRun = false;
78
79
  this._pendingPromise = null;
80
+ this._lastRunParams = undefined;
79
81
  }
80
82
  // -------------------------------------
81
83
  // UTILS
@@ -127,6 +129,9 @@ export class AsyncDuck {
127
129
  return this._pendingPromise;
128
130
  }
129
131
  const { params, onSuccess, onError, retryStrategy } = options ?? {};
132
+ if (params !== undefined) {
133
+ this._lastRunParams = params;
134
+ }
130
135
  const isRetry = !!retryStrategy;
131
136
  this.setLoading(isRetry);
132
137
  this._pendingPromise = (async () => {
@@ -147,6 +152,12 @@ export class AsyncDuck {
147
152
  })();
148
153
  return this._pendingPromise;
149
154
  }
155
+ refresh() {
156
+ if (!this._lastRunParams) {
157
+ return Promise.resolve(undefined);
158
+ }
159
+ return executionAsyncContext.runWith('refresh', () => this.run({ params: this._lastRunParams }));
160
+ }
150
161
  // -------------------------------------
151
162
  // GETTERS
152
163
  // -------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"async-duck.js","sourceRoot":"","sources":["../../src/async/async-duck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async-duck.js","sourceRoot":"","sources":["../../src/async/async-duck.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ExecutionIntent } from './types';
2
+ import type { PublicExecutionContext } from './public';
3
+ export declare class ExecutionContext {
4
+ private stack;
5
+ runWith<T>(intent: ExecutionIntent, fn: () => Promise<T>): Promise<T>;
6
+ current(): ExecutionIntent;
7
+ is(intent: ExecutionIntent): boolean;
8
+ }
9
+ export declare function createExecutionContext(): PublicExecutionContext;
10
+ export declare const executionAsyncContext: PublicExecutionContext;
@@ -0,0 +1,25 @@
1
+ export class ExecutionContext {
2
+ constructor() {
3
+ this.stack = [];
4
+ }
5
+ async runWith(intent, fn) {
6
+ this.stack.push(intent);
7
+ try {
8
+ return await fn();
9
+ }
10
+ finally {
11
+ this.stack.pop();
12
+ }
13
+ }
14
+ current() {
15
+ return this.stack[this.stack.length - 1] ?? 'normal';
16
+ }
17
+ is(intent) {
18
+ return this.current() === intent;
19
+ }
20
+ }
21
+ export function createExecutionContext() {
22
+ return new ExecutionContext();
23
+ }
24
+ export const executionAsyncContext = createExecutionContext();
25
+ //# sourceMappingURL=execution-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../../src/async/execution-context.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gBAAgB;IAA7B;QACU,UAAK,GAAsB,EAAE,CAAC;IAkBxC,CAAC;IAhBC,KAAK,CAAC,OAAO,CAAI,MAAuB,EAAE,EAAoB;QAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;IACvD,CAAC;IAED,EAAE,CAAC,MAAuB;QACxB,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAChC,sBAAsB,EAAE,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from './create-duck';
2
+ export * from './execution-context';
@@ -1,2 +1,3 @@
1
1
  export * from './create-duck';
2
+ export * from './execution-context';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AxiosError } from './types';
1
+ import type { AxiosError, ExecutionIntent } from './types';
2
2
  export interface RetryStrategy {
3
3
  retries: number;
4
4
  delayMs: number;
@@ -13,8 +13,14 @@ export type RunOptions<TParams, TResult> = {
13
13
  skip?: boolean;
14
14
  retryStrategy?: RetryStrategy;
15
15
  };
16
+ export interface PublicExecutionContext {
17
+ runWith<T>(intent: ExecutionIntent, fn: () => Promise<T>): Promise<T>;
18
+ current(): ExecutionIntent;
19
+ is(intent: ExecutionIntent): boolean;
20
+ }
16
21
  export interface PublicAsyncDuck<TParams, TResult> {
17
22
  run(options?: RunOptions<TParams, TResult>): Promise<TResult | undefined>;
23
+ refresh(): Promise<TResult | undefined>;
18
24
  readonly isLoading: boolean;
19
25
  readonly isRetrying: boolean;
20
26
  readonly isError: boolean;
@@ -22,3 +22,4 @@ export type RunOptions<TParams, TResult> = {
22
22
  skip?: boolean;
23
23
  retryStrategy?: RetryStrategy;
24
24
  };
25
+ export type ExecutionIntent = 'normal' | 'refresh';
@@ -1,5 +1,12 @@
1
1
  import type { StoreShape } from './scanner';
2
2
  import type { SystemDeps } from '../root/types';
3
+ /**
4
+ * Cleaner
5
+ *
6
+ * - resetStore is a **silent, infra-only operation**
7
+ * - MUST NOT trigger persistence notifications
8
+ * - persistence lifecycle is handled by StoreProxy / higher-level APIs
9
+ */
3
10
  export declare class Cleaner {
4
11
  private deps;
5
12
  constructor(deps: SystemDeps);
@@ -1,17 +1,19 @@
1
1
  import { runInAction } from 'mobx';
2
- const SUPPRESS_KEY = '__suppressPersistNotify';
3
- function incSuppress(store) {
4
- store[SUPPRESS_KEY] = (store[SUPPRESS_KEY] ?? 0) + 1;
5
- }
6
- function decSuppress(store) {
7
- store[SUPPRESS_KEY] = Math.max(0, (store[SUPPRESS_KEY] ?? 0) - 1);
8
- }
2
+ import { incSuppress, decSuppress } from './utils';
3
+ /**
4
+ * Cleaner
5
+ *
6
+ * - resetStore is a **silent, infra-only operation**
7
+ * - MUST NOT trigger persistence notifications
8
+ * - persistence lifecycle is handled by StoreProxy / higher-level APIs
9
+ */
9
10
  export class Cleaner {
10
11
  constructor(deps) {
11
12
  this.deps = deps;
12
13
  }
13
14
  applyReset(store, shape) {
14
15
  const initialPlain = shape.plain;
16
+ // already patched
15
17
  if (typeof store.resetStore === 'function') {
16
18
  return;
17
19
  }
@@ -21,47 +23,57 @@ export class Cleaner {
21
23
  writable: true,
22
24
  value: () => {
23
25
  incSuppress(store);
24
- runInAction(() => {
25
- // plain fields
26
- for (const [key, val] of Object.entries(initialPlain)) {
27
- try {
28
- store[key] = val;
29
- }
30
- catch { }
31
- }
32
- // single collections
33
- for (const key of shape.single) {
34
- try {
35
- store[key].reset?.();
26
+ try {
27
+ runInAction(() => {
28
+ // -------------------------
29
+ // plain fields
30
+ // -------------------------
31
+ for (const [key, val] of Object.entries(initialPlain)) {
32
+ try {
33
+ store[key] = val;
34
+ }
35
+ catch { }
36
36
  }
37
- catch { }
38
- }
39
- // multi collections
40
- for (const key of shape.multi) {
41
- const mc = store[key];
42
- try {
43
- if (mc?.resetAll) {
44
- mc.resetAll();
37
+ // -------------------------
38
+ // single collections
39
+ // -------------------------
40
+ for (const key of shape.single) {
41
+ try {
42
+ store[key]?.reset?.();
45
43
  }
46
- else if (mc?.getSubCollections) {
47
- for (const col of mc.getSubCollections().values()) {
48
- col.reset?.({ silent: true });
44
+ catch { }
45
+ }
46
+ // -------------------------
47
+ // multi collections
48
+ // -------------------------
49
+ for (const key of shape.multi) {
50
+ const mc = store[key];
51
+ try {
52
+ if (mc?.resetAll) {
53
+ mc.resetAll();
54
+ }
55
+ else if (mc?.getSubCollections) {
56
+ for (const col of mc.getSubCollections().values()) {
57
+ col.reset?.({ silent: true });
58
+ }
49
59
  }
50
60
  }
61
+ catch { }
51
62
  }
52
- catch { }
53
- }
54
- // records
55
- for (const key of shape.records) {
56
- try {
57
- store[key].reset?.();
63
+ // -------------------------
64
+ // records
65
+ // -------------------------
66
+ for (const key of shape.records) {
67
+ try {
68
+ store[key]?.reset?.();
69
+ }
70
+ catch { }
58
71
  }
59
- catch { }
60
- }
61
- });
62
- decSuppress(store);
63
- // 1 notify, async
64
- queueMicrotask(() => this.deps?.getPersistence?.()?.onStoreStateChanged?.());
72
+ });
73
+ }
74
+ finally {
75
+ decSuppress(store);
76
+ }
65
77
  },
66
78
  });
67
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleaner.js","sourceRoot":"","sources":["../../src/create/cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAMnC,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAE/C,SAAS,WAAW,CAAC,KAAU;IAC7B,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AACD,SAAS,WAAW,CAAC,KAAU;IAC7B,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,OAAO,OAAO;IAClB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAI,CAAC;IAEzC,UAAU,CACR,KAAU,EACV,KAAiE;QAEjE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QAEjC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE;YACzC,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,GAAG,EAAE;gBACV,WAAW,CAAC,KAAK,CAAC,CAAC;gBAEnB,WAAW,CAAC,GAAG,EAAE;oBACf,eAAe;oBACf,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;wBACtD,IAAI,CAAC;4BACH,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;wBACnB,CAAC;wBAAC,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC;oBAED,qBAAqB;oBACrB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC/B,IAAI,CAAC;4BACH,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;wBACvB,CAAC;wBAAC,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC;oBAED,oBAAoB;oBACpB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;wBACtB,IAAI,CAAC;4BACH,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;gCACjB,EAAE,CAAC,QAAQ,EAAE,CAAC;4BAChB,CAAC;iCAAM,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC;gCACjC,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;oCAClD,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gCAChC,CAAC;4BACH,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC;oBAED,UAAU;oBACV,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAChC,IAAI,CAAC;4BACH,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;wBACvB,CAAC;wBAAC,MAAM,CAAC,CAAC,CAAC;oBACb,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,WAAW,CAAC,KAAK,CAAC,CAAC;gBAEnB,kBAAkB;gBAClB,cAAc,CAAC,GAAG,EAAE,CAClB,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,CACvD,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"cleaner.js","sourceRoot":"","sources":["../../src/create/cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKnD;;;;;;GAMG;AACH,MAAM,OAAO,OAAO;IAClB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,UAAU,CACR,KAAU,EACV,KAAiE;QAEjE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QAEjC,kBAAkB;QAClB,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE;YACzC,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,GAAG,EAAE;gBACV,WAAW,CAAC,KAAK,CAAC,CAAC;gBAEnB,IAAI,CAAC;oBACH,WAAW,CAAC,GAAG,EAAE;wBACf,4BAA4B;wBAC5B,eAAe;wBACf,4BAA4B;wBAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;4BACtD,IAAI,CAAC;gCACH,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;4BACnB,CAAC;4BAAC,MAAM,CAAC,CAAA,CAAC;wBACZ,CAAC;wBAED,4BAA4B;wBAC5B,qBAAqB;wBACrB,4BAA4B;wBAC5B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;4BAC/B,IAAI,CAAC;gCACH,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;4BACxB,CAAC;4BAAC,MAAM,CAAC,CAAA,CAAC;wBACZ,CAAC;wBAED,4BAA4B;wBAC5B,oBAAoB;wBACpB,4BAA4B;wBAC5B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;4BAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;4BACtB,IAAI,CAAC;gCACH,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;oCACjB,EAAE,CAAC,QAAQ,EAAE,CAAC;gCAChB,CAAC;qCAAM,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC;oCACjC,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;wCAClD,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oCAChC,CAAC;gCACH,CAAC;4BACH,CAAC;4BAAC,MAAM,CAAC,CAAA,CAAC;wBACZ,CAAC;wBAED,4BAA4B;wBAC5B,UAAU;wBACV,4BAA4B;wBAC5B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;4BAChC,IAAI,CAAC;gCACH,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;4BACxB,CAAC;4BAAC,MAAM,CAAC,CAAA,CAAC;wBACZ,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACT,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export declare const SUPPRESS_KEY = "__suppressPersistNotify";
@@ -0,0 +1,2 @@
1
+ export const SUPPRESS_KEY = '__suppressPersistNotify';
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/create/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../src/create/create-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAKzC,MAAM,UAAU,WAAW,CACzB,UAA4C,EAC5C,IAAuB;IAEvB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../src/create/create-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,UAAU,WAAW,CACzB,UAA4C,EAC5C,IAAuB;IAEvB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC"}
@@ -1,8 +1,5 @@
1
- import { type StoreShape } from './scanner';
2
- import type { Scanner } from './scanner';
1
+ import type { StoreShape } from './scanner';
3
2
  export declare class StoreSnapshotExtractor {
4
- private scanner;
5
- constructor(scanner: Scanner);
6
3
  getSnapshot(store: any, shape: StoreShape): Record<string, any>;
7
4
  applySnapshot(store: any, snap: any, shape: StoreShape): void;
8
5
  }
@@ -1,13 +1,11 @@
1
1
  import { runInAction } from 'mobx';
2
+ import { deepClone } from './utils';
2
3
  export class StoreSnapshotExtractor {
3
- constructor(scanner) {
4
- this.scanner = scanner;
5
- }
6
4
  getSnapshot(store, shape) {
7
5
  const out = {};
8
- // plain
6
+ // plain (clone for safety)
9
7
  for (const key of Object.keys(shape.plain)) {
10
- out[key] = store[key];
8
+ out[key] = deepClone(store[key]);
11
9
  }
12
10
  // single collections
13
11
  for (const key of shape.single) {
@@ -40,13 +38,13 @@ export class StoreSnapshotExtractor {
40
38
  catch { }
41
39
  }
42
40
  }
43
- // single
41
+ // single collections
44
42
  for (const key of shape.single) {
45
43
  if (snap[key]) {
46
44
  store[key]?.applySnapshot?.(snap[key], { silent: true });
47
45
  }
48
46
  }
49
- // multi
47
+ // multi collections
50
48
  for (const key of shape.multi) {
51
49
  if (snap[key]) {
52
50
  store[key]?.applyMultiSnapshot?.(snap[key]);
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/create/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAMnC,MAAM,OAAO,sBAAsB;IACjC,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAExC,WAAW,CAAC,KAAU,EAAE,KAAiB;QACvC,MAAM,GAAG,GAAwB,EAAE,CAAC;QAEpC,QAAQ;QACR,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,qBAAqB;QACrB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACzC,CAAC;QAED,oBAAoB;QACpB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,EAAE,EAAE,gBAAgB,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,UAAU;QACV,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa,CAAC,KAAU,EAAE,IAAS,EAAE,KAAiB;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,WAAW,CAAC,GAAG,EAAE;YACf,QAAQ;YACR,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,SAAS;YACT,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,QAAQ;YACR,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,UAAU;YACV,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/create/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,MAAM,OAAO,sBAAsB;IACjC,WAAW,CAAC,KAAU,EAAE,KAAiB;QACvC,MAAM,GAAG,GAAwB,EAAE,CAAC;QAEpC,2BAA2B;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,qBAAqB;QACrB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACzC,CAAC;QAED,oBAAoB;QACpB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,EAAE,EAAE,gBAAgB,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,UAAU;QACV,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa,CAAC,KAAU,EAAE,IAAS,EAAE,KAAiB;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,WAAW,CAAC,GAAG,EAAE;YACf,QAAQ;YACR,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,UAAU;YACV,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACd,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -2,20 +2,13 @@ import { Cleaner } from './cleaner';
2
2
  import { StoreSnapshotExtractor } from './extractor';
3
3
  import { StoreProxy } from './proxy';
4
4
  import { Scanner } from './scanner';
5
- import { defineHiddenProp } from './utils';
6
- const SUPPRESS_KEY = '__suppressPersistNotify';
7
- function incSuppress(store) {
8
- store[SUPPRESS_KEY] = (store[SUPPRESS_KEY] ?? 0) + 1;
9
- }
10
- function decSuppress(store) {
11
- store[SUPPRESS_KEY] = Math.max(0, (store[SUPPRESS_KEY] ?? 0) - 1);
12
- }
5
+ import { defineHiddenProp, incSuppress, decSuppress } from './utils';
13
6
  export class StoreManager {
14
7
  constructor(deps) {
15
8
  this.deps = deps;
16
9
  this.scanner = new Scanner();
17
10
  this.cleaner = new Cleaner(deps.system);
18
- this.extractor = new StoreSnapshotExtractor(this.scanner);
11
+ this.extractor = new StoreSnapshotExtractor();
19
12
  }
20
13
  create(StoreClass) {
21
14
  const instance = new StoreClass(this.deps.domain);
@@ -27,8 +20,12 @@ export class StoreManager {
27
20
  defineHiddenProp(instance, '__applySnapshot', (snap) => {
28
21
  // suppress persist spam while mutating many fields
29
22
  incSuppress(instance);
30
- this.extractor.applySnapshot(instance, snap, shape);
31
- decSuppress(instance);
23
+ try {
24
+ this.extractor.applySnapshot(instance, snap, shape);
25
+ }
26
+ finally {
27
+ decSuppress(instance);
28
+ }
32
29
  // one notify after restore
33
30
  queueMicrotask(() => this.deps.system?.getPersistence?.()?.onStoreStateChanged?.());
34
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/create/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAI3C,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAE/C,SAAS,WAAW,CAAC,KAAU;IAC7B,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AACD,SAAS,WAAW,CAAC,KAAU;IAC7B,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,OAAO,YAAY;IAKvB,YAAoB,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;QAJnC,YAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAK9B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAS,UAA4C;QACzD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,QAAQ;QACR,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEzC,wBAAwB;QACxB,gBAAgB,CAAC,QAAe,EAAE,eAAe,EAAE,GAAG,EAAE,CACtD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC5C,CAAC;QAEF,gBAAgB,CAAC,QAAe,EAAE,iBAAiB,EAAE,CAAC,IAAS,EAAE,EAAE;YACjE,mDAAmD;YACnD,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACpD,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtB,2BAA2B;YAC3B,cAAc,CAAC,GAAG,EAAE,CAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,CAC9D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,QAAQ,EACR,KAAK,CAAC,OAAO,CACd,CAAC,KAAK,EAAY,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/create/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAmB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIrE,MAAM,OAAO,YAAY;IAKvB,YAAoB,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;QAJnC,YAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAK9B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,CAAS,UAA4C;QACzD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,QAAQ;QACR,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEzC,wBAAwB;QACxB,gBAAgB,CAAC,QAAe,EAAE,eAAe,EAAE,GAAG,EAAE,CACtD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC5C,CAAC;QAEF,gBAAgB,CAAC,QAAe,EAAE,iBAAiB,EAAE,CAAC,IAAS,EAAE,EAAE;YACjE,mDAAmD;YACnD,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;oBAAS,CAAC;gBACT,WAAW,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,2BAA2B;YAC3B,cAAc,CAAC,GAAG,EAAE,CAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,CAC9D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,QAAQ,EACR,KAAK,CAAC,OAAO,CACd,CAAC,KAAK,EAAY,CAAC;IACtB,CAAC;CACF"}
@@ -4,6 +4,8 @@ export declare class StoreProxy {
4
4
  private target;
5
5
  private actions;
6
6
  private notifyQueued;
7
+ private pendingNotify;
8
+ private wrapped;
7
9
  constructor(deps: SystemDeps, target: any, actions: string[]);
8
10
  build(): any;
9
11
  private scheduleNotify;