docula 0.3.6 → 0.4.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.
Files changed (152) hide show
  1. package/README.md +108 -39
  2. package/bin/docula.mjs +8 -0
  3. package/dist/builder.d.ts +34 -0
  4. package/dist/builder.js +182 -0
  5. package/dist/console.d.ts +22 -0
  6. package/dist/console.js +120 -0
  7. package/dist/docula.d.ts +22 -21
  8. package/dist/docula.js +126 -165
  9. package/dist/github.d.ts +22 -0
  10. package/dist/github.js +74 -0
  11. package/dist/helpers/markdown.d.ts +10 -0
  12. package/dist/helpers/markdown.js +24 -0
  13. package/dist/helpers.d.ts +7 -0
  14. package/dist/helpers.js +58 -0
  15. package/dist/options.d.ts +12 -0
  16. package/dist/options.js +47 -0
  17. package/init/docula.config.cjs +10 -0
  18. package/init/favicon.ico +0 -0
  19. package/init/logo.png +0 -0
  20. package/init/variables.css +30 -0
  21. package/package.json +63 -95
  22. package/{init/_includes/assets/css/styles → template/css}/home.css +20 -18
  23. package/{init/_includes/assets/css/styles → template/css}/index.css +7 -0
  24. package/template/includes/footer.hbs +10 -0
  25. package/template/includes/header.hbs +17 -0
  26. package/template/includes/landing/content.hbs +63 -0
  27. package/template/includes/landing/hero.hbs +3 -0
  28. package/template/includes/scripts.hbs +4 -0
  29. package/template/index.hbs +16 -0
  30. package/template/releases.hbs +45 -0
  31. package/bin/docula.js +0 -7
  32. package/dist/config.d.ts +0 -21
  33. package/dist/config.d.ts.map +0 -1
  34. package/dist/config.js +0 -78
  35. package/dist/config.js.map +0 -1
  36. package/dist/docula-plugin.d.ts +0 -9
  37. package/dist/docula-plugin.d.ts.map +0 -1
  38. package/dist/docula-plugin.js +0 -2
  39. package/dist/docula-plugin.js.map +0 -1
  40. package/dist/docula.d.ts.map +0 -1
  41. package/dist/docula.js.map +0 -1
  42. package/dist/eleventy/filters.d.ts +0 -2
  43. package/dist/eleventy/filters.d.ts.map +0 -1
  44. package/dist/eleventy/filters.js +0 -10
  45. package/dist/eleventy/filters.js.map +0 -1
  46. package/dist/eleventy/global-data.d.ts +0 -3
  47. package/dist/eleventy/global-data.d.ts.map +0 -1
  48. package/dist/eleventy/global-data.js +0 -2
  49. package/dist/eleventy/global-data.js.map +0 -1
  50. package/dist/eleventy/shortcodes.d.ts +0 -4
  51. package/dist/eleventy/shortcodes.d.ts.map +0 -1
  52. package/dist/eleventy/shortcodes.js +0 -18
  53. package/dist/eleventy/shortcodes.js.map +0 -1
  54. package/dist/eleventy.d.ts +0 -24
  55. package/dist/eleventy.d.ts.map +0 -1
  56. package/dist/eleventy.js +0 -82
  57. package/dist/eleventy.js.map +0 -1
  58. package/dist/index.d.ts +0 -9
  59. package/dist/index.d.ts.map +0 -1
  60. package/dist/index.js +0 -53
  61. package/dist/index.js.map +0 -1
  62. package/dist/logger.d.ts +0 -4
  63. package/dist/logger.d.ts.map +0 -1
  64. package/dist/logger.js +0 -20
  65. package/dist/logger.js.map +0 -1
  66. package/dist/plugins/algolia.d.ts +0 -21
  67. package/dist/plugins/algolia.d.ts.map +0 -1
  68. package/dist/plugins/algolia.js +0 -54
  69. package/dist/plugins/algolia.js.map +0 -1
  70. package/dist/plugins/github.d.ts +0 -16
  71. package/dist/plugins/github.d.ts.map +0 -1
  72. package/dist/plugins/github.js +0 -68
  73. package/dist/plugins/github.js.map +0 -1
  74. package/dist/plugins/index.d.ts +0 -18
  75. package/dist/plugins/index.d.ts.map +0 -1
  76. package/dist/plugins/index.js +0 -16
  77. package/dist/plugins/index.js.map +0 -1
  78. package/dist/plugins/npm.d.ts +0 -14
  79. package/dist/plugins/npm.d.ts.map +0 -1
  80. package/dist/plugins/npm.js +0 -36
  81. package/dist/plugins/npm.js.map +0 -1
  82. package/dist/plugins/pagefind.d.ts +0 -10
  83. package/dist/plugins/pagefind.d.ts.map +0 -1
  84. package/dist/plugins/pagefind.js +0 -22
  85. package/dist/plugins/pagefind.js.map +0 -1
  86. package/dist/plugins/robots.d.ts +0 -14
  87. package/dist/plugins/robots.d.ts.map +0 -1
  88. package/dist/plugins/robots.js +0 -34
  89. package/dist/plugins/robots.js.map +0 -1
  90. package/dist/plugins/sitemap.d.ts +0 -11
  91. package/dist/plugins/sitemap.d.ts.map +0 -1
  92. package/dist/plugins/sitemap.js +0 -27
  93. package/dist/plugins/sitemap.js.map +0 -1
  94. package/dist/schemas.d.ts +0 -21
  95. package/dist/schemas.d.ts.map +0 -1
  96. package/dist/schemas.js +0 -25
  97. package/dist/schemas.js.map +0 -1
  98. package/dist/tools/__mocks__/inquirer-prompt.d.ts +0 -20
  99. package/dist/tools/__mocks__/inquirer-prompt.d.ts.map +0 -1
  100. package/dist/tools/__mocks__/inquirer-prompt.js +0 -19
  101. package/dist/tools/__mocks__/inquirer-prompt.js.map +0 -1
  102. package/dist/tools/__mocks__/path.d.ts +0 -5
  103. package/dist/tools/__mocks__/path.d.ts.map +0 -1
  104. package/dist/tools/__mocks__/path.js +0 -7
  105. package/dist/tools/__mocks__/path.js.map +0 -1
  106. package/dist/tools/inquirer-prompt.d.ts +0 -11
  107. package/dist/tools/inquirer-prompt.d.ts.map +0 -1
  108. package/dist/tools/inquirer-prompt.js +0 -139
  109. package/dist/tools/inquirer-prompt.js.map +0 -1
  110. package/dist/tools/path.d.ts +0 -4
  111. package/dist/tools/path.d.ts.map +0 -1
  112. package/dist/tools/path.js +0 -6
  113. package/dist/tools/path.js.map +0 -1
  114. package/dist/tools/tools.d.ts +0 -3
  115. package/dist/tools/tools.d.ts.map +0 -1
  116. package/dist/tools/tools.js +0 -10
  117. package/dist/tools/tools.js.map +0 -1
  118. package/dist/types/config.d.ts +0 -8
  119. package/dist/types/config.d.ts.map +0 -1
  120. package/dist/types/config.js +0 -2
  121. package/dist/types/config.js.map +0 -1
  122. package/init/_data/site.json +0 -5
  123. package/init/_includes/assets/css/styles/search/algolia.css +0 -125
  124. package/init/_includes/assets/css/styles/search/pagefind.css +0 -60
  125. package/init/_includes/assets/css/styles/variables.css +0 -30
  126. package/init/_includes/assets/images/docula-logo-horizontal.webp +0 -0
  127. package/init/_includes/assets/images/logo.svg +0 -10
  128. package/init/_includes/doc.njk +0 -22
  129. package/init/_includes/landing/landingHero.njk +0 -8
  130. package/init/_includes/landing/singlePage.njk +0 -24
  131. package/init/_includes/multipage/header.njk +0 -23
  132. package/init/_includes/multipage/homeHeader.njk +0 -20
  133. package/init/_includes/multipage/main.njk +0 -47
  134. package/init/_includes/multipage/scripts.njk +0 -47
  135. package/init/_includes/multipage/searchEngine.njk +0 -5
  136. package/init/_includes/multipage/searchModal.njk +0 -19
  137. package/init/_includes/multipage/sidebar.njk +0 -50
  138. package/init/_includes/search/algolia.njk +0 -98
  139. package/init/_includes/search/pagefind.njk +0 -66
  140. package/init/_includes/shared/footer.njk +0 -4
  141. package/init/_includes/shared/head.njk +0 -15
  142. package/init/_includes/shared/highlightScript.njk +0 -6
  143. package/init/_includes/shared/homeData.njk +0 -49
  144. package/init/api/Readme.md +0 -3
  145. package/init/docs/Readme.md +0 -83
  146. package/init/docs/docs.json +0 -13
  147. package/init/index.njk +0 -28
  148. package/init/releases.njk +0 -38
  149. package/init/search-index.md +0 -14
  150. package/init/versions.njk +0 -40
  151. /package/{init/_includes/assets → template}/css/highlight/highlight.min.js +0 -0
  152. /package/{init/_includes/assets → template}/css/highlight/styles/base16/dracula.min.css +0 -0
package/README.md CHANGED
@@ -1,51 +1,120 @@
1
- <img src="branding-guidelines/Docula Logos/PNG/Color/docula.png" />
1
+ ![Docula](site/logo.svg)
2
2
 
3
- # Docula
3
+ ---
4
4
 
5
+ ## Beautiful Website for Your Projects
5
6
  [![tests](https://github.com/jaredwray/docula/actions/workflows/tests.yaml/badge.svg)](https://github.com/jaredwray/docula/actions/workflows/tests.yaml)
6
- [![codecov](https://codecov.io/github/jaredwray/docula/branch/main/graph/badge.svg?token=RS0GPY4V4M)](https://codecov.io/github/jaredwray/docula)
7
- [![release](https://github.com/jaredwray/docula/actions/workflows/release.yaml/badge.svg)](https://github.com/jaredwray/docula/actions/workflows/release.yaml)
8
- [![npm](https://img.shields.io/npm/dm/docula.svg)](https://www.npmjs.com/package/docula)
9
- [![npm](https://img.shields.io/npm/v/docula.svg)](https://www.npmjs.com/package/docula)
7
+ [![GitHub license](https://img.shields.io/github/license/jaredwray/docula)](https://github.com/jaredwray/docula/blob/master/LICENSE)
8
+ [![codecov](https://codecov.io/gh/jaredwray/docula/graph/badge.svg?token=RS0GPY4V4M)](https://codecov.io/gh/jaredwray/docula)
9
+ [![npm](https://img.shields.io/npm/dm/docula)](https://npmjs.com/package/docula)
10
+ [![npm](https://img.shields.io/npm/v/docula)](https://npmjs.com/package/docula)
11
+
12
+ ---
13
+ ## Table of Contents
14
+ - [Features](#features)
15
+ - [Getting Started](#getting-started)
16
+ - [Using Your own Template](#using-your-own-template)
17
+ - [Building Multiple Pages](#building-multiple-pages)
18
+ - [Helper Functions for Markdown](#helper-functions-for-markdown)
19
+ - [Code of Conduct and Contributing](#code-of-conduct-and-contributing)
20
+ - [License - MIT](#license)
10
21
 
11
22
  ## Features
23
+ * No configuration requrired. Just setup the folder structure with a logo, favicon, and css file.
24
+ * Builds a static website that can be hosted anywhere.
25
+ * For more complex projects easily add a `docula.config.js` or `docula.config.ts` file to customize the build process. With PRE and POST methods.
26
+ * Support for single page with readme or multiple markdown pages in a docs folder.
27
+ * Will generate a sitemap.xml and robots.txt for your site.
28
+ * Uses Github release notes to generate a changelog / releases page.
29
+ * Uses Github to show contributors and link to their profiles.
30
+ * Simple search is provided by default out of the box.
31
+
32
+ ## Getting Started
33
+
34
+ ## 1. Install docula
35
+
36
+ > npx docula init
12
37
 
13
- - Zero Config - no config needed
14
- - Can run from `npx` or installed globally
15
- - Knowledge Base that is easy to setup and manage
16
- - Beautiful and Responsive Design
17
- - Search Engine Optimized and Plugin (Algolia) and local search by default.
18
- - Convention over Configuration - just add your files, use a template (or build your own) and you're done.
19
- - Will generate a sitemap.xml
20
- - Will generate a robots.txt
21
- - Will generate a release based on Github Releases
22
- - Generatses an RSS feed.xml file to use and share
23
-
24
- ## Site Structure
25
-
26
- - `site/docs` - contains the documentation files
27
- - `site/template` - contains the templates files
28
-
29
- This will all be generated in the `dist` folder by default. To change that you can use the `--output=<folder_name>` flag.
30
-
31
- ### Github Integration
32
- - Pull all of your Contributors and Display Them
33
- - Pulls your release notes and puts it into a good looking data format for your templates
34
- - Pulls your project stats based on Github Forks, Stars, and Watchers
35
- ## How the CLI should work
36
- To create a new project it should be as simple as:
37
- ```bash
38
- docula init <project-name>
38
+ This will create a folder called site with the following structure:
39
+
40
+ ```
41
+ site
42
+ ├───site.css
43
+ ├───logo.png
44
+ ├───favicon.ico
45
+ ├───README.md
46
+ ├───docula.config.js
39
47
  ```
48
+ Note: for typescript do 'docula init --typescript'
49
+
50
+ ## 2. Add your content
51
+
52
+ Simply replace the logo, favicon, and css file with your own. The readme is your root project readme and you just need to at build time move it over to the site folder. If you have it at the root of the project and this is a folder inside just delete the README.md file in the site folder and docula will copy it over for you automatically.
53
+
54
+ ## 3. Build your site
55
+
56
+ > npx docula
57
+
58
+ This will build your site and place it in the `dist` folder. You can then host it anywhere you like.
59
+
60
+ ## Using Your own Template
61
+
62
+ If you want to use your own template you can do so by adding a `docula.config.ts` file to the root of your project. This file will be used to configure the build process.
63
+
64
+ or at the command line:
65
+
66
+ > npx docula --template path/to/template
40
67
 
41
- This will actually do all the scaffolding for the site setting up the package.json, the config file, and the templates. It will also install the default template.
68
+ ## Building Multiple Pages
42
69
 
43
- To build the site just do:
44
- ```bash
45
- docula <path optional>
70
+ If you want to build multiple pages you can easily do that by adding in a `docs` folder to the root of the site folder. Inside of that folder you can add as many pages as you like. Each page will be a markdown file and it will generate a table of contents for you. Here is an example of what it looks like:
71
+
72
+ ```
73
+ site
74
+ ├───site.css
75
+ ├───logo.png
76
+ ├───favicon.ico
77
+ ├───docula.config.ts
78
+ ├───docs
79
+ │ ├───getting-started.md
80
+ │ ├───contributing.md
81
+ │ ├───license.md
82
+ │ ├───code-of-conduct.md
46
83
  ```
47
84
 
48
- To build the site and watch for changes:
49
- ```bash
50
- docula <path optional> --serve --watch --port=8081
85
+ The `readme.md` file will be the root page and the rest will be added to the table of contents. If you want to control the title or order of the pages you can do so by setting the `title` and `order` properties in the front matter of the markdown file. Here is an example:
86
+
87
+ ```md
88
+ ---
89
+ title: Getting Started
90
+ order: 2
91
+ ---
92
+ ```
93
+
94
+ ## Helper Functions for Markdown
95
+
96
+ docula comes with some helper functions that you can use in your markdown files.
97
+ * `doculaHelpers.getFrontMatter(fileName)` - Gets the front matter of a markdown file.
98
+ * `doculaHelpers.setFrontMatter(fileName, frontMatter)` - Sets the front matter of a markdown file.
99
+ * `doculaHelpers.createDoc(source, destination, frontMatter?, contentFn[]?)` - Creates a markdown file with the specified front matter and content. The contentFn is a function that is executed on the original content of the file. This is useful if you want to remove content from the original file.
100
+
101
+ ### Remove html content
102
+
103
+ In some cases your markdown file will have html content in it such as the logo of your project or a badge. You can use the `wrtirHelpers.removeHtmlContent()` helper function to remove that content from the page. Here is an example:
104
+
105
+ ### Get and Set the Front Matter of a Markdown File
106
+
107
+ You can use the `doculaHelpers.getFrontMatter()` and `doculaHelpers.setFrontMatter()` helper functions to get and set the front matter of a markdown file. Here is an example:
108
+
109
+ ```js
110
+ const frontMatter = doculaHelpers.getFrontMatter('../readme.md');
111
+ frontMatter.title = 'My Title';
112
+ doculaHelpers.setFrontMatter('../readme.md', frontMatter);
51
113
  ```
114
+
115
+ ## Code of Conduct and Contributing
116
+ [Code of Conduct](CODE_OF_CONDUCT.md) and [Contributing](CONTRIBUTING.md) guidelines.
117
+
118
+ ## License
119
+
120
+ MIT © [Jared Wray](https://jaredwray.com)
package/bin/docula.mjs ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ts-node
2
+
3
+ import * as process from 'node:process';
4
+ import Docula from '../dist/docula.js';
5
+
6
+ const docula = new Docula();
7
+
8
+ await docula.execute(process);
@@ -0,0 +1,34 @@
1
+ import { DoculaOptions } from './options.js';
2
+ import { type GithubData } from './github.js';
3
+ export type DoculaData = {
4
+ siteUrl: string;
5
+ siteTitle: string;
6
+ siteDescription: string;
7
+ sitePath: string;
8
+ templatePath: string;
9
+ outputPath: string;
10
+ githubPath?: string;
11
+ github?: GithubData;
12
+ templates?: DoculaTemplates;
13
+ };
14
+ export type DoculaTemplates = {
15
+ index: string;
16
+ releases: string;
17
+ };
18
+ export declare class DoculaBuilder {
19
+ private readonly _options;
20
+ private readonly _ecto;
21
+ private readonly _console;
22
+ constructor(options?: DoculaOptions, engineOptions?: any);
23
+ get options(): DoculaOptions;
24
+ build(): Promise<void>;
25
+ validateOptions(options: DoculaOptions): void;
26
+ getGithubData(githubPath: string): Promise<GithubData>;
27
+ getTemplates(options: DoculaOptions): Promise<DoculaTemplates>;
28
+ getTemplateFile(path: string, name: string): Promise<string | undefined>;
29
+ buildRobotsPage(options: DoculaOptions): Promise<void>;
30
+ buildSiteMapPage(data: DoculaData): Promise<void>;
31
+ buildIndexPage(data: DoculaData): Promise<void>;
32
+ buildReleasePage(data: DoculaData): Promise<void>;
33
+ buildReadmeSection(data: DoculaData): Promise<string>;
34
+ }
@@ -0,0 +1,182 @@
1
+ import { Ecto } from 'ecto';
2
+ import fs from 'fs-extra';
3
+ import { DoculaOptions } from './options.js';
4
+ import { DoculaConsole } from './console.js';
5
+ import { Github } from './github.js';
6
+ export class DoculaBuilder {
7
+ _options = new DoculaOptions();
8
+ _ecto;
9
+ _console = new DoculaConsole();
10
+ constructor(options, engineOptions) {
11
+ if (options) {
12
+ this._options = options;
13
+ }
14
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
15
+ this._ecto = new Ecto(engineOptions);
16
+ }
17
+ get options() {
18
+ return this._options;
19
+ }
20
+ async build() {
21
+ const startTime = Date.now();
22
+ // Validate the options
23
+ this.validateOptions(this.options);
24
+ // Set the site options
25
+ const doculaData = {
26
+ siteUrl: this.options.siteUrl,
27
+ siteTitle: this.options.siteTitle,
28
+ siteDescription: this.options.siteDescription,
29
+ sitePath: this.options.sitePath,
30
+ templatePath: this.options.templatePath,
31
+ outputPath: this.options.outputPath,
32
+ githubPath: this.options.githubPath,
33
+ };
34
+ // Get data from github
35
+ const githubData = await this.getGithubData(this.options.githubPath);
36
+ // Get data of the site
37
+ doculaData.github = githubData;
38
+ // Get the templates to use
39
+ doculaData.templates = await this.getTemplates(this.options);
40
+ // Build the home page (index.html)
41
+ await this.buildIndexPage(doculaData);
42
+ // Build the releases page (/releases/index.html)
43
+ await this.buildReleasePage(doculaData);
44
+ // Build the sitemap (/sitemap.xml)
45
+ await this.buildSiteMapPage(doculaData);
46
+ // Build the robots.txt (/robots.txt)
47
+ await this.buildRobotsPage(this.options);
48
+ const siteRelativePath = this.options.sitePath;
49
+ // Copy over favicon
50
+ if (await fs.pathExists(`${siteRelativePath}/favicon.ico`)) {
51
+ await fs.copy(`${siteRelativePath}/favicon.ico`, `${this.options.outputPath}/favicon.ico`);
52
+ }
53
+ // Copy over logo
54
+ if (await fs.pathExists(`${siteRelativePath}/logo.svg`)) {
55
+ await fs.copy(`${siteRelativePath}/logo.svg`, `${this.options.outputPath}/logo.svg`);
56
+ }
57
+ // Copy over css
58
+ if (await fs.pathExists(`${this.options.templatePath}/css`)) {
59
+ await fs.copy(`${this.options.templatePath}/css`, `${this.options.outputPath}/css`);
60
+ }
61
+ // Copy over variables
62
+ if (await fs.pathExists(`${siteRelativePath}/variables.css`)) {
63
+ await fs.copy(`${siteRelativePath}/variables.css`, `${this.options.outputPath}/css/variables.css`);
64
+ }
65
+ const endTime = Date.now();
66
+ const executionTime = endTime - startTime;
67
+ this._console.log(`Build completed in ${executionTime}ms`);
68
+ }
69
+ validateOptions(options) {
70
+ if (options.githubPath.length < 3) {
71
+ throw new Error('No github options provided');
72
+ }
73
+ if (options.siteDescription.length < 3) {
74
+ throw new Error('No site description options provided');
75
+ }
76
+ if (!options.siteTitle) {
77
+ throw new Error('No site title options provided');
78
+ }
79
+ if (!options.siteUrl) {
80
+ throw new Error('No site url options provided');
81
+ }
82
+ }
83
+ async getGithubData(githubPath) {
84
+ const paths = githubPath.split('/');
85
+ const options = {
86
+ author: paths[0],
87
+ repo: paths[1],
88
+ };
89
+ const github = new Github(options);
90
+ return github.getData();
91
+ }
92
+ async getTemplates(options) {
93
+ const templates = {
94
+ index: '',
95
+ releases: '',
96
+ };
97
+ if (await fs.pathExists(options.templatePath)) {
98
+ const index = await this.getTemplateFile(options.templatePath, 'index');
99
+ if (index) {
100
+ templates.index = index;
101
+ }
102
+ const releases = await this.getTemplateFile(options.templatePath, 'releases');
103
+ if (releases) {
104
+ templates.releases = releases;
105
+ }
106
+ }
107
+ else {
108
+ throw new Error(`No template path found at ${options.templatePath}`);
109
+ }
110
+ return templates;
111
+ }
112
+ async getTemplateFile(path, name) {
113
+ let result;
114
+ const files = await fs.readdir(path);
115
+ for (const file of files) {
116
+ const fileName = file.split('.');
117
+ if (fileName[0].toString().toLowerCase() === name.toLowerCase()) {
118
+ result = file.toString();
119
+ break;
120
+ }
121
+ }
122
+ return result;
123
+ }
124
+ async buildRobotsPage(options) {
125
+ const { sitePath } = options;
126
+ const { outputPath } = options;
127
+ const robotsPath = `${outputPath}/robots.txt`;
128
+ await fs.ensureDir(outputPath);
129
+ await ((await fs.pathExists(`${sitePath}/robots.txt`))
130
+ ? fs.copy(`${sitePath}/robots.txt`, robotsPath)
131
+ : fs.writeFile(robotsPath, 'User-agent: *\nDisallow:'));
132
+ }
133
+ async buildSiteMapPage(data) {
134
+ const sitemapPath = `${data.outputPath}/sitemap.xml`;
135
+ const urls = [{ url: data.siteUrl }, { url: `${data.siteUrl}/releases` }];
136
+ let xml = '<?xml version="1.0" encoding="UTF-8"?>';
137
+ xml += '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
138
+ for (const { url } of urls) {
139
+ xml += '<url>';
140
+ xml += `<loc>${url}</loc>`;
141
+ xml += '</url>';
142
+ }
143
+ xml += '</urlset>';
144
+ await fs.ensureDir(data.outputPath);
145
+ await fs.writeFile(sitemapPath, xml, 'utf8');
146
+ }
147
+ async buildIndexPage(data) {
148
+ if (data.templates) {
149
+ const indexPath = `${data.outputPath}/index.html`;
150
+ await fs.ensureDir(data.outputPath);
151
+ const indexTemplate = `${data.templatePath}/${data.templates.index}`;
152
+ const htmlReadme = await this.buildReadmeSection(data);
153
+ const indexContent = await this._ecto.renderFromFile(indexTemplate, { ...data, content: htmlReadme }, data.templatePath);
154
+ await fs.writeFile(indexPath, indexContent, 'utf8');
155
+ }
156
+ else {
157
+ throw new Error('No templates found');
158
+ }
159
+ }
160
+ async buildReleasePage(data) {
161
+ if (data.github && data.templates) {
162
+ const releasesPath = `${data.outputPath}/releases/index.html`;
163
+ const releaseOutputPath = `${data.outputPath}/releases`;
164
+ await fs.ensureDir(releaseOutputPath);
165
+ const releasesTemplate = `${data.templatePath}/${data.templates.releases}`;
166
+ const releasesContent = await this._ecto.renderFromFile(releasesTemplate, data, data.templatePath);
167
+ await fs.writeFile(releasesPath, releasesContent, 'utf8');
168
+ }
169
+ else {
170
+ throw new Error('No github data found');
171
+ }
172
+ }
173
+ async buildReadmeSection(data) {
174
+ let htmlReadme = '';
175
+ if (fs.existsSync(`${data.sitePath}/README.md`)) {
176
+ const readmeContent = fs.readFileSync(`${data.sitePath}/README.md`, 'utf8');
177
+ htmlReadme = await this._ecto.markdown.render(readmeContent);
178
+ }
179
+ return htmlReadme;
180
+ }
181
+ }
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFzQyxNQUFNLGFBQWEsQ0FBQztBQW1CeEUsTUFBTSxPQUFPLGFBQWE7SUFDUixRQUFRLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7SUFDOUMsS0FBSyxDQUFPO0lBQ1osUUFBUSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO0lBRS9ELFlBQVksT0FBdUIsRUFBRSxhQUFtQjtRQUN2RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQztRQUVELGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBZTtZQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsZUFB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LENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FDdEQsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixJQUFJLENBQUMsWUFBWSxDQUNqQixDQUFDO1lBQ0YsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNGLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBZ0I7UUFDL0MsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FDcEMsR0FBRyxJQUFJLENBQUMsUUFBUSxZQUFZLEVBQzVCLE1BQU0sQ0FDTixDQUFDO1lBQ0YsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VjdG99IGZyb20gJ2VjdG8nO1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7RG9jdWxhT3B0aW9uc30gZnJvbSAnLi9vcHRpb25zLmpzJztcbmltcG9ydCB7RG9jdWxhQ29uc29sZX0gZnJvbSAnLi9jb25zb2xlLmpzJztcbmltcG9ydCB7R2l0aHViLCB0eXBlIEdpdGh1YkRhdGEsIHR5cGUgR2l0aHViT3B0aW9uc30gZnJvbSAnLi9naXRodWIuanMnO1xuXG5leHBvcnQgdHlwZSBEb2N1bGFEYXRhID0ge1xuXHRzaXRlVXJsOiBzdHJpbmc7XG5cdHNpdGVUaXRsZTogc3RyaW5nO1xuXHRzaXRlRGVzY3JpcHRpb246IHN0cmluZztcblx0c2l0ZVBhdGg6IHN0cmluZztcblx0dGVtcGxhdGVQYXRoOiBzdHJpbmc7XG5cdG91dHB1dFBhdGg6IHN0cmluZztcblx0Z2l0aHViUGF0aD86IHN0cmluZztcblx0Z2l0aHViPzogR2l0aHViRGF0YTtcblx0dGVtcGxhdGVzPzogRG9jdWxhVGVtcGxhdGVzO1xufTtcblxuZXhwb3J0IHR5cGUgRG9jdWxhVGVtcGxhdGVzID0ge1xuXHRpbmRleDogc3RyaW5nO1xuXHRyZWxlYXNlczogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIERvY3VsYUJ1aWxkZXIge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBEb2N1bGFPcHRpb25zID0gbmV3IERvY3VsYU9wdGlvbnMoKTtcblx0cHJpdmF0ZSByZWFkb25seSBfZWN0bzogRWN0bztcblx0cHJpdmF0ZSByZWFkb25seSBfY29uc29sZTogRG9jdWxhQ29uc29sZSA9IG5ldyBEb2N1bGFDb25zb2xlKCk7XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IERvY3VsYU9wdGlvbnMsIGVuZ2luZU9wdGlvbnM/OiBhbnkpIHtcblx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0dGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0fVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcblx0XHR0aGlzLl9lY3RvID0gbmV3IEVjdG8oZW5naW5lT3B0aW9ucyk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IG9wdGlvbnMoKTogRG9jdWxhT3B0aW9ucyB7XG5cdFx0cmV0dXJuIHRoaXMuX29wdGlvbnM7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuXHRcdC8vIFZhbGlkYXRlIHRoZSBvcHRpb25zXG5cdFx0dGhpcy52YWxpZGF0ZU9wdGlvbnModGhpcy5vcHRpb25zKTtcblx0XHQvLyBTZXQgdGhlIHNpdGUgb3B0aW9uc1xuXHRcdGNvbnN0IGRvY3VsYURhdGE6IERvY3VsYURhdGEgPSB7XG5cdFx0XHRzaXRlVXJsOiB0aGlzLm9wdGlvbnMuc2l0ZVVybCxcblx0XHRcdHNpdGVUaXRsZTogdGhpcy5vcHRpb25zLnNpdGVUaXRsZSxcblx0XHRcdHNpdGVEZXNjcmlwdGlvbjogdGhpcy5vcHRpb25zLnNpdGVEZXNjcmlwdGlvbixcblx0XHRcdHNpdGVQYXRoOiB0aGlzLm9wdGlvbnMuc2l0ZVBhdGgsXG5cdFx0XHR0ZW1wbGF0ZVBhdGg6IHRoaXMub3B0aW9ucy50ZW1wbGF0ZVBhdGgsXG5cdFx0XHRvdXRwdXRQYXRoOiB0aGlzLm9wdGlvbnMub3V0cHV0UGF0aCxcblx0XHRcdGdpdGh1YlBhdGg6IHRoaXMub3B0aW9ucy5naXRodWJQYXRoLFxuXHRcdH07XG5cblx0XHQvLyBHZXQgZGF0YSBmcm9tIGdpdGh1YlxuXHRcdGNvbnN0IGdpdGh1YkRhdGEgPSBhd2FpdCB0aGlzLmdldEdpdGh1YkRhdGEodGhpcy5vcHRpb25zLmdpdGh1YlBhdGgpO1xuXHRcdC8vIEdldCBkYXRhIG9mIHRoZSBzaXRlXG5cdFx0ZG9jdWxhRGF0YS5naXRodWIgPSBnaXRodWJEYXRhO1xuXHRcdC8vIEdldCB0aGUgdGVtcGxhdGVzIHRvIHVzZVxuXHRcdGRvY3VsYURhdGEudGVtcGxhdGVzID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZXModGhpcy5vcHRpb25zKTtcblxuXHRcdC8vIEJ1aWxkIHRoZSBob21lIHBhZ2UgKGluZGV4Lmh0bWwpXG5cdFx0YXdhaXQgdGhpcy5idWlsZEluZGV4UGFnZShkb2N1bGFEYXRhKTtcblxuXHRcdC8vIEJ1aWxkIHRoZSByZWxlYXNlcyBwYWdlICgvcmVsZWFzZXMvaW5kZXguaHRtbClcblx0XHRhd2FpdCB0aGlzLmJ1aWxkUmVsZWFzZVBhZ2UoZG9jdWxhRGF0YSk7XG5cblx0XHQvLyBCdWlsZCB0aGUgc2l0ZW1hcCAoL3NpdGVtYXAueG1sKVxuXHRcdGF3YWl0IHRoaXMuYnVpbGRTaXRlTWFwUGFnZShkb2N1bGFEYXRhKTtcblxuXHRcdC8vIEJ1aWxkIHRoZSByb2JvdHMudHh0ICgvcm9ib3RzLnR4dClcblx0XHRhd2FpdCB0aGlzLmJ1aWxkUm9ib3RzUGFnZSh0aGlzLm9wdGlvbnMpO1xuXG5cdFx0Y29uc3Qgc2l0ZVJlbGF0aXZlUGF0aCA9IHRoaXMub3B0aW9ucy5zaXRlUGF0aDtcblxuXHRcdC8vIENvcHkgb3ZlciBmYXZpY29uXG5cdFx0aWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMoYCR7c2l0ZVJlbGF0aXZlUGF0aH0vZmF2aWNvbi5pY29gKSkge1xuXHRcdFx0YXdhaXQgZnMuY29weShcblx0XHRcdFx0YCR7c2l0ZVJlbGF0aXZlUGF0aH0vZmF2aWNvbi5pY29gLFxuXHRcdFx0XHRgJHt0aGlzLm9wdGlvbnMub3V0cHV0UGF0aH0vZmF2aWNvbi5pY29gLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBDb3B5IG92ZXIgbG9nb1xuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKGAke3NpdGVSZWxhdGl2ZVBhdGh9L2xvZ28uc3ZnYCkpIHtcblx0XHRcdGF3YWl0IGZzLmNvcHkoXG5cdFx0XHRcdGAke3NpdGVSZWxhdGl2ZVBhdGh9L2xvZ28uc3ZnYCxcblx0XHRcdFx0YCR7dGhpcy5vcHRpb25zLm91dHB1dFBhdGh9L2xvZ28uc3ZnYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSBvdmVyIGNzc1xuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKGAke3RoaXMub3B0aW9ucy50ZW1wbGF0ZVBhdGh9L2Nzc2ApKSB7XG5cdFx0XHRhd2FpdCBmcy5jb3B5KFxuXHRcdFx0XHRgJHt0aGlzLm9wdGlvbnMudGVtcGxhdGVQYXRofS9jc3NgLFxuXHRcdFx0XHRgJHt0aGlzLm9wdGlvbnMub3V0cHV0UGF0aH0vY3NzYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSBvdmVyIHZhcmlhYmxlc1xuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKGAke3NpdGVSZWxhdGl2ZVBhdGh9L3ZhcmlhYmxlcy5jc3NgKSkge1xuXHRcdFx0YXdhaXQgZnMuY29weShcblx0XHRcdFx0YCR7c2l0ZVJlbGF0aXZlUGF0aH0vdmFyaWFibGVzLmNzc2AsXG5cdFx0XHRcdGAke3RoaXMub3B0aW9ucy5vdXRwdXRQYXRofS9jc3MvdmFyaWFibGVzLmNzc2AsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpO1xuXG5cdFx0Y29uc3QgZXhlY3V0aW9uVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XG5cblx0XHR0aGlzLl9jb25zb2xlLmxvZyhgQnVpbGQgY29tcGxldGVkIGluICR7ZXhlY3V0aW9uVGltZX1tc2ApO1xuXHR9XG5cblx0cHVibGljIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zOiBEb2N1bGFPcHRpb25zKTogdm9pZCB7XG5cdFx0aWYgKG9wdGlvbnMuZ2l0aHViUGF0aC5sZW5ndGggPCAzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIGdpdGh1YiBvcHRpb25zIHByb3ZpZGVkJyk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMuc2l0ZURlc2NyaXB0aW9uLmxlbmd0aCA8IDMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gc2l0ZSBkZXNjcmlwdGlvbiBvcHRpb25zIHByb3ZpZGVkJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFvcHRpb25zLnNpdGVUaXRsZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdObyBzaXRlIHRpdGxlIG9wdGlvbnMgcHJvdmlkZWQnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdGlvbnMuc2l0ZVVybCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdObyBzaXRlIHVybCBvcHRpb25zIHByb3ZpZGVkJyk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGdldEdpdGh1YkRhdGEoZ2l0aHViUGF0aDogc3RyaW5nKTogUHJvbWlzZTxHaXRodWJEYXRhPiB7XG5cdFx0Y29uc3QgcGF0aHMgPSBnaXRodWJQYXRoLnNwbGl0KCcvJyk7XG5cdFx0Y29uc3Qgb3B0aW9uczogR2l0aHViT3B0aW9ucyA9IHtcblx0XHRcdGF1dGhvcjogcGF0aHNbMF0sXG5cdFx0XHRyZXBvOiBwYXRoc1sxXSxcblx0XHR9O1xuXHRcdGNvbnN0IGdpdGh1YiA9IG5ldyBHaXRodWIob3B0aW9ucyk7XG5cdFx0cmV0dXJuIGdpdGh1Yi5nZXREYXRhKCk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0VGVtcGxhdGVzKG9wdGlvbnM6IERvY3VsYU9wdGlvbnMpOiBQcm9taXNlPERvY3VsYVRlbXBsYXRlcz4ge1xuXHRcdGNvbnN0IHRlbXBsYXRlczogRG9jdWxhVGVtcGxhdGVzID0ge1xuXHRcdFx0aW5kZXg6ICcnLFxuXHRcdFx0cmVsZWFzZXM6ICcnLFxuXHRcdH07XG5cblx0XHRpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhvcHRpb25zLnRlbXBsYXRlUGF0aCkpIHtcblx0XHRcdGNvbnN0IGluZGV4ID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZUZpbGUob3B0aW9ucy50ZW1wbGF0ZVBhdGgsICdpbmRleCcpO1xuXHRcdFx0aWYgKGluZGV4KSB7XG5cdFx0XHRcdHRlbXBsYXRlcy5pbmRleCA9IGluZGV4O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCByZWxlYXNlcyA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVGaWxlKFxuXHRcdFx0XHRvcHRpb25zLnRlbXBsYXRlUGF0aCxcblx0XHRcdFx0J3JlbGVhc2VzJyxcblx0XHRcdCk7XG5cdFx0XHRpZiAocmVsZWFzZXMpIHtcblx0XHRcdFx0dGVtcGxhdGVzLnJlbGVhc2VzID0gcmVsZWFzZXM7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gdGVtcGxhdGUgcGF0aCBmb3VuZCBhdCAke29wdGlvbnMudGVtcGxhdGVQYXRofWApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0ZW1wbGF0ZXM7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0VGVtcGxhdGVGaWxlKFxuXHRcdHBhdGg6IHN0cmluZyxcblx0XHRuYW1lOiBzdHJpbmcsXG5cdCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0bGV0IHJlc3VsdDtcblx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIocGF0aCk7XG5cdFx0Zm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG5cdFx0XHRjb25zdCBmaWxlTmFtZSA9IGZpbGUuc3BsaXQoJy4nKTtcblx0XHRcdGlmIChmaWxlTmFtZVswXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0XHRyZXN1bHQgPSBmaWxlLnRvU3RyaW5nKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgYnVpbGRSb2JvdHNQYWdlKG9wdGlvbnM6IERvY3VsYU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCB7c2l0ZVBhdGh9ID0gb3B0aW9ucztcblx0XHRjb25zdCB7b3V0cHV0UGF0aH0gPSBvcHRpb25zO1xuXHRcdGNvbnN0IHJvYm90c1BhdGggPSBgJHtvdXRwdXRQYXRofS9yb2JvdHMudHh0YDtcblxuXHRcdGF3YWl0IGZzLmVuc3VyZURpcihvdXRwdXRQYXRoKTtcblxuXHRcdGF3YWl0ICgoYXdhaXQgZnMucGF0aEV4aXN0cyhgJHtzaXRlUGF0aH0vcm9ib3RzLnR4dGApKVxuXHRcdFx0PyBmcy5jb3B5KGAke3NpdGVQYXRofS9yb2JvdHMudHh0YCwgcm9ib3RzUGF0aClcblx0XHRcdDogZnMud3JpdGVGaWxlKHJvYm90c1BhdGgsICdVc2VyLWFnZW50OiAqXFxuRGlzYWxsb3c6JykpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGJ1aWxkU2l0ZU1hcFBhZ2UoZGF0YTogRG9jdWxhRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHNpdGVtYXBQYXRoID0gYCR7ZGF0YS5vdXRwdXRQYXRofS9zaXRlbWFwLnhtbGA7XG5cdFx0Y29uc3QgdXJscyA9IFt7dXJsOiBkYXRhLnNpdGVVcmx9LCB7dXJsOiBgJHtkYXRhLnNpdGVVcmx9L3JlbGVhc2VzYH1dO1xuXG5cdFx0bGV0IHhtbCA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4nO1xuXHRcdHhtbCArPSAnPHVybHNldCB4bWxucz1cImh0dHA6Ly93d3cuc2l0ZW1hcHMub3JnL3NjaGVtYXMvc2l0ZW1hcC8wLjlcIj4nO1xuXG5cdFx0Zm9yIChjb25zdCB7dXJsfSBvZiB1cmxzKSB7XG5cdFx0XHR4bWwgKz0gJzx1cmw+Jztcblx0XHRcdHhtbCArPSBgPGxvYz4ke3VybH08L2xvYz5gO1xuXHRcdFx0eG1sICs9ICc8L3VybD4nO1xuXHRcdH1cblxuXHRcdHhtbCArPSAnPC91cmxzZXQ+JztcblxuXHRcdGF3YWl0IGZzLmVuc3VyZURpcihkYXRhLm91dHB1dFBhdGgpO1xuXG5cdFx0YXdhaXQgZnMud3JpdGVGaWxlKHNpdGVtYXBQYXRoLCB4bWwsICd1dGY4Jyk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgYnVpbGRJbmRleFBhZ2UoZGF0YTogRG9jdWxhRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmIChkYXRhLnRlbXBsYXRlcykge1xuXHRcdFx0Y29uc3QgaW5kZXhQYXRoID0gYCR7ZGF0YS5vdXRwdXRQYXRofS9pbmRleC5odG1sYDtcblxuXHRcdFx0YXdhaXQgZnMuZW5zdXJlRGlyKGRhdGEub3V0cHV0UGF0aCk7XG5cblx0XHRcdGNvbnN0IGluZGV4VGVtcGxhdGUgPSBgJHtkYXRhLnRlbXBsYXRlUGF0aH0vJHtkYXRhLnRlbXBsYXRlcy5pbmRleH1gO1xuXG5cdFx0XHRjb25zdCBodG1sUmVhZG1lID0gYXdhaXQgdGhpcy5idWlsZFJlYWRtZVNlY3Rpb24oZGF0YSk7XG5cblx0XHRcdGNvbnN0IGluZGV4Q29udGVudCA9IGF3YWl0IHRoaXMuX2VjdG8ucmVuZGVyRnJvbUZpbGUoXG5cdFx0XHRcdGluZGV4VGVtcGxhdGUsXG5cdFx0XHRcdHsuLi5kYXRhLCBjb250ZW50OiBodG1sUmVhZG1lfSxcblx0XHRcdFx0ZGF0YS50ZW1wbGF0ZVBhdGgsXG5cdFx0XHQpO1xuXHRcdFx0YXdhaXQgZnMud3JpdGVGaWxlKGluZGV4UGF0aCwgaW5kZXhDb250ZW50LCAndXRmOCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHRlbXBsYXRlcyBmb3VuZCcpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBidWlsZFJlbGVhc2VQYWdlKGRhdGE6IERvY3VsYURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoZGF0YS5naXRodWIgJiYgZGF0YS50ZW1wbGF0ZXMpIHtcblx0XHRcdGNvbnN0IHJlbGVhc2VzUGF0aCA9IGAke2RhdGEub3V0cHV0UGF0aH0vcmVsZWFzZXMvaW5kZXguaHRtbGA7XG5cdFx0XHRjb25zdCByZWxlYXNlT3V0cHV0UGF0aCA9IGAke2RhdGEub3V0cHV0UGF0aH0vcmVsZWFzZXNgO1xuXG5cdFx0XHRhd2FpdCBmcy5lbnN1cmVEaXIocmVsZWFzZU91dHB1dFBhdGgpO1xuXG5cdFx0XHRjb25zdCByZWxlYXNlc1RlbXBsYXRlID0gYCR7ZGF0YS50ZW1wbGF0ZVBhdGh9LyR7ZGF0YS50ZW1wbGF0ZXMucmVsZWFzZXN9YDtcblx0XHRcdGNvbnN0IHJlbGVhc2VzQ29udGVudCA9IGF3YWl0IHRoaXMuX2VjdG8ucmVuZGVyRnJvbUZpbGUoXG5cdFx0XHRcdHJlbGVhc2VzVGVtcGxhdGUsXG5cdFx0XHRcdGRhdGEsXG5cdFx0XHRcdGRhdGEudGVtcGxhdGVQYXRoLFxuXHRcdFx0KTtcblx0XHRcdGF3YWl0IGZzLndyaXRlRmlsZShyZWxlYXNlc1BhdGgsIHJlbGVhc2VzQ29udGVudCwgJ3V0ZjgnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdObyBnaXRodWIgZGF0YSBmb3VuZCcpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBidWlsZFJlYWRtZVNlY3Rpb24oZGF0YTogRG9jdWxhRGF0YSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0bGV0IGh0bWxSZWFkbWUgPSAnJztcblx0XHRpZiAoZnMuZXhpc3RzU3luYyhgJHtkYXRhLnNpdGVQYXRofS9SRUFETUUubWRgKSkge1xuXHRcdFx0Y29uc3QgcmVhZG1lQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhcblx0XHRcdFx0YCR7ZGF0YS5zaXRlUGF0aH0vUkVBRE1FLm1kYCxcblx0XHRcdFx0J3V0ZjgnLFxuXHRcdFx0KTtcblx0XHRcdGh0bWxSZWFkbWUgPSBhd2FpdCB0aGlzLl9lY3RvLm1hcmtkb3duLnJlbmRlcihyZWFkbWVDb250ZW50KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaHRtbFJlYWRtZTtcblx0fVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ export declare class DoculaConsole {
2
+ log(message: string): void;
3
+ error(message: string): void;
4
+ warn(message: string): void;
5
+ printHelp(): void;
6
+ parseProcessArgv(argv: string[]): DoculaConsoleProcess;
7
+ getCommand(argv: string[]): string | undefined;
8
+ getArguments(argv: string[]): DoculaConsoleArguments;
9
+ }
10
+ type DoculaConsoleProcess = {
11
+ argv: string[];
12
+ command: string | undefined;
13
+ args: DoculaConsoleArguments;
14
+ };
15
+ type DoculaConsoleArguments = {
16
+ sitePath: string | undefined;
17
+ templatePath: string | undefined;
18
+ output: string | undefined;
19
+ watch: boolean;
20
+ port: number;
21
+ };
22
+ export {};
@@ -0,0 +1,120 @@
1
+ import path from 'node:path';
2
+ import process from 'node:process';
3
+ export class DoculaConsole {
4
+ log(message) {
5
+ console.log(message);
6
+ }
7
+ error(message) {
8
+ console.error(message);
9
+ }
10
+ warn(message) {
11
+ console.warn(message);
12
+ }
13
+ printHelp() {
14
+ console.log(' Usage: docula [command] [arguments]');
15
+ console.log();
16
+ console.log(' Commands:');
17
+ console.log(' init Initialize a new project');
18
+ console.log(' build Build the project. By default just npx docula will build the project if it finds a ./site folder');
19
+ console.log(' serve Serve the project as a local website');
20
+ console.log(' help Print this help');
21
+ console.log(' version Print the version');
22
+ console.log();
23
+ console.log(' Arguments Build:');
24
+ console.log(' -w, --watch watch for changes and rebuild');
25
+ console.log(' -s, --site Set the path where site files are located');
26
+ console.log(' -o, --outputPath Set the output directory. Default is ./site/dist');
27
+ console.log(' -t, --templatePath Set the custom template to use');
28
+ console.log();
29
+ console.log(' Arguments serve:');
30
+ console.log(' -p, --port Set the port number used with serve');
31
+ console.log(' -w, --watch watch for changes and rebuild');
32
+ console.log(' -s, --site Set the path where site files are located');
33
+ }
34
+ parseProcessArgv(argv) {
35
+ const command = this.getCommand(argv);
36
+ const args = this.getArguments(argv);
37
+ return {
38
+ argv,
39
+ command,
40
+ args,
41
+ };
42
+ }
43
+ getCommand(argv) {
44
+ let result;
45
+ for (const arg of argv) {
46
+ // eslint-disable-next-line default-case
47
+ switch (arg) {
48
+ case 'init': {
49
+ result = 'init';
50
+ break;
51
+ }
52
+ case 'build': {
53
+ result = 'build';
54
+ break;
55
+ }
56
+ case 'serve': {
57
+ result = 'serve';
58
+ break;
59
+ }
60
+ case 'help': {
61
+ result = 'help';
62
+ break;
63
+ }
64
+ case 'version': {
65
+ result = arg;
66
+ break;
67
+ }
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ getArguments(argv) {
73
+ const args = {
74
+ sitePath: '',
75
+ templatePath: '',
76
+ output: '',
77
+ watch: false,
78
+ port: 3000,
79
+ };
80
+ for (let i = 0; i < argv.length; i++) {
81
+ const arg = argv[i];
82
+ // eslint-disable-next-line default-case
83
+ switch (arg) {
84
+ case '-p':
85
+ case '--port': {
86
+ const portString = argv[i + 1];
87
+ if (portString !== undefined) {
88
+ args.port = Number.parseInt(portString, 10);
89
+ }
90
+ break;
91
+ }
92
+ case '-o':
93
+ case '--output': {
94
+ args.output = argv[i + 1];
95
+ args.output = path.join(process.cwd(), args.output);
96
+ break;
97
+ }
98
+ case '-w':
99
+ case '--watch': {
100
+ args.watch = true;
101
+ break;
102
+ }
103
+ case '-s':
104
+ case '--site': {
105
+ args.sitePath = argv[i + 1];
106
+ args.sitePath = path.join(process.cwd(), args.sitePath);
107
+ break;
108
+ }
109
+ case '-t':
110
+ case '--templatePath': {
111
+ args.templatePath = argv[i + 1];
112
+ args.templatePath = path.join(process.cwd(), args.templatePath);
113
+ break;
114
+ }
115
+ }
116
+ }
117
+ return args;
118
+ }
119
+ }
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLGFBQWE7SUFDekIsR0FBRyxDQUFDLE9BQWU7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWU7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWU7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUztRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLHNIQUFzSCxDQUFDLENBQUM7UUFDcEksT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7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QU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3BELE1BQU07Z0JBQ1AsQ0FBQztnQkFFRCxLQUFLLElBQUksQ0FBQztnQkFDVixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNsQixNQUFNO2dCQUNQLENBQUM7Z0JBRUQsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1AsQ0FBQztnQkFFRCxLQUFLLElBQUksQ0FBQztnQkFDVixLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDaEUsTUFBTTtnQkFDUCxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5leHBvcnQgY2xhc3MgRG9jdWxhQ29uc29sZSB7XG5cdGxvZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zb2xlLmxvZyhtZXNzYWdlKTtcblx0fVxuXG5cdGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdH1cblxuXHR3YXJuKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnNvbGUud2FybihtZXNzYWdlKTtcblx0fVxuXG5cdHByaW50SGVscCgpOiB2b2lkIHtcblx0XHRjb25zb2xlLmxvZygnICAgVXNhZ2U6IGRvY3VsYSBbY29tbWFuZF0gW2FyZ3VtZW50c10nKTtcblx0XHRjb25zb2xlLmxvZygpO1xuXHRcdGNvbnNvbGUubG9nKCcgICBDb21tYW5kczonKTtcblx0XHRjb25zb2xlLmxvZygnICAgICBpbml0ICAgICAgICAgICBJbml0aWFsaXplIGEgbmV3IHByb2plY3QnKTtcblx0XHRjb25zb2xlLmxvZygnICAgICBidWlsZCAgICAgICAgICBCdWlsZCB0aGUgcHJvamVjdC4gQnkgZGVmYXVsdCBqdXN0IG5weCBkb2N1bGEgd2lsbCBidWlsZCB0aGUgcHJvamVjdCBpZiBpdCBmaW5kcyBhIC4vc2l0ZSBmb2xkZXInKTtcblx0XHRjb25zb2xlLmxvZygnICAgICBzZXJ2ZSAgICAgICAgICBTZXJ2ZSB0aGUgcHJvamVjdCBhcyBhIGxvY2FsIHdlYnNpdGUnKTtcblx0XHRjb25zb2xlLmxvZygnICAgICBoZWxwICAgICAgICAgICBQcmludCB0aGlzIGhlbHAnKTtcblx0XHRjb25zb2xlLmxvZygnICAgICB2ZXJzaW9uICAgICAgICBQcmludCB0aGUgdmVyc2lvbicpO1xuXHRcdGNvbnNvbGUubG9nKCk7XG5cdFx0Y29uc29sZS5sb2coJyAgIEFyZ3VtZW50cyBCdWlsZDonKTtcblx0XHRjb25zb2xlLmxvZygnICAgICAtdywgLS13YXRjaCAgICAgICAgICAgIHdhdGNoIGZvciBjaGFuZ2VzIGFuZCByZWJ1aWxkJyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXMsIC0tc2l0ZSAgICAgICAgICAgICBTZXQgdGhlIHBhdGggd2hlcmUgc2l0ZSBmaWxlcyBhcmUgbG9jYXRlZCcpO1xuXHRcdGNvbnNvbGUubG9nKCcgICAgIC1vLCAtLW91dHB1dFBhdGggICAgICAgU2V0IHRoZSBvdXRwdXQgZGlyZWN0b3J5LiBEZWZhdWx0IGlzIC4vc2l0ZS9kaXN0Jyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXQsIC0tdGVtcGxhdGVQYXRoICAgICBTZXQgdGhlIGN1c3RvbSB0ZW1wbGF0ZSB0byB1c2UnKTtcblx0XHRjb25zb2xlLmxvZygpO1xuXHRcdGNvbnNvbGUubG9nKCcgICBBcmd1bWVudHMgc2VydmU6Jyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXAsIC0tcG9ydCAgICAgICAgIFNldCB0aGUgcG9ydCBudW1iZXIgdXNlZCB3aXRoIHNlcnZlJyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXcsIC0td2F0Y2ggICAgICAgIHdhdGNoIGZvciBjaGFuZ2VzIGFuZCByZWJ1aWxkJyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXMsIC0tc2l0ZSAgICAgICAgIFNldCB0aGUgcGF0aCB3aGVyZSBzaXRlIGZpbGVzIGFyZSBsb2NhdGVkJyk7XG5cdH1cblxuXHRwdWJsaWMgcGFyc2VQcm9jZXNzQXJndihhcmd2OiBzdHJpbmdbXSk6IERvY3VsYUNvbnNvbGVQcm9jZXNzIHtcblx0XHRjb25zdCBjb21tYW5kID0gdGhpcy5nZXRDb21tYW5kKGFyZ3YpO1xuXHRcdGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3VtZW50cyhhcmd2KTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0YXJndixcblx0XHRcdGNvbW1hbmQsXG5cdFx0XHRhcmdzLFxuXHRcdH07XG5cdH1cblxuXHRwdWJsaWMgZ2V0Q29tbWFuZChhcmd2OiBzdHJpbmdbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHJlc3VsdDtcblx0XHRmb3IgKGNvbnN0IGFyZyBvZiBhcmd2KSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVmYXVsdC1jYXNlXG5cdFx0XHRzd2l0Y2ggKGFyZykge1xuXHRcdFx0XHRjYXNlICdpbml0Jzoge1xuXHRcdFx0XHRcdHJlc3VsdCA9ICdpbml0Jztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJ2J1aWxkJzoge1xuXHRcdFx0XHRcdHJlc3VsdCA9ICdidWlsZCc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdzZXJ2ZSc6IHtcblx0XHRcdFx0XHRyZXN1bHQgPSAnc2VydmUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnaGVscCc6IHtcblx0XHRcdFx0XHRyZXN1bHQgPSAnaGVscCc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICd2ZXJzaW9uJzoge1xuXHRcdFx0XHRcdHJlc3VsdCA9IGFyZztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QXJndW1lbnRzKGFyZ3Y6IHN0cmluZ1tdKTogRG9jdWxhQ29uc29sZUFyZ3VtZW50cyB7XG5cdFx0Y29uc3QgYXJncyA9IHtcblx0XHRcdHNpdGVQYXRoOiAnJyxcblx0XHRcdHRlbXBsYXRlUGF0aDogJycsXG5cdFx0XHRvdXRwdXQ6ICcnLFxuXHRcdFx0d2F0Y2g6IGZhbHNlLFxuXHRcdFx0cG9ydDogMzAwMCxcblx0XHR9O1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJndi5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgYXJnID0gYXJndltpXTtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2Vcblx0XHRcdHN3aXRjaCAoYXJnKSB7XG5cdFx0XHRcdGNhc2UgJy1wJzpcblx0XHRcdFx0Y2FzZSAnLS1wb3J0Jzoge1xuXHRcdFx0XHRcdGNvbnN0IHBvcnRTdHJpbmcgPSBhcmd2W2kgKyAxXTtcblx0XHRcdFx0XHRpZiAocG9ydFN0cmluZyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRhcmdzLnBvcnQgPSBOdW1iZXIucGFyc2VJbnQocG9ydFN0cmluZywgMTApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnLW8nOlxuXHRcdFx0XHRjYXNlICctLW91dHB1dCc6IHtcblx0XHRcdFx0XHRhcmdzLm91dHB1dCA9IGFyZ3ZbaSArIDFdO1xuXHRcdFx0XHRcdGFyZ3Mub3V0cHV0ID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGFyZ3Mub3V0cHV0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJy13Jzpcblx0XHRcdFx0Y2FzZSAnLS13YXRjaCc6IHtcblx0XHRcdFx0XHRhcmdzLndhdGNoID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJy1zJzpcblx0XHRcdFx0Y2FzZSAnLS1zaXRlJzoge1xuXHRcdFx0XHRcdGFyZ3Muc2l0ZVBhdGggPSBhcmd2W2kgKyAxXTtcblx0XHRcdFx0XHRhcmdzLnNpdGVQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGFyZ3Muc2l0ZVBhdGgpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnLXQnOlxuXHRcdFx0XHRjYXNlICctLXRlbXBsYXRlUGF0aCc6IHtcblx0XHRcdFx0XHRhcmdzLnRlbXBsYXRlUGF0aCA9IGFyZ3ZbaSArIDFdO1xuXHRcdFx0XHRcdGFyZ3MudGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGFyZ3MudGVtcGxhdGVQYXRoKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBhcmdzO1xuXHR9XG59XG5cbnR5cGUgRG9jdWxhQ29uc29sZVByb2Nlc3MgPSB7XG5cdGFyZ3Y6IHN0cmluZ1tdO1xuXHRjb21tYW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGFyZ3M6IERvY3VsYUNvbnNvbGVBcmd1bWVudHM7XG59O1xuXG50eXBlIERvY3VsYUNvbnNvbGVBcmd1bWVudHMgPSB7XG5cdHNpdGVQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHRlbXBsYXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRvdXRwdXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0d2F0Y2g6IGJvb2xlYW47XG5cdHBvcnQ6IG51bWJlcjtcbn07XG5cbiJdfQ==
package/dist/docula.d.ts CHANGED
@@ -1,22 +1,23 @@
1
- import { Config } from './config.js';
2
- import type { CommanderOptions } from './index.js';
3
- export declare class Docula {
4
- readonly config: Config;
5
- private readonly eleventy;
6
- private pluginInstances;
7
- private readonly beforePlugins;
8
- private readonly afterPlugins;
9
- private readonly landingFilesExceptions;
10
- constructor(options?: CommanderOptions);
11
- init(sitePath?: string): Promise<void>;
12
- build(): Promise<void>;
13
- serve(): Promise<void>;
14
- copyLandingFolder(source: string, target: string): void;
15
- copyFolder(source: string, target: string): void;
16
- copySearchEngineFiles(): void;
17
- writeConfigFile(sitePath?: string): Promise<Record<string, unknown>>;
18
- validateFilePath(source: string, target: string): Record<string, any>;
19
- private loadPlugins;
20
- private readonly executePlugins;
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import type http from 'node:http';
4
+ import { DoculaOptions } from './options.js';
5
+ export default class Docula {
6
+ private _options;
7
+ private readonly _console;
8
+ private _configFileModule;
9
+ private _server;
10
+ constructor(options?: DoculaOptions);
11
+ get options(): DoculaOptions;
12
+ set options(value: DoculaOptions);
13
+ get server(): http.Server | undefined;
14
+ get configFileModule(): any;
15
+ checkForUpdates(): void;
16
+ execute(process: NodeJS.Process): Promise<void>;
17
+ isSinglePageWebsite(sitePath: string): boolean;
18
+ generateInit(sitePath: string): void;
19
+ getVersion(): string;
20
+ loadConfigFile(sitePath: string): Promise<void>;
21
+ serve(options: DoculaOptions): Promise<void>;
21
22
  }
22
- //# sourceMappingURL=docula.d.ts.map
23
+ export { DoculaHelpers } from './helpers.js';