@muze-nl/simplystore 0.6.1 → 0.6.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/package.json +1 -1
- package/src/fastParse.mjs +44 -37
package/package.json
CHANGED
package/src/fastParse.mjs
CHANGED
|
@@ -599,7 +599,12 @@ export default function parse(input, meta, immutable=true)
|
|
|
599
599
|
next(':')
|
|
600
600
|
val = value()
|
|
601
601
|
if (!enumerable) {
|
|
602
|
-
Object.defineProperty(object,key, {
|
|
602
|
+
Object.defineProperty(object, key, {
|
|
603
|
+
configurable: true, //important, must be true, otherwise Proxies cannot use it
|
|
604
|
+
writable: true, // handle immutability in the Proxy traps
|
|
605
|
+
enumerable: false,
|
|
606
|
+
value: val
|
|
607
|
+
})
|
|
603
608
|
} else {
|
|
604
609
|
object[key] = val
|
|
605
610
|
}
|
|
@@ -679,7 +684,6 @@ export default function parse(input, meta, immutable=true)
|
|
|
679
684
|
return true
|
|
680
685
|
} else {
|
|
681
686
|
if (Array.isArray(target[prop])) {
|
|
682
|
-
// console.log('proxying array with newArrayHandler')
|
|
683
687
|
return new Proxy(target[prop], handlers.newArrayHandler)
|
|
684
688
|
}
|
|
685
689
|
return target[prop]
|
|
@@ -720,7 +724,6 @@ export default function parse(input, meta, immutable=true)
|
|
|
720
724
|
break
|
|
721
725
|
default:
|
|
722
726
|
if (Array.isArray(target[prop])) {
|
|
723
|
-
// console.log('proxying array with newArrayHandler')
|
|
724
727
|
return new Proxy(target[prop], handlers.newArrayHandler)
|
|
725
728
|
}
|
|
726
729
|
return target[prop]
|
|
@@ -742,27 +745,22 @@ export default function parse(input, meta, immutable=true)
|
|
|
742
745
|
if (immutable) {
|
|
743
746
|
throw new Error('dataspace is immutable')
|
|
744
747
|
}
|
|
745
|
-
// console.log('getting array function '+prop)
|
|
746
748
|
}
|
|
747
749
|
return (...args) => {
|
|
748
|
-
// console.log('calling array function '+prop)
|
|
749
750
|
args = args.map(arg => {
|
|
750
751
|
if (JSONTag.getType(arg)==='object' && !arg[isProxy]) {
|
|
751
|
-
console.log('proxying arg')
|
|
752
752
|
arg = getNewValueProxy(arg)
|
|
753
753
|
}
|
|
754
754
|
return arg
|
|
755
755
|
})
|
|
756
756
|
target[parent][isChanged] = true // incorrect target for isChanged...
|
|
757
757
|
let result = target[prop].apply(target, args)
|
|
758
|
-
// console.log('target',target,result)
|
|
759
758
|
return result
|
|
760
759
|
}
|
|
761
760
|
} else if (prop===isChanged) {
|
|
762
761
|
return target[parent][isChanged]
|
|
763
762
|
} else {
|
|
764
|
-
if (
|
|
765
|
-
// console.log('proxying array with arrayHandler')
|
|
763
|
+
if (Array.isArray(target[prop])) {
|
|
766
764
|
target[prop][parent] = target[parent]
|
|
767
765
|
return new Proxy(target[prop], handlers.arrayHandler)
|
|
768
766
|
}
|
|
@@ -790,15 +788,6 @@ export default function parse(input, meta, immutable=true)
|
|
|
790
788
|
delete target[prop]
|
|
791
789
|
target[parent][isChanged] = true
|
|
792
790
|
return true
|
|
793
|
-
},
|
|
794
|
-
ownKeys: (target) => {
|
|
795
|
-
return Reflect.ownKeys(target)
|
|
796
|
-
},
|
|
797
|
-
getOwnPropertyDescriptor: (target, prop) => {
|
|
798
|
-
return {
|
|
799
|
-
enumerable: true,
|
|
800
|
-
configurable: true
|
|
801
|
-
}
|
|
802
791
|
}
|
|
803
792
|
},
|
|
804
793
|
handler: {
|
|
@@ -832,8 +821,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
832
821
|
return target[isChanged]
|
|
833
822
|
break
|
|
834
823
|
default:
|
|
835
|
-
if (
|
|
836
|
-
// console.log('proxying array with arrayHandler')
|
|
824
|
+
if (Array.isArray(target[prop])) {
|
|
837
825
|
target[prop][parent] = target
|
|
838
826
|
return new Proxy(target[prop], handlers.arrayHandler)
|
|
839
827
|
}
|
|
@@ -842,32 +830,51 @@ export default function parse(input, meta, immutable=true)
|
|
|
842
830
|
}
|
|
843
831
|
},
|
|
844
832
|
set(target, prop, value) {
|
|
845
|
-
if (
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
833
|
+
if (immutable) {
|
|
834
|
+
throw new Error('dataspace is immutable')
|
|
835
|
+
}
|
|
836
|
+
firstParse(target)
|
|
837
|
+
if (prop!==isChanged) {
|
|
838
|
+
if (JSONTag.getType(value)==='object' && !value[isProxy]) {
|
|
839
|
+
value = getNewValueProxy(value)
|
|
852
840
|
}
|
|
853
|
-
target[
|
|
854
|
-
return true
|
|
841
|
+
target[prop] = value
|
|
855
842
|
}
|
|
843
|
+
target[isChanged] = true
|
|
844
|
+
return true
|
|
856
845
|
},
|
|
857
|
-
deleteProperty
|
|
858
|
-
if (
|
|
859
|
-
|
|
860
|
-
delete target[prop]
|
|
861
|
-
target[isChanged] = true
|
|
862
|
-
return true
|
|
846
|
+
deleteProperty(target, prop) {
|
|
847
|
+
if (immutable) {
|
|
848
|
+
throw new Error('dataspace is immutable')
|
|
863
849
|
}
|
|
850
|
+
firstParse(target)
|
|
851
|
+
delete target[prop]
|
|
852
|
+
target[isChanged] = true
|
|
853
|
+
return true
|
|
864
854
|
},
|
|
865
|
-
|
|
855
|
+
ownKeys(target) {
|
|
866
856
|
firstParse(target)
|
|
867
857
|
return Reflect.ownKeys(target)
|
|
858
|
+
},
|
|
859
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
860
|
+
firstParse(target)
|
|
861
|
+
return Reflect.getOwnPropertyDescriptor(target, prop)
|
|
862
|
+
},
|
|
863
|
+
defineProperty(target, prop, descriptor) {
|
|
864
|
+
if (immutable) {
|
|
865
|
+
throw new Error('dataspace is immutable')
|
|
866
|
+
}
|
|
867
|
+
firstParse(target)
|
|
868
|
+
Object.defineProperty(target, prop, descriptor)
|
|
869
|
+
},
|
|
870
|
+
has(target, prop) {
|
|
871
|
+
firstParse()
|
|
872
|
+
return prop in target
|
|
873
|
+
},
|
|
874
|
+
setPrototypeOf(target,proto) {
|
|
875
|
+
throw new Error('changing prototypes is not supported')
|
|
868
876
|
}
|
|
869
877
|
}
|
|
870
|
-
|
|
871
878
|
}
|
|
872
879
|
|
|
873
880
|
const firstParse = function(target) {
|