writr 1.8.0 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +18 -4
  2. package/bin/writr +1 -9
  3. package/dist/cache.d.ts +18 -0
  4. package/dist/cache.js +74 -0
  5. package/dist/cache.js.map +1 -0
  6. package/dist/config.d.ts +29 -0
  7. package/dist/config.js +109 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/data/dataProviderInterface.d.ts +12 -0
  10. package/dist/data/dataProviderInterface.js +3 -0
  11. package/dist/data/dataProviderInterface.js.map +1 -0
  12. package/dist/data/dataService.d.ts +19 -0
  13. package/dist/data/dataService.js +137 -0
  14. package/dist/data/dataService.js.map +1 -0
  15. package/dist/data/fileDataProvider.d.ts +20 -0
  16. package/dist/data/fileDataProvider.js +136 -0
  17. package/dist/data/fileDataProvider.js.map +1 -0
  18. package/dist/generator.d.ts +8 -0
  19. package/dist/generator.js +58 -0
  20. package/dist/generator.js.map +1 -0
  21. package/dist/index.d.ts +8 -0
  22. package/dist/index.js +84 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/log.d.ts +6 -0
  25. package/dist/log.js +17 -0
  26. package/dist/log.js.map +1 -0
  27. package/dist/migrate/ghostMigrationProvider.d.ts +9 -0
  28. package/dist/migrate/ghostMigrationProvider.js +67 -0
  29. package/dist/migrate/ghostMigrationProvider.js.map +1 -0
  30. package/dist/migrate/jekyllMigrationProvider.d.ts +4 -0
  31. package/dist/migrate/jekyllMigrationProvider.js +15 -0
  32. package/dist/migrate/jekyllMigrationProvider.js.map +1 -0
  33. package/dist/migrate/mediumMigrationProvider.d.ts +7 -0
  34. package/dist/migrate/mediumMigrationProvider.js +30 -0
  35. package/dist/migrate/mediumMigrationProvider.js.map +1 -0
  36. package/dist/migrate/migrationProviderInterface.d.ts +3 -0
  37. package/dist/migrate/migrationProviderInterface.js +3 -0
  38. package/dist/migrate/migrationProviderInterface.js.map +1 -0
  39. package/dist/migrate/wordpressMigrationProvider.d.ts +12 -0
  40. package/dist/migrate/wordpressMigrationProvider.js +105 -0
  41. package/dist/migrate/wordpressMigrationProvider.js.map +1 -0
  42. package/dist/migrate.d.ts +6 -0
  43. package/dist/migrate.js +38 -0
  44. package/dist/migrate.js.map +1 -0
  45. package/dist/post.d.ts +31 -0
  46. package/dist/post.js +193 -0
  47. package/dist/post.js.map +1 -0
  48. package/dist/render/atomRenderProvider.d.ts +8 -0
  49. package/dist/render/atomRenderProvider.js +55 -0
  50. package/dist/render/atomRenderProvider.js.map +1 -0
  51. package/dist/render/htmRenderlProvider.d.ts +14 -0
  52. package/dist/render/htmRenderlProvider.js +119 -0
  53. package/dist/render/htmRenderlProvider.js.map +1 -0
  54. package/dist/render/imageRenderProvider.d.ts +8 -0
  55. package/dist/render/imageRenderProvider.js +19 -0
  56. package/dist/render/imageRenderProvider.js.map +1 -0
  57. package/dist/render/jsonRenderProvider.d.ts +8 -0
  58. package/dist/render/jsonRenderProvider.js +28 -0
  59. package/dist/render/jsonRenderProvider.js.map +1 -0
  60. package/dist/render/renderProviderInterface.d.ts +5 -0
  61. package/dist/render/renderProviderInterface.js +3 -0
  62. package/dist/render/renderProviderInterface.js.map +1 -0
  63. package/dist/serve.d.ts +16 -0
  64. package/dist/serve.js +33 -0
  65. package/dist/serve.js.map +1 -0
  66. package/dist/storage/fileStorageProvider.d.ts +10 -0
  67. package/dist/storage/fileStorageProvider.js +66 -0
  68. package/dist/storage/fileStorageProvider.js.map +1 -0
  69. package/dist/storage/storageProviderInterface.d.ts +8 -0
  70. package/dist/storage/storageProviderInterface.js +3 -0
  71. package/dist/storage/storageProviderInterface.js.map +1 -0
  72. package/dist/storage/storageService.d.ts +12 -0
  73. package/dist/storage/storageService.js +32 -0
  74. package/dist/storage/storageService.js.map +1 -0
  75. package/dist/tag.d.ts +9 -0
  76. package/dist/tag.js +38 -0
  77. package/dist/tag.js.map +1 -0
  78. package/dist/utils/parser.d.ts +5 -0
  79. package/dist/utils/parser.js +41 -0
  80. package/dist/utils/parser.js.map +1 -0
  81. package/dist/utils/setup.d.ts +8 -0
  82. package/dist/utils/setup.js +79 -0
  83. package/dist/utils/setup.js.map +1 -0
  84. package/package.json +13 -12
package/dist/post.js ADDED
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Post = void 0;
4
+ const luxon_1 = require("luxon");
5
+ const striptags = require("striptags");
6
+ const ecto_1 = require("ecto");
7
+ class Post {
8
+ constructor() {
9
+ this.keywords = [];
10
+ this.tags = [];
11
+ this.content = "";
12
+ this._matter = {};
13
+ this.permalink_default = ":title";
14
+ this.permalink_date = ":year/:month/:day/:title";
15
+ this.permalink_ordinal = ":year/:y_day/:title";
16
+ }
17
+ get id() {
18
+ return this.url;
19
+ }
20
+ get date() {
21
+ if (Object.prototype.toString.call(this.matter.date) !== "[object Date]") {
22
+ return luxon_1.DateTime.fromISO(this.matter.date).toJSDate();
23
+ }
24
+ else {
25
+ return this.matter.date;
26
+ }
27
+ }
28
+ get title() {
29
+ return this.matter.title;
30
+ }
31
+ set title(val) {
32
+ this.matter.title = val;
33
+ this.generateUrl();
34
+ }
35
+ get author() {
36
+ return this.matter.author;
37
+ }
38
+ set author(val) {
39
+ this.matter.author = val;
40
+ }
41
+ get url() {
42
+ if (!this.matter.url) {
43
+ this.generateUrl();
44
+ }
45
+ return this.matter.url;
46
+ }
47
+ set url(val) {
48
+ this.matter.url = val;
49
+ }
50
+ get matter() {
51
+ return this._matter;
52
+ }
53
+ set matter(val) {
54
+ this._matter = val;
55
+ }
56
+ async getBody() {
57
+ if (!this.matter.body) {
58
+ const ecto = new ecto_1.Ecto();
59
+ this.matter.body = await ecto.render(this.content, undefined, 'markdown');
60
+ }
61
+ return this.matter.body;
62
+ }
63
+ get published() {
64
+ if (this.matter.published === undefined) {
65
+ this.matter.published = true;
66
+ }
67
+ return this.matter.published;
68
+ }
69
+ set published(val) {
70
+ this.matter.published = val;
71
+ }
72
+ async getDescription() {
73
+ if (this.matter.description === undefined) {
74
+ this.matter.description = striptags(await this.getSummary());
75
+ }
76
+ return this.matter.description;
77
+ }
78
+ async getSummary() {
79
+ if (this.matter.description) {
80
+ this.matter.summary = this.matter.description;
81
+ }
82
+ if (!this.matter.summary) {
83
+ let body = await this.getBody();
84
+ let cheerio = require("cheerio");
85
+ let html = cheerio.load(body);
86
+ let summaryLength = 3;
87
+ this.matter.summary = "";
88
+ html("p").each((i, elem) => {
89
+ if (i < summaryLength) {
90
+ this.matter.summary = this.matter.summary + html.html(elem);
91
+ }
92
+ });
93
+ }
94
+ return this.matter.summary;
95
+ }
96
+ addTag(name) {
97
+ let exists = false;
98
+ if (name) {
99
+ this.tags.forEach((tag) => {
100
+ if (tag === name) {
101
+ exists = true;
102
+ }
103
+ });
104
+ if (!exists) {
105
+ this.tags.push(name);
106
+ }
107
+ }
108
+ }
109
+ addTags(names) {
110
+ names.forEach((name) => {
111
+ if (name) {
112
+ this.addTag(name);
113
+ }
114
+ });
115
+ }
116
+ generateUrl() {
117
+ if (!this.matter.url) {
118
+ //set default
119
+ let url = this.permalink_default;
120
+ //check slug first
121
+ if (this.matter.slug) {
122
+ url = this.matter.slug;
123
+ }
124
+ //check permalink second
125
+ if (this.matter.permalink) {
126
+ url = this.matter.permalink;
127
+ }
128
+ this.matter.url = this.parseUrl(url);
129
+ }
130
+ }
131
+ parseUrl(url) {
132
+ let date = luxon_1.DateTime.fromJSDate(this.date);
133
+ //title
134
+ let title = this._matter.title.toLowerCase().replace(/[^a-z0-9+]+/gi, " ").trim();
135
+ title = title.split(" ").join("-");
136
+ //do styles
137
+ if (url.toLowerCase().trim() === "default") {
138
+ url = this.permalink_default;
139
+ }
140
+ if (url.toLowerCase().trim() === "date") {
141
+ url = this.permalink_date;
142
+ }
143
+ if (url.toLowerCase().trim() === "ordinal") {
144
+ url = this.permalink_ordinal;
145
+ }
146
+ url = url.split(":year").join(date.toFormat("yyyy"));
147
+ url = url.split(":short_year").join(date.toFormat("yy"));
148
+ url = url.split(":month").join(date.toFormat("LL"));
149
+ url = url.split(":i_month").join(date.toFormat("L"));
150
+ url = url.split(":short_month").join(date.toFormat("LLL"));
151
+ url = url.split(":long_month").join(date.toFormat("LLLL"));
152
+ url = url.split(":day").join(date.toFormat("dd"));
153
+ url = url.split(":i_day").join(date.toFormat("d"));
154
+ url = url.split(":y_day").join(date.toFormat("o"));
155
+ url = url.split(":short_day").join(date.toFormat("ccc"));
156
+ url = url.split(":long_day").join(date.toFormat("cccc"));
157
+ url = url.split(":week").join(date.toFormat("W"));
158
+ url = url.split(":hour").join(date.toFormat("HH"));
159
+ url = url.split(":minute").join(date.toFormat("mm"));
160
+ url = url.split(":second").join(date.toFormat("ss"));
161
+ url = url.split(":title").join(title);
162
+ //url remove white spaces
163
+ url = url.split(" ").join("-");
164
+ //url remove `/`
165
+ if (url.startsWith("/")) {
166
+ url = url.substring(1);
167
+ }
168
+ return url;
169
+ }
170
+ async toObject() {
171
+ let result = {};
172
+ result.keywords = this.keywords;
173
+ result.tags = this.tags;
174
+ result.content = this.content;
175
+ result.id = this.id;
176
+ result.date = this.date;
177
+ result.title = this.title;
178
+ result.author = this.author;
179
+ result.url = this.url;
180
+ result.body = await this.getBody();
181
+ result.summary = await this.getSummary();
182
+ result.description = await this.getDescription();
183
+ result.metaData = this._matter;
184
+ result.matter = this._matter;
185
+ result.published = this.published;
186
+ return result;
187
+ }
188
+ static create(obj) {
189
+ return Object.assign(new Post(), obj);
190
+ }
191
+ }
192
+ exports.Post = Post;
193
+ //# sourceMappingURL=post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../src/post.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { DataService } from "../data/dataService";
2
+ import { Config } from "../config";
3
+ import { RenderProviderInterface } from "./renderProviderInterface";
4
+ export declare class AtomRenderProvider implements RenderProviderInterface {
5
+ log: any;
6
+ constructor();
7
+ render(data: DataService, config: Config): Promise<boolean>;
8
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AtomRenderProvider = void 0;
4
+ const feed_1 = require("feed");
5
+ const storageService_1 = require("../storage/storageService");
6
+ const log_1 = require("../log");
7
+ class AtomRenderProvider {
8
+ constructor() {
9
+ this.log = new log_1.ConsoleMessage();
10
+ }
11
+ async render(data, config) {
12
+ let result = true;
13
+ let feedConfig = {};
14
+ if (config.title) {
15
+ feedConfig.title = config.title;
16
+ }
17
+ feedConfig.generator = "Writr";
18
+ if (config.url) {
19
+ feedConfig.id = config.url + "/atom.xml";
20
+ feedConfig.link = config.url + "/atom.xml";
21
+ feedConfig.favicon = config.url + "/favicon.ico";
22
+ feedConfig.feedLinks = {
23
+ atom: config.url + "/atom.xml"
24
+ };
25
+ }
26
+ feedConfig.author = {};
27
+ if (config.authorName) {
28
+ feedConfig.author.name = config.authorName;
29
+ }
30
+ if (config.authorEmail) {
31
+ feedConfig.author.email = config.authorEmail;
32
+ }
33
+ feedConfig.copyright = new Date().getFullYear().toString() + " All Rights Reserved";
34
+ let atomFeed = new feed_1.Feed(feedConfig);
35
+ //add in the posts
36
+ let posts = await data.getPostsByCount(config.indexCount);
37
+ for (let post of posts) {
38
+ let feedPost = {};
39
+ feedPost.title = post.title;
40
+ feedPost.id = config.url + "/" + post.url;
41
+ feedPost.link = config.url + "/" + post.url;
42
+ feedPost.description = await post.getDescription();
43
+ feedPost.content = await post.getBody();
44
+ feedPost.author = feedConfig.author;
45
+ feedPost.date = post.date;
46
+ feedPost.published = post.date;
47
+ atomFeed.addItem(feedPost);
48
+ }
49
+ //write the feed atom.xml
50
+ await new storageService_1.StorageService().set(config.output + "/atom.xml", atomFeed.atom1());
51
+ return result;
52
+ }
53
+ }
54
+ exports.AtomRenderProvider = AtomRenderProvider;
55
+ //# sourceMappingURL=atomRenderProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomRenderProvider.js","sourceRoot":"","sources":["../../src/render/atomRenderProvider.ts"],"names":[],"mappings":";;;AAGA,+BAA4B;AAC5B,8DAA2D;AAC3D,gCAAsC;AAEtC,MAAa,kBAAkB;IAE3B;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAc,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAiB,EAAE,MAAc;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,IAAI,UAAU,GAAQ,EAAE,CAAC;QAEzB,IAAG,MAAM,CAAC,KAAK,EAAE;YACb,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;SACnC;QAED,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;QAE/B,IAAG,MAAM,CAAC,GAAG,EAAE;YACX,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;YACzC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;YAC3C,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;YAEjD,UAAU,CAAC,SAAS,GAAG;gBACnB,IAAI,EAAE,MAAM,CAAC,GAAG,GAAG,WAAW;aACjC,CAAA;SACJ;QAED,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;QAEvB,IAAG,MAAM,CAAC,UAAU,EAAE;YAClB,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;SAC9C;QAED,IAAG,MAAM,CAAC,WAAW,EAAE;YACnB,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;SAChD;QAED,UAAU,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,sBAAsB,CAAC;QAEpF,IAAI,QAAQ,GAAG,IAAI,WAAI,CAAC,UAAU,CAAC,CAAC;QAEpC,kBAAkB;QAClB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1D,KAAI,IAAI,IAAI,IAAI,KAAK,EAAE;YAEnB,IAAI,QAAQ,GAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC1C,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YAC5C,QAAQ,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YACnD,QAAQ,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACpC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YAE/B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC9B;QAED,yBAAyB;QACzB,MAAM,IAAI,+BAAc,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9E,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhED,gDAgEC"}
@@ -0,0 +1,14 @@
1
+ import { DataService } from "../data/dataService";
2
+ import { Config } from "../config";
3
+ import { Post } from "../post";
4
+ import { Tag } from "../tag";
5
+ import { RenderProviderInterface } from "./renderProviderInterface";
6
+ export declare class HtmlRenderProvider implements RenderProviderInterface {
7
+ log: any;
8
+ constructor();
9
+ render(data: DataService, config: Config): Promise<boolean | undefined>;
10
+ renderHome(data: DataService, config: Config, outputPath?: string): Promise<string>;
11
+ renderTag(tag: Tag, tags: Array<Tag>, config: Config, outputPath?: string): Promise<string>;
12
+ renderPost(post: Post, tags: Array<Tag>, config: Config, previousPost?: Post, nextPost?: Post, outputPath?: string): Promise<string>;
13
+ getTemplatePath(templatesPath: string, templateName: string): Promise<string>;
14
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HtmlRenderProvider = void 0;
4
+ const fs = require("fs-extra");
5
+ const ecto_1 = require("ecto");
6
+ const log_1 = require("../log");
7
+ const ecto = new ecto_1.Ecto({ defaultEngine: "handlebars" });
8
+ class HtmlRenderProvider {
9
+ constructor() {
10
+ this.log = new log_1.ConsoleMessage();
11
+ ecto.handlebars.opts = { allowProtoPropertiesByDefault: true };
12
+ ecto.handlebars.engine.registerHelper('formatDate', require('helper-date'));
13
+ }
14
+ async render(data, config) {
15
+ let result = true;
16
+ let output = config.output;
17
+ let posts = await data.getPublishedPosts();
18
+ let unpublishedPosts = await data.getPosts();
19
+ let tags = await data.getPublishedTags();
20
+ let unpublishedTags = await data.getTags();
21
+ //posts
22
+ let previousPost;
23
+ let nextPost;
24
+ //published posts
25
+ for (const post of posts) {
26
+ const index = posts.indexOf(post);
27
+ if (index === 0) {
28
+ previousPost = posts[posts.length - 1];
29
+ }
30
+ else {
31
+ previousPost = posts[index - 1];
32
+ }
33
+ if (index === posts.length - 1) {
34
+ nextPost = posts[0];
35
+ }
36
+ else {
37
+ nextPost = posts[index + 1];
38
+ }
39
+ let postPath = output + "/" + post.id + "/index.html";
40
+ await this.renderPost(post, tags, config, previousPost, nextPost, postPath);
41
+ }
42
+ //unpublished posts
43
+ for (const post of unpublishedPosts) {
44
+ const index = unpublishedPosts.indexOf(post);
45
+ if (index === 0) {
46
+ previousPost = posts[posts.length - 1];
47
+ }
48
+ else {
49
+ previousPost = posts[index - 1];
50
+ }
51
+ if (index === posts.length - 1) {
52
+ nextPost = posts[0];
53
+ }
54
+ else {
55
+ nextPost = posts[index + 1];
56
+ }
57
+ if (post.published === false) {
58
+ let postPath = output + "/" + post.id + "/index.html";
59
+ await this.renderPost(post, unpublishedTags, config, previousPost, nextPost, postPath);
60
+ }
61
+ }
62
+ //tags
63
+ for (const tag of tags) {
64
+ let tagOutputPath = output + "/tags/" + tag.id + "/index.html";
65
+ await this.renderTag(tag, tags, config, tagOutputPath);
66
+ }
67
+ //home
68
+ await this.renderHome(data, config, output + "/index.html");
69
+ return result;
70
+ }
71
+ //render
72
+ async renderHome(data, config, outputPath) {
73
+ let postList = await data.getPublishedPostsByCount(config.indexCount);
74
+ let tagList = await data.getPublishedTags();
75
+ let dataObject = { tags: tagList, posts: postList };
76
+ let rootTemplatePath = config.path + "/templates/";
77
+ let templateName = await this.getTemplatePath(config.path + "/templates", "index");
78
+ let homeTemplatePath = rootTemplatePath + templateName;
79
+ return await ecto.renderFromFile(homeTemplatePath, dataObject, rootTemplatePath, outputPath);
80
+ }
81
+ async renderTag(tag, tags, config, outputPath) {
82
+ let result = "";
83
+ if (tag) {
84
+ let dataObject = { tag: tag, tags: tags };
85
+ let rootTemplatePath = config.path + "/templates/";
86
+ let templateName = await this.getTemplatePath(config.path + "/templates", "tag");
87
+ let templatePath = rootTemplatePath + templateName;
88
+ result = await ecto.renderFromFile(templatePath, dataObject, rootTemplatePath, outputPath);
89
+ }
90
+ return result;
91
+ }
92
+ async renderPost(post, tags, config, previousPost, nextPost, outputPath) {
93
+ let result = "";
94
+ if (post) {
95
+ let dataObject = { post: await post.toObject(), previousPost: previousPost, nextPost: nextPost, tags: tags };
96
+ let rootTemplatePath = config.path + "/templates/";
97
+ let templateID = "post";
98
+ if (post.matter.layout) {
99
+ templateID = post.matter.layout;
100
+ }
101
+ let templateName = await this.getTemplatePath(config.path + "/templates", templateID);
102
+ let templatePath = rootTemplatePath + templateName;
103
+ result = await ecto.renderFromFile(templatePath, dataObject, rootTemplatePath, outputPath);
104
+ }
105
+ return result;
106
+ }
107
+ async getTemplatePath(templatesPath, templateName) {
108
+ let result = "";
109
+ let templates = await fs.readdir(templatesPath);
110
+ templates.forEach((file) => {
111
+ if (file.split(".")[0].toLowerCase() === templateName.toLowerCase()) {
112
+ result = file;
113
+ }
114
+ });
115
+ return result;
116
+ }
117
+ }
118
+ exports.HtmlRenderProvider = HtmlRenderProvider;
119
+ //# sourceMappingURL=htmRenderlProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htmRenderlProvider.js","sourceRoot":"","sources":["../../src/render/htmRenderlProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { DataService } from "../data/dataService";
2
+ import { Config } from "../config";
3
+ import { RenderProviderInterface } from "./renderProviderInterface";
4
+ export declare class ImageRenderProvider implements RenderProviderInterface {
5
+ log: any;
6
+ constructor();
7
+ render(data: DataService, config: Config): Promise<boolean | undefined>;
8
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageRenderProvider = void 0;
4
+ const storageService_1 = require("../storage/storageService");
5
+ const log_1 = require("../log");
6
+ class ImageRenderProvider {
7
+ constructor() {
8
+ this.log = new log_1.ConsoleMessage();
9
+ }
10
+ async render(data, config) {
11
+ let result = true;
12
+ let output = config.output;
13
+ //images
14
+ await new storageService_1.StorageService().copy(config.path + "/images", output + "/images");
15
+ return result;
16
+ }
17
+ }
18
+ exports.ImageRenderProvider = ImageRenderProvider;
19
+ //# sourceMappingURL=imageRenderProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageRenderProvider.js","sourceRoot":"","sources":["../../src/render/imageRenderProvider.ts"],"names":[],"mappings":";;;AAGA,8DAA2D;AAC3D,gCAAsC;AAEtC,MAAa,mBAAmB;IAG5B;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAc,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAiB,EAAE,MAAc;QAC1C,IAAI,MAAM,GAAa,IAAI,CAAC;QAE5B,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE3B,QAAQ;QACR,MAAM,IAAI,+BAAc,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAG,MAAM,GAAG,SAAS,CAAC,CAAC;QAE9E,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAjBD,kDAiBC"}
@@ -0,0 +1,8 @@
1
+ import { RenderProviderInterface } from "./renderProviderInterface";
2
+ import { DataService } from "../data/dataService";
3
+ import { Config } from "../config";
4
+ export declare class JSONRenderProvider implements RenderProviderInterface {
5
+ log: any;
6
+ constructor();
7
+ render(data: DataService, config: Config): Promise<boolean | undefined>;
8
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONRenderProvider = void 0;
4
+ const storageService_1 = require("../storage/storageService");
5
+ const log_1 = require("../log");
6
+ class JSONRenderProvider {
7
+ constructor() {
8
+ this.log = new log_1.ConsoleMessage();
9
+ }
10
+ async render(data, config) {
11
+ let obj = {};
12
+ obj.posts = new Array();
13
+ obj.tags = new Array();
14
+ let posts = await data.getPosts();
15
+ let tags = await data.getTags();
16
+ for (let post of posts) {
17
+ let postObj = await post.toObject();
18
+ obj.posts.push(postObj);
19
+ }
20
+ for (let tag of tags) {
21
+ obj.tags.push(await tag.toObject());
22
+ }
23
+ await new storageService_1.StorageService().set(config.output + "/data.json", JSON.stringify(obj));
24
+ return true;
25
+ }
26
+ }
27
+ exports.JSONRenderProvider = JSONRenderProvider;
28
+ //# sourceMappingURL=jsonRenderProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonRenderProvider.js","sourceRoot":"","sources":["../../src/render/jsonRenderProvider.ts"],"names":[],"mappings":";;;AAKA,8DAA2D;AAC3D,gCAAsC;AAEtC,MAAa,kBAAkB;IAG3B;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAc,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAiB,EAAE,MAAc;QAC1C,IAAI,GAAG,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,EAAQ,CAAC;QAC9B,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK,EAAO,CAAC;QAE5B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAEhC,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;YACpB,IAAI,OAAO,GAAQ,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC3B;QAED,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvC;QAED,MAAM,IAAI,+BAAc,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA5BD,gDA4BC"}
@@ -0,0 +1,5 @@
1
+ import { DataService } from "../data/dataService";
2
+ import { Config } from "../config";
3
+ export interface RenderProviderInterface {
4
+ render(data: DataService, config: Config): Promise<Boolean | undefined>;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=renderProviderInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderProviderInterface.js","sourceRoot":"","sources":["../../src/render/renderProviderInterface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { SiteGenerator } from "./generator";
2
+ declare type Params = {
3
+ output: string;
4
+ port: string;
5
+ watch: boolean;
6
+ path: string;
7
+ };
8
+ export declare class Serve {
9
+ bs: any;
10
+ params: Params;
11
+ generator: SiteGenerator;
12
+ constructor(options: any);
13
+ buildAndReload(): Promise<void>;
14
+ run(): void;
15
+ }
16
+ export {};
package/dist/serve.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Serve = void 0;
4
+ const browserSync = require("browser-sync");
5
+ const generator_1 = require("./generator");
6
+ class Serve {
7
+ constructor(options) {
8
+ this.bs = browserSync.create();
9
+ this.params = options.opts();
10
+ this.generator = new generator_1.SiteGenerator(options);
11
+ }
12
+ async buildAndReload() {
13
+ await this.generator.run();
14
+ this.bs.reload();
15
+ }
16
+ run() {
17
+ const { output, port, watch, path } = this.params;
18
+ const baseDir = `${process.cwd()}/${output}`;
19
+ if (watch) {
20
+ this.bs.watch(`${process.cwd()}/${path}/*.md`, async () => await this.buildAndReload());
21
+ }
22
+ this.bs.init({
23
+ server: {
24
+ baseDir,
25
+ },
26
+ ui: false,
27
+ logPrefix: "Writr",
28
+ port: parseInt(port),
29
+ });
30
+ }
31
+ }
32
+ exports.Serve = Serve;
33
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,2CAA0C;AAS1C,MAAa,KAAK;IAMjB,YAAY,OAAY;QACvB,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,yBAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,GAAG;QACF,MAAM,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;QAE7C,IAAG,KAAK,EAAE;YACT,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACxF;QAED,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE;gBACP,OAAO;aACP;YACD,EAAE,EAAE,KAAK;YACT,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;SACpB,CAAC,CAAC;IACJ,CAAC;CAED;AAnCD,sBAmCC"}
@@ -0,0 +1,10 @@
1
+ import { StorageProviderInterface } from "./storageProviderInterface";
2
+ export declare class FileStorageProvider implements StorageProviderInterface {
3
+ get(path: string): Promise<string | undefined>;
4
+ set(path?: string, data?: string): Promise<boolean>;
5
+ delete(path: string): Promise<boolean>;
6
+ copy(src: string, dest: string): Promise<boolean>;
7
+ exists(path: string): Promise<boolean>;
8
+ ensureFilePath(path: string): Promise<void>;
9
+ readDir(path: string): string[];
10
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileStorageProvider = void 0;
4
+ const fs = require("fs-extra");
5
+ const log_1 = require("../log");
6
+ class FileStorageProvider {
7
+ async get(path) {
8
+ let result;
9
+ try {
10
+ let buffer = await fs.readFile(path);
11
+ result = buffer.toString();
12
+ }
13
+ catch (error) {
14
+ new log_1.ConsoleMessage().error(error.message);
15
+ }
16
+ return result;
17
+ }
18
+ async set(path, data) {
19
+ if (!path || !data)
20
+ return false;
21
+ await this.ensureFilePath(path);
22
+ await fs.writeFile(path, data);
23
+ return true;
24
+ }
25
+ async delete(path) {
26
+ let result = false;
27
+ try {
28
+ await fs.remove(path);
29
+ result = true;
30
+ }
31
+ catch (error) {
32
+ new log_1.ConsoleMessage().error(error.message);
33
+ }
34
+ return result;
35
+ }
36
+ async copy(src, dest) {
37
+ let result = false;
38
+ try {
39
+ await fs.ensureDir(dest);
40
+ await fs.copy(src, dest);
41
+ result = true;
42
+ }
43
+ catch (error) {
44
+ new log_1.ConsoleMessage().error(error.message);
45
+ }
46
+ return result;
47
+ }
48
+ exists(path) {
49
+ return new Promise((resolve) => {
50
+ fs.exists(path, exist => {
51
+ resolve(exist);
52
+ });
53
+ });
54
+ }
55
+ async ensureFilePath(path) {
56
+ let pathList = path.split("/");
57
+ pathList.pop();
58
+ let dir = pathList.join("/");
59
+ await fs.ensureDir(dir);
60
+ }
61
+ readDir(path) {
62
+ return fs.readdirSync(path);
63
+ }
64
+ }
65
+ exports.FileStorageProvider = FileStorageProvider;
66
+ //# sourceMappingURL=fileStorageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileStorageProvider.js","sourceRoot":"","sources":["../../src/storage/fileStorageProvider.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAE/B,gCAAwC;AAExC,MAAa,mBAAmB;IAE5B,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,IAAI,MAA0B,CAAC;QAE/B,IAAI;YACA,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;SAC9B;QAAC,OAAO,KAAU,EAAE;YACjB,IAAI,oBAAc,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC7C;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAa,EAAE,IAAa;QAClC,IAAG,CAAC,IAAI,IAAI,CAAC,IAAI;YAAG,OAAO,KAAK,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAI;YACA,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC;SACjB;QAAC,OAAM,KAAU,EAAE;YAChB,IAAI,oBAAc,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC7C;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAU,EAAE,IAAW;QAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAI;YACA,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC;SACjB;QAAC,OAAO,KAAU,EAAE;YACjB,IAAI,oBAAc,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC7C;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAY;QACf,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;gBACpB,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAW;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEf,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7B,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;CACJ;AArED,kDAqEC"}