beatsaber-bot-core 0.2.0-rc.8 → 0.2.0-rc.9
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.
@@ -53,7 +53,7 @@ __export(i18n_exports, {
|
|
53
53
|
module.exports = __toCommonJS(i18n_exports);
|
54
54
|
var import_parser = require("./parser");
|
55
55
|
const i18nObj = {};
|
56
|
-
init().then((_) => console.log("i18n loaded"));
|
56
|
+
init().then((_) => console.log("i18n loaded")).catch((err) => console.error(err));
|
57
57
|
function init() {
|
58
58
|
return __async(this, null, function* () {
|
59
59
|
const zh = yield import("./zh-cn.json");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/infra/i18n/index.ts"],"sourcesContent":["import { interpolate } from './parser'\n\nconst i18nObj = {}\n\ninit().then((_) => console.log('i18n loaded'))\n\nasync function init() {\n // @ts-
|
1
|
+
{"version":3,"sources":["../../../../src/infra/i18n/index.ts"],"sourcesContent":["import { interpolate } from './parser'\n\nconst i18nObj = {}\n\ninit().then((_) => console.log('i18n loaded'))\n .catch((err) => console.error(err))\n\nasync function init() {\n // @ts-ignore\n const zh = await import('./zh-cn.json', { with: { type: 'json' } })\n i18nObj['zh-cn'] = zh\n}\n\n// export async function loadI18N() {\n// const zh = await import('./zh-cn.json')\n// }\n\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nfunction merge(target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} })\n merge(target[key], source[key])\n } else {\n Object.assign(target, { [key]: source[key] })\n }\n }\n }\n return merge(target, ...sources)\n}\n\nexport function loadI18nConfig(lang: string, obj: any) {\n const raw = i18nObj[lang]\n i18nObj[lang] = merge(raw, obj)\n console.log(`overwrite i18n ${lang} `)\n}\n\nexport function tran(path: string, params = {}, lang = 'zh-cn'): string {\n const keys = path.split('.')\n let result = i18nObj[lang]\n\n for (const key of keys) {\n if (result[key] !== undefined) {\n result = result[key]\n } else {\n return null\n }\n }\n try {\n if (typeof result === 'string') {\n return interpolate(result, params)\n }\n } catch (e) {\n return interpolateString(result, params)\n }\n\n return null\n}\n\nfunction interpolateString(str, context) {\n // 正则表达式匹配三元表达式\n const regex = /\\{\\{(.*?)\\?\\s*'(.*?)'\\s*:\\s*'(.*?)'\\s*\\}\\}/\n let match\n\n // 递归解析\n while ((match = regex.exec(str)) !== null) {\n const [fullMatch, condition, trueValue, falseValue] = match\n\n // 递归解析 trueValue 和 falseValue 以处理嵌套情况\n const resolvedTrueValue = interpolateString(trueValue, context)\n const resolvedFalseValue = interpolateString(falseValue, context)\n\n // 计算条件表达式\n let result = safeEval(condition, context)\n if (typeof result === 'string') {\n result = false\n }\n const replacement = result ? resolvedTrueValue : resolvedFalseValue\n\n // 替换匹配到的三元表达式\n str = str.replace(fullMatch, replacement)\n }\n\n // 替换变量插值\n const variableRegex = /\\{\\{(.*?)\\}\\}/g\n str = str.replace(variableRegex, (match, expr) => safeEval(expr, context))\n\n return str\n}\nfunction safeEval(expr, context) {\n try {\n const fn = new Function(...Object.keys(context), `return ${expr}`)\n return fn(...Object.values(context))\n } catch (e) {\n console.error(expr, context, e)\n return expr\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA4B;AAE5B,MAAM,UAAU,CAAC;AAEjB,KAAK,EAAE,KAAK,CAAC,MAAM,QAAQ,IAAI,aAAa,CAAC,EAC1C,MAAM,CAAC,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAEpC,SAAe,OAAO;AAAA;AAEpB,UAAM,KAAK,MAAM,OAAO,cAA2C;AACnE,YAAQ,OAAO,IAAI;AAAA,EACrB;AAAA;AAMA,SAAS,SAAS,MAAM;AACtB,SAAO,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAChE;AAEA,SAAS,MAAM,WAAW,SAAS;AACjC,MAAI,CAAC,QAAQ,OAAQ,QAAO;AAC5B,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG;AACxC,eAAW,OAAO,QAAQ;AACxB,UAAI,SAAS,OAAO,GAAG,CAAC,GAAG;AACzB,YAAI,CAAC,OAAO,GAAG,EAAG,QAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;AACrD,cAAM,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,MAChC,OAAO;AACL,eAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,QAAQ,GAAG,OAAO;AACjC;AAEO,SAAS,eAAe,MAAc,KAAU;AACrD,QAAM,MAAM,QAAQ,IAAI;AACxB,UAAQ,IAAI,IAAI,MAAM,KAAK,GAAG;AAC9B,UAAQ,IAAI,kBAAkB,IAAI,GAAG;AACvC;AAEO,SAAS,KAAK,MAAc,SAAS,CAAC,GAAG,OAAO,SAAiB;AACtE,QAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,MAAI,SAAS,QAAQ,IAAI;AAEzB,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,GAAG,MAAM,QAAW;AAC7B,eAAS,OAAO,GAAG;AAAA,IACrB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,QAAI,OAAO,WAAW,UAAU;AAC9B,iBAAO,2BAAY,QAAQ,MAAM;AAAA,IACnC;AAAA,EACF,SAAS,GAAG;AACV,WAAO,kBAAkB,QAAQ,MAAM;AAAA,EACzC;AAEA,SAAO;AACT;AAEA,SAAS,kBAAkB,KAAK,SAAS;AAEvC,QAAM,QAAQ;AACd,MAAI;AAGJ,UAAQ,QAAQ,MAAM,KAAK,GAAG,OAAO,MAAM;AACzC,UAAM,CAAC,WAAW,WAAW,WAAW,UAAU,IAAI;AAGtD,UAAM,oBAAoB,kBAAkB,WAAW,OAAO;AAC9D,UAAM,qBAAqB,kBAAkB,YAAY,OAAO;AAGhE,QAAI,SAAS,SAAS,WAAW,OAAO;AACxC,QAAI,OAAO,WAAW,UAAU;AAC9B,eAAS;AAAA,IACX;AACA,UAAM,cAAc,SAAS,oBAAoB;AAGjD,UAAM,IAAI,QAAQ,WAAW,WAAW;AAAA,EAC1C;AAGA,QAAM,gBAAgB;AACtB,QAAM,IAAI,QAAQ,eAAe,CAACA,QAAO,SAAS,SAAS,MAAM,OAAO,CAAC;AAEzE,SAAO;AACT;AACA,SAAS,SAAS,MAAM,SAAS;AAC/B,MAAI;AACF,UAAM,KAAK,IAAI,SAAS,GAAG,OAAO,KAAK,OAAO,GAAG,UAAU,IAAI,EAAE;AACjE,WAAO,GAAG,GAAG,OAAO,OAAO,OAAO,CAAC;AAAA,EACrC,SAAS,GAAG;AACV,YAAQ,MAAM,MAAM,SAAS,CAAC;AAC9B,WAAO;AAAA,EACT;AACF;","names":["match"]}
|
@@ -20,7 +20,7 @@ var __async = (__this, __arguments, generator) => {
|
|
20
20
|
};
|
21
21
|
import { interpolate } from "./parser";
|
22
22
|
const i18nObj = {};
|
23
|
-
init().then((_) => console.log("i18n loaded"));
|
23
|
+
init().then((_) => console.log("i18n loaded")).catch((err) => console.error(err));
|
24
24
|
function init() {
|
25
25
|
return __async(this, null, function* () {
|
26
26
|
const zh = yield import("./zh-cn.json");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/infra/i18n/index.ts"],"sourcesContent":["import { interpolate } from './parser'\n\nconst i18nObj = {}\n\ninit().then((_) => console.log('i18n loaded'))\n\nasync function init() {\n // @ts-
|
1
|
+
{"version":3,"sources":["../../../../src/infra/i18n/index.ts"],"sourcesContent":["import { interpolate } from './parser'\n\nconst i18nObj = {}\n\ninit().then((_) => console.log('i18n loaded'))\n .catch((err) => console.error(err))\n\nasync function init() {\n // @ts-ignore\n const zh = await import('./zh-cn.json', { with: { type: 'json' } })\n i18nObj['zh-cn'] = zh\n}\n\n// export async function loadI18N() {\n// const zh = await import('./zh-cn.json')\n// }\n\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nfunction merge(target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} })\n merge(target[key], source[key])\n } else {\n Object.assign(target, { [key]: source[key] })\n }\n }\n }\n return merge(target, ...sources)\n}\n\nexport function loadI18nConfig(lang: string, obj: any) {\n const raw = i18nObj[lang]\n i18nObj[lang] = merge(raw, obj)\n console.log(`overwrite i18n ${lang} `)\n}\n\nexport function tran(path: string, params = {}, lang = 'zh-cn'): string {\n const keys = path.split('.')\n let result = i18nObj[lang]\n\n for (const key of keys) {\n if (result[key] !== undefined) {\n result = result[key]\n } else {\n return null\n }\n }\n try {\n if (typeof result === 'string') {\n return interpolate(result, params)\n }\n } catch (e) {\n return interpolateString(result, params)\n }\n\n return null\n}\n\nfunction interpolateString(str, context) {\n // 正则表达式匹配三元表达式\n const regex = /\\{\\{(.*?)\\?\\s*'(.*?)'\\s*:\\s*'(.*?)'\\s*\\}\\}/\n let match\n\n // 递归解析\n while ((match = regex.exec(str)) !== null) {\n const [fullMatch, condition, trueValue, falseValue] = match\n\n // 递归解析 trueValue 和 falseValue 以处理嵌套情况\n const resolvedTrueValue = interpolateString(trueValue, context)\n const resolvedFalseValue = interpolateString(falseValue, context)\n\n // 计算条件表达式\n let result = safeEval(condition, context)\n if (typeof result === 'string') {\n result = false\n }\n const replacement = result ? resolvedTrueValue : resolvedFalseValue\n\n // 替换匹配到的三元表达式\n str = str.replace(fullMatch, replacement)\n }\n\n // 替换变量插值\n const variableRegex = /\\{\\{(.*?)\\}\\}/g\n str = str.replace(variableRegex, (match, expr) => safeEval(expr, context))\n\n return str\n}\nfunction safeEval(expr, context) {\n try {\n const fn = new Function(...Object.keys(context), `return ${expr}`)\n return fn(...Object.values(context))\n } catch (e) {\n console.error(expr, context, e)\n return expr\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,mBAAmB;AAE5B,MAAM,UAAU,CAAC;AAEjB,KAAK,EAAE,KAAK,CAAC,MAAM,QAAQ,IAAI,aAAa,CAAC,EAC1C,MAAM,CAAC,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAEpC,SAAe,OAAO;AAAA;AAEpB,UAAM,KAAK,MAAM,OAAO,cAA2C;AACnE,YAAQ,OAAO,IAAI;AAAA,EACrB;AAAA;AAMA,SAAS,SAAS,MAAM;AACtB,SAAO,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI;AAChE;AAEA,SAAS,MAAM,WAAW,SAAS;AACjC,MAAI,CAAC,QAAQ,OAAQ,QAAO;AAC5B,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG;AACxC,eAAW,OAAO,QAAQ;AACxB,UAAI,SAAS,OAAO,GAAG,CAAC,GAAG;AACzB,YAAI,CAAC,OAAO,GAAG,EAAG,QAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;AACrD,cAAM,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,MAChC,OAAO;AACL,eAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AACA,SAAO,MAAM,QAAQ,GAAG,OAAO;AACjC;AAEO,SAAS,eAAe,MAAc,KAAU;AACrD,QAAM,MAAM,QAAQ,IAAI;AACxB,UAAQ,IAAI,IAAI,MAAM,KAAK,GAAG;AAC9B,UAAQ,IAAI,kBAAkB,IAAI,GAAG;AACvC;AAEO,SAAS,KAAK,MAAc,SAAS,CAAC,GAAG,OAAO,SAAiB;AACtE,QAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,MAAI,SAAS,QAAQ,IAAI;AAEzB,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,GAAG,MAAM,QAAW;AAC7B,eAAS,OAAO,GAAG;AAAA,IACrB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO,YAAY,QAAQ,MAAM;AAAA,IACnC;AAAA,EACF,SAAS,GAAG;AACV,WAAO,kBAAkB,QAAQ,MAAM;AAAA,EACzC;AAEA,SAAO;AACT;AAEA,SAAS,kBAAkB,KAAK,SAAS;AAEvC,QAAM,QAAQ;AACd,MAAI;AAGJ,UAAQ,QAAQ,MAAM,KAAK,GAAG,OAAO,MAAM;AACzC,UAAM,CAAC,WAAW,WAAW,WAAW,UAAU,IAAI;AAGtD,UAAM,oBAAoB,kBAAkB,WAAW,OAAO;AAC9D,UAAM,qBAAqB,kBAAkB,YAAY,OAAO;AAGhE,QAAI,SAAS,SAAS,WAAW,OAAO;AACxC,QAAI,OAAO,WAAW,UAAU;AAC9B,eAAS;AAAA,IACX;AACA,UAAM,cAAc,SAAS,oBAAoB;AAGjD,UAAM,IAAI,QAAQ,WAAW,WAAW;AAAA,EAC1C;AAGA,QAAM,gBAAgB;AACtB,QAAM,IAAI,QAAQ,eAAe,CAACA,QAAO,SAAS,SAAS,MAAM,OAAO,CAAC;AAEzE,SAAO;AACT;AACA,SAAS,SAAS,MAAM,SAAS;AAC/B,MAAI;AACF,UAAM,KAAK,IAAI,SAAS,GAAG,OAAO,KAAK,OAAO,GAAG,UAAU,IAAI,EAAE;AACjE,WAAO,GAAG,GAAG,OAAO,OAAO,OAAO,CAAC;AAAA,EACrC,SAAS,GAAG;AACV,YAAQ,MAAM,MAAM,SAAS,CAAC;AAC9B,WAAO;AAAA,EACT;AACF;","names":["match"]}
|