pinia-plugin-subscription 0.2.0-beta.0 → 0.2.1

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.
@@ -1,9 +1,9 @@
1
- var g = Object.defineProperty;
2
- var E = (n, s, t) => s in n ? g(n, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[s] = t;
3
- var a = (n, s, t) => E(n, typeof s != "symbol" ? s + "" : s, t);
4
- import { h as O, g as f, D as m, i as y, P as C } from "./chunks/index-D-rnwSJk.js";
5
- import { C as T, p as W, a as L, S as I, d as q, b as G, c as U, e as z, f as B, s as J } from "./chunks/index-D-rnwSJk.js";
6
- import { toRaw as _ } from "vue";
1
+ var E = Object.defineProperty;
2
+ var O = (n, s, t) => s in n ? E(n, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[s] = t;
3
+ var c = (n, s, t) => O(n, typeof s != "symbol" ? s + "" : s, t);
4
+ import { h as C, g as S, D as m, i as _, P as $ } from "./chunks/index-DKdl-fiq.js";
5
+ import { C as T, p as L, a as I, S as q, d as z, b as G, c as U, e as B, f as J, s as Q } from "./chunks/index-DKdl-fiq.js";
6
+ import { toRaw as A } from "vue";
7
7
  function u(n) {
8
8
  if (typeof structuredClone == "function")
9
9
  try {
@@ -29,88 +29,63 @@ function u(n) {
29
29
  s[t] = u(e);
30
30
  return s;
31
31
  }
32
- function $(n, s = "all") {
32
+ function w(n, s = "all") {
33
33
  if (Array.isArray(s)) {
34
34
  const t = {};
35
35
  for (const e of s)
36
- e in n && (t[e] = u(_(n[e])));
36
+ e in n && (t[e] = u(A(n[e])));
37
37
  return t;
38
38
  }
39
39
  if (s !== "all")
40
40
  throw new Error(`Invalid keys parameter: ${s}`);
41
- return u(_(n));
41
+ return u(A(n));
42
42
  }
43
- class v {
43
+ class R {
44
44
  constructor() {
45
- a(this, "_stateSnapshots", /* @__PURE__ */ new Map());
46
- a(this, "_storeHasRollbackSnapshots", /* @__PURE__ */ new Set());
47
- a(this, "_storeRollbackSnapshotsParams", /* @__PURE__ */ new Map());
48
- }
49
- /**
50
- * Adds a rollback action to the given store.
51
- * This method extends the store with a $rollbackAfterFailure function that handles rollback logic for actions.
52
- * @param {Store} store The store to which the rollback action will be added.
53
- * @returns void
54
- */
45
+ c(this, "_stateSnapshots", /* @__PURE__ */ new Map());
46
+ c(this, "_storeHasRollbackSnapshots", /* @__PURE__ */ new Set());
47
+ c(this, "_storeRollbackSnapshotsParams", /* @__PURE__ */ new Map());
48
+ }
55
49
  addRollbackAction(s) {
56
- typeof s.$rollbackAfterFailure != "function" && (s.$rollbackAfterFailure = async ({ action: t, stateKeys: e }, ...i) => {
50
+ typeof s.$rollbackAfterFailure != "function" && (s.$rollbackAfterFailure = async ({ action: t, stateKeys: e }, i = []) => {
57
51
  const r = s[t];
58
- if (typeof r != "function" || O(t))
52
+ if (typeof r != "function" || C(t))
59
53
  return;
60
54
  const o = !e || e.length === 0 ? "all" : e, h = this.saveStateSnapshot(s, t, o);
61
55
  try {
62
56
  await r.apply(s, i);
63
- } catch (c) {
64
- throw this.patchStore(h, s), c;
57
+ } catch (a) {
58
+ throw this.patchStore(h, s), a;
65
59
  } finally {
66
60
  this.removeStateSnapshot(h);
67
61
  }
68
62
  });
69
63
  }
70
- /**
71
- * Creates a rollback snapshot for the specified action and store.
72
- * This snapshot can be used to restore the store's state in case of an error during the action execution.
73
- * @param {string} actionName The name of the action for which the rollback snapshot is created.
74
- * @param {Store} store The Pinia store instance.
75
- * @returns An object containing `after` and `onError` callbacks for handling the rollback, or `undefined` if no snapshot is created.
76
- */
77
64
  createOnActionCallbacks(s, t) {
78
65
  const e = this._storeRollbackSnapshotsParams.get(
79
- f(s, t)
66
+ S(s, t)
80
67
  );
81
- if (!e || e.length === 0)
68
+ if (!e)
82
69
  return;
83
- const i = this.saveStateSnapshot(t, s, e);
70
+ const i = e.length === 0 ? "all" : e, r = this.saveStateSnapshot(t, s, i);
84
71
  return {
85
72
  after: () => {
86
- this.removeStateSnapshot(i);
73
+ this.removeStateSnapshot(r);
87
74
  },
88
75
  onError: () => {
89
- this.patchStore(i, t), this.removeStateSnapshot(i);
76
+ this.patchStore(r, t), this.removeStateSnapshot(r);
90
77
  }
91
78
  };
92
79
  }
93
- /**
94
- * Initializes the rollback state snapshots handler from the given Pinia plugin context.
95
- * This method extracts the rollback snapshot parameters from the store options and stores them internally.
96
- * @param {PiniaPluginContext} param0 The Pinia plugin context containing the store and its options.
97
- * @returns void
98
- */
99
80
  initFromPluginContext({ options: s, store: t }) {
100
81
  const e = s?.storeOptions?.rollbackAfterFailure;
101
82
  e && !this._storeHasRollbackSnapshots.has(t.$id) && (Object.keys(e).forEach((i) => {
102
83
  this._storeRollbackSnapshotsParams.set(
103
- f(i, t),
84
+ S(i, t),
104
85
  e[i]
105
86
  );
106
87
  }), this._storeHasRollbackSnapshots.add(t.$id)), this.addRollbackAction(t);
107
88
  }
108
- /**
109
- * Clears all rollback tracking data for the given store.
110
- * Must be called when the store is disposed to avoid memory leaks with dynamically created stores.
111
- * @param {Store} store The disposed Pinia store instance.
112
- * @returns void
113
- */
114
89
  clearStoreTracking(s) {
115
90
  const t = `-${s.$id}`;
116
91
  for (const e of Array.from(this._storeRollbackSnapshotsParams.keys()))
@@ -128,42 +103,25 @@ class v {
128
103
  console.error(`Failed to patch store with snapshot ${String(s)}`, i);
129
104
  }
130
105
  }
131
- /**
132
- * Removes a state snapshot identified by the given snapshot key from the internal state snapshot tracking.
133
- * @param snapshotKey The key of the state snapshot to be removed.
134
- * @returns void
135
- */
136
106
  removeStateSnapshot(s) {
137
107
  s && this._stateSnapshots.delete(s);
138
108
  }
139
- /**
140
- * Saves the current state snapshot for a given store and action.
141
- * @param store The Pinia store instance.
142
- * @param actionName The name of the action being executed.
143
- * @param stateKeys The state keys to include in the snapshot, or 'all' for the full state.
144
- * @returns A unique symbol key representing the saved snapshot.
145
- */
146
109
  saveStateSnapshot(s, t, e) {
147
- const i = $(
110
+ const i = w(
148
111
  s.$state,
149
112
  e
150
113
  ), r = /* @__PURE__ */ Symbol(`${s.$id}:${t}`);
151
114
  return this._stateSnapshots.set(r, i), r;
152
115
  }
153
- /**
154
- * Checks if the given store has rollback snapshots.
155
- * @param store The Pinia store instance.
156
- * @returns True if the store has rollback snapshots, false otherwise.
157
- */
158
116
  storeHasRollbackSnapshots(s) {
159
117
  return this._storeHasRollbackSnapshots.has(s.$id);
160
118
  }
161
119
  }
162
- const A = "PluginSubscription", P = {
120
+ const k = "PluginSubscription", v = {
163
121
  environment: "both",
164
122
  hydration: "immediate"
165
123
  };
166
- function R(n) {
124
+ function P(n) {
167
125
  if (typeof window < "u" && typeof window.requestAnimationFrame == "function") {
168
126
  window.requestAnimationFrame(() => globalThis.setTimeout(n, 0));
169
127
  return;
@@ -173,49 +131,52 @@ function R(n) {
173
131
  function D(n) {
174
132
  return n !== void 0 && !Array.isArray(n);
175
133
  }
176
- class k extends m {
134
+ class g extends m {
177
135
  constructor(t, e, i) {
178
136
  const r = Array.isArray(e) ? e : void 0, o = D(e) ? e : i;
179
- super(Array.isArray(r) && !!r?.includes(A), C);
180
- a(this, "_className", A);
181
- a(this, "_hydrationScheduler");
182
- a(this, "_onActionSubscriptions", []);
183
- a(this, "_onActionAfterSubscriptions", {});
184
- a(this, "_onActionOnErrorSubscriptions", {});
185
- a(this, "_options");
186
- a(this, "_pluginDebug");
187
- a(this, "_resetStoreCallback", []);
188
- a(this, "_storeRollbackSnapshotsHandler", new v());
189
- a(this, "_subscribers", []);
190
- a(this, "_subscribersDelivered", /* @__PURE__ */ new Set());
191
- a(this, "_subscribersScheduled", /* @__PURE__ */ new Set());
192
- a(this, "_subscriptions", []);
193
- a(this, "_subscriptionsDelivered", /* @__PURE__ */ new Set());
194
- a(this, "_subscriptionsScheduled", /* @__PURE__ */ new Set());
195
- this._hydrationScheduler = o?.hydrationScheduler ?? R, this._options = o, this._pluginDebug = Array.isArray(r) ? r : void 0, this._subscribers = t;
137
+ super(Array.isArray(r) && !!r?.includes(k), $);
138
+ c(this, "_className", k);
139
+ c(this, "_hydrationScheduler");
140
+ c(this, "_onActionSubscriptions", /* @__PURE__ */ new Map());
141
+ c(this, "_onActionStores", /* @__PURE__ */ new Set());
142
+ c(this, "_onActionAfterSubscriptions", {});
143
+ c(this, "_onActionOnErrorSubscriptions", {});
144
+ c(this, "_options");
145
+ c(this, "_pluginDebug");
146
+ c(this, "_resetStoreCallback", /* @__PURE__ */ new Map());
147
+ c(this, "_disposedStores", /* @__PURE__ */ new WeakSet());
148
+ c(this, "_storeRollbackSnapshotsHandler", new R());
149
+ c(this, "_subscribers", []);
150
+ c(this, "_subscribersDelivered", /* @__PURE__ */ new Set());
151
+ c(this, "_subscribersScheduled", /* @__PURE__ */ new Set());
152
+ c(this, "_subscriptions", []);
153
+ c(this, "_subscriptionsDelivered", /* @__PURE__ */ new Set());
154
+ c(this, "_subscriptionsScheduled", /* @__PURE__ */ new Set());
155
+ this._hydrationScheduler = o?.hydrationScheduler ?? P, this._options = o, this._pluginDebug = Array.isArray(r) ? r : void 0, this._subscribers = t;
196
156
  }
197
157
  set subscribers(t) {
198
158
  this._subscribers = t;
199
159
  }
200
160
  get subscriptions() {
201
- if (!y(this._subscriptions))
161
+ if (!_(this._subscriptions))
202
162
  return this._subscriptions;
203
163
  }
204
164
  addOnActionAfterCallback(t, e, i) {
205
- const r = f(t, e);
165
+ const r = S(t, e);
206
166
  this._onActionAfterSubscriptions[r] || (this._onActionAfterSubscriptions[r] = []), this._onActionAfterSubscriptions[r]?.push(i);
207
167
  }
208
168
  addOnActionOnErrorCallback(t, e, i) {
209
- const r = f(t, e);
169
+ const r = S(t, e);
210
170
  this._onActionOnErrorSubscriptions[r] || (this._onActionOnErrorSubscriptions[r] = []), this._onActionOnErrorSubscriptions[r]?.push(i);
211
171
  }
212
- addResetStoreCallback(t) {
213
- this._resetStoreCallback.push(t);
172
+ addResetStoreCallback(t, e) {
173
+ this._resetStoreCallback.has(t) || this._resetStoreCallback.set(t, /* @__PURE__ */ new Set()), this._resetStoreCallback.get(t).add(e);
214
174
  }
215
175
  clearOnActionCallbacksSubscriptions(t) {
216
176
  delete this._onActionAfterSubscriptions[t], delete this._onActionOnErrorSubscriptions[t];
217
177
  }
218
178
  clearStoreTracking(t) {
179
+ this._onActionSubscriptions.delete(t), this._onActionStores.delete(t), this._resetStoreCallback.delete(t);
219
180
  const e = `-${t.$id}`;
220
181
  for (const i of Array.from(this._subscribersDelivered))
221
182
  i.endsWith(e) && this._subscribersDelivered.delete(i);
@@ -230,34 +191,16 @@ class k extends m {
230
191
  for (const i of Object.keys(this._onActionOnErrorSubscriptions))
231
192
  i.endsWith(e) && delete this._onActionOnErrorSubscriptions[i];
232
193
  }
233
- /**
234
- * Creates a callback collector for the specified action and store.
235
- * @param actionName The name of the action to collect callbacks for.
236
- * @param store The store instance associated with the action.
237
- * @returns A function that collects callbacks for the specified action and store.
238
- */
239
194
  createOnActionAfterCallbackCollector(t, e) {
240
195
  return (i) => {
241
196
  this.addOnActionAfterCallback(t, e, i);
242
197
  };
243
198
  }
244
- /**
245
- * Creates a callback collector for the specified action and store that handles errors.
246
- * @param actionName The name of the action to collect error callbacks for.
247
- * @param store The store instance associated with the action.
248
- * @returns A function that collects error callbacks for the specified action and store.
249
- */
250
199
  createOnActionOnErrorCallbackCollector(t, e) {
251
200
  return (i) => {
252
201
  this.addOnActionOnErrorCallback(t, e, i);
253
202
  };
254
203
  }
255
- /**
256
- * Rolls back the state snapshot for a given action if an error occurs, and removes the snapshot after the action completes or fails.
257
- * @param actionName The name of the action being executed.
258
- * @param store The Pinia store instance.
259
- * @returns void
260
- */
261
204
  createRollbackSnapshot(t, e) {
262
205
  const {
263
206
  after: i,
@@ -276,7 +219,7 @@ class k extends m {
276
219
  }
277
220
  definePluginExecution(t) {
278
221
  return {
279
- ...P,
222
+ ...v,
280
223
  ...this._options?.execution ?? {},
281
224
  ...t.execution ?? {},
282
225
  ...this._options?.subscriberExecution?.[t.name] ?? {}
@@ -292,31 +235,29 @@ class k extends m {
292
235
  return `${t}-${e.$id}`;
293
236
  }
294
237
  executeResetStoreCallbacks(t) {
295
- this._resetStoreCallback.forEach((e) => e(t));
296
- }
297
- /**
298
- * Executes the store's onAction subscription for the given plugin subscriber.
299
- * @param store The Pinia store instance.
300
- * @param subscriber The plugin subscriber.
301
- * @returns void
302
- */
238
+ this._resetStoreCallback.get(t)?.forEach((e) => e(t));
239
+ }
303
240
  executeStoreOnActionSubscription(t) {
304
- const e = this._onActionSubscriptions, i = this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t);
305
- !e?.length && !i || t.$onAction(({ after: r, args: o, name: h, onError: c }) => {
306
- const l = f(h, t);
307
- this.debugLog(`storeOnActionSubscription ${l}`, { args: o, name: h, store: t }), i && this.createRollbackSnapshot(h, t), e?.length && e.forEach((b) => b({
241
+ if (this._onActionStores.has(t) || typeof t.$onAction != "function")
242
+ return;
243
+ const e = this._onActionSubscriptions.get(t), i = this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t);
244
+ !e?.size && !i || (this._onActionStores.add(t), t.$onAction(({ after: r, args: o, name: h, onError: a }) => {
245
+ const l = S(h, t);
246
+ this.debugLog(`storeOnActionSubscription ${l}`, { args: o, name: h, store: t }), this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(t) && this.createRollbackSnapshot(h, t);
247
+ const d = this._onActionSubscriptions.get(t);
248
+ d?.size && d.forEach((b) => b({
308
249
  after: this.createOnActionAfterCallbackCollector(h, t),
309
250
  args: o,
310
251
  name: h,
311
252
  onError: this.createOnActionOnErrorCallbackCollector(h, t)
312
253
  }));
313
- const d = this._onActionAfterSubscriptions[l], S = this._onActionOnErrorSubscriptions[l];
314
- this.clearOnActionCallbacksSubscriptions(l), d?.length && r((b) => {
315
- d.forEach((p) => p(b));
316
- }), S?.length && c((b) => {
317
- S.forEach((p) => p(b));
254
+ const p = this._onActionAfterSubscriptions[l], y = this._onActionOnErrorSubscriptions[l];
255
+ this.clearOnActionCallbacksSubscriptions(l), p?.length && r((b) => {
256
+ p.forEach((f) => f(b));
257
+ }), y?.length && a((b) => {
258
+ y.forEach((f) => f(b));
318
259
  });
319
- });
260
+ }));
320
261
  }
321
262
  executeSubscriber(t, e) {
322
263
  const i = this.defineSubscriberKey(e, t.store), r = this.definePluginDebug(e);
@@ -329,19 +270,19 @@ class k extends m {
329
270
  let o;
330
271
  try {
331
272
  o = e.hydrate?.(t, r);
332
- } catch (c) {
333
- this.logError(c, t.store, t.options);
273
+ } catch (a) {
274
+ this.logError(a, t.store, t.options);
334
275
  return;
335
276
  }
336
277
  const h = () => {
337
278
  try {
338
- const c = e.afterHydration?.(t, r);
339
- c && typeof c.then == "function" && c.catch((l) => this.logError(l, t.store, t.options));
340
- } catch (c) {
341
- this.logError(c, t.store, t.options);
279
+ const a = e.afterHydration?.(t, r);
280
+ a && typeof a.then == "function" && a.catch((l) => this.logError(l, t.store, t.options));
281
+ } catch (a) {
282
+ this.logError(a, t.store, t.options);
342
283
  }
343
284
  };
344
- o && typeof o.then == "function" ? o.then(() => h()).catch((c) => this.logError(c, t.store, t.options)) : h(), e.subscriptions && this.subscriptionDelivery(t, e.subscriptions), e.storeMutationSubscription && this.storeMutationSubscription(e.storeMutationSubscription), this.storeOnActionSubscription(e), e.resetStoreCallback && this.addResetStoreCallback(e.resetStoreCallback);
285
+ o && typeof o.then == "function" ? o.then(() => h()).catch((a) => this.logError(a, t.store, t.options)) : h(), e.subscriptions && this.subscriptionDelivery(t, e.subscriptions), e.storeMutationSubscription && this.storeMutationSubscription(e.storeMutationSubscription), this.storeOnActionSubscription(e), e.resetStoreCallback && this.addResetStoreCallback(t.store, e.resetStoreCallback);
345
286
  }
346
287
  executeSubscriberSafely(t, e) {
347
288
  try {
@@ -381,14 +322,14 @@ class k extends m {
381
322
  queueSubscriberExecution(t, e, i) {
382
323
  const r = this.defineHydrationScheduler(e);
383
324
  this._subscribersScheduled.add(i), r(() => {
384
- this._subscribersScheduled.delete(i), this.executeSubscriberSafely(t, e);
325
+ this._disposedStores.has(t.store) || (this._subscribersScheduled.delete(i), this.executeSubscriberSafely(t, e));
385
326
  });
386
327
  }
387
328
  registerStoreCleanup(t) {
388
- if (this._onActionSubscriptions = [], typeof t.$dispose != "function")
329
+ if (typeof t.$dispose != "function")
389
330
  return;
390
331
  const e = t.$dispose.bind(t), i = t;
391
- i.__piniaPluginSubscriptionDisposed || (i.__piniaPluginSubscriptionDisposed = !0, t.$dispose = () => (this.clearStoreTracking(t), this._storeRollbackSnapshotsHandler.clearStoreTracking(t), e()));
332
+ i.__piniaPluginSubscriptionDisposed || (i.__piniaPluginSubscriptionDisposed = !0, t.$dispose = () => (this._disposedStores.add(t), this.clearStoreTracking(t), this._storeRollbackSnapshotsHandler.clearStoreTracking(t), e()));
392
333
  }
393
334
  rewriteResetStore({ store: t }, e) {
394
335
  const i = u(e);
@@ -405,7 +346,7 @@ class k extends m {
405
346
  }
406
347
  storeOnActionSubscription(t) {
407
348
  const { store: e, callback: i } = t?.storeOnActionSubscription?.() ?? {};
408
- !e || !i || this._onActionSubscriptions.push(i);
349
+ !e || !i || (this._onActionSubscriptions.has(e) || this._onActionSubscriptions.set(e, /* @__PURE__ */ new Set()), this._onActionSubscriptions.get(e).add(i), this.executeStoreOnActionSubscription(e));
409
350
  }
410
351
  storeMutationSubscription(t) {
411
352
  const { store: e, callback: i } = t();
@@ -418,9 +359,9 @@ class k extends m {
418
359
  const o = this.defineSubscriptionKey(i, t.store), h = this.definePluginExecution(r.subscription);
419
360
  if (!(this._subscriptionsDelivered.has(o) || this._subscriptionsScheduled.has(o)) && this.shouldInvokePlugin(h)) {
420
361
  if (this.shouldScheduleAfterHydration(h)) {
421
- const c = this.defineHydrationScheduler(r.subscription);
422
- this._subscriptionsScheduled.add(o), c(() => {
423
- this._subscriptionsScheduled.delete(o), this.subscriptionDeliverySafely(t, i, r);
362
+ const a = this.defineHydrationScheduler(r.subscription);
363
+ this._subscriptionsScheduled.add(o), a(() => {
364
+ this._disposedStores.has(t.store) || (this._subscriptionsScheduled.delete(o), this.subscriptionDeliverySafely(t, i, r));
424
365
  });
425
366
  return;
426
367
  }
@@ -432,7 +373,7 @@ class k extends m {
432
373
  try {
433
374
  if (this._subscriptionsDelivered.has(this.defineSubscriptionKey(i, t)))
434
375
  return;
435
- const { subscription: o, subscriptionOptions: h, stores: c } = r;
376
+ const { subscription: o, subscriptionOptions: h, stores: a } = r;
436
377
  this.debugLog(`subscriptionDelivery() - store: ${t.$id}`, [
437
378
  "pluginName:",
438
379
  i,
@@ -441,7 +382,7 @@ class k extends m {
441
382
  "options:",
442
383
  r,
443
384
  "stores:",
444
- c
385
+ a
445
386
  ]);
446
387
  const l = {
447
388
  storeOptions: { ...e?.storeOptions ?? {}, ...h }
@@ -449,7 +390,7 @@ class k extends m {
449
390
  o.invoke(
450
391
  { store: t, options: { ...e, ...l } },
451
392
  this.debug
452
- ), this._subscriptionsDelivered.add(this.defineSubscriptionKey(i, t)), y(c) || c?.forEach(
393
+ ), this._subscriptionsDelivered.add(this.defineSubscriptionKey(i, t)), _(a) || a?.forEach(
453
394
  (d) => o.invoke(
454
395
  {
455
396
  store: d,
@@ -467,12 +408,12 @@ class k extends m {
467
408
  }
468
409
  }
469
410
  }
470
- function j(n, s) {
471
- const t = new k(n, s);
411
+ function K(n, s) {
412
+ const t = new g(n, s);
472
413
  return t.plugin.bind(t);
473
414
  }
474
- function K(n, s) {
475
- const t = new k(n, s?.debug, {
415
+ function M(n, s) {
416
+ const t = new g(n, s?.debug, {
476
417
  execution: s?.execution,
477
418
  hydrationScheduler: s?.hydrationScheduler,
478
419
  runtimeEnvironment: s?.runtimeEnvironment,
@@ -482,17 +423,18 @@ function K(n, s) {
482
423
  }
483
424
  export {
484
425
  T as CustomConsole,
485
- W as PLUGIN_NAME,
486
- L as PluginSubscriber,
487
- k as PluginSubscription,
488
- I as Store,
489
- K as createHydrationPlugin,
490
- j as createPlugin,
491
- q as defineAStore,
426
+ L as PLUGIN_NAME,
427
+ I as PluginSubscriber,
428
+ g as PluginSubscription,
429
+ q as Store,
430
+ M as createHydrationPlugin,
431
+ K as createPlugin,
432
+ z as defineAStore,
492
433
  G as defineAStoreCtx,
493
434
  U as getDefineAStoreSetupContext,
494
- z as getEnhancedStore,
495
- B as getExtendingStore,
496
- y as isEmpty,
497
- J as setEnhancedStore
435
+ B as getEnhancedStore,
436
+ J as getExtendingStore,
437
+ _ as isEmpty,
438
+ Q as setEnhancedStore
498
439
  };
440
+ //# sourceMappingURL=pinia-plugin-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinia-plugin-subscription.js","sources":["../src/utils/deep-clone.ts","../src/factories/state-snapshot.ts","../src/core/RollbackStateSnapshotsHandler.ts","../src/core/PluginSubscription.ts"],"sourcesContent":["/**\n * Deeply clones the provided value, handling objects, arrays, maps, and sets. Uses `structuredClone` if available, otherwise falls back to a manual deep clone.\n * @template T The type of the value to deep clone.\n * @param value The value to deep clone.\n * @returns A deep clone of the provided value.\n */\nexport function deepClone<T>(value: T): T {\n if (typeof structuredClone === 'function') {\n try {\n return structuredClone(value)\n } catch {\n // fall through to the safe manual clone below\n }\n }\n\n if (value === null || typeof value !== 'object') {\n return value\n }\n\n if (value instanceof Map) {\n return new Map(\n Array.from(value.entries(), ([key, entryValue]) => [deepClone(key), deepClone(entryValue)])\n ) as T\n }\n\n if (value instanceof Set) {\n return new Set(Array.from(value.values(), entryValue => deepClone(entryValue))) as T\n }\n\n if (Array.isArray(value)) {\n return value.map(item => deepClone(item)) as T\n }\n\n if (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, item]) => [key, deepClone(item)])\n ) as T\n }\n\n const clonedObject = Object.create(Object.getPrototypeOf(value)) as Record<string, unknown>\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n clonedObject[key] = deepClone(item)\n }\n\n return clonedObject as T\n}","import { toRaw } from 'vue'\nimport { deepClone } from '../utils/deep-clone'\n\nimport type { StateTree } from 'pinia'\nimport type { CreateStateSnapshotKeys } from '../types/plugin'\n\n\nexport function createStateSnapshot(state: StateTree, keys: CreateStateSnapshotKeys = 'all') {\n if (Array.isArray(keys)) {\n const clonedState: Partial<StateTree> = {}\n for (const key of keys) {\n if (key in state) {\n clonedState[key] = deepClone(toRaw(state[key]))\n }\n }\n return clonedState\n }\n\n if (keys !== 'all') {\n throw new Error(`Invalid keys parameter: ${keys}`)\n }\n\n return deepClone(toRaw(state))\n}","import { createStateSnapshot } from \"../factories/state-snapshot\"\nimport { getActionStoreKey, hasDeniedFirstChar } from '../utils/store'\n\nimport type { PiniaPluginContext, StateTree, Store } from 'pinia'\nimport type { AnyObject } from '../types'\nimport type { CreateStateSnapshotKeys } from '../types/plugin'\nimport type { RollbackActionParams } from '../types/store'\n\n\n/**\n * Handles rollback state snapshots for Pinia stores.\n * This class provides methods to add rollback actions to stores,\n * create rollback snapshots, and manage the state snapshots internally.\n */\nexport default class RollbackStateSnapshotsHandler {\n private _stateSnapshots: Map<symbol, StateTree> = new Map()\n private _storeHasRollbackSnapshots: Set<string> = new Set()\n private _storeRollbackSnapshotsParams: Map<string, CreateStateSnapshotKeys> = new Map()\n\n\n /**\n * Adds a rollback action to the given store.\n * This method extends the store with a $rollbackAfterFailure function that handles rollback logic for actions.\n * The action arguments are forwarded through apply(), so they must be provided as a single array.\n * @param {Store} store The store to which the rollback action will be added.\n * @returns void\n */\n addRollbackAction(store: Store): void {\n if (typeof store.$rollbackAfterFailure === 'function') {\n return\n }\n\n store.$rollbackAfterFailure = async ({ action, stateKeys }: RollbackActionParams, args: any[] = []) => {\n const actionFn = (store as AnyObject)[action]\n if (typeof actionFn !== 'function' || hasDeniedFirstChar(action)) {\n return\n }\n\n const keys: CreateStateSnapshotKeys = !stateKeys || stateKeys.length === 0 ? 'all' : stateKeys\n\n const snapshotKey = this.saveStateSnapshot(store, action, keys)\n try {\n await actionFn.apply(store, args)\n } catch (error) {\n this.patchStore(snapshotKey, store)\n throw error\n } finally {\n this.removeStateSnapshot(snapshotKey)\n }\n }\n }\n\n /**\n * Creates a rollback snapshot for the specified action and store.\n * This snapshot can be used to restore the store's state in case of an error during the action execution.\n * @param {string} actionName The name of the action for which the rollback snapshot is created.\n * @param {Store} store The Pinia store instance.\n * @returns An object containing `after` and `onError` callbacks for handling the rollback, or `undefined` if no snapshot is created.\n */\n createOnActionCallbacks(\n actionName: string,\n store: Store\n ): {\n after: () => void,\n onError: () => void\n } | undefined {\n const stateKeys = this._storeRollbackSnapshotsParams.get(\n getActionStoreKey(actionName, store)\n )\n\n if (!stateKeys) {\n return\n }\n\n const keys: CreateStateSnapshotKeys = stateKeys.length === 0 ? 'all' : stateKeys\n const snapshotKey = this.saveStateSnapshot(store, actionName, keys)\n\n return {\n after: () => { this.removeStateSnapshot(snapshotKey) },\n onError: () => {\n this.patchStore(snapshotKey, store)\n this.removeStateSnapshot(snapshotKey)\n }\n }\n }\n\n /**\n * Initializes the rollback state snapshots handler from the given Pinia plugin context.\n * This method extracts the rollback snapshot parameters from the store options and stores them internally.\n * @param {PiniaPluginContext} param0 The Pinia plugin context containing the store and its options.\n * @returns void\n */\n initFromPluginContext({ options, store }: PiniaPluginContext) {\n const rollbackSnapshotParams = options?.storeOptions?.rollbackAfterFailure as Record<string, CreateStateSnapshotKeys>\n if (rollbackSnapshotParams && !this._storeHasRollbackSnapshots.has(store.$id)) {\n Object.keys(rollbackSnapshotParams).forEach(key => {\n this._storeRollbackSnapshotsParams.set(\n getActionStoreKey(key, store),\n rollbackSnapshotParams[key]\n )\n })\n this._storeHasRollbackSnapshots.add(store.$id)\n }\n this.addRollbackAction(store)\n }\n\n /**\n * Clears all rollback tracking data for the given store.\n * Must be called when the store is disposed to avoid memory leaks with dynamically created stores.\n * @param {Store} store The disposed Pinia store instance.\n * @returns void\n */\n clearStoreTracking(store: Store): void {\n const suffix = `-${store.$id}`\n\n for (const key of Array.from(this._storeRollbackSnapshotsParams.keys())) {\n if (key.endsWith(suffix)) {\n this._storeRollbackSnapshotsParams.delete(key)\n }\n }\n\n this._storeHasRollbackSnapshots.delete(store.$id)\n\n for (const snapshotKey of Array.from(this._stateSnapshots.keys())) {\n if (snapshotKey.description?.startsWith(`${store.$id}:`)) {\n this._stateSnapshots.delete(snapshotKey)\n }\n }\n }\n\n private patchStore(snapshotKey: symbol, store: Store): void {\n const stateSnapshot = this._stateSnapshots.get(snapshotKey)\n if (!stateSnapshot) {\n return\n }\n\n try {\n store.$patch(stateSnapshot)\n } catch (error) {\n console.error(`Failed to patch store with snapshot ${String(snapshotKey)}`, error)\n }\n }\n\n /**\n * Removes a state snapshot identified by the given snapshot key from the internal state snapshot tracking.\n * @param snapshotKey The key of the state snapshot to be removed.\n * @returns void\n */\n private removeStateSnapshot(snapshotKey?: symbol): void {\n if (!snapshotKey) {\n return\n }\n\n this._stateSnapshots.delete(snapshotKey)\n }\n\n /**\n * Saves the current state snapshot for a given store and action.\n * @param store The Pinia store instance.\n * @param actionName The name of the action being executed.\n * @param stateKeys The state keys to include in the snapshot, or 'all' for the full state.\n * @returns A unique symbol key representing the saved snapshot.\n */\n private saveStateSnapshot(store: Store, actionName: string, stateKeys: CreateStateSnapshotKeys): symbol {\n const stateSnapshot = createStateSnapshot(\n store.$state,\n stateKeys\n )\n\n const snapshotKey = Symbol(`${store.$id}:${actionName}`)\n this._stateSnapshots.set(snapshotKey, stateSnapshot)\n return snapshotKey\n }\n\n /**\n * Checks if the given store has rollback snapshots.\n * @param store The Pinia store instance.\n * @returns True if the store has rollback snapshots, false otherwise.\n */\n storeHasRollbackSnapshots(store: Store): boolean {\n return this._storeHasRollbackSnapshots.has(store.$id)\n }\n}","import Debug from \"../system/Debug\"\nimport RollbackStateSnapshotsHandler from \"./RollbackStateSnapshotsHandler\"\nimport { deepClone } from '../utils/deep-clone'\nimport { getActionStoreKey } from '../utils/store'\nimport { PluginConsole } from \"../system/log\"\nimport { isEmpty } from \"../utils/validation\"\n\nimport type { PiniaPluginContext, StateTree, Store, SubscriptionCallbackMutation } from \"pinia\"\nimport type { AnyObject } from \"../types\"\nimport type {\n PluginExecutionOptions,\n PluginHydrationScheduler,\n PluginRuntimeEnvironment,\n PluginSubscriber,\n PluginSubscription as PluginSubscriptionDefinition,\n PluginSubscriptionOptions,\n PluginSubscriptions,\n StoreMutationSubscription,\n StoreOnActionAfterCallbackParameter,\n StoreOnActionSubscriptionCallback\n} from \"../types/plugin\"\n\n\nconst className = 'PluginSubscription'\nconst defaultPluginExecution: Required<PluginExecutionOptions> = {\n environment: 'both',\n hydration: 'immediate'\n}\n\nfunction defaultHydrationScheduler(callback: () => void): void {\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => globalThis.setTimeout(callback, 0))\n return\n }\n\n globalThis.setTimeout(callback, 0)\n}\n\nfunction isPluginSubscriptionOptions(\n value: PluginSubscriptionOptions | string[] | undefined\n): value is PluginSubscriptionOptions {\n return value !== undefined && !Array.isArray(value)\n}\n\n\nexport default class PluginSubscription extends Debug {\n protected _className: string = className\n private _hydrationScheduler: PluginHydrationScheduler\n private _onActionSubscriptions: Map<Store, Set<StoreOnActionSubscriptionCallback>> = new Map()\n private _onActionStores: Set<Store> = new Set()\n private _onActionAfterSubscriptions: Record<string, StoreOnActionAfterCallbackParameter[]> = {}\n private _onActionOnErrorSubscriptions: Record<string, Array<(error: unknown) => void>> = {}\n private _options?: PluginSubscriptionOptions\n private _pluginDebug?: string[]\n private _resetStoreCallback: Map<Store, Set<NonNullable<PluginSubscriber['resetStoreCallback']>>> = new Map()\n private _disposedStores: WeakSet<Store> = new WeakSet()\n private _storeRollbackSnapshotsHandler: RollbackStateSnapshotsHandler = new RollbackStateSnapshotsHandler()\n private _subscribers: PluginSubscriber[] = []\n private _subscribersDelivered: Set<string> = new Set()\n private _subscribersScheduled: Set<string> = new Set()\n private _subscriptions: PluginSubscriptions[] = []\n private _subscriptionsDelivered: Set<string> = new Set()\n private _subscriptionsScheduled: Set<string> = new Set()\n\n set subscribers(subscribers: PluginSubscriber[]) {\n this._subscribers = subscribers\n }\n\n get subscriptions(): PluginSubscriptions[] | undefined {\n if (!isEmpty(this._subscriptions)) {\n return this._subscriptions\n }\n }\n\n constructor(\n subscribers: PluginSubscriber[],\n debugOrOptions?: PluginSubscriptionOptions | string[],\n pluginOptions?: PluginSubscriptionOptions\n ) {\n const debug = Array.isArray(debugOrOptions) ? debugOrOptions : undefined\n const options = isPluginSubscriptionOptions(debugOrOptions) ? debugOrOptions : pluginOptions\n\n super(Array.isArray(debug) && !!debug?.includes(className), PluginConsole)\n this._hydrationScheduler = options?.hydrationScheduler ?? defaultHydrationScheduler\n this._options = options\n this._pluginDebug = Array.isArray(debug) ? debug : undefined\n this._subscribers = subscribers\n }\n\n\n private addOnActionAfterCallback(actionName: string, store: Store, callback: StoreOnActionAfterCallbackParameter): void {\n const key = getActionStoreKey(actionName, store)\n if (!this._onActionAfterSubscriptions[key]) {\n this._onActionAfterSubscriptions[key] = []\n }\n this._onActionAfterSubscriptions[key]?.push(callback)\n }\n\n private addOnActionOnErrorCallback(actionName: string, store: Store, callback: (error: unknown) => void): void {\n const key = getActionStoreKey(actionName, store)\n if (!this._onActionOnErrorSubscriptions[key]) {\n this._onActionOnErrorSubscriptions[key] = []\n }\n this._onActionOnErrorSubscriptions[key]?.push(callback)\n }\n\n private addResetStoreCallback(store: Store, callback: NonNullable<PluginSubscriber['resetStoreCallback']>): void {\n if (!this._resetStoreCallback.has(store)) {\n this._resetStoreCallback.set(store, new Set())\n }\n this._resetStoreCallback.get(store)!.add(callback)\n }\n\n private clearOnActionCallbacksSubscriptions(storageKey: string): void {\n delete this._onActionAfterSubscriptions[storageKey]\n delete this._onActionOnErrorSubscriptions[storageKey]\n }\n\n private clearStoreTracking(store: Store): void {\n this._onActionSubscriptions.delete(store)\n this._onActionStores.delete(store)\n this._resetStoreCallback.delete(store)\n const suffix = `-${store.$id}`\n\n for (const key of Array.from(this._subscribersDelivered)) {\n if (key.endsWith(suffix)) {\n this._subscribersDelivered.delete(key)\n }\n }\n\n for (const key of Array.from(this._subscribersScheduled)) {\n if (key.endsWith(suffix)) {\n this._subscribersScheduled.delete(key)\n }\n }\n\n for (const key of Array.from(this._subscriptionsDelivered)) {\n if (key.endsWith(suffix)) {\n this._subscriptionsDelivered.delete(key)\n }\n }\n\n for (const key of Array.from(this._subscriptionsScheduled)) {\n if (key.endsWith(suffix)) {\n this._subscriptionsScheduled.delete(key)\n }\n }\n\n for (const key of Object.keys(this._onActionAfterSubscriptions)) {\n if (key.endsWith(suffix)) {\n delete this._onActionAfterSubscriptions[key]\n }\n }\n\n for (const key of Object.keys(this._onActionOnErrorSubscriptions)) {\n if (key.endsWith(suffix)) {\n delete this._onActionOnErrorSubscriptions[key]\n }\n }\n }\n\n /**\n * Creates a callback collector for the specified action and store.\n * @param actionName The name of the action to collect callbacks for.\n * @param store The store instance associated with the action.\n * @returns A function that collects callbacks for the specified action and store.\n */\n private createOnActionAfterCallbackCollector(actionName: string, store: Store) {\n return (callback: StoreOnActionAfterCallbackParameter) => {\n this.addOnActionAfterCallback(actionName, store, callback)\n }\n }\n\n /**\n * Creates a callback collector for the specified action and store that handles errors.\n * @param actionName The name of the action to collect error callbacks for.\n * @param store The store instance associated with the action.\n * @returns A function that collects error callbacks for the specified action and store.\n */\n private createOnActionOnErrorCallbackCollector(actionName: string, store: Store) {\n return (callback: (error: unknown) => void) => {\n this.addOnActionOnErrorCallback(actionName, store, callback)\n }\n }\n\n /**\n * Rolls back the state snapshot for a given action if an error occurs, and removes the snapshot after the action completes or fails.\n * @param actionName The name of the action being executed.\n * @param store The Pinia store instance.\n * @returns void\n */\n private createRollbackSnapshot(\n actionName: string,\n store: Store\n ) {\n const {\n after,\n onError\n } = this._storeRollbackSnapshotsHandler.createOnActionCallbacks(\n actionName,\n store\n ) ?? {}\n\n if (!after || !onError) {\n return\n }\n\n this.addOnActionAfterCallback(actionName, store, after)\n this.addOnActionOnErrorCallback(actionName, store, onError)\n }\n\n private defineCurrentEnvironment(): PluginRuntimeEnvironment {\n return this._options?.runtimeEnvironment\n ?? (typeof window === 'undefined' ? 'server' : 'client')\n }\n\n private definePluginDebug(subscriber: PluginSubscriber): boolean {\n return !!this._pluginDebug?.includes(subscriber.name)\n }\n\n private definePluginExecution(subscriber: PluginSubscriber): Required<PluginExecutionOptions> {\n return {\n ...defaultPluginExecution,\n ...(this._options?.execution ?? {}),\n ...(subscriber.execution ?? {}),\n ...(this._options?.subscriberExecution?.[subscriber.name] ?? {}),\n }\n }\n\n private defineHydrationScheduler(subscriber: PluginSubscriber | PluginSubscriptionDefinition['subscription']): PluginHydrationScheduler {\n return subscriber.hydrationScheduler ?? this._hydrationScheduler\n }\n\n private defineSubscriberKey(subscriber: PluginSubscriber, store: Store): string {\n return `${subscriber.name}-${store.$id}`\n }\n\n private defineSubscriptionKey(pluginName: string, store: Store): string {\n return `${pluginName}-${store.$id}`\n }\n\n private executeResetStoreCallbacks(store: Store): void {\n this._resetStoreCallback.get(store)?.forEach(callback => callback(store))\n }\n\n /**\n * Executes the store's onAction subscription for the given plugin subscriber.\n * @param store The Pinia store instance.\n * @param subscriber The plugin subscriber.\n * @returns void\n */\n private executeStoreOnActionSubscription(store: Store): void {\n if (this._onActionStores.has(store) || typeof store.$onAction !== 'function') {\n return\n }\n const onActionSubscriptions = this._onActionSubscriptions.get(store)\n const hasRollbackSnapshots = this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(store)\n\n if (!onActionSubscriptions?.size && !hasRollbackSnapshots) {\n return\n }\n\n this._onActionStores.add(store)\n store.$onAction(({ after, args, name, onError }) => {\n const storageKey = getActionStoreKey(name, store)\n this.debugLog(`storeOnActionSubscription ${storageKey}`, { args, name, store })\n\n if (this._storeRollbackSnapshotsHandler.storeHasRollbackSnapshots(store)) {\n this.createRollbackSnapshot(name, store)\n }\n\n const callbacks = this._onActionSubscriptions.get(store)\n if (callbacks?.size) {\n callbacks.forEach(callback => callback({\n after: this.createOnActionAfterCallbackCollector(name, store),\n args,\n name,\n onError: this.createOnActionOnErrorCallbackCollector(name, store)\n }))\n }\n\n const afterCallbacks = this._onActionAfterSubscriptions[storageKey]\n const onErrorCallbacks = this._onActionOnErrorSubscriptions[storageKey]\n\n this.clearOnActionCallbacksSubscriptions(storageKey)\n\n if (afterCallbacks?.length) {\n after((result) => {\n afterCallbacks.forEach(callback => callback(result))\n })\n }\n if (onErrorCallbacks?.length) {\n onError((error) => {\n onErrorCallbacks.forEach(callback => callback(error))\n })\n }\n })\n }\n\n private executeSubscriber(context: PiniaPluginContext, subscriber: PluginSubscriber): void {\n const subscriberKey = this.defineSubscriberKey(subscriber, context.store)\n const debug = this.definePluginDebug(subscriber)\n\n if (this._subscribersDelivered.has(subscriberKey)) {\n return\n }\n\n if (\n !subscriber.invoke(\n context,\n debug\n )) {\n return\n }\n\n this._subscribersDelivered.add(subscriberKey)\n\n let hydrateResult: void | Promise<void>\n\n try {\n hydrateResult = subscriber.hydrate?.(context, debug)\n } catch (error) {\n this.logError(error, context.store, context.options)\n return\n }\n\n const runAfterHydration = () => {\n try {\n const afterHydration = subscriber.afterHydration?.(context, debug)\n if (afterHydration && typeof (afterHydration as Promise<void>).then === 'function') {\n ; (afterHydration as Promise<void>).catch(error => this.logError(error, context.store, context.options))\n }\n } catch (error) {\n this.logError(error, context.store, context.options)\n }\n }\n\n if (hydrateResult && typeof (hydrateResult as Promise<void>).then === 'function') {\n ; (hydrateResult as Promise<void>)\n .then(() => runAfterHydration())\n .catch(error => this.logError(error, context.store, context.options))\n } else {\n runAfterHydration()\n }\n\n if (subscriber.subscriptions) {\n this.subscriptionDelivery(context, subscriber.subscriptions)\n }\n\n if (subscriber.storeMutationSubscription) {\n this.storeMutationSubscription(subscriber.storeMutationSubscription)\n }\n\n this.storeOnActionSubscription(subscriber)\n\n if (subscriber.resetStoreCallback) {\n this.addResetStoreCallback(context.store, subscriber.resetStoreCallback)\n }\n }\n\n private executeSubscriberSafely(context: PiniaPluginContext, subscriber: PluginSubscriber): void {\n try {\n this.executeSubscriber(context, subscriber)\n } catch (e) {\n this.logError(e, context.store, context.options)\n }\n }\n\n plugin({ store, options }: PiniaPluginContext) {\n if (!this._subscribers.length) {\n return\n }\n\n this.debugLog(`plugin() - ${store.$id}`, [\n 'subscriber:', this._subscribers,\n 'store:', store,\n 'options:', options\n ])\n\n try {\n this._subscribers.forEach(\n subscriber => {\n const subscriberKey = this.defineSubscriberKey(subscriber, store)\n const execution = this.definePluginExecution(subscriber)\n\n if (\n this._subscribersDelivered.has(subscriberKey)\n || this._subscribersScheduled.has(subscriberKey)\n ) {\n return\n }\n\n if (!this.shouldInvokePlugin(execution)) {\n return\n }\n\n if (this.shouldScheduleAfterHydration(execution)) {\n this.queueSubscriberExecution({ store, options } as PiniaPluginContext, subscriber, subscriberKey)\n return\n }\n\n this.executeSubscriber({ store, options } as PiniaPluginContext, subscriber)\n }\n )\n\n this.rewriteResetStore({ store } as PiniaPluginContext, store.$state)\n this._storeRollbackSnapshotsHandler.initFromPluginContext({ store, options } as PiniaPluginContext)\n this.executeStoreOnActionSubscription(store)\n this.registerStoreCleanup(store)\n } catch (e) {\n this.logError(e, store, options)\n }\n }\n\n private queueSubscriberExecution(\n context: PiniaPluginContext,\n subscriber: PluginSubscriber,\n subscriberKey: string\n ): void {\n const scheduler = this.defineHydrationScheduler(subscriber)\n\n this._subscribersScheduled.add(subscriberKey)\n scheduler(() => {\n if (this._disposedStores.has(context.store)) {\n return\n }\n this._subscribersScheduled.delete(subscriberKey)\n this.executeSubscriberSafely(context, subscriber)\n })\n }\n\n private registerStoreCleanup(store: Store): void {\n if (typeof store.$dispose !== 'function') {\n return\n }\n\n const dispose = store.$dispose.bind(store)\n const scopedStore = store as AnyObject\n\n if (scopedStore.__piniaPluginSubscriptionDisposed) {\n return\n }\n\n scopedStore.__piniaPluginSubscriptionDisposed = true\n store.$dispose = () => {\n this._disposedStores.add(store)\n this.clearStoreTracking(store)\n this._storeRollbackSnapshotsHandler.clearStoreTracking(store)\n return dispose()\n }\n }\n\n private rewriteResetStore({ store }: PiniaPluginContext, initState: StateTree): void {\n const safeState = deepClone(initState)\n\n store.$reset = () => {\n this.debugLog('rewriteResetStore()', { initState: safeState, store })\n\n this.executeResetStoreCallbacks(store)\n\n store.$patch(deepClone(safeState))\n }\n }\n\n private shouldInvokePlugin(execution: Required<PluginExecutionOptions>): boolean {\n const currentEnvironment = this.defineCurrentEnvironment()\n\n return execution.environment === 'both' || execution.environment === currentEnvironment\n }\n\n private shouldScheduleAfterHydration(execution: Required<PluginExecutionOptions>): boolean {\n return this.defineCurrentEnvironment() === 'client' && execution.hydration === 'defer'\n }\n\n private storeOnActionSubscription(subscriber: PluginSubscriber): void {\n const { store, callback } = subscriber?.storeOnActionSubscription?.() ?? {}\n\n if (!store || !callback) {\n return\n }\n\n if (!this._onActionSubscriptions.has(store)) {\n this._onActionSubscriptions.set(store, new Set())\n }\n this._onActionSubscriptions.get(store)!.add(callback)\n this.executeStoreOnActionSubscription(store)\n }\n\n private storeMutationSubscription(subscription: StoreMutationSubscription): void {\n const { store, callback } = subscription()\n\n store.$subscribe((mutation: SubscriptionCallbackMutation<StateTree>) => {\n this.debugLog(`$subscribe ${store.$id}`, { mutation, store })\n callback(mutation)\n })\n }\n\n private subscriptionDelivery(\n context: PiniaPluginContext,\n pluginSubscriptions: PluginSubscriptions\n ): void {\n Object.entries(pluginSubscriptions).forEach(([pluginName, pluginSubscription]) => {\n const subscriptionKey = this.defineSubscriptionKey(pluginName, context.store)\n const execution = this.definePluginExecution(pluginSubscription.subscription)\n\n if (\n this._subscriptionsDelivered.has(subscriptionKey)\n || this._subscriptionsScheduled.has(subscriptionKey)\n ) {\n return\n }\n\n if (!this.shouldInvokePlugin(execution)) {\n return\n }\n\n if (this.shouldScheduleAfterHydration(execution)) {\n const scheduler = this.defineHydrationScheduler(pluginSubscription.subscription)\n\n this._subscriptionsScheduled.add(subscriptionKey)\n scheduler(() => {\n if (this._disposedStores.has(context.store)) {\n return\n }\n this._subscriptionsScheduled.delete(subscriptionKey)\n this.subscriptionDeliverySafely(context, pluginName, pluginSubscription)\n })\n return\n }\n\n this.subscriptionDeliverySafely(context, pluginName, pluginSubscription)\n })\n }\n\n private subscriptionDeliverySafely(\n { store, options }: PiniaPluginContext,\n pluginName: string,\n pluginSubscription: PluginSubscriptionDefinition\n ): void {\n try {\n if (this._subscriptionsDelivered.has(this.defineSubscriptionKey(pluginName, store))) {\n return\n }\n\n const { subscription, subscriptionOptions, stores } = pluginSubscription\n\n this.debugLog(`subscriptionDelivery() - store: ${store.$id}`, [\n 'pluginName:', pluginName,\n 'subscription:', subscription,\n 'options:', pluginSubscription,\n 'stores:', stores\n ])\n\n const pluginOptions = {\n storeOptions: { ...((options as AnyObject)?.storeOptions ?? {}), ...subscriptionOptions }\n } as AnyObject\n\n subscription.invoke(\n { store, options: { ...options, ...pluginOptions } } as PiniaPluginContext,\n this.debug\n )\n this._subscriptionsDelivered.add(this.defineSubscriptionKey(pluginName, store))\n\n if (!isEmpty(stores)) {\n stores?.forEach(\n store => subscription.invoke(\n {\n store,\n options: {\n ...options,\n ...pluginOptions,\n ...((store as AnyObject)?.storeOptions ?? {})\n }\n } as PiniaPluginContext,\n this.debug\n )\n )\n }\n } catch (e) {\n this.logError(`subscriptionDelivery()`, e, store, options)\n }\n }\n}"],"names":["deepClone","value","key","entryValue","item","clonedObject","createStateSnapshot","state","keys","clonedState","toRaw","RollbackStateSnapshotsHandler","__publicField","store","action","stateKeys","args","actionFn","hasDeniedFirstChar","snapshotKey","error","actionName","getActionStoreKey","options","rollbackSnapshotParams","suffix","stateSnapshot","className","defaultPluginExecution","defaultHydrationScheduler","callback","isPluginSubscriptionOptions","PluginSubscription","Debug","subscribers","debugOrOptions","pluginOptions","debug","PluginConsole","storageKey","after","onError","subscriber","pluginName","onActionSubscriptions","hasRollbackSnapshots","name","callbacks","afterCallbacks","onErrorCallbacks","result","context","subscriberKey","hydrateResult","runAfterHydration","afterHydration","e","execution","scheduler","dispose","scopedStore","initState","safeState","currentEnvironment","subscription","mutation","pluginSubscriptions","pluginSubscription","subscriptionKey","subscriptionOptions","stores","isEmpty","store2","createPlugin","createHydrationPlugin","hydrationPlugin"],"mappings":"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"}
@@ -7,8 +7,11 @@ declare module 'pinia' {
7
7
  /**
8
8
  * Executes an action and restores the previous state snapshot if it fails.
9
9
  * Added to every store when the plugin is active.
10
+ *
11
+ * @param params The action name and the state keys to snapshot.
12
+ * @param args The action arguments, passed as a single array (forwarded via `apply`).
10
13
  */
11
- $rollbackAfterFailure: (params: RollbackActionParams, ...args: any[]) => Promise<void>;
14
+ $rollbackAfterFailure: (params: RollbackActionParams, args?: any[]) => Promise<void>;
12
15
  }
13
16
  interface DefineStoreOptionsBase<S, Store> {
14
17
  storeOptions?: StoreOptions;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Compile-only contract for the centralized store-options extension point.
3
+ * Simulates a subscriber plugin augmenting the contract through interface
4
+ * merging, instead of redeclaring pinia's `DefineStoreOptionsBase` (which
5
+ * would raise TS2717 on type mismatch in consumer projects).
6
+ */
7
+ declare module '../types' {
8
+ interface StoreOptionsExtensions {
9
+ testExtension?: string;
10
+ }
11
+ }
12
+ export {};
@@ -19,7 +19,7 @@ export type ConsoleStyleDefinition = StyleDefinition;
19
19
  export type ConsoleStyleDefinitionKeys = StyleDefinitionKeys;
20
20
  export type ConsoleStyleDefinitions = StyleDefinitions;
21
21
  export type { List, ListTypes, ListTypesMap, PartialList } from './list';
22
- export type { CustomStore, DefineAStoreSetupContext, DefineAStoreSetupExtensions, EmptyExtensions, PluginStoreOptions, StatePropertyValue, StoreOptions, StoreOptionsPropertyValue } from './store';
22
+ export type { CustomStore, DefineAStoreDefinition, DefineAStoreSetupContext, DefineAStoreSetupExtensions, EmptyExtensions, PluginStoreOptions, StatePropertyValue, StoreOptions, StoreOptionsExtensions, StoreOptionsPropertyValue, StrictStateTree } from './store';
23
23
  export type { NativePiniaSubscription, NativePiniaSubscriptionReturn, PluginExecutionEnvironment, PluginExecutionOptions, PluginHydrationScheduler, PluginHydrationTiming, PluginRuntimeEnvironment, PluginSubscriber, PluginSubscription, PluginSubscriptionOptions, PluginSubscriptions, StoreMutationSubscription, StoreMutationSubscriptionCallback, StoreMutationSubscriptionReturn, StoreOnActionCallbackParameters, StoreOnActionSubscription, StoreOnActionSubscriptionCallback, StoreOnActionSubscriptionReturn, } from './plugin';
24
24
  export interface PluginSubscriberInterface {
25
25
  console?: Console;