Skip to content

Commit 52e1211

Browse files
committed
Add support for Date and Buffer
1 parent 7da5d0d commit 52e1211

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

index.js

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@ var TeleportJS = (function (Primitive, primitive) {
88
number: 'n',
99
bigint: 'b',
1010
symbol: 's',
11-
RegExp: 'R',
1211
Map: 'M',
1312
Set: 'S',
14-
Int8Array: 'A',
15-
Uint8Array: 'B',
16-
Uint8ClampedArray: 'C',
17-
Int16Array: 'D',
18-
Uint16Array: 'E',
13+
Date: 'D',
14+
RegExp: 'R',
15+
Buffer: 'B',
16+
Int8Array: 'H',
17+
Uint8Array: 'I',
18+
Uint8ClampedArray: 'J',
19+
Int16Array: 'P',
20+
Uint16Array: 'Q',
1921
Int32Array: 'F',
2022
Uint32Array: 'G',
21-
Float32Array: 'H',
22-
Float64Array: 'I'
23+
Float32Array: 'K',
24+
Float64Array: 'L'
2325
};
2426

2527
/*!
@@ -58,7 +60,7 @@ var TeleportJS = (function (Primitive, primitive) {
5860
i = +set(known, input, $.call({'': value}, '', value)),
5961
replace = function (key, value) {
6062
var after = $.call(this, key, value);
61-
var refIndex = setRefs(knownRefs, refs, after);
63+
var refIndex = setRefs(knownRefs, refs, key, after, this);
6264

6365
if (refIndex) {
6466
return refIndex;
@@ -116,6 +118,12 @@ var TeleportJS = (function (Primitive, primitive) {
116118
var parts = /\/(.*)\/(.*)/.exec(value);
117119
refs[index] = new RegExp(parts[1], parts[2]);
118120
break;
121+
case REF_PREFIX.Buffer:
122+
refs[index] = Buffer.from(JSON.parse(value));
123+
break;
124+
case REF_PREFIX.Date:
125+
refs[index] = new Date(value);
126+
break;
119127
case REF_PREFIX.Map:
120128
refs[index] = new Map(TeleportJS.parse(value));
121129
break;
@@ -192,10 +200,15 @@ var TeleportJS = (function (Primitive, primitive) {
192200
return index;
193201
}
194202

195-
function setRefs(known, refs, value) {
203+
function setRefs(known, refs, key, value, obj) {
196204
var after;
197205

198206
switch (typeof value) {
207+
case 'string':
208+
if (obj[key] instanceof Date) {
209+
after = REF_PREFIX.Date + REF_SEPARATOR + value;
210+
}
211+
break;
199212
case 'undefined':
200213
after = REF_PREFIX.undefined;
201214
break;
@@ -216,6 +229,9 @@ var TeleportJS = (function (Primitive, primitive) {
216229
if (value === null) {
217230
break;
218231
}
232+
else if (value.type === 'Buffer' && value.data && Buffer.isBuffer(obj[key])) {
233+
after = REF_PREFIX.Buffer + REF_SEPARATOR + JSON.stringify(value.data);
234+
}
219235
else if (value instanceof RegExp) {
220236
after = REF_PREFIX.RegExp + REF_SEPARATOR + Primitive(value);
221237
}

0 commit comments

Comments
 (0)