@datocms/rest-client-utils 3.3.5 → 3.3.15
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/dist/cjs/serialize.js +18 -8
- package/dist/cjs/serialize.js.map +1 -1
- package/dist/esm/serialize.d.ts +3 -1
- package/dist/esm/serialize.js +18 -8
- package/dist/esm/serialize.js.map +1 -1
- package/dist/types/serialize.d.ts +3 -1
- package/package.json +10 -4
- package/src/serialize.ts +20 -3
package/dist/cjs/serialize.js
CHANGED
|
@@ -33,7 +33,12 @@ function serializeRequestBody(body, options) {
|
|
|
33
33
|
if (typeof body !== 'object' || !body) {
|
|
34
34
|
throw new Error('Invalid body!');
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
if (Array.isArray(body)) {
|
|
37
|
+
return {
|
|
38
|
+
data: body.map(function (entity) { var _a; return (_a = serializeRequestBody(entity, options)) === null || _a === void 0 ? void 0 : _a.data; }),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
var _a = body, id = _a.id, typeInBody = _a.type, meta = _a.meta, otherProperties = __rest(_a, ["id", "type", "meta"]);
|
|
37
42
|
var attributes = {};
|
|
38
43
|
var relationships = {};
|
|
39
44
|
if (options.attributes === '*') {
|
|
@@ -41,8 +46,8 @@ function serializeRequestBody(body, options) {
|
|
|
41
46
|
var _c = _b[_i], key = _c[0], value = _c[1];
|
|
42
47
|
if (options.relationships.includes(key)) {
|
|
43
48
|
if (isRel(value)) {
|
|
44
|
-
var id_1 = value.id,
|
|
45
|
-
relationships[key] = { data: { id: id_1, type:
|
|
49
|
+
var id_1 = value.id, type = value.type;
|
|
50
|
+
relationships[key] = { data: { id: id_1, type: type } };
|
|
46
51
|
}
|
|
47
52
|
else if (isRelArray(value)) {
|
|
48
53
|
relationships[key] = {
|
|
@@ -71,8 +76,8 @@ function serializeRequestBody(body, options) {
|
|
|
71
76
|
}
|
|
72
77
|
else {
|
|
73
78
|
if (isRel(value)) {
|
|
74
|
-
var id_2 = value.id,
|
|
75
|
-
relationships[key] = { data: { id: id_2, type:
|
|
79
|
+
var id_2 = value.id, type = value.type;
|
|
80
|
+
relationships[key] = { data: { id: id_2, type: type } };
|
|
76
81
|
}
|
|
77
82
|
else if (isRelArray(value)) {
|
|
78
83
|
relationships[key] = {
|
|
@@ -98,8 +103,8 @@ function serializeRequestBody(body, options) {
|
|
|
98
103
|
}
|
|
99
104
|
else if (options.relationships.includes(key)) {
|
|
100
105
|
if (isRel(value)) {
|
|
101
|
-
var id_3 = value.id,
|
|
102
|
-
relationships[key] = { data: { id: id_3, type:
|
|
106
|
+
var id_3 = value.id, type = value.type;
|
|
107
|
+
relationships[key] = { data: { id: id_3, type: type } };
|
|
103
108
|
}
|
|
104
109
|
else if (isRelArray(value)) {
|
|
105
110
|
relationships[key] = {
|
|
@@ -116,9 +121,14 @@ function serializeRequestBody(body, options) {
|
|
|
116
121
|
}
|
|
117
122
|
}
|
|
118
123
|
}
|
|
124
|
+
// 'type' key present in data is always ignored..
|
|
125
|
+
// UNLESS the entity has a `type` attribute
|
|
126
|
+
if (options.attributes.includes('type')) {
|
|
127
|
+
attributes.type = typeInBody;
|
|
128
|
+
}
|
|
119
129
|
}
|
|
120
130
|
return {
|
|
121
|
-
data: __assign(__assign(__assign(__assign(__assign({}, (id || options.id ? { id: id || options.id } : {})), { type:
|
|
131
|
+
data: __assign(__assign(__assign(__assign(__assign({}, (id || options.id ? { id: id || options.id } : {})), { type: options.type }), (Object.keys(attributes).length > 0 ? { attributes: attributes } : {})), (Object.keys(relationships).length > 0 ? { relationships: relationships } : {})), (meta ? { meta: meta } : {})),
|
|
122
132
|
};
|
|
123
133
|
}
|
|
124
134
|
exports.serializeRequestBody = serializeRequestBody;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAS,KAAK,CAAC,MAAe;IAC5B,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/serialize.d.ts
CHANGED
|
@@ -18,5 +18,7 @@ export type Rel = {
|
|
|
18
18
|
id: string;
|
|
19
19
|
type: string;
|
|
20
20
|
};
|
|
21
|
-
export declare function serializeRequestBody<T
|
|
21
|
+
export declare function serializeRequestBody<T extends {
|
|
22
|
+
data: unknown;
|
|
23
|
+
} | null>(body: unknown, options: Options): T;
|
|
22
24
|
export {};
|
package/dist/esm/serialize.js
CHANGED
|
@@ -30,7 +30,12 @@ export function serializeRequestBody(body, options) {
|
|
|
30
30
|
if (typeof body !== 'object' || !body) {
|
|
31
31
|
throw new Error('Invalid body!');
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
if (Array.isArray(body)) {
|
|
34
|
+
return {
|
|
35
|
+
data: body.map(function (entity) { var _a; return (_a = serializeRequestBody(entity, options)) === null || _a === void 0 ? void 0 : _a.data; }),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var _a = body, id = _a.id, typeInBody = _a.type, meta = _a.meta, otherProperties = __rest(_a, ["id", "type", "meta"]);
|
|
34
39
|
var attributes = {};
|
|
35
40
|
var relationships = {};
|
|
36
41
|
if (options.attributes === '*') {
|
|
@@ -38,8 +43,8 @@ export function serializeRequestBody(body, options) {
|
|
|
38
43
|
var _c = _b[_i], key = _c[0], value = _c[1];
|
|
39
44
|
if (options.relationships.includes(key)) {
|
|
40
45
|
if (isRel(value)) {
|
|
41
|
-
var id_1 = value.id,
|
|
42
|
-
relationships[key] = { data: { id: id_1, type:
|
|
46
|
+
var id_1 = value.id, type = value.type;
|
|
47
|
+
relationships[key] = { data: { id: id_1, type: type } };
|
|
43
48
|
}
|
|
44
49
|
else if (isRelArray(value)) {
|
|
45
50
|
relationships[key] = {
|
|
@@ -68,8 +73,8 @@ export function serializeRequestBody(body, options) {
|
|
|
68
73
|
}
|
|
69
74
|
else {
|
|
70
75
|
if (isRel(value)) {
|
|
71
|
-
var id_2 = value.id,
|
|
72
|
-
relationships[key] = { data: { id: id_2, type:
|
|
76
|
+
var id_2 = value.id, type = value.type;
|
|
77
|
+
relationships[key] = { data: { id: id_2, type: type } };
|
|
73
78
|
}
|
|
74
79
|
else if (isRelArray(value)) {
|
|
75
80
|
relationships[key] = {
|
|
@@ -95,8 +100,8 @@ export function serializeRequestBody(body, options) {
|
|
|
95
100
|
}
|
|
96
101
|
else if (options.relationships.includes(key)) {
|
|
97
102
|
if (isRel(value)) {
|
|
98
|
-
var id_3 = value.id,
|
|
99
|
-
relationships[key] = { data: { id: id_3, type:
|
|
103
|
+
var id_3 = value.id, type = value.type;
|
|
104
|
+
relationships[key] = { data: { id: id_3, type: type } };
|
|
100
105
|
}
|
|
101
106
|
else if (isRelArray(value)) {
|
|
102
107
|
relationships[key] = {
|
|
@@ -113,9 +118,14 @@ export function serializeRequestBody(body, options) {
|
|
|
113
118
|
}
|
|
114
119
|
}
|
|
115
120
|
}
|
|
121
|
+
// 'type' key present in data is always ignored..
|
|
122
|
+
// UNLESS the entity has a `type` attribute
|
|
123
|
+
if (options.attributes.includes('type')) {
|
|
124
|
+
attributes.type = typeInBody;
|
|
125
|
+
}
|
|
116
126
|
}
|
|
117
127
|
return {
|
|
118
|
-
data: __assign(__assign(__assign(__assign(__assign({}, (id || options.id ? { id: id || options.id } : {})), { type:
|
|
128
|
+
data: __assign(__assign(__assign(__assign(__assign({}, (id || options.id ? { id: id || options.id } : {})), { type: options.type }), (Object.keys(attributes).length > 0 ? { attributes: attributes } : {})), (Object.keys(relationships).length > 0 ? { relationships: relationships } : {})), (meta ? { meta: meta } : {})),
|
|
119
129
|
};
|
|
120
130
|
}
|
|
121
131
|
//# sourceMappingURL=serialize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAS,KAAK,CAAC,MAAe;IAC5B,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,5 +18,7 @@ export type Rel = {
|
|
|
18
18
|
id: string;
|
|
19
19
|
type: string;
|
|
20
20
|
};
|
|
21
|
-
export declare function serializeRequestBody<T
|
|
21
|
+
export declare function serializeRequestBody<T extends {
|
|
22
|
+
data: unknown;
|
|
23
|
+
} | null>(body: unknown, options: Options): T;
|
|
22
24
|
export {};
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datocms/rest-client-utils",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.15",
|
|
4
4
|
"description": "Utilities for DatoCMS REST API clients",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"datocms",
|
|
7
|
+
"client"
|
|
8
|
+
],
|
|
6
9
|
"author": "Stefano Verna <s.verna@datocms.com>",
|
|
7
10
|
"homepage": "https://github.com/datocms/js-rest-api-clients/tree/main/packages/rest-client-utils#readme",
|
|
8
11
|
"license": "MIT",
|
|
@@ -14,7 +17,10 @@
|
|
|
14
17
|
"lib": "dist",
|
|
15
18
|
"test": "__tests__"
|
|
16
19
|
},
|
|
17
|
-
"files": [
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"src"
|
|
23
|
+
],
|
|
18
24
|
"publishConfig": {
|
|
19
25
|
"access": "public"
|
|
20
26
|
},
|
|
@@ -32,7 +38,7 @@
|
|
|
32
38
|
"dependencies": {
|
|
33
39
|
"async-scheduler": "^1.4.4"
|
|
34
40
|
},
|
|
35
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "eb1ec37186876ac65ca0b21a23be00513b42b087",
|
|
36
42
|
"devDependencies": {
|
|
37
43
|
"@types/qs": "^6.9.7"
|
|
38
44
|
}
|
package/src/serialize.ts
CHANGED
|
@@ -33,12 +33,23 @@ function isRelArray(object: unknown): object is Rel[] {
|
|
|
33
33
|
return Array.isArray(object) && object.every(isRel);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export function serializeRequestBody<T
|
|
36
|
+
export function serializeRequestBody<T extends { data: unknown } | null>(
|
|
37
|
+
body: unknown,
|
|
38
|
+
options: Options,
|
|
39
|
+
): T {
|
|
37
40
|
if (typeof body !== 'object' || !body) {
|
|
38
41
|
throw new Error('Invalid body!');
|
|
39
42
|
}
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
if (Array.isArray(body)) {
|
|
45
|
+
return {
|
|
46
|
+
data: body.map(
|
|
47
|
+
(entity) => serializeRequestBody<T>(entity, options)?.data,
|
|
48
|
+
),
|
|
49
|
+
} as unknown as T;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const { id, type: typeInBody, meta, ...otherProperties } = body as any;
|
|
42
53
|
|
|
43
54
|
const attributes: Record<string, unknown> = {};
|
|
44
55
|
const relationships: Record<string, unknown> = {};
|
|
@@ -100,12 +111,18 @@ export function serializeRequestBody<T>(body: unknown, options: Options): T {
|
|
|
100
111
|
}
|
|
101
112
|
}
|
|
102
113
|
}
|
|
114
|
+
|
|
115
|
+
// 'type' key present in data is always ignored..
|
|
116
|
+
// UNLESS the entity has a `type` attribute
|
|
117
|
+
if (options.attributes.includes('type')) {
|
|
118
|
+
attributes.type = typeInBody;
|
|
119
|
+
}
|
|
103
120
|
}
|
|
104
121
|
|
|
105
122
|
return {
|
|
106
123
|
data: {
|
|
107
124
|
...(id || options.id ? { id: id || options.id } : {}),
|
|
108
|
-
type:
|
|
125
|
+
type: options.type,
|
|
109
126
|
...(Object.keys(attributes).length > 0 ? { attributes } : {}),
|
|
110
127
|
...(Object.keys(relationships).length > 0 ? { relationships } : {}),
|
|
111
128
|
...(meta ? { meta } : {}),
|