writr 2.0.3 → 3.0.1
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/README.md +86 -70
- package/dist/writr.d.ts +22 -20
- package/dist/writr.js +59 -136
- package/package.json +39 -43
- package/bin/writr.mjs +0 -8
- package/dist/builder.d.ts +0 -34
- package/dist/builder.js +0 -182
- package/dist/console.d.ts +0 -22
- package/dist/console.js +0 -120
- package/dist/github.d.ts +0 -22
- package/dist/github.js +0 -74
- package/dist/helpers/markdown.d.ts +0 -10
- package/dist/helpers/markdown.js +0 -24
- package/dist/helpers.d.ts +0 -7
- package/dist/helpers.js +0 -58
- package/dist/options.d.ts +0 -12
- package/dist/options.js +0 -47
- package/init/favicon.svg +0 -1
- package/init/logo.png +0 -0
- package/init/variables.css +0 -30
- package/init/writr.config.cjs +0 -10
- package/template/css/highlight/highlight.min.js +0 -1433
- package/template/css/highlight/styles/base16/dracula.min.css +0 -7
- package/template/css/home.css +0 -307
- package/template/css/index.css +0 -919
- package/template/includes/footer.hbs +0 -10
- package/template/includes/header.hbs +0 -17
- package/template/includes/landing/content.hbs +0 -63
- package/template/includes/landing/hero.hbs +0 -3
- package/template/includes/scripts.hbs +0 -4
- package/template/index.hbs +0 -16
- package/template/releases.hbs +0 -45
package/dist/builder.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { WritrOptions } from './options.js';
|
|
2
|
-
import { type GithubData } from './github.js';
|
|
3
|
-
export type WritrData = {
|
|
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?: WritrTemplates;
|
|
13
|
-
};
|
|
14
|
-
export type WritrTemplates = {
|
|
15
|
-
index: string;
|
|
16
|
-
releases: string;
|
|
17
|
-
};
|
|
18
|
-
export declare class WritrBuilder {
|
|
19
|
-
private readonly _options;
|
|
20
|
-
private readonly _ecto;
|
|
21
|
-
private readonly _console;
|
|
22
|
-
constructor(options?: WritrOptions, engineOptions?: any);
|
|
23
|
-
get options(): WritrOptions;
|
|
24
|
-
build(): Promise<void>;
|
|
25
|
-
validateOptions(options: WritrOptions): void;
|
|
26
|
-
getGithubData(githubPath: string): Promise<GithubData>;
|
|
27
|
-
getTemplates(options: WritrOptions): Promise<WritrTemplates>;
|
|
28
|
-
getTemplateFile(path: string, name: string): Promise<string | undefined>;
|
|
29
|
-
buildRobotsPage(options: WritrOptions): Promise<void>;
|
|
30
|
-
buildSiteMapPage(data: WritrData): Promise<void>;
|
|
31
|
-
buildIndexPage(data: WritrData): Promise<void>;
|
|
32
|
-
buildReleasePage(data: WritrData): Promise<void>;
|
|
33
|
-
buildReadmeSection(data: WritrData): Promise<string>;
|
|
34
|
-
}
|
package/dist/builder.js
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { Ecto } from 'ecto';
|
|
2
|
-
import fs from 'fs-extra';
|
|
3
|
-
import { WritrOptions } from './options.js';
|
|
4
|
-
import { WritrConsole } from './console.js';
|
|
5
|
-
import { Github } from './github.js';
|
|
6
|
-
export class WritrBuilder {
|
|
7
|
-
_options = new WritrOptions();
|
|
8
|
-
_ecto;
|
|
9
|
-
_console = new WritrConsole();
|
|
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 writrData = {
|
|
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
|
-
writrData.github = githubData;
|
|
38
|
-
// Get the templates to use
|
|
39
|
-
writrData.templates = await this.getTemplates(this.options);
|
|
40
|
-
// Build the home page (index.html)
|
|
41
|
-
await this.buildIndexPage(writrData);
|
|
42
|
-
// Build the releases page (/releases/index.html)
|
|
43
|
-
await this.buildReleasePage(writrData);
|
|
44
|
-
// Build the sitemap (/sitemap.xml)
|
|
45
|
-
await this.buildSiteMapPage(writrData);
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsTUFBTSxFQUFzQyxNQUFNLGFBQWEsQ0FBQztBQW1CeEUsTUFBTSxPQUFPLFlBQVk7SUFDUCxRQUFRLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUMsS0FBSyxDQUFPO0lBQ1osUUFBUSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTdELFlBQVksT0FBc0IsRUFBRSxhQUFtQjtRQUN0RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQztRQUVELGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLHVCQUF1QjtRQUN2QixNQUFNLFNBQVMsR0FBYztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsZUFB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QUMsS0FBSyxDQUFDLGNBQWMsQ0FDdEQsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixJQUFJLENBQUMsWUFBWSxDQUNqQixDQUFDO1lBQ0YsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNGLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBZTtRQUM5QyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUNwQyxHQUFHLElBQUksQ0FBQyxRQUFRLFlBQVksRUFDNUIsTUFBTSxDQUNOLENBQUM7WUFDRixVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWN0b30gZnJvbSAnZWN0byc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHtXcml0ck9wdGlvbnN9IGZyb20gJy4vb3B0aW9ucy5qcyc7XG5pbXBvcnQge1dyaXRyQ29uc29sZX0gZnJvbSAnLi9jb25zb2xlLmpzJztcbmltcG9ydCB7R2l0aHViLCB0eXBlIEdpdGh1YkRhdGEsIHR5cGUgR2l0aHViT3B0aW9uc30gZnJvbSAnLi9naXRodWIuanMnO1xuXG5leHBvcnQgdHlwZSBXcml0ckRhdGEgPSB7XG5cdHNpdGVVcmw6IHN0cmluZztcblx0c2l0ZVRpdGxlOiBzdHJpbmc7XG5cdHNpdGVEZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRzaXRlUGF0aDogc3RyaW5nO1xuXHR0ZW1wbGF0ZVBhdGg6IHN0cmluZztcblx0b3V0cHV0UGF0aDogc3RyaW5nO1xuXHRnaXRodWJQYXRoOiBzdHJpbmc7XG5cdGdpdGh1Yj86IEdpdGh1YkRhdGE7XG5cdHRlbXBsYXRlcz86IFdyaXRyVGVtcGxhdGVzO1xufTtcblxuZXhwb3J0IHR5cGUgV3JpdHJUZW1wbGF0ZXMgPSB7XG5cdGluZGV4OiBzdHJpbmc7XG5cdHJlbGVhc2VzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgV3JpdHJCdWlsZGVyIHtcblx0cHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogV3JpdHJPcHRpb25zID0gbmV3IFdyaXRyT3B0aW9ucygpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lY3RvOiBFY3RvO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jb25zb2xlOiBXcml0ckNvbnNvbGUgPSBuZXcgV3JpdHJDb25zb2xlKCk7XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IFdyaXRyT3B0aW9ucywgZW5naW5lT3B0aW9ucz86IGFueSkge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcblx0XHR9XG5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuXHRcdHRoaXMuX2VjdG8gPSBuZXcgRWN0byhlbmdpbmVPcHRpb25zKTtcblx0fVxuXG5cdHB1YmxpYyBnZXQgb3B0aW9ucygpOiBXcml0ck9wdGlvbnMge1xuXHRcdHJldHVybiB0aGlzLl9vcHRpb25zO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cblx0XHQvLyBWYWxpZGF0ZSB0aGUgb3B0aW9uc1xuXHRcdHRoaXMudmFsaWRhdGVPcHRpb25zKHRoaXMub3B0aW9ucyk7XG5cdFx0Ly8gU2V0IHRoZSBzaXRlIG9wdGlvbnNcblx0XHRjb25zdCB3cml0ckRhdGE6IFdyaXRyRGF0YSA9IHtcblx0XHRcdHNpdGVVcmw6IHRoaXMub3B0aW9ucy5zaXRlVXJsLFxuXHRcdFx0c2l0ZVRpdGxlOiB0aGlzLm9wdGlvbnMuc2l0ZVRpdGxlLFxuXHRcdFx0c2l0ZURlc2NyaXB0aW9uOiB0aGlzLm9wdGlvbnMuc2l0ZURlc2NyaXB0aW9uLFxuXHRcdFx0c2l0ZVBhdGg6IHRoaXMub3B0aW9ucy5zaXRlUGF0aCxcblx0XHRcdHRlbXBsYXRlUGF0aDogdGhpcy5vcHRpb25zLnRlbXBsYXRlUGF0aCxcblx0XHRcdG91dHB1dFBhdGg6IHRoaXMub3B0aW9ucy5vdXRwdXRQYXRoLFxuXHRcdFx0Z2l0aHViUGF0aDogdGhpcy5vcHRpb25zLmdpdGh1YlBhdGgsXG5cdFx0fTtcblxuXHRcdC8vIEdldCBkYXRhIGZyb20gZ2l0aHViXG5cdFx0Y29uc3QgZ2l0aHViRGF0YSA9IGF3YWl0IHRoaXMuZ2V0R2l0aHViRGF0YSh0aGlzLm9wdGlvbnMuZ2l0aHViUGF0aCk7XG5cdFx0Ly8gR2V0IGRhdGEgb2YgdGhlIHNpdGVcblx0XHR3cml0ckRhdGEuZ2l0aHViID0gZ2l0aHViRGF0YTtcblx0XHQvLyBHZXQgdGhlIHRlbXBsYXRlcyB0byB1c2Vcblx0XHR3cml0ckRhdGEudGVtcGxhdGVzID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZXModGhpcy5vcHRpb25zKTtcblxuXHRcdC8vIEJ1aWxkIHRoZSBob21lIHBhZ2UgKGluZGV4Lmh0bWwpXG5cdFx0YXdhaXQgdGhpcy5idWlsZEluZGV4UGFnZSh3cml0ckRhdGEpO1xuXG5cdFx0Ly8gQnVpbGQgdGhlIHJlbGVhc2VzIHBhZ2UgKC9yZWxlYXNlcy9pbmRleC5odG1sKVxuXHRcdGF3YWl0IHRoaXMuYnVpbGRSZWxlYXNlUGFnZSh3cml0ckRhdGEpO1xuXG5cdFx0Ly8gQnVpbGQgdGhlIHNpdGVtYXAgKC9zaXRlbWFwLnhtbClcblx0XHRhd2FpdCB0aGlzLmJ1aWxkU2l0ZU1hcFBhZ2Uod3JpdHJEYXRhKTtcblxuXHRcdC8vIEJ1aWxkIHRoZSByb2JvdHMudHh0ICgvcm9ib3RzLnR4dClcblx0XHRhd2FpdCB0aGlzLmJ1aWxkUm9ib3RzUGFnZSh0aGlzLm9wdGlvbnMpO1xuXG5cdFx0Y29uc3Qgc2l0ZVJlbGF0aXZlUGF0aCA9IHRoaXMub3B0aW9ucy5zaXRlUGF0aDtcblxuXHRcdC8vIENvcHkgb3ZlciBmYXZpY29uXG5cdFx0aWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMoYCR7c2l0ZVJlbGF0aXZlUGF0aH0vZmF2aWNvbi5pY29gKSkge1xuXHRcdFx0YXdhaXQgZnMuY29weShcblx0XHRcdFx0YCR7c2l0ZVJlbGF0aXZlUGF0aH0vZmF2aWNvbi5pY29gLFxuXHRcdFx0XHRgJHt0aGlzLm9wdGlvbnMub3V0cHV0UGF0aH0vZmF2aWNvbi5pY29gLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBDb3B5IG92ZXIgbG9nb1xuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKGAke3NpdGVSZWxhdGl2ZVBhdGh9L2xvZ28uc3ZnYCkpIHtcblx0XHRcdGF3YWl0IGZzLmNvcHkoXG5cdFx0XHRcdGAke3NpdGVSZWxhdGl2ZVBhdGh9L2xvZ28uc3ZnYCxcblx0XHRcdFx0YCR7dGhpcy5vcHRpb25zLm91dHB1dFBhdGh9L2xvZ28uc3ZnYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSBvdmVyIGNzc1xuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKGAke3RoaXMub3B0aW9ucy50ZW1wbGF0ZVBhdGh9L2Nzc2ApKSB7XG5cdFx0XHRhd2FpdCBmcy5jb3B5KFxuXHRcdFx0XHRgJHt0aGlzLm9wdGlvbnMudGVtcGxhdGVQYXRofS9jc3NgLFxuXHRcdFx0XHRgJHt0aGlzLm9wdGlvbnMub3V0cHV0UGF0aH0vY3NzYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSBvdmVyIHZhcmlhYmxlc1xuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKGAke3NpdGVSZWxhdGl2ZVBhdGh9L3ZhcmlhYmxlcy5jc3NgKSkge1xuXHRcdFx0YXdhaXQgZnMuY29weShcblx0XHRcdFx0YCR7c2l0ZVJlbGF0aXZlUGF0aH0vdmFyaWFibGVzLmNzc2AsXG5cdFx0XHRcdGAke3RoaXMub3B0aW9ucy5vdXRwdXRQYXRofS9jc3MvdmFyaWFibGVzLmNzc2AsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpO1xuXG5cdFx0Y29uc3QgZXhlY3V0aW9uVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7XG5cblx0XHR0aGlzLl9jb25zb2xlLmxvZyhgQnVpbGQgY29tcGxldGVkIGluICR7ZXhlY3V0aW9uVGltZX1tc2ApO1xuXHR9XG5cblx0cHVibGljIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zOiBXcml0ck9wdGlvbnMpOiB2b2lkIHtcblx0XHRpZiAob3B0aW9ucy5naXRodWJQYXRoLmxlbmd0aCA8IDMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gZ2l0aHViIG9wdGlvbnMgcHJvdmlkZWQnKTtcblx0XHR9XG5cblx0XHRpZiAob3B0aW9ucy5zaXRlRGVzY3JpcHRpb24ubGVuZ3RoIDwgMykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdObyBzaXRlIGRlc2NyaXB0aW9uIG9wdGlvbnMgcHJvdmlkZWQnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdGlvbnMuc2l0ZVRpdGxlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHNpdGUgdGl0bGUgb3B0aW9ucyBwcm92aWRlZCcpO1xuXHRcdH1cblxuXHRcdGlmICghb3B0aW9ucy5zaXRlVXJsKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHNpdGUgdXJsIG9wdGlvbnMgcHJvdmlkZWQnKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0R2l0aHViRGF0YShnaXRodWJQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEdpdGh1YkRhdGE+IHtcblx0XHRjb25zdCBwYXRocyA9IGdpdGh1YlBhdGguc3BsaXQoJy8nKTtcblx0XHRjb25zdCBvcHRpb25zOiBHaXRodWJPcHRpb25zID0ge1xuXHRcdFx0YXV0aG9yOiBwYXRoc1swXSxcblx0XHRcdHJlcG86IHBhdGhzWzFdLFxuXHRcdH07XG5cdFx0Y29uc3QgZ2l0aHViID0gbmV3IEdpdGh1YihvcHRpb25zKTtcblx0XHRyZXR1cm4gZ2l0aHViLmdldERhdGEoKTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRUZW1wbGF0ZXMob3B0aW9uczogV3JpdHJPcHRpb25zKTogUHJvbWlzZTxXcml0clRlbXBsYXRlcz4ge1xuXHRcdGNvbnN0IHRlbXBsYXRlczogV3JpdHJUZW1wbGF0ZXMgPSB7XG5cdFx0XHRpbmRleDogJycsXG5cdFx0XHRyZWxlYXNlczogJycsXG5cdFx0fTtcblxuXHRcdGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKG9wdGlvbnMudGVtcGxhdGVQYXRoKSkge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlRmlsZShvcHRpb25zLnRlbXBsYXRlUGF0aCwgJ2luZGV4Jyk7XG5cdFx0XHRpZiAoaW5kZXgpIHtcblx0XHRcdFx0dGVtcGxhdGVzLmluZGV4ID0gaW5kZXg7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHJlbGVhc2VzID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZUZpbGUoXG5cdFx0XHRcdG9wdGlvbnMudGVtcGxhdGVQYXRoLFxuXHRcdFx0XHQncmVsZWFzZXMnLFxuXHRcdFx0KTtcblx0XHRcdGlmIChyZWxlYXNlcykge1xuXHRcdFx0XHR0ZW1wbGF0ZXMucmVsZWFzZXMgPSByZWxlYXNlcztcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBObyB0ZW1wbGF0ZSBwYXRoIGZvdW5kIGF0ICR7b3B0aW9ucy50ZW1wbGF0ZVBhdGh9YCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRlbXBsYXRlcztcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRUZW1wbGF0ZUZpbGUoXG5cdFx0cGF0aDogc3RyaW5nLFxuXHRcdG5hbWU6IHN0cmluZyxcblx0KTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcblx0XHRsZXQgcmVzdWx0O1xuXHRcdGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihwYXRoKTtcblx0XHRmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcblx0XHRcdGNvbnN0IGZpbGVOYW1lID0gZmlsZS5zcGxpdCgnLicpO1xuXHRcdFx0aWYgKGZpbGVOYW1lWzBdLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRcdHJlc3VsdCA9IGZpbGUudG9TdHJpbmcoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBidWlsZFJvYm90c1BhZ2Uob3B0aW9uczogV3JpdHJPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qge3NpdGVQYXRofSA9IG9wdGlvbnM7XG5cdFx0Y29uc3Qge291dHB1dFBhdGh9ID0gb3B0aW9ucztcblx0XHRjb25zdCByb2JvdHNQYXRoID0gYCR7b3V0cHV0UGF0aH0vcm9ib3RzLnR4dGA7XG5cblx0XHRhd2FpdCBmcy5lbnN1cmVEaXIob3V0cHV0UGF0aCk7XG5cblx0XHRhd2FpdCAoKGF3YWl0IGZzLnBhdGhFeGlzdHMoYCR7c2l0ZVBhdGh9L3JvYm90cy50eHRgKSlcblx0XHRcdD8gZnMuY29weShgJHtzaXRlUGF0aH0vcm9ib3RzLnR4dGAsIHJvYm90c1BhdGgpXG5cdFx0XHQ6IGZzLndyaXRlRmlsZShyb2JvdHNQYXRoLCAnVXNlci1hZ2VudDogKlxcbkRpc2FsbG93OicpKTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBidWlsZFNpdGVNYXBQYWdlKGRhdGE6IFdyaXRyRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHNpdGVtYXBQYXRoID0gYCR7ZGF0YS5vdXRwdXRQYXRofS9zaXRlbWFwLnhtbGA7XG5cdFx0Y29uc3QgdXJscyA9IFt7dXJsOiBkYXRhLnNpdGVVcmx9LCB7dXJsOiBgJHtkYXRhLnNpdGVVcmx9L3JlbGVhc2VzYH1dO1xuXG5cdFx0bGV0IHhtbCA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4nO1xuXHRcdHhtbCArPSAnPHVybHNldCB4bWxucz1cImh0dHA6Ly93d3cuc2l0ZW1hcHMub3JnL3NjaGVtYXMvc2l0ZW1hcC8wLjlcIj4nO1xuXG5cdFx0Zm9yIChjb25zdCB7dXJsfSBvZiB1cmxzKSB7XG5cdFx0XHR4bWwgKz0gJzx1cmw+Jztcblx0XHRcdHhtbCArPSBgPGxvYz4ke3VybH08L2xvYz5gO1xuXHRcdFx0eG1sICs9ICc8L3VybD4nO1xuXHRcdH1cblxuXHRcdHhtbCArPSAnPC91cmxzZXQ+JztcblxuXHRcdGF3YWl0IGZzLmVuc3VyZURpcihkYXRhLm91dHB1dFBhdGgpO1xuXG5cdFx0YXdhaXQgZnMud3JpdGVGaWxlKHNpdGVtYXBQYXRoLCB4bWwsICd1dGY4Jyk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgYnVpbGRJbmRleFBhZ2UoZGF0YTogV3JpdHJEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGRhdGEudGVtcGxhdGVzKSB7XG5cdFx0XHRjb25zdCBpbmRleFBhdGggPSBgJHtkYXRhLm91dHB1dFBhdGh9L2luZGV4Lmh0bWxgO1xuXG5cdFx0XHRhd2FpdCBmcy5lbnN1cmVEaXIoZGF0YS5vdXRwdXRQYXRoKTtcblxuXHRcdFx0Y29uc3QgaW5kZXhUZW1wbGF0ZSA9IGAke2RhdGEudGVtcGxhdGVQYXRofS8ke2RhdGEudGVtcGxhdGVzLmluZGV4fWA7XG5cblx0XHRcdGNvbnN0IGh0bWxSZWFkbWUgPSBhd2FpdCB0aGlzLmJ1aWxkUmVhZG1lU2VjdGlvbihkYXRhKTtcblxuXHRcdFx0Y29uc3QgaW5kZXhDb250ZW50ID0gYXdhaXQgdGhpcy5fZWN0by5yZW5kZXJGcm9tRmlsZShcblx0XHRcdFx0aW5kZXhUZW1wbGF0ZSxcblx0XHRcdFx0ey4uLmRhdGEsIGNvbnRlbnQ6IGh0bWxSZWFkbWV9LFxuXHRcdFx0XHRkYXRhLnRlbXBsYXRlUGF0aCxcblx0XHRcdCk7XG5cdFx0XHRhd2FpdCBmcy53cml0ZUZpbGUoaW5kZXhQYXRoLCBpbmRleENvbnRlbnQsICd1dGY4Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gdGVtcGxhdGVzIGZvdW5kJyk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGJ1aWxkUmVsZWFzZVBhZ2UoZGF0YTogV3JpdHJEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGRhdGEuZ2l0aHViICYmIGRhdGEudGVtcGxhdGVzKSB7XG5cdFx0XHRjb25zdCByZWxlYXNlc1BhdGggPSBgJHtkYXRhLm91dHB1dFBhdGh9L3JlbGVhc2VzL2luZGV4Lmh0bWxgO1xuXHRcdFx0Y29uc3QgcmVsZWFzZU91dHB1dFBhdGggPSBgJHtkYXRhLm91dHB1dFBhdGh9L3JlbGVhc2VzYDtcblxuXHRcdFx0YXdhaXQgZnMuZW5zdXJlRGlyKHJlbGVhc2VPdXRwdXRQYXRoKTtcblxuXHRcdFx0Y29uc3QgcmVsZWFzZXNUZW1wbGF0ZSA9IGAke2RhdGEudGVtcGxhdGVQYXRofS8ke2RhdGEudGVtcGxhdGVzLnJlbGVhc2VzfWA7XG5cdFx0XHRjb25zdCByZWxlYXNlc0NvbnRlbnQgPSBhd2FpdCB0aGlzLl9lY3RvLnJlbmRlckZyb21GaWxlKFxuXHRcdFx0XHRyZWxlYXNlc1RlbXBsYXRlLFxuXHRcdFx0XHRkYXRhLFxuXHRcdFx0XHRkYXRhLnRlbXBsYXRlUGF0aCxcblx0XHRcdCk7XG5cdFx0XHRhd2FpdCBmcy53cml0ZUZpbGUocmVsZWFzZXNQYXRoLCByZWxlYXNlc0NvbnRlbnQsICd1dGY4Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gZ2l0aHViIGRhdGEgZm91bmQnKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgYnVpbGRSZWFkbWVTZWN0aW9uKGRhdGE6IFdyaXRyRGF0YSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0bGV0IGh0bWxSZWFkbWUgPSAnJztcblx0XHRpZiAoZnMuZXhpc3RzU3luYyhgJHtkYXRhLnNpdGVQYXRofS9SRUFETUUubWRgKSkge1xuXHRcdFx0Y29uc3QgcmVhZG1lQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhcblx0XHRcdFx0YCR7ZGF0YS5zaXRlUGF0aH0vUkVBRE1FLm1kYCxcblx0XHRcdFx0J3V0ZjgnLFxuXHRcdFx0KTtcblx0XHRcdGh0bWxSZWFkbWUgPSBhd2FpdCB0aGlzLl9lY3RvLm1hcmtkb3duLnJlbmRlcihyZWFkbWVDb250ZW50KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaHRtbFJlYWRtZTtcblx0fVxufVxuIl19
|
package/dist/console.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare class WritrConsole {
|
|
2
|
-
log(message: string): void;
|
|
3
|
-
error(message: string): void;
|
|
4
|
-
warn(message: string): void;
|
|
5
|
-
printHelp(): void;
|
|
6
|
-
parseProcessArgv(argv: string[]): WritrConsoleProcess;
|
|
7
|
-
getCommand(argv: string[]): string | undefined;
|
|
8
|
-
getArguments(argv: string[]): WritrConsoleArguments;
|
|
9
|
-
}
|
|
10
|
-
type WritrConsoleProcess = {
|
|
11
|
-
argv: string[];
|
|
12
|
-
command: string | undefined;
|
|
13
|
-
args: WritrConsoleArguments;
|
|
14
|
-
};
|
|
15
|
-
type WritrConsoleArguments = {
|
|
16
|
-
sitePath: string | undefined;
|
|
17
|
-
templatePath: string | undefined;
|
|
18
|
-
output: string | undefined;
|
|
19
|
-
watch: boolean;
|
|
20
|
-
port: number;
|
|
21
|
-
};
|
|
22
|
-
export {};
|
package/dist/console.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import process from 'node:process';
|
|
3
|
-
export class WritrConsole {
|
|
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: writr [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 writr 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLFlBQVk7SUFDeEIsR0FBRyxDQUFDLE9BQWU7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWU7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWU7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUztRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLHFIQUFxSCxDQUFDLENBQUM7UUFDbkksT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7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QU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3BELE1BQU07Z0JBQ1AsQ0FBQztnQkFFRCxLQUFLLElBQUksQ0FBQztnQkFDVixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNsQixNQUFNO2dCQUNQLENBQUM7Z0JBRUQsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1AsQ0FBQztnQkFFRCxLQUFLLElBQUksQ0FBQztnQkFDVixLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDaEUsTUFBTTtnQkFDUCxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5leHBvcnQgY2xhc3MgV3JpdHJDb25zb2xlIHtcblx0bG9nKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuXHR9XG5cblx0ZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc29sZS5lcnJvcihtZXNzYWdlKTtcblx0fVxuXG5cdHdhcm4obWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc29sZS53YXJuKG1lc3NhZ2UpO1xuXHR9XG5cblx0cHJpbnRIZWxwKCk6IHZvaWQge1xuXHRcdGNvbnNvbGUubG9nKCcgICBVc2FnZTogd3JpdHIgW2NvbW1hbmRdIFthcmd1bWVudHNdJyk7XG5cdFx0Y29uc29sZS5sb2coKTtcblx0XHRjb25zb2xlLmxvZygnICAgQ29tbWFuZHM6Jyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgaW5pdCAgICAgICAgICAgSW5pdGlhbGl6ZSBhIG5ldyBwcm9qZWN0Jyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgYnVpbGQgICAgICAgICAgQnVpbGQgdGhlIHByb2plY3QuIEJ5IGRlZmF1bHQganVzdCBucHggd3JpdHIgd2lsbCBidWlsZCB0aGUgcHJvamVjdCBpZiBpdCBmaW5kcyBhIC4vc2l0ZSBmb2xkZXInKTtcblx0XHRjb25zb2xlLmxvZygnICAgICBzZXJ2ZSAgICAgICAgICBTZXJ2ZSB0aGUgcHJvamVjdCBhcyBhIGxvY2FsIHdlYnNpdGUnKTtcblx0XHRjb25zb2xlLmxvZygnICAgICBoZWxwICAgICAgICAgICBQcmludCB0aGlzIGhlbHAnKTtcblx0XHRjb25zb2xlLmxvZygnICAgICB2ZXJzaW9uICAgICAgICBQcmludCB0aGUgdmVyc2lvbicpO1xuXHRcdGNvbnNvbGUubG9nKCk7XG5cdFx0Y29uc29sZS5sb2coJyAgIEFyZ3VtZW50cyBCdWlsZDonKTtcblx0XHRjb25zb2xlLmxvZygnICAgICAtdywgLS13YXRjaCAgICAgICAgICAgIHdhdGNoIGZvciBjaGFuZ2VzIGFuZCByZWJ1aWxkJyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXMsIC0tc2l0ZSAgICAgICAgICAgICBTZXQgdGhlIHBhdGggd2hlcmUgc2l0ZSBmaWxlcyBhcmUgbG9jYXRlZCcpO1xuXHRcdGNvbnNvbGUubG9nKCcgICAgIC1vLCAtLW91dHB1dFBhdGggICAgICAgU2V0IHRoZSBvdXRwdXQgZGlyZWN0b3J5LiBEZWZhdWx0IGlzIC4vc2l0ZS9kaXN0Jyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXQsIC0tdGVtcGxhdGVQYXRoICAgICBTZXQgdGhlIGN1c3RvbSB0ZW1wbGF0ZSB0byB1c2UnKTtcblx0XHRjb25zb2xlLmxvZygpO1xuXHRcdGNvbnNvbGUubG9nKCcgICBBcmd1bWVudHMgc2VydmU6Jyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXAsIC0tcG9ydCAgICAgICAgIFNldCB0aGUgcG9ydCBudW1iZXIgdXNlZCB3aXRoIHNlcnZlJyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXcsIC0td2F0Y2ggICAgICAgIHdhdGNoIGZvciBjaGFuZ2VzIGFuZCByZWJ1aWxkJyk7XG5cdFx0Y29uc29sZS5sb2coJyAgICAgLXMsIC0tc2l0ZSAgICAgICAgIFNldCB0aGUgcGF0aCB3aGVyZSBzaXRlIGZpbGVzIGFyZSBsb2NhdGVkJyk7XG5cdH1cblxuXHRwdWJsaWMgcGFyc2VQcm9jZXNzQXJndihhcmd2OiBzdHJpbmdbXSk6IFdyaXRyQ29uc29sZVByb2Nlc3Mge1xuXHRcdGNvbnN0IGNvbW1hbmQgPSB0aGlzLmdldENvbW1hbmQoYXJndik7XG5cdFx0Y29uc3QgYXJncyA9IHRoaXMuZ2V0QXJndW1lbnRzKGFyZ3YpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRhcmd2LFxuXHRcdFx0Y29tbWFuZCxcblx0XHRcdGFyZ3MsXG5cdFx0fTtcblx0fVxuXG5cdHB1YmxpYyBnZXRDb21tYW5kKGFyZ3Y6IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgcmVzdWx0O1xuXHRcdGZvciAoY29uc3QgYXJnIG9mIGFyZ3YpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2Vcblx0XHRcdHN3aXRjaCAoYXJnKSB7XG5cdFx0XHRcdGNhc2UgJ2luaXQnOiB7XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ2luaXQnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnYnVpbGQnOiB7XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ2J1aWxkJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJ3NlcnZlJzoge1xuXHRcdFx0XHRcdHJlc3VsdCA9ICdzZXJ2ZSc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdoZWxwJzoge1xuXHRcdFx0XHRcdHJlc3VsdCA9ICdoZWxwJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJ3ZlcnNpb24nOiB7XG5cdFx0XHRcdFx0cmVzdWx0ID0gYXJnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHB1YmxpYyBnZXRBcmd1bWVudHMoYXJndjogc3RyaW5nW10pOiBXcml0ckNvbnNvbGVBcmd1bWVudHMge1xuXHRcdGNvbnN0IGFyZ3MgPSB7XG5cdFx0XHRzaXRlUGF0aDogJycsXG5cdFx0XHR0ZW1wbGF0ZVBhdGg6ICcnLFxuXHRcdFx0b3V0cHV0OiAnJyxcblx0XHRcdHdhdGNoOiBmYWxzZSxcblx0XHRcdHBvcnQ6IDMwMDAsXG5cdFx0fTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGFyZyA9IGFyZ3ZbaV07XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVmYXVsdC1jYXNlXG5cdFx0XHRzd2l0Y2ggKGFyZykge1xuXHRcdFx0XHRjYXNlICctcCc6XG5cdFx0XHRcdGNhc2UgJy0tcG9ydCc6IHtcblx0XHRcdFx0XHRjb25zdCBwb3J0U3RyaW5nID0gYXJndltpICsgMV07XG5cdFx0XHRcdFx0aWYgKHBvcnRTdHJpbmcgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0YXJncy5wb3J0ID0gTnVtYmVyLnBhcnNlSW50KHBvcnRTdHJpbmcsIDEwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJy1vJzpcblx0XHRcdFx0Y2FzZSAnLS1vdXRwdXQnOiB7XG5cdFx0XHRcdFx0YXJncy5vdXRwdXQgPSBhcmd2W2kgKyAxXTtcblx0XHRcdFx0XHRhcmdzLm91dHB1dCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBhcmdzLm91dHB1dCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICctdyc6XG5cdFx0XHRcdGNhc2UgJy0td2F0Y2gnOiB7XG5cdFx0XHRcdFx0YXJncy53YXRjaCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICctcyc6XG5cdFx0XHRcdGNhc2UgJy0tc2l0ZSc6IHtcblx0XHRcdFx0XHRhcmdzLnNpdGVQYXRoID0gYXJndltpICsgMV07XG5cdFx0XHRcdFx0YXJncy5zaXRlUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBhcmdzLnNpdGVQYXRoKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJy10Jzpcblx0XHRcdFx0Y2FzZSAnLS10ZW1wbGF0ZVBhdGgnOiB7XG5cdFx0XHRcdFx0YXJncy50ZW1wbGF0ZVBhdGggPSBhcmd2W2kgKyAxXTtcblx0XHRcdFx0XHRhcmdzLnRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBhcmdzLnRlbXBsYXRlUGF0aCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gYXJncztcblx0fVxufVxuXG50eXBlIFdyaXRyQ29uc29sZVByb2Nlc3MgPSB7XG5cdGFyZ3Y6IHN0cmluZ1tdO1xuXHRjb21tYW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGFyZ3M6IFdyaXRyQ29uc29sZUFyZ3VtZW50cztcbn07XG5cbnR5cGUgV3JpdHJDb25zb2xlQXJndW1lbnRzID0ge1xuXHRzaXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHR0ZW1wbGF0ZVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0b3V0cHV0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdhdGNoOiBib29sZWFuO1xuXHRwb3J0OiBudW1iZXI7XG59O1xuXG4iXX0=
|
package/dist/github.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export type GithubOptions = {
|
|
2
|
-
api?: string | undefined;
|
|
3
|
-
author: string;
|
|
4
|
-
repo: string;
|
|
5
|
-
};
|
|
6
|
-
export type GithubData = {
|
|
7
|
-
releases: Record<string, unknown>;
|
|
8
|
-
contributors: Record<string, unknown>;
|
|
9
|
-
};
|
|
10
|
-
export declare class Github {
|
|
11
|
-
options: {
|
|
12
|
-
api: string;
|
|
13
|
-
author: string;
|
|
14
|
-
repo: string;
|
|
15
|
-
};
|
|
16
|
-
constructor(options: GithubOptions);
|
|
17
|
-
getData(): Promise<GithubData>;
|
|
18
|
-
getReleases(): Promise<any>;
|
|
19
|
-
getContributors(): Promise<any>;
|
|
20
|
-
parseOptions(options: GithubOptions): void;
|
|
21
|
-
private addAnchorLink;
|
|
22
|
-
}
|
package/dist/github.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
export class Github {
|
|
3
|
-
options = {
|
|
4
|
-
api: 'https://api.github.com',
|
|
5
|
-
author: '',
|
|
6
|
-
repo: '',
|
|
7
|
-
};
|
|
8
|
-
constructor(options) {
|
|
9
|
-
this.parseOptions(options);
|
|
10
|
-
}
|
|
11
|
-
async getData() {
|
|
12
|
-
const data = {
|
|
13
|
-
releases: {},
|
|
14
|
-
contributors: {},
|
|
15
|
-
};
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
17
|
-
data.releases = await this.getReleases();
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
19
|
-
data.contributors = await this.getContributors();
|
|
20
|
-
return data;
|
|
21
|
-
}
|
|
22
|
-
async getReleases() {
|
|
23
|
-
const url = `${this.options.api}/repos/${this.options.author}/${this.options.repo}/releases`;
|
|
24
|
-
try {
|
|
25
|
-
const result = await axios.get(url);
|
|
26
|
-
if (result && result.data.length > 0) {
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
28
|
-
return this.addAnchorLink(result.data);
|
|
29
|
-
}
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
const typedError = error;
|
|
34
|
-
if (typedError.response?.status === 404) {
|
|
35
|
-
throw new Error(`Repository ${this.options.author}/${this.options.repo} not found.`);
|
|
36
|
-
}
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
async getContributors() {
|
|
41
|
-
const url = `${this.options.api}/repos/${this.options.author}/${this.options.repo}/contributors`;
|
|
42
|
-
try {
|
|
43
|
-
const result = await axios.get(url);
|
|
44
|
-
if (result && result.data.length > 0) {
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
46
|
-
return result.data;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
const typedError = error;
|
|
51
|
-
if (typedError.response?.status === 404) {
|
|
52
|
-
throw new Error(`Repository ${this.options.author}/${this.options.repo} not found.`);
|
|
53
|
-
}
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
parseOptions(options) {
|
|
58
|
-
if (options.api) {
|
|
59
|
-
this.options.api = options.api;
|
|
60
|
-
}
|
|
61
|
-
this.options.author = options.author;
|
|
62
|
-
this.options.repo = options.repo;
|
|
63
|
-
}
|
|
64
|
-
addAnchorLink(data) {
|
|
65
|
-
return data.map(release => {
|
|
66
|
-
const regex = /(?<!]\()(https:\/\/[\w./]+)(?!\))/g;
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
|
68
|
-
release.body = release.body.replaceAll(regex, '[$1]($1)');
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
70
|
-
return release;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dpdGh1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFhMUIsTUFBTSxPQUFPLE1BQU07SUFDbEIsT0FBTyxHQUFHO1FBQ1QsR0FBRyxFQUFFLHdCQUF3QjtRQUM3QixNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxFQUFFO0tBQ1IsQ0FBQztJQUVGLFlBQVksT0FBc0I7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWixNQUFNLElBQUksR0FBRztZQUNaLFFBQVEsRUFBRSxFQUFFO1lBQ1osWUFBWSxFQUFFLEVBQUU7U0FDaEIsQ0FBQztRQUNGLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRWpELE9BQU8sSUFBa0IsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDaEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDO1FBQzdGLElBQUksQ0FBQztZQUNKLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVwQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsK0RBQStEO2dCQUMvRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQWEsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sVUFBVSxHQUFHLEtBQXFDLENBQUM7WUFDekQsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQztZQUN0RixDQUFDO1lBRUQsTUFBTSxLQUFLLENBQUM7UUFDYixDQUFDO0lBQ0YsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWUsQ0FBQztRQUNqRyxJQUFJLENBQUM7WUFDSixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLCtEQUErRDtnQkFDL0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3BCLENBQUM7UUFDRixDQUFDO1FBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztZQUN6QixNQUFNLFVBQVUsR0FBRyxLQUFxQyxDQUFDO1lBQ3pELElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUM7WUFDdEYsQ0FBQztZQUVELE1BQU0sS0FBSyxDQUFDO1FBQ2IsQ0FBQztJQUNGLENBQUM7SUFFTSxZQUFZLENBQUMsT0FBc0I7UUFDekMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBVztRQUNoQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQUcsb0NBQW9DLENBQUM7WUFDbkQsc0dBQXNHO1lBQ3RHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzFELCtEQUErRDtZQUMvRCxPQUFPLE9BQU8sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmV4cG9ydCB0eXBlIEdpdGh1Yk9wdGlvbnMgPSB7XG5cdGFwaT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0YXV0aG9yOiBzdHJpbmc7XG5cdHJlcG86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdpdGh1YkRhdGEgPSB7XG5cdHJlbGVhc2VzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0Y29udHJpYnV0b3JzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBHaXRodWIge1xuXHRvcHRpb25zID0ge1xuXHRcdGFwaTogJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20nLFxuXHRcdGF1dGhvcjogJycsXG5cdFx0cmVwbzogJycsXG5cdH07XG5cblx0Y29uc3RydWN0b3Iob3B0aW9uczogR2l0aHViT3B0aW9ucykge1xuXHRcdHRoaXMucGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuXHR9XG5cblx0YXN5bmMgZ2V0RGF0YSgpOiBQcm9taXNlPEdpdGh1YkRhdGE+IHtcblx0XHRjb25zdCBkYXRhID0ge1xuXHRcdFx0cmVsZWFzZXM6IHt9LFxuXHRcdFx0Y29udHJpYnV0b3JzOiB7fSxcblx0XHR9O1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcblx0XHRkYXRhLnJlbGVhc2VzID0gYXdhaXQgdGhpcy5nZXRSZWxlYXNlcygpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcblx0XHRkYXRhLmNvbnRyaWJ1dG9ycyA9IGF3YWl0IHRoaXMuZ2V0Q29udHJpYnV0b3JzKCk7XG5cblx0XHRyZXR1cm4gZGF0YSBhcyBHaXRodWJEYXRhO1xuXHR9XG5cblx0YXN5bmMgZ2V0UmVsZWFzZXMoKTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCB1cmwgPSBgJHt0aGlzLm9wdGlvbnMuYXBpfS9yZXBvcy8ke3RoaXMub3B0aW9ucy5hdXRob3J9LyR7dGhpcy5vcHRpb25zLnJlcG99L3JlbGVhc2VzYDtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MuZ2V0KHVybCk7XG5cblx0XHRcdGlmIChyZXN1bHQgJiYgcmVzdWx0LmRhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cblx0XHRcdFx0cmV0dXJuIHRoaXMuYWRkQW5jaG9yTGluayhyZXN1bHQuZGF0YSBhcyBhbnlbXSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBbXTtcblx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgdHlwZWRFcnJvciA9IGVycm9yIGFzIHtyZXNwb25zZToge3N0YXR1czogbnVtYmVyfX07XG5cdFx0XHRpZiAodHlwZWRFcnJvci5yZXNwb25zZT8uc3RhdHVzID09PSA0MDQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBSZXBvc2l0b3J5ICR7dGhpcy5vcHRpb25zLmF1dGhvcn0vJHt0aGlzLm9wdGlvbnMucmVwb30gbm90IGZvdW5kLmApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBnZXRDb250cmlidXRvcnMoKTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCB1cmwgPSBgJHt0aGlzLm9wdGlvbnMuYXBpfS9yZXBvcy8ke3RoaXMub3B0aW9ucy5hdXRob3J9LyR7dGhpcy5vcHRpb25zLnJlcG99L2NvbnRyaWJ1dG9yc2A7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLmdldCh1cmwpO1xuXHRcdFx0aWYgKHJlc3VsdCAmJiByZXN1bHQuZGF0YS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0LmRhdGE7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IHR5cGVkRXJyb3IgPSBlcnJvciBhcyB7cmVzcG9uc2U6IHtzdGF0dXM6IG51bWJlcn19O1xuXHRcdFx0aWYgKHR5cGVkRXJyb3IucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDA0KSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgUmVwb3NpdG9yeSAke3RoaXMub3B0aW9ucy5hdXRob3J9LyR7dGhpcy5vcHRpb25zLnJlcG99IG5vdCBmb3VuZC5gKTtcblx0XHRcdH1cblxuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHBhcnNlT3B0aW9ucyhvcHRpb25zOiBHaXRodWJPcHRpb25zKSB7XG5cdFx0aWYgKG9wdGlvbnMuYXBpKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMuYXBpID0gb3B0aW9ucy5hcGk7XG5cdFx0fVxuXG5cdFx0dGhpcy5vcHRpb25zLmF1dGhvciA9IG9wdGlvbnMuYXV0aG9yO1xuXHRcdHRoaXMub3B0aW9ucy5yZXBvID0gb3B0aW9ucy5yZXBvO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRBbmNob3JMaW5rKGRhdGE6IGFueVtdKTogYW55W10ge1xuXHRcdHJldHVybiBkYXRhLm1hcChyZWxlYXNlID0+IHtcblx0XHRcdGNvbnN0IHJlZ2V4ID0gLyg/PCFdXFwoKShodHRwczpcXC9cXC9bXFx3Li9dKykoPyFcXCkpL2c7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50LCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcblx0XHRcdHJlbGVhc2UuYm9keSA9IHJlbGVhc2UuYm9keS5yZXBsYWNlQWxsKHJlZ2V4LCAnWyQxXSgkMSknKTtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuXHRcdFx0cmV0dXJuIHJlbGVhc2U7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
package/dist/helpers/markdown.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call */
|
|
2
|
-
import pkg from '@markdoc/markdoc';
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
|
-
const { Tag } = pkg;
|
|
5
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
6
|
-
export const MarkdownHelper = {
|
|
7
|
-
fence() {
|
|
8
|
-
return {
|
|
9
|
-
attributes: {
|
|
10
|
-
language: { type: String },
|
|
11
|
-
},
|
|
12
|
-
transform(node, config) {
|
|
13
|
-
const attributes = node.transformAttributes(config);
|
|
14
|
-
const processedChildren = node.transformChildren(config);
|
|
15
|
-
const languageClass = attributes.language ? `language-${attributes.language}` : '';
|
|
16
|
-
const codeAttributes = languageClass ? { class: languageClass } : {};
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
18
|
-
const codeTag = new Tag('code', codeAttributes, processedChildren.join(''));
|
|
19
|
-
return new Tag('pre', {}, [codeTag]);
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9tYXJrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrRkFBK0Y7QUFDL0YsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFFbkMsZ0VBQWdFO0FBQ2hFLE1BQU0sRUFBQyxHQUFHLEVBQUMsR0FBRyxHQUFHLENBQUM7QUFFbEIsZ0VBQWdFO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixLQUFLO1FBQ0osT0FBTztZQUNOLFVBQVUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDO2FBQ3hCO1lBQ0QsU0FBUyxDQUFDLElBQVMsRUFBRSxNQUFXO2dCQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXBELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuRixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRW5FLGlFQUFpRTtnQkFDakUsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFNUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN0QyxDQUFDO1NBQ0QsQ0FBQztJQUNILENBQUM7Q0FDRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50LCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwgKi9cbmltcG9ydCBwa2cgZnJvbSAnQG1hcmtkb2MvbWFya2RvYyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IHtUYWd9ID0gcGtnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgTWFya2Rvd25IZWxwZXIgPSB7XG5cdGZlbmNlKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRhdHRyaWJ1dGVzOiB7XG5cdFx0XHRcdGxhbmd1YWdlOiB7dHlwZTogU3RyaW5nfSxcblx0XHRcdH0sXG5cdFx0XHR0cmFuc2Zvcm0obm9kZTogYW55LCBjb25maWc6IGFueSkge1xuXHRcdFx0XHRjb25zdCBhdHRyaWJ1dGVzID0gbm9kZS50cmFuc2Zvcm1BdHRyaWJ1dGVzKGNvbmZpZyk7XG5cblx0XHRcdFx0Y29uc3QgcHJvY2Vzc2VkQ2hpbGRyZW4gPSBub2RlLnRyYW5zZm9ybUNoaWxkcmVuKGNvbmZpZyk7XG5cdFx0XHRcdGNvbnN0IGxhbmd1YWdlQ2xhc3MgPSBhdHRyaWJ1dGVzLmxhbmd1YWdlID8gYGxhbmd1YWdlLSR7YXR0cmlidXRlcy5sYW5ndWFnZX1gIDogJyc7XG5cdFx0XHRcdGNvbnN0IGNvZGVBdHRyaWJ1dGVzID0gbGFuZ3VhZ2VDbGFzcyA/IHtjbGFzczogbGFuZ3VhZ2VDbGFzc30gOiB7fTtcblxuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuXHRcdFx0XHRjb25zdCBjb2RlVGFnID0gbmV3IFRhZygnY29kZScsIGNvZGVBdHRyaWJ1dGVzLCBwcm9jZXNzZWRDaGlsZHJlbi5qb2luKCcnKSk7XG5cblx0XHRcdFx0cmV0dXJuIG5ldyBUYWcoJ3ByZScsIHt9LCBbY29kZVRhZ10pO1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9LFxufTtcbiJdfQ==
|
package/dist/helpers.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare class WritrHelpers {
|
|
2
|
-
createDoc(path: string, destination: string, frontMatter?: Record<string, string>, contentFn?: (content: string) => string): void;
|
|
3
|
-
getFrontMatterFromFile(path: string): Record<string, string>;
|
|
4
|
-
getFrontMatter(content: string): Record<string, string>;
|
|
5
|
-
setFrontMatterToFile(path: string, frontMatter: Record<string, string>): void;
|
|
6
|
-
setFrontMatterInContent(content: string, frontMatter?: Record<string, string>): string;
|
|
7
|
-
}
|
package/dist/helpers.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
import yaml from 'js-yaml';
|
|
3
|
-
export class WritrHelpers {
|
|
4
|
-
createDoc(path, destination, frontMatter, contentFn) {
|
|
5
|
-
const content = fs.readFileSync(path, 'utf8');
|
|
6
|
-
let newContent = this.setFrontMatterInContent(content, frontMatter);
|
|
7
|
-
if (contentFn) {
|
|
8
|
-
newContent = contentFn(newContent);
|
|
9
|
-
}
|
|
10
|
-
fs.writeFileSync(destination, newContent, 'utf8');
|
|
11
|
-
}
|
|
12
|
-
getFrontMatterFromFile(path) {
|
|
13
|
-
const content = fs.readFileSync(path, 'utf8');
|
|
14
|
-
return this.getFrontMatter(content);
|
|
15
|
-
}
|
|
16
|
-
getFrontMatter(content) {
|
|
17
|
-
// Use regular expressions to extract the FrontMatter
|
|
18
|
-
const match = /^---\r?\n([\s\S]+?)\r?\n---/.exec(content);
|
|
19
|
-
if (match) {
|
|
20
|
-
// Parse the YAML string to an object
|
|
21
|
-
const frontMatter = yaml.load(match[1]);
|
|
22
|
-
return frontMatter;
|
|
23
|
-
}
|
|
24
|
-
// Return null or some default value if no FrontMatter is found
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
27
|
-
setFrontMatterToFile(path, frontMatter) {
|
|
28
|
-
const content = fs.readFileSync(path, 'utf8');
|
|
29
|
-
const newContent = this.setFrontMatterInContent(content, frontMatter);
|
|
30
|
-
fs.writeFileSync(path, newContent, 'utf8');
|
|
31
|
-
}
|
|
32
|
-
setFrontMatterInContent(content, frontMatter) {
|
|
33
|
-
if (!frontMatter) {
|
|
34
|
-
return content;
|
|
35
|
-
}
|
|
36
|
-
const match = /^---\r?\n([\s\S]+?)\r?\n---\r?\n([\s\S]*)/.exec(content);
|
|
37
|
-
if (match) {
|
|
38
|
-
// Parse the existing FrontMatter
|
|
39
|
-
let oldFrontMatter = yaml.load(match[1]);
|
|
40
|
-
// Set or replace values
|
|
41
|
-
oldFrontMatter = {
|
|
42
|
-
...oldFrontMatter,
|
|
43
|
-
...frontMatter,
|
|
44
|
-
};
|
|
45
|
-
// Serialize the FrontMatter back to a YAML string
|
|
46
|
-
const newYaml = yaml.dump(oldFrontMatter);
|
|
47
|
-
// Replace the old FrontMatter with the new string
|
|
48
|
-
const newContent = `---\n${newYaml}---\n${match[2]}`;
|
|
49
|
-
// Write the result back to the file
|
|
50
|
-
return newContent;
|
|
51
|
-
}
|
|
52
|
-
// No FrontMatter found, add it
|
|
53
|
-
const newYaml = yaml.dump(frontMatter);
|
|
54
|
-
const newContent = `---\n${newYaml}---\n${content}`;
|
|
55
|
-
return newContent;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQixPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7QUFFM0IsTUFBTSxPQUFPLFlBQVk7SUFDeEIsU0FBUyxDQUFDLElBQVksRUFBRSxXQUFtQixFQUFFLFdBQW9DLEVBQUUsU0FBdUM7UUFDekgsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVwRSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2YsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFZO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDN0IscURBQXFEO1FBQ3JELE1BQU0sS0FBSyxHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1gscUNBQXFDO1lBQ3JDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsT0FBTyxXQUFxQyxDQUFDO1FBQzlDLENBQUM7UUFFRCwrREFBK0Q7UUFDL0QsT0FBTyxFQUFFLENBQUM7SUFDWCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBWSxFQUFFLFdBQW1DO1FBQ3JFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxPQUFlLEVBQUUsV0FBb0M7UUFDNUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sT0FBTyxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNYLGlDQUFpQztZQUNqQyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXpDLHdCQUF3QjtZQUN4QixjQUFjLEdBQUc7Z0JBQ2hCLEdBQUcsY0FBeUM7Z0JBQzVDLEdBQUcsV0FBVzthQUNkLENBQUM7WUFFRixrREFBa0Q7WUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUxQyxrREFBa0Q7WUFDbEQsTUFBTSxVQUFVLEdBQUcsUUFBUSxPQUFPLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFckQsb0NBQW9DO1lBQ3BDLE9BQU8sVUFBVSxDQUFDO1FBQ25CLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxRQUFRLE9BQU8sUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHlhbWwgZnJvbSAnanMteWFtbCc7XG5cbmV4cG9ydCBjbGFzcyBXcml0ckhlbHBlcnMge1xuXHRjcmVhdGVEb2MocGF0aDogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCBmcm9udE1hdHRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGNvbnRlbnRGbj86IChjb250ZW50OiBzdHJpbmcpID0+IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0ZjgnKTtcblxuXHRcdGxldCBuZXdDb250ZW50ID0gdGhpcy5zZXRGcm9udE1hdHRlckluQ29udGVudChjb250ZW50LCBmcm9udE1hdHRlcik7XG5cblx0XHRpZiAoY29udGVudEZuKSB7XG5cdFx0XHRuZXdDb250ZW50ID0gY29udGVudEZuKG5ld0NvbnRlbnQpO1xuXHRcdH1cblxuXHRcdGZzLndyaXRlRmlsZVN5bmMoZGVzdGluYXRpb24sIG5ld0NvbnRlbnQsICd1dGY4Jyk7XG5cdH1cblxuXHRnZXRGcm9udE1hdHRlckZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuXHRcdGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0ZjgnKTtcblx0XHRyZXR1cm4gdGhpcy5nZXRGcm9udE1hdHRlcihjb250ZW50KTtcblx0fVxuXG5cdGdldEZyb250TWF0dGVyKGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuXHRcdC8vIFVzZSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGV4dHJhY3QgdGhlIEZyb250TWF0dGVyXG5cdFx0Y29uc3QgbWF0Y2ggPSAvXi0tLVxccj9cXG4oW1xcc1xcU10rPylcXHI/XFxuLS0tLy5leGVjKGNvbnRlbnQpO1xuXHRcdGlmIChtYXRjaCkge1xuXHRcdFx0Ly8gUGFyc2UgdGhlIFlBTUwgc3RyaW5nIHRvIGFuIG9iamVjdFxuXHRcdFx0Y29uc3QgZnJvbnRNYXR0ZXIgPSB5YW1sLmxvYWQobWF0Y2hbMV0pO1xuXHRcdFx0cmV0dXJuIGZyb250TWF0dGVyIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIG51bGwgb3Igc29tZSBkZWZhdWx0IHZhbHVlIGlmIG5vIEZyb250TWF0dGVyIGlzIGZvdW5kXG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0c2V0RnJvbnRNYXR0ZXJUb0ZpbGUocGF0aDogc3RyaW5nLCBmcm9udE1hdHRlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0ZjgnKTtcblx0XHRjb25zdCBuZXdDb250ZW50ID0gdGhpcy5zZXRGcm9udE1hdHRlckluQ29udGVudChjb250ZW50LCBmcm9udE1hdHRlcik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhwYXRoLCBuZXdDb250ZW50LCAndXRmOCcpO1xuXHR9XG5cblx0c2V0RnJvbnRNYXR0ZXJJbkNvbnRlbnQoY29udGVudDogc3RyaW5nLCBmcm9udE1hdHRlcj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuXHRcdGlmICghZnJvbnRNYXR0ZXIpIHtcblx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdH1cblxuXHRcdGNvbnN0IG1hdGNoID0gL14tLS1cXHI/XFxuKFtcXHNcXFNdKz8pXFxyP1xcbi0tLVxccj9cXG4oW1xcc1xcU10qKS8uZXhlYyhjb250ZW50KTtcblxuXHRcdGlmIChtYXRjaCkge1xuXHRcdFx0Ly8gUGFyc2UgdGhlIGV4aXN0aW5nIEZyb250TWF0dGVyXG5cdFx0XHRsZXQgb2xkRnJvbnRNYXR0ZXIgPSB5YW1sLmxvYWQobWF0Y2hbMV0pO1xuXG5cdFx0XHQvLyBTZXQgb3IgcmVwbGFjZSB2YWx1ZXNcblx0XHRcdG9sZEZyb250TWF0dGVyID0ge1xuXHRcdFx0XHQuLi5vbGRGcm9udE1hdHRlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0Li4uZnJvbnRNYXR0ZXIsXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBTZXJpYWxpemUgdGhlIEZyb250TWF0dGVyIGJhY2sgdG8gYSBZQU1MIHN0cmluZ1xuXHRcdFx0Y29uc3QgbmV3WWFtbCA9IHlhbWwuZHVtcChvbGRGcm9udE1hdHRlcik7XG5cblx0XHRcdC8vIFJlcGxhY2UgdGhlIG9sZCBGcm9udE1hdHRlciB3aXRoIHRoZSBuZXcgc3RyaW5nXG5cdFx0XHRjb25zdCBuZXdDb250ZW50ID0gYC0tLVxcbiR7bmV3WWFtbH0tLS1cXG4ke21hdGNoWzJdfWA7XG5cblx0XHRcdC8vIFdyaXRlIHRoZSByZXN1bHQgYmFjayB0byB0aGUgZmlsZVxuXHRcdFx0cmV0dXJuIG5ld0NvbnRlbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gTm8gRnJvbnRNYXR0ZXIgZm91bmQsIGFkZCBpdFxuXHRcdGNvbnN0IG5ld1lhbWwgPSB5YW1sLmR1bXAoZnJvbnRNYXR0ZXIpO1xuXHRcdGNvbnN0IG5ld0NvbnRlbnQgPSBgLS0tXFxuJHtuZXdZYW1sfS0tLVxcbiR7Y29udGVudH1gO1xuXHRcdHJldHVybiBuZXdDb250ZW50O1xuXHR9XG59XG5cbiJdfQ==
|