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/README.md CHANGED
@@ -19,6 +19,8 @@
19
19
 
20
20
  ## 2. Setup your directory (look at /blog_example for how to do this)
21
21
 
22
+ > writr init
23
+
22
24
  ```
23
25
  blog/*.md //markdown files in the folder root
24
26
  blog/images //images for the blog
@@ -26,11 +28,21 @@ blog/config.json //config file (optional)
26
28
  blog/templates //template directory for your index, post, and tag
27
29
  ```
28
30
 
29
- ## 3. Run Writr on it with defaults. This will output everything to ./blog_output
31
+ ## 3. Create your first post
32
+
33
+ > writr new
34
+
35
+ This will allow you to answer a couple questions to setup your first blog post.
36
+
37
+ ## 4. Run Writr on it with defaults. This will output everything to ./blog_output
30
38
 
31
- > writr --path ./blog
39
+ > writr
32
40
 
33
- ## 4. Express Integration
41
+ ## 5. You can serve your blog with a simple webserver
42
+
43
+ > writr serve
44
+
45
+ ## 4. Integrate your blog with Express
34
46
 
35
47
  Then in express map your `blog_output` via static files:
36
48
 
@@ -49,6 +61,9 @@ app.use("/blog", express.static(path.join(__dirname, "blog_output")))
49
61
  * -o, --output: Path of where to output the generated blog
50
62
  * -r, --render: What do you want rendered such as html or json (example --render html,json)
51
63
  * -c, --config: Configuration file location if different than 'path'
64
+ * init: Initialize a new blog
65
+ * new: Create a new blog post
66
+ * serve: Serve the blog. You can also specify a port with --port and --watch for hot reloading
52
67
 
53
68
  ## Templates
54
69
 
@@ -165,6 +180,5 @@ To set it globally you can set it in the `config.json` by setting the `permaLink
165
180
  }
166
181
  ```
167
182
 
168
-
169
183
  ## Markdown
170
184
  To learn more about Markdown go here: https://markdownguide.org
package/bin/writr CHANGED
@@ -4,14 +4,6 @@
4
4
 
5
5
  const Writr = require("../dist/index").Writr;
6
6
 
7
- const writr = new Writr;
7
+ const writr = new Writr();
8
8
 
9
9
  writr.parseCLI(process);
10
-
11
- if(writr.command === 'build') {
12
- writr.runCLI().then(() => {
13
- process.exit();
14
- console.info("Done!");
15
- })
16
- }
17
-
@@ -0,0 +1,18 @@
1
+ import { Config } from "./config";
2
+ import { Post } from "./post";
3
+ import { Tag } from "./tag";
4
+ import Keyv = require("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,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cache = void 0;
4
+ const post_1 = require("./post");
5
+ const tag_1 = require("./tag");
6
+ const Keyv = require("keyv");
7
+ class Cache {
8
+ constructor(config) {
9
+ this.cache = new Keyv({ ttl: config.cache.ttl, namespace: "data-cache" });
10
+ }
11
+ //cache
12
+ async getPost(key) {
13
+ key = this.formatName(key, "post");
14
+ let result = await this.cache.get(key);
15
+ if (result) {
16
+ result = post_1.Post.create(result);
17
+ }
18
+ return result;
19
+ }
20
+ async setPost(key, post) {
21
+ return await this.cache.set(this.formatName(key, "post"), post);
22
+ }
23
+ async getPosts(key) {
24
+ key = this.formatName(key, "post");
25
+ let result = await this.cache.get(key);
26
+ if (result) {
27
+ let posts = new Array();
28
+ for (let i = 0; i < result.length; i++) {
29
+ posts.push(post_1.Post.create(result[i]));
30
+ }
31
+ result = posts;
32
+ }
33
+ return result;
34
+ }
35
+ async setPosts(key, posts) {
36
+ return await this.cache.set(this.formatName(key, "post"), posts);
37
+ }
38
+ async getTag(key) {
39
+ key = this.formatName(key, "tag");
40
+ let result = await this.cache.get(key);
41
+ if (result) {
42
+ result = tag_1.Tag.create(result);
43
+ }
44
+ return result;
45
+ }
46
+ async setTag(key, tag) {
47
+ return await this.cache.set(this.formatName(key, "tag"), tag);
48
+ }
49
+ async getTags(key) {
50
+ key = this.formatName(key, "tag");
51
+ let result = await this.cache.get(key);
52
+ if (result) {
53
+ let tags = new Array();
54
+ for (let i = 0; i < result.length; i++) {
55
+ tags.push(tag_1.Tag.create(result[i]));
56
+ }
57
+ result = tags;
58
+ }
59
+ return result;
60
+ }
61
+ async setTags(key, tags) {
62
+ return await this.cache.set(this.formatName(key, "tag"), tags);
63
+ }
64
+ async clear() {
65
+ await this.cache.clear();
66
+ }
67
+ formatName(name, type) {
68
+ let result = type.trim() + "-" + name.trim();
69
+ result = result.toLowerCase();
70
+ return result;
71
+ }
72
+ }
73
+ exports.Cache = Cache;
74
+ //# 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";
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,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigCache = exports.Config = void 0;
4
+ const fs = require("fs-extra");
5
+ const log_1 = require("./log");
6
+ class Config {
7
+ constructor(config = undefined) {
8
+ this.cache = new ConfigCache();
9
+ this.log = new log_1.ConsoleMessage();
10
+ this.program = {};
11
+ this.provider = {};
12
+ this.render = ["html", "json", "atom"];
13
+ this.output = "./blog_output";
14
+ this.path = "./blog";
15
+ this.title = "";
16
+ this.url = "";
17
+ this.authorName = "";
18
+ this.authorEmail = "";
19
+ this.indexCount = 20;
20
+ this.permalink = "simple";
21
+ this.params = {};
22
+ //set default for fileProvider
23
+ this.provider.name = "file";
24
+ if (config) {
25
+ this.parse(config);
26
+ }
27
+ }
28
+ loadPath(path) {
29
+ this.path = path;
30
+ return this.loadConfig(this.path + "/config.json");
31
+ }
32
+ loadConfig(filePath) {
33
+ let result = false;
34
+ if (fs.existsSync(filePath)) {
35
+ let buff = fs.readFileSync(filePath);
36
+ let obj = JSON.parse(buff.toString());
37
+ this.parse(obj);
38
+ result = true;
39
+ }
40
+ else {
41
+ this.log.info("the config file does not exist: " + filePath);
42
+ }
43
+ return result;
44
+ }
45
+ loadProgram(program) {
46
+ this.program = program;
47
+ this.parse(this.program);
48
+ }
49
+ loadParams(params) {
50
+ this.params = params;
51
+ }
52
+ parse(obj) {
53
+ if (obj) {
54
+ if (obj.render) {
55
+ if (typeof obj.render === "string") {
56
+ this.render = obj.render.split(",");
57
+ }
58
+ else {
59
+ this.render = obj.render;
60
+ }
61
+ }
62
+ if (obj.permalink) {
63
+ this.permalink = obj.permalink;
64
+ }
65
+ if (obj.output) {
66
+ this.output = obj.output;
67
+ }
68
+ if (obj.path) {
69
+ this.path = obj.path;
70
+ }
71
+ if (obj.title) {
72
+ this.title = obj.title;
73
+ }
74
+ if (obj.url) {
75
+ this.url = obj.url;
76
+ }
77
+ if (obj.authorName) {
78
+ this.authorName = obj.authorName;
79
+ }
80
+ if (obj.authorEmail) {
81
+ this.authorEmail = obj.authorEmail;
82
+ }
83
+ if (obj.indexCount) {
84
+ this.indexCount = obj.indexCount;
85
+ }
86
+ if (obj.cache) {
87
+ if (obj.cache.connection) {
88
+ this.cache.connection = obj.cache.connection;
89
+ }
90
+ if (obj.cache.ttl) {
91
+ this.cache.ttl = obj.cache.ttl;
92
+ }
93
+ if (obj.cache.type) {
94
+ this.cache.type = obj.cache.type;
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ exports.Config = Config;
101
+ class ConfigCache {
102
+ constructor() {
103
+ this.connection = "";
104
+ this.ttl = 6000;
105
+ this.type = "memory";
106
+ }
107
+ }
108
+ exports.ConfigCache = ConfigCache;
109
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,+BAAqC;AAErC,MAAa,MAAM;IAgBjB,YAAY,SAAc,SAAS;QAfnC,UAAK,GAAgB,IAAI,WAAW,EAAE,CAAC;QACvC,QAAG,GAAG,IAAI,oBAAc,EAAE,CAAA;QAC1B,YAAO,GAAQ,EAAE,CAAC;QAClB,aAAQ,GAAQ,EAAE,CAAC;QACnB,WAAM,GAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,WAAM,GAAW,eAAe,CAAC;QACjC,SAAI,GAAW,QAAQ,CAAC;QACxB,UAAK,GAAW,EAAE,CAAC;QACnB,QAAG,GAAW,EAAE,CAAC;QACjB,eAAU,GAAW,EAAE,CAAC;QACxB,gBAAW,GAAW,EAAE,CAAC;QACzB,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAW,QAAQ,CAAC;QAC7B,WAAM,GAA2B,EAAE,CAAC;QAIlC,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;QAE5B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACpB;IACH,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,QAAgB;QACzB,IAAI,MAAM,GAAY,KAAK,CAAC;QAE5B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAErC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEhB,MAAM,GAAG,IAAI,CAAC;SAEf;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,GAAG,QAAQ,CAAC,CAAC;SAC9D;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,OAAY;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,MAA2B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAQ;QACZ,IAAI,GAAG,EAAE;YAEP,IAAG,GAAG,CAAC,MAAM,EAAE;gBACb,IAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE;oBACjC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBACrC;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;iBAC1B;aACF;YAED,IAAG,GAAG,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;aAChC;YAED,IAAG,GAAG,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;aAC1B;YAED,IAAG,GAAG,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;aACtB;YAED,IAAG,GAAG,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;aACxB;YAED,IAAG,GAAG,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;aACpB;YAED,IAAG,GAAG,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;aAClC;YAED,IAAG,GAAG,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;aACpC;YAED,IAAG,GAAG,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;aAClC;YAED,IAAI,GAAG,CAAC,KAAK,EAAE;gBACb,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE;oBACxB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;iBAC9C;gBACD,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;oBACjB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;iBAChC;gBACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;oBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClC;aACF;SACF;IACH,CAAC;CACF;AApHD,wBAoHC;AAED,MAAa,WAAW;IACtB;QAEA,eAAU,GAAW,EAAE,CAAC;QACxB,QAAG,GAAW,IAAI,CAAC;QACnB,SAAI,GAAW,QAAQ,CAAC;IAJR,CAAC;CAKlB;AAND,kCAMC"}
@@ -0,0 +1,12 @@
1
+ import { Config } from "../config";
2
+ import { Post } from "../post";
3
+ import { Tag } from "../tag";
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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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";
2
+ import { Post } from "../post";
3
+ import { Tag } from "../tag";
4
+ import { DataProviderInterface } from "./dataProviderInterface";
5
+ import { Cache } from "../cache";
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,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataService = void 0;
4
+ const fileDataProvider_1 = require("./fileDataProvider");
5
+ const cache_1 = require("../cache");
6
+ class DataService {
7
+ constructor(config) {
8
+ this.config = config;
9
+ this.cache = new cache_1.Cache(this.config);
10
+ }
11
+ //posts
12
+ async getPost(id) {
13
+ let result = await this.cache.getPost(id);
14
+ if (!result) {
15
+ result = await this.getProvider().getPost(id);
16
+ if (result) {
17
+ await this.cache.setPost(id, result);
18
+ }
19
+ }
20
+ return result;
21
+ }
22
+ async getPosts() {
23
+ let result;
24
+ let cacheKey = "get-posts";
25
+ let posts = await this.cache.getPosts(cacheKey);
26
+ if (!posts) {
27
+ result = await this.getProvider().getPosts();
28
+ //sort
29
+ let arraySort = require("array-sort");
30
+ result = new arraySort(result, "date", { reverse: true });
31
+ //cache
32
+ await this.cache.setPosts(cacheKey, result);
33
+ }
34
+ else {
35
+ result = posts;
36
+ }
37
+ return result;
38
+ }
39
+ async getPublishedPosts() {
40
+ let result;
41
+ let cacheKey = "get-published-posts";
42
+ let posts = await this.cache.getPosts(cacheKey);
43
+ if (!posts) {
44
+ result = await this.getProvider().getPublishedPosts();
45
+ //sort
46
+ let arraySort = require("array-sort");
47
+ result = new arraySort(result, "date", { reverse: true });
48
+ //cache
49
+ await this.cache.setPosts(cacheKey, result);
50
+ }
51
+ else {
52
+ result = posts;
53
+ }
54
+ return result;
55
+ }
56
+ async getPostsByCount(count) {
57
+ let result = await this.getPosts();
58
+ let list = new Array();
59
+ let currentCount = 0;
60
+ result.forEach((post) => {
61
+ if (currentCount < count) {
62
+ list.push(post);
63
+ currentCount++;
64
+ }
65
+ });
66
+ result = list;
67
+ return result;
68
+ }
69
+ async getPublishedPostsByCount(count) {
70
+ let result = await this.getPublishedPosts();
71
+ let list = new Array();
72
+ let currentCount = 0;
73
+ result.forEach((post) => {
74
+ if (currentCount < count) {
75
+ list.push(post);
76
+ currentCount++;
77
+ }
78
+ });
79
+ result = list;
80
+ return result;
81
+ }
82
+ //tags
83
+ async getTag(name) {
84
+ let result = await this.cache.getTag(name);
85
+ if (!result) {
86
+ result = await this.getProvider().getTag(name);
87
+ if (result) {
88
+ await this.cache.setTag(name, result);
89
+ }
90
+ }
91
+ return result;
92
+ }
93
+ async getTags() {
94
+ let result;
95
+ let cacheKey = "get-tags";
96
+ let tags = await this.cache.getTags(cacheKey);
97
+ if (!tags) {
98
+ result = await this.getProvider().getTags();
99
+ //sort
100
+ let arraySort = require("array-sort");
101
+ result = new arraySort(result, "id", { reverse: false });
102
+ await this.cache.setTags(cacheKey, result);
103
+ }
104
+ else {
105
+ result = tags;
106
+ }
107
+ return result;
108
+ }
109
+ async getPublishedTags() {
110
+ let result;
111
+ let cacheKey = "get-published-tags";
112
+ let tags = await this.cache.getTags(cacheKey);
113
+ if (!tags) {
114
+ result = await this.getProvider().getPublishedTags();
115
+ //sort
116
+ let arraySort = require("array-sort");
117
+ result = new arraySort(result, "id", { reverse: false });
118
+ await this.cache.setTags(cacheKey, result);
119
+ }
120
+ else {
121
+ result = tags;
122
+ }
123
+ return result;
124
+ }
125
+ getProvider() {
126
+ let result;
127
+ switch (this.config.provider.name) {
128
+ default:
129
+ result = new fileDataProvider_1.FileDataProvider();
130
+ break;
131
+ }
132
+ result.init(this.config);
133
+ return result;
134
+ }
135
+ }
136
+ exports.DataService = DataService;
137
+ //# 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";
2
+ import { Tag } from "../tag";
3
+ import { Config } from "../config";
4
+ import { DataProviderInterface } from "./dataProviderInterface";
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,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileDataProvider = void 0;
4
+ const post_1 = require("../post");
5
+ const tag_1 = require("../tag");
6
+ const fs = require("fs-extra");
7
+ const matter = require("gray-matter");
8
+ const log_1 = require("../log");
9
+ class FileDataProvider {
10
+ constructor() {
11
+ this.__postPath = "";
12
+ this.__posts = [];
13
+ this.log = new log_1.ConsoleMessage();
14
+ }
15
+ init(config) {
16
+ if (config.path) {
17
+ this.__postPath = config.path;
18
+ }
19
+ }
20
+ async getPost(id) {
21
+ let result;
22
+ let posts = await this.getPosts();
23
+ posts.forEach(post => {
24
+ if (post.id == this.formatToKey(id)) {
25
+ result = post;
26
+ }
27
+ });
28
+ return result;
29
+ }
30
+ async getPosts() {
31
+ let result;
32
+ const supportedExtensions = ['.md', '.markdown'];
33
+ const hasExtension = (file, extensions) => {
34
+ return extensions.some(extension => file.toLowerCase().endsWith(extension));
35
+ };
36
+ if (this.__posts.length === 0) {
37
+ let directory = this.__postPath;
38
+ if (fs.existsSync(directory)) {
39
+ let files = fs.readdirSync(directory);
40
+ for (const file of files) {
41
+ if (hasExtension(file, supportedExtensions)) {
42
+ let filePath = directory + "/" + file;
43
+ let post = await this.parsePost(filePath);
44
+ if (post)
45
+ this.__posts.push(post);
46
+ }
47
+ }
48
+ }
49
+ }
50
+ result = this.__posts;
51
+ return result;
52
+ }
53
+ async getPublishedPosts() {
54
+ let result = new Array();
55
+ let posts = await this.getPosts();
56
+ posts.forEach((post) => {
57
+ if (post.published) {
58
+ result.push(post);
59
+ }
60
+ });
61
+ return result;
62
+ }
63
+ async getTag(name) {
64
+ let result;
65
+ let tags = await this.getTags();
66
+ for (let i = 0; i < tags.length; i++) {
67
+ let tag = tags[i];
68
+ if (this.formatToKey(tag.name) == this.formatToKey(name)) {
69
+ result = tag;
70
+ }
71
+ }
72
+ return result;
73
+ }
74
+ async getTags() {
75
+ let posts = await this.getPosts();
76
+ return this.generateTags(posts);
77
+ }
78
+ async getPublishedTags() {
79
+ let posts = await this.getPublishedPosts();
80
+ return this.generateTags(posts);
81
+ }
82
+ generateTags(posts) {
83
+ let result = new Array();
84
+ posts.forEach(post => {
85
+ post.tags.forEach(tagName => {
86
+ let tag = result.find(t => t.id === new tag_1.Tag(tagName).id);
87
+ if (tag == null) {
88
+ tag = new tag_1.Tag(tagName);
89
+ result.push(tag);
90
+ }
91
+ let postExists = tag.posts.find(p => this.formatToKey(p.title) === this.formatToKey(post.title)) != null;
92
+ if (!postExists) {
93
+ tag.posts.push(post);
94
+ }
95
+ });
96
+ });
97
+ return result;
98
+ }
99
+ formatToKey(key) {
100
+ return key.toLowerCase().trim();
101
+ }
102
+ async parsePost(filePath) {
103
+ let result;
104
+ if (await fs.pathExists(filePath)) {
105
+ result = new post_1.Post();
106
+ let buff = await fs.readFile(filePath);
107
+ let data = buff.toString();
108
+ let m = matter(data);
109
+ let mData = m.data;
110
+ result.matter = m.data;
111
+ result.content = m.content;
112
+ //handle categories to tags
113
+ if (mData.categories) {
114
+ if (typeof mData.categories === 'string') {
115
+ result.addTags(mData.categories.toString().split(","));
116
+ }
117
+ else {
118
+ result.addTags(mData.categories);
119
+ }
120
+ }
121
+ if (mData.keywords) {
122
+ result.keywords = mData.keywords.toString().split(",");
123
+ }
124
+ if (mData.tags) {
125
+ result.addTags(mData.tags.toString().split(","));
126
+ }
127
+ }
128
+ else {
129
+ this.log.error("The following post does not exist: " + filePath);
130
+ result = undefined;
131
+ }
132
+ return result;
133
+ }
134
+ }
135
+ exports.FileDataProvider = FileDataProvider;
136
+ //# 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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"}