UNPKG

@apihawk/help-center-sdk

Version:

The ApiHawk Help Center SDK

81 lines (80 loc) 3.93 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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const help_center_sdk_base_1 = require("./lib/help-center-sdk-base"); const parseTags_1 = require("./services/common/parseTags"); const help_center_sdk_articles_1 = require("./services/help-center-sdk-articles"); const help_center_sdk_categories_1 = require("./services/help-center-sdk-categories"); const help_center_sdk_seo_1 = require("./services/help-center-sdk-seo"); const help_center_sdk_tags_1 = require("./services/help-center-sdk-tags"); class HelpCenterSDK extends help_center_sdk_base_1.HelpCenterSDKBase { constructor(init) { super(init); // Load all services this.helpCenterSDKArticles = new help_center_sdk_articles_1.HelpCenterSDKArticles(this.connection); this.helpCenterSDKCategories = new help_center_sdk_categories_1.HelpCenterSDKCategories(this.connection); this.helpCenterSDKTags = new help_center_sdk_tags_1.HelpCenterSDKTags(this.connection); this.helpCenterSDKSEO = new help_center_sdk_seo_1.HelpCenterSDKSEO(this.connection); } get Articles() { return this.helpCenterSDKArticles; } get Categories() { return this.helpCenterSDKCategories; } get Tags() { return this.helpCenterSDKTags; } get SEO() { return this.helpCenterSDKSEO; } /** * Get articles by category populated * @param categoryId ID of the category * @param {number} page * @param {number} pageSize * @returns {Promise<IRestPaginatedResource<IRestPaginatedResource>>} */ getArticlesByCategoryPopulated(categoryId, page = 1, pageSize = 25) { return __awaiter(this, void 0, void 0, function* () { const content2categories = yield this.helpCenterSDKCategories.getArticleIdsFromCategory(categoryId, page, pageSize); const articleIds = content2categories.items.map((item) => +item.content_id); if (!articleIds || !articleIds.length) { return this.helpCenterSDKArticles.getEmptyList(); } const articles = yield this.helpCenterSDKArticles.getArticles(page, pageSize, { id: articleIds, columns: [ 'id', 'title', 'description', 'tags', 'seo_url', 'primary_category', 'created_at', 'updated_at' ] }); // Parse article tags articles.items = articles.items.map((a) => Object.assign({}, a, { tags: parseTags_1.default(a.tags) })); // Get articles breadcrumbs const breadcrumbs = yield Promise.all(articles.items.map((a) => { return this.helpCenterSDKCategories.getBreadcrumbs(+a.primary_category); })).then((result) => result); // Add breadcrumbs (SEO url) to each article articles.items.forEach((a, i) => { a.breadcrumb = breadcrumbs[i].breadcrumb.slice(1).map((item) => item.seo_url).join('/') + '/' + a.seo_url; }); return articles; }); } } exports.HelpCenterSDK = HelpCenterSDK;