@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
JavaScript
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
;