hexo-adsense 1.1.1 → 2.0.2

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 (192) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/LICENSE +0 -0
  3. package/dist/index.cjs +12799 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.js +12782 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +12782 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/source/adblock.css +2 -0
  10. package/dist/source/adblock.js +1 -0
  11. package/{lib → dist}/source/article-ads.css +0 -0
  12. package/dist/source/article-ads.js +1 -0
  13. package/dist/source/article-ads.old.js +1 -0
  14. package/{lib → dist}/source/blogger-redirect.html +0 -0
  15. package/dist/source/https.js +1 -0
  16. package/{lib → dist}/source/in_article_ads_test.html +0 -0
  17. package/package.json +122 -38
  18. package/{README.md → readme.md} +27 -8
  19. package/gulpfile.ts +0 -100
  20. package/lib/index.d.ts +0 -1
  21. package/lib/index.js +0 -91
  22. package/lib/packages/hexo-cli-extras/lib/env.d.ts +0 -3
  23. package/lib/packages/hexo-cli-extras/lib/env.js +0 -49
  24. package/lib/packages/hexo-extend-injector2/index.d.ts +0 -2
  25. package/lib/packages/hexo-extend-injector2/index.js +0 -12
  26. package/lib/packages/hexo-extend-injector2/lib/bundle/css-bundle.d.ts +0 -2
  27. package/lib/packages/hexo-extend-injector2/lib/bundle/css-bundle.js +0 -64
  28. package/lib/packages/hexo-extend-injector2/lib/bundle/css-generator.d.ts +0 -2
  29. package/lib/packages/hexo-extend-injector2/lib/bundle/css-generator.js +0 -12
  30. package/lib/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.d.ts +0 -2
  31. package/lib/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.js +0 -28
  32. package/lib/packages/hexo-extend-injector2/lib/bundle/js-bundle.d.ts +0 -2
  33. package/lib/packages/hexo-extend-injector2/lib/bundle/js-bundle.js +0 -32
  34. package/lib/packages/hexo-extend-injector2/lib/bundle/js-generator.d.ts +0 -2
  35. package/lib/packages/hexo-extend-injector2/lib/bundle/js-generator.js +0 -8
  36. package/lib/packages/hexo-extend-injector2/lib/default-config.d.ts +0 -39
  37. package/lib/packages/hexo-extend-injector2/lib/default-config.js +0 -46
  38. package/lib/packages/hexo-extend-injector2/lib/filter.d.ts +0 -2
  39. package/lib/packages/hexo-extend-injector2/lib/filter.js +0 -22
  40. package/lib/packages/hexo-extend-injector2/lib/helper/injector.d.ts +0 -2
  41. package/lib/packages/hexo-extend-injector2/lib/helper/injector.js +0 -5
  42. package/lib/packages/hexo-extend-injector2/lib/helper/next-inject.d.ts +0 -2
  43. package/lib/packages/hexo-extend-injector2/lib/helper/next-inject.js +0 -12
  44. package/lib/packages/hexo-extend-injector2/lib/injector.d.ts +0 -29
  45. package/lib/packages/hexo-extend-injector2/lib/injector.js +0 -125
  46. package/lib/packages/hexo-extend-injector2/lib/load.d.ts +0 -3
  47. package/lib/packages/hexo-extend-injector2/lib/load.js +0 -37
  48. package/lib/packages/hexo-extend-injector2/lib/next-point.d.ts +0 -2
  49. package/lib/packages/hexo-extend-injector2/lib/next-point.js +0 -18
  50. package/lib/packages/hexo-extend-injector2/lib/next.d.ts +0 -2
  51. package/lib/packages/hexo-extend-injector2/lib/next.js +0 -99
  52. package/lib/packages/hexo-extend-injector2/lib/order.d.ts +0 -5
  53. package/lib/packages/hexo-extend-injector2/lib/order.js +0 -8
  54. package/lib/source/adblock.css +0 -2
  55. package/lib/source/adblock.js +0 -1
  56. package/lib/source/article-ads.js +0 -1
  57. package/lib/source/article-ads.old.js +0 -1
  58. package/lib/source/https.js +0 -1
  59. package/lib/src/article-ads.d.ts +0 -20
  60. package/lib/src/article-ads.js +0 -310
  61. package/lib/src/checkLocalHost.d.ts +0 -10
  62. package/lib/src/checkLocalHost.js +0 -37
  63. package/lib/src/config.d.ts +0 -14
  64. package/lib/src/config.js +0 -50
  65. package/lib/src/html-parser.d.ts +0 -8
  66. package/lib/src/html-parser.js +0 -26
  67. package/lib/src/log.d.ts +0 -1
  68. package/lib/src/log.js +0 -11
  69. package/lib/src/logger.d.ts +0 -3
  70. package/lib/src/logger.js +0 -25
  71. package/lib/src/md5.d.ts +0 -7
  72. package/lib/src/md5.js +0 -30
  73. package/lib/src/safestringify.d.ts +0 -2
  74. package/lib/src/safestringify.js +0 -125
  75. package/lib/src/utils.d.ts +0 -31
  76. package/lib/src/utils.js +0 -160
  77. package/lib/src/versionParser.d.ts +0 -27
  78. package/lib/src/versionParser.js +0 -40
  79. package/packages/@types/.gitmodules +0 -8
  80. package/packages/@types/LICENSE +0 -21
  81. package/packages/@types/README.md +0 -27
  82. package/packages/@types/hexo/HexoConfig.d.ts +0 -216
  83. package/packages/@types/hexo/LICENSE +0 -21
  84. package/packages/@types/hexo/README.md +0 -16
  85. package/packages/@types/hexo/index.d.ts +0 -849
  86. package/packages/@types/hexo/package.json +0 -34
  87. package/packages/@types/hexo-bunyan/LICENSE +0 -21
  88. package/packages/@types/hexo-bunyan/README.md +0 -16
  89. package/packages/@types/hexo-bunyan/index.d.ts +0 -9
  90. package/packages/@types/hexo-bunyan/package.json +0 -24
  91. package/packages/@types/hexo-log/LICENSE +0 -21
  92. package/packages/@types/hexo-log/README.md +0 -16
  93. package/packages/@types/hexo-log/index.d.ts +0 -159
  94. package/packages/@types/hexo-log/package.json +0 -28
  95. package/packages/@types/index.js +0 -2
  96. package/packages/@types/package.json +0 -30
  97. package/packages/@types/test/package.json +0 -15
  98. package/packages/@types/test/through2.ts +0 -6
  99. package/packages/@types/tsconfig.json +0 -14
  100. package/packages/@types/typings/index.d.ts +0 -7
  101. package/packages/@types/typings/kill-port.d.ts +0 -3
  102. package/packages/@types/typings/markdown-it-abbr.d.ts +0 -4
  103. package/packages/@types/typings/markdown-it-footnote.d.ts +0 -4
  104. package/packages/@types/typings/markdown-it-image-figures.d.ts +0 -4
  105. package/packages/@types/typings/markdown-it-mark.d.ts +0 -4
  106. package/packages/@types/typings/markdown-it-sub.d.ts +0 -7
  107. package/packages/@types/typings/markdown-it-sup.d.ts +0 -7
  108. package/packages/hexo-cli-extras/.eslintrc +0 -13
  109. package/packages/hexo-cli-extras/LICENSE.md +0 -20
  110. package/packages/hexo-cli-extras/README.md +0 -146
  111. package/packages/hexo-cli-extras/docs/basic.gif +0 -0
  112. package/packages/hexo-cli-extras/docs/gui.gif +0 -0
  113. package/packages/hexo-cli-extras/docs/remove.png +0 -0
  114. package/packages/hexo-cli-extras/docs/rename.png +0 -0
  115. package/packages/hexo-cli-extras/index.js +0 -48
  116. package/packages/hexo-cli-extras/lib/edit.js +0 -209
  117. package/packages/hexo-cli-extras/lib/env.js +0 -52
  118. package/packages/hexo-cli-extras/lib/extensions.js +0 -23
  119. package/packages/hexo-cli-extras/lib/integrate.js +0 -87
  120. package/packages/hexo-cli-extras/lib/isolate.js +0 -179
  121. package/packages/hexo-cli-extras/lib/remove.js +0 -145
  122. package/packages/hexo-cli-extras/lib/rename.js +0 -171
  123. package/packages/hexo-cli-extras/package.json +0 -34
  124. package/packages/hexo-extend-injector2/.eslintrc +0 -4
  125. package/packages/hexo-extend-injector2/.github/workflows/linter.yml +0 -27
  126. package/packages/hexo-extend-injector2/.github/workflows/tester.yml +0 -24
  127. package/packages/hexo-extend-injector2/.vscode/settings.json +0 -10
  128. package/packages/hexo-extend-injector2/LICENSE +0 -165
  129. package/packages/hexo-extend-injector2/README-ZH.md +0 -189
  130. package/packages/hexo-extend-injector2/README.md +0 -191
  131. package/packages/hexo-extend-injector2/USAGE.md +0 -38
  132. package/packages/hexo-extend-injector2/index.js +0 -14
  133. package/packages/hexo-extend-injector2/lib/bundle/css-bundle.js +0 -79
  134. package/packages/hexo-extend-injector2/lib/bundle/css-generator.js +0 -13
  135. package/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.js +0 -29
  136. package/packages/hexo-extend-injector2/lib/bundle/js-bundle.js +0 -42
  137. package/packages/hexo-extend-injector2/lib/bundle/js-generator.js +0 -10
  138. package/packages/hexo-extend-injector2/lib/default-config.js +0 -52
  139. package/packages/hexo-extend-injector2/lib/filter.js +0 -24
  140. package/packages/hexo-extend-injector2/lib/helper/injector.js +0 -6
  141. package/packages/hexo-extend-injector2/lib/helper/next-inject.js +0 -14
  142. package/packages/hexo-extend-injector2/lib/injector.js +0 -128
  143. package/packages/hexo-extend-injector2/lib/load.js +0 -45
  144. package/packages/hexo-extend-injector2/lib/next-point.js +0 -19
  145. package/packages/hexo-extend-injector2/lib/next.js +0 -87
  146. package/packages/hexo-extend-injector2/lib/order.js +0 -9
  147. package/packages/hexo-extend-injector2/package.json +0 -49
  148. package/packages/hexo-extend-injector2/renovate.json +0 -6
  149. package/packages/hexo-extend-injector2/test/.eslintrc +0 -3
  150. package/packages/hexo-extend-injector2/test/index.js +0 -18
  151. package/packages/hexo-extend-injector2/test/lib/bundle/bundle-css.js +0 -86
  152. package/packages/hexo-extend-injector2/test/lib/bundle/bundle-js.js +0 -36
  153. package/packages/hexo-extend-injector2/test/lib/bundle/test.css +0 -3
  154. package/packages/hexo-extend-injector2/test/lib/bundle/test.js +0 -5
  155. package/packages/hexo-extend-injector2/test/lib/helper/injector.js +0 -45
  156. package/packages/hexo-extend-injector2/test/lib/helper/next-inject.js +0 -69
  157. package/packages/hexo-extend-injector2/test/lib/hexo-compatible.js +0 -250
  158. package/packages/hexo-extend-injector2/test/lib/hexo-injector.js +0 -37
  159. package/packages/hexo-extend-injector2/test/lib/injector.js +0 -93
  160. package/packages/memoize/CHANGELOG.md +0 -82
  161. package/packages/memoize/CHANGES +0 -124
  162. package/packages/memoize/LICENSE +0 -15
  163. package/packages/memoize/README.md +0 -503
  164. package/packages/memoize/ext/async.js +0 -154
  165. package/packages/memoize/ext/dispose.js +0 -33
  166. package/packages/memoize/ext/max-age.js +0 -90
  167. package/packages/memoize/ext/max.js +0 -27
  168. package/packages/memoize/ext/promise.js +0 -147
  169. package/packages/memoize/ext/ref-counter.js +0 -48
  170. package/packages/memoize/index.js +0 -34
  171. package/packages/memoize/lib/configure-map.js +0 -182
  172. package/packages/memoize/lib/methods.js +0 -32
  173. package/packages/memoize/lib/registered-extensions.js +0 -1
  174. package/packages/memoize/lib/resolve-length.js +0 -15
  175. package/packages/memoize/lib/resolve-normalize.js +0 -17
  176. package/packages/memoize/lib/resolve-resolve.js +0 -21
  177. package/packages/memoize/lib/weak.js +0 -134
  178. package/packages/memoize/methods-plain.js +0 -3
  179. package/packages/memoize/methods.js +0 -3
  180. package/packages/memoize/normalizers/get-1.js +0 -29
  181. package/packages/memoize/normalizers/get-fixed.js +0 -71
  182. package/packages/memoize/normalizers/get-primitive-fixed.js +0 -16
  183. package/packages/memoize/normalizers/get.js +0 -90
  184. package/packages/memoize/normalizers/primitive.js +0 -9
  185. package/packages/memoize/package.json +0 -60
  186. package/packages/memoize/plain.js +0 -37
  187. package/packages/memoize/profile.js +0 -107
  188. package/packages/memoize/repository.md +0 -1
  189. package/packages/memoize/weak-plain.js +0 -3
  190. package/packages/memoize/weak.js +0 -3
  191. package/tsconfig.json +0 -39
  192. package/unused.md +0 -11
@@ -1,48 +0,0 @@
1
- 'use strict';
2
-
3
- require('./lib/extensions')(hexo);
4
-
5
- hexo.extend.console.register('edit', 'Edit a post or draft with your favorite $EDITOR', {
6
- desc: 'Edit a post or draft with your favorite $EDITOR. Filter on title (if applicable), before using optional arguments.',
7
- usage: '[title] [-a | --after MM-DD-YYYY] [-b | --before MM-DD-YYYY] [-c | --category CATEGORY] [-d | --draft | --drafts] [-f | --folder FOLDER] [-g | --gui] [-l | --layout LAYOUT] [-p | --page | --pages] [-t | --tag | --tags TAG]',
8
- arguments: [
9
- {name: 'title', desc: '(Part of) the title of a post. If more posts match this regex, a menu will be called.'},
10
- ],
11
- options: [
12
- {name: '-a, --after', desc: 'Only consider posts after this date (MM-DD-YYYY)'},
13
- {name: '-b, --before', desc: 'Only consider posts before this date (MM-DD-YYYY)'},
14
- {name: '-c, --category, --categories', desc: 'Category to filter on.'},
15
- {name: '-d, --draft, --drafts', desc: 'Only consider drafts'},
16
- {name: '-f, --folder', desc: 'Name of subfolder to filter on.'},
17
- {name: '-g, --gui', desc: 'Open file with associated GUI text editor. Default is to open in terminal using $EDITOR. If no $EDITOR is found, it will fall back to gui mode.'},
18
- {name: '-l, --layout', desc: 'Only consider posts with a given layout'},
19
- {name: '-p, --page, --pages', desc: 'Only consider pages'},
20
- {name: '-t, --tag, --tags', desc: 'Tag to filter on.'},
21
- ],
22
- }, require('./lib/edit'));
23
-
24
- hexo.extend.console.register('rename', 'Rename a post or draft', {
25
- desc: 'Rename a post or draft. Search for a post and set a new name with the -n or --new option, followed by the new title wrapped in single or double quotes',
26
- usage: '<old name> <-n | --new new name>',
27
- options: [
28
- {name: '-n, --new', desc: '(required) The new title. Wrap in single or double quotes if the title includes spaces.'},
29
- ],
30
- }, require('./lib/rename'));
31
-
32
- hexo.extend.console.register('remove', 'Remove a post or draft', {
33
- desc: 'Search for a post or draft and remove it.',
34
- usage: '<search terms for a post to be deleted>',
35
- }, require('./lib/remove'));
36
-
37
- hexo.extend.console.register('isolate', 'Isolate a post or page by temporarily removing all others from the build process', {
38
- desc: 'Move all posts to an ignored _exile subfolder, except for the one matching a given search term. If multiple posts match, a menu will be called. This can be useful for speeding up testing, but don\'t forget to use the integrate command to restore the exiled posts back to their previous location before deploying your site.',
39
- usage: '[search term]',
40
- options: [
41
- {name: '-a, --all', desc: 'Stash all posts in _exile, including the one for which the pattern matches.'},
42
- ],
43
- }, require('./lib/isolate'));
44
-
45
- hexo.extend.console.register('integrate', 'Restore isolated posts', {
46
- desc: 'Restore all exiled posts from _posts/_exile back to _posts. Opposite of the isolate command.',
47
- usage: '',
48
- }, require('./lib/integrate'));
@@ -1,209 +0,0 @@
1
- 'use strict';
2
-
3
- var chalk = require('chalk');
4
- var moment = require('moment');
5
- var open = require('opn');
6
- var editor = process.env.EDITOR;
7
- var spawn = require('child_process').spawn;
8
- var path = require('path');
9
- var inquirer = require('inquirer');
10
- var Promise = require('bluebird');
11
-
12
- module.exports = function modExports(args) {
13
- var filters = {
14
- title: args._ || '',
15
-
16
- after: args.a || args.after || null,
17
- before: args.b || args.before || null,
18
- cat: args.c || args.category || args.categories || null,
19
- draft: args.draft || args.drafts || null,
20
- folder: args.f || args.folder || null,
21
- layout: args.l || args.layout || null,
22
- tag: args.t || args.tag || null,
23
- };
24
-
25
- var gui = args.g || args.gui || !editor;
26
- var page = args.p || args.page || args.pages || null;
27
-
28
- // load in the posts before processing them
29
- this.load().then(function loadDB() {
30
- var sourceDir = this.source_dir;
31
- var searchDir = sourceDir;
32
-
33
- var query = (page) ? 'pages' : 'posts';
34
-
35
- // the following promise chain details the main functionality
36
- loadArticles(query, this.locals).then(function filter(articles) {
37
- return filterArticles(articles, filters);
38
- }).then(function select(filtered) {
39
- return selectArticle(filtered);
40
- }).then(function openFn(selected) {
41
- openFile(selected);
42
- }).catch(function catchAll(err) {
43
- console.log(err.stack ? chalk.red(err.stack) : chalk.red('Error: ') + chalk.gray(err));
44
- });
45
-
46
- function loadArticles(dataType, locals) {
47
- return Promise.resolve(locals.get(dataType).sort('-date').toArray());
48
- }
49
-
50
- function filterArticles(items, filterObj) {
51
- var results;
52
- // allow omission of leading underscore or trailing s for the common _drafts and _posts folders;
53
- if (/post|draft/.test(filterObj.folder)) {
54
- filterObj.folder = (/^_/.test(filterObj.folder)) ? filterObj.folder : '_' + filterObj.folder;
55
- filterObj.folder = (/s$/.test(filterObj.folder)) ? filterObj.folder : filterObj.folder + 's';
56
- }
57
-
58
- results = filterTitle(items, filterObj.title);
59
-
60
- results = (filterObj.draft) ? filterDrafts(results) : results;
61
- results = (filterObj.layout) ? filterLayout(results, filterObj.layout) : results;
62
- results = (filterObj.folder) ? filterFolder(results, filterObj.folder) : results;
63
- results = (filterObj.tag) ? filterTag(results, filterObj.tag) : results;
64
- results = (filterObj.cat) ? filterCategory(results, filterObj.cat) : results;
65
- results = (filterObj.before) ? filterBefore(results, filterObj.before) : results;
66
- results = (filterObj.after) ? filterAfter(results, filterObj.after) : results;
67
-
68
- return results;
69
-
70
- // filter the posts with the supplied regular expression
71
- function filterTitle(posts, title) {
72
- var reTitle = title.map(function makeRE(word) {
73
- return new RegExp(word, 'i');
74
- });
75
-
76
- return posts.filter(function filterPosts(post) {
77
- return reTitle.every(function checkRE(regex) {
78
- return regex.test(post.title) || regex.test(post.slug);
79
- });
80
- });
81
- }
82
-
83
- // filter the posts using a subfolder if supplied
84
- function filterFolder(posts, folder) {
85
- var reFolder = new RegExp(folder);
86
- return posts.filter(function filterPosts(post) {
87
- return reFolder.test(post.source.substr(0, post.source.lastIndexOf(path.sep)));
88
- });
89
- }
90
-
91
- // filter the posts using a tag if supplied
92
- function filterTag(posts, tag) {
93
- var reTag = new RegExp(tag);
94
- return posts.filter(function filterPosts(post) {
95
- return post.tags.data.some(function checkRe(postTag) {
96
- return reTag.test(postTag.name);
97
- });
98
- });
99
- }
100
-
101
- // filter the posts using a category if supplied
102
- function filterCategory(posts, cat) {
103
- var reCat = new RegExp(cat);
104
- return posts.filter(function filterPosts(post) {
105
- return post.categories.data.some(function checkRe(postCat) {
106
- return reCat.test(postCat.name);
107
- });
108
- });
109
- }
110
-
111
- // filter the posts using a layout if supplied
112
- function filterLayout(posts, layout) {
113
- var reLayout = new RegExp(layout, 'i');
114
-
115
- return posts.filter(function filterPosts(post) {
116
- return reLayout.test(post.layout);
117
- });
118
- }
119
-
120
- // filter out all non-published posts
121
- function filterDrafts(posts) {
122
- return posts.filter(function filterPosts(post) {
123
- return !post.published;
124
- });
125
- }
126
-
127
- // filter the posts using a before date if supplied
128
- function filterBefore(posts, before) {
129
- var momentBefore = moment(before.replace(/\//g, '-'), 'MM-DD-YYYY', true);
130
- if (!momentBefore.isValid()) {
131
- console.log(chalk.red('Before date is not valid (expecting `MM-DD-YYYY`), ignoring argument.'));
132
- return posts;
133
- }
134
-
135
- return posts.filter(function filterPosts(post) {
136
- return moment(post.date).isBefore(momentBefore);
137
- });
138
- }
139
-
140
- // filter the posts using an after date if supplied
141
- function filterAfter(posts, after) {
142
- var momentAfter = moment(after.replace(/\//g, '-'), 'MM-DD-YYYY', true);
143
- if (!momentAfter.isValid()) {
144
- console.log(chalk.red('After date is not valid (expecting `MM-DD-YYYY`), ignoring argument.'));
145
- return posts;
146
- }
147
-
148
- return posts.filter(function filterPosts(post) {
149
- return moment(post.date).isAfter(momentAfter);
150
- });
151
- }
152
- }
153
-
154
- function selectArticle(items) {
155
- if (items.length === 0) {
156
- return Promise.reject('Sorry, no articles match your query.');
157
- }
158
-
159
- if (items.length === 1) {
160
- // no menu necessary if there is only one matching file
161
- var selected = path.join(searchDir, items[0].source);
162
- return Promise.resolve(selected);
163
- }
164
-
165
- // populate a list of entries to use for the menu -- slugs are easy because they show the subfolder and can easily
166
- // be put back together with the searchDir to open the file
167
- var entries = items.map(function makeEntries(post) {
168
- var entry = '';
169
- var loc = post.source.substr(0, post.source.lastIndexOf(path.sep));
170
- if (!post.published) {
171
- entry = ['[', chalk.yellow.bgBlack('draft'), '] ', post.title].join('');
172
- } else {
173
- entry = ['[', chalk.gray(post.date.format('MM-DD-YYYY')), '] ', post.title, ' (', chalk.green(loc), ')'].join('');
174
- }
175
-
176
- return entry;
177
- });
178
-
179
- // display the menu
180
- return inquirer.prompt([
181
- {
182
- type: 'list',
183
- name: 'file',
184
- message: 'Select the file you wish to edit.',
185
- choices: entries,
186
- }
187
- ]).then(function getAnswer(answer) {
188
- var pos = entries.indexOf(answer.file);
189
- var selected = path.join(sourceDir, items[pos].source);
190
-
191
- if (!selected) {
192
- return Promise.reject('Invalid choice.');
193
- }
194
- return selected;
195
- });
196
- }
197
-
198
- // spawn process and open with associated gui or terminal editor
199
- function openFile(file) {
200
- var edit;
201
- if (!editor || gui) {
202
- open(file);
203
- } else {
204
- edit = spawn(editor, [file], {stdio: 'inherit'});
205
- edit.on('exit', process.exit);
206
- }
207
- }
208
- }.bind(this));
209
- };
@@ -1,52 +0,0 @@
1
- "use strict";
2
- const Hexo = require("hexo");
3
- const { memoize } = require("underscore");
4
- const argv = require("minimist")(process.argv.slice(2));
5
-
6
- /**
7
- * Check is production or development
8
- * @param {Hexo} inHexo
9
- * @returns
10
- */
11
- const getEnv = memoize(function (inHexo) {
12
- var DEV = "development";
13
- var PRD = "production";
14
- // --development
15
- const arg = typeof argv["development"] == "boolean" && argv["development"];
16
-
17
- // set NODE_ENV = "development"
18
- const env = process.env.NODE_ENV && process.env.NODE_ENV.toString().toLowerCase() === "development";
19
-
20
- // define is development
21
- const isDev = arg || env;
22
-
23
- if (inHexo) {
24
- if (isDev) return DEV;
25
- if (typeof inHexo.env.args.development == "boolean" && inHexo.env.args.development) return DEV;
26
- if (inHexo.env.args._ && inHexo.env.args._.length > 0) {
27
- for (var i = 0; i < inHexo.env.args._.length; i++) {
28
- if (inHexo.env.args._[i] == "s" || inHexo.env.args._[i] == "server") return DEV;
29
- if (inHexo.env.args._[i] == "d" || inHexo.env.args._[i] == "deploy") return PRD;
30
- if (inHexo.env.args._[i] == "g" || inHexo.env.args._[i] == "generate") return PRD;
31
- }
32
- }
33
- }
34
-
35
- return null;
36
- });
37
-
38
- const isDev = memoize(function (hexo) {
39
- return getEnv(hexo) == "development";
40
- });
41
-
42
- const isProd = memoize(function (hexo) {
43
- return getEnv(hexo) == "production";
44
- });
45
-
46
- module.exports = {
47
- env: function (inHexo) {
48
- return getEnv(inHexo);
49
- },
50
- isProd,
51
- isDev,
52
- };
@@ -1,23 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = function modExports(hexo) {
4
- var open = require('opn');
5
- var editor = process.env.EDITOR;
6
- var spawn = require('child_process').spawn;
7
-
8
- // extend `hexo new` to open newly created post/draft
9
- hexo.on('new', function onNew(post) {
10
- var edit;
11
- var content = post.content;
12
-
13
- // only open a new empty post -- prevent opening on publishing an already written one
14
- if (content.substr(content.indexOf('\n---\n')).length === 5) {
15
- if (!editor) {
16
- open(post.path);
17
- } else {
18
- edit = spawn(editor, [post.path], {stdio: 'inherit'});
19
- edit.on('exit', process.exit);
20
- }
21
- }
22
- });
23
- };
@@ -1,87 +0,0 @@
1
- 'use strict';
2
-
3
- var Promise = require('bluebird');
4
- var chalk = require('chalk');
5
- var fsStat = Promise.promisify(require('fs').stat);
6
- var fsRename = Promise.promisify(require('fs').rename);
7
- var fsReaddir = Promise.promisify(require('fs').readdir);
8
- var path = require('path');
9
-
10
- module.exports = function modExports() {
11
-
12
- // load DB (kind of unnecessary here, but it does give easy access to source_dir)
13
- this.load().then(function loadDB() {
14
- var postsDir = path.join(this.source_dir, '_posts');
15
- var exileDir = path.join(postsDir, '_exile');
16
-
17
- isExileDir(exileDir).then(function checkExileDir(exists) {
18
- if (!exists) {
19
- process.exit();
20
- }
21
- }).then(function lsDir() {
22
- return getExiledPosts(exileDir);
23
- }).then(function checkExiledPosts(files) {
24
- if (!files) {
25
- console.log(chalk.red('No exiled posts detected. Exiting..'));
26
- process.exit();
27
- } else {
28
- return files;
29
- }
30
- }).then(function processFiles(files) {
31
- // set the exiled files up for restoration
32
- return files.map(function mapAbsolutePaths(file) {
33
- return {
34
- origin: path.join(exileDir, file),
35
- destination: path.join(postsDir, file),
36
- };
37
- });
38
- }).then(function doIntegrate(files) {
39
- var movePromises = files.map(function makePromise(file) {
40
- return new Promise(function returnPromise(resolve) {
41
- resolve(move(file.origin, file.destination));
42
- });
43
- });
44
-
45
- Promise.all(movePromises).then(function allDone() {
46
- console.log(chalk.gray('All exiled posts and asset directories restored.'));
47
- });
48
- }).catch(function catchUncaught(err) {
49
- console.log(err.stack ? chalk.red(err.stack) : chalk.red('Error: ') + chalk.gray(err));
50
- });
51
-
52
- function move(origin, destination) {
53
- return fsRename(origin, destination).then(function doMove() {
54
- // console.log('%s moved to %s', origin, destination);
55
- }).catch(function catchMove(err) {
56
- console.log('%s could not be moved to %s: %s', origin, destination, err);
57
- });
58
- }
59
-
60
- function isExileDir(dir) {
61
- return fsStat(dir).then(function doCheckDir(stats) {
62
- if (stats.isFile()) {
63
- console.log(chalk.gray(dir), 'seems to be a file on your filesystem! It needs to be either non-existent or a directory, so please rename your _exile post and run', chalk.yellow('hexo isolate'), 'before using this command.');
64
- return false;
65
- } else if (stats.isDirectory()) {
66
- return true;
67
- } else {
68
- console.log(chalk.gray(dir), 'seems to be neither a file nor a directory! This really shouldn\'t be happening, please issue a bug report.');
69
- return false;
70
- }
71
- }).catch(function catchCheckDir() {
72
- // The directory doesn't exist
73
- console.log(chalk.red('No _exile dir detected. Have you run'), chalk.yellow('hexo isolate'), chalk.red('first?'));
74
- return false;
75
- });
76
- }
77
-
78
- function getExiledPosts(dir) {
79
- return fsReaddir(dir).then(function doReadDir(contents) {
80
- return contents;
81
- }).catch(function catchCheckDir(err) {
82
- console.log(chalk.red('Error: '), err);
83
- });
84
- }
85
- }.bind(this));
86
- };
87
-
@@ -1,179 +0,0 @@
1
- 'use strict';
2
-
3
- var Promise = require('bluebird');
4
- var chalk = require('chalk');
5
- var inquirer = require('inquirer');
6
- var fsStat = Promise.promisify(require('fs').stat);
7
- var fsRename = Promise.promisify(require('fs').rename);
8
- var fsMkdir = Promise.promisify(require('fs').mkdir);
9
- var path = require('path');
10
-
11
- module.exports = function modExports(args) {
12
- // set up -a/--all option and searchTerms
13
- var doWholeFolder = !!args.a || !!args.all;
14
- var searchTerms = [];
15
-
16
- if (!doWholeFolder) {
17
- searchTerms = args._.map(function makeRE(arg) {
18
- return new RegExp(arg, 'i');
19
- });
20
- }
21
-
22
- this.load().then(function loadDB() {
23
-
24
- var locals = this.locals;
25
- var exileDir = path.join(this.source_dir, '_posts', '_exile');
26
- var allPosts;
27
-
28
- // if the _exile dir doesn't exist yet, make it
29
- isDir(exileDir).then(function checkExileDir(exists) {
30
- if (!exists) {
31
- makeDir(exileDir);
32
- }
33
- }).then(function loadArticles() {
34
- return getArticles(locals);
35
- }).then(function selectArticle(arts) {
36
- allPosts = arts;
37
- return selectIsolated(arts, doWholeFolder);
38
- }).then(function splitPosts(isolated) {
39
- // split into { isolated, articlesToStash }
40
- return makeIsoObject(allPosts, isolated);
41
- }).then(function isolateArticles(articlesObject) {
42
- return doIsolate(articlesObject);
43
- }).then(function allDone(isolated) {
44
- console.log(chalk.gray(isolated), 'successfully isolated.\nTo restore the exiled posts, run', chalk.yellow('hexo integrate'));
45
- }).catch(function catchUncaught(err) {
46
- console.log(err.stack ? chalk.red(err.stack) : chalk.gray(err));
47
- });
48
-
49
- function isDir(dir) {
50
- return fsStat(dir).then(function doCheckDir(stats) {
51
- if (stats.isFile() && /_exile/.test(dir)) {
52
- console.log(chalk.gray(dir), 'seems to be a file on your filesystem! It needs to be either non-existent or a directory, so please rename your _exile post before using this command.');
53
- process.exit();
54
- } else if (stats.isDirectory()) {
55
- // console.log('%s is a directory', dir);
56
- return true;
57
- } else {
58
- console.log(chalk.gray(dir), 'seems to be neither a file nor a directory! This really shouldn\'t be happening, please issue a bug report.');
59
- process.exit();
60
- }
61
- }).catch(function catchCheckDir() {
62
- // The directory doesn't exist (which is not a bad thing)
63
- // console.log('%s doesn\'t exist', dir);
64
- return false;
65
- });
66
- }
67
-
68
- function makeDir(dir) {
69
- return fsMkdir(dir).then(function doMakeDir() {
70
- console.log(chalk.gray(dir), 'created');
71
- }).catch(function catchMakeDir(err) {
72
- console.log(chalk.gray(dir), 'could not be created: ', chalk.red(err));
73
- });
74
- }
75
-
76
- function getArticles(data) {
77
- return Promise.resolve(data.get('posts').sort('-date').toArray());
78
- }
79
-
80
- function filterOnName(arts, terms) {
81
- return arts.filter(function filterArts(article) {
82
- return terms.every(function testRE(term) {
83
- return term.test(article.title) || term.test(article.slug);
84
- });
85
- });
86
- }
87
-
88
- function selectIsolated(items, doAll) {
89
- // narrow down the post to isolate based on the user's inputted search terms (if available)
90
- var isolated = filterOnName(items, searchTerms);
91
-
92
- // stash everything if run with the -a/--all option
93
- if (doAll) {
94
- return Promise.resolve(isolated);
95
- }
96
-
97
- if (isolated.length === 0) {
98
- console.log(chalk.red('No posts matched. Exiting.'));
99
- process.exit();
100
- }
101
-
102
- if (isolated.length === 1) {
103
- return Promise.resolve(isolated[0].full_source);
104
- }
105
-
106
- // set up menu for selecting a post in case multiple match the search terms
107
- var entries = isolated.map(function mapTitles(article) {
108
- return [article.title, ' (', chalk.green(article.updated.format('YYYY-MM-DD')), ')'].join('');
109
- });
110
-
111
- return inquirer.prompt([
112
- {
113
- type: 'list',
114
- name: 'selected',
115
- message: 'Select the post you want to isolate.',
116
- choices: entries,
117
- },
118
- ]).then(function getAnswer(answer) {
119
- var pos = entries.indexOf(answer.selected);
120
- return isolated[pos].full_source;
121
- });
122
- }
123
-
124
- function makeIsoObject(items, iso) {
125
- var toStash = items.map(function mapSource(item) {
126
- return item.full_source;
127
- }).filter(function filterOutIsolated(item) {
128
- return item !== iso;
129
- });
130
-
131
- return {
132
- isolated: iso,
133
- articlesToStash: toStash,
134
- };
135
- }
136
-
137
- function doIsolate(itemObj) {
138
- var newName;
139
- var isolated = itemObj.isolated;
140
- var toStash = itemObj.articlesToStash;
141
-
142
- var movePromises = toStash.map(function makePromise(article) {
143
- newName = path.join(exileDir, article.substr(article.lastIndexOf(path.sep)));
144
- return new Promise(function returnPromise(resolve) {
145
- resolve(move(article, newName));
146
- });
147
- });
148
-
149
- // just for outputting a completed message
150
- var thePost = (isolated) ? isolated : 'All posts';
151
-
152
- return Promise.all(movePromises).then(function allDone() {
153
- return thePost;
154
- });
155
- }
156
-
157
- function move(origin, destination) {
158
- // setting up the moving of the asset dirs in case they exist
159
- var assetDir = path.join(path.parse(origin).dir, path.parse(origin).name);
160
- var assetDirDestination = path.join(path.parse(destination).dir, path.parse(destination).name);
161
- Promise.resolve(isDir(assetDir)).then(function checkAssetDir(exists) {
162
- if (exists) {
163
- fsRename(assetDir, assetDirDestination).then(function doAssetDirMove() {
164
- // console.log('%s moved to %s', assetDir, assetDirDestination);
165
- }).catch(function catchAssetDirMove(err) {
166
- console.log('%s could not be moved to %s: %s', assetDir, assetDirDestination, err);
167
- });
168
- }
169
- });
170
- return fsRename(origin, destination).then(function doMove() {
171
- // console.log('%s moved to %s', origin, destination);
172
- }).catch(function catchMove(err) {
173
- console.log('%s could not be moved to %s: %s', origin, destination, err);
174
- });
175
- }
176
-
177
- }.bind(this));
178
- };
179
-