writr 1.6.5 → 1.6.6

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 +29 -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 +1 -1
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
+ posts.forEach(async (post) => {
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,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAEzB,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;QAC/B,CAAC,CAAC,CAAC;QAEH,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,29 @@
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
+ posts.forEach((post) => {
18
+ obj.posts.push(post.toObject());
19
+ });
20
+ tags.forEach((tag) => {
21
+ obj.tags.push(tag.toObject());
22
+ });
23
+ await new storageService_1.StorageService(config).set(config.output + "/data.json", JSON.stringify(obj));
24
+ result = true;
25
+ return result;
26
+ }
27
+ }
28
+ exports.JSONRenderProvider = JSONRenderProvider;
29
+ //# 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,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,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;AA/BD,gDA+BC"}
@@ -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
+ }