writr 1.9.12 → 2.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 +76 -135
- package/bin/writr.mjs +8 -0
- package/dist/builder.d.ts +33 -0
- package/dist/builder.js +181 -0
- package/dist/console.d.ts +22 -0
- package/dist/console.js +120 -0
- package/dist/github.d.ts +22 -0
- package/dist/github.js +74 -0
- package/dist/helpers/markdown.d.ts +10 -0
- package/dist/helpers/markdown.js +24 -0
- package/dist/helpers.d.ts +7 -0
- package/dist/helpers.js +58 -0
- package/dist/options.d.ts +12 -0
- package/dist/options.js +47 -0
- package/dist/writr.d.ts +23 -0
- package/dist/writr.js +153 -0
- package/init/favicon.svg +1 -0
- package/init/logo.png +0 -0
- package/init/variables.css +30 -0
- package/init/writr.config.cjs +10 -0
- package/package.json +44 -66
- package/template/css/highlight/highlight.min.js +1433 -0
- package/template/css/highlight/styles/base16/dracula.min.css +7 -0
- package/template/css/home.css +307 -0
- package/template/css/index.css +919 -0
- package/template/includes/footer.hbs +10 -0
- package/template/includes/header.hbs +17 -0
- package/template/includes/landing/content.hbs +63 -0
- package/template/includes/landing/hero.hbs +3 -0
- package/template/includes/scripts.hbs +4 -0
- package/template/index.hbs +16 -0
- package/template/releases.hbs +45 -0
- package/bin/writr.js +0 -7
- package/dist/cache.d.ts +0 -18
- package/dist/cache.js +0 -70
- package/dist/cache.js.map +0 -1
- package/dist/config.d.ts +0 -29
- package/dist/config.js +0 -104
- package/dist/config.js.map +0 -1
- package/dist/data/dataProviderInterface.d.ts +0 -12
- package/dist/data/dataProviderInterface.js +0 -2
- package/dist/data/dataProviderInterface.js.map +0 -1
- package/dist/data/dataService.d.ts +0 -19
- package/dist/data/dataService.js +0 -130
- package/dist/data/dataService.js.map +0 -1
- package/dist/data/fileDataProvider.d.ts +0 -20
- package/dist/data/fileDataProvider.js +0 -132
- package/dist/data/fileDataProvider.js.map +0 -1
- package/dist/generator.d.ts +0 -8
- package/dist/generator.js +0 -54
- package/dist/generator.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -80
- package/dist/index.js.map +0 -1
- package/dist/log.d.ts +0 -6
- package/dist/log.js +0 -13
- package/dist/log.js.map +0 -1
- package/dist/migrate/ghostMigrationProvider.d.ts +0 -9
- package/dist/migrate/ghostMigrationProvider.js +0 -65
- package/dist/migrate/ghostMigrationProvider.js.map +0 -1
- package/dist/migrate/jekyllMigrationProvider.d.ts +0 -4
- package/dist/migrate/jekyllMigrationProvider.js +0 -11
- package/dist/migrate/jekyllMigrationProvider.js.map +0 -1
- package/dist/migrate/mediumMigrationProvider.d.ts +0 -7
- package/dist/migrate/mediumMigrationProvider.js +0 -26
- package/dist/migrate/mediumMigrationProvider.js.map +0 -1
- package/dist/migrate/migrationProviderInterface.d.ts +0 -3
- package/dist/migrate/migrationProviderInterface.js +0 -2
- package/dist/migrate/migrationProviderInterface.js.map +0 -1
- package/dist/migrate/wordpressMigrationProvider.d.ts +0 -12
- package/dist/migrate/wordpressMigrationProvider.js +0 -103
- package/dist/migrate/wordpressMigrationProvider.js.map +0 -1
- package/dist/migrate.d.ts +0 -6
- package/dist/migrate.js +0 -34
- package/dist/migrate.js.map +0 -1
- package/dist/post.d.ts +0 -31
- package/dist/post.js +0 -189
- package/dist/post.js.map +0 -1
- package/dist/render/atomRenderProvider.d.ts +0 -8
- package/dist/render/atomRenderProvider.js +0 -51
- package/dist/render/atomRenderProvider.js.map +0 -1
- package/dist/render/htmRenderlProvider.d.ts +0 -14
- package/dist/render/htmRenderlProvider.js +0 -117
- package/dist/render/htmRenderlProvider.js.map +0 -1
- package/dist/render/imageRenderProvider.d.ts +0 -8
- package/dist/render/imageRenderProvider.js +0 -15
- package/dist/render/imageRenderProvider.js.map +0 -1
- package/dist/render/jsonRenderProvider.d.ts +0 -8
- package/dist/render/jsonRenderProvider.js +0 -24
- package/dist/render/jsonRenderProvider.js.map +0 -1
- package/dist/render/renderProviderInterface.d.ts +0 -5
- package/dist/render/renderProviderInterface.js +0 -2
- package/dist/render/renderProviderInterface.js.map +0 -1
- package/dist/serve.d.ts +0 -16
- package/dist/serve.js +0 -29
- package/dist/serve.js.map +0 -1
- package/dist/storage/fileStorageProvider.d.ts +0 -10
- package/dist/storage/fileStorageProvider.js +0 -62
- package/dist/storage/fileStorageProvider.js.map +0 -1
- package/dist/storage/storageProviderInterface.d.ts +0 -8
- package/dist/storage/storageProviderInterface.js +0 -2
- package/dist/storage/storageProviderInterface.js.map +0 -1
- package/dist/storage/storageService.d.ts +0 -12
- package/dist/storage/storageService.js +0 -28
- package/dist/storage/storageService.js.map +0 -1
- package/dist/tag.d.ts +0 -9
- package/dist/tag.js +0 -34
- package/dist/tag.js.map +0 -1
- package/dist/utils/parser.d.ts +0 -5
- package/dist/utils/parser.js +0 -37
- package/dist/utils/parser.js.map +0 -1
- package/dist/utils/setup.d.ts +0 -8
- package/dist/utils/setup.js +0 -75
- package/dist/utils/setup.js.map +0 -1
- package/init/article-complex.md +0 -40
- package/init/article-ejs.md +0 -40
- package/init/article-unpublished.md +0 -11
- package/init/article1-simple.md +0 -13
- package/init/article1.md +0 -11
- package/init/article2.md +0 -14
- package/init/big-content.md +0 -11
- package/init/config.json +0 -9
- package/init/images/Introducing Docula 1.png +0 -0
- package/init/images/Introducing Docula 2.jpeg +0 -0
- package/init/images/Introducing Docula 3.png +0 -0
- package/init/images/Introducing Docula 4.png +0 -0
- package/init/permalink-test.md +0 -13
- package/init/templates/index.hjs +0 -13
- package/init/templates/partials/header.hjs +0 -2
- package/init/templates/post.hjs +0 -19
- package/init/templates/post2.hjs +0 -17
- package/init/templates/post3.ejs +0 -7
- package/init/templates/tag.hjs +0 -9
package/dist/console.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
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==
|
|
@@ -0,0 +1,24 @@
|
|
|
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==
|
|
@@ -0,0 +1,7 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
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==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class WritrOptions {
|
|
2
|
+
templatePath: string;
|
|
3
|
+
outputPath: string;
|
|
4
|
+
sitePath: string;
|
|
5
|
+
githubPath: string;
|
|
6
|
+
siteTitle: string;
|
|
7
|
+
siteDescription: string;
|
|
8
|
+
siteUrl: string;
|
|
9
|
+
port: number;
|
|
10
|
+
constructor(options?: Record<string, unknown>);
|
|
11
|
+
parseOptions(options: Record<string, any>): void;
|
|
12
|
+
}
|
package/dist/options.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
export class WritrOptions {
|
|
4
|
+
templatePath = path.join(process.cwd(), './template');
|
|
5
|
+
outputPath = path.join(process.cwd(), './dist');
|
|
6
|
+
sitePath = path.join(process.cwd(), './site');
|
|
7
|
+
githubPath = 'jaredwray/writr';
|
|
8
|
+
siteTitle = 'Writr';
|
|
9
|
+
siteDescription = 'Beautiful Website for Your Projects';
|
|
10
|
+
siteUrl = 'https://writr.org';
|
|
11
|
+
port = 3000;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
if (options) {
|
|
14
|
+
this.parseOptions(options);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
parseOptions(options) {
|
|
18
|
+
if (options.templatePath) {
|
|
19
|
+
this.templatePath = options.templatePath;
|
|
20
|
+
this.templatePath = path.join(process.cwd(), this.templatePath);
|
|
21
|
+
}
|
|
22
|
+
if (options.outputPath) {
|
|
23
|
+
this.outputPath = options.outputPath;
|
|
24
|
+
this.githubPath = path.join(process.cwd(), this.outputPath);
|
|
25
|
+
}
|
|
26
|
+
if (options.sitePath) {
|
|
27
|
+
this.sitePath = options.sitePath;
|
|
28
|
+
this.sitePath = path.join(process.cwd(), this.sitePath);
|
|
29
|
+
}
|
|
30
|
+
if (options.githubPath) {
|
|
31
|
+
this.githubPath = options.githubPath;
|
|
32
|
+
}
|
|
33
|
+
if (options.siteTitle) {
|
|
34
|
+
this.siteTitle = options.siteTitle;
|
|
35
|
+
}
|
|
36
|
+
if (options.siteDescription) {
|
|
37
|
+
this.siteDescription = options.siteDescription;
|
|
38
|
+
}
|
|
39
|
+
if (options.siteUrl) {
|
|
40
|
+
this.siteUrl = options.siteUrl;
|
|
41
|
+
}
|
|
42
|
+
if (options.port) {
|
|
43
|
+
this.port = options.port;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLFlBQVk7SUFDakIsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RELFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO0lBQy9CLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDcEIsZUFBZSxHQUFHLHFDQUFxQyxDQUFDO0lBQ3hELE9BQU8sR0FBRyxtQkFBbUIsQ0FBQztJQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRW5CLFlBQVksT0FBaUM7UUFDNUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNGLENBQUM7SUFFTSxZQUFZLENBQUMsT0FBNEI7UUFDL0MsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBc0IsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBb0IsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBa0IsQ0FBQztZQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBb0IsQ0FBQztRQUNoRCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBbUIsQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBeUIsQ0FBQztRQUMxRCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBaUIsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBYyxDQUFDO1FBQ3BDLENBQUM7SUFDRixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuZXhwb3J0IGNsYXNzIFdyaXRyT3B0aW9ucyB7XG5cdHB1YmxpYyB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy4vdGVtcGxhdGUnKTtcblx0cHVibGljIG91dHB1dFBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy4vZGlzdCcpO1xuXHRwdWJsaWMgc2l0ZVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy4vc2l0ZScpO1xuXHRwdWJsaWMgZ2l0aHViUGF0aCA9ICdqYXJlZHdyYXkvd3JpdHInO1xuXHRwdWJsaWMgc2l0ZVRpdGxlID0gJ1dyaXRyJztcblx0cHVibGljIHNpdGVEZXNjcmlwdGlvbiA9ICdCZWF1dGlmdWwgV2Vic2l0ZSBmb3IgWW91ciBQcm9qZWN0cyc7XG5cdHB1YmxpYyBzaXRlVXJsID0gJ2h0dHBzOi8vd3JpdHIub3JnJztcblx0cHVibGljIHBvcnQgPSAzMDAwO1xuXG5cdGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLnBhcnNlT3B0aW9ucyhvcHRpb25zKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgcGFyc2VPcHRpb25zKG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcblx0XHRpZiAob3B0aW9ucy50ZW1wbGF0ZVBhdGgpIHtcblx0XHRcdHRoaXMudGVtcGxhdGVQYXRoID0gb3B0aW9ucy50ZW1wbGF0ZVBhdGggYXMgc3RyaW5nO1xuXHRcdFx0dGhpcy50ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgdGhpcy50ZW1wbGF0ZVBhdGgpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLm91dHB1dFBhdGgpIHtcblx0XHRcdHRoaXMub3V0cHV0UGF0aCA9IG9wdGlvbnMub3V0cHV0UGF0aCBhcyBzdHJpbmc7XG5cdFx0XHR0aGlzLmdpdGh1YlBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgdGhpcy5vdXRwdXRQYXRoKTtcblx0XHR9XG5cblx0XHRpZiAob3B0aW9ucy5zaXRlUGF0aCkge1xuXHRcdFx0dGhpcy5zaXRlUGF0aCA9IG9wdGlvbnMuc2l0ZVBhdGggYXMgc3RyaW5nO1xuXHRcdFx0dGhpcy5zaXRlUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCB0aGlzLnNpdGVQYXRoKTtcblx0XHR9XG5cblx0XHRpZiAob3B0aW9ucy5naXRodWJQYXRoKSB7XG5cdFx0XHR0aGlzLmdpdGh1YlBhdGggPSBvcHRpb25zLmdpdGh1YlBhdGggYXMgc3RyaW5nO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLnNpdGVUaXRsZSkge1xuXHRcdFx0dGhpcy5zaXRlVGl0bGUgPSBvcHRpb25zLnNpdGVUaXRsZSBhcyBzdHJpbmc7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMuc2l0ZURlc2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLnNpdGVEZXNjcmlwdGlvbiA9IG9wdGlvbnMuc2l0ZURlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0XHR9XG5cblx0XHRpZiAob3B0aW9ucy5zaXRlVXJsKSB7XG5cdFx0XHR0aGlzLnNpdGVVcmwgPSBvcHRpb25zLnNpdGVVcmwgYXMgc3RyaW5nO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLnBvcnQpIHtcblx0XHRcdHRoaXMucG9ydCA9IG9wdGlvbnMucG9ydCBhcyBudW1iZXI7XG5cdFx0fVxuXHR9XG59XG4iXX0=
|
package/dist/writr.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import type http from 'node:http';
|
|
4
|
+
import { WritrOptions } from './options.js';
|
|
5
|
+
export default class Writr {
|
|
6
|
+
private _options;
|
|
7
|
+
private readonly _console;
|
|
8
|
+
private _configFileModule;
|
|
9
|
+
private _server;
|
|
10
|
+
constructor(options?: WritrOptions);
|
|
11
|
+
get options(): WritrOptions;
|
|
12
|
+
set options(value: WritrOptions);
|
|
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: WritrOptions): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export { WritrHelpers } from './helpers.js';
|
package/dist/writr.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import updateNotifier from 'update-notifier';
|
|
5
|
+
import express from 'express';
|
|
6
|
+
import { WritrOptions } from './options.js';
|
|
7
|
+
import { WritrConsole } from './console.js';
|
|
8
|
+
import { WritrBuilder } from './builder.js';
|
|
9
|
+
import { MarkdownHelper } from './helpers/markdown.js';
|
|
10
|
+
export default class Writr {
|
|
11
|
+
_options = new WritrOptions();
|
|
12
|
+
_console = new WritrConsole();
|
|
13
|
+
_configFileModule = {};
|
|
14
|
+
_server;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
if (options) {
|
|
17
|
+
this._options = options;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
get options() {
|
|
21
|
+
return this._options;
|
|
22
|
+
}
|
|
23
|
+
set options(value) {
|
|
24
|
+
this._options = value;
|
|
25
|
+
}
|
|
26
|
+
get server() {
|
|
27
|
+
return this._server;
|
|
28
|
+
}
|
|
29
|
+
get configFileModule() {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
31
|
+
return this._configFileModule;
|
|
32
|
+
}
|
|
33
|
+
checkForUpdates() {
|
|
34
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
35
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
37
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
39
|
+
updateNotifier({ pkg: packageJson }).notify();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async execute(process) {
|
|
43
|
+
// Check for updates
|
|
44
|
+
this.checkForUpdates();
|
|
45
|
+
const consoleProcess = this._console.parseProcessArgv(process.argv);
|
|
46
|
+
// Update options
|
|
47
|
+
if (consoleProcess.args.sitePath) {
|
|
48
|
+
this.options.sitePath = consoleProcess.args.sitePath;
|
|
49
|
+
}
|
|
50
|
+
// Load the Config File
|
|
51
|
+
await this.loadConfigFile(this.options.sitePath);
|
|
52
|
+
// Parse the config file
|
|
53
|
+
if (this._configFileModule.options) {
|
|
54
|
+
this.options.parseOptions(this._configFileModule.options);
|
|
55
|
+
}
|
|
56
|
+
// Run the onPrepare function
|
|
57
|
+
if (this._configFileModule.onPrepare) {
|
|
58
|
+
try {
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
60
|
+
await this._configFileModule.onPrepare(this.options);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this._console.error(error.message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (consoleProcess.args.output) {
|
|
67
|
+
this.options.outputPath = consoleProcess.args.output;
|
|
68
|
+
}
|
|
69
|
+
const engineConfig = {
|
|
70
|
+
nodes: {
|
|
71
|
+
fence: MarkdownHelper.fence(),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
switch (consoleProcess.command) {
|
|
75
|
+
case 'init': {
|
|
76
|
+
const isTypescript = fs.existsSync('./tsconfig.json') ?? false;
|
|
77
|
+
this.generateInit(this.options.sitePath);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case 'help': {
|
|
81
|
+
this._console.printHelp();
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case 'version': {
|
|
85
|
+
this._console.log(this.getVersion());
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case 'serve': {
|
|
89
|
+
const builder = new WritrBuilder(this.options, engineConfig);
|
|
90
|
+
await builder.build();
|
|
91
|
+
await this.serve(this.options);
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
default: {
|
|
95
|
+
const builder = new WritrBuilder(this.options, engineConfig);
|
|
96
|
+
await builder.build();
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
isSinglePageWebsite(sitePath) {
|
|
102
|
+
const docsPath = `${sitePath}/docs`;
|
|
103
|
+
if (!fs.existsSync(docsPath)) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
const files = fs.readdirSync(docsPath);
|
|
107
|
+
return files.length === 0;
|
|
108
|
+
}
|
|
109
|
+
generateInit(sitePath) {
|
|
110
|
+
// Check if the site path exists
|
|
111
|
+
if (!fs.existsSync(sitePath)) {
|
|
112
|
+
fs.mkdirSync(sitePath);
|
|
113
|
+
}
|
|
114
|
+
// Add the writr.config file based on js or ts
|
|
115
|
+
const writrConfigFile = './init/writr.config.cjs';
|
|
116
|
+
fs.copyFileSync(writrConfigFile, `${sitePath}/writr.config.cjs`);
|
|
117
|
+
// Add in the image and favicon
|
|
118
|
+
fs.copyFileSync('./init/logo.png', `${sitePath}/logo.png`);
|
|
119
|
+
fs.copyFileSync('./init/favicon.svg', `${sitePath}/favicon.svg`);
|
|
120
|
+
// Add in the variables file
|
|
121
|
+
fs.copyFileSync('./init/variables.css', `${sitePath}/variables.css`);
|
|
122
|
+
// Output the instructions
|
|
123
|
+
this._console.log(`Writr initialized. Please update the ${writrConfigFile} file with your site information. In addition, you can replace the image, favicon, and stype the site with site.css file.`);
|
|
124
|
+
}
|
|
125
|
+
getVersion() {
|
|
126
|
+
const packageJson = fs.readFileSync('./package.json', 'utf8');
|
|
127
|
+
const packageObject = JSON.parse(packageJson);
|
|
128
|
+
return packageObject.version;
|
|
129
|
+
}
|
|
130
|
+
async loadConfigFile(sitePath) {
|
|
131
|
+
if (fs.existsSync(sitePath)) {
|
|
132
|
+
const configFile = `${sitePath}/writr.config.cjs`;
|
|
133
|
+
if (fs.existsSync(configFile)) {
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
135
|
+
this._configFileModule = await import(configFile);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async serve(options) {
|
|
140
|
+
if (this._server) {
|
|
141
|
+
this._server.close();
|
|
142
|
+
}
|
|
143
|
+
const app = express();
|
|
144
|
+
const { port } = options;
|
|
145
|
+
const { outputPath } = options;
|
|
146
|
+
app.use(express.static(outputPath));
|
|
147
|
+
this._server = app.listen(port, () => {
|
|
148
|
+
this._console.log(`Writr listening at http://localhost:${port}`);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export { WritrHelpers } from './helpers.js';
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd3JpdHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUIsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxNQUFNLENBQUMsT0FBTyxPQUFPLEtBQUs7SUFDakIsUUFBUSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25DLFFBQVEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNyRCxpQkFBaUIsR0FBUSxFQUFFLENBQUM7SUFDNUIsT0FBTyxDQUEwQjtJQUV6QyxZQUFZLE9BQXNCO1FBQ2pDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN6QixDQUFDO0lBQ0YsQ0FBQztJQUVELElBQVcsT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQW1CO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUMxQiwrREFBK0Q7UUFDL0QsT0FBTyxJ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R0FBRyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxPQUFPLENBQUM7UUFDdkIsTUFBTSxFQUFDLFVBQVUsRUFBQyxHQUFHLE9BQU8sQ0FBQztRQUU3QixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRDtBQUVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBodHRwIGZyb20gJ25vZGU6aHR0cCc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdXBkYXRlTm90aWZpZXIgZnJvbSAndXBkYXRlLW5vdGlmaWVyJztcbmltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHtXcml0ck9wdGlvbnN9IGZyb20gJy4vb3B0aW9ucy5qcyc7XG5pbXBvcnQge1dyaXRyQ29uc29sZX0gZnJvbSAnLi9jb25zb2xlLmpzJztcbmltcG9ydCB7V3JpdHJCdWlsZGVyfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHtNYXJrZG93bkhlbHBlcn0gZnJvbSAnLi9oZWxwZXJzL21hcmtkb3duLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV3JpdHIge1xuXHRwcml2YXRlIF9vcHRpb25zOiBXcml0ck9wdGlvbnMgPSBuZXcgV3JpdHJPcHRpb25zKCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvbnNvbGU6IFdyaXRyQ29uc29sZSA9IG5ldyBXcml0ckNvbnNvbGUoKTtcblx0cHJpdmF0ZSBfY29uZmlnRmlsZU1vZHVsZTogYW55ID0ge307XG5cdHByaXZhdGUgX3NlcnZlcjogaHR0cC5TZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IFdyaXRyT3B0aW9ucykge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IG9wdGlvbnMoKTogV3JpdHJPcHRpb25zIHtcblx0XHRyZXR1cm4gdGhpcy5fb3B0aW9ucztcblx0fVxuXG5cdHB1YmxpYyBzZXQgb3B0aW9ucyh2YWx1ZTogV3JpdHJPcHRpb25zKSB7XG5cdFx0dGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuXHR9XG5cblx0cHVibGljIGdldCBzZXJ2ZXIoKTogaHR0cC5TZXJ2ZXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9zZXJ2ZXI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGNvbmZpZ0ZpbGVNb2R1bGUoKTogYW55IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cblx0XHRyZXR1cm4gdGhpcy5fY29uZmlnRmlsZU1vZHVsZTtcblx0fVxuXG5cdHB1YmxpYyBjaGVja0ZvclVwZGF0ZXMoKTogdm9pZCB7XG5cdFx0Y29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLmpzb24nKTtcblx0XHRpZiAoZnMuZXhpc3RzU3luYyhwYWNrYWdlSnNvblBhdGgpKSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKSk7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHR1cGRhdGVOb3RpZmllcih7cGtnOiBwYWNrYWdlSnNvbn0pLm5vdGlmeSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBleGVjdXRlKHByb2Nlc3M6IE5vZGVKUy5Qcm9jZXNzKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gQ2hlY2sgZm9yIHVwZGF0ZXNcblx0XHR0aGlzLmNoZWNrRm9yVXBkYXRlcygpO1xuXG5cdFx0Y29uc3QgY29uc29sZVByb2Nlc3MgPSB0aGlzLl9jb25zb2xlLnBhcnNlUHJvY2Vzc0FyZ3YocHJvY2Vzcy5hcmd2KTtcblxuXHRcdC8vIFVwZGF0ZSBvcHRpb25zXG5cdFx0aWYgKGNvbnNvbGVQcm9jZXNzLmFyZ3Muc2l0ZVBhdGgpIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zaXRlUGF0aCA9IGNvbnNvbGVQcm9jZXNzLmFyZ3Muc2l0ZVBhdGg7XG5cdFx0fVxuXG5cdFx0Ly8gTG9hZCB0aGUgQ29uZmlnIEZpbGVcblx0XHRhd2FpdCB0aGlzLmxvYWRDb25maWdGaWxlKHRoaXMub3B0aW9ucy5zaXRlUGF0aCk7XG5cblx0XHQvLyBQYXJzZSB0aGUgY29uZmlnIGZpbGVcblx0XHRpZiAodGhpcy5fY29uZmlnRmlsZU1vZHVsZS5vcHRpb25zKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMucGFyc2VPcHRpb25zKHRoaXMuX2NvbmZpZ0ZpbGVNb2R1bGUub3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcblx0XHR9XG5cblx0XHQvLyBSdW4gdGhlIG9uUHJlcGFyZSBmdW5jdGlvblxuXHRcdGlmICh0aGlzLl9jb25maWdGaWxlTW9kdWxlLm9uUHJlcGFyZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuXHRcdFx0XHRhd2FpdCB0aGlzLl9jb25maWdGaWxlTW9kdWxlLm9uUHJlcGFyZSh0aGlzLm9wdGlvbnMpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0dGhpcy5fY29uc29sZS5lcnJvcigoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChjb25zb2xlUHJvY2Vzcy5hcmdzLm91dHB1dCkge1xuXHRcdFx0dGhpcy5vcHRpb25zLm91dHB1dFBhdGggPSBjb25zb2xlUHJvY2Vzcy5hcmdzLm91dHB1dDtcblx0XHR9XG5cblx0XHRjb25zdCBlbmdpbmVDb25maWcgPSB7XG5cdFx0XHRub2Rlczoge1xuXHRcdFx0XHRmZW5jZTogTWFya2Rvd25IZWxwZXIuZmVuY2UoKSxcblx0XHRcdH0sXG5cdFx0fTtcblxuXHRcdHN3aXRjaCAoY29uc29sZVByb2Nlc3MuY29tbWFuZCkge1xuXHRcdFx0Y2FzZSAnaW5pdCc6IHtcblx0XHRcdFx0Y29uc3QgaXNUeXBlc2NyaXB0ID0gZnMuZXhpc3RzU3luYygnLi90c2NvbmZpZy5qc29uJykgPz8gZmFsc2U7XG5cdFx0XHRcdHRoaXMuZ2VuZXJhdGVJbml0KHRoaXMub3B0aW9ucy5zaXRlUGF0aCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRjYXNlICdoZWxwJzoge1xuXHRcdFx0XHR0aGlzLl9jb25zb2xlLnByaW50SGVscCgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y2FzZSAndmVyc2lvbic6IHtcblx0XHRcdFx0dGhpcy5fY29uc29sZS5sb2codGhpcy5nZXRWZXJzaW9uKCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y2FzZSAnc2VydmUnOiB7XG5cdFx0XHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgV3JpdHJCdWlsZGVyKHRoaXMub3B0aW9ucywgZW5naW5lQ29uZmlnKTtcblx0XHRcdFx0YXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnNlcnZlKHRoaXMub3B0aW9ucyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgV3JpdHJCdWlsZGVyKHRoaXMub3B0aW9ucywgZW5naW5lQ29uZmlnKTtcblx0XHRcdFx0YXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgaXNTaW5nbGVQYWdlV2Vic2l0ZShzaXRlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgZG9jc1BhdGggPSBgJHtzaXRlUGF0aH0vZG9jc2A7XG5cdFx0aWYgKCFmcy5leGlzdHNTeW5jKGRvY3NQYXRoKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyhkb2NzUGF0aCk7XG5cdFx0cmV0dXJuIGZpbGVzLmxlbmd0aCA9PT0gMDtcblx0fVxuXG5cdHB1YmxpYyBnZW5lcmF0ZUluaXQoc2l0ZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdC8vIENoZWNrIGlmIHRoZSBzaXRlIHBhdGggZXhpc3RzXG5cdFx0aWYgKCFmcy5leGlzdHNTeW5jKHNpdGVQYXRoKSkge1xuXHRcdFx0ZnMubWtkaXJTeW5jKHNpdGVQYXRoKTtcblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIHdyaXRyLmNvbmZpZyBmaWxlIGJhc2VkIG9uIGpzIG9yIHRzXG5cdFx0Y29uc3Qgd3JpdHJDb25maWdGaWxlID0gJy4vaW5pdC93cml0ci5jb25maWcuY2pzJztcblx0XHRmcy5jb3B5RmlsZVN5bmMod3JpdHJDb25maWdGaWxlLCBgJHtzaXRlUGF0aH0vd3JpdHIuY29uZmlnLmNqc2ApO1xuXG5cdFx0Ly8gQWRkIGluIHRoZSBpbWFnZSBhbmQgZmF2aWNvblxuXHRcdGZzLmNvcHlGaWxlU3luYygnLi9pbml0L2xvZ28ucG5nJywgYCR7c2l0ZVBhdGh9L2xvZ28ucG5nYCk7XG5cdFx0ZnMuY29weUZpbGVTeW5jKCcuL2luaXQvZmF2aWNvbi5zdmcnLCBgJHtzaXRlUGF0aH0vZmF2aWNvbi5zdmdgKTtcblxuXHRcdC8vIEFkZCBpbiB0aGUgdmFyaWFibGVzIGZpbGVcblx0XHRmcy5jb3B5RmlsZVN5bmMoJy4vaW5pdC92YXJpYWJsZXMuY3NzJywgYCR7c2l0ZVBhdGh9L3ZhcmlhYmxlcy5jc3NgKTtcblxuXHRcdC8vIE91dHB1dCB0aGUgaW5zdHJ1Y3Rpb25zXG5cdFx0dGhpcy5fY29uc29sZS5sb2coYFdyaXRyIGluaXRpYWxpemVkLiBQbGVhc2UgdXBkYXRlIHRoZSAke3dyaXRyQ29uZmlnRmlsZX0gZmlsZSB3aXRoIHlvdXIgc2l0ZSBpbmZvcm1hdGlvbi4gSW4gYWRkaXRpb24sIHlvdSBjYW4gcmVwbGFjZSB0aGUgaW1hZ2UsIGZhdmljb24sIGFuZCBzdHlwZSB0aGUgc2l0ZSB3aXRoIHNpdGUuY3NzIGZpbGUuYCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmVyc2lvbigpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHBhY2thZ2VKc29uID0gZnMucmVhZEZpbGVTeW5jKCcuL3BhY2thZ2UuanNvbicsICd1dGY4Jyk7XG5cdFx0Y29uc3QgcGFja2FnZU9iamVjdCA9IEpTT04ucGFyc2UocGFja2FnZUpzb24pIGFzIHt2ZXJzaW9uOiBzdHJpbmd9O1xuXHRcdHJldHVybiBwYWNrYWdlT2JqZWN0LnZlcnNpb247XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgbG9hZENvbmZpZ0ZpbGUoc2l0ZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmIChmcy5leGlzdHNTeW5jKHNpdGVQYXRoKSkge1xuXHRcdFx0Y29uc3QgY29uZmlnRmlsZSA9IGAke3NpdGVQYXRofS93cml0ci5jb25maWcuY2pzYDtcblx0XHRcdGlmIChmcy5leGlzdHNTeW5jKGNvbmZpZ0ZpbGUpKSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcblx0XHRcdFx0dGhpcy5fY29uZmlnRmlsZU1vZHVsZSA9IGF3YWl0IGltcG9ydChjb25maWdGaWxlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgc2VydmUob3B0aW9uczogV3JpdHJPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuX3NlcnZlcikge1xuXHRcdFx0dGhpcy5fc2VydmVyLmNsb3NlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwID0gZXhwcmVzcygpO1xuXHRcdGNvbnN0IHtwb3J0fSA9IG9wdGlvbnM7XG5cdFx0Y29uc3Qge291dHB1dFBhdGh9ID0gb3B0aW9ucztcblxuXHRcdGFwcC51c2UoZXhwcmVzcy5zdGF0aWMob3V0cHV0UGF0aCkpO1xuXG5cdFx0dGhpcy5fc2VydmVyID0gYXBwLmxpc3Rlbihwb3J0LCAoKSA9PiB7XG5cdFx0XHR0aGlzLl9jb25zb2xlLmxvZyhgV3JpdHIgbGlzdGVuaW5nIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWApO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCB7V3JpdHJIZWxwZXJzfSBmcm9tICcuL2hlbHBlcnMuanMnO1xuIl19
|
package/init/favicon.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15"><defs><style>.a{fill:#ff690a;}.b{fill:#373232;}</style></defs><title>WRITR favicon</title><path class="a" d="M1.5,12h12v1H1.5Z"/><path class="b" d="M11.6,11H9L7.49,6h0L6,11H3.38L0,2H3.08L4.8,7.25h.06L6.38,2H8.69l1.58,5.25h0L12.05,2H15Z"/></svg>
|
package/init/logo.png
ADDED
|
Binary file
|