UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

109 lines 5.68 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.SchemaQuerying = void 0; const ta_json_1 = require("ta-json"); const urijs_1 = __importDefault(require("urijs")); const URITemplate_1 = __importDefault(require("urijs/src/URITemplate")); const api_1 = require("../constants/api"); const query_request_1 = require("../contracts/querying/query-request"); const query_sort_order_1 = require("../contracts/querying/query-sort-order"); const sort_field_type_1 = require("../contracts/querying/sort-field-type"); const sorting_1 = require("../contracts/querying/sorting"); const guard_1 = __importDefault(require("../guard")); const entity_collection_resource_1 = require("../models/entity-collection-resource"); const query_result_resource_1 = require("../models/query-result-resource"); const response_handler_1 = require("./response-handler"); class SchemaQuerying { constructor(client) { guard_1.default.notNullOrUndefined(client); this._client = client; } queryWithSchemaAsync(query, loadConfiguration, cancelCallback) { return __awaiter(this, void 0, void 0, function* () { guard_1.default.notNullOrUndefined(query, "query"); guard_1.default.notNullOrUndefined(loadConfiguration, "loadConfiguration"); //TODO query.validate(); const routes = yield this._client.api.getApiRoutesAsync(); const queryEndpoint = routes[api_1.QUERY.templateName]; let uri; /* istanbul ignore next */ if (queryEndpoint.templated) { const uriTemplate = new URITemplate_1.default(queryEndpoint.href); uri = uriTemplate.expand({}); } else { uri = new urijs_1.default(queryEndpoint.href); } const queryRequest = new query_request_1.QueryRequest({ query: query, loadConfiguration: loadConfiguration, }); const content = ta_json_1.TaJson.serialize(queryRequest); const resource = yield this.queryEndpointAsync(uri, content, cancelCallback); return resource; }); } // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/require-await scrollWithSchemaAsync(scrollRequest) { return __awaiter(this, void 0, void 0, function* () { throw new Error("Method not implemented."); //TODO }); } searchAfterWithSchemaAsync(query, cancelCallback) { return __awaiter(this, void 0, void 0, function* () { guard_1.default.notNullOrUndefined(query, "query"); guard_1.default.notNullOrUndefined(query.filter, "query.filter"); const routes = yield this._client.api.getApiRoutesAsync(); const queryEndpoint = routes[api_1.SEARCH_AFTER.templateName]; let uri; /* istanbul ignore next */ if (queryEndpoint.templated) { const uriTemplate = new URITemplate_1.default(queryEndpoint.href); uri = uriTemplate.expand({}); } else { uri = new urijs_1.default(queryEndpoint.href); } if (query.sorting == null || query.sorting.length == 0) { query.sorting = [ new sorting_1.Sorting({ field: "created_on", fieldType: sort_field_type_1.SortFieldType.Property, order: query_sort_order_1.QuerySortOrder.Desc }), ]; } const headers = {}; headers[api_1.HEADERS.apiVersion] = "2"; headers[api_1.HEADERS.minimalSchema] = "true"; headers["Content-Type"] = "application/json"; const content = ta_json_1.TaJson.serialize(query); const response = yield this._client.raw.postAsync(uri, content, headers, cancelCallback); response_handler_1.ResponseHandler.handleErrors(response); const resource = ta_json_1.TaJson.deserialize(response.content, entity_collection_resource_1.EntityCollectionResource); return resource; }); } queryEndpointAsync(endpoint, content, cancelCallback) { return __awaiter(this, void 0, void 0, function* () { const response = yield this._client.raw.postAsync(endpoint, content, { [api_1.HEADERS.apiVersion]: "3", [api_1.HEADERS.minimalSchema]: "true", "Content-Type": "application/json", }, cancelCallback); response_handler_1.ResponseHandler.handleErrors(response); const resource = ta_json_1.TaJson.deserialize(response.content, query_result_resource_1.QueryResultResource); return resource; }); } } exports.SchemaQuerying = SchemaQuerying; //# sourceMappingURL=schema-querying.js.map