hexo-theme-shokax 0.4.12 → 0.4.13
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.
- package/package.json +2 -1
- package/scripts/filters/locals.js +41 -48
- package/scripts/filters/post.js +2 -4
- package/scripts/generaters/archive.js +121 -125
- package/scripts/generaters/config.js +61 -49
- package/scripts/generaters/images.js +17 -20
- package/scripts/generaters/index.js +111 -100
- package/scripts/generaters/pages.js +14 -14
- package/scripts/generaters/script.js +164 -153
- package/scripts/helpers/asset.js +68 -59
- package/scripts/helpers/engine.js +145 -159
- package/scripts/helpers/list_categories.js +68 -73
- package/scripts/helpers/summary_ai.js +100 -94
- package/scripts/helpers/symbols_count_time.js +43 -51
- package/scripts/libtypes.d.js +15 -0
- package/scripts/plugin/check.js +26 -27
- package/scripts/plugin/index.js +64 -73
- package/scripts/plugin/lib/injects-point.js +40 -19
- package/scripts/plugin/lib/injects.js +89 -73
- package/scripts/tags/links.js +51 -34
- package/scripts/tags/media.js +33 -16
- package/scripts/utils.js +40 -18
- package/toolbox/compiler.mjs +30 -24
@@ -1,107 +1,113 @@
|
|
1
|
-
|
2
|
-
var
|
3
|
-
|
1
|
+
var __create = Object.create;
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
9
|
+
for (let key of __getOwnPropNames(from))
|
10
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
11
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
12
|
+
}
|
13
|
+
return to;
|
4
14
|
};
|
5
|
-
|
6
|
-
|
15
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
16
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
17
|
+
// file that has been converted to a CommonJS file using a Babel-
|
18
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
19
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
21
|
+
mod
|
22
|
+
));
|
23
|
+
var import_node_fs = __toESM(require("node:fs"));
|
7
24
|
function getContent(post) {
|
8
|
-
|
25
|
+
return post?.raw ?? post?._content ?? post.content;
|
9
26
|
}
|
10
27
|
let db;
|
11
28
|
function postMessage(path, content, dbPath, startMessage) {
|
12
|
-
|
13
|
-
|
14
|
-
|
29
|
+
if (import_node_fs.default.existsSync("summary.json")) {
|
30
|
+
db = JSON.parse(import_node_fs.default.readFileSync("summary.json", { encoding: "utf-8" }));
|
31
|
+
} else {
|
32
|
+
db = {};
|
33
|
+
}
|
34
|
+
const config = hexo.theme.config.summary;
|
35
|
+
if (config.enable) {
|
36
|
+
if (typeof db?.[path] !== "undefined" && typeof db?.[path]?.[dbPath] !== "undefined") {
|
37
|
+
return db[path][dbPath];
|
38
|
+
} else {
|
39
|
+
if (typeof db?.[path] === "undefined") {
|
40
|
+
db[path] = {};
|
41
|
+
} else {
|
42
|
+
db[path][dbPath] = "";
|
43
|
+
}
|
15
44
|
}
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
45
|
+
if (config.mode === "openai") {
|
46
|
+
const request = () => {
|
47
|
+
fetch(`${config.openai.remote}/v1/chat/completions`, {
|
48
|
+
method: "POST",
|
49
|
+
headers: requestHeaders,
|
50
|
+
body: JSON.stringify(requestBody)
|
51
|
+
}).then((response) => {
|
52
|
+
if (!response.ok) {
|
53
|
+
throw Error("ERROR: Failed to get summary from Openai API");
|
54
|
+
}
|
55
|
+
response.json().then((data) => {
|
56
|
+
const summary = data.choices[0].message.content;
|
57
|
+
try {
|
58
|
+
db[path][dbPath] = summary;
|
59
|
+
} catch (e) {
|
60
|
+
db ??= {};
|
61
|
+
db[path] ??= {};
|
62
|
+
db[path][dbPath] ??= "";
|
63
|
+
db[path][dbPath] = summary;
|
30
64
|
}
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
fetch(`${config.openai.remote}/v1/chat/completions`, {
|
35
|
-
method: 'POST',
|
36
|
-
headers: requestHeaders,
|
37
|
-
body: JSON.stringify(requestBody)
|
38
|
-
}).then((response) => {
|
39
|
-
if (!response.ok) {
|
40
|
-
throw Error('ERROR: Failed to get summary from Openai API');
|
41
|
-
}
|
42
|
-
response.json().then((data) => {
|
43
|
-
// @ts-ignore
|
44
|
-
const summary = data.choices[0].message.content;
|
45
|
-
try {
|
46
|
-
db[path][dbPath] = summary;
|
47
|
-
}
|
48
|
-
catch (e) {
|
49
|
-
db ??= {};
|
50
|
-
db[path] ??= {};
|
51
|
-
db[path][dbPath] ??= '';
|
52
|
-
db[path][dbPath] = summary;
|
53
|
-
}
|
54
|
-
node_fs_1.default.writeFileSync('summary.json', JSON.stringify(db));
|
55
|
-
if (node_fs_1.default.existsSync('requested.lock')) {
|
56
|
-
node_fs_1.default.unlinkSync('requested.lock');
|
57
|
-
}
|
58
|
-
return summary;
|
59
|
-
});
|
60
|
-
});
|
61
|
-
};
|
62
|
-
const checkTime = (waitTime) => {
|
63
|
-
if (node_fs_1.default.existsSync('request.lock')) {
|
64
|
-
if (node_fs_1.default.existsSync('requested.lock')) {
|
65
|
-
setTimeout(checkTime, 1000 * waitTime);
|
66
|
-
return;
|
67
|
-
}
|
68
|
-
// Openai API 针对个人用户免费试用限制 3 RPM,这里是25s后发送请求
|
69
|
-
node_fs_1.default.writeFileSync('requested.lock', '');
|
70
|
-
setTimeout(request, 1000 * 2.5 * waitTime);
|
71
|
-
node_fs_1.default.unlinkSync('request.lock');
|
72
|
-
}
|
73
|
-
else {
|
74
|
-
node_fs_1.default.writeFileSync('request.lock', '');
|
75
|
-
request();
|
76
|
-
}
|
77
|
-
};
|
78
|
-
const requestHeaders = {
|
79
|
-
'Content-Type': 'application/json',
|
80
|
-
Authorization: `Bearer ${config.openai.apikey}`
|
81
|
-
};
|
82
|
-
const requestBody = {
|
83
|
-
model: 'gpt-3.5-turbo',
|
84
|
-
messages: [{ role: 'user', content: `${startMessage} ${content}` }],
|
85
|
-
temperature: 0.7
|
86
|
-
};
|
87
|
-
if (config.pricing === 'trial') {
|
88
|
-
hexo.log.info('Requesting OpenAI API... (3 RPM mode)');
|
89
|
-
hexo.log.info('It may take 20 minutes or more (depending on the number of articles, each one takes 25 seconds)');
|
90
|
-
checkTime(10);
|
91
|
-
}
|
92
|
-
else {
|
93
|
-
hexo.log.info('Requesting OpenAI API... (60 RPM mode)');
|
94
|
-
checkTime(0.5);
|
65
|
+
import_node_fs.default.writeFileSync("summary.json", JSON.stringify(db));
|
66
|
+
if (import_node_fs.default.existsSync("requested.lock")) {
|
67
|
+
import_node_fs.default.unlinkSync("requested.lock");
|
95
68
|
}
|
69
|
+
return summary;
|
70
|
+
});
|
71
|
+
});
|
72
|
+
};
|
73
|
+
const checkTime = (waitTime) => {
|
74
|
+
if (import_node_fs.default.existsSync("request.lock")) {
|
75
|
+
if (import_node_fs.default.existsSync("requested.lock")) {
|
76
|
+
setTimeout(checkTime, 1e3 * waitTime);
|
77
|
+
return;
|
78
|
+
}
|
79
|
+
import_node_fs.default.writeFileSync("requested.lock", "");
|
80
|
+
setTimeout(request, 1e3 * 2.5 * waitTime);
|
81
|
+
import_node_fs.default.unlinkSync("request.lock");
|
82
|
+
} else {
|
83
|
+
import_node_fs.default.writeFileSync("request.lock", "");
|
84
|
+
request();
|
96
85
|
}
|
97
|
-
|
98
|
-
|
99
|
-
|
86
|
+
};
|
87
|
+
const requestHeaders = {
|
88
|
+
"Content-Type": "application/json",
|
89
|
+
Authorization: `Bearer ${config.openai.apikey}`
|
90
|
+
};
|
91
|
+
const requestBody = {
|
92
|
+
model: "gpt-3.5-turbo",
|
93
|
+
messages: [{ role: "user", content: `${startMessage} ${content}` }],
|
94
|
+
temperature: 0.7
|
95
|
+
};
|
96
|
+
if (config.pricing === "trial") {
|
97
|
+
hexo.log.info("Requesting OpenAI API... (3 RPM mode)");
|
98
|
+
hexo.log.info("It may take 20 minutes or more (depending on the number of articles, each one takes 25 seconds)");
|
99
|
+
checkTime(10);
|
100
|
+
} else {
|
101
|
+
hexo.log.info("Requesting OpenAI API... (60 RPM mode)");
|
102
|
+
checkTime(0.5);
|
103
|
+
}
|
104
|
+
} else {
|
100
105
|
}
|
106
|
+
}
|
101
107
|
}
|
102
|
-
hexo.extend.helper.register(
|
103
|
-
|
108
|
+
hexo.extend.helper.register("get_summary", (post) => {
|
109
|
+
return postMessage(post.path, getContent(post), "summary", "\u8BF7\u4E3A\u4E0B\u8FF0\u6587\u7AE0\u63D0\u4F9B\u4E00\u4EFD200\u5B57\u4EE5\u5185\u7684\u6982\u62EC\uFF0C\u4F7F\u7528\u4E2D\u6587\u56DE\u7B54\u4E14\u5C3D\u53EF\u80FD\u7B80\u6D01: ");
|
104
110
|
});
|
105
|
-
hexo.extend.helper.register(
|
106
|
-
|
111
|
+
hexo.extend.helper.register("get_introduce", () => {
|
112
|
+
return hexo.theme.config.summary.introduce;
|
107
113
|
});
|
@@ -1,69 +1,61 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
/* global hexo */
|
1
|
+
"use strict";
|
2
|
+
var import_hexo_util = require("hexo-util");
|
4
3
|
/*!
|
5
4
|
hexo-symbols-count-time by theme-next
|
6
5
|
under GNU Lesser General Public License v3.0 or later
|
7
6
|
https://github.com/theme-next/hexo-symbols-count-time/blob/master/LICENSE
|
8
7
|
*/
|
9
|
-
const hexo_util_1 = require("hexo-util");
|
10
8
|
const config = hexo.config.symbols_count_time = Object.assign({
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
symbols: true,
|
10
|
+
time: true,
|
11
|
+
total_symbols: true,
|
12
|
+
total_time: true,
|
13
|
+
exclude_codeblock: false,
|
14
|
+
awl: 4,
|
15
|
+
wpm: 275,
|
16
|
+
suffix: "mins."
|
19
17
|
}, hexo.config.symbols_count_time);
|
20
18
|
function getSymbols(post) {
|
21
|
-
|
19
|
+
return post?._content?.length ?? post?.content?.length ?? post.length;
|
22
20
|
}
|
23
21
|
function getSymbolsTotal(site) {
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
let symbolsResultCount = 0;
|
23
|
+
site.posts.forEach((post) => {
|
24
|
+
symbolsResultCount += getSymbols(post);
|
25
|
+
});
|
26
|
+
return symbolsResultCount;
|
29
27
|
}
|
30
28
|
function getFormatTime(minutes, suffix) {
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
? fMinutes + ' ' + suffix // < 59 => 59 mins.
|
38
|
-
: fHours + ':' + ('00' + fMinutes).slice(-2); // = 61 => 1:01
|
29
|
+
const fHours = Math.floor(minutes / 60);
|
30
|
+
let fMinutes = Math.floor(minutes - fHours * 60);
|
31
|
+
if (fMinutes < 1) {
|
32
|
+
fMinutes = 1;
|
33
|
+
}
|
34
|
+
return fHours < 1 ? fMinutes + " " + suffix : fHours + ":" + ("00" + fMinutes).slice(-2);
|
39
35
|
}
|
40
|
-
hexo.extend.helper.register(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
return symbolsResult;
|
36
|
+
hexo.extend.helper.register("symbolsCount", function(post) {
|
37
|
+
let symbolsResult = getSymbols(post);
|
38
|
+
if (symbolsResult > 9999) {
|
39
|
+
symbolsResult = Math.round(symbolsResult / 1e3) + "k";
|
40
|
+
} else if (symbolsResult > 999) {
|
41
|
+
symbolsResult = Math.round(symbolsResult / 100) / 10 + "k";
|
42
|
+
}
|
43
|
+
return symbolsResult;
|
49
44
|
});
|
50
|
-
hexo.extend.helper.register(
|
51
|
-
|
52
|
-
|
45
|
+
hexo.extend.helper.register("symbolsTime", function(post, awl = config.awl, wpm = config.wpm, suffix = config.suffix) {
|
46
|
+
const minutes = Math.round(getSymbols(post) / (awl * wpm));
|
47
|
+
return getFormatTime(minutes, suffix);
|
53
48
|
});
|
54
|
-
hexo.extend.helper.register(
|
55
|
-
|
56
|
-
|
57
|
-
? Math.round(symbolsResultTotal / 1000) + 'k' // < 999k => 111k
|
58
|
-
: Math.round(symbolsResultTotal / 100000) / 10 + 'm'; // > 999k => 1.1m
|
49
|
+
hexo.extend.helper.register("symbolsCountTotal", function(site) {
|
50
|
+
const symbolsResultTotal = getSymbolsTotal(site);
|
51
|
+
return symbolsResultTotal < 1e6 ? Math.round(symbolsResultTotal / 1e3) + "k" : Math.round(symbolsResultTotal / 1e5) / 10 + "m";
|
59
52
|
});
|
60
|
-
hexo.extend.helper.register(
|
61
|
-
|
62
|
-
|
53
|
+
hexo.extend.helper.register("symbolsTimeTotal", function(site, awl = config.awl, wpm = config.wpm, suffix = config.suffix) {
|
54
|
+
const minutes = Math.round(getSymbolsTotal(site) / (awl * wpm));
|
55
|
+
return getFormatTime(minutes, suffix);
|
63
56
|
});
|
64
|
-
hexo.extend.filter.register(
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
data.length = (0, hexo_util_1.stripHTML)(content).replace(/\r?\n|\r/g, '').replace(/\s+/g, '').length;
|
57
|
+
hexo.extend.filter.register("after_post_render", (data) => {
|
58
|
+
let { content } = data;
|
59
|
+
if (config.exclude_codeblock) content = content.replace(/<pre>.*?<\/pre>/g, "");
|
60
|
+
data.length = (0, import_hexo_util.stripHTML)(content).replace(/\r?\n|\r/g, "").replace(/\s+/g, "").length;
|
69
61
|
}, 0);
|
@@ -0,0 +1,15 @@
|
|
1
|
+
var __defProp = Object.defineProperty;
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
7
|
+
for (let key of __getOwnPropNames(from))
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
10
|
+
}
|
11
|
+
return to;
|
12
|
+
};
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
14
|
+
var libtypes_d_exports = {};
|
15
|
+
module.exports = __toCommonJS(libtypes_d_exports);
|
package/scripts/plugin/check.js
CHANGED
@@ -1,32 +1,31 @@
|
|
1
|
-
/* global hexo */
|
2
1
|
let findProblem = false;
|
3
|
-
hexo.on(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
2
|
+
hexo.on("generateBefore", function() {
|
3
|
+
if (hexo.config.syntax_highlighter) {
|
4
|
+
findProblem = true;
|
5
|
+
hexo.log.error("[SXEC 101] Highlight.js or Prismjs enabled. The code block will render incomplete");
|
6
|
+
}
|
7
|
+
if (!hexo.config.markdown) {
|
8
|
+
findProblem = true;
|
9
|
+
hexo.log.error(`[SXEC 102] Critical rendering plugins are missing or incorrectly configured.
|
11
10
|
Some features will be disabled or render incorrectly`);
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
11
|
+
}
|
12
|
+
if (parseInt(process.version.match(/\d{2,3}/)[0]) < 18) {
|
13
|
+
findProblem = true;
|
14
|
+
hexo.log.error("[SXEC 103] Too old Node.js version, install the latest LTS version");
|
15
|
+
}
|
16
|
+
if (!hexo.config.title || !hexo.config.description || !hexo.config.language || !hexo.config.timezone || !hexo.config.url) {
|
17
|
+
findProblem = true;
|
18
|
+
hexo.log.warn("[SXEC 201] Essential information(title, desc, lang, etc) config incorrectly, Page will render incorrectly");
|
19
|
+
}
|
20
|
+
if (hexo.theme.config.gitalk?.clientID || hexo.theme.config.giscus?.repo) {
|
21
|
+
findProblem = true;
|
22
|
+
hexo.log.warn("[SXEC 202] You are using an deprecated feature and it was removed in the v0.3.10");
|
23
|
+
}
|
25
24
|
});
|
26
|
-
hexo.on(
|
27
|
-
|
28
|
-
|
25
|
+
hexo.on("generateAfter", function() {
|
26
|
+
if (findProblem) {
|
27
|
+
hexo.log.warn(`The environment check found some problems that can lead to rendering errors, effect errors,
|
29
28
|
performance degradation, not working correctly, etc`);
|
30
|
-
|
31
|
-
|
29
|
+
hexo.log.warn("ShokaX has output them into console, read them to get more information. You can search error code in docs(For example, SXEC 101)");
|
30
|
+
}
|
32
31
|
});
|
package/scripts/plugin/index.js
CHANGED
@@ -1,81 +1,72 @@
|
|
1
|
-
|
1
|
+
var __create = Object.create;
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
9
|
+
for (let key of __getOwnPropNames(from))
|
10
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
11
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
12
|
+
}
|
13
|
+
return to;
|
14
|
+
};
|
15
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
16
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
17
|
+
// file that has been converted to a CommonJS file using a Babel-
|
18
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
19
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
21
|
+
mod
|
22
|
+
));
|
23
|
+
var import_injects = __toESM(require("./lib/injects"));
|
24
|
+
var import_package = require("../../package.json");
|
25
|
+
var fs = __toESM(require("node:fs"));
|
2
26
|
/*!
|
3
27
|
index.js in next-theme/hexo-theme-next by next-theme
|
4
28
|
under GNU AFFERO GENERAL PUBLIC LICENSE v3.0 OR LATER
|
5
29
|
https://github.com/next-theme/hexo-theme-next/blob/master/LICENSE.md
|
6
30
|
*/
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
o[k2] = m[k];
|
17
|
-
}));
|
18
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
19
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
20
|
-
}) : function(o, v) {
|
21
|
-
o["default"] = v;
|
22
|
-
});
|
23
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
24
|
-
if (mod && mod.__esModule) return mod;
|
25
|
-
var result = {};
|
26
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
27
|
-
__setModuleDefault(result, mod);
|
28
|
-
return result;
|
29
|
-
};
|
30
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
31
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
32
|
-
};
|
33
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
34
|
-
const injects_1 = __importDefault(require("./lib/injects"));
|
35
|
-
const package_json_1 = require("../../package.json");
|
36
|
-
const fs = __importStar(require("node:fs"));
|
37
|
-
hexo.on('generateBefore', () => {
|
38
|
-
// 加载`theme_injects`过滤器
|
39
|
-
(0, injects_1.default)(hexo);
|
40
|
-
fs.rmSync('./shokaxTemp', { force: true, recursive: true });
|
41
|
-
if (fs.existsSync('request.lock')) {
|
42
|
-
fs.unlinkSync('request.lock');
|
43
|
-
}
|
44
|
-
if (fs.existsSync('requested.lock')) {
|
45
|
-
fs.unlinkSync('requested.lock');
|
46
|
-
}
|
31
|
+
hexo.on("generateBefore", () => {
|
32
|
+
(0, import_injects.default)(hexo);
|
33
|
+
fs.rmSync("./shokaxTemp", { force: true, recursive: true });
|
34
|
+
if (fs.existsSync("request.lock")) {
|
35
|
+
fs.unlinkSync("request.lock");
|
36
|
+
}
|
37
|
+
if (fs.existsSync("requested.lock")) {
|
38
|
+
fs.unlinkSync("requested.lock");
|
39
|
+
}
|
47
40
|
});
|
48
|
-
hexo.on(
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
hexo.log.warn('Failed to detect version info. Error message:');
|
78
|
-
hexo.log.warn(e);
|
79
|
-
});
|
41
|
+
hexo.on("generateAfter", () => {
|
42
|
+
fetch("https://api.shokax.top/version/hexo", { headers: {
|
43
|
+
"User-Agent": "Mozilla/5.0 ShokaX Client (hexo-theme-shokax)"
|
44
|
+
} }).then((res) => {
|
45
|
+
res.json().then((resp) => {
|
46
|
+
try {
|
47
|
+
const latest = resp["version"];
|
48
|
+
const current = import_package.version.split(".");
|
49
|
+
let isOutdated = false;
|
50
|
+
for (let i = 0; i < Math.max(latest.length, current.length); i++) {
|
51
|
+
if (!current[i] || latest[i] > current[i]) {
|
52
|
+
isOutdated = true;
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
if (latest[i] < current[i]) {
|
56
|
+
break;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
if (isOutdated) {
|
60
|
+
hexo.log.warn(`Your theme ShokaX is outdated. Current version: v${current.join(".")}, latest version: v${latest.join(".")}`);
|
61
|
+
hexo.log.warn("Visit https://github.com/theme-shoka-x/hexo-theme-shokaX/releases for more information.");
|
62
|
+
}
|
63
|
+
} catch (e) {
|
64
|
+
hexo.log.warn("Failed to detect version info. Error message:");
|
65
|
+
hexo.log.warn(e);
|
66
|
+
}
|
67
|
+
}).catch((e) => {
|
68
|
+
hexo.log.warn("Failed to detect version info. Error message:");
|
69
|
+
hexo.log.warn(e);
|
80
70
|
});
|
71
|
+
});
|
81
72
|
});
|
@@ -1,20 +1,41 @@
|
|
1
|
-
|
2
|
-
Object.defineProperty
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var injects_point_exports = {};
|
20
|
+
__export(injects_point_exports, {
|
21
|
+
default: () => injects_point_default
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(injects_point_exports);
|
24
|
+
var injects_point_default = {
|
25
|
+
views: [
|
26
|
+
"head",
|
27
|
+
"sidebar",
|
28
|
+
"rightNav",
|
29
|
+
"postMeta",
|
30
|
+
"postBodyEnd",
|
31
|
+
"footer",
|
32
|
+
"bodyEnd",
|
33
|
+
"comment",
|
34
|
+
"status"
|
35
|
+
],
|
36
|
+
styles: [
|
37
|
+
"variable",
|
38
|
+
"mixin",
|
39
|
+
"style"
|
40
|
+
]
|
20
41
|
};
|