@bhsd/common 0.12.0 → 0.13.0
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/dist/index.d.ts +10 -0
- package/dist/index.js +22 -7
- package/dist/index.mjs +22 -7
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -47,6 +47,16 @@ export declare const setObject: (key: string, value: unknown) => void;
|
|
|
47
47
|
* @param baseVersion 基础版本号
|
|
48
48
|
*/
|
|
49
49
|
export declare const compareVersion: (version: string, baseVersion: string) => boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 加载 I18N
|
|
52
|
+
* @param url 下载地址
|
|
53
|
+
* @param cur 当前版本号
|
|
54
|
+
* @param languages 语言代码列表
|
|
55
|
+
* @param key 存储的键名
|
|
56
|
+
* @param i18n 已存储的I18N对象
|
|
57
|
+
* @throws `Error` 无法获取语言包
|
|
58
|
+
*/
|
|
59
|
+
export declare const setI18N: (url: string, cur: string, languages: string[] | string, key: string, i18n?: Record<string, string>) => Promise<Record<string, string>>;
|
|
50
60
|
/**
|
|
51
61
|
* 加载 wikiparse
|
|
52
62
|
* @param getConfig 获取解析配置的函数
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,7 @@ __export(index_exports, {
|
|
|
32
32
|
rawurldecode: () => rawurldecode,
|
|
33
33
|
refreshStdout: () => refreshStdout,
|
|
34
34
|
sanitizeInlineStyle: () => sanitizeInlineStyle,
|
|
35
|
+
setI18N: () => setI18N,
|
|
35
36
|
setObject: () => setObject,
|
|
36
37
|
splitColors: () => splitColors
|
|
37
38
|
});
|
|
@@ -114,6 +115,22 @@ const compareVersion = (version, baseVersion) => {
|
|
|
114
115
|
const [major, minor] = parseVersion(version), [baseMajor, baseMinor] = parseVersion(baseVersion);
|
|
115
116
|
return major > baseMajor || major === baseMajor && minor >= baseMinor;
|
|
116
117
|
};
|
|
118
|
+
const setI18N = async (url, cur, languages, key, i18n = getObject(key) ?? {}) => {
|
|
119
|
+
const { version, lang } = i18n, langs = Array.isArray(languages) ? languages : [languages];
|
|
120
|
+
if (version === cur && langs.includes(lang)) {
|
|
121
|
+
return i18n;
|
|
122
|
+
}
|
|
123
|
+
for (const language of langs) {
|
|
124
|
+
try {
|
|
125
|
+
const res = await fetch(`${url}/${language.toLowerCase()}.json`);
|
|
126
|
+
Object.assign(i18n, await res.json(), { version: cur, lang: language });
|
|
127
|
+
setObject(key, i18n);
|
|
128
|
+
return i18n;
|
|
129
|
+
} catch {
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
throw new Error(`Failed to fetch the localization for ${langs[0]}.`);
|
|
133
|
+
};
|
|
117
134
|
let configLoaded = false, i18nLoaded = false;
|
|
118
135
|
const getWikiparse = async (getConfig, langs) => {
|
|
119
136
|
const dir = "extensions/dist";
|
|
@@ -128,13 +145,11 @@ const getWikiparse = async (getConfig, langs) => {
|
|
|
128
145
|
}
|
|
129
146
|
if (!i18nLoaded && langs) {
|
|
130
147
|
i18nLoaded = true;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
} catch {
|
|
137
|
-
}
|
|
148
|
+
const key = "wikiparse-i18n", { version } = wikiparse;
|
|
149
|
+
try {
|
|
150
|
+
wikiparse.setI18N(await setI18N(`${wikiparse.CDN}/i18n`, version, langs, key));
|
|
151
|
+
} catch {
|
|
152
|
+
setObject(key, { version, lang: "en" });
|
|
138
153
|
}
|
|
139
154
|
}
|
|
140
155
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -76,6 +76,22 @@ const compareVersion = (version, baseVersion) => {
|
|
|
76
76
|
const [major, minor] = parseVersion(version), [baseMajor, baseMinor] = parseVersion(baseVersion);
|
|
77
77
|
return major > baseMajor || major === baseMajor && minor >= baseMinor;
|
|
78
78
|
};
|
|
79
|
+
const setI18N = async (url, cur, languages, key, i18n = getObject(key) ?? {}) => {
|
|
80
|
+
const { version, lang } = i18n, langs = Array.isArray(languages) ? languages : [languages];
|
|
81
|
+
if (version === cur && langs.includes(lang)) {
|
|
82
|
+
return i18n;
|
|
83
|
+
}
|
|
84
|
+
for (const language of langs) {
|
|
85
|
+
try {
|
|
86
|
+
const res = await fetch(`${url}/${language.toLowerCase()}.json`);
|
|
87
|
+
Object.assign(i18n, await res.json(), { version: cur, lang: language });
|
|
88
|
+
setObject(key, i18n);
|
|
89
|
+
return i18n;
|
|
90
|
+
} catch {
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
throw new Error(`Failed to fetch the localization for ${langs[0]}.`);
|
|
94
|
+
};
|
|
79
95
|
let configLoaded = false, i18nLoaded = false;
|
|
80
96
|
const getWikiparse = async (getConfig, langs) => {
|
|
81
97
|
const dir = "extensions/dist";
|
|
@@ -90,13 +106,11 @@ const getWikiparse = async (getConfig, langs) => {
|
|
|
90
106
|
}
|
|
91
107
|
if (!i18nLoaded && langs) {
|
|
92
108
|
i18nLoaded = true;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
} catch {
|
|
99
|
-
}
|
|
109
|
+
const key = "wikiparse-i18n", { version } = wikiparse;
|
|
110
|
+
try {
|
|
111
|
+
wikiparse.setI18N(await setI18N(`${wikiparse.CDN}/i18n`, version, langs, key));
|
|
112
|
+
} catch {
|
|
113
|
+
setObject(key, { version, lang: "en" });
|
|
100
114
|
}
|
|
101
115
|
}
|
|
102
116
|
};
|
|
@@ -143,6 +157,7 @@ export {
|
|
|
143
157
|
rawurldecode,
|
|
144
158
|
refreshStdout,
|
|
145
159
|
sanitizeInlineStyle,
|
|
160
|
+
setI18N,
|
|
146
161
|
setObject,
|
|
147
162
|
splitColors
|
|
148
163
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bhsd/common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Bhsd",
|
|
6
6
|
"files": [
|
|
@@ -62,6 +62,6 @@
|
|
|
62
62
|
"eslint-plugin-unicorn": "^56.0.1",
|
|
63
63
|
"stylelint": "^16.20.0",
|
|
64
64
|
"typescript": "^5.8.2",
|
|
65
|
-
"wikiparser-node": "^1.21.
|
|
65
|
+
"wikiparser-node": "^1.21.2"
|
|
66
66
|
}
|
|
67
67
|
}
|