writr 1.6.5 → 1.6.9

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 (49) hide show
  1. package/dist/cache.d.ts +18 -0
  2. package/dist/cache.js +76 -0
  3. package/dist/cache.js.map +1 -0
  4. package/dist/config.d.ts +26 -0
  5. package/dist/config.js +105 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/data/dataProviderInterface.d.ts +12 -0
  8. package/dist/data/dataProviderInterface.js +3 -0
  9. package/dist/data/dataProviderInterface.js.map +1 -0
  10. package/dist/data/dataService.d.ts +19 -0
  11. package/dist/data/dataService.js +139 -0
  12. package/dist/data/dataService.js.map +1 -0
  13. package/dist/data/fileDataProvider.d.ts +20 -0
  14. package/dist/data/fileDataProvider.js +134 -0
  15. package/dist/data/fileDataProvider.js.map +1 -0
  16. package/dist/index.d.ts +11 -0
  17. package/dist/index.js +69 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/post.d.ts +31 -0
  20. package/dist/post.js +195 -0
  21. package/dist/post.js.map +1 -0
  22. package/dist/render/atomRenderProvider.d.ts +8 -0
  23. package/dist/render/atomRenderProvider.js +55 -0
  24. package/dist/render/atomRenderProvider.js.map +1 -0
  25. package/dist/render/htmRenderlProvider.d.ts +14 -0
  26. package/dist/render/htmRenderlProvider.js +119 -0
  27. package/dist/render/htmRenderlProvider.js.map +1 -0
  28. package/dist/render/imageRenderProvider.d.ts +8 -0
  29. package/dist/render/imageRenderProvider.js +19 -0
  30. package/dist/render/imageRenderProvider.js.map +1 -0
  31. package/dist/render/jsonRenderProvider.d.ts +8 -0
  32. package/dist/render/jsonRenderProvider.js +30 -0
  33. package/dist/render/jsonRenderProvider.js.map +1 -0
  34. package/dist/render/renderProviderInterface.d.ts +5 -0
  35. package/dist/render/renderProviderInterface.js +3 -0
  36. package/dist/render/renderProviderInterface.js.map +1 -0
  37. package/dist/storage/fileStorageProvider.d.ts +11 -0
  38. package/dist/storage/fileStorageProvider.js +76 -0
  39. package/dist/storage/fileStorageProvider.js.map +1 -0
  40. package/dist/storage/storageProviderInterface.d.ts +7 -0
  41. package/dist/storage/storageProviderInterface.js +3 -0
  42. package/dist/storage/storageProviderInterface.js.map +1 -0
  43. package/dist/storage/storageService.d.ts +13 -0
  44. package/dist/storage/storageService.js +30 -0
  45. package/dist/storage/storageService.js.map +1 -0
  46. package/dist/tag.d.ts +9 -0
  47. package/dist/tag.js +39 -0
  48. package/dist/tag.js.map +1 -0
  49. package/package.json +18 -20
package/dist/index.js ADDED
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Writr = void 0;
4
+ const winston_1 = require("winston");
5
+ const dataService_1 = require("./data/dataService");
6
+ const config_1 = require("./config");
7
+ const htmRenderlProvider_1 = require("./render/htmRenderlProvider");
8
+ const del = require("del");
9
+ const fs = require("fs-extra");
10
+ const jsonRenderProvider_1 = require("./render/jsonRenderProvider");
11
+ const atomRenderProvider_1 = require("./render/atomRenderProvider");
12
+ const imageRenderProvider_1 = require("./render/imageRenderProvider");
13
+ const { createCommand } = require('commander');
14
+ class Writr {
15
+ constructor() {
16
+ this.log = (0, winston_1.createLogger)({ transports: [new winston_1.transports.Console()] });
17
+ }
18
+ parseCLI(process) {
19
+ const program = createCommand();
20
+ program.storeOptionsAsProperties(true);
21
+ program.option("-p, --path <path>", "Path of where the blog, config, and template are located");
22
+ program.option("-o, --output <path>", "Path of where to output the generated blog");
23
+ program.option("-r, --render <list>", "What do you want rendered such as html or json (example --render html,json)");
24
+ program.option("-c, --config <path>", "custom configuration path");
25
+ program.parse(process.argv);
26
+ this.config = new config_1.Config();
27
+ if (program.config) {
28
+ this.config.loadConfig(program.config);
29
+ }
30
+ if (program.path) {
31
+ this.config.loadPath(program.path);
32
+ }
33
+ this.config.loadProgram(program);
34
+ this.data = new dataService_1.DataService(this.config);
35
+ }
36
+ async runCLI() {
37
+ let result = true;
38
+ if (this.data !== undefined && this.config !== undefined) {
39
+ if (fs.existsSync(this.config.output)) {
40
+ del.sync(this.config.output);
41
+ }
42
+ let render = true;
43
+ for (let i = 0; i < this.config.render.length; i++) {
44
+ let type = this.config.render[i];
45
+ if (type === "html") {
46
+ render = await new htmRenderlProvider_1.HtmlRenderProvider().render(this.data, this.config);
47
+ }
48
+ if (type === "json") {
49
+ render = await new jsonRenderProvider_1.JSONRenderProvider().render(this.data, this.config);
50
+ }
51
+ if (type === "atom") {
52
+ render = await new atomRenderProvider_1.AtomRenderProvider().render(this.data, this.config);
53
+ }
54
+ if (type === "images") {
55
+ render = await new imageRenderProvider_1.ImageRenderProvider().render(this.data, this.config);
56
+ }
57
+ }
58
+ if (render) {
59
+ result = render;
60
+ }
61
+ }
62
+ else {
63
+ result = false;
64
+ }
65
+ return result;
66
+ }
67
+ }
68
+ exports.Writr = Writr;
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/post.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ export declare class Post {
2
+ keywords: Array<string>;
3
+ tags: Array<string>;
4
+ content: string;
5
+ private _matter;
6
+ permalink_default: string;
7
+ permalink_date: string;
8
+ permalink_ordinal: string;
9
+ constructor();
10
+ get id(): string;
11
+ get date(): Date;
12
+ get title(): string;
13
+ set title(val: string);
14
+ get author(): string;
15
+ set author(val: string);
16
+ get url(): string;
17
+ set url(val: string);
18
+ get matter(): any;
19
+ set matter(val: any);
20
+ getBody(): Promise<any>;
21
+ get published(): boolean;
22
+ set published(val: boolean);
23
+ getDescription(): Promise<any>;
24
+ getSummary(): Promise<any>;
25
+ addTag(name: string): void;
26
+ addTags(names: Array<string>): void;
27
+ generateUrl(): void;
28
+ parseUrl(url: string): string;
29
+ toObject(): Promise<any>;
30
+ static create(obj: any): Post;
31
+ }
package/dist/post.js ADDED
@@ -0,0 +1,195 @@
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
+ let newDate = luxon_1.DateTime.fromISO(this.matter.date).toJSDate();
23
+ return newDate;
24
+ }
25
+ else {
26
+ return this.matter.date;
27
+ }
28
+ }
29
+ get title() {
30
+ return this.matter.title;
31
+ }
32
+ set title(val) {
33
+ this.matter.title = val;
34
+ this.generateUrl();
35
+ }
36
+ get author() {
37
+ return this.matter.author;
38
+ }
39
+ set author(val) {
40
+ this.matter.author = val;
41
+ }
42
+ get url() {
43
+ if (!this.matter.url) {
44
+ this.generateUrl();
45
+ }
46
+ return this.matter.url;
47
+ }
48
+ set url(val) {
49
+ this.matter.url = val;
50
+ }
51
+ get matter() {
52
+ return this._matter;
53
+ }
54
+ set matter(val) {
55
+ this._matter = val;
56
+ }
57
+ async getBody() {
58
+ if (!this.matter.body) {
59
+ const ecto = new ecto_1.Ecto();
60
+ this.matter.body = await ecto.render(this.content, undefined, 'markdown');
61
+ }
62
+ return this.matter.body;
63
+ }
64
+ get published() {
65
+ if (this.matter.published === undefined) {
66
+ this.matter.published = true;
67
+ }
68
+ return this.matter.published;
69
+ }
70
+ set published(val) {
71
+ this.matter.published = val;
72
+ }
73
+ async getDescription() {
74
+ if (this.matter.description === undefined) {
75
+ this.matter.description = striptags(await this.getSummary());
76
+ }
77
+ return this.matter.description;
78
+ }
79
+ async getSummary() {
80
+ if (this.matter.description) {
81
+ this.matter.summary = this.matter.description;
82
+ }
83
+ if (!this.matter.summary) {
84
+ let body = await this.getBody();
85
+ let cheerio = require("cheerio");
86
+ let html = cheerio.load(body);
87
+ let summaryLength = 3;
88
+ this.matter.summary = "";
89
+ html("p").each((i, elem) => {
90
+ if (i < summaryLength) {
91
+ this.matter.summary = this.matter.summary + html.html(elem);
92
+ }
93
+ });
94
+ }
95
+ return this.matter.summary;
96
+ }
97
+ addTag(name) {
98
+ let exists = false;
99
+ if (name) {
100
+ this.tags.forEach((tag) => {
101
+ if (tag === name) {
102
+ exists = true;
103
+ }
104
+ });
105
+ if (!exists) {
106
+ this.tags.push(name);
107
+ }
108
+ }
109
+ }
110
+ addTags(names) {
111
+ names.forEach((name) => {
112
+ if (name) {
113
+ this.addTag(name);
114
+ }
115
+ });
116
+ }
117
+ generateUrl() {
118
+ if (!this.matter.url) {
119
+ //set default
120
+ let url = this.permalink_default;
121
+ //check slug first
122
+ if (this.matter.slug) {
123
+ url = this.matter.slug;
124
+ }
125
+ //check permalink second
126
+ if (this.matter.permalink) {
127
+ url = this.matter.permalink;
128
+ }
129
+ this.matter.url = this.parseUrl(url);
130
+ }
131
+ }
132
+ parseUrl(url) {
133
+ let date = luxon_1.DateTime.fromJSDate(this.date);
134
+ //title
135
+ let title = this._matter.title.toLowerCase().replace(/[^a-z0-9+]+/gi, " ").trim();
136
+ title = title.split(" ").join("-");
137
+ //do styles
138
+ if (url.toLowerCase().trim() === "default") {
139
+ url = this.permalink_default;
140
+ }
141
+ if (url.toLowerCase().trim() === "date") {
142
+ url = this.permalink_date;
143
+ }
144
+ if (url.toLowerCase().trim() === "ordinal") {
145
+ url = this.permalink_ordinal;
146
+ }
147
+ url = url.split(":year").join(date.toFormat("yyyy"));
148
+ url = url.split(":short_year").join(date.toFormat("yy"));
149
+ url = url.split(":month").join(date.toFormat("LL"));
150
+ url = url.split(":i_month").join(date.toFormat("L"));
151
+ url = url.split(":short_month").join(date.toFormat("LLL"));
152
+ url = url.split(":long_month").join(date.toFormat("LLLL"));
153
+ url = url.split(":day").join(date.toFormat("dd"));
154
+ url = url.split(":i_day").join(date.toFormat("d"));
155
+ url = url.split(":y_day").join(date.toFormat("o"));
156
+ url = url.split(":short_day").join(date.toFormat("ccc"));
157
+ url = url.split(":long_day").join(date.toFormat("cccc"));
158
+ url = url.split(":week").join(date.toFormat("W"));
159
+ url = url.split(":hour").join(date.toFormat("HH"));
160
+ url = url.split(":minute").join(date.toFormat("mm"));
161
+ url = url.split(":second").join(date.toFormat("ss"));
162
+ url = url.split(":title").join(title);
163
+ //url remove white spaces
164
+ url = url.split(" ").join("-");
165
+ //url remove `/`
166
+ if (url.startsWith("/")) {
167
+ url = url.substring(1);
168
+ }
169
+ return url;
170
+ }
171
+ async toObject() {
172
+ let result = {};
173
+ result.keywords = this.keywords;
174
+ result.tags = this.tags;
175
+ result.content = this.content;
176
+ result.id = this.id;
177
+ result.date = this.date;
178
+ result.title = this.title;
179
+ result.author = this.author;
180
+ result.url = this.url;
181
+ result.body = await this.getBody();
182
+ result.summary = await this.getSummary();
183
+ result.description = await this.getDescription();
184
+ result.metaData = this._matter;
185
+ result.matter = this._matter;
186
+ result.published = this.published;
187
+ return result;
188
+ }
189
+ static create(obj) {
190
+ let result = Object.assign(new Post(), obj);
191
+ return result;
192
+ }
193
+ }
194
+ exports.Post = Post;
195
+ //# 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 winston_1 = require("winston");
5
+ const feed_1 = require("feed");
6
+ const storageService_1 = require("../storage/storageService");
7
+ class AtomRenderProvider {
8
+ constructor() {
9
+ this.log = (0, winston_1.createLogger)({ transports: [new winston_1.transports.Console()] });
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(config).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":";;;AAAA,qCAAmD;AAInD,+BAA4B;AAC5B,8DAA2D;AAE3D,MAAa,kBAAkB;IAE3B;QACI,IAAI,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,CAAC,IAAI,oBAAU,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;IACvE,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,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEpF,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 winston_1 = require("winston");
5
+ const ecto_1 = require("ecto");
6
+ const fs = require("fs-extra");
7
+ const ecto = new ecto_1.Ecto({ defaultEngine: "handlebars" });
8
+ class HtmlRenderProvider {
9
+ constructor() {
10
+ this.log = (0, winston_1.createLogger)({ transports: [new winston_1.transports.Console()] });
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
+ posts.forEach(async (post, index) => {
26
+ if (index === 0) {
27
+ previousPost = posts[posts.length - 1];
28
+ }
29
+ else {
30
+ previousPost = posts[index - 1];
31
+ }
32
+ if (index === posts.length - 1) {
33
+ nextPost = posts[0];
34
+ }
35
+ else {
36
+ nextPost = posts[index + 1];
37
+ }
38
+ let postPath = output + "/" + post.id + "/index.html";
39
+ await this.renderPost(post, tags, config, previousPost, nextPost, postPath);
40
+ });
41
+ //unpublished posts
42
+ unpublishedPosts.forEach(async (post, index) => {
43
+ if (index === 0) {
44
+ previousPost = posts[posts.length - 1];
45
+ }
46
+ else {
47
+ previousPost = posts[index - 1];
48
+ }
49
+ if (index === posts.length - 1) {
50
+ nextPost = posts[0];
51
+ }
52
+ else {
53
+ nextPost = posts[index + 1];
54
+ }
55
+ if (post.published === false) {
56
+ let postPath = output + "/" + post.id + "/index.html";
57
+ await this.renderPost(post, unpublishedTags, config, previousPost, nextPost, postPath);
58
+ }
59
+ });
60
+ //tags
61
+ tags.forEach(async (tag) => {
62
+ let tagOutputPath = output + "/tags/" + tag.id + "/index.html";
63
+ await this.renderTag(tag, tags, config, tagOutputPath);
64
+ });
65
+ //home
66
+ await this.renderHome(data, config, output + "/index.html");
67
+ return result;
68
+ }
69
+ //render
70
+ async renderHome(data, config, outputPath) {
71
+ let result = "";
72
+ let postList = await data.getPublishedPostsByCount(config.indexCount);
73
+ let tagList = await data.getPublishedTags();
74
+ let dataObject = { tags: tagList, posts: postList };
75
+ let rootTemplatePath = config.path + "/templates/";
76
+ let templateName = await this.getTemplatePath(config.path + "/templates", "index");
77
+ let homeTemplatePath = rootTemplatePath + templateName;
78
+ result = await ecto.renderFromFile(homeTemplatePath, dataObject, rootTemplatePath, outputPath);
79
+ return result;
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 winston_1 = require("winston");
5
+ const storageService_1 = require("../storage/storageService");
6
+ class ImageRenderProvider {
7
+ constructor() {
8
+ this.log = (0, winston_1.createLogger)({ transports: [new winston_1.transports.Console()] });
9
+ }
10
+ async render(data, config) {
11
+ let result = true;
12
+ let output = config.output;
13
+ //images
14
+ await new storageService_1.StorageService(config).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":";;;AAAA,qCAAmD;AAInD,8DAA2D;AAE3D,MAAa,mBAAmB;IAG5B;QACI,IAAI,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,CAAC,IAAI,oBAAU,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;IACvE,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,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAG,MAAM,GAAG,SAAS,CAAC,CAAC;QAEpF,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,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONRenderProvider = void 0;
4
+ const winston_1 = require("winston");
5
+ const storageService_1 = require("../storage/storageService");
6
+ class JSONRenderProvider {
7
+ constructor() {
8
+ this.log = (0, winston_1.createLogger)({ transports: [new winston_1.transports.Console()] });
9
+ }
10
+ async render(data, config) {
11
+ let result = false;
12
+ let obj = {};
13
+ obj.posts = new Array();
14
+ obj.tags = new Array();
15
+ let posts = await data.getPosts();
16
+ let tags = await data.getTags();
17
+ for (let post of posts) {
18
+ let postObj = await post.toObject();
19
+ obj.posts.push(postObj);
20
+ }
21
+ for (let tag of tags) {
22
+ obj.tags.push(await tag.toObject());
23
+ }
24
+ await new storageService_1.StorageService(config).set(config.output + "/data.json", JSON.stringify(obj));
25
+ result = true;
26
+ return result;
27
+ }
28
+ }
29
+ exports.JSONRenderProvider = JSONRenderProvider;
30
+ //# sourceMappingURL=jsonRenderProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonRenderProvider.js","sourceRoot":"","sources":["../../src/render/jsonRenderProvider.ts"],"names":[],"mappings":";;;AAGA,qCAAmD;AAGnD,8DAA2D;AAE3D,MAAa,kBAAkB;IAG3B;QACI,IAAI,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,CAAC,IAAI,oBAAU,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAiB,EAAE,MAAc;QAC1C,IAAI,MAAM,GAAY,KAAK,CAAC;QAE5B,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,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAExF,MAAM,GAAG,IAAI,CAAC;QAEd,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhCD,gDAgCC"}
@@ -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,11 @@
1
+ import { StorageProviderInterface } from "../storage/storageProviderInterface";
2
+ export declare class FileStorageProvider implements StorageProviderInterface {
3
+ log: any;
4
+ constructor();
5
+ get(path: string): Promise<string | undefined>;
6
+ set(path?: string, data?: string): Promise<boolean>;
7
+ delete(path: string): Promise<boolean>;
8
+ copy(src: string, dest: string): Promise<boolean>;
9
+ exists(path: string): Promise<boolean>;
10
+ ensureFilePath(path: string): Promise<void>;
11
+ }