@datocms/rest-client-utils 5.1.2 → 5.1.6

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.
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deserializeResponseBody = exports.deserializeJsonEntity = void 0;
3
+ exports.deserializeRawResponseBodyWithItems = exports.deserializeRawItem = exports.deserializeResponseBody = exports.deserializeJsonEntity = void 0;
4
4
  function hasData(thing) {
5
5
  return typeof thing === 'object' && !!thing && 'data' in thing;
6
6
  }
7
- function deserializeJsonEntity({ id, type, attributes, relationships, meta, }) {
8
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (id ? { id } : {})), (type ? { type } : {})), (attributes || {})), (relationships
7
+ function hasIncluded(thing) {
8
+ return typeof thing === 'object' && !!thing && 'included' in thing;
9
+ }
10
+ function deserializeJsonEntity({ __itemTypeId, id, type, attributes, relationships, meta, }) {
11
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (__itemTypeId ? { __itemTypeId } : {})), (id ? { id } : {})), (type ? { type } : {})), (attributes || {})), (relationships
9
12
  ? Object.fromEntries(Object.entries(relationships).map(([rel, value]) => [
10
13
  rel,
11
14
  value === null || value === void 0 ? void 0 : value.data,
@@ -23,4 +26,54 @@ function deserializeResponseBody(body) {
23
26
  return deserializeJsonEntity(body.data);
24
27
  }
25
28
  exports.deserializeResponseBody = deserializeResponseBody;
29
+ function isItemEntity(entity) {
30
+ return Boolean(entity &&
31
+ typeof entity === 'object' &&
32
+ 'type' in entity &&
33
+ entity.type === 'item');
34
+ }
35
+ function processValue(value) {
36
+ if (Array.isArray(value)) {
37
+ return value.map(processValue);
38
+ }
39
+ if (value && typeof value === 'object') {
40
+ if (isItemEntity(value)) {
41
+ return deserializeRawItem(value);
42
+ }
43
+ const result = {};
44
+ for (const [key, val] of Object.entries(value)) {
45
+ result[key] = processValue(val);
46
+ }
47
+ return result;
48
+ }
49
+ return value;
50
+ }
51
+ function deserializeRawItem(entity) {
52
+ if (!isItemEntity(entity)) {
53
+ return entity;
54
+ }
55
+ const processedAttributes = entity.attributes
56
+ ? processValue(entity.attributes)
57
+ : entity.attributes;
58
+ return Object.assign(Object.assign({}, entity), { attributes: processedAttributes, __itemTypeId: entity.relationships.item_type.data.id });
59
+ }
60
+ exports.deserializeRawItem = deserializeRawItem;
61
+ function deserializeRawResponseBodyWithItems(body) {
62
+ if (!hasData(body)) {
63
+ throw new Error('Invalid body!');
64
+ }
65
+ let data;
66
+ if (Array.isArray(body.data)) {
67
+ data = body.data.map(deserializeRawItem);
68
+ }
69
+ else {
70
+ data = deserializeRawItem(body.data);
71
+ }
72
+ let included;
73
+ if (hasIncluded(body)) {
74
+ included = body.included.map(deserializeRawItem);
75
+ }
76
+ return Object.assign(Object.assign(Object.assign({}, body), { data }), (included ? { included } : {}));
77
+ }
78
+ exports.deserializeRawResponseBodyWithItems = deserializeRawResponseBodyWithItems;
26
79
  //# sourceMappingURL=deserialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../src/deserialize.ts"],"names":[],"mappings":";;;AAYA,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACjE,CAAC;AAED,SAAgB,qBAAqB,CAAI,EACvC,EAAE,EACF,IAAI,EACJ,UAAU,EACV,aAAa,EACb,IAAI,GACU;IACd,OAAO,0EACF,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAClB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACtB,CAAC,UAAU,IAAI,EAAE,CAAC,GAClB,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAClD,GAAG;YACH,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI;SACZ,CAAC,CACH;QACH,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrB,CAAC;AACT,CAAC;AArBD,sDAqBC;AAED,SAAgB,uBAAuB,CAAI,IAAa;IACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;KAClC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAiB,CAAC;KAC7D;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAiB,CAAC;AAC1D,CAAC;AAVD,0DAUC"}
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../src/deserialize.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.warnOnPageQueryParam = exports.rawPageIterator = void 0;
16
16
  const async_scheduler_1 = require("async-scheduler");
17
- function rawPageIterator(pagination, callPerformer, iteratorOptions) {
17
+ const deserialize_1 = require("./deserialize");
18
+ function rawPageIterator(pagination, callPerformer, iteratorOptions, deserializeRawRequestBodyWithItems) {
18
19
  return __asyncGenerator(this, arguments, function* rawPageIterator_1() {
19
20
  const perPage = (iteratorOptions === null || iteratorOptions === void 0 ? void 0 : iteratorOptions.perPage) || pagination.defaultLimit;
20
21
  if (perPage > pagination.maxLimit) {
@@ -37,7 +38,9 @@ function rawPageIterator(pagination, callPerformer, iteratorOptions) {
37
38
  while (promises.length > 0) {
38
39
  const response = yield __await(promises.shift());
39
40
  for (const item of response.data) {
40
- yield yield __await(item);
41
+ yield yield __await(deserializeRawRequestBodyWithItems
42
+ ? (0, deserialize_1.deserializeRawItem)(item)
43
+ : item);
41
44
  }
42
45
  }
43
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"rawPageIterator.js","sourceRoot":"","sources":["../../src/rawPageIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qDAA4C;AAiB5C,SAAuB,eAAe,CACpC,UAA6B,EAC7B,aAG6B,EAC7B,eAAiC;;QAEjC,MAAM,OAAO,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,KAAI,UAAU,CAAC,YAAY,CAAC;QAEpE,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,iDAAiD,UAAU,CAAC,QAAQ,EAAE,CACvE,CAAC;SACH;QAED,MAAM,WAAW,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,EAAE,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,MAAM,aAAa,GAAG,cAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC;QAEzE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;YACrC,oBAAM,IAAI,CAAA,CAAC;SACZ;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,2BAAS,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAE/C,KAAK,IAAI,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE;YACjE,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,OAAO,CAAuB,GAAG,EAAE,CACzC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC1C,CACF,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,QAAQ,GAAG,cAAM,QAAQ,CAAC,KAAK,EAAG,CAAA,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAChC,oBAAM,IAAI,CAAA,CAAC;aACZ;SACF;IACH,CAAC;CAAA;AA/CD,0CA+CC;AAED,SAAgB,oBAAoB,CAClC,WAAgD;IAEhD,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,EAAE;QACxC,OAAO,CAAC,IAAI,CACV,kGAAkG,CACnG,CAAC;KACH;AACH,CAAC;AARD,oDAQC"}
1
+ {"version":3,"file":"rawPageIterator.js","sourceRoot":"","sources":["../../src/rawPageIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qDAA4C;AAC5C,+CAAmD;AAiBnD,SAAuB,eAAe,CACpC,UAA6B,EAC7B,aAG6B,EAC7B,eAAiC,EACjC,kCAA4C;;QAE5C,MAAM,OAAO,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,KAAI,UAAU,CAAC,YAAY,CAAC;QAEpE,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,iDAAiD,UAAU,CAAC,QAAQ,EAAE,CACvE,CAAC;SACH;QAED,MAAM,WAAW,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,EAAE,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,MAAM,aAAa,GAAG,cAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC;QAEzE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;YACrC,oBAAM,IAAI,CAAA,CAAC;SACZ;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,2BAAS,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAE/C,KAAK,IAAI,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE;YACjE,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,OAAO,CAAuB,GAAG,EAAE,CACzC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC1C,CACF,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,QAAQ,GAAG,cAAM,QAAQ,CAAC,KAAK,EAAG,CAAA,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAChC,oBAAM,kCAAkC;oBACtC,CAAC,CAAC,IAAA,gCAAkB,EAAC,IAAI,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAA,CAAC;aACV;SACF;IACH,CAAC;CAAA;AAlDD,0CAkDC;AAED,SAAgB,oBAAoB,CAClC,WAAgD;IAEhD,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,EAAE;QACxC,OAAO,CAAC,IAAI,CACV,kGAAkG,CACnG,CAAC;KACH;AACH,CAAC;AARD,oDAQC"}
@@ -11,7 +11,7 @@ var __rest = (this && this.__rest) || function (s, e) {
11
11
  return t;
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.serializeRequestBody = void 0;
14
+ exports.serializeRawRequestBodyWithItems = exports.serializeRawItem = exports.serializeRequestBody = void 0;
15
15
  function isRel(object) {
16
16
  return (typeof object === 'object' && !!object && 'id' in object && 'type' in object);
17
17
  }
@@ -109,4 +109,41 @@ function serializeRequestBody(body, options) {
109
109
  };
110
110
  }
111
111
  exports.serializeRequestBody = serializeRequestBody;
112
+ function processValueForSerialization(value) {
113
+ if (Array.isArray(value)) {
114
+ return value.map(processValueForSerialization);
115
+ }
116
+ if (value && typeof value === 'object') {
117
+ const result = {};
118
+ for (const [key, val] of Object.entries(value)) {
119
+ if (key !== '__itemTypeId') {
120
+ result[key] = processValueForSerialization(val);
121
+ }
122
+ }
123
+ return result;
124
+ }
125
+ return value;
126
+ }
127
+ function serializeRawItem(item) {
128
+ if (!item || typeof item !== 'object') {
129
+ return item;
130
+ }
131
+ const { __itemTypeId } = item, rest = __rest(item, ["__itemTypeId"]);
132
+ const processedItem = {};
133
+ for (const [key, value] of Object.entries(rest)) {
134
+ processedItem[key] = processValueForSerialization(value);
135
+ }
136
+ return processedItem;
137
+ }
138
+ exports.serializeRawItem = serializeRawItem;
139
+ function serializeRawRequestBodyWithItems(body) {
140
+ if (!body || !('data' in body)) {
141
+ return body;
142
+ }
143
+ if (Array.isArray(body.data)) {
144
+ return Object.assign(Object.assign({}, body), { data: body.data.map(serializeRawItem) });
145
+ }
146
+ return Object.assign(Object.assign({}, body), { data: serializeRawItem(body.data) });
147
+ }
148
+ exports.serializeRawRequestBodyWithItems = serializeRawRequestBodyWithItems;
112
149
  //# sourceMappingURL=serialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,10 @@ type JsonApiEntity = {
4
4
  attributes?: object;
5
5
  relationships?: object;
6
6
  meta?: object;
7
+ __itemTypeId?: string;
7
8
  };
8
- export declare function deserializeJsonEntity<S>({ id, type, attributes, relationships, meta, }: JsonApiEntity): S;
9
+ export declare function deserializeJsonEntity<S>({ __itemTypeId, id, type, attributes, relationships, meta, }: JsonApiEntity): S;
9
10
  export declare function deserializeResponseBody<T>(body: unknown): T;
11
+ export declare function deserializeRawItem<S>(entity: S): S;
12
+ export declare function deserializeRawResponseBodyWithItems<T>(body: unknown): T;
10
13
  export {};
@@ -1,8 +1,11 @@
1
1
  function hasData(thing) {
2
2
  return typeof thing === 'object' && !!thing && 'data' in thing;
3
3
  }
4
- export function deserializeJsonEntity({ id, type, attributes, relationships, meta, }) {
5
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (id ? { id } : {})), (type ? { type } : {})), (attributes || {})), (relationships
4
+ function hasIncluded(thing) {
5
+ return typeof thing === 'object' && !!thing && 'included' in thing;
6
+ }
7
+ export function deserializeJsonEntity({ __itemTypeId, id, type, attributes, relationships, meta, }) {
8
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (__itemTypeId ? { __itemTypeId } : {})), (id ? { id } : {})), (type ? { type } : {})), (attributes || {})), (relationships
6
9
  ? Object.fromEntries(Object.entries(relationships).map(([rel, value]) => [
7
10
  rel,
8
11
  value === null || value === void 0 ? void 0 : value.data,
@@ -18,4 +21,52 @@ export function deserializeResponseBody(body) {
18
21
  }
19
22
  return deserializeJsonEntity(body.data);
20
23
  }
24
+ function isItemEntity(entity) {
25
+ return Boolean(entity &&
26
+ typeof entity === 'object' &&
27
+ 'type' in entity &&
28
+ entity.type === 'item');
29
+ }
30
+ function processValue(value) {
31
+ if (Array.isArray(value)) {
32
+ return value.map(processValue);
33
+ }
34
+ if (value && typeof value === 'object') {
35
+ if (isItemEntity(value)) {
36
+ return deserializeRawItem(value);
37
+ }
38
+ const result = {};
39
+ for (const [key, val] of Object.entries(value)) {
40
+ result[key] = processValue(val);
41
+ }
42
+ return result;
43
+ }
44
+ return value;
45
+ }
46
+ export function deserializeRawItem(entity) {
47
+ if (!isItemEntity(entity)) {
48
+ return entity;
49
+ }
50
+ const processedAttributes = entity.attributes
51
+ ? processValue(entity.attributes)
52
+ : entity.attributes;
53
+ return Object.assign(Object.assign({}, entity), { attributes: processedAttributes, __itemTypeId: entity.relationships.item_type.data.id });
54
+ }
55
+ export function deserializeRawResponseBodyWithItems(body) {
56
+ if (!hasData(body)) {
57
+ throw new Error('Invalid body!');
58
+ }
59
+ let data;
60
+ if (Array.isArray(body.data)) {
61
+ data = body.data.map(deserializeRawItem);
62
+ }
63
+ else {
64
+ data = deserializeRawItem(body.data);
65
+ }
66
+ let included;
67
+ if (hasIncluded(body)) {
68
+ included = body.included.map(deserializeRawItem);
69
+ }
70
+ return Object.assign(Object.assign(Object.assign({}, body), { data }), (included ? { included } : {}));
71
+ }
21
72
  //# sourceMappingURL=deserialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../src/deserialize.ts"],"names":[],"mappings":"AAYA,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAI,EACvC,EAAE,EACF,IAAI,EACJ,UAAU,EACV,aAAa,EACb,IAAI,GACU;IACd,OAAO,0EACF,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAClB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACtB,CAAC,UAAU,IAAI,EAAE,CAAC,GAClB,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAClD,GAAG;YACH,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI;SACZ,CAAC,CACH;QACH,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrB,CAAC;AACT,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAI,IAAa;IACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;KAClC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAiB,CAAC;KAC7D;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAiB,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../src/deserialize.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,6 @@ type JsonApiPage<T> = {
15
15
  export declare function rawPageIterator<T>(pagination: PaginationOptions, callPerformer: (page: {
16
16
  limit: number;
17
17
  offset: number;
18
- }) => Promise<JsonApiPage<T>>, iteratorOptions?: IteratorOptions): AsyncGenerator<Awaited<T>, void, unknown>;
18
+ }) => Promise<JsonApiPage<T>>, iteratorOptions?: IteratorOptions, deserializeRawRequestBodyWithItems?: boolean): AsyncGenerator<Awaited<T>, void, unknown>;
19
19
  export declare function warnOnPageQueryParam(queryParams: Record<string, unknown> | undefined): void;
20
20
  export {};
@@ -11,7 +11,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar
11
11
  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
12
12
  };
13
13
  import { Scheduler } from 'async-scheduler';
14
- export function rawPageIterator(pagination, callPerformer, iteratorOptions) {
14
+ import { deserializeRawItem } from './deserialize';
15
+ export function rawPageIterator(pagination, callPerformer, iteratorOptions, deserializeRawRequestBodyWithItems) {
15
16
  return __asyncGenerator(this, arguments, function* rawPageIterator_1() {
16
17
  const perPage = (iteratorOptions === null || iteratorOptions === void 0 ? void 0 : iteratorOptions.perPage) || pagination.defaultLimit;
17
18
  if (perPage > pagination.maxLimit) {
@@ -34,7 +35,9 @@ export function rawPageIterator(pagination, callPerformer, iteratorOptions) {
34
35
  while (promises.length > 0) {
35
36
  const response = yield __await(promises.shift());
36
37
  for (const item of response.data) {
37
- yield yield __await(item);
38
+ yield yield __await(deserializeRawRequestBodyWithItems
39
+ ? deserializeRawItem(item)
40
+ : item);
38
41
  }
39
42
  }
40
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"rawPageIterator.js","sourceRoot":"","sources":["../../src/rawPageIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiB5C,MAAM,UAAiB,eAAe,CACpC,UAA6B,EAC7B,aAG6B,EAC7B,eAAiC;;QAEjC,MAAM,OAAO,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,KAAI,UAAU,CAAC,YAAY,CAAC;QAEpE,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,iDAAiD,UAAU,CAAC,QAAQ,EAAE,CACvE,CAAC;SACH;QAED,MAAM,WAAW,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,EAAE,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,MAAM,aAAa,GAAG,cAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC;QAEzE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;YACrC,oBAAM,IAAI,CAAA,CAAC;SACZ;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAE/C,KAAK,IAAI,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE;YACjE,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,OAAO,CAAuB,GAAG,EAAE,CACzC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC1C,CACF,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,QAAQ,GAAG,cAAM,QAAQ,CAAC,KAAK,EAAG,CAAA,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAChC,oBAAM,IAAI,CAAA,CAAC;aACZ;SACF;IACH,CAAC;CAAA;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAgD;IAEhD,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,EAAE;QACxC,OAAO,CAAC,IAAI,CACV,kGAAkG,CACnG,CAAC;KACH;AACH,CAAC"}
1
+ {"version":3,"file":"rawPageIterator.js","sourceRoot":"","sources":["../../src/rawPageIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAiBnD,MAAM,UAAiB,eAAe,CACpC,UAA6B,EAC7B,aAG6B,EAC7B,eAAiC,EACjC,kCAA4C;;QAE5C,MAAM,OAAO,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,KAAI,UAAU,CAAC,YAAY,CAAC;QAEpE,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,iDAAiD,UAAU,CAAC,QAAQ,EAAE,CACvE,CAAC;SACH;QAED,MAAM,WAAW,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,WAAW,KAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,EAAE,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,MAAM,aAAa,GAAG,cAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC;QAEzE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;YACrC,oBAAM,IAAI,CAAA,CAAC;SACZ;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAE/C,KAAK,IAAI,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE;YACjE,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,OAAO,CAAuB,GAAG,EAAE,CACzC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC1C,CACF,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,QAAQ,GAAG,cAAM,QAAQ,CAAC,KAAK,EAAG,CAAA,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAChC,oBAAM,kCAAkC;oBACtC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAA,CAAC;aACV;SACF;IACH,CAAC;CAAA;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAgD;IAEhD,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,EAAE;QACxC,OAAO,CAAC,IAAI,CACV,kGAAkG,CACnG,CAAC;KACH;AACH,CAAC"}
@@ -21,4 +21,6 @@ export type Rel = {
21
21
  export declare function serializeRequestBody<T extends {
22
22
  data: unknown;
23
23
  } | null>(body: unknown, options: Options): T;
24
+ export declare function serializeRawItem<S>(item: any): S;
25
+ export declare function serializeRawRequestBodyWithItems(body: any): any;
24
26
  export {};
@@ -105,4 +105,39 @@ export function serializeRequestBody(body, options) {
105
105
  data: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (id || options.id ? { id: id || options.id } : {})), { type: options.type }), (Object.keys(attributes).length > 0 ? { attributes } : {})), (Object.keys(relationships).length > 0 ? { relationships } : {})), (meta ? { meta } : {})),
106
106
  };
107
107
  }
108
+ function processValueForSerialization(value) {
109
+ if (Array.isArray(value)) {
110
+ return value.map(processValueForSerialization);
111
+ }
112
+ if (value && typeof value === 'object') {
113
+ const result = {};
114
+ for (const [key, val] of Object.entries(value)) {
115
+ if (key !== '__itemTypeId') {
116
+ result[key] = processValueForSerialization(val);
117
+ }
118
+ }
119
+ return result;
120
+ }
121
+ return value;
122
+ }
123
+ export function serializeRawItem(item) {
124
+ if (!item || typeof item !== 'object') {
125
+ return item;
126
+ }
127
+ const { __itemTypeId } = item, rest = __rest(item, ["__itemTypeId"]);
128
+ const processedItem = {};
129
+ for (const [key, value] of Object.entries(rest)) {
130
+ processedItem[key] = processValueForSerialization(value);
131
+ }
132
+ return processedItem;
133
+ }
134
+ export function serializeRawRequestBodyWithItems(body) {
135
+ if (!body || !('data' in body)) {
136
+ return body;
137
+ }
138
+ if (Array.isArray(body.data)) {
139
+ return Object.assign(Object.assign({}, body), { data: body.data.map(serializeRawItem) });
140
+ }
141
+ return Object.assign(Object.assign({}, body), { data: serializeRawItem(body.data) });
142
+ }
108
143
  //# 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,CAClC,IAAa,EACb,OAAgB;IAEhB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;KAClC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CACZ,CAAC,MAAM,EAAE,EAAE,WAAC,OAAA,MAAA,oBAAoB,CAAI,MAAM,EAAE,OAAO,CAAC,0CAAE,IAAI,CAAA,EAAA,CAC3D;SACc,CAAC;KACnB;IAED,MAAM,KAAqD,IAAW,EAAhE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,OAAoC,EAA/B,eAAe,cAAhD,sBAAkD,CAAc,CAAC;IAEvE,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,aAAa,GAA4B,EAAE,CAAC;IAElD,IAAI,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1D,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;oBAChB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;oBAC3B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;iBAC7C;qBAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;oBAC5B,aAAa,CAAC,GAAG,CAAC,GAAG;wBACnB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAClD,CAAC;iBACH;qBAAM;oBACL,aAAa,CAAC,GAAG,CAAC,GAAG;wBACnB,IAAI,EAAE,IAAI;qBACX,CAAC;iBACH;aACF;iBAAM;gBACL,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACzB;SACF;KACF;SAAM,IAAI,OAAO,CAAC,aAAa,KAAK,GAAG,EAAE;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1D,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACzB;iBAAM;gBACL,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;oBAChB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;oBAC3B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;iBAC7C;qBAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;oBAC5B,aAAa,CAAC,GAAG,CAAC,GAAG;wBACnB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAClD,CAAC;iBACH;qBAAM;oBACL,aAAa,CAAC,GAAG,CAAC,GAAG;wBACnB,IAAI,EAAE,IAAI;qBACX,CAAC;iBACH;aACF;SACF;KACF;SAAM;QACL,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1D,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACzB;iBAAM,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;oBAChB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;oBAC3B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;iBAC7C;qBAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;oBAC5B,aAAa,CAAC,GAAG,CAAC,GAAG;wBACnB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAClD,CAAC;iBACH;qBAAM;oBACL,aAAa,CAAC,GAAG,CAAC,GAAG;wBACnB,IAAI,EAAE,IAAI;qBACX,CAAC;iBACH;aACF;SACF;QAED,iDAAiD;QACjD,2CAA2C;QAC3C,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;SAC9B;KACF;IAED,OAAO;QACL,IAAI,4EACC,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACrD,IAAI,EAAE,OAAO,CAAC,IAAI,KACf,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC1D,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAChE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1B;KACc,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,10 @@ type JsonApiEntity = {
4
4
  attributes?: object;
5
5
  relationships?: object;
6
6
  meta?: object;
7
+ __itemTypeId?: string;
7
8
  };
8
- export declare function deserializeJsonEntity<S>({ id, type, attributes, relationships, meta, }: JsonApiEntity): S;
9
+ export declare function deserializeJsonEntity<S>({ __itemTypeId, id, type, attributes, relationships, meta, }: JsonApiEntity): S;
9
10
  export declare function deserializeResponseBody<T>(body: unknown): T;
11
+ export declare function deserializeRawItem<S>(entity: S): S;
12
+ export declare function deserializeRawResponseBodyWithItems<T>(body: unknown): T;
10
13
  export {};
@@ -15,6 +15,6 @@ type JsonApiPage<T> = {
15
15
  export declare function rawPageIterator<T>(pagination: PaginationOptions, callPerformer: (page: {
16
16
  limit: number;
17
17
  offset: number;
18
- }) => Promise<JsonApiPage<T>>, iteratorOptions?: IteratorOptions): AsyncGenerator<Awaited<T>, void, unknown>;
18
+ }) => Promise<JsonApiPage<T>>, iteratorOptions?: IteratorOptions, deserializeRawRequestBodyWithItems?: boolean): AsyncGenerator<Awaited<T>, void, unknown>;
19
19
  export declare function warnOnPageQueryParam(queryParams: Record<string, unknown> | undefined): void;
20
20
  export {};
@@ -21,4 +21,6 @@ export type Rel = {
21
21
  export declare function serializeRequestBody<T extends {
22
22
  data: unknown;
23
23
  } | null>(body: unknown, options: Options): T;
24
+ export declare function serializeRawItem<S>(item: any): S;
25
+ export declare function serializeRawRequestBodyWithItems(body: any): any;
24
26
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datocms/rest-client-utils",
3
- "version": "5.1.2",
3
+ "version": "5.1.6",
4
4
  "description": "Utilities for DatoCMS REST API clients",
5
5
  "keywords": [
6
6
  "datocms",
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "async-scheduler": "^1.4.4"
40
40
  },
41
- "gitHead": "f4f7e2dcb5508f3d4680d242a9805c826706b855",
41
+ "gitHead": "92b4b39626abe853ab1ce24ddd7c64d1af1b43f8",
42
42
  "devDependencies": {
43
43
  "@types/qs": "^6.9.7"
44
44
  }
@@ -4,17 +4,27 @@ type JsonApiEntity = {
4
4
  attributes?: object;
5
5
  relationships?: object;
6
6
  meta?: object;
7
+ __itemTypeId?: string;
7
8
  };
8
9
 
9
10
  type ResponseWithData = {
10
11
  data: JsonApiEntity | JsonApiEntity[];
11
12
  };
12
13
 
14
+ type ResponseWithIncluded = {
15
+ included: JsonApiEntity[];
16
+ };
17
+
13
18
  function hasData(thing: unknown): thing is ResponseWithData {
14
19
  return typeof thing === 'object' && !!thing && 'data' in thing;
15
20
  }
16
21
 
22
+ function hasIncluded(thing: unknown): thing is ResponseWithIncluded {
23
+ return typeof thing === 'object' && !!thing && 'included' in thing;
24
+ }
25
+
17
26
  export function deserializeJsonEntity<S>({
27
+ __itemTypeId,
18
28
  id,
19
29
  type,
20
30
  attributes,
@@ -22,6 +32,7 @@ export function deserializeJsonEntity<S>({
22
32
  meta,
23
33
  }: JsonApiEntity): S {
24
34
  return {
35
+ ...(__itemTypeId ? { __itemTypeId } : {}),
25
36
  ...(id ? { id } : {}),
26
37
  ...(type ? { type } : {}),
27
38
  ...(attributes || {}),
@@ -48,3 +59,84 @@ export function deserializeResponseBody<T>(body: unknown): T {
48
59
 
49
60
  return deserializeJsonEntity(body.data) as unknown as T;
50
61
  }
62
+
63
+ type ItemJsonEntity = {
64
+ id?: string;
65
+ type: 'item';
66
+ attributes?: object;
67
+ relationships: {
68
+ item_type: {
69
+ data: { id: string; type: 'item_type' };
70
+ };
71
+ };
72
+ meta?: object;
73
+ };
74
+
75
+ function isItemEntity(entity: unknown): entity is ItemJsonEntity {
76
+ return Boolean(
77
+ entity &&
78
+ typeof entity === 'object' &&
79
+ 'type' in entity &&
80
+ entity.type === 'item',
81
+ );
82
+ }
83
+
84
+ function processValue(value: unknown): unknown {
85
+ if (Array.isArray(value)) {
86
+ return value.map(processValue);
87
+ }
88
+
89
+ if (value && typeof value === 'object') {
90
+ if (isItemEntity(value)) {
91
+ return deserializeRawItem(value);
92
+ }
93
+
94
+ const result: Record<string, unknown> = {};
95
+ for (const [key, val] of Object.entries(value)) {
96
+ result[key] = processValue(val);
97
+ }
98
+ return result;
99
+ }
100
+
101
+ return value;
102
+ }
103
+
104
+ export function deserializeRawItem<S>(entity: S): S {
105
+ if (!isItemEntity(entity)) {
106
+ return entity;
107
+ }
108
+
109
+ const processedAttributes = entity.attributes
110
+ ? processValue(entity.attributes)
111
+ : entity.attributes;
112
+
113
+ return {
114
+ ...entity,
115
+ attributes: processedAttributes,
116
+ __itemTypeId: entity.relationships.item_type.data.id,
117
+ } as S;
118
+ }
119
+
120
+ export function deserializeRawResponseBodyWithItems<T>(body: unknown): T {
121
+ if (!hasData(body)) {
122
+ throw new Error('Invalid body!');
123
+ }
124
+
125
+ let data: JsonApiEntity | JsonApiEntity[];
126
+ if (Array.isArray(body.data)) {
127
+ data = body.data.map(deserializeRawItem);
128
+ } else {
129
+ data = deserializeRawItem(body.data);
130
+ }
131
+
132
+ let included: JsonApiEntity[] | undefined;
133
+ if (hasIncluded(body)) {
134
+ included = body.included.map(deserializeRawItem);
135
+ }
136
+
137
+ return {
138
+ ...body,
139
+ data,
140
+ ...(included ? { included } : {}),
141
+ } as unknown as T;
142
+ }
@@ -1,4 +1,5 @@
1
1
  import { Scheduler } from 'async-scheduler';
2
+ import { deserializeRawItem } from './deserialize';
2
3
 
3
4
  export type IteratorOptions = {
4
5
  perPage?: number;
@@ -22,6 +23,7 @@ export async function* rawPageIterator<T>(
22
23
  offset: number;
23
24
  }) => Promise<JsonApiPage<T>>,
24
25
  iteratorOptions?: IteratorOptions,
26
+ deserializeRawRequestBodyWithItems?: boolean,
25
27
  ) {
26
28
  const perPage = iteratorOptions?.perPage || pagination.defaultLimit;
27
29
 
@@ -59,7 +61,9 @@ export async function* rawPageIterator<T>(
59
61
  while (promises.length > 0) {
60
62
  const response = await promises.shift()!;
61
63
  for (const item of response.data) {
62
- yield item;
64
+ yield deserializeRawRequestBodyWithItems
65
+ ? deserializeRawItem(item)
66
+ : item;
63
67
  }
64
68
  }
65
69
  }
package/src/serialize.ts CHANGED
@@ -129,3 +129,48 @@ export function serializeRequestBody<T extends { data: unknown } | null>(
129
129
  },
130
130
  } as unknown as T;
131
131
  }
132
+
133
+ function processValueForSerialization(value: unknown): unknown {
134
+ if (Array.isArray(value)) {
135
+ return value.map(processValueForSerialization);
136
+ }
137
+
138
+ if (value && typeof value === 'object') {
139
+ const result: Record<string, unknown> = {};
140
+ for (const [key, val] of Object.entries(value)) {
141
+ if (key !== '__itemTypeId') {
142
+ result[key] = processValueForSerialization(val);
143
+ }
144
+ }
145
+ return result;
146
+ }
147
+
148
+ return value;
149
+ }
150
+
151
+ export function serializeRawItem<S>(item: any): S {
152
+ if (!item || typeof item !== 'object') {
153
+ return item;
154
+ }
155
+
156
+ const { __itemTypeId, ...rest } = item;
157
+
158
+ const processedItem: Record<string, unknown> = {};
159
+ for (const [key, value] of Object.entries(rest)) {
160
+ processedItem[key] = processValueForSerialization(value);
161
+ }
162
+
163
+ return processedItem as S;
164
+ }
165
+
166
+ export function serializeRawRequestBodyWithItems(body: any) {
167
+ if (!body || !('data' in body)) {
168
+ return body;
169
+ }
170
+
171
+ if (Array.isArray(body.data)) {
172
+ return { ...body, data: body.data.map(serializeRawItem) };
173
+ }
174
+
175
+ return { ...body, data: serializeRawItem(body.data) };
176
+ }