@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
131 lines • 6.04 kB
JavaScript
;
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