@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 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';
@@ -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;AACtD,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"}
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":"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"}
@@ -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;AAoI7G,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,OAAO,KAAK,MAAM,GAAiE;IACnF,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"}
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
- get locale() { return this.getAttribute('locale') === 'zh' ? 'zh' : 'en'; }
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":"AAAA,qFAAqF;AACrF,8FAA8F;AAC9F,mFAAmF;AAEnF,MAAM,KAAK,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE;CAA0C,CAAC;AAE7G,gFAAgF;AAChF,MAAM,SAAS,GAAG,mMAAmM,CAAC;AACtN,MAAM,WAAW,GAAG,oMAAoM,CAAC;AACzN,MAAM,YAAY,GAAG,mMAAmM,CAAC;AACzN,MAAM,cAAc,GAAG,0IAA0I,CAAC;AAClK,MAAM,YAAY,GAAG,qIAAqI,CAAC;AAE3J,gFAAgF;AAChF,MAAM,WAAW,GAA2C;IAC1D,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,SAAS;KAClB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,IAAI;KACb;IACD,OAAO,EAAE;QACP,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,OAAO;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;KACb;IACD,EAAE,EAAE;QACF,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,MAAM;KACf;CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGxB,CAAC;AAEF,gFAAgF;AAChF,MAAM,qBAAsB,SAAQ,KAAK;IACvC,MAAM,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEjI,MAAM,CAAc;IACpB,KAAK,GAAoG,IAAI,CAAC;IAC9G,aAAa,GAAG,KAAK,CAAC;IACtB,WAAW,GAAgC,IAAI,CAAC;IAExD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;gBAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACpE,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,WAAW;YAAE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAChF,CAAC;IAED,wBAAwB,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7C,IAAY,OAAO,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,IAAY,OAAO,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,oCAAoC,CAAC,CAAC,CAAC;IACvG,IAAY,QAAQ,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC;IACjG,IAAY,OAAO,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC;IAC9F,IAAY,OAAO,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC;IAC/F,IAAY,UAAU,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,6FAA6F;IAC7F,IAAY,MAAM;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IACO,CAAC,CAAC,GAAW,IAAY,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,EAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACxG,IAAY,QAAQ;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,sCAAsC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5F,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO;YACpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACnC,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,EAAE;YAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,cAAc,CAAC,CAAQ;QAC7B,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,EAAE;YAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;YAAE,OAAO,GAAG,CAAC;QACjC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;QAEnE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;UAE3B,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvF,OAAO,qBAAqB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,MAAM,CAAC;QACjG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;KAEd,CAAC,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;eACb,MAAM;;;YAGT,IAAI,CAAC,CAAC,CAAC,0BAA0B,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;wBAC3C,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAClC,OAAO;;;YAGP,IAAI,CAAC,CAAC,CAAC;;;kBAGD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,SAAS;;;;;;kDAM/B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;2CACxE,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,IAAI,QAAQ;;iEAEzB,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;gBACrF,SAAS,CAAC,CAAC,CAAC,6CAA6C,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC9G,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,4PAA4P,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;kEAE1P,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;;WAEvF,CAAC,CAAC,CAAC;uDACyC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;WAC5D;;;KAGN,CAAC;QAEF,cAAc;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,OAAO;YAAE,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,QAAQ;YAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAElG,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5H,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACtE,IAAI,cAAc;YAAE,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7G,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,QAAQ;YAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjG,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC/D,IAAI,WAAW;YAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1G,gEAAgE;QAChE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACvD,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE;gBACxC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAI,EAAwB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAC9C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;oBACvC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AAGH,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACpF,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
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
- * Falls back to 'en' for unknown locale, returns `key` if key is unknown.
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
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/ui/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6GH,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGpE,CAAC;AAEF;;;;GAIG;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"}
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"}