@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
493 lines • 22.1 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkHelper = void 0;
const URITemplate_1 = __importDefault(require("urijs/src/URITemplate"));
const constants_1 = require("./constants");
const api_1 = require("./constants/api");
const argument_error_1 = require("./errors/argument-error");
const guard_1 = __importDefault(require("./guard"));
const link_1 = __importDefault(require("./link"));
const type_guards_1 = require("./type-guards");
class LinkHelper {
constructor(client) {
guard_1.default.notNullOrUndefined(client);
this._client = client;
}
//#region DataSources
nameFromDataSourceAsync(link) {
return __awaiter(this, void 0, void 0, function* () {
if (link == null)
return null;
const variable = yield this.getVariableValueAsync(link, api_1.DATA_SOURCE_BY_NAME.templateName, api_1.DATA_SOURCE_BY_NAME.name);
return variable || null;
});
}
dataSourceToLinkAsync(name) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.stringNotNullOrEmpty(name);
return yield this.bindAsync(api_1.DATA_SOURCE_BY_NAME.templateName, { [api_1.DATA_SOURCE_BY_NAME.name]: name });
});
}
dataSourcesLinkAsync() {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
return routes[api_1.DATA_SOURCES.templateName];
});
}
//#endregion
//#region Definitions
nameFromDefinitionAsync(link) {
return __awaiter(this, void 0, void 0, function* () {
if (!link)
return null;
const variable = yield this.getVariableValueAsync(link, api_1.ENTITY_DEFINITION_BY_NAME.templateName, api_1.ENTITY_DEFINITION_BY_NAME.name);
return variable || null;
});
}
namesFromDefinitionsAsync(links) {
return __awaiter(this, void 0, void 0, function* () {
if (!links)
return [];
const result = [];
yield Promise.all(links.map((link) => __awaiter(this, void 0, void 0, function* () {
result.push(yield this.nameFromDefinitionAsync(link));
})));
return result;
});
}
definitionToLinkAsync(param, includeConditionalMembers, loadPermissions) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.notNullOrUndefined(param);
if (typeof param === "string") {
guard_1.default.stringNotNullOrEmpty(param);
const variables = {
[api_1.ENTITY_DEFINITION_BY_NAME.name]: param,
};
if (includeConditionalMembers != null) {
variables[api_1.ENTITY_DEFINITION_BY_NAME.includeConditionalMembers] = includeConditionalMembers.toString();
}
if (loadPermissions != null) {
variables[api_1.ENTITY_DEFINITION_BY_NAME.loadPermissions] = loadPermissions.toString();
}
return yield this.bindAsync(api_1.ENTITY_DEFINITION_BY_NAME.templateName, variables);
}
else {
guard_1.default.validId(param);
const variables = {
[api_1.ENTITY_DEFINITION_BY_ID.id]: param.toString(),
};
if (includeConditionalMembers != null) {
variables[api_1.ENTITY_DEFINITION_BY_ID.includeConditionalMembers] = includeConditionalMembers.toString();
}
if (loadPermissions != null) {
variables[api_1.ENTITY_DEFINITION_BY_ID.loadPermissions] = loadPermissions.toString();
}
return yield this.bindAsync(api_1.ENTITY_DEFINITION_BY_ID.templateName, variables);
}
});
}
definitionToLinkV2Async(name, includeConditionalMembers, loadPermissions) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.stringNotNullOrEmpty(name);
const variables = {
[api_1.ENTITY_DEFINITION_BY_NAME_V2.name]: name,
};
if (includeConditionalMembers != null) {
variables[api_1.ENTITY_DEFINITION_BY_NAME_V2.includeConditionalMembers] = includeConditionalMembers.toString();
}
if (loadPermissions != null) {
variables[api_1.ENTITY_DEFINITION_BY_NAME_V2.loadPermissions] = loadPermissions.toString();
}
return yield this.bindAsync(api_1.ENTITY_DEFINITION_BY_NAME_V2.templateName, variables);
});
}
definitionsToLinkAsync(values, skip, take, includeConditionalMembers, viewMode, loadPermissions, excludeTaxonomyDefinitions, excludeSystemOwnedDefinitions) {
var arguments_1 = arguments;
return __awaiter(this, void 0, void 0, function* () {
const variables = LinkHelper.applyEntityDefinitionVariables({
skip,
take,
includeConditionalMembers,
viewMode,
loadPermissions,
excludeTaxonomyDefinitions,
excludeSystemOwnedDefinitions,
});
if (values == null && arguments_1.length === 1) {
throw new argument_error_1.ArgumentError("Missing function arguments.");
}
if (values) {
guard_1.default.arrayNotEmpty(values);
if (type_guards_1.TypeGuards.isStringArray(values)) {
variables[api_1.ENTITY_DEFINITIONS.definitionsToLoadByName] = values.join();
}
else {
variables[api_1.ENTITY_DEFINITIONS.definitionsToLoadById] = values.join();
}
}
return yield this.bindAsync(api_1.ENTITY_DEFINITIONS.templateName, variables);
});
}
definitionsLinkAsync(skip, take, includeConditionalMembers, viewMode, loadPermissions, excludeTaxonomyDefinitions, excludeSystemOwnedDefinitions, filter, definitionsToLoadByName, definitionsToLoadById, excludeLightDefinitions) {
return __awaiter(this, void 0, void 0, function* () {
const variables = LinkHelper.applyEntityDefinitionVariables({
skip,
take,
includeConditionalMembers,
viewMode,
loadPermissions,
excludeTaxonomyDefinitions,
excludeSystemOwnedDefinitions,
filter,
definitionsToLoadByName,
definitionsToLoadById,
excludeLightDefinitions,
});
return yield this.bindAsync(api_1.ENTITY_DEFINITIONS.templateName, variables);
});
}
//#endregion
//#region Entities
idFromEntityAsync(link) {
return __awaiter(this, void 0, void 0, function* () {
if (!link)
return null;
const variable = yield this.getVariableValueAsync(link, api_1.ENTITY_BY_ID.templateName, api_1.ENTITY_BY_ID.id);
if (!variable)
return null;
guard_1.default.parsableInteger(variable);
return parseInt(variable);
});
}
idsFromEntitiesAsync(links) {
return __awaiter(this, void 0, void 0, function* () {
if (!links || links.length === 0)
return [];
const list = [];
for (const link of links) {
const id = yield this.idFromEntityAsync(link);
if (id != null && id !== 0) {
list.push(id);
}
}
return list;
});
}
entityToLinkAsync(param, culture) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.notNullOrUndefined(param);
if (typeof param === "string") {
guard_1.default.stringNotNullOrEmpty(param);
return yield this.bindAsync(api_1.ENTITY_BY_IDENTIFIER.templateName, {
[api_1.ENTITY_BY_IDENTIFIER.identifier]: param,
});
}
else {
const variables = {
[api_1.ENTITY_BY_ID.id]: param.toString(),
};
if (culture != null) {
variables[api_1.ENTITY_BY_ID.culture] = culture;
}
return yield this.bindAsync(api_1.ENTITY_BY_ID.templateName, variables);
}
});
}
relationToLinkAsync(id, name) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.notNullOrUndefined(id);
const variables = {
[api_1.ENTITY_RELATION_BY_NAME.id]: id.toString(),
};
if (name != null) {
variables[api_1.ENTITY_RELATION_BY_NAME.name] = name;
}
return yield this.bindAsync(api_1.ENTITY_RELATION_BY_NAME.templateName, variables);
});
}
entitiesToLinksAsync(ids) {
return __awaiter(this, void 0, void 0, function* () {
if (!ids || ids.length === 0)
return [];
guard_1.default.validIds(ids);
const list = [];
for (const id of ids) {
const link = yield this.entityToLinkAsync(id);
if (link) {
list.push(link);
}
}
return list;
});
}
identifierFromEntityAsync(link) {
return __awaiter(this, void 0, void 0, function* () {
if (!link)
return null;
return yield this.getVariableValueAsync(link, api_1.ENTITY_BY_IDENTIFIER.templateName, api_1.ENTITY_BY_IDENTIFIER.identifier);
});
}
entitiesLinkAsync() {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
return routes[api_1.ENTITIES.templateName];
});
}
permissionsForEntityToLinkAsync(id) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(id);
return yield this.bindAsync(api_1.PERMISSIONS_FOR_ENTITY.templateName, api_1.PERMISSIONS_FOR_ENTITY.id, id.toString());
});
}
explainUserPermissionsForEntityToLinkAsync(id, userId) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(id);
guard_1.default.validId(userId);
const variables = {
[api_1.EXPLAIN_USER_PERMISSIONS_FOR_ENTITY.id]: id.toString(),
[api_1.EXPLAIN_USER_PERMISSIONS_FOR_ENTITY.userId]: userId.toString(),
};
return yield this.bindAsync(api_1.EXPLAIN_USER_PERMISSIONS_FOR_ENTITY.templateName, variables);
});
}
copyEntityToLinkAsync(id) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(id);
return yield this.bindAsync(api_1.COPY_ENTITY.templateName, api_1.COPY_ENTITY.id, id.toString());
});
}
//#endregion
//#region Passwords
setUserPasswordToLinkAsync(userId) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(userId);
return yield this.bindAsync(api_1.SET_USER_PASSWORD.templateName, api_1.SET_USER_PASSWORD.userId, userId.toString());
});
}
resetPasswordToLinkAsync(userId) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(userId);
return yield this.bindAsync(api_1.RESET_PASSWORD.templateName, api_1.RESET_PASSWORD.userId, userId.toString());
});
}
//#endregion
//#region Policy
policyToLinkAsync(id) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(id);
return yield this.bindAsync(constants_1.API.POLICY_BY_ID.templateName, constants_1.API.POLICY_BY_ID.id, id.toString());
});
}
idFromPolicyAsync(link) {
return __awaiter(this, void 0, void 0, function* () {
if (link == null) {
return null;
}
const variable = yield this.getVariableValueAsync(link, constants_1.API.POLICY_BY_ID.templateName, constants_1.API.POLICY_BY_ID.id);
guard_1.default.parsableInteger(variable);
return parseInt(variable);
});
}
//#endregion
//#region Commands
commandToLinkAsync(namespace, command) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.stringNotNullOrEmpty(namespace);
guard_1.default.stringNotNullOrEmpty(command);
const variables = {
[constants_1.API.COMMANDS.folder]: namespace,
[constants_1.API.COMMANDS.command]: command,
};
const res = yield this.bindAsync(constants_1.API.COMMANDS.templateName, variables);
return res;
});
}
//#endregion
//#region Mails
sendConfirmationMailToLinkAsync(userId) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.validId(userId);
return yield this.bindAsync(api_1.SEND_CONFIRMATION_MAIL.templateName, api_1.SEND_CONFIRMATION_MAIL.userId, userId.toString());
});
}
sendNotificationToLinkAsync(notificationType) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.stringNotNullOrEmpty(notificationType);
const task = yield this.bindAsync(api_1.SEND_NOTIFICATION.templateName, api_1.SEND_NOTIFICATION.type, notificationType);
return task;
});
}
//#endregion
//#region Aggregates
aggregateToLinkAsync(aggregateName_1, entityId_1, culture_1) {
return __awaiter(this, arguments, void 0, function* (aggregateName, entityId, culture, { loadPermissions, loadOptionLists = true, loadSettings = true, loadEntities = true, loadDefinitions = true, } = {}) {
guard_1.default.stringNotNullOrEmpty(aggregateName);
guard_1.default.validId(entityId);
const variables = {
[constants_1.API.AGGREGATES.name]: aggregateName,
[constants_1.API.AGGREGATES.id]: entityId.toString(),
[constants_1.API.AGGREGATES.loadOptionLists]: loadOptionLists.toString(),
[constants_1.API.AGGREGATES.loadSettings]: loadSettings.toString(),
[constants_1.API.AGGREGATES.loadDefinitions]: loadDefinitions.toString(),
[constants_1.API.AGGREGATES.loadEntities]: loadEntities.toString(),
};
if (culture) {
variables[constants_1.API.AGGREGATES.culture] = culture;
}
if (loadPermissions != undefined) {
variables[constants_1.API.AGGREGATES.loadPermissions] = loadPermissions.toString();
}
const aggregateLink = yield this.bindAsync(api_1.AGGREGATES.templateName, variables);
return aggregateLink;
});
}
//#endregion
//#region PageResource
pageResourceToLinkAsync(page, culture, entityId) {
return __awaiter(this, void 0, void 0, function* () {
guard_1.default.stringNotNullOrEmpty(culture);
guard_1.default.notNullOrUndefined(page);
const variables = {
[constants_1.API.PAGE_BY_IDENTIFIER.culture]: culture,
};
if (entityId) {
variables[constants_1.API.PAGE_BY_IDENTIFIER.entityId] = entityId.toString();
}
let templateName = "";
if (typeof page === "string") {
guard_1.default.stringNotNullOrEmpty(page);
variables[constants_1.API.PAGE_BY_IDENTIFIER.identifier] = page;
templateName = constants_1.API.PAGE_BY_IDENTIFIER.templateName;
}
else {
guard_1.default.validId(page);
variables[constants_1.API.PAGE_BY_ID.id] = page.toString();
templateName = constants_1.API.PAGE_BY_ID.templateName;
}
const pageLink = yield this.bindAsync(templateName, variables);
return pageLink;
});
}
//#endregion
//#region Search
searchLinkAsync() {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
return routes[api_1.SEARCH.templateName];
});
}
allFacetsAsync() {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
return routes[api_1.ALL_FACETS.templateName];
});
}
//#endregion
// #region Search
settingByNameLink(categoryName, settingName) {
return __awaiter(this, void 0, void 0, function* () {
return yield this.bindAsync(api_1.SETTING.templateName, {
[api_1.SETTING.category]: categoryName,
[api_1.SETTING.name]: settingName,
});
});
}
//#endregion
//#region Upload
createUploadToLinkAsync() {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
return routes[api_1.UPLOAD.templateName];
});
}
finalizeUploadToLinkAsync() {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
return routes[api_1.UPLOAD_FINALIZE.templateName];
});
}
//#endregion
getVariableValueAsync(link, templateName, variable) {
return __awaiter(this, void 0, void 0, function* () {
const routes = yield this._client.api.getApiRoutesAsync();
const value = link.getVariableValue(routes[templateName], variable);
return value;
});
}
bindAsync(templateName, value, argument) {
return __awaiter(this, void 0, void 0, function* () {
let values = {};
if (typeof value === "string") {
guard_1.default.stringNotNullOrEmpty(value);
guard_1.default.notNullOrUndefined(argument);
values[value] = argument;
}
else {
values = value;
}
const routes = yield this._client.api.getApiRoutesAsync();
const link = routes[templateName];
if (!link.templated) {
return new link_1.default(link.href);
}
else {
const template = new URITemplate_1.default(link.href);
return new link_1.default(template.expand(values));
}
});
}
static applyEntityDefinitionVariables({ skip, take, filter, definitionsToLoad, definitionsToLoadByName, definitionsToLoadById, viewMode, loadPermissions, includeConditionalMembers, excludeTaxonomyDefinitions, excludeSystemOwnedDefinitions, excludeLightDefinitions, }) {
const variables = {};
if (skip != null && skip !== 0) {
variables[api_1.ENTITY_DEFINITIONS.skip] = skip.toString();
}
if (take != null) {
variables[api_1.ENTITY_DEFINITIONS.take] = take.toString();
}
if (includeConditionalMembers != null) {
variables[api_1.ENTITY_DEFINITIONS.includeConditionalMembers] = includeConditionalMembers.toString();
}
if (viewMode != null) {
variables[api_1.ENTITY_DEFINITIONS.viewMode] = viewMode;
}
if (loadPermissions != null) {
variables[api_1.ENTITY_DEFINITIONS.loadPermissions] = loadPermissions.toString();
}
if (filter != null) {
variables[api_1.ENTITY_DEFINITIONS.filter] = filter;
}
if (definitionsToLoad != null) {
variables[api_1.ENTITY_DEFINITIONS.definitionsToLoad] = definitionsToLoad.toString();
}
if (definitionsToLoadByName != null) {
variables[api_1.ENTITY_DEFINITIONS.definitionsToLoadByName] = definitionsToLoadByName.toString();
}
if (definitionsToLoadById != null) {
variables[api_1.ENTITY_DEFINITIONS.definitionsToLoadById] = definitionsToLoadById.toString();
}
if (excludeTaxonomyDefinitions != null) {
variables[api_1.ENTITY_DEFINITIONS.excludeTaxonomyDefinitions] = excludeTaxonomyDefinitions.toString();
}
if (excludeSystemOwnedDefinitions != null) {
variables[api_1.ENTITY_DEFINITIONS.excludeSystemOwnedDefinitions] = excludeSystemOwnedDefinitions.toString();
}
if (excludeLightDefinitions != null) {
variables[api_1.ENTITY_DEFINITIONS.excludeLightDefinitions] = excludeLightDefinitions.toString();
}
return variables;
}
}
exports.LinkHelper = LinkHelper;
//# sourceMappingURL=link-helper.js.map