UNPKG

changelog-guru

Version:
115 lines (114 loc) 6.34 kB
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _PackageStatisticRenderRule_sections, _PackageStatisticRenderRule_templates; import { ChangeType, Dependencies, Restriction } from 'package-json-helper/types/package'; import TaskTree from 'tasktree-cli'; import md from '../../utils/markdown.js'; import { ChangeLevel } from '../entities/Entity.js'; import Message from '../entities/Message.js'; import Section, { SectionOrder, SectionPosition } from '../entities/Section.js'; import { BaseRule } from './BaseRule.js'; export var TemplateLiteral; (function (TemplateLiteral) { TemplateLiteral["Name"] = "%name%"; TemplateLiteral["Value"] = "%val%"; TemplateLiteral["PrevValue"] = "%pval%"; })(TemplateLiteral || (TemplateLiteral = {})); const SECTION_TITLES_MAP = { [Dependencies.Engines]: 'Engines', [Dependencies.Dependencies]: 'Dependencies', [Dependencies.DevDependencies]: 'Dev Dependencies', [Dependencies.OptionalDependencies]: 'Optional Dependencies', [Dependencies.PeerDependencies]: 'Peer Dependencies', [Restriction.BundledDependencies]: 'Bundled Dependencies', [Restriction.CPU]: 'CPU', [Restriction.OS]: 'OS', }; const COLLAPSIBLE_SECTIONS_MAP = [ Dependencies.Dependencies, Dependencies.DevDependencies, Dependencies.OptionalDependencies, Dependencies.PeerDependencies, Restriction.BundledDependencies, ]; class PackageStatisticRenderRule extends BaseRule { constructor(config) { super(config); _PackageStatisticRenderRule_sections.set(this, []); _PackageStatisticRenderRule_templates.set(this, void 0); const changes = Object.values(ChangeType); __classPrivateFieldSet(this, _PackageStatisticRenderRule_templates, Object.entries(config.templates).filter(([type]) => changes.includes(type)), "f"); __classPrivateFieldSet(this, _PackageStatisticRenderRule_sections, [...new Set(config.sections)], "f"); } modify({ task, context }) { const section = context.addSection({ name: this.config.title, position: SectionPosition.Header }); const dependencies = new Section({ name: 'Dependencies', position: SectionPosition.Subsection, order: __classPrivateFieldGet(this, _PackageStatisticRenderRule_sections, "f").length, }); if (section) { section.order = SectionOrder.Min; this.createLicenseSection({ context, task, section }); [...__classPrivateFieldGet(this, _PackageStatisticRenderRule_sections, "f").values()].forEach((type, order) => { const changes = context.getChanges(type); if (changes?.length) { const text = this.renderChanges(changes, task); if (text) { const isDetails = COLLAPSIBLE_SECTIONS_MAP.includes(type); const position = isDetails ? SectionPosition.Details : SectionPosition.Subsection; const subsection = new Section({ name: SECTION_TITLES_MAP[type], position, order }); subsection.add(new Message(text)); (isDetails ? dependencies : section).add(subsection); } } }); if (dependencies.sections.length) section.add(dependencies); } } createLicenseSection({ task, context, section }) { if (context.hasChangedLicense) { const subsection = new Section({ name: 'License', position: SectionPosition.Subsection }); const { currentLicense, previousLicense } = context; const message = previousLicense ? `License changed from ${md.license(previousLicense)} to ${md.license(currentLicense)}.` : `Source code now under ${md.wrap(currentLicense)} license.`; task.warn(`License changed from {bold.underline ${previousLicense}} to {bold.underline ${currentLicense}}.`); subsection.add(new Message(message, ChangeLevel.Major)); section.add(subsection); } } renderChanges(changes, task) { return __classPrivateFieldGet(this, _PackageStatisticRenderRule_templates, "f").reduce((acc, [type, template]) => { const items = changes .filter(change => change.type === type) .map(({ name, link, ...change }) => md.list(template.replace(/%[a-z]{3,4}%/g, (substring) => { switch (substring) { case TemplateLiteral.Name: return md.strong(link ? md.link(name, link) : name); case TemplateLiteral.Value: return md.wrap(change.value.current); case TemplateLiteral.PrevValue: return md.wrap(change.value.previous); default: (task || TaskTree).fail(`Unexpected template literal: {bold ${substring}}`); break; } return substring; }))); return [acc, ...items].join('\n'); }, ''); } } _PackageStatisticRenderRule_sections = new WeakMap(), _PackageStatisticRenderRule_templates = new WeakMap(); export default PackageStatisticRenderRule;