UNPKG

@ng-doc/builder

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

63 lines 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.API_PAGE_WRAPPER_BUILDER_TAG = exports.API_ENTRY_BUILDER_TAG = void 0; exports.apiBuilder = apiBuilder; const builder_1 = require("@ng-doc/builder"); const core_1 = require("@ng-doc/core"); const rxjs_1 = require("rxjs"); const helpers_1 = require("../../../helpers"); const core_2 = require("../../core"); const page_wrapper_builder_1 = require("../shared/page-wrapper.builder"); const api_list_builder_1 = require("./api-list.builder"); const api_list_component_builder_1 = require("./api-list-component.builder"); const api_page_template_builder_1 = require("./api-page-template.builder"); const render_api_header_1 = require("./render-api-header"); exports.API_ENTRY_BUILDER_TAG = 'ApiFile'; exports.API_PAGE_WRAPPER_BUILDER_TAG = 'ApiPageWrapper'; /** * * @param context * @param apiPath */ function apiBuilder(context, apiPath) { let destroyFn = core_1.EMPTY_FUNCTION; return (0, builder_1.entryBuilder)({ tag: exports.API_ENTRY_BUILDER_TAG, context, entryPath: apiPath }).pipe((0, core_2.whenDone)((metadata) => { if (metadata.entry.keyword) { destroyFn = builder_1.keywordsStore.add([ `*${metadata.entry.keyword}`, { title: metadata.entry.title, path: metadata.absoluteRoute(), type: 'link', }, ]); } const declarations = metadata.entry.scopes .map((scope) => Array.from((0, helpers_1.findDeclarations)(context.project, (0, core_1.asArray)(scope.include), (0, core_1.asArray)(scope.exclude)).entries()).map(([id, declaration]) => [ id, [scope, (0, builder_1.createDeclarationMetadata)(context, declaration, metadata, scope)], ])) .flat(); const data = Array.from(new Map(declarations).values()); const pageBuilders = data.map(([scope, metadata]) => (0, page_wrapper_builder_1.pageWrapperBuilder)({ tag: exports.API_PAGE_WRAPPER_BUILDER_TAG, context, metadata, pageType: 'api', pageTemplateBuilders: [ (0, api_page_template_builder_1.apiPageTemplateBuilder)({ context, metadata, tabMetadata: (0, builder_1.createDeclarationTabMetadata)(metadata, { title: metadata.title, folder: 'api', }), scope, }), ], getHeaderContent: () => (0, render_api_header_1.renderApiHeader)({ metadata }), })); return (0, rxjs_1.merge)(...pageBuilders, (0, api_list_builder_1.apiListBuilder)({ context, metadata, data }), (0, api_list_component_builder_1.apiListComponentBuilder)({ metadata })); }), (0, rxjs_1.finalize)(() => destroyFn())); } //# sourceMappingURL=index.js.map