@bhsd/common 0.12.0 → 0.13.1
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 +12 -1
- package/dist/index.js +29 -10
- package/dist/index.mjs +29 -10
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -47,12 +47,23 @@ 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 获取解析配置的函数
|
|
53
63
|
* @param langs 语言代码
|
|
64
|
+
* @param cdn CDN 地址
|
|
54
65
|
*/
|
|
55
|
-
export declare const getWikiparse: (getConfig?: ConfigGetter, langs?: string | string[]) => Promise<void>;
|
|
66
|
+
export declare const getWikiparse: (getConfig?: ConfigGetter, langs?: string | string[], cdn?: string) => Promise<void>;
|
|
56
67
|
/**
|
|
57
68
|
* 获取LSP
|
|
58
69
|
* @param obj 关联对象
|
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,11 +115,31 @@ 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
|
-
const getWikiparse = async (getConfig, langs) => {
|
|
135
|
+
const getWikiparse = async (getConfig, langs, cdn) => {
|
|
119
136
|
const dir = "extensions/dist";
|
|
120
|
-
|
|
121
|
-
|
|
137
|
+
let src = cdn || `npm/wikiparser-node/${dir}/base.min.js`;
|
|
138
|
+
if (!src.endsWith(".js")) {
|
|
139
|
+
src = `${src}${src.endsWith("/") ? "" : "/"}${dir}/base.js`;
|
|
140
|
+
}
|
|
141
|
+
await loadScript(src, "wikiparse");
|
|
142
|
+
await loadScript(`${wikiparse.CDN}/${dir}/lsp.js`, "wikiparse.LanguageService");
|
|
122
143
|
if (!configLoaded && typeof getConfig === "function") {
|
|
123
144
|
configLoaded = true;
|
|
124
145
|
try {
|
|
@@ -128,13 +149,11 @@ const getWikiparse = async (getConfig, langs) => {
|
|
|
128
149
|
}
|
|
129
150
|
if (!i18nLoaded && langs) {
|
|
130
151
|
i18nLoaded = true;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
} catch {
|
|
137
|
-
}
|
|
152
|
+
const key = "wikiparse-i18n", { version } = wikiparse;
|
|
153
|
+
try {
|
|
154
|
+
wikiparse.setI18N(await setI18N(`${wikiparse.CDN}/i18n`, version, langs, key));
|
|
155
|
+
} catch {
|
|
156
|
+
setObject(key, { version, lang: "en" });
|
|
138
157
|
}
|
|
139
158
|
}
|
|
140
159
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -76,11 +76,31 @@ 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
|
-
const getWikiparse = async (getConfig, langs) => {
|
|
96
|
+
const getWikiparse = async (getConfig, langs, cdn) => {
|
|
81
97
|
const dir = "extensions/dist";
|
|
82
|
-
|
|
83
|
-
|
|
98
|
+
let src = cdn || `npm/wikiparser-node/${dir}/base.min.js`;
|
|
99
|
+
if (!src.endsWith(".js")) {
|
|
100
|
+
src = `${src}${src.endsWith("/") ? "" : "/"}${dir}/base.js`;
|
|
101
|
+
}
|
|
102
|
+
await loadScript(src, "wikiparse");
|
|
103
|
+
await loadScript(`${wikiparse.CDN}/${dir}/lsp.js`, "wikiparse.LanguageService");
|
|
84
104
|
if (!configLoaded && typeof getConfig === "function") {
|
|
85
105
|
configLoaded = true;
|
|
86
106
|
try {
|
|
@@ -90,13 +110,11 @@ const getWikiparse = async (getConfig, langs) => {
|
|
|
90
110
|
}
|
|
91
111
|
if (!i18nLoaded && langs) {
|
|
92
112
|
i18nLoaded = true;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
} catch {
|
|
99
|
-
}
|
|
113
|
+
const key = "wikiparse-i18n", { version } = wikiparse;
|
|
114
|
+
try {
|
|
115
|
+
wikiparse.setI18N(await setI18N(`${wikiparse.CDN}/i18n`, version, langs, key));
|
|
116
|
+
} catch {
|
|
117
|
+
setObject(key, { version, lang: "en" });
|
|
100
118
|
}
|
|
101
119
|
}
|
|
102
120
|
};
|
|
@@ -143,6 +161,7 @@ export {
|
|
|
143
161
|
rawurldecode,
|
|
144
162
|
refreshStdout,
|
|
145
163
|
sanitizeInlineStyle,
|
|
164
|
+
setI18N,
|
|
146
165
|
setObject,
|
|
147
166
|
splitColors
|
|
148
167
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bhsd/common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.1",
|
|
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
|
}
|