docula 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/docula.d.ts CHANGED
@@ -363,6 +363,9 @@ declare class DoculaBuilder {
363
363
  buildRobotsPage(options: DoculaOptions): Promise<void>;
364
364
  buildSiteMapPage(data: DoculaData): Promise<void>;
365
365
  buildFeedPage(data: DoculaData): Promise<void>;
366
+ buildChangelogFeedJson(data: DoculaData): Promise<void>;
367
+ buildChangelogLatestFeedJson(data: DoculaData): Promise<void>;
368
+ private writeChangelogFeedJson;
366
369
  buildLlmsFiles(data: DoculaData): Promise<void>;
367
370
  private generateLlmsIndexContent;
368
371
  private generateLlmsFullContent;
package/dist/docula.js CHANGED
@@ -1360,6 +1360,12 @@ var DoculaBuilder = class {
1360
1360
  await this.buildFeedPage(doculaData);
1361
1361
  this._console.fileBuilt("feed.xml");
1362
1362
  }
1363
+ if (doculaData.hasChangelog && doculaData.templates?.changelogEntry) {
1364
+ await this.buildChangelogFeedJson(doculaData);
1365
+ this._console.fileBuilt("changelog.json");
1366
+ await this.buildChangelogLatestFeedJson(doculaData);
1367
+ this._console.fileBuilt("changelog-latest.json");
1368
+ }
1363
1369
  if (doculaData.hasDocuments) {
1364
1370
  this._console.step("Building documentation pages...");
1365
1371
  await this.buildDocsPages(doculaData);
@@ -1580,6 +1586,12 @@ var DoculaBuilder = class {
1580
1586
  if (data.documents?.length) {
1581
1587
  urls.push({ url: `${data.siteUrl}${data.baseUrl}/feed.xml` });
1582
1588
  }
1589
+ if (data.hasChangelog && data.templates?.changelogEntry) {
1590
+ urls.push({ url: `${data.siteUrl}${data.baseUrl}/changelog.json` });
1591
+ urls.push({
1592
+ url: `${data.siteUrl}${data.baseUrl}/changelog-latest.json`
1593
+ });
1594
+ }
1583
1595
  if (data.openApiUrl && data.templates?.api) {
1584
1596
  urls.push({
1585
1597
  url: `${data.siteUrl}${data.apiUrl}`
@@ -1663,6 +1675,73 @@ var DoculaBuilder = class {
1663
1675
  await fs3.promises.mkdir(data.output, { recursive: true });
1664
1676
  await fs3.promises.writeFile(feedPath, xml, "utf8");
1665
1677
  }
1678
+ async buildChangelogFeedJson(data) {
1679
+ const entries = data.changelogEntries;
1680
+ if (!entries?.length) {
1681
+ return;
1682
+ }
1683
+ await this.writeChangelogFeedJson(data, entries, "changelog.json");
1684
+ }
1685
+ async buildChangelogLatestFeedJson(data) {
1686
+ const entries = data.changelogEntries;
1687
+ if (!entries?.length) {
1688
+ return;
1689
+ }
1690
+ const latestEntries = entries.slice(0, this.options.changelogPerPage);
1691
+ await this.writeChangelogFeedJson(
1692
+ data,
1693
+ latestEntries,
1694
+ "changelog-latest.json"
1695
+ );
1696
+ }
1697
+ async writeChangelogFeedJson(data, entries, filename) {
1698
+ const feedUrl = this.buildAbsoluteSiteUrl(
1699
+ data.siteUrl,
1700
+ `${data.baseUrl}/${filename}`
1701
+ );
1702
+ const homeUrl = this.buildAbsoluteSiteUrl(data.siteUrl, `${data.baseUrl}/`);
1703
+ const items = entries.map((entry) => {
1704
+ const itemUrl = this.buildAbsoluteSiteUrl(
1705
+ data.siteUrl,
1706
+ `${data.changelogUrl}/${entry.slug}/`
1707
+ );
1708
+ const item = {
1709
+ id: entry.slug,
1710
+ title: entry.title,
1711
+ url: itemUrl,
1712
+ date_published: entry.date,
1713
+ date_modified: entry.lastModified,
1714
+ summary: entry.preview
1715
+ };
1716
+ if (entry.generatedHtml) {
1717
+ item.content_html = entry.generatedHtml;
1718
+ }
1719
+ if (entry.content) {
1720
+ item.content_text = entry.content;
1721
+ }
1722
+ if (entry.tag) {
1723
+ item.tags = [entry.tag];
1724
+ }
1725
+ if (entry.previewImage) {
1726
+ item.image = entry.previewImage;
1727
+ }
1728
+ return item;
1729
+ });
1730
+ const feed = {
1731
+ version: "https://jsonfeed.org/version/1.1",
1732
+ title: data.siteTitle,
1733
+ description: data.siteDescription,
1734
+ home_page_url: homeUrl,
1735
+ feed_url: feedUrl,
1736
+ items
1737
+ };
1738
+ await fs3.promises.mkdir(data.output, { recursive: true });
1739
+ await fs3.promises.writeFile(
1740
+ `${data.output}/${filename}`,
1741
+ JSON.stringify(feed, null, 2),
1742
+ "utf8"
1743
+ );
1744
+ }
1666
1745
  async buildLlmsFiles(data) {
1667
1746
  if (!this.options.enableLlmsTxt) {
1668
1747
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docula",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Beautiful Website for Your Projects",
5
5
  "type": "module",
6
6
  "main": "./dist/docula.js",