@alchemy_cms/json_api 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/alchemy-json_api.js +31 -28
- package/dist/deserialize.js +20 -21
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [v1.1.1](https://github.com/AlchemyCMS/alchemy-json_api/tree/v1.1.1) (2022-09-16)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/AlchemyCMS/alchemy-json_api/compare/v1.1.0...v1.1.1)
|
|
6
|
+
|
|
7
|
+
**Merged pull requests:**
|
|
8
|
+
|
|
9
|
+
- JS: Fix browser build [\#66](https://github.com/AlchemyCMS/alchemy-json_api/pull/66) ([tvdeyen](https://github.com/tvdeyen))
|
|
10
|
+
|
|
11
|
+
## [v1.1.0](https://github.com/AlchemyCMS/alchemy-json_api/tree/v1.1.0) (2022-09-16)
|
|
12
|
+
|
|
13
|
+
[Full Changelog](https://github.com/AlchemyCMS/alchemy-json_api/compare/v1.0.0...v1.1.0)
|
|
14
|
+
|
|
15
|
+
**Merged pull requests:**
|
|
16
|
+
|
|
17
|
+
- JS: Add support for deserializing camelCased attributes [\#65](https://github.com/AlchemyCMS/alchemy-json_api/pull/65) ([tvdeyen](https://github.com/tvdeyen))
|
|
18
|
+
|
|
3
19
|
## [v1.0.0](https://github.com/AlchemyCMS/alchemy-json_api/tree/v1.0.0) (2022-09-09)
|
|
4
20
|
|
|
5
21
|
[Full Changelog](https://github.com/AlchemyCMS/alchemy-json_api/compare/v0.26.0...v1.0.0)
|
package/dist/alchemy-json_api.js
CHANGED
|
@@ -8,17 +8,13 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
8
8
|
|
|
9
9
|
var structuredClone__default = /*#__PURE__*/_interopDefaultLegacy(structuredClone);
|
|
10
10
|
|
|
11
|
-
function deserialize(originalResponse
|
|
12
|
-
|
|
11
|
+
function deserialize(originalResponse) {
|
|
12
|
+
var response = structuredClone__default["default"](originalResponse);
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
options = {};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const included = response.included || [];
|
|
14
|
+
var included = response.included || [];
|
|
19
15
|
|
|
20
16
|
if (Array.isArray(response.data)) {
|
|
21
|
-
return response.data.map(data
|
|
17
|
+
return response.data.map(function (data) {
|
|
22
18
|
return parseJsonApiSimpleResourceData(data, included, false);
|
|
23
19
|
});
|
|
24
20
|
} else {
|
|
@@ -39,22 +35,25 @@ function parseJsonApiSimpleResourceData(data, included, useCache, options) {
|
|
|
39
35
|
return included.cached[data.type][data.id];
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
var attributes = data.attributes || {};
|
|
39
|
+
var resource = attributes;
|
|
44
40
|
resource.id = data.id;
|
|
45
41
|
included.cached[data.type][data.id] = resource;
|
|
46
42
|
|
|
47
43
|
if (data.relationships) {
|
|
48
|
-
for (
|
|
49
|
-
|
|
44
|
+
for (var _i = 0, _Object$keys = Object.keys(data.relationships); _i < _Object$keys.length; _i++) {
|
|
45
|
+
var relationName = _Object$keys[_i];
|
|
46
|
+
var relationRef = data.relationships[relationName];
|
|
50
47
|
|
|
51
48
|
if (Array.isArray(relationRef.data)) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
(function () {
|
|
50
|
+
var items = [];
|
|
51
|
+
relationRef.data.forEach(function (relationData) {
|
|
52
|
+
var item = findJsonApiIncluded(included, relationData.type, relationData.id);
|
|
53
|
+
items.push(item);
|
|
54
|
+
});
|
|
55
|
+
resource[relationName] = items;
|
|
56
|
+
})();
|
|
58
57
|
} else if (relationRef && relationRef.data) {
|
|
59
58
|
resource[relationName] = findJsonApiIncluded(included, relationRef.data.type, relationRef.data.id);
|
|
60
59
|
} else {
|
|
@@ -67,8 +66,8 @@ function parseJsonApiSimpleResourceData(data, included, useCache, options) {
|
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
function findJsonApiIncluded(included, type, id, options) {
|
|
70
|
-
|
|
71
|
-
included.forEach(item
|
|
69
|
+
var found = null;
|
|
70
|
+
included.forEach(function (item) {
|
|
72
71
|
if (item.type === type && item.id === id) {
|
|
73
72
|
found = parseJsonApiSimpleResourceData(item, included, true);
|
|
74
73
|
}
|
|
@@ -76,7 +75,7 @@ function findJsonApiIncluded(included, type, id, options) {
|
|
|
76
75
|
|
|
77
76
|
if (!found) {
|
|
78
77
|
found = {
|
|
79
|
-
id
|
|
78
|
+
id: id
|
|
80
79
|
};
|
|
81
80
|
}
|
|
82
81
|
|
|
@@ -84,16 +83,20 @@ function findJsonApiIncluded(included, type, id, options) {
|
|
|
84
83
|
}
|
|
85
84
|
|
|
86
85
|
function filterDeprecatedElements(elements) {
|
|
87
|
-
|
|
88
|
-
elements.forEach(element
|
|
89
|
-
var _element$nested_eleme, _element$essences;
|
|
86
|
+
var els = [];
|
|
87
|
+
elements.forEach(function (element) {
|
|
88
|
+
var _element$nested_eleme, _element$nestedElemen, _element$essences;
|
|
90
89
|
|
|
91
90
|
if (((_element$nested_eleme = element.nested_elements) === null || _element$nested_eleme === void 0 ? void 0 : _element$nested_eleme.length) > 0) {
|
|
92
91
|
element.nested_elements = filterDeprecatedElements(element.nested_elements);
|
|
93
92
|
}
|
|
94
93
|
|
|
94
|
+
if (((_element$nestedElemen = element.nestedElements) === null || _element$nestedElemen === void 0 ? void 0 : _element$nestedElemen.length) > 0) {
|
|
95
|
+
element.nestedElements = filterDeprecatedElements(element.nestedElements);
|
|
96
|
+
}
|
|
97
|
+
|
|
95
98
|
if (((_element$essences = element.essences) === null || _element$essences === void 0 ? void 0 : _element$essences.length) > 0) {
|
|
96
|
-
element.essences = element.essences.filter(essence
|
|
99
|
+
element.essences = element.essences.filter(function (essence) {
|
|
97
100
|
return !essence.deprecated;
|
|
98
101
|
});
|
|
99
102
|
}
|
|
@@ -107,14 +110,14 @@ function filterDeprecatedElements(elements) {
|
|
|
107
110
|
|
|
108
111
|
|
|
109
112
|
function deserializePage(pageData) {
|
|
110
|
-
|
|
113
|
+
var page = deserialize(pageData);
|
|
111
114
|
page.elements = filterDeprecatedElements(page.elements);
|
|
112
115
|
return page;
|
|
113
116
|
} // Returns deserialized pages without deprecated content
|
|
114
117
|
|
|
115
118
|
function deserializePages(pagesData) {
|
|
116
|
-
|
|
117
|
-
pages.forEach(page
|
|
119
|
+
var pages = deserialize(pagesData);
|
|
120
|
+
pages.forEach(function (page) {
|
|
118
121
|
page.elements = filterDeprecatedElements(page.elements);
|
|
119
122
|
});
|
|
120
123
|
return pages;
|
package/dist/deserialize.js
CHANGED
|
@@ -8,17 +8,13 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
8
8
|
|
|
9
9
|
var structuredClone__default = /*#__PURE__*/_interopDefaultLegacy(structuredClone);
|
|
10
10
|
|
|
11
|
-
function deserialize(originalResponse
|
|
12
|
-
|
|
11
|
+
function deserialize(originalResponse) {
|
|
12
|
+
var response = structuredClone__default["default"](originalResponse);
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
options = {};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const included = response.included || [];
|
|
14
|
+
var included = response.included || [];
|
|
19
15
|
|
|
20
16
|
if (Array.isArray(response.data)) {
|
|
21
|
-
return response.data.map(data
|
|
17
|
+
return response.data.map(function (data) {
|
|
22
18
|
return parseJsonApiSimpleResourceData(data, included, false);
|
|
23
19
|
});
|
|
24
20
|
} else {
|
|
@@ -39,22 +35,25 @@ function parseJsonApiSimpleResourceData(data, included, useCache, options) {
|
|
|
39
35
|
return included.cached[data.type][data.id];
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
var attributes = data.attributes || {};
|
|
39
|
+
var resource = attributes;
|
|
44
40
|
resource.id = data.id;
|
|
45
41
|
included.cached[data.type][data.id] = resource;
|
|
46
42
|
|
|
47
43
|
if (data.relationships) {
|
|
48
|
-
for (
|
|
49
|
-
|
|
44
|
+
for (var _i = 0, _Object$keys = Object.keys(data.relationships); _i < _Object$keys.length; _i++) {
|
|
45
|
+
var relationName = _Object$keys[_i];
|
|
46
|
+
var relationRef = data.relationships[relationName];
|
|
50
47
|
|
|
51
48
|
if (Array.isArray(relationRef.data)) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
(function () {
|
|
50
|
+
var items = [];
|
|
51
|
+
relationRef.data.forEach(function (relationData) {
|
|
52
|
+
var item = findJsonApiIncluded(included, relationData.type, relationData.id);
|
|
53
|
+
items.push(item);
|
|
54
|
+
});
|
|
55
|
+
resource[relationName] = items;
|
|
56
|
+
})();
|
|
58
57
|
} else if (relationRef && relationRef.data) {
|
|
59
58
|
resource[relationName] = findJsonApiIncluded(included, relationRef.data.type, relationRef.data.id);
|
|
60
59
|
} else {
|
|
@@ -67,8 +66,8 @@ function parseJsonApiSimpleResourceData(data, included, useCache, options) {
|
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
function findJsonApiIncluded(included, type, id, options) {
|
|
70
|
-
|
|
71
|
-
included.forEach(item
|
|
69
|
+
var found = null;
|
|
70
|
+
included.forEach(function (item) {
|
|
72
71
|
if (item.type === type && item.id === id) {
|
|
73
72
|
found = parseJsonApiSimpleResourceData(item, included, true);
|
|
74
73
|
}
|
|
@@ -76,7 +75,7 @@ function findJsonApiIncluded(included, type, id, options) {
|
|
|
76
75
|
|
|
77
76
|
if (!found) {
|
|
78
77
|
found = {
|
|
79
|
-
id
|
|
78
|
+
id: id
|
|
80
79
|
};
|
|
81
80
|
}
|
|
82
81
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alchemy_cms/json_api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "JSON API deserializer for AlchemyCMS",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"repository": {
|
|
@@ -36,5 +36,6 @@
|
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "rollup --config",
|
|
38
38
|
"test": "jest"
|
|
39
|
-
}
|
|
39
|
+
},
|
|
40
|
+
"browserslist": "> 0.25%, not dead"
|
|
40
41
|
}
|