UNPKG

1.76 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.getOne = getOne;
7
8var _lodash = require('lodash');
9
10var _lodash2 = _interopRequireDefault(_lodash);
11
12var _rio = require('../rio');
13
14var _rio2 = _interopRequireDefault(_rio);
15
16var _ReduxApiStateDenormalizer = require('./ReduxApiStateDenormalizer');
17
18var _schemaConfig = require('../schemaConfig');
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22var emptyObject = {};
23Object.freeze(emptyObject);
24
25/**
26 * Connects rio configurations with denormalizer to simplify denormalization
27 * of normalized data in state.
28 * @param one - RIO one entity or primitive value
29 * @param state
30 * @param schema
31 * @returns {{}}
32 */
33function getOne(one, state) {
34 var schema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
35
36 if (_lodash2.default.isUndefined(one) || _lodash2.default.isNull(one)) {
37 // Always return same reference.
38 return emptyObject;
39 }
40 if (!_lodash2.default.isPlainObject(one) && !_lodash2.default.isString(one) && !_lodash2.default.isNumber(one)) {
41 throw new Error('One must be object or primitive value.');
42 }
43 if (!_lodash2.default.isObject(state)) {
44 throw new Error('State argument is invalid, should be an object.');
45 }
46
47 var resolvedSchema = (0, _schemaConfig.resolveSchemaName)(one, schema);
48
49 var schemaPaths = _rio2.default.schemaPaths;
50 if (!schemaPaths[resolvedSchema]) {
51 throw new Error('Storage for resolved schema ' + resolvedSchema + ' doesn\'t exists in state.');
52 }
53 var storageMap = (0, _ReduxApiStateDenormalizer.createSchemasMap)(state, schemaPaths);
54
55 return _rio2.default.denormalizer.denormalizeOne(one, storageMap, resolvedSchema);
56}
\No newline at end of file