writr 1.9.7 → 1.9.12

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/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/dist/cache.d.ts +18 -0
  4. package/dist/cache.js +70 -0
  5. package/dist/cache.js.map +1 -0
  6. package/dist/config.d.ts +29 -0
  7. package/dist/config.js +104 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/data/dataProviderInterface.d.ts +12 -0
  10. package/dist/data/dataProviderInterface.js +2 -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 +130 -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 +132 -0
  17. package/dist/data/fileDataProvider.js.map +1 -0
  18. package/dist/generator.d.ts +8 -0
  19. package/dist/generator.js +54 -0
  20. package/dist/generator.js.map +1 -0
  21. package/dist/index.d.ts +8 -0
  22. package/dist/index.js +80 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/log.d.ts +6 -0
  25. package/dist/log.js +13 -0
  26. package/dist/log.js.map +1 -0
  27. package/dist/migrate/ghostMigrationProvider.d.ts +9 -0
  28. package/dist/migrate/ghostMigrationProvider.js +65 -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 +11 -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 +26 -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 +2 -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 +103 -0
  41. package/dist/migrate/wordpressMigrationProvider.js.map +1 -0
  42. package/dist/migrate.d.ts +6 -0
  43. package/dist/migrate.js +34 -0
  44. package/dist/migrate.js.map +1 -0
  45. package/dist/post.d.ts +31 -0
  46. package/dist/post.js +189 -0
  47. package/dist/post.js.map +1 -0
  48. package/dist/render/atomRenderProvider.d.ts +8 -0
  49. package/dist/render/atomRenderProvider.js +51 -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 +117 -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 +15 -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 +24 -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 +2 -0
  62. package/dist/render/renderProviderInterface.js.map +1 -0
  63. package/dist/serve.d.ts +16 -0
  64. package/dist/serve.js +29 -0
  65. package/dist/serve.js.map +1 -0
  66. package/dist/storage/fileStorageProvider.d.ts +10 -0
  67. package/dist/storage/fileStorageProvider.js +62 -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 +2 -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 +28 -0
  74. package/dist/storage/storageService.js.map +1 -0
  75. package/dist/tag.d.ts +9 -0
  76. package/dist/tag.js +34 -0
  77. package/dist/tag.js.map +1 -0
  78. package/dist/utils/parser.d.ts +5 -0
  79. package/dist/utils/parser.js +37 -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 +75 -0
  83. package/dist/utils/setup.js.map +1 -0
  84. package/package.json +18 -18
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Jared Wray
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ![Writr](../../logo.png)
1
+ ![Writr](logo.png)
2
2
 
3
3
  ---
4
4
 
@@ -0,0 +1,18 @@
1
+ import { Config } from "./config.js";
2
+ import { Post } from "./post.js";
3
+ import { Tag } from "./tag.js";
4
+ import Keyv from "keyv";
5
+ export declare class Cache {
6
+ cache: Keyv;
7
+ constructor(config: Config);
8
+ getPost(key: string): Promise<Post | undefined>;
9
+ setPost(key: string, post: Post): Promise<boolean | undefined>;
10
+ getPosts(key: string): Promise<Array<Post> | undefined>;
11
+ setPosts(key: string, posts: Array<Post>): Promise<boolean | undefined>;
12
+ getTag(key: string): Promise<Tag | undefined>;
13
+ setTag(key: string, tag: Tag): Promise<boolean | undefined>;
14
+ getTags(key: string): Promise<Array<Tag> | undefined>;
15
+ setTags(key: string, tags: Array<Tag>): Promise<boolean | undefined>;
16
+ clear(): Promise<void>;
17
+ formatName(name: string, type: string): string;
18
+ }
package/dist/cache.js ADDED
@@ -0,0 +1,70 @@
1
+ import { Post } from "./post.js";
2
+ import { Tag } from "./tag.js";
3
+ import Keyv from "keyv";
4
+ export class Cache {
5
+ constructor(config) {
6
+ this.cache = new Keyv({ ttl: config.cache.ttl, namespace: "data-cache" });
7
+ }
8
+ //cache
9
+ async getPost(key) {
10
+ key = this.formatName(key, "post");
11
+ let result = await this.cache.get(key);
12
+ if (result) {
13
+ result = Post.create(result);
14
+ }
15
+ return result;
16
+ }
17
+ async setPost(key, post) {
18
+ return await this.cache.set(this.formatName(key, "post"), post);
19
+ }
20
+ async getPosts(key) {
21
+ key = this.formatName(key, "post");
22
+ let result = await this.cache.get(key);
23
+ if (result) {
24
+ let posts = new Array();
25
+ for (let i = 0; i < result.length; i++) {
26
+ posts.push(Post.create(result[i]));
27
+ }
28
+ result = posts;
29
+ }
30
+ return result;
31
+ }
32
+ async setPosts(key, posts) {
33
+ return await this.cache.set(this.formatName(key, "post"), posts);
34
+ }
35
+ async getTag(key) {
36
+ key = this.formatName(key, "tag");
37
+ let result = await this.cache.get(key);
38
+ if (result) {
39
+ result = Tag.create(result);
40
+ }
41
+ return result;
42
+ }
43
+ async setTag(key, tag) {
44
+ return await this.cache.set(this.formatName(key, "tag"), tag);
45
+ }
46
+ async getTags(key) {
47
+ key = this.formatName(key, "tag");
48
+ let result = await this.cache.get(key);
49
+ if (result) {
50
+ let tags = new Array();
51
+ for (let i = 0; i < result.length; i++) {
52
+ tags.push(Tag.create(result[i]));
53
+ }
54
+ result = tags;
55
+ }
56
+ return result;
57
+ }
58
+ async setTags(key, tags) {
59
+ return await this.cache.set(this.formatName(key, "tag"), tags);
60
+ }
61
+ async clear() {
62
+ await this.cache.clear();
63
+ }
64
+ formatName(name, type) {
65
+ let result = type.trim() + "-" + name.trim();
66
+ result = result.toLowerCase();
67
+ return result;
68
+ }
69
+ }
70
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ConsoleMessage } from "./log.js";
2
+ export declare class Config {
3
+ cache: ConfigCache;
4
+ log: ConsoleMessage;
5
+ program: any;
6
+ provider: any;
7
+ render: Array<string>;
8
+ output: string;
9
+ path: string;
10
+ title: string;
11
+ url: string;
12
+ authorName: string;
13
+ authorEmail: string;
14
+ indexCount: number;
15
+ permalink: string;
16
+ params: Record<string, string>;
17
+ constructor(config?: any);
18
+ loadPath(path: string): boolean;
19
+ loadConfig(filePath: string): boolean;
20
+ loadProgram(program: any): void;
21
+ loadParams(params: Record<string, any>): void;
22
+ parse(obj: any): void;
23
+ }
24
+ export declare class ConfigCache {
25
+ constructor();
26
+ connection: string;
27
+ ttl: number;
28
+ type: string;
29
+ }
package/dist/config.js ADDED
@@ -0,0 +1,104 @@
1
+ import fs from "fs-extra";
2
+ import { ConsoleMessage } from "./log.js";
3
+ export class Config {
4
+ constructor(config = undefined) {
5
+ this.cache = new ConfigCache();
6
+ this.log = new ConsoleMessage();
7
+ this.program = {};
8
+ this.provider = {};
9
+ this.render = ["html", "json", "atom"];
10
+ this.output = "./blog_output";
11
+ this.path = "./blog";
12
+ this.title = "";
13
+ this.url = "";
14
+ this.authorName = "";
15
+ this.authorEmail = "";
16
+ this.indexCount = 20;
17
+ this.permalink = "simple";
18
+ this.params = {};
19
+ //set default for fileProvider
20
+ this.provider.name = "file";
21
+ if (config) {
22
+ this.parse(config);
23
+ }
24
+ }
25
+ loadPath(path) {
26
+ this.path = path;
27
+ return this.loadConfig(this.path + "/config.json");
28
+ }
29
+ loadConfig(filePath) {
30
+ let result = false;
31
+ if (fs.existsSync(filePath)) {
32
+ let buff = fs.readFileSync(filePath);
33
+ let obj = JSON.parse(buff.toString());
34
+ this.parse(obj);
35
+ result = true;
36
+ }
37
+ else {
38
+ this.log.info("the config file does not exist: " + filePath);
39
+ }
40
+ return result;
41
+ }
42
+ loadProgram(program) {
43
+ this.program = program;
44
+ this.parse(this.program);
45
+ }
46
+ loadParams(params) {
47
+ this.params = params;
48
+ }
49
+ parse(obj) {
50
+ if (obj) {
51
+ if (obj.render) {
52
+ if (typeof obj.render === "string") {
53
+ this.render = obj.render.split(",");
54
+ }
55
+ else {
56
+ this.render = obj.render;
57
+ }
58
+ }
59
+ if (obj.permalink) {
60
+ this.permalink = obj.permalink;
61
+ }
62
+ if (obj.output) {
63
+ this.output = obj.output;
64
+ }
65
+ if (obj.path) {
66
+ this.path = obj.path;
67
+ }
68
+ if (obj.title) {
69
+ this.title = obj.title;
70
+ }
71
+ if (obj.url) {
72
+ this.url = obj.url;
73
+ }
74
+ if (obj.authorName) {
75
+ this.authorName = obj.authorName;
76
+ }
77
+ if (obj.authorEmail) {
78
+ this.authorEmail = obj.authorEmail;
79
+ }
80
+ if (obj.indexCount) {
81
+ this.indexCount = obj.indexCount;
82
+ }
83
+ if (obj.cache) {
84
+ if (obj.cache.connection) {
85
+ this.cache.connection = obj.cache.connection;
86
+ }
87
+ if (obj.cache.ttl) {
88
+ this.cache.ttl = obj.cache.ttl;
89
+ }
90
+ if (obj.cache.type) {
91
+ this.cache.type = obj.cache.type;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ export class ConfigCache {
98
+ constructor() {
99
+ this.connection = "";
100
+ this.ttl = 6000;
101
+ this.type = "memory";
102
+ }
103
+ }
104
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Config } from "../config.js";
2
+ import { Post } from "../post.js";
3
+ import { Tag } from "../tag.js";
4
+ export interface DataProviderInterface {
5
+ getPost(id: string): Promise<Post | undefined>;
6
+ getPosts(): Promise<Array<Post>>;
7
+ getPublishedPosts(): Promise<Array<Post>>;
8
+ getTag(name: string): Promise<Tag | undefined>;
9
+ getTags(): Promise<Array<Tag>>;
10
+ getPublishedTags(): Promise<Array<Tag>>;
11
+ init(config: Config): void;
12
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dataProviderInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataProviderInterface.js","sourceRoot":"","sources":["../../src/data/dataProviderInterface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { Config } from "../config.js";
2
+ import { Post } from "../post.js";
3
+ import { Tag } from "../tag.js";
4
+ import { DataProviderInterface } from "./dataProviderInterface.js";
5
+ import { Cache } from "../cache.js";
6
+ export declare class DataService {
7
+ config: Config;
8
+ cache: Cache;
9
+ constructor(config: Config);
10
+ getPost(id: string): Promise<Post | undefined>;
11
+ getPosts(): Promise<Array<Post>>;
12
+ getPublishedPosts(): Promise<Array<Post>>;
13
+ getPostsByCount(count: number): Promise<Array<Post>>;
14
+ getPublishedPostsByCount(count: number): Promise<Array<Post>>;
15
+ getTag(name: string): Promise<Tag | undefined>;
16
+ getTags(): Promise<Array<Tag>>;
17
+ getPublishedTags(): Promise<Array<Tag>>;
18
+ getProvider(): DataProviderInterface;
19
+ }
@@ -0,0 +1,130 @@
1
+ import { FileDataProvider } from "./fileDataProvider.js";
2
+ import { Cache } from "../cache.js";
3
+ import arraySort from "array-sort";
4
+ export class DataService {
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.cache = new Cache(this.config);
8
+ }
9
+ //posts
10
+ async getPost(id) {
11
+ let result = await this.cache.getPost(id);
12
+ if (!result) {
13
+ result = await this.getProvider().getPost(id);
14
+ if (result) {
15
+ await this.cache.setPost(id, result);
16
+ }
17
+ }
18
+ return result;
19
+ }
20
+ async getPosts() {
21
+ let result;
22
+ let cacheKey = "get-posts";
23
+ let posts = await this.cache.getPosts(cacheKey);
24
+ if (!posts) {
25
+ result = await this.getProvider().getPosts();
26
+ //sort
27
+ result = arraySort(result, "date", { reverse: true });
28
+ //cache
29
+ await this.cache.setPosts(cacheKey, result);
30
+ }
31
+ else {
32
+ result = posts;
33
+ }
34
+ return result;
35
+ }
36
+ async getPublishedPosts() {
37
+ let result;
38
+ let cacheKey = "get-published-posts";
39
+ let posts = await this.cache.getPosts(cacheKey);
40
+ if (!posts) {
41
+ result = await this.getProvider().getPublishedPosts();
42
+ //sort
43
+ result = arraySort(result, "date", { reverse: true });
44
+ //cache
45
+ await this.cache.setPosts(cacheKey, result);
46
+ }
47
+ else {
48
+ result = posts;
49
+ }
50
+ return result;
51
+ }
52
+ async getPostsByCount(count) {
53
+ let result = await this.getPosts();
54
+ let list = new Array();
55
+ let currentCount = 0;
56
+ result.forEach((post) => {
57
+ if (currentCount < count) {
58
+ list.push(post);
59
+ currentCount++;
60
+ }
61
+ });
62
+ result = list;
63
+ return result;
64
+ }
65
+ async getPublishedPostsByCount(count) {
66
+ let result = await this.getPublishedPosts();
67
+ let list = new Array();
68
+ let currentCount = 0;
69
+ result.forEach((post) => {
70
+ if (currentCount < count) {
71
+ list.push(post);
72
+ currentCount++;
73
+ }
74
+ });
75
+ result = list;
76
+ return result;
77
+ }
78
+ //tags
79
+ async getTag(name) {
80
+ let result = await this.cache.getTag(name);
81
+ if (!result) {
82
+ result = await this.getProvider().getTag(name);
83
+ if (result) {
84
+ await this.cache.setTag(name, result);
85
+ }
86
+ }
87
+ return result;
88
+ }
89
+ async getTags() {
90
+ let result;
91
+ let cacheKey = "get-tags";
92
+ let tags = await this.cache.getTags(cacheKey);
93
+ if (!tags) {
94
+ result = await this.getProvider().getTags();
95
+ //sort
96
+ result = arraySort(result, "id", { reverse: false });
97
+ await this.cache.setTags(cacheKey, result);
98
+ }
99
+ else {
100
+ result = tags;
101
+ }
102
+ return result;
103
+ }
104
+ async getPublishedTags() {
105
+ let result;
106
+ let cacheKey = "get-published-tags";
107
+ let tags = await this.cache.getTags(cacheKey);
108
+ if (!tags) {
109
+ result = await this.getProvider().getPublishedTags();
110
+ //sort
111
+ result = arraySort(result, "id", { reverse: false });
112
+ await this.cache.setTags(cacheKey, result);
113
+ }
114
+ else {
115
+ result = tags;
116
+ }
117
+ return result;
118
+ }
119
+ getProvider() {
120
+ let result;
121
+ switch (this.config.provider.name) {
122
+ default:
123
+ result = new FileDataProvider();
124
+ break;
125
+ }
126
+ result.init(this.config);
127
+ return result;
128
+ }
129
+ }
130
+ //# sourceMappingURL=dataService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataService.js","sourceRoot":"","sources":["../../src/data/dataService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Post } from "../post.js";
2
+ import { Tag } from "../tag.js";
3
+ import { Config } from "../config.js";
4
+ import { DataProviderInterface } from "./dataProviderInterface.js";
5
+ export declare class FileDataProvider implements DataProviderInterface {
6
+ __postPath: string;
7
+ __posts: Array<Post>;
8
+ log: any;
9
+ constructor();
10
+ init(config: Config): void;
11
+ getPost(id: string): Promise<Post | undefined>;
12
+ getPosts(): Promise<Array<Post>>;
13
+ getPublishedPosts(): Promise<Array<Post>>;
14
+ getTag(name: string): Promise<Tag | undefined>;
15
+ getTags(): Promise<Array<Tag>>;
16
+ getPublishedTags(): Promise<Array<Tag>>;
17
+ generateTags(posts: Array<Post>): Array<Tag>;
18
+ formatToKey(key: string): string;
19
+ parsePost(filePath: string): Promise<Post | undefined>;
20
+ }
@@ -0,0 +1,132 @@
1
+ import { Post } from "../post.js";
2
+ import { Tag } from "../tag.js";
3
+ import fs from "fs-extra";
4
+ import matter from 'gray-matter';
5
+ import { ConsoleMessage } from "../log.js";
6
+ export class FileDataProvider {
7
+ constructor() {
8
+ this.__postPath = "";
9
+ this.__posts = [];
10
+ this.log = new ConsoleMessage();
11
+ }
12
+ init(config) {
13
+ if (config.path) {
14
+ this.__postPath = config.path;
15
+ }
16
+ }
17
+ async getPost(id) {
18
+ let result;
19
+ let posts = await this.getPosts();
20
+ posts.forEach(post => {
21
+ if (post.id == this.formatToKey(id)) {
22
+ result = post;
23
+ }
24
+ });
25
+ return result;
26
+ }
27
+ async getPosts() {
28
+ let result;
29
+ const supportedExtensions = ['.md', '.markdown'];
30
+ const hasExtension = (file, extensions) => {
31
+ return extensions.some(extension => file.toLowerCase().endsWith(extension));
32
+ };
33
+ if (this.__posts.length === 0) {
34
+ let directory = this.__postPath;
35
+ if (fs.existsSync(directory)) {
36
+ let files = fs.readdirSync(directory);
37
+ for (const file of files) {
38
+ if (hasExtension(file, supportedExtensions)) {
39
+ let filePath = directory + "/" + file;
40
+ let post = await this.parsePost(filePath);
41
+ if (post)
42
+ this.__posts.push(post);
43
+ }
44
+ }
45
+ }
46
+ }
47
+ result = this.__posts;
48
+ return result;
49
+ }
50
+ async getPublishedPosts() {
51
+ let result = new Array();
52
+ let posts = await this.getPosts();
53
+ posts.forEach((post) => {
54
+ if (post.published) {
55
+ result.push(post);
56
+ }
57
+ });
58
+ return result;
59
+ }
60
+ async getTag(name) {
61
+ let result;
62
+ let tags = await this.getTags();
63
+ for (let i = 0; i < tags.length; i++) {
64
+ let tag = tags[i];
65
+ if (this.formatToKey(tag.name) == this.formatToKey(name)) {
66
+ result = tag;
67
+ }
68
+ }
69
+ return result;
70
+ }
71
+ async getTags() {
72
+ let posts = await this.getPosts();
73
+ return this.generateTags(posts);
74
+ }
75
+ async getPublishedTags() {
76
+ let posts = await this.getPublishedPosts();
77
+ return this.generateTags(posts);
78
+ }
79
+ generateTags(posts) {
80
+ let result = new Array();
81
+ posts.forEach(post => {
82
+ post.tags.forEach(tagName => {
83
+ let tag = result.find(t => t.id === new Tag(tagName).id);
84
+ if (tag == null) {
85
+ tag = new Tag(tagName);
86
+ result.push(tag);
87
+ }
88
+ let postExists = tag.posts.find(p => this.formatToKey(p.title) === this.formatToKey(post.title)) != null;
89
+ if (!postExists) {
90
+ tag.posts.push(post);
91
+ }
92
+ });
93
+ });
94
+ return result;
95
+ }
96
+ formatToKey(key) {
97
+ return key.toLowerCase().trim();
98
+ }
99
+ async parsePost(filePath) {
100
+ let result;
101
+ if (await fs.pathExists(filePath)) {
102
+ result = new Post();
103
+ let buff = await fs.readFile(filePath);
104
+ let data = buff.toString();
105
+ let m = matter(data);
106
+ let mData = m.data;
107
+ result.matter = m.data;
108
+ result.content = m.content;
109
+ //handle categories to tags
110
+ if (mData.categories) {
111
+ if (typeof mData.categories === 'string') {
112
+ result.addTags(mData.categories.toString().split(","));
113
+ }
114
+ else {
115
+ result.addTags(mData.categories);
116
+ }
117
+ }
118
+ if (mData.keywords) {
119
+ result.keywords = mData.keywords.toString().split(",");
120
+ }
121
+ if (mData.tags) {
122
+ result.addTags(mData.tags.toString().split(","));
123
+ }
124
+ }
125
+ else {
126
+ this.log.error("The following post does not exist: " + filePath);
127
+ result = undefined;
128
+ }
129
+ return result;
130
+ }
131
+ }
132
+ //# sourceMappingURL=fileDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDataProvider.js","sourceRoot":"","sources":["../../src/data/fileDataProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { DataService } from "./data/dataService.js";
2
+ import { Config } from "./config.js";
3
+ export declare class SiteGenerator {
4
+ config: Config | undefined;
5
+ data: DataService | undefined;
6
+ constructor(options: any);
7
+ run(): Promise<boolean>;
8
+ }