UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

131 lines 6.04 kB
"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.QueryingMapper = void 0; const ta_json_1 = require("ta-json"); const api_1 = require("../constants/api"); const entity_query_result_1 = require("../contracts/querying/entity-query-result"); const entity_search_after_result_1 = require("../contracts/querying/entity-search-after-result"); const id_query_result_1 = require("../contracts/querying/id-query-result"); const minimal_schema_1 = require("../contracts/querying/minimal-schema"); const guard_1 = __importDefault(require("../guard")); class QueryingMapper { constructor(client) { guard_1.default.notNullOrUndefined(client); this._client = client; } mapEntityQueryResultAsync(resource, query, loadConfiguration) { return __awaiter(this, void 0, void 0, function* () { if (resource == null) return null; guard_1.default.notNullOrUndefined(query, "query"); const entities = yield this.getEntitiesAsync(resource); const total = resource.totalItems || 0; const skip = query.skip || 0; const result = new entity_query_result_1.EntityQueryResult(this._client, query, loadConfiguration, entities, total, skip); return result; }); } mapEntityIdQueryResultAsync(resource, query) { return __awaiter(this, void 0, void 0, function* () { if (resource == null) return null; guard_1.default.notNullOrUndefined(query, "query"); const ids = yield this.getEntityIdsAsync(resource); const total = resource.totalItems || 0; const skip = query.skip || 0; const result = new id_query_result_1.EntityIdQueryResult(this._client, query, ids, total, skip); return result; }); } mapEntitySearchAfterResult(resource) { return __awaiter(this, void 0, void 0, function* () { if (resource == null) { return null; } const entities = yield this.getEntitiesForSearchAfterAsync(resource); const total = resource.totalItems || 0; const returnedItems = resource.returnedItems || 0; const result = new entity_search_after_result_1.EntitySearchAfterResult(entities, total, returnedItems, resource.lastHitData); return result; }); } static getMinimalSchemas(resource) { const map = {}; const minimalSchema = resource.minimalSchemaList || resource[api_1.EXTENSION_DATA_KEYS.minimalSchema]; if (minimalSchema == null) { return map; } const schemaTokens = (minimalSchema instanceof Array ? minimalSchema : typeof minimalSchema === "string" ? JSON.parse(minimalSchema) : []); for (const token of schemaTokens) { const schema = ta_json_1.TaJson.deserialize(token, minimal_schema_1.MinimalSchema); map[schema.definitionName] = schema; } return map; } static getMinimalSchemasForSearchAfter(resource) { const map = {}; const minimalSchema = resource.minimalSchemaList || resource[api_1.EXTENSION_DATA_KEYS.minimalSchema]; if (minimalSchema == null) { return map; } const schemaTokens = (minimalSchema instanceof Array ? minimalSchema : typeof minimalSchema === "string" ? JSON.parse(minimalSchema) : []); for (const token of schemaTokens) { const schema = ta_json_1.TaJson.deserialize(token, minimal_schema_1.MinimalSchema); map[schema.definitionName] = schema; } return map; } getEntitiesAsync(resource) { return __awaiter(this, void 0, void 0, function* () { if (!resource.items || !resource.items.length) { return []; } const schemasMap = QueryingMapper.getMinimalSchemas(resource); const resources = resource.items.map(item => item.entity); const entities = yield this._client.entityMapper.mapEntitiesAsync(resources, schemasMap); return entities; }); } getEntitiesForSearchAfterAsync(resource) { return __awaiter(this, void 0, void 0, function* () { if (!resource.items || !resource.items.length) { return []; } const schemasMap = QueryingMapper.getMinimalSchemasForSearchAfter(resource); const entities = yield this._client.entityMapper.mapEntitiesAsync(resource.items, schemasMap); return entities; }); } getEntityIdsAsync(resource) { return __awaiter(this, void 0, void 0, function* () { if (!resource.items || !resource.items.length) { return []; } const links = resource.items.map(item => item.link); const ids = yield this._client.linkHelper.idsFromEntitiesAsync(links); return ids; }); } } exports.QueryingMapper = QueryingMapper; //# sourceMappingURL=querying-mapper.js.map