UNPKG

1.69 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _typeof2 = require('babel-runtime/helpers/typeof');
6
7var _typeof3 = _interopRequireDefault(_typeof2);
8
9exports.deserialize = deserialize;
10exports.serialize = serialize;
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14var PRIMITIVES = ['string', 'number', 'boolean', 'function', 'symbol'];
15
16function modifyObject(doc) {
17 Object.keys(doc).forEach(function (key) {
18 doc[key] = deserialize(doc[key]);
19 });
20 return doc;
21}
22
23function deserialize(value) {
24 if (value == null) {
25 return value;
26 } else if (PRIMITIVES.indexOf(typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) !== -1) {
27 return value;
28 } else if (Array.isArray(value)) {
29 return value.map(deserialize);
30 } else if (value.$reql_type$ === 'TIME') {
31 var date = new Date();
32 date.setTime(value.epoch_time * 1000);
33 return date;
34 } else {
35 return modifyObject(value);
36 }
37}
38
39function jsonifyObject(doc) {
40 Object.keys(doc).forEach(function (key) {
41 doc[key] = serialize(doc[key]);
42 });
43 return doc;
44}
45
46function serialize(value) {
47 if (value == null) {
48 return value;
49 } else if (PRIMITIVES.indexOf(typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) !== -1) {
50 return value;
51 } else if (Array.isArray(value)) {
52 return value.map(serialize);
53 } else if (value instanceof Date) {
54 return {
55 $reql_type$: 'TIME',
56 epoch_time: value.getTime() / 1000,
57 // Rethink will serialize this as "+00:00", but accepts Z
58 timezone: 'Z'
59 };
60 } else {
61 return jsonifyObject(value);
62 }
63}
64//# sourceMappingURL=serialization.js.map
\No newline at end of file