pinia-react 2.1.0 → 2.1.2
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/index.d.ts +34 -3
- package/dist/index.js +45 -70
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import { Draft, Patch } from 'immer';
|
|
2
2
|
|
|
3
3
|
type StateTree = Record<string, any>;
|
|
4
|
+
type MutationType = 'action' | 'patch' | 'reset' | 'restore';
|
|
5
|
+
/** Metadata describing why a state transition was committed. */
|
|
6
|
+
interface MutationMeta {
|
|
7
|
+
type: MutationType;
|
|
8
|
+
origin?: string;
|
|
9
|
+
action?: string;
|
|
10
|
+
args?: unknown[];
|
|
11
|
+
}
|
|
12
|
+
/** A committed state transition, intended for Pinia plugins. */
|
|
13
|
+
interface MutationEvent<S extends StateTree = StateTree> {
|
|
14
|
+
storeId: string;
|
|
15
|
+
store: StoreGeneric;
|
|
16
|
+
state: S;
|
|
17
|
+
prevState: S;
|
|
18
|
+
patches: Patch[];
|
|
19
|
+
meta: MutationMeta;
|
|
20
|
+
}
|
|
21
|
+
type MutationListener = (event: MutationEvent) => void;
|
|
22
|
+
interface RestoreStateOptions {
|
|
23
|
+
type?: Extract<MutationType, 'restore' | 'reset'>;
|
|
24
|
+
origin?: string;
|
|
25
|
+
}
|
|
4
26
|
type TransformGetters<G> = {
|
|
5
27
|
[K in keyof G]: G[K] extends (...args: any[]) => infer R ? R : never;
|
|
6
28
|
};
|
|
@@ -21,7 +43,10 @@ type StoreGeneric = Store<string, StateTree, Record<string, any>, Record<string,
|
|
|
21
43
|
type GettersImplementation<S> = {
|
|
22
44
|
[K in string]: (state: S) => any;
|
|
23
45
|
};
|
|
24
|
-
|
|
46
|
+
/** Extension point for store-option plugins. */
|
|
47
|
+
interface DefineStoreOptionsBase<S extends StateTree, Store> {
|
|
48
|
+
}
|
|
49
|
+
interface DefineStoreOptions<S extends StateTree, G extends Record<string, any>, A extends Record<string, any>> extends DefineStoreOptionsBase<S, Store<string, S, G, A>> {
|
|
25
50
|
state: () => S;
|
|
26
51
|
getters?: G & ThisType<GetterContext<S, G>> & GettersImplementation<S>;
|
|
27
52
|
actions?: A & ThisType<ActionContext<S, G, A>>;
|
|
@@ -29,7 +54,7 @@ interface DefineStoreOptions<S extends StateTree, G extends Record<string, any>,
|
|
|
29
54
|
type StoreScope = {
|
|
30
55
|
currentState: StateTree;
|
|
31
56
|
listeners: Set<(state: any, prev: any, patches: Patch[]) => void>;
|
|
32
|
-
|
|
57
|
+
getterResultCache: Map<string, any>;
|
|
33
58
|
getterDependencies: Map<string, Set<string>>;
|
|
34
59
|
subscribers: Map<string, Set<string>>;
|
|
35
60
|
createStoreProxy: (onAccess?: (path: string[]) => void) => StoreGeneric;
|
|
@@ -37,9 +62,12 @@ type StoreScope = {
|
|
|
37
62
|
interface Pinia {
|
|
38
63
|
state: Record<string, StateTree>;
|
|
39
64
|
use(plugin: PiniaPlugin): Pinia;
|
|
65
|
+
/** Subscribe to committed mutations from every store in this Pinia instance. */
|
|
66
|
+
onMutation(listener: MutationListener): () => void;
|
|
40
67
|
_p: PiniaPlugin[];
|
|
41
68
|
_s: Map<string, StoreGeneric>;
|
|
42
69
|
_scopes: Map<string, StoreScope>;
|
|
70
|
+
_m: Set<MutationListener>;
|
|
43
71
|
}
|
|
44
72
|
interface PiniaPlugin {
|
|
45
73
|
(context: PiniaPluginContext): Partial<PiniaCustomProperties> | void;
|
|
@@ -48,6 +76,9 @@ type PiniaPluginContext<Id extends string = string, S extends StateTree = StateT
|
|
|
48
76
|
id: Id;
|
|
49
77
|
store: Store<Id, S, G, A>;
|
|
50
78
|
options: DefineStoreOptions<S, G, A>;
|
|
79
|
+
pinia: Pinia;
|
|
80
|
+
/** A plugin-only, fully controlled state replacement operation. */
|
|
81
|
+
restoreState: (state: S, options?: RestoreStateOptions) => void;
|
|
51
82
|
};
|
|
52
83
|
interface StoreDefinition<Id extends string, S extends StateTree, G extends Record<string, any>, A extends Record<string, any>> {
|
|
53
84
|
useStore: () => Store<Id, S, G, A>;
|
|
@@ -67,4 +98,4 @@ declare function getActivePinia(): Pinia;
|
|
|
67
98
|
|
|
68
99
|
declare function defineStore<Id extends string, S extends StateTree, G extends Record<string, any> = {}, A extends Record<string, any> = {}>(id: Id, options: DefineStoreOptions<S, G, A>): StoreDefinitionWithNames<Id, S, G, A>;
|
|
69
100
|
|
|
70
|
-
export { type DefineStoreOptions, type Pinia, type PiniaCustomProperties, type PiniaPlugin, type PiniaPluginContext, type StateTree, type Store, type StoreDefinition, type StoreGeneric, type SubscriptionCallback, createPinia, defineStore, getActivePinia, setActivePinia };
|
|
101
|
+
export { type DefineStoreOptions, type DefineStoreOptionsBase, type MutationEvent, type MutationListener, type MutationMeta, type MutationType, type Pinia, type PiniaCustomProperties, type PiniaPlugin, type PiniaPluginContext, type RestoreStateOptions, type StateTree, type Store, type StoreDefinition, type StoreGeneric, type SubscriptionCallback, createPinia, defineStore, getActivePinia, setActivePinia };
|
package/dist/index.js
CHANGED
|
@@ -18,14 +18,20 @@ function createPinia() {
|
|
|
18
18
|
const _p = [];
|
|
19
19
|
const _s = /* @__PURE__ */ new Map();
|
|
20
20
|
const _scopes = /* @__PURE__ */ new Map();
|
|
21
|
+
const _m = /* @__PURE__ */ new Set();
|
|
21
22
|
const pinia = {
|
|
22
23
|
use(plugin) {
|
|
23
24
|
_p.push(plugin);
|
|
24
25
|
return this;
|
|
25
26
|
},
|
|
27
|
+
onMutation(listener) {
|
|
28
|
+
_m.add(listener);
|
|
29
|
+
return () => _m.delete(listener);
|
|
30
|
+
},
|
|
26
31
|
_p,
|
|
27
32
|
_s,
|
|
28
33
|
_scopes,
|
|
34
|
+
_m,
|
|
29
35
|
state
|
|
30
36
|
};
|
|
31
37
|
setActivePinia(pinia);
|
|
@@ -83,12 +89,10 @@ function defineStore(id, options) {
|
|
|
83
89
|
const pinia = getActivePinia();
|
|
84
90
|
const initialState = options.state();
|
|
85
91
|
let storePublicApi;
|
|
86
|
-
let devTools;
|
|
87
|
-
let isTimeTraveling = false;
|
|
88
92
|
const localScope = {
|
|
89
93
|
currentState: initialState,
|
|
90
94
|
listeners: /* @__PURE__ */ new Set(),
|
|
91
|
-
|
|
95
|
+
getterResultCache: /* @__PURE__ */ new Map(),
|
|
92
96
|
getterDependencies: /* @__PURE__ */ new Map(),
|
|
93
97
|
subscribers: /* @__PURE__ */ new Map(),
|
|
94
98
|
createStoreProxy: (_onAccess) => storePublicApi
|
|
@@ -102,8 +106,8 @@ function defineStore(id, options) {
|
|
|
102
106
|
if (!subscriberScope) return;
|
|
103
107
|
let shouldNotify = false;
|
|
104
108
|
getterKeys.forEach((key) => {
|
|
105
|
-
if (subscriberScope.
|
|
106
|
-
subscriberScope.
|
|
109
|
+
if (subscriberScope.getterResultCache.has(key)) {
|
|
110
|
+
subscriberScope.getterResultCache.delete(key);
|
|
107
111
|
shouldNotify = true;
|
|
108
112
|
}
|
|
109
113
|
});
|
|
@@ -116,28 +120,42 @@ function defineStore(id, options) {
|
|
|
116
120
|
}
|
|
117
121
|
});
|
|
118
122
|
};
|
|
119
|
-
const internalPatch = (updater,
|
|
120
|
-
if (isTimeTraveling) return;
|
|
123
|
+
const internalPatch = (updater, meta) => {
|
|
121
124
|
const oldState = localScope.currentState;
|
|
122
125
|
let patches = [];
|
|
123
126
|
const nextState = produce(oldState, updater, (p) => {
|
|
124
127
|
patches = p;
|
|
125
128
|
});
|
|
126
|
-
if (patches.length > 0 ||
|
|
129
|
+
if (patches.length > 0 || meta.type === "reset") {
|
|
127
130
|
localScope.currentState = nextState;
|
|
128
131
|
pinia.state[id] = nextState;
|
|
129
|
-
if (devTools) {
|
|
130
|
-
devTools.send({ type: actionName, payload: patches }, nextState);
|
|
131
|
-
}
|
|
132
132
|
emit(nextState, oldState, patches);
|
|
133
|
+
const event = {
|
|
134
|
+
storeId: id,
|
|
135
|
+
store: storePublicApi,
|
|
136
|
+
state: nextState,
|
|
137
|
+
prevState: oldState,
|
|
138
|
+
patches,
|
|
139
|
+
meta
|
|
140
|
+
};
|
|
141
|
+
pinia._m.forEach((listener) => listener(event));
|
|
133
142
|
}
|
|
134
143
|
};
|
|
135
144
|
const $patch = (updater) => {
|
|
136
|
-
internalPatch(
|
|
137
|
-
|
|
138
|
-
|
|
145
|
+
internalPatch(
|
|
146
|
+
(draft) => {
|
|
147
|
+
updater(draft);
|
|
148
|
+
},
|
|
149
|
+
{ type: "patch" }
|
|
150
|
+
);
|
|
151
|
+
};
|
|
152
|
+
const $reset = () => internalPatch(() => options.state(), { type: "reset" });
|
|
153
|
+
const restoreState = (state, options2 = {}) => {
|
|
154
|
+
internalPatch(() => state, {
|
|
155
|
+
type: options2.type ?? "restore",
|
|
156
|
+
origin: options2.origin
|
|
157
|
+
});
|
|
139
158
|
};
|
|
140
|
-
const $reset = () => internalPatch(() => options.state(), "@reset", true);
|
|
141
159
|
const $subscribe = (callback) => {
|
|
142
160
|
const listener = (state, prev) => callback(state, prev);
|
|
143
161
|
localScope.listeners.add(listener);
|
|
@@ -147,7 +165,7 @@ function defineStore(id, options) {
|
|
|
147
165
|
localScope.getterDependencies.forEach((_deps, getterName) => {
|
|
148
166
|
const resolvedDeps = resolveGetterDependencies(getterName, localScope.getterDependencies);
|
|
149
167
|
if (isAffected(patches, resolvedDeps)) {
|
|
150
|
-
localScope.
|
|
168
|
+
localScope.getterResultCache.delete(getterName);
|
|
151
169
|
}
|
|
152
170
|
});
|
|
153
171
|
};
|
|
@@ -193,7 +211,7 @@ function defineStore(id, options) {
|
|
|
193
211
|
}
|
|
194
212
|
if (strKey in getters) {
|
|
195
213
|
onAccess?.([strKey]);
|
|
196
|
-
if (localScope.
|
|
214
|
+
if (localScope.getterResultCache.has(strKey)) return localScope.getterResultCache.get(strKey);
|
|
197
215
|
if (isGetterComputing.has(strKey)) {
|
|
198
216
|
console.warn(`[pinia-react] Circular dependency detected in getter "${strKey}"`);
|
|
199
217
|
return void 0;
|
|
@@ -212,7 +230,7 @@ function defineStore(id, options) {
|
|
|
212
230
|
const trackingStateProxy = createStateProxy(state, [], onGetterAccess);
|
|
213
231
|
const result = getters[strKey].call(trackingProxyForThis, trackingStateProxy);
|
|
214
232
|
localScope.getterDependencies.set(strKey, dependencies);
|
|
215
|
-
localScope.
|
|
233
|
+
localScope.getterResultCache.set(strKey, result);
|
|
216
234
|
return result;
|
|
217
235
|
} finally {
|
|
218
236
|
activeListenerId = prevListenerId;
|
|
@@ -261,67 +279,24 @@ function defineStore(id, options) {
|
|
|
261
279
|
});
|
|
262
280
|
returnValue = originalAction.apply(actionContextProxy, args);
|
|
263
281
|
};
|
|
264
|
-
internalPatch(recipe, actionName);
|
|
282
|
+
internalPatch(recipe, { type: "action", action: actionName, args });
|
|
265
283
|
return returnValue;
|
|
266
284
|
};
|
|
267
285
|
});
|
|
268
286
|
localScope.createStoreProxy = createStoreProxy;
|
|
269
287
|
pinia._p.forEach((plugin) => {
|
|
270
|
-
const pluginResult = plugin({
|
|
288
|
+
const pluginResult = plugin({
|
|
289
|
+
id,
|
|
290
|
+
store: storePublicApi,
|
|
291
|
+
options,
|
|
292
|
+
pinia,
|
|
293
|
+
restoreState
|
|
294
|
+
});
|
|
271
295
|
if (pluginResult) {
|
|
272
296
|
Object.defineProperties(proxyTarget, Object.getOwnPropertyDescriptors(pluginResult));
|
|
273
297
|
}
|
|
274
298
|
});
|
|
275
299
|
pinia._s.set(id, storePublicApi);
|
|
276
|
-
if (typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__) {
|
|
277
|
-
devTools = window.__REDUX_DEVTOOLS_EXTENSION__.connect({ name: id });
|
|
278
|
-
devTools.init(localScope.currentState);
|
|
279
|
-
devTools.subscribe((message) => {
|
|
280
|
-
if (message.type === "DISPATCH") {
|
|
281
|
-
const payloadType = message.payload?.type;
|
|
282
|
-
switch (payloadType) {
|
|
283
|
-
case "JUMP_TO_STATE":
|
|
284
|
-
case "JUMP_TO_ACTION":
|
|
285
|
-
case "IMPORT_STATE": {
|
|
286
|
-
const newState = typeof message.state === "string" ? JSON.parse(message.state) : message.state;
|
|
287
|
-
if (!newState || typeof newState !== "object") return;
|
|
288
|
-
isTimeTraveling = true;
|
|
289
|
-
const oldState = localScope.currentState;
|
|
290
|
-
localScope.currentState = newState;
|
|
291
|
-
pinia.state[id] = newState;
|
|
292
|
-
localScope.getterCache.clear();
|
|
293
|
-
emit(newState, oldState, []);
|
|
294
|
-
isTimeTraveling = false;
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
case "COMMIT": {
|
|
298
|
-
devTools.init(localScope.currentState);
|
|
299
|
-
break;
|
|
300
|
-
}
|
|
301
|
-
case "ROLLBACK": {
|
|
302
|
-
const newState = typeof message.state === "string" ? JSON.parse(message.state) : message.state;
|
|
303
|
-
if (!newState || typeof newState !== "object") return;
|
|
304
|
-
isTimeTraveling = true;
|
|
305
|
-
const oldState = localScope.currentState;
|
|
306
|
-
localScope.currentState = newState;
|
|
307
|
-
pinia.state[id] = newState;
|
|
308
|
-
localScope.getterCache.clear();
|
|
309
|
-
emit(newState, oldState, []);
|
|
310
|
-
isTimeTraveling = false;
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
|
-
case "RESET": {
|
|
314
|
-
const originalState = options.state();
|
|
315
|
-
devTools.init(originalState);
|
|
316
|
-
internalPatch(() => originalState, "@reset", true);
|
|
317
|
-
break;
|
|
318
|
-
}
|
|
319
|
-
default:
|
|
320
|
-
break;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
300
|
return storePublicApi;
|
|
326
301
|
}
|
|
327
302
|
function getStore() {
|
|
@@ -357,7 +332,7 @@ function defineStore(id, options) {
|
|
|
357
332
|
for (const path of trackedPaths.current) {
|
|
358
333
|
const topKey = path.split(".")[0];
|
|
359
334
|
if (topKey in getters) {
|
|
360
|
-
if (!currentScope.
|
|
335
|
+
if (!currentScope.getterResultCache.has(topKey)) {
|
|
361
336
|
shouldUpdate = true;
|
|
362
337
|
break;
|
|
363
338
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rootStore.ts","../src/createPinia.ts","../src/store.ts"],"sourcesContent":["import type { Pinia } from './types'\n\nexport let activePinia: Pinia | undefined\n\nexport function setActivePinia(pinia: Pinia) {\n activePinia = pinia\n}\n\nexport function getActivePinia(): Pinia {\n if (!activePinia) {\n throw new Error(\n '[pinia-react] getActivePinia was called with no active Pinia. Did you forget to install pinia?\\n' +\n 'const pinia = createPinia() or createPinia() first.\\n'\n )\n }\n return activePinia\n}\n","import { setActivePinia } from './rootStore'\nimport type { Pinia, StateTree, StoreGeneric } from './types'\n\nexport function createPinia(): Pinia {\n const state: Record<string, StateTree> = {}\n const _p: Pinia['_p'] = []\n const _s = new Map<string, StoreGeneric>()\n const _scopes = new Map()\n\n const pinia: Pinia = {\n use(plugin) {\n _p.push(plugin)\n return this\n },\n _p,\n _s,\n _scopes,\n state\n }\n\n setActivePinia(pinia)\n\n return pinia\n}\n","import { type Draft, enablePatches, type Patch, produce, setAutoFreeze } from 'immer'\nimport { useCallback, useRef, useSyncExternalStore } from 'react'\nimport { getActivePinia } from './rootStore'\nimport type {\n DefineStoreOptions,\n PiniaPluginContext,\n StateTree,\n Store,\n StoreDefinitionWithNames,\n StoreScope,\n SubscriptionCallback,\n TransformActions\n} from './types'\n\nenablePatches()\nsetAutoFreeze(false)\n\nlet activeListenerId: string | null = null\nlet activeGetterKey: string | null = null\n\nfunction isAffected(patches: Patch[], trackedPaths: Set<string>): boolean {\n if (trackedPaths.size === 0) return false\n const tracked = Array.from(trackedPaths).map((p) => p.split('.'))\n\n for (const patch of patches) {\n const patchPath = patch.path.map(String)\n for (const trackedPath of tracked) {\n const len = Math.min(patchPath.length, trackedPath.length)\n let isPrefixMatch = true\n for (let i = 0; i < len; i++) {\n if (patchPath[i] !== trackedPath[i]) {\n isPrefixMatch = false\n break\n }\n }\n if (isPrefixMatch) return true\n }\n }\n return false\n}\n\nexport function defineStore<\n Id extends string,\n S extends StateTree,\n G extends Record<string, any> = {},\n A extends Record<string, any> = {}\n>(id: Id, options: DefineStoreOptions<S, G, A>): StoreDefinitionWithNames<Id, S, G, A> {\n const getters = options.getters || ({} as G)\n\n function resolveGetterDependencies(\n getterName: string,\n getterDepsMap: Map<string, Set<string>>,\n visited = new Set<string>()\n ): Set<string> {\n if (visited.has(getterName)) {\n console.warn(`[pinia-react] Circular dependency in getters detected involving: ${getterName}`)\n return new Set()\n }\n visited.add(getterName)\n\n const finalDeps = new Set<string>()\n const directDeps = getterDepsMap.get(getterName)\n\n if (!directDeps) return finalDeps\n\n for (const dep of directDeps) {\n if (dep in getters) {\n const nestedDeps = resolveGetterDependencies(dep, getterDepsMap, visited)\n nestedDeps.forEach((d) => finalDeps.add(d))\n } else {\n finalDeps.add(dep)\n }\n }\n return finalDeps\n }\n\n function createStoreInstance(): Store<Id, S, G, A> {\n const pinia = getActivePinia()\n const initialState = options.state()\n\n let storePublicApi: Store<Id, S, G, A>\n let devTools: any\n let isTimeTraveling = false\n\n const localScope: StoreScope = {\n currentState: initialState,\n listeners: new Set(),\n getterCache: new Map(),\n getterDependencies: new Map(),\n subscribers: new Map(),\n createStoreProxy: (_onAccess?: (path: string[]) => void) => storePublicApi as any\n }\n pinia._scopes.set(id, localScope)\n\n const isGetterComputing = new Set<string>()\n\n const emit = (nextState: S, oldState: S, patches: Patch[]) => {\n localScope.listeners.forEach((fn) => fn(nextState, oldState, patches))\n\n localScope.subscribers.forEach((getterKeys, storeId) => {\n const subscriberScope = pinia._scopes.get(storeId)\n if (!subscriberScope) return\n let shouldNotify = false\n getterKeys.forEach((key) => {\n if (subscriberScope.getterCache.has(key)) {\n subscriberScope.getterCache.delete(key)\n shouldNotify = true\n }\n })\n if (shouldNotify) {\n const oldSubState = subscriberScope.currentState\n const newSubState = { ...oldSubState }\n subscriberScope.currentState = newSubState\n pinia.state[storeId] = newSubState\n\n subscriberScope.listeners.forEach((fn) => fn(newSubState, oldSubState, []))\n }\n })\n }\n\n const internalPatch = (updater: (draft: Draft<S>) => void | S, actionName: string, isReset = false) => {\n if (isTimeTraveling) return\n\n const oldState = localScope.currentState as S\n let patches: Patch[] = []\n\n const nextState = produce(oldState, updater as any, (p) => {\n patches = p\n }) as S\n\n if (patches.length > 0 || isReset) {\n localScope.currentState = nextState\n pinia.state[id] = nextState\n if (devTools) {\n devTools.send({ type: actionName, payload: patches }, nextState)\n }\n emit(nextState, oldState, patches)\n }\n }\n\n const $patch = (updater: (draft: Draft<S>) => void) => {\n internalPatch((draft) => {\n updater(draft)\n }, '@patch')\n }\n\n const $reset = () => internalPatch(() => options.state(), '@reset', true)\n\n const $subscribe = (callback: SubscriptionCallback<S>) => {\n const listener = (state: S, prev: S) => callback(state, prev)\n localScope.listeners.add(listener as any)\n return () => localScope.listeners.delete(listener as any)\n }\n\n const getterInvalidationListener = (_state: S, _prevState: S, patches: Patch[]) => {\n localScope.getterDependencies.forEach((_deps, getterName) => {\n const resolvedDeps = resolveGetterDependencies(getterName, localScope.getterDependencies)\n if (isAffected(patches, resolvedDeps)) {\n localScope.getterCache.delete(getterName)\n }\n })\n }\n localScope.listeners.add(getterInvalidationListener as any)\n\n const originalActions = options.actions || ({} as A)\n const wrappedActions = {} as TransformActions<A>\n const proxyTarget = {}\n\n function createStoreProxy(onAccess?: (path: string[]) => void): Store<Id, S, G, A> {\n const readonlyWarning = () => {\n console.warn(`[${id}] Store is read-only. Use actions for mutations.`)\n return false\n }\n\n const createStateProxy = (stateTarget: any, path: string[], onDeepAccess?: (path: string[]) => void): any => {\n return new Proxy(stateTarget, {\n get(obj, key) {\n if (typeof key === 'symbol') return Reflect.get(obj, key)\n const currentPath = [...path, String(key)]\n const value = Reflect.get(obj, key)\n if (typeof value === 'object' && value !== null) {\n return createStateProxy(value, currentPath, onDeepAccess)\n }\n onDeepAccess?.(currentPath)\n return value\n },\n set: readonlyWarning\n })\n }\n\n return new Proxy(proxyTarget as any, {\n get(_target, key, receiver) {\n const strKey = String(key)\n\n if (strKey === '$state') return localScope.currentState\n if (strKey === '$patch') return $patch\n if (strKey === '$reset') return $reset\n if (strKey === '$subscribe') return $subscribe\n\n const state = localScope.currentState\n if (strKey in state) {\n const value = state[strKey]\n if (typeof value === 'object' && value !== null) {\n return createStateProxy(value, [strKey], onAccess)\n }\n onAccess?.([strKey])\n return value\n }\n\n if (strKey in getters) {\n onAccess?.([strKey])\n if (localScope.getterCache.has(strKey)) return localScope.getterCache.get(strKey)\n if (isGetterComputing.has(strKey)) {\n console.warn(`[pinia-react] Circular dependency detected in getter \"${strKey}\"`)\n return undefined\n }\n\n isGetterComputing.add(strKey)\n const dependencies = new Set<string>()\n const prevListenerId = activeListenerId\n const prevGetterKey = activeGetterKey\n activeListenerId = id\n activeGetterKey = strKey\n\n try {\n const onGetterAccess = (path: string[]) => {\n dependencies.add(path[0])\n }\n const trackingProxyForThis = createStoreProxy(onGetterAccess)\n const trackingStateProxy = createStateProxy(state, [], onGetterAccess)\n const result = (getters as any)[strKey].call(trackingProxyForThis, trackingStateProxy)\n\n localScope.getterDependencies.set(strKey, dependencies)\n localScope.getterCache.set(strKey, result)\n return result\n } finally {\n activeListenerId = prevListenerId\n activeGetterKey = prevGetterKey\n isGetterComputing.delete(strKey)\n }\n }\n\n if (strKey in wrappedActions) {\n return (wrappedActions as any)[strKey]\n }\n\n return Reflect.get(_target, key, receiver)\n },\n set(_target, key, value, receiver) {\n const strKey = String(key)\n if (strKey === '$state') {\n console.warn(`[${id}] Do not replace \"$state\" directly. Use \"$patch()\" to replace the whole state.`)\n return false\n }\n if (strKey in localScope.currentState || strKey in getters || strKey in wrappedActions) {\n return readonlyWarning()\n }\n return Reflect.set(_target, key, value, receiver)\n }\n }) as Store<Id, S, G, A>\n }\n\n storePublicApi = createStoreProxy()\n\n Object.keys(originalActions).forEach((actionName) => {\n const originalAction = (originalActions as any)[actionName]\n ;(wrappedActions as any)[actionName] = (...args: any[]) => {\n let returnValue: any\n const recipe = (draft: Draft<S>) => {\n const actionContextProxy = new Proxy({} as any, {\n get(_, key) {\n const strKey = String(key)\n if (Reflect.has(draft, strKey)) return (draft as any)[strKey]\n if (strKey in getters) {\n return (getters as any)[strKey].call(actionContextProxy, draft)\n }\n return Reflect.get(storePublicApi, key, storePublicApi)\n },\n set(_, key, value) {\n ;(draft as any)[String(key)] = value\n return true\n }\n })\n returnValue = originalAction.apply(actionContextProxy, args)\n }\n internalPatch(recipe, actionName)\n return returnValue\n }\n })\n\n localScope.createStoreProxy = createStoreProxy as any\n\n pinia._p.forEach((plugin) => {\n const pluginResult = plugin({ id, store: storePublicApi, options } as PiniaPluginContext)\n if (pluginResult) {\n Object.defineProperties(proxyTarget, Object.getOwnPropertyDescriptors(pluginResult))\n }\n })\n\n pinia._s.set(id, storePublicApi as any)\n\n if (typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__) {\n devTools = (window as any).__REDUX_DEVTOOLS_EXTENSION__.connect({ name: id })\n devTools.init(localScope.currentState)\n\n devTools.subscribe((message: any) => {\n if (message.type === 'DISPATCH') {\n const payloadType = message.payload?.type\n\n switch (payloadType) {\n case 'JUMP_TO_STATE':\n case 'JUMP_TO_ACTION':\n case 'IMPORT_STATE': {\n const newState = typeof message.state === 'string' ? JSON.parse(message.state) : message.state\n if (!newState || typeof newState !== 'object') return\n\n isTimeTraveling = true\n const oldState = localScope.currentState as S\n localScope.currentState = newState\n pinia.state[id] = newState\n localScope.getterCache.clear()\n emit(newState, oldState, [])\n isTimeTraveling = false\n break\n }\n\n case 'COMMIT': {\n devTools.init(localScope.currentState)\n break\n }\n\n case 'ROLLBACK': {\n const newState = typeof message.state === 'string' ? JSON.parse(message.state) : message.state\n if (!newState || typeof newState !== 'object') return\n\n isTimeTraveling = true\n const oldState = localScope.currentState as S\n localScope.currentState = newState\n pinia.state[id] = newState\n localScope.getterCache.clear()\n emit(newState, oldState, [])\n isTimeTraveling = false\n break\n }\n\n case 'RESET': {\n const originalState = options.state()\n devTools.init(originalState)\n internalPatch(() => originalState, '@reset', true)\n break\n }\n\n default:\n break\n }\n }\n })\n }\n\n return storePublicApi\n }\n\n function getStore(): Store<Id, S, G, A> {\n const pinia = getActivePinia()\n\n if (!pinia._s.has(id)) {\n createStoreInstance()\n }\n\n if (activeListenerId && activeGetterKey && activeListenerId !== id) {\n const accessedStoreScope = pinia._scopes.get(id)\n if (accessedStoreScope) {\n let subscribers = accessedStoreScope.subscribers.get(activeListenerId)\n if (!subscribers) {\n subscribers = new Set()\n accessedStoreScope.subscribers.set(activeListenerId, subscribers)\n }\n subscribers.add(activeGetterKey)\n }\n }\n\n return pinia._s.get(id) as Store<Id, S, G, A>\n }\n\n function useStore(): Store<Id, S, G, A> {\n const pinia = getActivePinia()\n if (!pinia._s.has(id)) {\n createStoreInstance()\n }\n const currentScope = pinia._scopes.get(id)!\n\n const trackedPaths = useRef(new Set<string>())\n trackedPaths.current.clear()\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const listener = (_state: S, _prevState: S, patches: Patch[]) => {\n let shouldUpdate = false\n for (const path of trackedPaths.current) {\n const topKey = path.split('.')[0]\n if (topKey in getters) {\n if (!currentScope.getterCache.has(topKey)) {\n shouldUpdate = true\n break\n }\n } else {\n if (patches.length > 0 && isAffected(patches, new Set([path]))) {\n shouldUpdate = true\n break\n }\n }\n }\n if (shouldUpdate) {\n onStoreChange()\n }\n }\n currentScope.listeners.add(listener as any)\n return () => currentScope.listeners.delete(listener as any)\n },\n [currentScope]\n )\n\n const getSnapshot = useCallback(() => currentScope.currentState, [currentScope])\n\n useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\n const trackingProxy = currentScope.createStoreProxy((path) => {\n trackedPaths.current.add(path.join('.'))\n })\n\n return trackingProxy as Store<Id, S, G, A>\n }\n\n const storeName = (id.charAt(0).toUpperCase() + id.slice(1)) as Capitalize<Id>\n\n const definition: StoreDefinitionWithNames<Id, S, G, A> = Object.assign(\n { useStore, getStore },\n {\n [`use${storeName}Store`]: useStore,\n [`get${storeName}Store`]: getStore\n }\n ) as unknown as StoreDefinitionWithNames<Id, S, G, A>\n\n return definition\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/rootStore.ts","../src/createPinia.ts","../src/store.ts"],"sourcesContent":["import type { Pinia } from './types'\n\nexport let activePinia: Pinia | undefined\n\nexport function setActivePinia(pinia: Pinia) {\n activePinia = pinia\n}\n\nexport function getActivePinia(): Pinia {\n if (!activePinia) {\n throw new Error(\n '[pinia-react] getActivePinia was called with no active Pinia. Did you forget to install pinia?\\n' +\n 'const pinia = createPinia() or createPinia() first.\\n'\n )\n }\n return activePinia\n}\n","import { setActivePinia } from './rootStore'\nimport type { MutationListener, Pinia, StateTree, StoreGeneric } from './types'\n\nexport function createPinia(): Pinia {\n const state: Record<string, StateTree> = {}\n const _p: Pinia['_p'] = []\n const _s = new Map<string, StoreGeneric>()\n const _scopes = new Map()\n const _m = new Set<MutationListener>()\n\n const pinia: Pinia = {\n use(plugin) {\n _p.push(plugin)\n return this\n },\n onMutation(listener) {\n _m.add(listener)\n return () => _m.delete(listener)\n },\n _p,\n _s,\n _scopes,\n _m,\n state\n }\n\n setActivePinia(pinia)\n\n return pinia\n}\n","import { type Draft, enablePatches, type Patch, produce, setAutoFreeze } from 'immer'\nimport { useCallback, useRef, useSyncExternalStore } from 'react'\nimport { getActivePinia } from './rootStore'\nimport type {\n DefineStoreOptions,\n MutationEvent,\n MutationMeta,\n PiniaPluginContext,\n RestoreStateOptions,\n StateTree,\n Store,\n StoreDefinitionWithNames,\n StoreScope,\n SubscriptionCallback,\n TransformActions\n} from './types'\n\nenablePatches()\nsetAutoFreeze(false)\n\nlet activeListenerId: string | null = null\nlet activeGetterKey: string | null = null\n\nfunction isAffected(patches: Patch[], trackedPaths: Set<string>): boolean {\n if (trackedPaths.size === 0) return false\n const tracked = Array.from(trackedPaths).map((p) => p.split('.'))\n\n for (const patch of patches) {\n const patchPath = patch.path.map(String)\n for (const trackedPath of tracked) {\n const len = Math.min(patchPath.length, trackedPath.length)\n let isPrefixMatch = true\n for (let i = 0; i < len; i++) {\n if (patchPath[i] !== trackedPath[i]) {\n isPrefixMatch = false\n break\n }\n }\n if (isPrefixMatch) return true\n }\n }\n return false\n}\n\nexport function defineStore<\n Id extends string,\n S extends StateTree,\n G extends Record<string, any> = {},\n A extends Record<string, any> = {}\n>(id: Id, options: DefineStoreOptions<S, G, A>): StoreDefinitionWithNames<Id, S, G, A> {\n const getters = options.getters || ({} as G)\n\n function resolveGetterDependencies(\n getterName: string,\n getterDepsMap: Map<string, Set<string>>,\n visited = new Set<string>()\n ): Set<string> {\n if (visited.has(getterName)) {\n console.warn(`[pinia-react] Circular dependency in getters detected involving: ${getterName}`)\n return new Set()\n }\n visited.add(getterName)\n\n const finalDeps = new Set<string>()\n const directDeps = getterDepsMap.get(getterName)\n\n if (!directDeps) return finalDeps\n\n for (const dep of directDeps) {\n if (dep in getters) {\n const nestedDeps = resolveGetterDependencies(dep, getterDepsMap, visited)\n nestedDeps.forEach((d) => finalDeps.add(d))\n } else {\n finalDeps.add(dep)\n }\n }\n return finalDeps\n }\n\n function createStoreInstance(): Store<Id, S, G, A> {\n const pinia = getActivePinia()\n const initialState = options.state()\n\n let storePublicApi: Store<Id, S, G, A>\n\n const localScope: StoreScope = {\n currentState: initialState,\n listeners: new Set(),\n getterResultCache: new Map(),\n getterDependencies: new Map(),\n subscribers: new Map(),\n createStoreProxy: (_onAccess?: (path: string[]) => void) => storePublicApi as any\n }\n pinia._scopes.set(id, localScope)\n\n const isGetterComputing = new Set<string>()\n\n const emit = (nextState: S, oldState: S, patches: Patch[]) => {\n localScope.listeners.forEach((fn) => fn(nextState, oldState, patches))\n\n localScope.subscribers.forEach((getterKeys, storeId) => {\n const subscriberScope = pinia._scopes.get(storeId)\n if (!subscriberScope) return\n let shouldNotify = false\n getterKeys.forEach((key) => {\n if (subscriberScope.getterResultCache.has(key)) {\n subscriberScope.getterResultCache.delete(key)\n shouldNotify = true\n }\n })\n if (shouldNotify) {\n const oldSubState = subscriberScope.currentState\n const newSubState = { ...oldSubState }\n subscriberScope.currentState = newSubState\n pinia.state[storeId] = newSubState\n\n subscriberScope.listeners.forEach((fn) => fn(newSubState, oldSubState, []))\n }\n })\n }\n\n const internalPatch = (updater: (draft: Draft<S>) => void | S, meta: MutationMeta) => {\n const oldState = localScope.currentState as S\n let patches: Patch[] = []\n\n const nextState = produce(oldState, updater as any, (p) => {\n patches = p\n }) as S\n\n if (patches.length > 0 || meta.type === 'reset') {\n localScope.currentState = nextState\n pinia.state[id] = nextState\n emit(nextState, oldState, patches)\n const event: MutationEvent<S> = {\n storeId: id,\n store: storePublicApi as any,\n state: nextState,\n prevState: oldState,\n patches,\n meta\n }\n pinia._m.forEach((listener) => listener(event))\n }\n }\n\n const $patch = (updater: (draft: Draft<S>) => void) => {\n internalPatch(\n (draft) => {\n updater(draft)\n },\n { type: 'patch' }\n )\n }\n\n const $reset = () => internalPatch(() => options.state(), { type: 'reset' })\n\n const restoreState = (state: S, options: RestoreStateOptions = {}) => {\n internalPatch(() => state, {\n type: options.type ?? 'restore',\n origin: options.origin\n })\n }\n\n const $subscribe = (callback: SubscriptionCallback<S>) => {\n const listener = (state: S, prev: S) => callback(state, prev)\n localScope.listeners.add(listener as any)\n return () => localScope.listeners.delete(listener as any)\n }\n\n const getterInvalidationListener = (_state: S, _prevState: S, patches: Patch[]) => {\n localScope.getterDependencies.forEach((_deps, getterName) => {\n const resolvedDeps = resolveGetterDependencies(getterName, localScope.getterDependencies)\n if (isAffected(patches, resolvedDeps)) {\n localScope.getterResultCache.delete(getterName)\n }\n })\n }\n localScope.listeners.add(getterInvalidationListener as any)\n\n const originalActions = options.actions || ({} as A)\n const wrappedActions = {} as TransformActions<A>\n const proxyTarget = {}\n\n function createStoreProxy(onAccess?: (path: string[]) => void): Store<Id, S, G, A> {\n const readonlyWarning = () => {\n console.warn(`[${id}] Store is read-only. Use actions for mutations.`)\n return false\n }\n\n const createStateProxy = (stateTarget: any, path: string[], onDeepAccess?: (path: string[]) => void): any => {\n return new Proxy(stateTarget, {\n get(obj, key) {\n if (typeof key === 'symbol') return Reflect.get(obj, key)\n const currentPath = [...path, String(key)]\n const value = Reflect.get(obj, key)\n if (typeof value === 'object' && value !== null) {\n return createStateProxy(value, currentPath, onDeepAccess)\n }\n onDeepAccess?.(currentPath)\n return value\n },\n set: readonlyWarning\n })\n }\n\n return new Proxy(proxyTarget as any, {\n get(_target, key, receiver) {\n const strKey = String(key)\n\n if (strKey === '$state') return localScope.currentState\n if (strKey === '$patch') return $patch\n if (strKey === '$reset') return $reset\n if (strKey === '$subscribe') return $subscribe\n\n const state = localScope.currentState\n if (strKey in state) {\n const value = state[strKey]\n if (typeof value === 'object' && value !== null) {\n return createStateProxy(value, [strKey], onAccess)\n }\n onAccess?.([strKey])\n return value\n }\n\n if (strKey in getters) {\n onAccess?.([strKey])\n if (localScope.getterResultCache.has(strKey)) return localScope.getterResultCache.get(strKey)\n if (isGetterComputing.has(strKey)) {\n console.warn(`[pinia-react] Circular dependency detected in getter \"${strKey}\"`)\n return undefined\n }\n\n isGetterComputing.add(strKey)\n const dependencies = new Set<string>()\n const prevListenerId = activeListenerId\n const prevGetterKey = activeGetterKey\n activeListenerId = id\n activeGetterKey = strKey\n\n try {\n const onGetterAccess = (path: string[]) => {\n dependencies.add(path[0])\n }\n const trackingProxyForThis = createStoreProxy(onGetterAccess)\n const trackingStateProxy = createStateProxy(state, [], onGetterAccess)\n const result = (getters as any)[strKey].call(trackingProxyForThis, trackingStateProxy)\n\n localScope.getterDependencies.set(strKey, dependencies)\n localScope.getterResultCache.set(strKey, result)\n return result\n } finally {\n activeListenerId = prevListenerId\n activeGetterKey = prevGetterKey\n isGetterComputing.delete(strKey)\n }\n }\n\n if (strKey in wrappedActions) {\n return (wrappedActions as any)[strKey]\n }\n\n return Reflect.get(_target, key, receiver)\n },\n set(_target, key, value, receiver) {\n const strKey = String(key)\n if (strKey === '$state') {\n console.warn(`[${id}] Do not replace \"$state\" directly. Use \"$patch()\" to replace the whole state.`)\n return false\n }\n if (strKey in localScope.currentState || strKey in getters || strKey in wrappedActions) {\n return readonlyWarning()\n }\n return Reflect.set(_target, key, value, receiver)\n }\n }) as Store<Id, S, G, A>\n }\n\n storePublicApi = createStoreProxy()\n\n Object.keys(originalActions).forEach((actionName) => {\n const originalAction = (originalActions as any)[actionName]\n ;(wrappedActions as any)[actionName] = (...args: any[]) => {\n let returnValue: any\n const recipe = (draft: Draft<S>) => {\n const actionContextProxy = new Proxy({} as any, {\n get(_, key) {\n const strKey = String(key)\n if (Reflect.has(draft, strKey)) return (draft as any)[strKey]\n if (strKey in getters) {\n return (getters as any)[strKey].call(actionContextProxy, draft)\n }\n return Reflect.get(storePublicApi, key, storePublicApi)\n },\n set(_, key, value) {\n ;(draft as any)[String(key)] = value\n return true\n }\n })\n returnValue = originalAction.apply(actionContextProxy, args)\n }\n internalPatch(recipe, { type: 'action', action: actionName, args })\n return returnValue\n }\n })\n\n localScope.createStoreProxy = createStoreProxy as any\n\n pinia._p.forEach((plugin) => {\n const pluginResult = plugin({\n id,\n store: storePublicApi,\n options,\n pinia,\n restoreState\n } as PiniaPluginContext)\n if (pluginResult) {\n Object.defineProperties(proxyTarget, Object.getOwnPropertyDescriptors(pluginResult))\n }\n })\n\n pinia._s.set(id, storePublicApi as any)\n\n return storePublicApi\n }\n\n function getStore(): Store<Id, S, G, A> {\n const pinia = getActivePinia()\n\n if (!pinia._s.has(id)) {\n createStoreInstance()\n }\n\n if (activeListenerId && activeGetterKey && activeListenerId !== id) {\n const accessedStoreScope = pinia._scopes.get(id)\n if (accessedStoreScope) {\n let subscribers = accessedStoreScope.subscribers.get(activeListenerId)\n if (!subscribers) {\n subscribers = new Set()\n accessedStoreScope.subscribers.set(activeListenerId, subscribers)\n }\n subscribers.add(activeGetterKey)\n }\n }\n\n return pinia._s.get(id) as Store<Id, S, G, A>\n }\n\n function useStore(): Store<Id, S, G, A> {\n const pinia = getActivePinia()\n if (!pinia._s.has(id)) {\n createStoreInstance()\n }\n const currentScope = pinia._scopes.get(id)!\n\n const trackedPaths = useRef(new Set<string>())\n trackedPaths.current.clear()\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const listener = (_state: S, _prevState: S, patches: Patch[]) => {\n let shouldUpdate = false\n for (const path of trackedPaths.current) {\n const topKey = path.split('.')[0]\n if (topKey in getters) {\n if (!currentScope.getterResultCache.has(topKey)) {\n shouldUpdate = true\n break\n }\n } else {\n if (patches.length > 0 && isAffected(patches, new Set([path]))) {\n shouldUpdate = true\n break\n }\n }\n }\n if (shouldUpdate) {\n onStoreChange()\n }\n }\n currentScope.listeners.add(listener as any)\n return () => currentScope.listeners.delete(listener as any)\n },\n [currentScope]\n )\n\n const getSnapshot = useCallback(() => currentScope.currentState, [currentScope])\n\n useSyncExternalStore(subscribe, getSnapshot, getSnapshot)\n\n const trackingProxy = currentScope.createStoreProxy((path) => {\n trackedPaths.current.add(path.join('.'))\n })\n\n return trackingProxy as Store<Id, S, G, A>\n }\n\n const storeName = (id.charAt(0).toUpperCase() + id.slice(1)) as Capitalize<Id>\n\n const definition: StoreDefinitionWithNames<Id, S, G, A> = Object.assign(\n { useStore, getStore },\n {\n [`use${storeName}Store`]: useStore,\n [`get${storeName}Store`]: getStore\n }\n ) as unknown as StoreDefinitionWithNames<Id, S, G, A>\n\n return definition\n}\n"],"mappings":"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","names":["options"]}
|