1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 |
|
5 | var _typeof2 = require('babel-runtime/helpers/typeof');
|
6 |
|
7 | var _typeof3 = _interopRequireDefault(_typeof2);
|
8 |
|
9 | exports.deserialize = deserialize;
|
10 | exports.serialize = serialize;
|
11 |
|
12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13 |
|
14 | var PRIMITIVES = ['string', 'number', 'boolean', 'function', 'symbol'];
|
15 |
|
16 | function modifyObject(doc) {
|
17 | Object.keys(doc).forEach(function (key) {
|
18 | doc[key] = deserialize(doc[key]);
|
19 | });
|
20 | return doc;
|
21 | }
|
22 |
|
23 | function 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 |
|
39 | function jsonifyObject(doc) {
|
40 | Object.keys(doc).forEach(function (key) {
|
41 | doc[key] = serialize(doc[key]);
|
42 | });
|
43 | return doc;
|
44 | }
|
45 |
|
46 | function 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 |
|
58 | timezone: 'Z'
|
59 | };
|
60 | } else {
|
61 | return jsonifyObject(value);
|
62 | }
|
63 | }
|
64 |
|
\ | No newline at end of file |