@muze-nl/od-jsontag 0.2.6 → 0.2.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/parse.mjs +17 -18
- package/src/serialize.mjs +12 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muze-nl/od-jsontag",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.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/parse.mjs
CHANGED
|
@@ -825,17 +825,10 @@ export default function parse(input, meta, immutable=true)
|
|
|
825
825
|
},
|
|
826
826
|
handler: {
|
|
827
827
|
get(target, prop, receiver) {
|
|
828
|
-
firstParse(target, receiver)
|
|
829
828
|
switch(prop) {
|
|
830
829
|
case resultSet:
|
|
831
830
|
return meta.resultArray
|
|
832
831
|
break;
|
|
833
|
-
case source:
|
|
834
|
-
if (meta.access && !meta.access(target, prop, 'get')) {
|
|
835
|
-
return undefined
|
|
836
|
-
}
|
|
837
|
-
return target
|
|
838
|
-
break
|
|
839
832
|
case isProxy:
|
|
840
833
|
return true
|
|
841
834
|
break
|
|
@@ -860,6 +853,15 @@ export default function parse(input, meta, immutable=true)
|
|
|
860
853
|
case isChanged:
|
|
861
854
|
return target[isChanged]
|
|
862
855
|
break
|
|
856
|
+
}
|
|
857
|
+
firstParse(target, receiver)
|
|
858
|
+
switch(prop) {
|
|
859
|
+
case source:
|
|
860
|
+
if (meta.access && !meta.access(target, prop, 'get')) {
|
|
861
|
+
return undefined
|
|
862
|
+
}
|
|
863
|
+
return target
|
|
864
|
+
break
|
|
863
865
|
default:
|
|
864
866
|
if (meta.access && !meta.access(target, prop, 'get')) {
|
|
865
867
|
return undefined
|
|
@@ -876,7 +878,6 @@ export default function parse(input, meta, immutable=true)
|
|
|
876
878
|
if (immutable && prop!==resultSet && prop!==source) {
|
|
877
879
|
throw new Error('dataspace is immutable')
|
|
878
880
|
}
|
|
879
|
-
firstParse(target, receiver)
|
|
880
881
|
switch(prop) {
|
|
881
882
|
case isChanged:
|
|
882
883
|
break
|
|
@@ -888,18 +889,16 @@ export default function parse(input, meta, immutable=true)
|
|
|
888
889
|
return true
|
|
889
890
|
break
|
|
890
891
|
case resultSet:
|
|
891
|
-
break
|
|
892
|
-
default:
|
|
893
|
-
if (meta.access && !meta.access(target, prop, 'set')) {
|
|
894
|
-
return undefined
|
|
895
|
-
}
|
|
896
|
-
if (JSONTag.getType(value)==='object' && !value[isProxy]) {
|
|
897
|
-
value = getNewValueProxy(value)
|
|
898
|
-
}
|
|
899
|
-
target[prop] = value
|
|
900
|
-
|
|
901
892
|
break
|
|
902
893
|
}
|
|
894
|
+
firstParse(target, receiver)
|
|
895
|
+
if (meta.access && !meta.access(target, prop, 'set')) {
|
|
896
|
+
return undefined
|
|
897
|
+
}
|
|
898
|
+
if (JSONTag.getType(value)==='object' && !value[isProxy]) {
|
|
899
|
+
value = getNewValueProxy(value)
|
|
900
|
+
}
|
|
901
|
+
target[prop] = value
|
|
903
902
|
target[isChanged] = true
|
|
904
903
|
return true
|
|
905
904
|
},
|
package/src/serialize.mjs
CHANGED
|
@@ -16,7 +16,7 @@ function stringToSAB(strData) {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export default function serialize(value, options={}) {
|
|
19
|
-
let resultArray =
|
|
19
|
+
let resultArray = false
|
|
20
20
|
let references = new WeakMap()
|
|
21
21
|
|
|
22
22
|
if (options.meta) {
|
|
@@ -26,6 +26,15 @@ export default function serialize(value, options={}) {
|
|
|
26
26
|
if (!options.meta.index.id) {
|
|
27
27
|
options.meta.index.id = new Map()
|
|
28
28
|
}
|
|
29
|
+
if (options.meta.resultArray) {
|
|
30
|
+
resultArray = options.meta.resultArray
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!resultArray) {
|
|
34
|
+
resultArray = value[resultSet]
|
|
35
|
+
}
|
|
36
|
+
if (!resultArray) {
|
|
37
|
+
resultArray = []
|
|
29
38
|
}
|
|
30
39
|
|
|
31
40
|
function stringifyValue(value, inarray=false, current) {
|
|
@@ -149,9 +158,7 @@ export default function serialize(value, options={}) {
|
|
|
149
158
|
return u8arr
|
|
150
159
|
}
|
|
151
160
|
|
|
152
|
-
if (value[resultSet]) {
|
|
153
|
-
resultArray = value[resultSet].slice()
|
|
154
|
-
} else {
|
|
161
|
+
if (!value[resultSet]) {
|
|
155
162
|
resultArray.push(value)
|
|
156
163
|
}
|
|
157
164
|
let currentSource = 0
|
|
@@ -185,6 +192,7 @@ export default function serialize(value, options={}) {
|
|
|
185
192
|
} else {
|
|
186
193
|
skipCount++
|
|
187
194
|
}
|
|
195
|
+
|
|
188
196
|
currentSource++
|
|
189
197
|
}
|
|
190
198
|
let arr = result.map(encode)
|