@cloudize/sdk-core 24.1.5 → 24.1.9

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Cloudize Limited.
3
+ Copyright (c) 2025 Cloudize Limited.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
1
1
  import { IRestClient, RestClientResponse } from '@cloudize/rest-client';
2
- import { IResourceContainer, IResourceObject, ResourceContainerIncludedResourceTypes, ResourceHeaderParams, ResourcePathParams, ResourceFilterName, ResourceFilterValue, ResourceIncludeOption, ResourceSortOption, SDKConfiguration } from '..';
2
+ import { IResourceContainer, IResourceObject, ResourceContainerFacets, ResourceContainerIncludedResourceTypes, ResourceFacetField, ResourceFieldName, ResourceHeaderParams, ResourceObjectType, ResourcePathParams, ResourceFilterName, ResourceFilterValue, ResourceIncludeOption, ResourceSortOption, SDKConfiguration } from '..';
3
3
  export declare enum ResourceFilterType {
4
4
  Equal = "equal",
5
5
  NotEqual = "!equal",
@@ -18,6 +18,7 @@ export default class ResourceContainer implements IResourceContainer {
18
18
  private _count;
19
19
  private _countQueryHash;
20
20
  protected _data: IResourceObject | IResourceObject[];
21
+ protected _facets: ResourceContainerFacets;
21
22
  protected _includes: ResourceContainerIncludedResourceTypes;
22
23
  private _queryParams;
23
24
  private readonly _restClient;
@@ -26,6 +27,7 @@ export default class ResourceContainer implements IResourceContainer {
26
27
  protected pathParams: ResourcePathParams;
27
28
  constructor(params?: ResourceContainerParams);
28
29
  get data(): IResourceObject | IResourceObject[];
30
+ get facets(): ResourceContainerFacets;
29
31
  get includes(): ResourceContainerIncludedResourceTypes;
30
32
  get restClient(): IRestClient;
31
33
  get sdkConfig(): SDKConfiguration;
@@ -49,6 +51,8 @@ export default class ResourceContainer implements IResourceContainer {
49
51
  GetHeaders(action: string): ResourceHeaderParams;
50
52
  private GetQueryParams;
51
53
  IncludedObject(type: string, id: string): IResourceObject;
54
+ Facet(fields: ResourceFacetField[]): IResourceContainer;
55
+ Fields(resourceType: ResourceObjectType, fields: ResourceFieldName[]): IResourceContainer;
52
56
  Filter(filter: ResourceFilterName, selector: ResourceFilterType, value: ResourceFilterValue): IResourceContainer;
53
57
  Sort(option: ResourceSortOption): IResourceContainer;
54
58
  Include(include: ResourceIncludeOption): IResourceContainer;
@@ -29,6 +29,7 @@ var ResourceFilterType;
29
29
  class ResourceContainer {
30
30
  constructor(params) {
31
31
  this._data = undefined;
32
+ this._facets = undefined;
32
33
  this._includes = {};
33
34
  this._restClient = (0, json_1.isDefined)(params === null || params === void 0 ? void 0 : params.restClient) ? params === null || params === void 0 ? void 0 : params.restClient : new rest_client_1.RestClient();
34
35
  this._sdkConfig = (0, json_1.isDefined)(params === null || params === void 0 ? void 0 : params.sdkConfig) ? params === null || params === void 0 ? void 0 : params.sdkConfig : (0, __1.SDKConfig)();
@@ -36,6 +37,7 @@ class ResourceContainer {
36
37
  this.pathParams = {};
37
38
  this._queryParams = {
38
39
  includes: {},
40
+ fields: {},
39
41
  filters: {},
40
42
  sort: undefined,
41
43
  pagination: {},
@@ -44,6 +46,9 @@ class ResourceContainer {
44
46
  get data() {
45
47
  throw new Error('Method or Property not implemented.');
46
48
  }
49
+ get facets() {
50
+ return this._facets;
51
+ }
47
52
  get includes() {
48
53
  return this._includes;
49
54
  }
@@ -76,6 +81,7 @@ class ResourceContainer {
76
81
  }
77
82
  ClearData() {
78
83
  this._data = undefined;
84
+ this._facets = undefined;
79
85
  this._includes = {};
80
86
  }
81
87
  AddResourceToMemoryStructure(obj) {
@@ -138,6 +144,24 @@ class ResourceContainer {
138
144
  }
139
145
  }
140
146
  }
147
+ if ((0, json_1.hasProperty)(response.data, 'meta') && (0, json_1.isObject)(response.data.meta)) {
148
+ if ((0, json_1.hasProperty)(response.data.meta, 'facets') && (0, json_1.isObject)(response.data.meta.facets)) {
149
+ this._facets = {};
150
+ for (const facetFieldName in response.data.meta.facets) {
151
+ if ((0, json_1.hasProperty)(response.data.meta.facets, facetFieldName)) {
152
+ this._facets[facetFieldName] = {};
153
+ for (const facetValue in response.data.meta.facets[facetFieldName]) {
154
+ if ((0, json_1.hasProperty)(response.data.meta.facets[facetFieldName], facetValue)) {
155
+ if ((0, json_1.isDefinedAndNotNull)(response.data.meta.facets[facetFieldName][facetValue])
156
+ && (0, json_1.isNumber)(response.data.meta.facets[facetFieldName][facetValue])) {
157
+ this._facets[facetFieldName][facetValue] = response.data.meta.facets[facetFieldName][facetValue];
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
141
165
  }
142
166
  Add() {
143
167
  throw new Error('Method or Property not implemented.');
@@ -227,6 +251,7 @@ class ResourceContainer {
227
251
  InitParams() {
228
252
  this._queryParams = {
229
253
  includes: {},
254
+ fields: {},
230
255
  filters: {},
231
256
  sort: undefined,
232
257
  pagination: {},
@@ -279,6 +304,14 @@ class ResourceContainer {
279
304
  }
280
305
  if (includeList.length > 0)
281
306
  queryParams.include = includeList.join(',');
307
+ if ((0, json_1.hasProperty)(this._queryParams, 'facets') && (0, json_1.isDefined)(this._queryParams.facets)) {
308
+ queryParams.facets = this._queryParams.facets;
309
+ }
310
+ for (const resourceType in this._queryParams.fields) {
311
+ if ((0, json_1.hasProperty)(this._queryParams.fields, resourceType)) {
312
+ queryParams[`fields[${resourceType}]`] = this._queryParams.fields[resourceType];
313
+ }
314
+ }
282
315
  if ((0, json_1.hasProperty)(this._queryParams.pagination, 'offset'))
283
316
  queryParams['page[offset]'] = this._queryParams.pagination.offset;
284
317
  if ((0, json_1.hasProperty)(this._queryParams.pagination, 'page'))
@@ -294,6 +327,14 @@ class ResourceContainer {
294
327
  IncludedObject(type, id) {
295
328
  throw new Error('Method or Property not implemented.');
296
329
  }
330
+ Facet(fields) {
331
+ this._queryParams.facets = fields.join(',');
332
+ return this;
333
+ }
334
+ Fields(resourceType, fields) {
335
+ this._queryParams.fields[resourceType] = fields.join(',');
336
+ return this;
337
+ }
297
338
  Filter(filter, selector, value) {
298
339
  this._queryParams.filters[`${selector}:${filter}`] = value;
299
340
  return this;
@@ -1,2 +1,2 @@
1
1
  export { ISDKError, ISDKRequestError, ISDKException, ISDKRequestException, } from './sdk.errors';
2
- export { IResourceContainer, ResourceContainerIncludedResourceTypes, ResourceFilterName, ResourceFilterValue, ResourceSortOption, ResourceIncludeOption, IResourceObject, IResourceObjectAttributes, IResourceObjectRelationships, GeospatialPoint, ResourceObjectAttributeBase, ResourceObjectAttributesLoadType, ResourceObjectRelationshipLinkObject, ResourceObjectRelationshipLink, ResourceObjectRelationshipsLinks, ResourceObjectRelationshipsLoadType, ResourceObjectRelationship, ResourceObjectRelationships, ResourceObjectUri, ResourceObjectRelationshipBase, } from './resource.interfaces';
2
+ export { IResourceContainer, ResourceContainerFacetValue, ResourceContainerFacets, ResourceContainerIncludedResourceTypes, ResourceFacetField, ResourceFieldName, ResourceFilterName, ResourceFilterValue, ResourceObjectType, ResourceSortOption, ResourceIncludeOption, IResourceObject, IResourceObjectAttributes, IResourceObjectRelationships, GeospatialPoint, ResourceObjectAttributeBase, ResourceObjectAttributesLoadType, ResourceObjectRelationshipLinkObject, ResourceObjectRelationshipLink, ResourceObjectRelationshipsLinks, ResourceObjectRelationshipsLoadType, ResourceObjectRelationship, ResourceObjectRelationships, ResourceObjectUri, ResourceObjectRelationshipBase, } from './resource.interfaces';
@@ -19,6 +19,12 @@ export type ResourceObjectRelationshipLink = {
19
19
  export type ResourceObjectRelationshipsLinks = {
20
20
  data: ResourceObjectRelationshipLinkObject[];
21
21
  };
22
+ export type ResourceContainerFacetValue = {
23
+ [value: string]: number;
24
+ };
25
+ export type ResourceContainerFacets = {
26
+ [fieldName: string]: ResourceContainerFacetValue;
27
+ };
22
28
  export type ResourceContainerIncludedResources = {
23
29
  [id: string]: IResourceObject;
24
30
  };
@@ -70,15 +76,20 @@ export interface IResourceObject {
70
76
  UpdateAttributes(value: any): void;
71
77
  UpdateRelationships(value: any): void;
72
78
  }
79
+ export type ResourceFacetField = string;
80
+ export type ResourceFieldName = string;
73
81
  export type ResourceFilterName = string;
74
82
  export type ResourceFilterValue = string;
75
83
  export type ResourceSortOption = string;
76
84
  export type ResourceIncludeOption = string;
77
85
  export interface IResourceContainer {
78
86
  data: IResourceObject | IResourceObject[];
87
+ facets: ResourceContainerFacets;
79
88
  includes: ResourceContainerIncludedResourceTypes;
80
89
  restClient: IRestClient;
81
90
  uri: string;
91
+ Facet(fields: ResourceFacetField[]): IResourceContainer;
92
+ Fields(resource: ResourceObjectType, fields: ResourceFieldName[]): IResourceContainer;
82
93
  Filter(filter: ResourceFilterName, selector: ResourceFilterType, value: ResourceFilterValue): IResourceContainer;
83
94
  GetHeaders(action: string): ResourceHeaderParams;
84
95
  Sort(option: ResourceSortOption): IResourceContainer;
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "description": "Cloudize SDK Core",
15
15
  "license": "MIT",
16
- "version": "24.1.5",
16
+ "version": "24.1.9",
17
17
  "main": "lib/index.js",
18
18
  "types": "lib/index.d.ts",
19
19
  "scripts": {
@@ -33,26 +33,26 @@
33
33
  "test:watch": "jest --watch"
34
34
  },
35
35
  "dependencies": {
36
- "@cloudize/json": "^24.1.5",
37
- "@cloudize/rest-client": "^24.1.5",
36
+ "@cloudize/json": "^24.1.8",
37
+ "@cloudize/rest-client": "^24.1.8",
38
38
  "object-hash": "^3.0.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/date-and-time": "^0.13.0",
42
- "@types/jest": "^29.5.12",
43
- "@types/node": "^20.14.15",
42
+ "@types/jest": "^29.5.14",
43
+ "@types/node": "^20.17.14",
44
44
  "@typescript-eslint/eslint-plugin": "^7.18.0",
45
45
  "@typescript-eslint/parser": "^7.18.0",
46
- "date-and-time": "^3.4.1",
47
- "eslint": "^8.57.0",
46
+ "date-and-time": "^3.6.0",
47
+ "eslint": "^8.57.1",
48
48
  "eslint-config-airbnb": "^19.0.4",
49
- "eslint-plugin-import": "^2.29.1",
50
- "eslint-plugin-jsx-a11y": "^6.9.0",
51
- "eslint-plugin-react": "^7.35.0",
49
+ "eslint-plugin-import": "^2.31.0",
50
+ "eslint-plugin-jsx-a11y": "^6.10.2",
51
+ "eslint-plugin-react": "^7.37.4",
52
52
  "eslint-plugin-react-hooks": "^4.6.2",
53
53
  "jest": "^29.7.0",
54
- "ts-jest": "^29.2.4",
55
- "typescript": "^5.5.4"
54
+ "ts-jest": "^29.2.5",
55
+ "typescript": "^5.7.3"
56
56
  },
57
57
  "eslintConfig": {},
58
58
  "repository": {