@tanstack/vue-store
Advanced tools
@@ -46,2 +46,6 @@ "use strict"; | ||
| } | ||
| if (objA instanceof Date && objB instanceof Date) { | ||
| if (objA.getTime() !== objB.getTime()) return false; | ||
| return true; | ||
| } | ||
| const keysA = Object.keys(objA); | ||
@@ -48,0 +52,0 @@ if (keysA.length !== Object.keys(objB).length) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import { readonly, ref, toRaw, watch } from 'vue-demi'\nimport type { Derived, Store } from '@tanstack/store'\nimport type { Ref } from 'vue-demi'\n\nexport * from '@tanstack/store'\n\n/**\n * @private\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Derived<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any> | Derived<TState, any>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Readonly<Ref<TSelected>> {\n const slice = ref(selector(store.state)) as Ref<TSelected>\n\n watch(\n () => store,\n (value, _oldValue, onCleanup) => {\n const unsub = value.subscribe(() => {\n const data = selector(value.state)\n if (shallow(toRaw(slice.value), data)) {\n return\n }\n slice.value = data\n })\n\n onCleanup(() => {\n unsub()\n })\n },\n { immediate: true },\n )\n\n return readonly(slice) as never\n}\n\nexport function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false\n for (const [k, v] of objA) {\n if (!objB.has(k) || !Object.is(v, objB.get(k))) return false\n }\n return true\n }\n\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false\n for (const v of objA) {\n if (!objB.has(v)) return false\n }\n return true\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":["store","ref","watch","toRaw","readonly"],"mappings":";;;;AAmBO,SAAS,SACdA,QACA,WAAkD,CAAC,MAAM,GAC/B;AAC1B,QAAM,QAAQC,QAAAA,IAAI,SAASD,OAAM,KAAK,CAAC;AAEvCE,UAAAA;AAAAA,IACE,MAAMF;AAAA,IACN,CAAC,OAAO,WAAW,cAAc;AAC/B,YAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,cAAM,OAAO,SAAS,MAAM,KAAK;AACjC,YAAI,QAAQG,QAAAA,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG;AACrC;AAAA,QAAA;AAEF,cAAM,QAAQ;AAAA,MAAA,CACf;AAED,gBAAU,MAAM;AACd,cAAA;AAAA,MAAM,CACP;AAAA,IAAA;AAAA,IAEH,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpB,SAAOC,QAAAA,SAAS,KAAK;AACvB;AAEO,SAAS,QAAW,MAAS,MAAS;AAC3C,MAAI,OAAO,GAAG,MAAM,IAAI,GAAG;AACzB,WAAO;AAAA,EAAA;AAGT,MACE,OAAO,SAAS,YAChB,SAAS,QACT,OAAO,SAAS,YAChB,SAAS,MACT;AACA,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,CAAC,GAAG,CAAC,KAAK,MAAM;AACzB,UAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,EAAG,QAAO;AAAA,IAAA;AAEzD,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,KAAK,MAAM;AACpB,UAAI,CAAC,KAAK,IAAI,CAAC,EAAG,QAAO;AAAA,IAAA;AAE3B,WAAO;AAAA,EAAA;AAGT,QAAM,QAAQ,OAAO,KAAK,IAAI;AAC9B,MAAI,MAAM,WAAW,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC7C,WAAO;AAAA,EAAA;AAGT,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QACE,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,MAAM,CAAC,CAAW,KAC9D,CAAC,OAAO,GAAG,KAAK,MAAM,CAAC,CAAY,GAAG,KAAK,MAAM,CAAC,CAAY,CAAC,GAC/D;AACA,aAAO;AAAA,IAAA;AAAA,EACT;AAEF,SAAO;AACT;;;;;;;;;"} | ||
| {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import { readonly, ref, toRaw, watch } from 'vue-demi'\nimport type { Derived, Store } from '@tanstack/store'\nimport type { Ref } from 'vue-demi'\n\nexport * from '@tanstack/store'\n\n/**\n * @private\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Derived<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any> | Derived<TState, any>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Readonly<Ref<TSelected>> {\n const slice = ref(selector(store.state)) as Ref<TSelected>\n\n watch(\n () => store,\n (value, _oldValue, onCleanup) => {\n const unsub = value.subscribe(() => {\n const data = selector(value.state)\n if (shallow(toRaw(slice.value), data)) {\n return\n }\n slice.value = data\n })\n\n onCleanup(() => {\n unsub()\n })\n },\n { immediate: true },\n )\n\n return readonly(slice) as never\n}\n\nexport function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false\n for (const [k, v] of objA) {\n if (!objB.has(k) || !Object.is(v, objB.get(k))) return false\n }\n return true\n }\n\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false\n for (const v of objA) {\n if (!objB.has(v)) return false\n }\n return true\n }\n\n if (objA instanceof Date && objB instanceof Date) {\n if (objA.getTime() !== objB.getTime()) return false\n return true\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":["store","ref","watch","toRaw","readonly"],"mappings":";;;;AAmBO,SAAS,SACdA,QACA,WAAkD,CAAC,MAAM,GAC/B;AAC1B,QAAM,QAAQC,QAAAA,IAAI,SAASD,OAAM,KAAK,CAAC;AAEvCE,UAAAA;AAAAA,IACE,MAAMF;AAAA,IACN,CAAC,OAAO,WAAW,cAAc;AAC/B,YAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,cAAM,OAAO,SAAS,MAAM,KAAK;AACjC,YAAI,QAAQG,QAAAA,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG;AACrC;AAAA,QAAA;AAEF,cAAM,QAAQ;AAAA,MAAA,CACf;AAED,gBAAU,MAAM;AACd,cAAA;AAAA,MAAM,CACP;AAAA,IAAA;AAAA,IAEH,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpB,SAAOC,QAAAA,SAAS,KAAK;AACvB;AAEO,SAAS,QAAW,MAAS,MAAS;AAC3C,MAAI,OAAO,GAAG,MAAM,IAAI,GAAG;AACzB,WAAO;AAAA,EAAA;AAGT,MACE,OAAO,SAAS,YAChB,SAAS,QACT,OAAO,SAAS,YAChB,SAAS,MACT;AACA,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,CAAC,GAAG,CAAC,KAAK,MAAM;AACzB,UAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,EAAG,QAAO;AAAA,IAAA;AAEzD,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,KAAK,MAAM;AACpB,UAAI,CAAC,KAAK,IAAI,CAAC,EAAG,QAAO;AAAA,IAAA;AAE3B,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,QAAQ,gBAAgB,MAAM;AAChD,QAAI,KAAK,QAAA,MAAc,KAAK,QAAA,EAAW,QAAO;AAC9C,WAAO;AAAA,EAAA;AAGT,QAAM,QAAQ,OAAO,KAAK,IAAI;AAC9B,MAAI,MAAM,WAAW,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC7C,WAAO;AAAA,EAAA;AAGT,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QACE,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,MAAM,CAAC,CAAW,KAC9D,CAAC,OAAO,GAAG,KAAK,MAAM,CAAC,CAAY,GAAG,KAAK,MAAM,CAAC,CAAY,CAAC,GAC/D;AACA,aAAO;AAAA,IAAA;AAAA,EACT;AAEF,SAAO;AACT;;;;;;;;;"} |
@@ -44,2 +44,6 @@ import { ref, watch, toRaw, readonly } from "vue-demi"; | ||
| } | ||
| if (objA instanceof Date && objB instanceof Date) { | ||
| if (objA.getTime() !== objB.getTime()) return false; | ||
| return true; | ||
| } | ||
| const keysA = Object.keys(objA); | ||
@@ -46,0 +50,0 @@ if (keysA.length !== Object.keys(objB).length) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { readonly, ref, toRaw, watch } from 'vue-demi'\nimport type { Derived, Store } from '@tanstack/store'\nimport type { Ref } from 'vue-demi'\n\nexport * from '@tanstack/store'\n\n/**\n * @private\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Derived<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any> | Derived<TState, any>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Readonly<Ref<TSelected>> {\n const slice = ref(selector(store.state)) as Ref<TSelected>\n\n watch(\n () => store,\n (value, _oldValue, onCleanup) => {\n const unsub = value.subscribe(() => {\n const data = selector(value.state)\n if (shallow(toRaw(slice.value), data)) {\n return\n }\n slice.value = data\n })\n\n onCleanup(() => {\n unsub()\n })\n },\n { immediate: true },\n )\n\n return readonly(slice) as never\n}\n\nexport function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false\n for (const [k, v] of objA) {\n if (!objB.has(k) || !Object.is(v, objB.get(k))) return false\n }\n return true\n }\n\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false\n for (const v of objA) {\n if (!objB.has(v)) return false\n }\n return true\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":[],"mappings":";;AAmBO,SAAS,SACd,OACA,WAAkD,CAAC,MAAM,GAC/B;AAC1B,QAAM,QAAQ,IAAI,SAAS,MAAM,KAAK,CAAC;AAEvC;AAAA,IACE,MAAM;AAAA,IACN,CAAC,OAAO,WAAW,cAAc;AAC/B,YAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,cAAM,OAAO,SAAS,MAAM,KAAK;AACjC,YAAI,QAAQ,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG;AACrC;AAAA,QAAA;AAEF,cAAM,QAAQ;AAAA,MAAA,CACf;AAED,gBAAU,MAAM;AACd,cAAA;AAAA,MAAM,CACP;AAAA,IAAA;AAAA,IAEH,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpB,SAAO,SAAS,KAAK;AACvB;AAEO,SAAS,QAAW,MAAS,MAAS;AAC3C,MAAI,OAAO,GAAG,MAAM,IAAI,GAAG;AACzB,WAAO;AAAA,EAAA;AAGT,MACE,OAAO,SAAS,YAChB,SAAS,QACT,OAAO,SAAS,YAChB,SAAS,MACT;AACA,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,CAAC,GAAG,CAAC,KAAK,MAAM;AACzB,UAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,EAAG,QAAO;AAAA,IAAA;AAEzD,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,KAAK,MAAM;AACpB,UAAI,CAAC,KAAK,IAAI,CAAC,EAAG,QAAO;AAAA,IAAA;AAE3B,WAAO;AAAA,EAAA;AAGT,QAAM,QAAQ,OAAO,KAAK,IAAI;AAC9B,MAAI,MAAM,WAAW,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC7C,WAAO;AAAA,EAAA;AAGT,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QACE,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,MAAM,CAAC,CAAW,KAC9D,CAAC,OAAO,GAAG,KAAK,MAAM,CAAC,CAAY,GAAG,KAAK,MAAM,CAAC,CAAY,CAAC,GAC/D;AACA,aAAO;AAAA,IAAA;AAAA,EACT;AAEF,SAAO;AACT;"} | ||
| {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { readonly, ref, toRaw, watch } from 'vue-demi'\nimport type { Derived, Store } from '@tanstack/store'\nimport type { Ref } from 'vue-demi'\n\nexport * from '@tanstack/store'\n\n/**\n * @private\n */\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Derived<TState, any>,\n selector?: (state: NoInfer<TState>) => TSelected,\n): Readonly<Ref<TSelected>>\nexport function useStore<TState, TSelected = NoInfer<TState>>(\n store: Store<TState, any> | Derived<TState, any>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Readonly<Ref<TSelected>> {\n const slice = ref(selector(store.state)) as Ref<TSelected>\n\n watch(\n () => store,\n (value, _oldValue, onCleanup) => {\n const unsub = value.subscribe(() => {\n const data = selector(value.state)\n if (shallow(toRaw(slice.value), data)) {\n return\n }\n slice.value = data\n })\n\n onCleanup(() => {\n unsub()\n })\n },\n { immediate: true },\n )\n\n return readonly(slice) as never\n}\n\nexport function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false\n for (const [k, v] of objA) {\n if (!objB.has(k) || !Object.is(v, objB.get(k))) return false\n }\n return true\n }\n\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false\n for (const v of objA) {\n if (!objB.has(v)) return false\n }\n return true\n }\n\n if (objA instanceof Date && objB instanceof Date) {\n if (objA.getTime() !== objB.getTime()) return false\n return true\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":[],"mappings":";;AAmBO,SAAS,SACd,OACA,WAAkD,CAAC,MAAM,GAC/B;AAC1B,QAAM,QAAQ,IAAI,SAAS,MAAM,KAAK,CAAC;AAEvC;AAAA,IACE,MAAM;AAAA,IACN,CAAC,OAAO,WAAW,cAAc;AAC/B,YAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,cAAM,OAAO,SAAS,MAAM,KAAK;AACjC,YAAI,QAAQ,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG;AACrC;AAAA,QAAA;AAEF,cAAM,QAAQ;AAAA,MAAA,CACf;AAED,gBAAU,MAAM;AACd,cAAA;AAAA,MAAM,CACP;AAAA,IAAA;AAAA,IAEH,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpB,SAAO,SAAS,KAAK;AACvB;AAEO,SAAS,QAAW,MAAS,MAAS;AAC3C,MAAI,OAAO,GAAG,MAAM,IAAI,GAAG;AACzB,WAAO;AAAA,EAAA;AAGT,MACE,OAAO,SAAS,YAChB,SAAS,QACT,OAAO,SAAS,YAChB,SAAS,MACT;AACA,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,CAAC,GAAG,CAAC,KAAK,MAAM;AACzB,UAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,EAAG,QAAO;AAAA,IAAA;AAEzD,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,OAAO,gBAAgB,KAAK;AAC9C,QAAI,KAAK,SAAS,KAAK,KAAM,QAAO;AACpC,eAAW,KAAK,MAAM;AACpB,UAAI,CAAC,KAAK,IAAI,CAAC,EAAG,QAAO;AAAA,IAAA;AAE3B,WAAO;AAAA,EAAA;AAGT,MAAI,gBAAgB,QAAQ,gBAAgB,MAAM;AAChD,QAAI,KAAK,QAAA,MAAc,KAAK,QAAA,EAAW,QAAO;AAC9C,WAAO;AAAA,EAAA;AAGT,QAAM,QAAQ,OAAO,KAAK,IAAI;AAC9B,MAAI,MAAM,WAAW,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC7C,WAAO;AAAA,EAAA;AAGT,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QACE,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,MAAM,CAAC,CAAW,KAC9D,CAAC,OAAO,GAAG,KAAK,MAAM,CAAC,CAAY,GAAG,KAAK,MAAM,CAAC,CAAY,CAAC,GAC/D;AACA,aAAO;AAAA,IAAA;AAAA,EACT;AAEF,SAAO;AACT;"} |
+1
-1
| { | ||
| "name": "@tanstack/vue-store", | ||
| "version": "0.7.2", | ||
| "version": "0.7.3", | ||
| "description": "Framework agnostic type-safe store w/ reactive framework adapters", | ||
@@ -5,0 +5,0 @@ "author": "Tanner Linsley", |
+5
-0
@@ -77,2 +77,7 @@ import { readonly, ref, toRaw, watch } from 'vue-demi' | ||
| if (objA instanceof Date && objB instanceof Date) { | ||
| if (objA.getTime() !== objB.getTime()) return false | ||
| return true | ||
| } | ||
| const keysA = Object.keys(objA) | ||
@@ -79,0 +84,0 @@ if (keysA.length !== Object.keys(objB).length) { |
18857
4.83%225
5.63%