@yiin/reactive-proxy-state 1.0.34 → 1.0.36

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.cjs CHANGED
@@ -4030,7 +4030,7 @@ function markRaw(obj) {
4030
4030
  var import_vue = require("vue");
4031
4031
  var import_reactivity = __toESM(require_reactivity_cjs(), 1);
4032
4032
  function trackVueReactiveEvents(vueState, emit, options = {}) {
4033
- const { emitInitialReplace = true } = options;
4033
+ const { emitInitialReplace = true, onDiffError } = options;
4034
4034
  if (emitInitialReplace) {
4035
4035
  try {
4036
4036
  emit({ action: "replace", path: [], newValue: deepClone(vueState) });
@@ -4054,8 +4054,12 @@ function trackVueReactiveEvents(vueState, emit, options = {}) {
4054
4054
  prev[k] = result;
4055
4055
  }
4056
4056
  } catch (e) {
4057
+ const errorPath = pathStack.slice();
4057
4058
  pathStack.length = 0;
4058
4059
  prev[k] = deepClone(vueState[k]);
4060
+ if (onDiffError) {
4061
+ onDiffError({ key: k, path: errorPath, error: e });
4062
+ }
4059
4063
  return;
4060
4064
  }
4061
4065
  pathStack.pop();
package/dist/index.js CHANGED
@@ -3970,7 +3970,7 @@ function markRaw(obj) {
3970
3970
  var import_reactivity = __toESM(require_reactivity_cjs(), 1);
3971
3971
  import { watchEffect as watchEffect2 } from "vue";
3972
3972
  function trackVueReactiveEvents(vueState, emit, options = {}) {
3973
- const { emitInitialReplace = true } = options;
3973
+ const { emitInitialReplace = true, onDiffError } = options;
3974
3974
  if (emitInitialReplace) {
3975
3975
  try {
3976
3976
  emit({ action: "replace", path: [], newValue: deepClone(vueState) });
@@ -3994,8 +3994,12 @@ function trackVueReactiveEvents(vueState, emit, options = {}) {
3994
3994
  prev[k] = result;
3995
3995
  }
3996
3996
  } catch (e) {
3997
+ const errorPath = pathStack.slice();
3997
3998
  pathStack.length = 0;
3998
3999
  prev[k] = deepClone(vueState[k]);
4000
+ if (onDiffError) {
4001
+ onDiffError({ key: k, path: errorPath, error: e });
4002
+ }
3999
4003
  return;
4000
4004
  }
4001
4005
  pathStack.pop();
@@ -1,6 +1,12 @@
1
1
  import type { StateEvent } from "../types";
2
+ export type DiffErrorContext = {
3
+ key: string;
4
+ path: (string | number | symbol)[];
5
+ error: unknown;
6
+ };
2
7
  export type TrackVueReactiveEventsOptions = {
3
8
  emitInitialReplace?: boolean;
9
+ onDiffError?: (ctx: DiffErrorContext) => void;
4
10
  };
5
11
  /**
6
12
  * Observe a Vue 3 reactive object and emit RPS-compatible StateEvents
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yiin/reactive-proxy-state",
3
- "version": "1.0.34",
3
+ "version": "1.0.36",
4
4
  "author": "Yiin <stanislovas@yiin.lt>",
5
5
  "repository": {
6
6
  "type": "git",