UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

124 lines 5.56 kB
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()); }); }; import { TaJson } from "ta-json"; import { EXTENSION_DATA_KEYS } from "../constants/api"; import { EntityQueryResult } from "../contracts/querying/entity-query-result"; import { EntitySearchAfterResult } from "../contracts/querying/entity-search-after-result"; import { EntityIdQueryResult } from "../contracts/querying/id-query-result"; import { MinimalSchema } from "../contracts/querying/minimal-schema"; import Guard from "../guard"; export class QueryingMapper { constructor(client) { Guard.notNullOrUndefined(client); this._client = client; } mapEntityQueryResultAsync(resource, query, loadConfiguration) { return __awaiter(this, void 0, void 0, function* () { if (resource == null) return null; Guard.notNullOrUndefined(query, "query"); const entities = yield this.getEntitiesAsync(resource); const total = resource.totalItems || 0; const skip = query.skip || 0; const result = new 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.notNullOrUndefined(query, "query"); const ids = yield this.getEntityIdsAsync(resource); const total = resource.totalItems || 0; const skip = query.skip || 0; const result = new 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 EntitySearchAfterResult(entities, total, returnedItems, resource.lastHitData); return result; }); } static getMinimalSchemas(resource) { const map = {}; const minimalSchema = resource.minimalSchemaList || resource[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 = TaJson.deserialize(token, MinimalSchema); map[schema.definitionName] = schema; } return map; } static getMinimalSchemasForSearchAfter(resource) { const map = {}; const minimalSchema = resource.minimalSchemaList || resource[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 = TaJson.deserialize(token, 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; }); } } //# sourceMappingURL=querying-mapper.js.map