@kontent-ai/delivery-sdk 16.4.3 → 16.4.5
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/.npmignore +15 -15
- package/LICENSE.md +9 -9
- package/dist/bundles/kontent-delivery.umd.js +5076 -4619
- package/dist/bundles/kontent-delivery.umd.js.map +1 -1
- package/dist/bundles/kontent-delivery.umd.min.js +1 -1
- package/dist/bundles/kontent-delivery.umd.min.js.map +1 -1
- package/dist/bundles/report.json +1 -1
- package/dist/bundles/report.min.json +1 -1
- package/dist/bundles/stats.json +7015 -5766
- package/dist/bundles/stats.min.json +11376 -10250
- package/dist/cjs/query/element/element-query.class.js +1 -1
- package/dist/cjs/query/element/element-query.class.js.map +1 -1
- package/dist/cjs/query/item/single-item-query.class.js +1 -1
- package/dist/cjs/query/item/single-item-query.class.js.map +1 -1
- package/dist/cjs/query/taxonomy/taxonomy-query.class.js +1 -1
- package/dist/cjs/query/taxonomy/taxonomy-query.class.js.map +1 -1
- package/dist/cjs/query/type/single-type-query.class.js +1 -1
- package/dist/cjs/query/type/single-type-query.class.js.map +1 -1
- package/dist/cjs/query/used-in/used-in-query.class.js +1 -1
- package/dist/cjs/query/used-in/used-in-query.class.js.map +1 -1
- package/dist/cjs/sdk-info.generated.js +1 -1
- package/dist/es6/query/element/element-query.class.js +1 -1
- package/dist/es6/query/element/element-query.class.js.map +1 -1
- package/dist/es6/query/item/single-item-query.class.js +1 -1
- package/dist/es6/query/item/single-item-query.class.js.map +1 -1
- package/dist/es6/query/taxonomy/taxonomy-query.class.js +1 -1
- package/dist/es6/query/taxonomy/taxonomy-query.class.js.map +1 -1
- package/dist/es6/query/type/single-type-query.class.js +1 -1
- package/dist/es6/query/type/single-type-query.class.js.map +1 -1
- package/dist/es6/query/used-in/used-in-query.class.js +1 -1
- package/dist/es6/query/used-in/used-in-query.class.js.map +1 -1
- package/dist/es6/sdk-info.generated.js +1 -1
- package/dist/esnext/query/element/element-query.class.js +1 -1
- package/dist/esnext/query/element/element-query.class.js.map +1 -1
- package/dist/esnext/query/item/single-item-query.class.js +1 -1
- package/dist/esnext/query/item/single-item-query.class.js.map +1 -1
- package/dist/esnext/query/taxonomy/taxonomy-query.class.js +1 -1
- package/dist/esnext/query/taxonomy/taxonomy-query.class.js.map +1 -1
- package/dist/esnext/query/type/single-type-query.class.js +1 -1
- package/dist/esnext/query/type/single-type-query.class.js.map +1 -1
- package/dist/esnext/query/used-in/used-in-query.class.js +1 -1
- package/dist/esnext/query/used-in/used-in-query.class.js.map +1 -1
- package/dist/esnext/sdk-info.generated.js +1 -1
- package/lib/client/delivery-client.factory.ts +9 -9
- package/lib/client/delivery-client.ts +163 -163
- package/lib/client/idelivery-client.interface.ts +110 -110
- package/lib/client/index.ts +3 -3
- package/lib/config/delivery-configs.ts +98 -98
- package/lib/config/index.ts +1 -1
- package/lib/contracts/contracts.ts +265 -265
- package/lib/contracts/index.ts +1 -1
- package/lib/elements/element-models.ts +89 -89
- package/lib/elements/element-resolver.ts +3 -3
- package/lib/elements/element-type.ts +16 -16
- package/lib/elements/elements.ts +70 -70
- package/lib/elements/index.ts +4 -4
- package/lib/images/image-url-transformation-builder.factory.ts +5 -5
- package/lib/images/image-url-transformation-builder.ts +181 -181
- package/lib/images/image.models.ts +4 -4
- package/lib/images/index.ts +3 -3
- package/lib/index.ts +12 -12
- package/lib/mappers/element.mapper.ts +504 -504
- package/lib/mappers/generic-element.mapper.ts +20 -20
- package/lib/mappers/index.ts +8 -8
- package/lib/mappers/item.mapper.ts +181 -181
- package/lib/mappers/language.mapper.ts +24 -24
- package/lib/mappers/sync.mapper.ts +32 -32
- package/lib/mappers/taxonomy.mapper.ts +77 -77
- package/lib/mappers/type.mapper.ts +76 -76
- package/lib/mappers/used-in.mapper.ts +20 -20
- package/lib/models/common/base-responses.ts +13 -13
- package/lib/models/common/common-models.ts +118 -118
- package/lib/models/common/filters.ts +280 -280
- package/lib/models/common/headers.ts +5 -5
- package/lib/models/common/index.ts +7 -7
- package/lib/models/common/pagination.class.ts +7 -7
- package/lib/models/common/parameters.ts +189 -189
- package/lib/models/common/sort-order.ts +1 -1
- package/lib/models/content-type-models.ts +42 -42
- package/lib/models/element-models.ts +51 -51
- package/lib/models/index.ts +9 -9
- package/lib/models/item-models.ts +192 -192
- package/lib/models/language-models.ts +17 -17
- package/lib/models/responses.ts +137 -137
- package/lib/models/sync-models.ts +18 -18
- package/lib/models/taxonomy-models.ts +25 -25
- package/lib/query/common/base-item-listing-query.class.ts +274 -274
- package/lib/query/common/base-listing-query.class.ts +95 -95
- package/lib/query/common/base-query.class.ts +148 -148
- package/lib/query/element/element-query.class.ts +47 -45
- package/lib/query/index.ts +13 -13
- package/lib/query/item/multiple-items-query.class.ts +183 -183
- package/lib/query/item/single-item-query.class.ts +106 -106
- package/lib/query/items-feed/items-feed-query.class.ts +191 -191
- package/lib/query/language/languages-query.class.ts +91 -91
- package/lib/query/sync/initialize-sync-query.class.ts +83 -83
- package/lib/query/sync/sync-changes-query.class.ts +56 -56
- package/lib/query/taxonomy/taxonomies-query.class.ts +82 -82
- package/lib/query/taxonomy/taxonomy-query.class.ts +50 -50
- package/lib/query/type/multiple-type-query.class.ts +95 -95
- package/lib/query/type/single-type-query.class.ts +45 -45
- package/lib/query/used-in/used-in-query.class.ts +128 -126
- package/lib/sdk-info.generated.ts +1 -1
- package/lib/services/base-delivery-query.service.ts +375 -375
- package/lib/services/delivery-query.service.ts +336 -336
- package/lib/services/index.ts +2 -2
- package/lib/services/mapping.service.ts +223 -223
- package/lib/utilities/codename.helper.ts +10 -10
- package/lib/utilities/delivery-url.helper.ts +11 -11
- package/lib/utilities/enum.helper.ts +38 -38
- package/lib/utilities/index.ts +3 -3
- package/package.json +96 -96
- package/readme.md +531 -531
|
@@ -1,274 +1,274 @@
|
|
|
1
|
-
import { ElementType, Elements } from '../../elements';
|
|
2
|
-
import { IDeliveryClientConfig } from '../../config';
|
|
3
|
-
import {
|
|
4
|
-
ClientTypes,
|
|
5
|
-
Filters,
|
|
6
|
-
IContentItem,
|
|
7
|
-
IKontentListAllResponse,
|
|
8
|
-
IKontentListResponse,
|
|
9
|
-
IQueryConfig,
|
|
10
|
-
Parameters,
|
|
11
|
-
SortOrder
|
|
12
|
-
} from '../../models';
|
|
13
|
-
import { QueryService } from '../../services';
|
|
14
|
-
import { BaseListingQuery } from './base-listing-query.class';
|
|
15
|
-
|
|
16
|
-
export abstract class BaseItemListingQuery<
|
|
17
|
-
TClientTypes extends ClientTypes,
|
|
18
|
-
TResponse extends IKontentListResponse,
|
|
19
|
-
TAllResponse extends IKontentListAllResponse,
|
|
20
|
-
TQueryConfig extends IQueryConfig,
|
|
21
|
-
TContract
|
|
22
|
-
> extends BaseListingQuery<TClientTypes, IContentItem, TResponse, TAllResponse, TQueryConfig, TContract> {
|
|
23
|
-
constructor(protected config: IDeliveryClientConfig, protected queryService: QueryService<TClientTypes>) {
|
|
24
|
-
super(config, queryService);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Empty filter condition
|
|
29
|
-
* @param element Element with empty value
|
|
30
|
-
*/
|
|
31
|
-
emptyFilter(element: string): this {
|
|
32
|
-
this.parameters.push(new Filters.EmptyFilter(element));
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Not empty filter condition
|
|
38
|
-
* @param element Element with non-empty value
|
|
39
|
-
*/
|
|
40
|
-
notEmptyFilter(element: string): this {
|
|
41
|
-
this.parameters.push(new Filters.NotEmptyFilter(element));
|
|
42
|
-
return this;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Equals filter condition
|
|
47
|
-
* @param element Element to filter. Example: 'elements.movie'
|
|
48
|
-
* @param value Value to match. Example: 'Kingsman'
|
|
49
|
-
*/
|
|
50
|
-
equalsFilter(element: string, value: string): this {
|
|
51
|
-
this.parameters.push(new Filters.EqualsFilter(element, value));
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Not equals filter condition
|
|
57
|
-
* @param element Element to filter. Example: 'elements.movie'
|
|
58
|
-
* @param value Value to match. Example: 'Kingsman'
|
|
59
|
-
*/
|
|
60
|
-
notEqualsFilter(element: string, value: string): this {
|
|
61
|
-
this.parameters.push(new Filters.NotEqualsFilter(element, value));
|
|
62
|
-
return this;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* All filter
|
|
67
|
-
* @param element Element to filter.
|
|
68
|
-
* @param values Values
|
|
69
|
-
*/
|
|
70
|
-
allFilter(element: string, values: string[]): this {
|
|
71
|
-
this.parameters.push(new Filters.AllFilter(element, values));
|
|
72
|
-
return this;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Any filter
|
|
77
|
-
* @param element Element to filter.
|
|
78
|
-
* @param values Values
|
|
79
|
-
*/
|
|
80
|
-
anyFilter(element: string, values: string[]): this {
|
|
81
|
-
this.parameters.push(new Filters.AnyFilter(element, values));
|
|
82
|
-
return this;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Contains filter
|
|
87
|
-
* @param element Element to filter.
|
|
88
|
-
* @param values Values
|
|
89
|
-
*/
|
|
90
|
-
containsFilter(element: string, values: string[]): this {
|
|
91
|
-
this.parameters.push(new Filters.ContainsFilter(element, values));
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Greater then filter
|
|
97
|
-
* @param element Element to filter.
|
|
98
|
-
* @param value Value
|
|
99
|
-
*/
|
|
100
|
-
greaterThanFilter(element: string, value: string | number): this {
|
|
101
|
-
this.parameters.push(new Filters.GreaterThanFilter(element, value));
|
|
102
|
-
return this;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Greater then or equals filter
|
|
107
|
-
* @param element Element to filter.
|
|
108
|
-
* @param value Value
|
|
109
|
-
*/
|
|
110
|
-
greaterThanOrEqualFilter(element: string, value: string | number): this {
|
|
111
|
-
this.parameters.push(new Filters.GreaterThanOrEqualFilter(element, value));
|
|
112
|
-
return this;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* In filter
|
|
117
|
-
* @param element Element to filter.
|
|
118
|
-
* @param values Values
|
|
119
|
-
*/
|
|
120
|
-
inFilter(element: string, values: string[]): this {
|
|
121
|
-
this.parameters.push(new Filters.InFilter(element, values));
|
|
122
|
-
return this;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Not in filter
|
|
127
|
-
* @param element Element to filter.
|
|
128
|
-
* @param values Values
|
|
129
|
-
*/
|
|
130
|
-
notInFilter(element: string, values: string[]): this {
|
|
131
|
-
this.parameters.push(new Filters.NotInFilter(element, values));
|
|
132
|
-
return this;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Less then filter
|
|
137
|
-
* @param element Element to filter.
|
|
138
|
-
* @param value Value
|
|
139
|
-
*/
|
|
140
|
-
lessThanFilter(element: string, value: string | number): this {
|
|
141
|
-
this.parameters.push(new Filters.LessThanFilter(element, value));
|
|
142
|
-
return this;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* @param element Element to filter.
|
|
147
|
-
* @param value Value
|
|
148
|
-
*/
|
|
149
|
-
lessThanOrEqualFilter(element: string, value: string | number): this {
|
|
150
|
-
this.parameters.push(new Filters.LessThanOrEqualFilter(element, value));
|
|
151
|
-
return this;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* @param element Element to filter.
|
|
156
|
-
* @param lowerValue Lower value of range (e.g. 2)
|
|
157
|
-
* @param higherValue Higher value of range (e.g. 10)
|
|
158
|
-
*/
|
|
159
|
-
rangeFilter(element: string, lowerValue: number | string, higherValue: number | string): this {
|
|
160
|
-
this.parameters.push(new Filters.RangeFilter(element, lowerValue, higherValue));
|
|
161
|
-
return this;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Limits the number of items returned by query
|
|
166
|
-
* @param limit Number of items to load
|
|
167
|
-
*/
|
|
168
|
-
limitParameter(limit: number): this {
|
|
169
|
-
this.parameters.push(new Parameters.LimitParameter(limit));
|
|
170
|
-
return this;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Orders query based on given element and sort order
|
|
175
|
-
* @param element Element by which to order
|
|
176
|
-
* @param sortOrder Asc/Desc order type
|
|
177
|
-
*/
|
|
178
|
-
orderParameter(element: string, sortOrder: SortOrder): this {
|
|
179
|
-
this.parameters.push(new Parameters.OrderParameter(element, sortOrder));
|
|
180
|
-
return this;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Sets descending order on given element
|
|
185
|
-
* @param element Element by which to order
|
|
186
|
-
*/
|
|
187
|
-
orderByDescending(element: string): this {
|
|
188
|
-
this.parameters.push(new Parameters.OrderParameter(element, 'desc'));
|
|
189
|
-
return this;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Sets Ascending order on given element
|
|
194
|
-
* @param element Element by which to order
|
|
195
|
-
*/
|
|
196
|
-
orderByAscending(element: string): this {
|
|
197
|
-
this.parameters.push(new Parameters.OrderParameter(element, 'asc'));
|
|
198
|
-
return this;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Skips the selected number of items
|
|
203
|
-
* @param skip Number of items to skip
|
|
204
|
-
*/
|
|
205
|
-
skipParameter(skip: number): this {
|
|
206
|
-
this.parameters.push(new Parameters.SkipParameter(skip));
|
|
207
|
-
return this;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
protected linkItemsInRte(allContentItems: IContentItem[]): void {
|
|
211
|
-
for (const item of allContentItems) {
|
|
212
|
-
for (const elementKey of Object.keys(item.elements)) {
|
|
213
|
-
const element = item.elements[elementKey];
|
|
214
|
-
|
|
215
|
-
if (element.type === ElementType.ModularContent) {
|
|
216
|
-
const linkedItemElement = element as Elements.LinkedItemsElement;
|
|
217
|
-
|
|
218
|
-
// We create separate array for ordered items because the 'linkedItems' from response might be incomplete
|
|
219
|
-
// e.g. If 4 items are linked, only 2 might be available in the response. Rest needs to be mapped from all available items
|
|
220
|
-
const orderedLinkedItems: IContentItem[] = [];
|
|
221
|
-
|
|
222
|
-
for (const linkedItemCodename of linkedItemElement.value) {
|
|
223
|
-
let linkedItem: IContentItem | undefined;
|
|
224
|
-
|
|
225
|
-
const linkedItemInElement = linkedItemElement.linkedItems.find(
|
|
226
|
-
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
227
|
-
);
|
|
228
|
-
if (linkedItemInElement) {
|
|
229
|
-
linkedItem = linkedItemInElement;
|
|
230
|
-
} else {
|
|
231
|
-
linkedItem = allContentItems.find(
|
|
232
|
-
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
233
|
-
);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
if (linkedItem) {
|
|
237
|
-
orderedLinkedItems.push(linkedItem);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// Replace linked items with the ordered one
|
|
242
|
-
linkedItemElement.linkedItems = orderedLinkedItems;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
if (element.type === ElementType.RichText) {
|
|
246
|
-
const orderedLinkedItems: IContentItem[] = [];
|
|
247
|
-
|
|
248
|
-
const richTextElement = element as Elements.RichTextElement;
|
|
249
|
-
|
|
250
|
-
for (const linkedItemCodename of richTextElement.linkedItemCodenames) {
|
|
251
|
-
let linkedItem: IContentItem | undefined;
|
|
252
|
-
|
|
253
|
-
const linkedItemInElement = richTextElement.linkedItems.find(
|
|
254
|
-
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
255
|
-
);
|
|
256
|
-
if (linkedItemInElement) {
|
|
257
|
-
linkedItem = linkedItemInElement;
|
|
258
|
-
} else {
|
|
259
|
-
linkedItem = allContentItems.find(
|
|
260
|
-
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
261
|
-
);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
if (linkedItem) {
|
|
265
|
-
orderedLinkedItems.push(linkedItem);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
richTextElement.linkedItems = orderedLinkedItems;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
1
|
+
import { ElementType, Elements } from '../../elements';
|
|
2
|
+
import { IDeliveryClientConfig } from '../../config';
|
|
3
|
+
import {
|
|
4
|
+
ClientTypes,
|
|
5
|
+
Filters,
|
|
6
|
+
IContentItem,
|
|
7
|
+
IKontentListAllResponse,
|
|
8
|
+
IKontentListResponse,
|
|
9
|
+
IQueryConfig,
|
|
10
|
+
Parameters,
|
|
11
|
+
SortOrder
|
|
12
|
+
} from '../../models';
|
|
13
|
+
import { QueryService } from '../../services';
|
|
14
|
+
import { BaseListingQuery } from './base-listing-query.class';
|
|
15
|
+
|
|
16
|
+
export abstract class BaseItemListingQuery<
|
|
17
|
+
TClientTypes extends ClientTypes,
|
|
18
|
+
TResponse extends IKontentListResponse,
|
|
19
|
+
TAllResponse extends IKontentListAllResponse,
|
|
20
|
+
TQueryConfig extends IQueryConfig,
|
|
21
|
+
TContract
|
|
22
|
+
> extends BaseListingQuery<TClientTypes, IContentItem, TResponse, TAllResponse, TQueryConfig, TContract> {
|
|
23
|
+
constructor(protected config: IDeliveryClientConfig, protected queryService: QueryService<TClientTypes>) {
|
|
24
|
+
super(config, queryService);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Empty filter condition
|
|
29
|
+
* @param element Element with empty value
|
|
30
|
+
*/
|
|
31
|
+
emptyFilter(element: string): this {
|
|
32
|
+
this.parameters.push(new Filters.EmptyFilter(element));
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Not empty filter condition
|
|
38
|
+
* @param element Element with non-empty value
|
|
39
|
+
*/
|
|
40
|
+
notEmptyFilter(element: string): this {
|
|
41
|
+
this.parameters.push(new Filters.NotEmptyFilter(element));
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Equals filter condition
|
|
47
|
+
* @param element Element to filter. Example: 'elements.movie'
|
|
48
|
+
* @param value Value to match. Example: 'Kingsman'
|
|
49
|
+
*/
|
|
50
|
+
equalsFilter(element: string, value: string): this {
|
|
51
|
+
this.parameters.push(new Filters.EqualsFilter(element, value));
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Not equals filter condition
|
|
57
|
+
* @param element Element to filter. Example: 'elements.movie'
|
|
58
|
+
* @param value Value to match. Example: 'Kingsman'
|
|
59
|
+
*/
|
|
60
|
+
notEqualsFilter(element: string, value: string): this {
|
|
61
|
+
this.parameters.push(new Filters.NotEqualsFilter(element, value));
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* All filter
|
|
67
|
+
* @param element Element to filter.
|
|
68
|
+
* @param values Values
|
|
69
|
+
*/
|
|
70
|
+
allFilter(element: string, values: string[]): this {
|
|
71
|
+
this.parameters.push(new Filters.AllFilter(element, values));
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Any filter
|
|
77
|
+
* @param element Element to filter.
|
|
78
|
+
* @param values Values
|
|
79
|
+
*/
|
|
80
|
+
anyFilter(element: string, values: string[]): this {
|
|
81
|
+
this.parameters.push(new Filters.AnyFilter(element, values));
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Contains filter
|
|
87
|
+
* @param element Element to filter.
|
|
88
|
+
* @param values Values
|
|
89
|
+
*/
|
|
90
|
+
containsFilter(element: string, values: string[]): this {
|
|
91
|
+
this.parameters.push(new Filters.ContainsFilter(element, values));
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Greater then filter
|
|
97
|
+
* @param element Element to filter.
|
|
98
|
+
* @param value Value
|
|
99
|
+
*/
|
|
100
|
+
greaterThanFilter(element: string, value: string | number): this {
|
|
101
|
+
this.parameters.push(new Filters.GreaterThanFilter(element, value));
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Greater then or equals filter
|
|
107
|
+
* @param element Element to filter.
|
|
108
|
+
* @param value Value
|
|
109
|
+
*/
|
|
110
|
+
greaterThanOrEqualFilter(element: string, value: string | number): this {
|
|
111
|
+
this.parameters.push(new Filters.GreaterThanOrEqualFilter(element, value));
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* In filter
|
|
117
|
+
* @param element Element to filter.
|
|
118
|
+
* @param values Values
|
|
119
|
+
*/
|
|
120
|
+
inFilter(element: string, values: string[]): this {
|
|
121
|
+
this.parameters.push(new Filters.InFilter(element, values));
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Not in filter
|
|
127
|
+
* @param element Element to filter.
|
|
128
|
+
* @param values Values
|
|
129
|
+
*/
|
|
130
|
+
notInFilter(element: string, values: string[]): this {
|
|
131
|
+
this.parameters.push(new Filters.NotInFilter(element, values));
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Less then filter
|
|
137
|
+
* @param element Element to filter.
|
|
138
|
+
* @param value Value
|
|
139
|
+
*/
|
|
140
|
+
lessThanFilter(element: string, value: string | number): this {
|
|
141
|
+
this.parameters.push(new Filters.LessThanFilter(element, value));
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @param element Element to filter.
|
|
147
|
+
* @param value Value
|
|
148
|
+
*/
|
|
149
|
+
lessThanOrEqualFilter(element: string, value: string | number): this {
|
|
150
|
+
this.parameters.push(new Filters.LessThanOrEqualFilter(element, value));
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @param element Element to filter.
|
|
156
|
+
* @param lowerValue Lower value of range (e.g. 2)
|
|
157
|
+
* @param higherValue Higher value of range (e.g. 10)
|
|
158
|
+
*/
|
|
159
|
+
rangeFilter(element: string, lowerValue: number | string, higherValue: number | string): this {
|
|
160
|
+
this.parameters.push(new Filters.RangeFilter(element, lowerValue, higherValue));
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Limits the number of items returned by query
|
|
166
|
+
* @param limit Number of items to load
|
|
167
|
+
*/
|
|
168
|
+
limitParameter(limit: number): this {
|
|
169
|
+
this.parameters.push(new Parameters.LimitParameter(limit));
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Orders query based on given element and sort order
|
|
175
|
+
* @param element Element by which to order
|
|
176
|
+
* @param sortOrder Asc/Desc order type
|
|
177
|
+
*/
|
|
178
|
+
orderParameter(element: string, sortOrder: SortOrder): this {
|
|
179
|
+
this.parameters.push(new Parameters.OrderParameter(element, sortOrder));
|
|
180
|
+
return this;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Sets descending order on given element
|
|
185
|
+
* @param element Element by which to order
|
|
186
|
+
*/
|
|
187
|
+
orderByDescending(element: string): this {
|
|
188
|
+
this.parameters.push(new Parameters.OrderParameter(element, 'desc'));
|
|
189
|
+
return this;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Sets Ascending order on given element
|
|
194
|
+
* @param element Element by which to order
|
|
195
|
+
*/
|
|
196
|
+
orderByAscending(element: string): this {
|
|
197
|
+
this.parameters.push(new Parameters.OrderParameter(element, 'asc'));
|
|
198
|
+
return this;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Skips the selected number of items
|
|
203
|
+
* @param skip Number of items to skip
|
|
204
|
+
*/
|
|
205
|
+
skipParameter(skip: number): this {
|
|
206
|
+
this.parameters.push(new Parameters.SkipParameter(skip));
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
protected linkItemsInRte(allContentItems: IContentItem[]): void {
|
|
211
|
+
for (const item of allContentItems) {
|
|
212
|
+
for (const elementKey of Object.keys(item.elements)) {
|
|
213
|
+
const element = item.elements[elementKey];
|
|
214
|
+
|
|
215
|
+
if (element.type === ElementType.ModularContent) {
|
|
216
|
+
const linkedItemElement = element as Elements.LinkedItemsElement;
|
|
217
|
+
|
|
218
|
+
// We create separate array for ordered items because the 'linkedItems' from response might be incomplete
|
|
219
|
+
// e.g. If 4 items are linked, only 2 might be available in the response. Rest needs to be mapped from all available items
|
|
220
|
+
const orderedLinkedItems: IContentItem[] = [];
|
|
221
|
+
|
|
222
|
+
for (const linkedItemCodename of linkedItemElement.value) {
|
|
223
|
+
let linkedItem: IContentItem | undefined;
|
|
224
|
+
|
|
225
|
+
const linkedItemInElement = linkedItemElement.linkedItems.find(
|
|
226
|
+
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
227
|
+
);
|
|
228
|
+
if (linkedItemInElement) {
|
|
229
|
+
linkedItem = linkedItemInElement;
|
|
230
|
+
} else {
|
|
231
|
+
linkedItem = allContentItems.find(
|
|
232
|
+
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (linkedItem) {
|
|
237
|
+
orderedLinkedItems.push(linkedItem);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Replace linked items with the ordered one
|
|
242
|
+
linkedItemElement.linkedItems = orderedLinkedItems;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (element.type === ElementType.RichText) {
|
|
246
|
+
const orderedLinkedItems: IContentItem[] = [];
|
|
247
|
+
|
|
248
|
+
const richTextElement = element as Elements.RichTextElement;
|
|
249
|
+
|
|
250
|
+
for (const linkedItemCodename of richTextElement.linkedItemCodenames) {
|
|
251
|
+
let linkedItem: IContentItem | undefined;
|
|
252
|
+
|
|
253
|
+
const linkedItemInElement = richTextElement.linkedItems.find(
|
|
254
|
+
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
255
|
+
);
|
|
256
|
+
if (linkedItemInElement) {
|
|
257
|
+
linkedItem = linkedItemInElement;
|
|
258
|
+
} else {
|
|
259
|
+
linkedItem = allContentItems.find(
|
|
260
|
+
(m) => m.system.codename.toLowerCase() === linkedItemCodename.toLowerCase()
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (linkedItem) {
|
|
265
|
+
orderedLinkedItems.push(linkedItem);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
richTextElement.linkedItems = orderedLinkedItems;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|