Skip to content

Commit 0d5fe4f

Browse files
authored
Merge pull request #94 from AlchemyCMS/remove-commonjs
Remove CommonJS package
2 parents 0bb57b1 + a746308 commit 0d5fe4f

7 files changed

Lines changed: 103 additions & 224 deletions

File tree

File renamed without changes.

dist/alchemy-json_api.js

Lines changed: 57 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,132 @@
1-
'use strict';
1+
import structuredClone from '@ungap/structured-clone';
22

3-
var structuredClone = require('@ungap/structured-clone');
4-
5-
function deserialize(originalResponse) {
3+
function deserialize(originalResponse, options = {}) {
64
const response = structuredClone(originalResponse);
5+
if (!options) {
6+
options = {};
7+
}
8+
79
const included = response.included || [];
10+
811
if (Array.isArray(response.data)) {
9-
return response.data.map(data => {
10-
return parseJsonApiSimpleResourceData(data, included, false);
11-
});
12+
return response.data.map((data) => {
13+
return parseJsonApiSimpleResourceData(data, included, false)
14+
})
1215
} else {
13-
return parseJsonApiSimpleResourceData(response.data, included, false);
16+
return parseJsonApiSimpleResourceData(
17+
response.data,
18+
included,
19+
false)
1420
}
1521
}
22+
1623
function parseJsonApiSimpleResourceData(data, included, useCache, options) {
1724
if (!included.cached) {
1825
included.cached = {};
1926
}
27+
2028
if (!(data.type in included.cached)) {
2129
included.cached[data.type] = {};
2230
}
31+
2332
if (useCache && data.id in included.cached[data.type]) {
24-
return included.cached[data.type][data.id];
33+
return included.cached[data.type][data.id]
2534
}
35+
2636
const attributes = data.attributes || {};
37+
2738
const resource = attributes;
2839
resource.id = data.id;
40+
2941
included.cached[data.type][data.id] = resource;
42+
3043
if (data.relationships) {
3144
for (const relationName of Object.keys(data.relationships)) {
3245
const relationRef = data.relationships[relationName];
46+
3347
if (Array.isArray(relationRef.data)) {
3448
const items = [];
35-
relationRef.data.forEach(relationData => {
36-
const item = findJsonApiIncluded(included, relationData.type, relationData.id);
49+
50+
relationRef.data.forEach((relationData) => {
51+
const item = findJsonApiIncluded(
52+
included,
53+
relationData.type,
54+
relationData.id);
55+
3756
items.push(item);
3857
});
58+
3959
resource[relationName] = items;
4060
} else if (relationRef && relationRef.data) {
41-
resource[relationName] = findJsonApiIncluded(included, relationRef.data.type, relationRef.data.id);
61+
resource[relationName] = findJsonApiIncluded(
62+
included,
63+
relationRef.data.type,
64+
relationRef.data.id);
4265
} else {
4366
resource[relationName] = null;
4467
}
4568
}
4669
}
47-
return resource;
70+
71+
return resource
4872
}
73+
4974
function findJsonApiIncluded(included, type, id, options) {
5075
let found = null;
51-
included.forEach(item => {
76+
77+
included.forEach((item) => {
5278
if (item.type === type && item.id === id) {
5379
found = parseJsonApiSimpleResourceData(item, included, true);
5480
}
5581
});
82+
5683
if (!found) {
57-
found = {
58-
id
59-
};
84+
found = { id };
6085
}
61-
return found;
86+
87+
return found
6288
}
6389

6490
// Recursively filters all deprecated elements and essences from collection
6591
function filterDeprecatedElements(elements) {
6692
const els = [];
67-
elements.forEach(element => {
93+
94+
elements.forEach((element) => {
6895
if (element.nested_elements?.length > 0) {
69-
element.nested_elements = filterDeprecatedElements(element.nested_elements);
96+
element.nested_elements = filterDeprecatedElements(
97+
element.nested_elements
98+
);
7099
}
71100
if (element.nestedElements?.length > 0) {
72101
element.nestedElements = filterDeprecatedElements(element.nestedElements);
73102
}
74103
if (element.essences?.length > 0) {
75-
element.essences = element.essences.filter(essence => {
76-
return !essence.deprecated;
104+
element.essences = element.essences.filter((essence) => {
105+
return !essence.deprecated
77106
});
78107
}
79108
if (!element.deprecated) {
80109
els.push(element);
81110
}
82111
});
83-
return els;
112+
113+
return els
84114
}
85115

86116
// Returns deserialized page without deprecated content
87117
function deserializePage(pageData) {
88118
const page = deserialize(pageData);
89119
page.elements = filterDeprecatedElements(page.elements);
90-
return page;
120+
return page
91121
}
92122

93123
// Returns deserialized pages without deprecated content
94124
function deserializePages(pagesData) {
95125
const pages = deserialize(pagesData);
96-
pages.forEach(page => {
126+
pages.forEach((page) => {
97127
page.elements = filterDeprecatedElements(page.elements);
98128
});
99-
return pages;
129+
return pages
100130
}
101131

102-
exports.deserialize = deserialize;
103-
exports.deserializePage = deserializePage;
104-
exports.deserializePages = deserializePages;
132+
export { deserialize, deserializePage, deserializePages };

dist/alchemy-json_api.mjs

Lines changed: 0 additions & 100 deletions
This file was deleted.

dist/deserialize.js

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,90 @@
1-
'use strict';
1+
import structuredClone from '@ungap/structured-clone';
22

3-
var structuredClone = require('@ungap/structured-clone');
4-
5-
function deserialize(originalResponse) {
3+
function deserialize(originalResponse, options = {}) {
64
const response = structuredClone(originalResponse);
5+
if (!options) {
6+
options = {};
7+
}
8+
79
const included = response.included || [];
10+
811
if (Array.isArray(response.data)) {
9-
return response.data.map(data => {
10-
return parseJsonApiSimpleResourceData(data, included, false);
11-
});
12+
return response.data.map((data) => {
13+
return parseJsonApiSimpleResourceData(data, included, false)
14+
})
1215
} else {
13-
return parseJsonApiSimpleResourceData(response.data, included, false);
16+
return parseJsonApiSimpleResourceData(
17+
response.data,
18+
included,
19+
false)
1420
}
1521
}
22+
1623
function parseJsonApiSimpleResourceData(data, included, useCache, options) {
1724
if (!included.cached) {
1825
included.cached = {};
1926
}
27+
2028
if (!(data.type in included.cached)) {
2129
included.cached[data.type] = {};
2230
}
31+
2332
if (useCache && data.id in included.cached[data.type]) {
24-
return included.cached[data.type][data.id];
33+
return included.cached[data.type][data.id]
2534
}
35+
2636
const attributes = data.attributes || {};
37+
2738
const resource = attributes;
2839
resource.id = data.id;
40+
2941
included.cached[data.type][data.id] = resource;
42+
3043
if (data.relationships) {
3144
for (const relationName of Object.keys(data.relationships)) {
3245
const relationRef = data.relationships[relationName];
46+
3347
if (Array.isArray(relationRef.data)) {
3448
const items = [];
35-
relationRef.data.forEach(relationData => {
36-
const item = findJsonApiIncluded(included, relationData.type, relationData.id);
49+
50+
relationRef.data.forEach((relationData) => {
51+
const item = findJsonApiIncluded(
52+
included,
53+
relationData.type,
54+
relationData.id);
55+
3756
items.push(item);
3857
});
58+
3959
resource[relationName] = items;
4060
} else if (relationRef && relationRef.data) {
41-
resource[relationName] = findJsonApiIncluded(included, relationRef.data.type, relationRef.data.id);
61+
resource[relationName] = findJsonApiIncluded(
62+
included,
63+
relationRef.data.type,
64+
relationRef.data.id);
4265
} else {
4366
resource[relationName] = null;
4467
}
4568
}
4669
}
47-
return resource;
70+
71+
return resource
4872
}
73+
4974
function findJsonApiIncluded(included, type, id, options) {
5075
let found = null;
51-
included.forEach(item => {
76+
77+
included.forEach((item) => {
5278
if (item.type === type && item.id === id) {
5379
found = parseJsonApiSimpleResourceData(item, included, true);
5480
}
5581
});
82+
5683
if (!found) {
57-
found = {
58-
id
59-
};
84+
found = { id };
6085
}
61-
return found;
86+
87+
return found
6288
}
6389

64-
exports.deserialize = deserialize;
90+
export { deserialize };

0 commit comments

Comments
 (0)