@sitecore/sc-contenthub-webclient-sdk 1.2.0 → 1.2.2

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.
@@ -11,17 +11,19 @@ export interface IEntityDefinitionsClient {
11
11
  * @param name - The name of the definition
12
12
  * @param includeConditionalMembers - Include conditional members
13
13
  * @param loadPermissions - Load permissions for the definition
14
+ * @param cacheSignature - Signature of the cached resources for controlling browser caching
14
15
  * @returns Promise which resolves to an {@link IEntityDefinition} or null.
15
16
  */
16
- getAsync(name: string, includeConditionalMembers?: boolean, loadPermissions?: boolean): NullableResultPromise<IEntityDefinition>;
17
+ getAsync(name: string, includeConditionalMembers?: boolean, loadPermissions?: boolean, cacheSignature?: string): NullableResultPromise<IEntityDefinition>;
17
18
  /**
18
19
  * Get the {@link IEntityDefinition} instance by the specified id.
19
20
  * @param id - The id of the definition
20
21
  * @param includeConditionalMembers - Include conditional members
21
22
  * @param loadPermissions - Load permissions for the definition
23
+ * @param cacheSignature - Signature of the cached resources for controlling browser caching
22
24
  * @returns Promise which resolves to an {@link IEntityDefinition} or null.
23
25
  */
24
- getAsync(id: number, includeConditionalMembers?: boolean, loadPermissions?: boolean): NullableResultPromise<IEntityDefinition>;
26
+ getAsync(id: number, includeConditionalMembers?: boolean, loadPermissions?: boolean, cacheSignature?: string): NullableResultPromise<IEntityDefinition>;
25
27
  /**
26
28
  * Get all the {@link IEntityDefinition}s.
27
29
  * @param includeConditionalMembers - Include conditional members
@@ -41,14 +43,15 @@ export interface IEntityDefinitionsClient {
41
43
  * @param name - The name of the definition
42
44
  * @param includeConditionalMembers - Include conditional members
43
45
  * @param loadPermissions - Load permissions for the definition
46
+ * @param cacheSignature - Signature of the cached resources for controlling browser caching
44
47
  * @returns Promise which resolves to an {@link IEntityDefinition} or null.
45
48
  */
46
- getCachedAsync(name: string, includeConditionalMembers?: boolean, loadPermissions?: boolean): NullableResultPromise<IEntityDefinition>;
47
- getCachedAsync(id: number, includeConditionalMembers?: boolean, loadPermissions?: boolean): NullableResultPromise<IEntityDefinition>;
48
- getNameAsync(id: number): NullableResultPromise<string>;
49
- getNameCachedAsync(id: number): NullableResultPromise<string>;
50
- getIdAsync(name: string): NullableResultPromise<number>;
51
- getIdCachedAsync(name: string): NullableResultPromise<number>;
49
+ getCachedAsync(name: string, includeConditionalMembers?: boolean, loadPermissions?: boolean, cacheSignature?: string): NullableResultPromise<IEntityDefinition>;
50
+ getCachedAsync(id: number, includeConditionalMembers?: boolean, loadPermissions?: boolean, cacheSignature?: string): NullableResultPromise<IEntityDefinition>;
51
+ getNameAsync(id: number, cacheSignature?: string): NullableResultPromise<string>;
52
+ getNameCachedAsync(id: number, cacheSignature?: string): NullableResultPromise<string>;
53
+ getIdAsync(name: string, cacheSignature?: string): NullableResultPromise<number>;
54
+ getIdCachedAsync(name: string, cacheSignature?: string): NullableResultPromise<number>;
52
55
  /**
53
56
  * Get multiple entity definitions.
54
57
  * @param names - Names of the definitions to fetch
@@ -100,12 +103,12 @@ export declare class EntityDefinitionsClient implements IEntityDefinitionsClient
100
103
  constructor(client: IExtendedContentHubClient);
101
104
  getAllCachedAsync(includeConditionalMembers?: boolean, loadPermissions?: boolean): Promise<Array<IEntityDefinition>>;
102
105
  getAllAsync(includeConditionalMembers?: boolean, loadPermissions?: boolean): Promise<Array<IEntityDefinition>>;
103
- getAsync(param: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean): NullableResultPromise<IEntityDefinition>;
104
- getCachedAsync(param: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean): NullableResultPromise<IEntityDefinition>;
105
- getNameAsync(id: number): NullableResultPromise<string>;
106
- getNameCachedAsync(id: number): NullableResultPromise<string>;
107
- getIdAsync(name: string): NullableResultPromise<number>;
108
- getIdCachedAsync(name: string): NullableResultPromise<number>;
106
+ getAsync(param: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean, cacheSignature?: string): NullableResultPromise<IEntityDefinition>;
107
+ getCachedAsync(param: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean, cacheSignature?: string): NullableResultPromise<IEntityDefinition>;
108
+ getNameAsync(id: number, cacheSignature?: string): NullableResultPromise<string>;
109
+ getNameCachedAsync(id: number, cacheSignature?: string): NullableResultPromise<string>;
110
+ getIdAsync(name: string, cacheSignature?: string): NullableResultPromise<number>;
111
+ getIdCachedAsync(name: string, cacheSignature?: string): NullableResultPromise<number>;
109
112
  getManyAsync(param: Array<string> | Array<number>, includeConditionalMembers?: boolean, loadPermissions?: boolean): Promise<Array<IEntityDefinition>>;
110
113
  getManyCachedAsync(param: Array<string> | Array<number>, includeConditionalMembers?: boolean, loadPermissions?: boolean): Promise<Array<IEntityDefinition>>;
111
114
  getNamesAsync(ids: Array<number>): Promise<MapNumberTo<string>>;
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.EntityDefinitionsClient = void 0;
16
16
  const http_status_codes_1 = require("http-status-codes");
17
17
  const ta_json_1 = require("ta-json");
18
+ const urijs_1 = __importDefault(require("urijs"));
18
19
  const entity_definition_cache_1 = require("../caches/entity-definition-cache");
19
20
  const entity_definition_id_iterator_1 = require("../contracts/querying/entity-definition-id-iterator");
20
21
  const entity_definition_id_query_result_1 = require("../contracts/querying/entity-definition-id-query-result");
@@ -27,7 +28,6 @@ const entity_definition_resource_1 = require("../models/entity-definition-resour
27
28
  const type_guards_1 = require("../type-guards");
28
29
  const array_utilities_1 = require("../utilities/array-utilities");
29
30
  const response_handler_1 = require("./response-handler");
30
- const urijs_1 = __importDefault(require("urijs"));
31
31
  const api_1 = require("../constants/api");
32
32
  class EntityDefinitionsClient {
33
33
  constructor(client) {
@@ -50,54 +50,59 @@ class EntityDefinitionsClient {
50
50
  return allEntityDefinitions;
51
51
  });
52
52
  }
53
- getAsync(param, includeConditionalMembers = true, loadPermissions) {
53
+ getAsync(param, includeConditionalMembers = true, loadPermissions, cacheSignature) {
54
54
  return __awaiter(this, void 0, void 0, function* () {
55
55
  guard_1.default.notNullOrUndefined(param);
56
56
  const link = yield this._client.linkHelper.definitionToLinkAsync(param, includeConditionalMembers, loadPermissions);
57
+ const uri = new urijs_1.default(link.href);
58
+ if (cacheSignature && !uri.hasQuery("after")) {
59
+ uri.addQuery("after", cacheSignature);
60
+ link.href = uri.toString();
61
+ }
57
62
  return this.getDefinitionAsync(link);
58
63
  });
59
64
  }
60
- getCachedAsync(param, includeConditionalMembers = true, loadPermissions) {
65
+ getCachedAsync(param, includeConditionalMembers = true, loadPermissions, cacheSignature) {
61
66
  return __awaiter(this, void 0, void 0, function* () {
62
67
  guard_1.default.notNullOrUndefined(param);
63
68
  let definitionPromise = this._cache.getAsync(param, includeConditionalMembers, loadPermissions);
64
69
  if (!definitionPromise) {
65
- definitionPromise = this.getAsync(param, includeConditionalMembers, loadPermissions);
70
+ definitionPromise = this.getAsync(param, includeConditionalMembers, loadPermissions, cacheSignature);
66
71
  this._cache.loadAsync(param, definitionPromise, includeConditionalMembers, loadPermissions);
67
72
  }
68
73
  return definitionPromise;
69
74
  });
70
75
  }
71
- getNameAsync(id) {
76
+ getNameAsync(id, cacheSignature) {
72
77
  return __awaiter(this, void 0, void 0, function* () {
73
78
  guard_1.default.validId(id);
74
- const definition = yield this.getAsync(id);
79
+ const definition = yield this.getAsync(id, undefined, undefined, cacheSignature);
75
80
  return definition && definition.name;
76
81
  });
77
82
  }
78
- getNameCachedAsync(id) {
83
+ getNameCachedAsync(id, cacheSignature) {
79
84
  return __awaiter(this, void 0, void 0, function* () {
80
85
  guard_1.default.validId(id);
81
86
  let definition = this._cache.get(id);
82
87
  if (!definition) {
83
- definition = yield this.getAsync(id);
88
+ definition = yield this.getAsync(id, undefined, undefined, cacheSignature);
84
89
  }
85
90
  return definition && definition.name;
86
91
  });
87
92
  }
88
- getIdAsync(name) {
93
+ getIdAsync(name, cacheSignature) {
89
94
  return __awaiter(this, void 0, void 0, function* () {
90
95
  guard_1.default.stringNotNullOrEmpty(name);
91
- const definition = yield this.getAsync(name);
96
+ const definition = yield this.getAsync(name, undefined, undefined, cacheSignature);
92
97
  return definition && definition.id;
93
98
  });
94
99
  }
95
- getIdCachedAsync(name) {
100
+ getIdCachedAsync(name, cacheSignature) {
96
101
  return __awaiter(this, void 0, void 0, function* () {
97
102
  guard_1.default.stringNotNullOrEmpty(name);
98
103
  let definition = this._cache.get(name);
99
104
  if (!definition) {
100
- definition = yield this.getAsync(name);
105
+ definition = yield this.getAsync(name, undefined, undefined, cacheSignature);
101
106
  }
102
107
  return definition && definition.id;
103
108
  });
@@ -19,8 +19,9 @@ export interface IOptionListClient {
19
19
  *
20
20
  * @param name - the option list name
21
21
  * @param cancelCallback - A {@link CancelCallback} that will be placed in an Axios {@link CancelToken} if provided
22
+ * @param cacheSignature - Signature of the cached resources for controlling browser caching
22
23
  */
23
- getAsync(name: string, cancelCallback?: CancelCallback): NullableResultPromise<IOptionList>;
24
+ getAsync(name: string, cancelCallback?: CancelCallback, cacheSignature?: string): NullableResultPromise<IOptionList>;
24
25
  /**
25
26
  * Creates a new option list
26
27
  *
@@ -49,7 +50,7 @@ export declare class OptionListClient implements IOptionListClient {
49
50
  constructor(client: IExtendedContentHubClient);
50
51
  getAllNamesAsync(cancelCallback?: CancelCallback): Promise<Array<string>>;
51
52
  getAllDescriptionsAsync(cancelCallback?: CancelCallback): Promise<Array<OptionListDescriptionResource>>;
52
- getAsync(name: string, cancelCallback?: CancelCallback): NullableResultPromise<IOptionList>;
53
+ getAsync(name: string, cancelCallback?: CancelCallback, cacheSignature?: string): NullableResultPromise<IOptionList>;
53
54
  createAsync(optionList: IOptionList, cancelCallback?: CancelCallback): Promise<void>;
54
55
  updateAsync(optionList: IOptionList, cancelCallback?: CancelCallback): Promise<void>;
55
56
  deleteAsync(name: string, cancelCallback?: CancelCallback): Promise<void>;
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.OptionListClient = void 0;
16
16
  const ta_json_1 = require("ta-json");
17
+ const urijs_1 = __importDefault(require("urijs"));
17
18
  const guard_1 = __importDefault(require("../guard"));
18
19
  const option_list_mapper_1 = require("../mappers/option-list-mapper");
19
20
  const option_list_collection_resource_1 = __importDefault(require("../models/option-lists/option-list-collection-resource"));
@@ -41,18 +42,22 @@ class OptionListClient {
41
42
  return resource.items;
42
43
  });
43
44
  }
44
- getAsync(name, cancelCallback) {
45
+ getAsync(name, cancelCallback, cacheSignature) {
45
46
  return __awaiter(this, void 0, void 0, function* () {
46
47
  guard_1.default.stringNotNullOrEmpty(name);
47
48
  const link = yield this._client.linkHelper.dataSourceToLinkAsync(name);
49
+ const uri = new urijs_1.default(link.href);
50
+ if (!uri.hasQuery("after") && cacheSignature) {
51
+ uri.addQuery("after", cacheSignature);
52
+ link.href = uri.toString();
53
+ }
48
54
  const response = yield this._client.raw.getAsync(link.href, undefined, cancelCallback);
49
55
  if (response.statusCode === 404) {
50
56
  return null;
51
57
  }
52
58
  response_handler_1.ResponseHandler.handleErrors(response);
53
59
  const resource = ta_json_1.TaJson.deserialize(response.content, option_list_resource_1.default);
54
- const optionList = this._mapper.mapOptionListAsync(resource);
55
- return optionList;
60
+ return this._mapper.mapOptionListAsync(resource);
56
61
  });
57
62
  }
58
63
  createAsync(optionList, cancelCallback) {
@@ -2,7 +2,7 @@
2
2
  import { MapCultureTo, MapStringTo, Nullable } from "../../base-types";
3
3
  export interface IRelatedPath {
4
4
  readonly name: string;
5
- readonly items: ReadonlyArray<IRelatedPathItem>;
5
+ readonly items: ReadonlyArray<ReadonlyArray<IRelatedPathItem>>;
6
6
  }
7
7
  export interface IRelatedPathItem {
8
8
  readonly values: MapCultureTo<string>;
@@ -15,12 +15,12 @@ class RelatedPathMapper {
15
15
  }
16
16
  const relatedPath = {
17
17
  name: relatedPathName,
18
- items: values.flat().map(item => ({
18
+ items: values.map(items => items.map(item => ({
19
19
  values: item.values,
20
20
  definition: item.definition,
21
21
  entity: item.entity,
22
22
  properties: item.properties || null,
23
- })),
23
+ }))),
24
24
  };
25
25
  list.push(relatedPath);
26
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore/sc-contenthub-webclient-sdk",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Sitecore Content Hub WebClient SDK.",
5
5
  "scripts": {
6
6
  "build": "npm run clean && npm run test && tsc && npm run lint",