@muze-nl/od-jsontag 0.1.6 → 0.1.7
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/jsontag.mjs +3 -0
- package/src/parse.mjs +15 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muze-nl/od-jsontag",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "On Demand JSONTag: parse/serialize large datastructures on demand, useful for sharing data between threads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Auke van Slooten <auke@muze.nl>",
|
package/src/jsontag.mjs
CHANGED
package/src/parse.mjs
CHANGED
|
@@ -14,6 +14,15 @@ function stringToSAB(strData) {
|
|
|
14
14
|
return uint8sab
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
function JSONTagProxy(target, handler) {
|
|
18
|
+
let p = new Proxy(target, handler)
|
|
19
|
+
let a = JSONTag.getAttributes(target)
|
|
20
|
+
JSONTag.setAttributes(target, a)
|
|
21
|
+
let t = JSONTag.getType(target)
|
|
22
|
+
JSONTag.setType(target, t)
|
|
23
|
+
return p
|
|
24
|
+
}
|
|
25
|
+
|
|
17
26
|
export default function parse(input, meta, immutable=true)
|
|
18
27
|
{
|
|
19
28
|
if (!meta) {
|
|
@@ -691,7 +700,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
691
700
|
return undefined
|
|
692
701
|
}
|
|
693
702
|
if (Array.isArray(target[prop])) {
|
|
694
|
-
return
|
|
703
|
+
return JSONTagProxy(target[prop], handlers.newArrayHandler)
|
|
695
704
|
}
|
|
696
705
|
return target[prop]
|
|
697
706
|
}
|
|
@@ -736,7 +745,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
736
745
|
return undefined
|
|
737
746
|
}
|
|
738
747
|
if (Array.isArray(target[prop])) {
|
|
739
|
-
return
|
|
748
|
+
return JSONTagProxy(target[prop], handlers.newArrayHandler)
|
|
740
749
|
}
|
|
741
750
|
return target[prop]
|
|
742
751
|
break
|
|
@@ -780,7 +789,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
780
789
|
}
|
|
781
790
|
if (Array.isArray(target[prop])) {
|
|
782
791
|
target[prop][parent] = target[parent]
|
|
783
|
-
return
|
|
792
|
+
return JSONTagProxy(target[prop], handlers.arrayHandler)
|
|
784
793
|
}
|
|
785
794
|
return target[prop]
|
|
786
795
|
}
|
|
@@ -851,7 +860,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
851
860
|
}
|
|
852
861
|
if (Array.isArray(target[prop])) {
|
|
853
862
|
target[prop][parent] = target
|
|
854
|
-
return
|
|
863
|
+
return JSONTagProxy(target[prop], handlers.arrayHandler)
|
|
855
864
|
}
|
|
856
865
|
return target[prop]
|
|
857
866
|
break
|
|
@@ -929,7 +938,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
929
938
|
resultArray.push('')
|
|
930
939
|
value[getIndex] = index
|
|
931
940
|
makeChildProxies(value)
|
|
932
|
-
let result =
|
|
941
|
+
let result = JSONTagProxy(value, handlers.newValueHandler)
|
|
933
942
|
resultArray[index] = result
|
|
934
943
|
return result
|
|
935
944
|
}
|
|
@@ -949,7 +958,7 @@ export default function parse(input, meta, immutable=true)
|
|
|
949
958
|
next()
|
|
950
959
|
// newValueHandler makes sure that value[getBuffer] runs stringify
|
|
951
960
|
// arrayHandler makes sure that changes in the array set targetIsChanged to true
|
|
952
|
-
return
|
|
961
|
+
return JSONTagProxy(cache, handlers.handler)
|
|
953
962
|
}
|
|
954
963
|
|
|
955
964
|
value = function(ob={})
|