1- var TJS = ( function ( Primitive , primitive ) {
1+ var TeleportJS = ( function ( Primitive , primitive ) {
22
33 var REF_KEY_PREFIX = '_' ;
44 var REF_SEPARATOR = ';' ;
55 var SINGLE_REF = REF_KEY_PREFIX + '0' ;
66 var REF_PREFIX = {
7- undefined : 'u' ,
8- number : 'n' ,
9- bigint : 'b' ,
10- symbol : 's' ,
11- RegExp : 'R' ,
12- Map : 'M' ,
13- Set : 'S'
7+ undefined : 'u' ,
8+ number : 'n' ,
9+ bigint : 'b' ,
10+ symbol : 's' ,
11+ RegExp : 'R' ,
12+ Map : 'M' ,
13+ Set : 'S' ,
14+ Int8Array : 'A' ,
15+ Uint8Array : 'B' ,
16+ Uint8ClampedArray : 'C' ,
17+ Int16Array : 'D' ,
18+ Uint16Array : 'E' ,
19+ Int32Array : 'F' ,
20+ Uint32Array : 'G' ,
21+ Float32Array : 'H' ,
22+ Float64Array : 'I'
1423 } ;
1524
1625 /*!
@@ -19,7 +28,7 @@ var TJS = (function (Primitive, primitive) {
1928 * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
2029 */
2130
22- var TJS = {
31+ var TeleportJS = {
2332
2433 parse : function parse ( text , reviver ) {
2534 var input = JSON . parse ( text , Primitives ) . map ( primitives ) ;
@@ -81,7 +90,7 @@ var TJS = (function (Primitive, primitive) {
8190
8291 } ;
8392
84- return TJS ;
93+ return TeleportJS ;
8594
8695 function noop ( key , value ) {
8796 return value ;
@@ -108,10 +117,37 @@ var TJS = (function (Primitive, primitive) {
108117 refs [ index ] = new RegExp ( parts [ 1 ] , parts [ 2 ] ) ;
109118 break ;
110119 case REF_PREFIX . Map :
111- refs [ index ] = new Map ( TJS . parse ( value ) ) ;
120+ refs [ index ] = new Map ( TeleportJS . parse ( value ) ) ;
112121 break ;
113122 case REF_PREFIX . Set :
114- refs [ index ] = new Set ( TJS . parse ( value ) ) ;
123+ refs [ index ] = new Set ( TeleportJS . parse ( value ) ) ;
124+ break ;
125+ case REF_PREFIX . Int8Array :
126+ refs [ index ] = new Int8Array ( JSON . parse ( value ) ) ;
127+ break ;
128+ case REF_PREFIX . Uint8Array :
129+ refs [ index ] = new Uint8Array ( JSON . parse ( value ) ) ;
130+ break ;
131+ case REF_PREFIX . Uint8ClampedArray :
132+ refs [ index ] = new Uint8ClampedArray ( JSON . parse ( value ) ) ;
133+ break ;
134+ case REF_PREFIX . Int16Array :
135+ refs [ index ] = new Int16Array ( JSON . parse ( value ) ) ;
136+ break ;
137+ case REF_PREFIX . Uint16Array :
138+ refs [ index ] = new Uint16Array ( JSON . parse ( value ) ) ;
139+ break ;
140+ case REF_PREFIX . Int32Array :
141+ refs [ index ] = new Int32Array ( JSON . parse ( value ) ) ;
142+ break ;
143+ case REF_PREFIX . Uint32Array :
144+ refs [ index ] = new Uint32Array ( JSON . parse ( value ) ) ;
145+ break ;
146+ case REF_PREFIX . Float32Array :
147+ refs [ index ] = new Float32Array ( JSON . parse ( value ) ) ;
148+ break ;
149+ case REF_PREFIX . Float64Array :
150+ refs [ index ] = new Float64Array ( JSON . parse ( value ) ) ;
115151 break ;
116152 }
117153
@@ -177,22 +213,61 @@ var TJS = (function (Primitive, primitive) {
177213 after = REF_PREFIX . symbol + REF_SEPARATOR + description . substring ( 7 , description . length - 1 ) ;
178214 break ;
179215 case 'object' :
180- if ( value instanceof RegExp ) {
216+ if ( value === null ) {
217+ break ;
218+ }
219+ else if ( value instanceof RegExp ) {
181220 after = REF_PREFIX . RegExp + REF_SEPARATOR + Primitive ( value ) ;
182221 }
183222 else if ( value instanceof Map ) {
184223 var m = [ ] ;
185224 for ( var i of value . entries ( ) ) {
186225 m . push ( i ) ;
187226 }
188- after = REF_PREFIX . Map + REF_SEPARATOR + TJS . stringify ( m ) ;
227+ after = REF_PREFIX . Map + REF_SEPARATOR + TeleportJS . stringify ( m ) ;
189228 }
190229 else if ( value instanceof Set ) {
191230 var s = [ ] ;
192231 for ( var i of value . values ( ) ) {
193232 s . push ( i ) ;
194233 }
195- after = REF_PREFIX . Set + REF_SEPARATOR + TJS . stringify ( s ) ;
234+ after = REF_PREFIX . Set + REF_SEPARATOR + TeleportJS . stringify ( s ) ;
235+ }
236+ else if ( value instanceof Int8Array ) {
237+ after = REF_PREFIX . Int8Array + REF_SEPARATOR +
238+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
239+ }
240+ else if ( value instanceof Uint8Array ) {
241+ after = REF_PREFIX . Uint8Array + REF_SEPARATOR +
242+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
243+ }
244+ else if ( value instanceof Uint8ClampedArray ) {
245+ after = REF_PREFIX . Uint8ClampedArray + REF_SEPARATOR +
246+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
247+ }
248+ else if ( value instanceof Int16Array ) {
249+ after = REF_PREFIX . Int16Array + REF_SEPARATOR +
250+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
251+ }
252+ else if ( value instanceof Uint16Array ) {
253+ after = REF_PREFIX . Uint16Array + REF_SEPARATOR +
254+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
255+ }
256+ else if ( value instanceof Int32Array ) {
257+ after = REF_PREFIX . Int32Array + REF_SEPARATOR +
258+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
259+ }
260+ else if ( value instanceof Uint32Array ) {
261+ after = REF_PREFIX . Uint32Array + REF_SEPARATOR +
262+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
263+ }
264+ else if ( value instanceof Float32Array ) {
265+ after = REF_PREFIX . Float32Array + REF_SEPARATOR +
266+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
267+ }
268+ else if ( value instanceof Float64Array ) {
269+ after = REF_PREFIX . Float64Array + REF_SEPARATOR +
270+ JSON . stringify ( Array . apply ( [ ] , value ) ) ;
196271 }
197272 break ;
198273 }
@@ -225,6 +300,6 @@ var TJS = (function (Primitive, primitive) {
225300 }
226301
227302} ( String , 'string' ) ) ;
228- export default TJS ;
229- export var parse = TJS . parse ;
230- export var stringify = TJS . stringify ;
303+ export default TeleportJS ;
304+ export var parse = TeleportJS . parse ;
305+ export var stringify = TeleportJS . stringify ;
0 commit comments