Passed
Push — master ( 746cb5...4ed6ec )
by Alberto
47s queued 11s
created

lib/RawData.js   A

Complexity

Total Complexity 20
Complexity/F 2.22

Size

Lines of Code 60
Function Count 9

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 20
eloc 51
mnd 11
bc 11
fnc 9
dl 0
loc 60
bpm 1.2222
cpm 2.2222
noi 10
c 0
b 0
f 0
rs 10
1
"use strict";
2
var __assign = (this && this.__assign) || function () {
3
    __assign = Object.assign || function(t) {
4
        for (var s, i = 1, n = arguments.length; i < n; i++) {
5
            s = arguments[i];
6
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
                t[p] = s[p];
8
        }
9
        return t;
10
    };
11
    return __assign.apply(this, arguments);
12
};
13
var __importStar = (this && this.__importStar) || function (mod) {
14
    if (mod && mod.__esModule) return mod;
15
    var result = {};
16
    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
17
    result["default"] = mod;
18
    return result;
19
};
20
Object.defineProperty(exports, "__esModule", { value: true });
21
var Either_1 = require("fp-ts/lib/Either");
22
var t = __importStar(require("io-ts"));
23
var NumberFromString_1 = require("io-ts-types/lib/NumberFromString");
24
var lodash_1 = require("lodash");
25
var JsonApiDataC_1 = require("./io/JsonApiDataC");
26
var ResourceIdentifierC_1 = require("./io/ResourceIdentifierC");
27
var ResourceIdentifier_1 = require("./ResourceIdentifier");
28
var fromRelationships = function (data, resources) {
29
    return Object.keys(data)
30
        .reduce(function (relationships, key) {
31
        var _a, _b, _c;
32
        var relationship = data[key];
33
        var strings = key.split('.');
34
        return lodash_1.merge(relationships, strings.length > 1
35
            ? (_a = {},
36
                _a[strings[0]] = fromRelationships((_b = {}, _b[strings.slice(1).join('.')] = relationship, _b), resources),
37
                _a) : (_c = {},
38
            _c[key] = (t.array(ResourceIdentifierC_1.ResourceIdentifierC).is(relationship.data)
39
                ? relationship.data
40
                    .map(function (identifier) { return fromJsonApiData(resources[ResourceIdentifier_1.ResourceIdentifier.iso.string.get(identifier)], resources); })
41
                : fromJsonApiData(resources[ResourceIdentifier_1.ResourceIdentifier.iso.string.get(relationship.data)], resources)),
42
            _c));
43
    }, {});
44
};
45
var fromJsonApiData = function (data, resources) {
46
    return lodash_1.merge(__assign(__assign({}, (ResourceIdentifierC_1.ResourceIdentifierC.is(data)
47
        ? {
48
            _type: data.type,
49
            _id: Either_1.getOrElse(function () { return data.id; })(NumberFromString_1.NumberFromString.decode(data.id))
50
        }
51
        : null)), data.attributes), fromRelationships(data.relationships || {}, resources));
52
};
53
var fromJson = function (u, resources) {
54
    return JsonApiDataC_1.JsonApiDataC.is(u)
55
        ? fromJsonApiData(u, resources)
56
        : u;
57
};
58
exports.RawData = {
59
    fromJson: fromJson
60
};
61