@arcblock/did-connect-core 4.1.37 → 4.1.38
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.cjs +149 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/locale-match.d.ts +41 -0
- package/dist/locale-match.d.ts.map +1 -0
- package/dist/locale-match.js +167 -0
- package/dist/locale-match.js.map +1 -0
- package/dist/ui/header-element.d.ts +1 -0
- package/dist/ui/header-element.d.ts.map +1 -1
- package/dist/ui/header-element.js +21 -1
- package/dist/ui/header-element.js.map +1 -1
- package/dist/ui/i18n.d.ts +2 -1
- package/dist/ui/i18n.d.ts.map +1 -1
- package/dist/ui/i18n.js +106 -1
- package/dist/ui/i18n.js.map +1 -1
- package/dist/ui/index.bundle.js +155 -0
- package/dist/ui/login-page.d.ts +11 -0
- package/dist/ui/login-page.d.ts.map +1 -1
- package/dist/ui/login-page.js +40 -0
- package/dist/ui/login-page.js.map +1 -1
- package/dist/ui/styles.d.ts.map +1 -1
- package/dist/ui/styles.js +11 -0
- package/dist/ui/styles.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +24 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -20,12 +20,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
+
BUILTIN_LOCALES: () => BUILTIN_LOCALES,
|
|
23
24
|
ConnectError: () => ConnectError,
|
|
24
25
|
DEFAULTS: () => DEFAULTS,
|
|
26
|
+
DEFAULT_ENABLED_LOCALES: () => DEFAULT_ENABLED_LOCALES,
|
|
25
27
|
DID_PREFIX: () => DID_PREFIX,
|
|
26
28
|
ERROR_CODES: () => ERROR_CODES,
|
|
27
29
|
EmailFlow: () => EmailFlow,
|
|
28
30
|
FetchHttpAdapter: () => FetchHttpAdapter,
|
|
31
|
+
LOCALE_CODES: () => LOCALE_CODES,
|
|
29
32
|
OAuthFlow: () => OAuthFlow,
|
|
30
33
|
PasskeyFlow: () => PasskeyFlow,
|
|
31
34
|
STORAGE_KEYS: () => STORAGE_KEYS,
|
|
@@ -44,6 +47,9 @@ __export(index_exports, {
|
|
|
44
47
|
getDidDisplayParts: () => getDidDisplayParts,
|
|
45
48
|
getWebAuthnErrorMessage: () => getWebAuthnErrorMessage,
|
|
46
49
|
isEthereumDid: () => isEthereumDid,
|
|
50
|
+
matchAcceptLanguage: () => matchAcceptLanguage,
|
|
51
|
+
matchLocale: () => matchLocale,
|
|
52
|
+
normalizeToLocale: () => normalizeToLocale,
|
|
47
53
|
openPopup: () => openPopup,
|
|
48
54
|
parseNextWorkflow: () => parseNextWorkflow,
|
|
49
55
|
parseTokenFromUrl: () => parseTokenFromUrl,
|
|
@@ -314,6 +320,119 @@ var FetchHttpAdapter = class {
|
|
|
314
320
|
}
|
|
315
321
|
};
|
|
316
322
|
|
|
323
|
+
// src/locale-match.ts
|
|
324
|
+
var LOCALE_CODES = ["en", "zh", "zh-TW", "ja"];
|
|
325
|
+
var LOCALE_CODE_SET = new Set(LOCALE_CODES);
|
|
326
|
+
var BUILTIN_LOCALES = [
|
|
327
|
+
{ code: "en", name: "English", htmlLang: "en" },
|
|
328
|
+
{ code: "zh", name: "\u7B80\u4F53\u4E2D\u6587", htmlLang: "zh-CN" },
|
|
329
|
+
{ code: "zh-TW", name: "\u7E41\u9AD4\u4E2D\u6587", htmlLang: "zh-TW" },
|
|
330
|
+
{ code: "ja", name: "\u65E5\u672C\u8A9E", htmlLang: "ja" }
|
|
331
|
+
];
|
|
332
|
+
var DEFAULT_ENABLED_LOCALES = ["en", "zh"];
|
|
333
|
+
function isLocaleCode(value) {
|
|
334
|
+
return LOCALE_CODE_SET.has(value);
|
|
335
|
+
}
|
|
336
|
+
function languageTagParts(tag) {
|
|
337
|
+
return tag.trim().replace(/_/g, "-").toLowerCase().split("-").filter((part) => part.length > 0);
|
|
338
|
+
}
|
|
339
|
+
function parseZhSubtags(subtags) {
|
|
340
|
+
let index = 0;
|
|
341
|
+
let script;
|
|
342
|
+
let region;
|
|
343
|
+
const scriptTag = subtags[index];
|
|
344
|
+
if (scriptTag && /^[a-z]{4}$/.test(scriptTag)) {
|
|
345
|
+
script = scriptTag;
|
|
346
|
+
index += 1;
|
|
347
|
+
}
|
|
348
|
+
const regionTag = subtags[index];
|
|
349
|
+
if (regionTag && (/^[a-z]{2}$/.test(regionTag) || /^[0-9]{3}$/.test(regionTag))) {
|
|
350
|
+
region = regionTag;
|
|
351
|
+
index += 1;
|
|
352
|
+
}
|
|
353
|
+
let hasVariant = false;
|
|
354
|
+
while (index < subtags.length) {
|
|
355
|
+
const variant = subtags[index];
|
|
356
|
+
const isVariant = variant !== void 0 && (/^[a-z0-9]{5,8}$/.test(variant) || /^[0-9][a-z0-9]{3}$/.test(variant));
|
|
357
|
+
if (!isVariant) break;
|
|
358
|
+
hasVariant = true;
|
|
359
|
+
index += 1;
|
|
360
|
+
}
|
|
361
|
+
if (index < subtags.length) {
|
|
362
|
+
const extension = subtags[index];
|
|
363
|
+
if (!extension || extension.length !== 1) return void 0;
|
|
364
|
+
}
|
|
365
|
+
return { script, region, hasVariant };
|
|
366
|
+
}
|
|
367
|
+
function normalizeToLocale(tag) {
|
|
368
|
+
if (typeof tag !== "string") return void 0;
|
|
369
|
+
const parts = languageTagParts(tag);
|
|
370
|
+
const language = parts[0];
|
|
371
|
+
if (language === "en") return "en";
|
|
372
|
+
if (language === "ja") return "ja";
|
|
373
|
+
if (language !== "zh") return void 0;
|
|
374
|
+
const parsed = parseZhSubtags(parts.slice(1));
|
|
375
|
+
if (!parsed) return void 0;
|
|
376
|
+
const { script, region, hasVariant } = parsed;
|
|
377
|
+
if (script === "hant") return "zh-TW";
|
|
378
|
+
if (script === "hans") return "zh";
|
|
379
|
+
if (script) return void 0;
|
|
380
|
+
if (region === "tw" || region === "hk" || region === "mo") return "zh-TW";
|
|
381
|
+
if (region === "cn" || region === "sg") return "zh";
|
|
382
|
+
if (region || hasVariant) return void 0;
|
|
383
|
+
return "zh";
|
|
384
|
+
}
|
|
385
|
+
function toEnabledSet(enabled) {
|
|
386
|
+
const allowed = /* @__PURE__ */ new Set();
|
|
387
|
+
for (const code of enabled) {
|
|
388
|
+
if (typeof code === "string" && isLocaleCode(code)) allowed.add(code);
|
|
389
|
+
}
|
|
390
|
+
return allowed;
|
|
391
|
+
}
|
|
392
|
+
function matchLocale(tag, enabled) {
|
|
393
|
+
const normalized = normalizeToLocale(tag);
|
|
394
|
+
if (!normalized) return void 0;
|
|
395
|
+
const allowed = toEnabledSet(enabled);
|
|
396
|
+
if (allowed.has(normalized)) return normalized;
|
|
397
|
+
if (normalized === "zh-TW" && allowed.has("zh")) return "zh";
|
|
398
|
+
return void 0;
|
|
399
|
+
}
|
|
400
|
+
function readQuality(params) {
|
|
401
|
+
let q = 1;
|
|
402
|
+
for (const param of params) {
|
|
403
|
+
const match = /^q\s*=\s*(\S*)$/i.exec(param.trim());
|
|
404
|
+
if (!match) continue;
|
|
405
|
+
const raw = match[1] ?? "";
|
|
406
|
+
if (!/^(?:0(?:\.\d{1,3})?|1(?:\.0{1,3})?)$/.test(raw)) return void 0;
|
|
407
|
+
q = Number(raw);
|
|
408
|
+
}
|
|
409
|
+
return q;
|
|
410
|
+
}
|
|
411
|
+
function parseAcceptLanguage(header) {
|
|
412
|
+
const ranges = [];
|
|
413
|
+
const parts = header.split(",");
|
|
414
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
415
|
+
const part = parts[index]?.trim();
|
|
416
|
+
if (!part) continue;
|
|
417
|
+
const [rawTag, ...params] = part.split(";");
|
|
418
|
+
const tag = rawTag?.trim();
|
|
419
|
+
if (!tag || tag === "*") continue;
|
|
420
|
+
const q = readQuality(params);
|
|
421
|
+
if (q === void 0 || q === 0) continue;
|
|
422
|
+
ranges.push({ tag, q, index });
|
|
423
|
+
}
|
|
424
|
+
ranges.sort((a, b) => b.q - a.q || a.index - b.index);
|
|
425
|
+
return ranges;
|
|
426
|
+
}
|
|
427
|
+
function matchAcceptLanguage(header, enabled) {
|
|
428
|
+
if (typeof header !== "string" || header.trim() === "") return void 0;
|
|
429
|
+
for (const range of parseAcceptLanguage(header)) {
|
|
430
|
+
const matched = matchLocale(range.tag, enabled);
|
|
431
|
+
if (matched) return matched;
|
|
432
|
+
}
|
|
433
|
+
return void 0;
|
|
434
|
+
}
|
|
435
|
+
|
|
317
436
|
// src/oauth-flow.ts
|
|
318
437
|
var OAuthFlow = class {
|
|
319
438
|
_servicePrefix;
|
|
@@ -878,6 +997,30 @@ var WEBAUTHN_ERROR_MESSAGES = {
|
|
|
878
997
|
NetworkError: "WebAuthn \u64CD\u4F5C\u671F\u95F4\u53D1\u751F\u7F51\u7EDC\u9519\u8BEF\u3002",
|
|
879
998
|
DataError: "\u63D0\u4F9B\u7684\u6570\u636E\u5BF9 WebAuthn \u64CD\u4F5C\u65E0\u6548\u3002",
|
|
880
999
|
TimeoutError: "\u64CD\u4F5C\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002"
|
|
1000
|
+
},
|
|
1001
|
+
"zh-TW": {
|
|
1002
|
+
NotAllowedError: "\u64CD\u4F5C\u5DF2\u53D6\u6D88\u6216\u903E\u6642\uFF0C\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
|
|
1003
|
+
SecurityError: "\u76EE\u524D\u74B0\u5883\u4E0D\u5141\u8A31\u6B64\u64CD\u4F5C\uFF08\u8ACB\u6AA2\u67E5\u7DB2\u57DF\u6216 HTTPS \u8A2D\u5B9A\uFF09\u3002",
|
|
1004
|
+
InvalidStateError: "\u6B64\u9A57\u8B49\u5668\u5DF2\u8A3B\u518A\uFF0C\u8ACB\u6539\u7528\u53E6\u4E00\u500B\u3002",
|
|
1005
|
+
NotSupportedError: "\u6B64\u700F\u89BD\u5668\u6216\u88DD\u7F6E\u4E0D\u652F\u63F4\u8981\u6C42\u7684\u6191\u8B49\u985E\u578B\u3002",
|
|
1006
|
+
AbortError: "\u64CD\u4F5C\u5DF2\u4E2D\u6B62\u3002",
|
|
1007
|
+
ConstraintError: "\u9A57\u8B49\u5668\u4E0D\u7B26\u5408\u6240\u9700\u7684\u689D\u4EF6\u9650\u5236\u3002",
|
|
1008
|
+
UnknownError: "\u9A57\u8B49\u5668\u767C\u751F\u672A\u77E5\u7684\u932F\u8AA4\u3002",
|
|
1009
|
+
NetworkError: "WebAuthn \u64CD\u4F5C\u671F\u9593\u767C\u751F\u7DB2\u8DEF\u932F\u8AA4\u3002",
|
|
1010
|
+
DataError: "\u63D0\u4F9B\u7684\u8CC7\u6599\u5C0D WebAuthn \u64CD\u4F5C\u7121\u6548\u3002",
|
|
1011
|
+
TimeoutError: "\u64CD\u4F5C\u903E\u6642\uFF0C\u8ACB\u518D\u8A66\u4E00\u6B21\u3002"
|
|
1012
|
+
},
|
|
1013
|
+
ja: {
|
|
1014
|
+
NotAllowedError: "\u64CD\u4F5C\u304C\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u305F\u304B\u3001\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
|
|
1015
|
+
SecurityError: "\u3053\u306E\u74B0\u5883\u3067\u306F\u3053\u306E\u64CD\u4F5C\u306F\u8A31\u53EF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08\u30C9\u30E1\u30A4\u30F3\u307E\u305F\u306F HTTPS \u306E\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002",
|
|
1016
|
+
InvalidStateError: "\u3053\u306E\u8A8D\u8A3C\u5668\u306F\u65E2\u306B\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5225\u306E\u8A8D\u8A3C\u5668\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
1017
|
+
NotSupportedError: "\u3053\u306E\u30D6\u30E9\u30A6\u30B6\u30FC\u307E\u305F\u306F\u30C7\u30D0\u30A4\u30B9\u306F\u3001\u8981\u6C42\u3055\u308C\u305F\u8CC7\u683C\u60C5\u5831\u306E\u7A2E\u985E\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002",
|
|
1018
|
+
AbortError: "\u64CD\u4F5C\u306F\u4E2D\u6B62\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
1019
|
+
ConstraintError: "\u8A8D\u8A3C\u5668\u304C\u5FC5\u8981\u306A\u5236\u7D04\u3092\u6E80\u305F\u3057\u3066\u3044\u307E\u305B\u3093\u3002",
|
|
1020
|
+
UnknownError: "\u8A8D\u8A3C\u5668\u3067\u4E0D\u660E\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002",
|
|
1021
|
+
NetworkError: "WebAuthn \u306E\u64CD\u4F5C\u4E2D\u306B\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002",
|
|
1022
|
+
DataError: "\u6307\u5B9A\u3055\u308C\u305F\u30C7\u30FC\u30BF\u306F WebAuthn \u306E\u64CD\u4F5C\u3067\u306F\u7121\u52B9\u3067\u3059\u3002",
|
|
1023
|
+
TimeoutError: "\u64CD\u4F5C\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002"
|
|
881
1024
|
}
|
|
882
1025
|
};
|
|
883
1026
|
function getWebAuthnErrorMessage(err, defaultMsg, locale) {
|
|
@@ -1364,12 +1507,15 @@ var TokenSession = class {
|
|
|
1364
1507
|
var VERSION = "4.0.0-beta.0";
|
|
1365
1508
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1366
1509
|
0 && (module.exports = {
|
|
1510
|
+
BUILTIN_LOCALES,
|
|
1367
1511
|
ConnectError,
|
|
1368
1512
|
DEFAULTS,
|
|
1513
|
+
DEFAULT_ENABLED_LOCALES,
|
|
1369
1514
|
DID_PREFIX,
|
|
1370
1515
|
ERROR_CODES,
|
|
1371
1516
|
EmailFlow,
|
|
1372
1517
|
FetchHttpAdapter,
|
|
1518
|
+
LOCALE_CODES,
|
|
1373
1519
|
OAuthFlow,
|
|
1374
1520
|
PasskeyFlow,
|
|
1375
1521
|
STORAGE_KEYS,
|
|
@@ -1388,6 +1534,9 @@ var VERSION = "4.0.0-beta.0";
|
|
|
1388
1534
|
getDidDisplayParts,
|
|
1389
1535
|
getWebAuthnErrorMessage,
|
|
1390
1536
|
isEthereumDid,
|
|
1537
|
+
matchAcceptLanguage,
|
|
1538
|
+
matchLocale,
|
|
1539
|
+
normalizeToLocale,
|
|
1391
1540
|
openPopup,
|
|
1392
1541
|
parseNextWorkflow,
|
|
1393
1542
|
parseTokenFromUrl,
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { DID_PREFIX, type DidDisplayOptions, type DidDisplayParts, getDidChainLa
|
|
|
3
3
|
export { EmailFlow } from './email-flow.js';
|
|
4
4
|
export { ConnectError, ERROR_CODES } from './errors.js';
|
|
5
5
|
export { FetchHttpAdapter } from './fetch-adapter.js';
|
|
6
|
+
export { BUILTIN_LOCALES, DEFAULT_ENABLED_LOCALES, LOCALE_CODES, type LocaleCode, matchAcceptLanguage, matchLocale, normalizeToLocale, } from './locale-match.js';
|
|
6
7
|
export { OAuthFlow } from './oauth-flow.js';
|
|
7
8
|
export { PasskeyFlow } from './passkey-flow.js';
|
|
8
9
|
export { SessionManager } from './session-manager.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzF,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzF,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,KAAK,UAAU,EACf,mBAAmB,EACnB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,OAAO,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,8 @@ export { EmailFlow } from './email-flow.js';
|
|
|
7
7
|
export { ConnectError, ERROR_CODES } from './errors.js';
|
|
8
8
|
// Adapters
|
|
9
9
|
export { FetchHttpAdapter } from './fetch-adapter.js';
|
|
10
|
+
// Locale match — main entry only. The ./ui bundle must not re-export this.
|
|
11
|
+
export { BUILTIN_LOCALES, DEFAULT_ENABLED_LOCALES, LOCALE_CODES, matchAcceptLanguage, matchLocale, normalizeToLocale, } from './locale-match.js';
|
|
10
12
|
export { OAuthFlow } from './oauth-flow.js';
|
|
11
13
|
export { PasskeyFlow } from './passkey-flow.js';
|
|
12
14
|
export { SessionManager } from './session-manager.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAG7C,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzF,cAAc;AACd,OAAO,EACL,UAAU,EAGV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBlD,QAAQ;AACR,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAG7C,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzF,cAAc;AACd,OAAO,EACL,UAAU,EAGV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,2EAA2E;AAC3E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,YAAY,EAEZ,mBAAmB,EACnB,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBlD,QAAQ;AACR,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Internal language codes. `zh` stays Simplified; do not rewrite it to `zh-CN`. */
|
|
2
|
+
export declare const LOCALE_CODES: readonly ["en", "zh", "zh-TW", "ja"];
|
|
3
|
+
export type LocaleCode = (typeof LOCALE_CODES)[number];
|
|
4
|
+
/** Self-names and `<html lang>` values. `htmlLang` is data, not a function. */
|
|
5
|
+
export declare const BUILTIN_LOCALES: readonly [{
|
|
6
|
+
readonly code: "en";
|
|
7
|
+
readonly name: "English";
|
|
8
|
+
readonly htmlLang: "en";
|
|
9
|
+
}, {
|
|
10
|
+
readonly code: "zh";
|
|
11
|
+
readonly name: "简体中文";
|
|
12
|
+
readonly htmlLang: "zh-CN";
|
|
13
|
+
}, {
|
|
14
|
+
readonly code: "zh-TW";
|
|
15
|
+
readonly name: "繁體中文";
|
|
16
|
+
readonly htmlLang: "zh-TW";
|
|
17
|
+
}, {
|
|
18
|
+
readonly code: "ja";
|
|
19
|
+
readonly name: "日本語";
|
|
20
|
+
readonly htmlLang: "ja";
|
|
21
|
+
}];
|
|
22
|
+
/** Enabled set when an instance has never stored `app:languages`. */
|
|
23
|
+
export declare const DEFAULT_ENABLED_LOCALES: readonly ["en", "zh"];
|
|
24
|
+
/**
|
|
25
|
+
* Map one language tag onto en / zh / zh-TW / ja.
|
|
26
|
+
* `en-*` and `ja-*` collapse to that language. Chinese uses script first
|
|
27
|
+
* (`zh-Hant-*` → zh-TW, `zh-Hans-*` → zh), then region (TW/HK/MO vs CN/SG).
|
|
28
|
+
*/
|
|
29
|
+
export declare function normalizeToLocale(tag: string): LocaleCode | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Normalize, then keep the code only if this instance publishes it.
|
|
32
|
+
* zh-TW may fall back to zh. zh never falls back to zh-TW. ja has no fallback.
|
|
33
|
+
* This does not apply the "default to en" rule.
|
|
34
|
+
*/
|
|
35
|
+
export declare function matchLocale(tag: string, enabled: readonly LocaleCode[]): LocaleCode | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Try ranges from highest q to lowest. A tag that does not match does not
|
|
38
|
+
* stop the walk; a later lower-q tag may still match. Empty input matches nothing.
|
|
39
|
+
*/
|
|
40
|
+
export declare function matchAcceptLanguage(header: string, enabled: readonly LocaleCode[]): LocaleCode | undefined;
|
|
41
|
+
//# sourceMappingURL=locale-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-match.d.ts","sourceRoot":"","sources":["../src/locale-match.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,eAAO,MAAM,YAAY,sCAAuC,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAIvD,+EAA+E;AAC/E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;EAKwD,CAAC;AAErF,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,uBAAwD,CAAC;AAyD7F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAkBrE;AAUD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,GAAG,SAAS,CAO/F;AAwCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,GAAG,SAAS,CAO1G"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// @arcblock/did-connect-core/locale-match — pure locale matching, no DOM
|
|
2
|
+
/** Internal language codes. `zh` stays Simplified; do not rewrite it to `zh-CN`. */
|
|
3
|
+
export const LOCALE_CODES = ['en', 'zh', 'zh-TW', 'ja'];
|
|
4
|
+
const LOCALE_CODE_SET = new Set(LOCALE_CODES);
|
|
5
|
+
/** Self-names and `<html lang>` values. `htmlLang` is data, not a function. */
|
|
6
|
+
export const BUILTIN_LOCALES = [
|
|
7
|
+
{ code: 'en', name: 'English', htmlLang: 'en' },
|
|
8
|
+
{ code: 'zh', name: '简体中文', htmlLang: 'zh-CN' },
|
|
9
|
+
{ code: 'zh-TW', name: '繁體中文', htmlLang: 'zh-TW' },
|
|
10
|
+
{ code: 'ja', name: '日本語', htmlLang: 'ja' },
|
|
11
|
+
];
|
|
12
|
+
/** Enabled set when an instance has never stored `app:languages`. */
|
|
13
|
+
export const DEFAULT_ENABLED_LOCALES = ['en', 'zh'];
|
|
14
|
+
function isLocaleCode(value) {
|
|
15
|
+
return LOCALE_CODE_SET.has(value);
|
|
16
|
+
}
|
|
17
|
+
function languageTagParts(tag) {
|
|
18
|
+
return tag
|
|
19
|
+
.trim()
|
|
20
|
+
.replace(/_/g, '-')
|
|
21
|
+
.toLowerCase()
|
|
22
|
+
.split('-')
|
|
23
|
+
.filter((part) => part.length > 0);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Read script, region, and variants. Extensions and private-use subtags are ignored.
|
|
27
|
+
* Returns undefined when a subtag is not a valid BCP 47 piece.
|
|
28
|
+
*/
|
|
29
|
+
function parseZhSubtags(subtags) {
|
|
30
|
+
let index = 0;
|
|
31
|
+
let script;
|
|
32
|
+
let region;
|
|
33
|
+
const scriptTag = subtags[index];
|
|
34
|
+
if (scriptTag && /^[a-z]{4}$/.test(scriptTag)) {
|
|
35
|
+
script = scriptTag;
|
|
36
|
+
index += 1;
|
|
37
|
+
}
|
|
38
|
+
const regionTag = subtags[index];
|
|
39
|
+
if (regionTag && (/^[a-z]{2}$/.test(regionTag) || /^[0-9]{3}$/.test(regionTag))) {
|
|
40
|
+
region = regionTag;
|
|
41
|
+
index += 1;
|
|
42
|
+
}
|
|
43
|
+
let hasVariant = false;
|
|
44
|
+
while (index < subtags.length) {
|
|
45
|
+
const variant = subtags[index];
|
|
46
|
+
const isVariant = variant !== undefined && (/^[a-z0-9]{5,8}$/.test(variant) || /^[0-9][a-z0-9]{3}$/.test(variant));
|
|
47
|
+
if (!isVariant)
|
|
48
|
+
break;
|
|
49
|
+
hasVariant = true;
|
|
50
|
+
index += 1;
|
|
51
|
+
}
|
|
52
|
+
if (index < subtags.length) {
|
|
53
|
+
const extension = subtags[index];
|
|
54
|
+
// Extensions and private use are a 1-character singleton plus values.
|
|
55
|
+
if (!extension || extension.length !== 1)
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return { script, region, hasVariant };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Map one language tag onto en / zh / zh-TW / ja.
|
|
62
|
+
* `en-*` and `ja-*` collapse to that language. Chinese uses script first
|
|
63
|
+
* (`zh-Hant-*` → zh-TW, `zh-Hans-*` → zh), then region (TW/HK/MO vs CN/SG).
|
|
64
|
+
*/
|
|
65
|
+
export function normalizeToLocale(tag) {
|
|
66
|
+
if (typeof tag !== 'string')
|
|
67
|
+
return undefined;
|
|
68
|
+
const parts = languageTagParts(tag);
|
|
69
|
+
const language = parts[0];
|
|
70
|
+
if (language === 'en')
|
|
71
|
+
return 'en';
|
|
72
|
+
if (language === 'ja')
|
|
73
|
+
return 'ja';
|
|
74
|
+
if (language !== 'zh')
|
|
75
|
+
return undefined;
|
|
76
|
+
const parsed = parseZhSubtags(parts.slice(1));
|
|
77
|
+
if (!parsed)
|
|
78
|
+
return undefined;
|
|
79
|
+
const { script, region, hasVariant } = parsed;
|
|
80
|
+
if (script === 'hant')
|
|
81
|
+
return 'zh-TW';
|
|
82
|
+
if (script === 'hans')
|
|
83
|
+
return 'zh';
|
|
84
|
+
if (script)
|
|
85
|
+
return undefined;
|
|
86
|
+
if (region === 'tw' || region === 'hk' || region === 'mo')
|
|
87
|
+
return 'zh-TW';
|
|
88
|
+
if (region === 'cn' || region === 'sg')
|
|
89
|
+
return 'zh';
|
|
90
|
+
if (region || hasVariant)
|
|
91
|
+
return undefined;
|
|
92
|
+
return 'zh';
|
|
93
|
+
}
|
|
94
|
+
function toEnabledSet(enabled) {
|
|
95
|
+
const allowed = new Set();
|
|
96
|
+
for (const code of enabled) {
|
|
97
|
+
if (typeof code === 'string' && isLocaleCode(code))
|
|
98
|
+
allowed.add(code);
|
|
99
|
+
}
|
|
100
|
+
return allowed;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Normalize, then keep the code only if this instance publishes it.
|
|
104
|
+
* zh-TW may fall back to zh. zh never falls back to zh-TW. ja has no fallback.
|
|
105
|
+
* This does not apply the "default to en" rule.
|
|
106
|
+
*/
|
|
107
|
+
export function matchLocale(tag, enabled) {
|
|
108
|
+
const normalized = normalizeToLocale(tag);
|
|
109
|
+
if (!normalized)
|
|
110
|
+
return undefined;
|
|
111
|
+
const allowed = toEnabledSet(enabled);
|
|
112
|
+
if (allowed.has(normalized))
|
|
113
|
+
return normalized;
|
|
114
|
+
if (normalized === 'zh-TW' && allowed.has('zh'))
|
|
115
|
+
return 'zh';
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
/** Missing q means 1. An unparsable q drops that range. q=0 is not acceptable. */
|
|
119
|
+
function readQuality(params) {
|
|
120
|
+
let q = 1;
|
|
121
|
+
for (const param of params) {
|
|
122
|
+
const match = /^q\s*=\s*(\S*)$/i.exec(param.trim());
|
|
123
|
+
if (!match)
|
|
124
|
+
continue;
|
|
125
|
+
const raw = match[1] ?? '';
|
|
126
|
+
if (!/^(?:0(?:\.\d{1,3})?|1(?:\.0{1,3})?)$/.test(raw))
|
|
127
|
+
return undefined;
|
|
128
|
+
q = Number(raw);
|
|
129
|
+
}
|
|
130
|
+
return q;
|
|
131
|
+
}
|
|
132
|
+
function parseAcceptLanguage(header) {
|
|
133
|
+
const ranges = [];
|
|
134
|
+
const parts = header.split(',');
|
|
135
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
136
|
+
const part = parts[index]?.trim();
|
|
137
|
+
if (!part)
|
|
138
|
+
continue;
|
|
139
|
+
const [rawTag, ...params] = part.split(';');
|
|
140
|
+
const tag = rawTag?.trim();
|
|
141
|
+
if (!tag || tag === '*')
|
|
142
|
+
continue;
|
|
143
|
+
const q = readQuality(params);
|
|
144
|
+
// RFC 9110: q=0 means not acceptable, so it must not match or fall back.
|
|
145
|
+
if (q === undefined || q === 0)
|
|
146
|
+
continue;
|
|
147
|
+
ranges.push({ tag, q, index });
|
|
148
|
+
}
|
|
149
|
+
// Equal q keeps source order. The index tie-break does not rely on sort stability.
|
|
150
|
+
ranges.sort((a, b) => b.q - a.q || a.index - b.index);
|
|
151
|
+
return ranges;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Try ranges from highest q to lowest. A tag that does not match does not
|
|
155
|
+
* stop the walk; a later lower-q tag may still match. Empty input matches nothing.
|
|
156
|
+
*/
|
|
157
|
+
export function matchAcceptLanguage(header, enabled) {
|
|
158
|
+
if (typeof header !== 'string' || header.trim() === '')
|
|
159
|
+
return undefined;
|
|
160
|
+
for (const range of parseAcceptLanguage(header)) {
|
|
161
|
+
const matched = matchLocale(range.tag, enabled);
|
|
162
|
+
if (matched)
|
|
163
|
+
return matched;
|
|
164
|
+
}
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=locale-match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-match.js","sourceRoot":"","sources":["../src/locale-match.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,oFAAoF;AACpF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAU,CAAC;AAIjE,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;AAEnE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;IAC/C,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;IAClD,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;CACuC,CAAC;AAErF,qEAAqE;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,IAAI,CAA0C,CAAC;AAE7F,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,IAAI,EAAE;SACN,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,WAAW,EAAE;SACb,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CACrB,OAA0B;IAE1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAA0B,CAAC;IAC/B,IAAI,MAA0B,CAAC;IAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,SAAS,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,GAAG,SAAS,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,SAAS,GACb,OAAO,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,SAAS;YAAE,MAAM;QACtB,UAAU,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,sEAAsE;QACtE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;IAC7D,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAExC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAC1E,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,MAAM,IAAI,UAAU;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,OAA8B;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAA8B;IACrE,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,UAAU,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,kFAAkF;AAClF,SAAS,WAAW,CAAC,MAAyB;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACxE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG;YAAE,SAAS;QAClC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9B,yEAAyE;QACzE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,mFAAmF;IACnF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAA8B;IAChF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACzE,KAAK,MAAM,KAAK,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -18,6 +18,7 @@ declare class BlockletHeaderElement extends _Base {
|
|
|
18
18
|
private get userUrl();
|
|
19
19
|
private get teamUrl();
|
|
20
20
|
private get billingUrl();
|
|
21
|
+
/** Exact internal code. `zh-TW` is not `zh`; unknown values, including `zh-CN`, are `en`. */
|
|
21
22
|
private get locale();
|
|
22
23
|
private t;
|
|
23
24
|
private get navItems();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-element.d.ts","sourceRoot":"","sources":["../../src/ui/header-element.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,KAAK;;;CAAiG,CAAC;
|
|
1
|
+
{"version":3,"file":"header-element.d.ts","sourceRoot":"","sources":["../../src/ui/header-element.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,KAAK;;;CAAiG,CAAC;AAoJ7G,cAAM,qBAAsB,SAAQ,KAAK;IACvC,MAAM,CAAC,kBAAkB,WAAgH;IAEzI,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAyG;IACtH,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAqC;;IAOxD,iBAAiB;IASjB,oBAAoB;IAIpB,wBAAwB;IAExB,OAAO,KAAK,OAAO,GAAkD;IACrE,OAAO,KAAK,OAAO,GAAoF;IACvG,OAAO,KAAK,QAAQ,GAA6E;IACjG,OAAO,KAAK,OAAO,GAA2E;IAC9F,OAAO,KAAK,OAAO,GAA4E;IAC/F,OAAO,KAAK,UAAU,GAAqD;IAC3E,6FAA6F;IAC7F,OAAO,KAAK,MAAM,GAGjB;IACD,OAAO,CAAC,CAAC;IACT,OAAO,KAAK,QAAQ,GAInB;YAEa,YAAY;IAY1B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAKrB,MAAM;CAmFP;AAMD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -27,6 +27,22 @@ const HEADER_I18N = {
|
|
|
27
27
|
signOut: '退出登录',
|
|
28
28
|
signIn: '登录',
|
|
29
29
|
},
|
|
30
|
+
'zh-TW': {
|
|
31
|
+
home: '首頁',
|
|
32
|
+
userCenter: '個人中心',
|
|
33
|
+
adminConsole: '管理主控台',
|
|
34
|
+
billing: '帳單',
|
|
35
|
+
signOut: '登出',
|
|
36
|
+
signIn: '登入',
|
|
37
|
+
},
|
|
38
|
+
ja: {
|
|
39
|
+
home: 'ホーム',
|
|
40
|
+
userCenter: 'ユーザーセンター',
|
|
41
|
+
adminConsole: '管理コンソール',
|
|
42
|
+
billing: '請求',
|
|
43
|
+
signOut: 'ログアウト',
|
|
44
|
+
signIn: 'ログイン',
|
|
45
|
+
},
|
|
30
46
|
};
|
|
31
47
|
// ── Styles ───────────────────────────────────────────────────────────────────
|
|
32
48
|
const STYLES = /* css */ `
|
|
@@ -160,7 +176,11 @@ class BlockletHeaderElement extends _Base {
|
|
|
160
176
|
get userUrl() { return this.getAttribute('user-url') || '/.well-known/service/user'; }
|
|
161
177
|
get teamUrl() { return this.getAttribute('team-url') || '/.well-known/service/admin'; }
|
|
162
178
|
get billingUrl() { return this.getAttribute('billing-url') || ''; }
|
|
163
|
-
|
|
179
|
+
/** Exact internal code. `zh-TW` is not `zh`; unknown values, including `zh-CN`, are `en`. */
|
|
180
|
+
get locale() {
|
|
181
|
+
const value = this.getAttribute('locale');
|
|
182
|
+
return value && HEADER_I18N[value] ? value : 'en';
|
|
183
|
+
}
|
|
164
184
|
t(key) { return HEADER_I18N[this.locale][key] ?? HEADER_I18N.en[key] ?? key; }
|
|
165
185
|
get navItems() {
|
|
166
186
|
const raw = this.getAttribute('nav-items');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-element.js","sourceRoot":"","sources":["../../src/ui/header-element.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"header-element.js","sourceRoot":"","sources":["../../src/ui/header-element.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/i18n.d.ts
CHANGED
|
@@ -9,7 +9,8 @@ export declare const SUPPORTED_LOCALES: Array<{
|
|
|
9
9
|
/**
|
|
10
10
|
* Get a translated message with optional interpolation.
|
|
11
11
|
* Supports `{param}` placeholders: `t('signInTo', 'en', { appName: 'MyApp' })` → "Sign in to MyApp"
|
|
12
|
-
*
|
|
12
|
+
* Looks up the internal code exactly (`zh-TW` is not `zh`).
|
|
13
|
+
* Falls back to 'en' for an unknown locale, returns `key` if the key is unknown.
|
|
13
14
|
*/
|
|
14
15
|
export declare function t(key: string, locale?: string, params?: Record<string, string>): string;
|
|
15
16
|
//# sourceMappingURL=i18n.d.ts.map
|
package/dist/ui/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/ui/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/ui/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqNH,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CASvF"}
|