@clize/clize 0.32.0 → 0.34.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.
Files changed (116) hide show
  1. package/README.md +20 -18
  2. package/dist/cli.js +487 -374
  3. package/dist/cli.js.map +1 -1
  4. package/dist/core/addresses.js +12 -11
  5. package/dist/core/addresses.js.map +1 -1
  6. package/dist/core/analytics.js +6 -5
  7. package/dist/core/analytics.js.map +1 -1
  8. package/dist/core/authz.js +6 -5
  9. package/dist/core/authz.js.map +1 -1
  10. package/dist/core/billing.js +83 -12
  11. package/dist/core/billing.js.map +1 -1
  12. package/dist/core/credentials.js +3 -1
  13. package/dist/core/credentials.js.map +1 -1
  14. package/dist/core/dns.js +3 -2
  15. package/dist/core/dns.js.map +1 -1
  16. package/dist/core/domain-health.js +74 -50
  17. package/dist/core/domain-health.js.map +1 -1
  18. package/dist/core/domains.js +74 -44
  19. package/dist/core/domains.js.map +1 -1
  20. package/dist/core/email-tx.js +8 -6
  21. package/dist/core/email-tx.js.map +1 -1
  22. package/dist/core/email.js +13 -12
  23. package/dist/core/email.js.map +1 -1
  24. package/dist/core/env-detect.js +7 -14
  25. package/dist/core/env-detect.js.map +1 -1
  26. package/dist/core/handle.js +33 -30
  27. package/dist/core/handle.js.map +1 -1
  28. package/dist/core/install.js +132 -59
  29. package/dist/core/install.js.map +1 -1
  30. package/dist/core/media.js +37 -36
  31. package/dist/core/media.js.map +1 -1
  32. package/dist/core/payments.js +5 -4
  33. package/dist/core/payments.js.map +1 -1
  34. package/dist/core/projects.js +38 -26
  35. package/dist/core/projects.js.map +1 -1
  36. package/dist/core/redirect.js +4 -3
  37. package/dist/core/redirect.js.map +1 -1
  38. package/dist/core/seo-classify.js +41 -1
  39. package/dist/core/seo-classify.js.map +1 -1
  40. package/dist/core/seo-pages.js +214 -0
  41. package/dist/core/seo-pages.js.map +1 -0
  42. package/dist/core/seo.js +147 -11
  43. package/dist/core/seo.js.map +1 -1
  44. package/dist/core/serve.js +2 -1
  45. package/dist/core/serve.js.map +1 -1
  46. package/dist/core/setup.js +11 -9
  47. package/dist/core/setup.js.map +1 -1
  48. package/dist/core/shop.js +17 -16
  49. package/dist/core/shop.js.map +1 -1
  50. package/dist/core/site.js +2 -1
  51. package/dist/core/site.js.map +1 -1
  52. package/dist/core/sites.js +41 -40
  53. package/dist/core/sites.js.map +1 -1
  54. package/dist/core/triage.js +39 -5
  55. package/dist/core/triage.js.map +1 -1
  56. package/dist/core/video.js +45 -43
  57. package/dist/core/video.js.map +1 -1
  58. package/dist/github.js +4 -3
  59. package/dist/github.js.map +1 -1
  60. package/dist/i18n/t.js +65 -0
  61. package/dist/i18n/t.js.map +1 -0
  62. package/dist/i18n/zh.js +1266 -0
  63. package/dist/i18n/zh.js.map +1 -0
  64. package/dist/index.js +61 -40
  65. package/dist/index.js.map +1 -1
  66. package/dist/lib/cloudflare.js +8 -7
  67. package/dist/lib/cloudflare.js.map +1 -1
  68. package/dist/lib/crypto.js +2 -1
  69. package/dist/lib/crypto.js.map +1 -1
  70. package/dist/lib/vercel.js +2 -1
  71. package/dist/lib/vercel.js.map +1 -1
  72. package/dist/lib/zone.js +2 -1
  73. package/dist/lib/zone.js.map +1 -1
  74. package/dist/mcp-profiles.js +5 -1
  75. package/dist/mcp-profiles.js.map +1 -1
  76. package/dist/providers/deploy/cloudflare.js +3 -2
  77. package/dist/providers/deploy/cloudflare.js.map +1 -1
  78. package/dist/providers/email/cloudflare-inbound.js +4 -3
  79. package/dist/providers/email/cloudflare-inbound.js.map +1 -1
  80. package/dist/providers/email/cloudflare-outbound.js +2 -1
  81. package/dist/providers/email/cloudflare-outbound.js.map +1 -1
  82. package/dist/providers/email/resend.js +3 -2
  83. package/dist/providers/email/resend.js.map +1 -1
  84. package/dist/providers/email/ses.js +3 -2
  85. package/dist/providers/email/ses.js.map +1 -1
  86. package/dist/providers/index.js +3 -2
  87. package/dist/providers/index.js.map +1 -1
  88. package/dist/providers/media/google.js +10 -9
  89. package/dist/providers/media/google.js.map +1 -1
  90. package/dist/providers/media/kie.js +12 -11
  91. package/dist/providers/media/kie.js.map +1 -1
  92. package/dist/providers/media/kunavo.js +10 -9
  93. package/dist/providers/media/kunavo.js.map +1 -1
  94. package/dist/providers/media/openai.js +5 -4
  95. package/dist/providers/media/openai.js.map +1 -1
  96. package/dist/providers/media/suno.js +7 -6
  97. package/dist/providers/media/suno.js.map +1 -1
  98. package/dist/providers/registrar/routing.js +2 -1
  99. package/dist/providers/registrar/routing.js.map +1 -1
  100. package/dist/providers/registrar/vercel.js +2 -1
  101. package/dist/providers/registrar/vercel.js.map +1 -1
  102. package/dist/providers/seo/dataforseo.js +5 -4
  103. package/dist/providers/seo/dataforseo.js.map +1 -1
  104. package/dist/providers/seo/gsc.js +31 -4
  105. package/dist/providers/seo/gsc.js.map +1 -1
  106. package/dist/remote.js +25 -22
  107. package/dist/remote.js.map +1 -1
  108. package/dist/selfcheck.js +23 -22
  109. package/dist/selfcheck.js.map +1 -1
  110. package/dist/state/file-store.js +17 -16
  111. package/dist/state/file-store.js.map +1 -1
  112. package/package.json +4 -3
  113. package/skills/clize/SKILL.md +171 -143
  114. package/skills/clize-seo/SKILL.md +290 -187
  115. package/skills/clize-site-build/SKILL.md +97 -41
  116. package/skills/clize-site-debug/SKILL.md +73 -45
@@ -1,15 +1,83 @@
1
1
  /** 含加价的对客收费额(成本价 × (1 + markup),保留两位)。 */
2
+ import { t } from "../i18n/t.js";
2
3
  export function chargedAmount(ctx, costUsd) {
3
4
  return Math.round(costUsd * (1 + ctx.platform.billing.markupPct) * 100) / 100;
4
5
  }
6
+ /** 全租户本月已花(口径见 spendBreakdown 上方注释:有 ledger 就读 ledger,没有才落回 audit.cost)。
7
+ * `status` 的 spentThisMonthUsd 与月度上限闸共用它 —— 显示的数字和拦人的数字必须是同一个,
8
+ * 否则用户看着「本月花了 $6」却在 $10 的上限上被放行到 $16。 */
9
+ export async function monthSpentUsd(ctx) {
10
+ if (ctx.store.spendThisMonthByAction) {
11
+ const rows = await ctx.store.spendThisMonthByAction(ctx.tenantId).catch(() => undefined);
12
+ if (rows)
13
+ return spendBreakdown(rows).monthUsd;
14
+ }
15
+ return ctx.store.spentThisMonth(ctx.tenantId);
16
+ }
5
17
  /** 月度开销上限(按租户,口径=用户实付额):超限抛错。
6
- * 所有花钱路径(域名注册 / 媒体生成)在扣费前都必须过这道闸 —— 不是只有域名。 */
18
+ * 所有花钱路径(域名注册 / 媒体生成)在扣费前都必须过这道闸 —— 不是只有域名。
19
+ * 未设上限时直接返回,不产生任何查询(高频路径别为一个 null 付一次 D1 往返)。 */
7
20
  export async function checkMonthlySpendLimit(ctx, userCostUsd) {
8
21
  if (ctx.tenant.monthlySpendLimitUsd == null || userCostUsd == null)
9
22
  return;
10
- const already = await ctx.store.spentThisMonth(ctx.tenantId);
23
+ const already = await monthSpentUsd(ctx);
11
24
  if (already + userCostUsd > ctx.tenant.monthlySpendLimitUsd)
12
- throw new Error(`超出月度开销上限:本月已花 $${already.toFixed(2)},本次需 $${userCostUsd.toFixed(2)},上限 $${ctx.tenant.monthlySpendLimitUsd}。可调整 MONTHLY_SPEND_LIMIT_USD。`);
25
+ throw new Error(t `Monthly spend limit exceeded: $${already.toFixed(2)} spent this month, $${userCostUsd.toFixed(2)} needed now, limit $${ctx.tenant.monthlySpendLimitUsd}. Adjust MONTHLY_SPEND_LIMIT_USD.`);
26
+ }
27
+ const SPEND_CATEGORIES = [
28
+ { key: "domains", label: "Domains", match: (a) => a.startsWith("domain") },
29
+ { key: "media", label: "Media generation", match: (a) => a.startsWith("gen_") },
30
+ { key: "seo", label: "SEO queries", match: (a) => a === "seo" || a.startsWith("seo_") },
31
+ { key: "storage", label: "Site storage", match: (a) => a === "storage" },
32
+ // 退给买家的钱确实从余额走了,进得来构成;但它不是 clize 的服务费,得单独标清楚。
33
+ { key: "shop", label: "Order refunds", match: (a) => a.startsWith("shop") },
34
+ { key: "other", label: "Other", match: () => true },
35
+ ];
36
+ /** 这条 credit 是退款(抵扣某类花费),还是进账(充值 / 代收货款,根本不是花费)? */
37
+ function isRefundAction(action) {
38
+ return action === "refund" || action.endsWith("_refund");
39
+ }
40
+ /** 退款 action → 它抵扣的原始 action(gen_image_refund → gen_image;裸 refund 归域名,只有注册失败会开)。 */
41
+ function refundBase(action) {
42
+ if (action === "refund")
43
+ return "domain_register";
44
+ return action.replace(/_refund$/, "");
45
+ }
46
+ /** 纯函数:ledger 月度分组 → 分类构成。
47
+ * **非退款的 credit 一律剔除**(充值 recharge / 代收货款 collect / 日后任何新进账)——
48
+ * 按「是不是退款」判而不是列一张进账名单:漏一个进账就会被当成退款去冲减花费,把总数做小。 */
49
+ export function spendBreakdown(rows) {
50
+ const acc = new Map();
51
+ for (const r of rows) {
52
+ if (r.kind === "credit" && !isRefundAction(r.action))
53
+ continue; // 进账不是花费
54
+ const base = r.kind === "credit" ? refundBase(r.action) : r.action;
55
+ const cat = SPEND_CATEGORIES.find((c) => c.match(base));
56
+ const cur = acc.get(cat.key) ?? { usd: 0, n: 0, actions: new Set() };
57
+ cur.usd += r.kind === "credit" ? -r.usd : r.usd;
58
+ cur.n += r.kind === "credit" ? 0 : r.n; // 笔数只数出账,退款不算「花了一笔」
59
+ cur.actions.add(r.action);
60
+ acc.set(cat.key, cur);
61
+ }
62
+ const byCategory = SPEND_CATEGORIES.filter((c) => acc.has(c.key))
63
+ .map((c) => {
64
+ const v = acc.get(c.key);
65
+ // label 在输出时翻译(表是模块常量,worker 上模块作用域不能调 t(),见 i18n/t.ts 头注释)
66
+ return { key: c.key, label: t(c.label), usd: Math.round(v.usd * 100) / 100, n: v.n, actions: [...v.actions].sort() };
67
+ })
68
+ .filter((c) => c.usd !== 0 || c.n > 0)
69
+ .sort((a, b) => b.usd - a.usd);
70
+ return {
71
+ monthUsd: Math.round(byCategory.reduce((s, c) => s + c.usd, 0) * 100) / 100,
72
+ byCategory,
73
+ };
74
+ }
75
+ /** 本月花费构成(托管;store 无 ledger 汇总能力 → undefined,字段整个不出现)。 */
76
+ export async function monthSpend(ctx) {
77
+ if (!ctx.store.spendThisMonthByAction)
78
+ return undefined;
79
+ const rows = await ctx.store.spendThisMonthByAction(ctx.tenantId).catch(() => undefined);
80
+ return rows ? spendBreakdown(rows) : undefined;
13
81
  }
14
82
  /** 查余额 + 最近流水(无地址参数:整租户)。 */
15
83
  export async function balance(ctx) {
@@ -22,20 +90,23 @@ export async function balance(ctx) {
22
90
  return {
23
91
  mode: "self-host",
24
92
  clizeBalance: "n/a",
25
- message: "本地自带-CF 模式没有 clize 余额:域名 / 部署 / 媒体的费用直接走你自己的 Cloudflare 与模型账户。" +
26
- "想看花了多少 → `clize audit`(逐笔) `clize status`(本月开销);" +
27
- "想用 clize 代付 + 预付余额 → `clize login` 切到托管模式。",
93
+ message: t("The local bring-your-own-Cloudflare mode has no clize balance: domain / deploy / media costs go straight to your own Cloudflare and model accounts.") +
94
+ t("To see what was spent → `clize audit` (per item) or `clize status` (this month);") +
95
+ t("to let clize pay with a prepaid balance → `clize login` switches to hosted mode."),
28
96
  };
29
97
  // ── 以下仅托管模式 ──
30
- const ledger = await ctx.store.listLedger(ctx.tenantId, 20);
31
- const t = await ctx.store.getTenant(ctx.tenantId);
98
+ const [ledger, tenant, spend] = await Promise.all([
99
+ ctx.store.listLedger(ctx.tenantId, 20),
100
+ ctx.store.getTenant(ctx.tenantId),
101
+ monthSpend(ctx),
102
+ ]);
32
103
  const autopay = {
33
- enabled: !!t?.autoRechargeEnabled,
34
- amountUsd: t?.autoRechargeAmountUsd ?? ctx.platform.billing.minRechargeUsd,
104
+ enabled: !!tenant?.autoRechargeEnabled,
105
+ amountUsd: tenant?.autoRechargeAmountUsd ?? ctx.platform.billing.minRechargeUsd,
35
106
  minRechargeUsd: ctx.platform.billing.minRechargeUsd,
36
- card: t?.defaultPaymentMethodId ? { brand: t.cardBrand, last4: t.cardLast4 } : null,
107
+ card: tenant?.defaultPaymentMethodId ? { brand: tenant.cardBrand, last4: tenant.cardLast4 } : null,
37
108
  };
38
109
  // 注意:绝不返回 markupPct / 成本 —— 那是内部毛利,不给用户看。只给余额 + 流水 + 自动续充状态。
39
- return { mode: "hosted", balanceUsd: bal, billing: "active", autopay, ledger };
110
+ return { mode: "hosted", balanceUsd: bal, billing: "active", autopay, ...(spend ? { spend } : {}), ledger };
40
111
  }
41
112
  //# sourceMappingURL=billing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/core/billing.ts"],"names":[],"mappings":"AAQA,0CAA0C;AAC1C,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,OAAe;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAChF,CAAC;AAED;gDACgD;AAChD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAY,EACZ,WAAsC;IAEtC,IAAI,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO;IAC3E,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB;QACzD,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAC9D,CAAC,CACF,QAAQ,GAAG,CAAC,MAAM,CAAC,oBAAoB,+BAA+B,CACxE,CAAC;AACN,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAY;IACxC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExD,mDAAmD;IACnD,+DAA+D;IAC/D,4DAA4D;IAC5D,+CAA+C;IAC/C,IAAI,GAAG,KAAK,IAAI;QACd,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,KAAK;YACnB,OAAO,EACL,gEAAgE;gBAChE,mDAAmD;gBACnD,4CAA4C;SAC/C,CAAC;IAEJ,gBAAgB;IAChB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB;QACjC,SAAS,EAAE,CAAC,EAAE,qBAAqB,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc;QAC1E,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc;QACnD,IAAI,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;KACpF,CAAC;IACF,6DAA6D;IAC7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/core/billing.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { encryptSecret, decryptSecret, hasEncryptionKey } from "../lib/crypto.js";
2
+ /** 解密后的租户自带凭证(明文,只在内存里短暂存在,传给 createCloudContext)。 */
3
+ import { t } from "../i18n/t.js";
2
4
  /** 取租户 BYO 凭证并解密 token(供 createCloudContext)。无密钥 / 未配 → 不带 token(回退平台代付)。 */
3
5
  export async function loadTenantByoCreds(store, tenantId, encKey) {
4
6
  const raw = await store.getTenantByo(tenantId);
@@ -15,7 +17,7 @@ export async function loadTenantByoCreds(store, tenantId, encKey) {
15
17
  /** 保存租户 BYO 凭证(token 加密存;传 null 清除该项,undefined 不动)。需配 BYO_ENCRYPTION_KEY。 */
16
18
  export async function saveTenantByoCreds(store, tenantId, encKey, patch) {
17
19
  if (!hasEncryptionKey(encKey))
18
- throw new Error("服务端未配置 BYO_ENCRYPTION_KEY,无法安全存储自带凭证(openssl rand -base64 32)");
20
+ throw new Error(t("The server has no BYO_ENCRYPTION_KEY; bring-your-own credentials cannot be stored safely (openssl rand -base64 32)"));
19
21
  const sp = {};
20
22
  if (patch.cfToken !== undefined)
21
23
  sp.cfTokenEnc = patch.cfToken === null ? null : await encryptSecret(patch.cfToken, encKey);
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAUlF,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAiB,EACjB,QAAgB,EAChB,MAA0B;IAE1B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAa,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IACvF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,kCAAkC;IAC7E,kDAAkD;IAClD,IAAI,GAAG,CAAC,UAAU;QAAE,GAAG,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACrG,IAAI,GAAG,CAAC,cAAc;QACpB,GAAG,CAAC,WAAW,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAiB,EACjB,QAAgB,EAChB,MAA0B,EAC1B,KAKC;IAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,MAAM,EAAE,GAAmB,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAC7B,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7F,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACxE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QACjC,EAAE,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzG,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC3E,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/core/credentials.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAElF,sDAAsD;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAQjC,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAiB,EACjB,QAAgB,EAChB,MAA0B;IAE1B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAa,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IACvF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,kCAAkC;IAC7E,kDAAkD;IAClD,IAAI,GAAG,CAAC,UAAU;QAAE,GAAG,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACrG,IAAI,GAAG,CAAC,cAAc;QACpB,GAAG,CAAC,WAAW,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAiB,EACjB,QAAgB,EAChB,MAA0B,EAC1B,KAKC;IAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,oHAAoH,CAAC,CAAC,CAAC;IAC3I,MAAM,EAAE,GAAmB,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAC7B,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7F,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACxE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QACjC,EAAE,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzG,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC3E,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC"}
package/dist/core/dns.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { resolveZone } from "../lib/zone.js";
2
+ import { t } from "../i18n/t.js";
2
3
  export async function setDns(ctx, domain, record) {
3
4
  const zoneId = await resolveZone(ctx, domain);
4
5
  const saved = await ctx.providers.dns.setRecord(zoneId, record);
@@ -28,9 +29,9 @@ export async function removeDns(ctx, domain, type, name) {
28
29
  name,
29
30
  removed,
30
31
  ...(removed && sensitive
31
- ? { caution: `已删 ${type.toUpperCase()} 记录 —— 若它是 clize 配的邮箱/验证/委派记录,相关功能会受影响。` }
32
+ ? { caution: t `Deleted the ${type.toUpperCase()} record if clize set it for email / verification / delegation, the related feature is affected.` }
32
33
  : {}),
33
- ...(removed ? {} : { message: "没有匹配的记录(可能已删或 type/name 不符)" }),
34
+ ...(removed ? {} : { message: t("No matching record (already deleted, or type/name differ).") }),
34
35
  };
35
36
  }
36
37
  //# sourceMappingURL=dns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../src/core/dns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAY,EAAE,MAAc,EAAE,MAAiB;IAC1E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,GAAG,CAAC,KAAK;SACZ,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;QACzB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;KACzD,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAY,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAY,EACZ,MAAc,EACd,IAAY,EACZ,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3F,MAAM,GAAG,CAAC,KAAK;SACZ,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;SAC5F,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,OAAO;QACL,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;QACxB,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,OAAO,IAAI,SAAS;YACtB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,yCAAyC,EAAE;YAChF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../src/core/dns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAY,EAAE,MAAc,EAAE,MAAiB;IAC1E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,GAAG,CAAC,KAAK;SACZ,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;QACzB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;KACzD,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAY,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAY,EACZ,MAAc,EACd,IAAY,EACZ,IAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3F,MAAM,GAAG,CAAC,KAAK;SACZ,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;SAC5F,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,OAAO;QACL,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;QACxB,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,OAAO,IAAI,SAAS;YACtB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA,eAAe,IAAI,CAAC,WAAW,EAAE,mGAAmG,EAAE;YACpJ,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,4DAA4D,CAAC,EAAE,CAAC;KACjG,CAAC;AACJ,CAAC"}
@@ -10,6 +10,7 @@
10
10
  // (四层体检:委派 → zone → worker 绑定 → 站点内容)。
11
11
  // ============================================================
12
12
  /** 平台 handle 根域(<slug>.clize.app):其委派由平台 zone 保证,不参与逐域探测。 */
13
+ import { t } from "../i18n/t.js";
13
14
  const HANDLE_ROOT = globalThis
14
15
  .process?.env?.CLIZE_HANDLE_ROOT || "clize.app";
15
16
  /** host 是否平台子域(handle):x.clize.app / clize.app 本体。 */
@@ -44,16 +45,38 @@ async function dohResolve(name, type) {
44
45
  }
45
46
  }
46
47
  const CF_NS_RE = /\.ns\.cloudflare\.com\.?$/i;
48
+ /**
49
+ * 平台子域(handle)探测:apex 是平台自己的 zone,NS 委派必在 CF —— 省掉那次 NS 查询。
50
+ * 但 **A 解析照查**:委派保证的是「clize.app 这个 zone 归 CF 管」,不保证「x.clize.app 有记录」。
51
+ * 免费 handle 共享一个 zone、撞过 200 条 DNS 上限(2026-08-27),记录是会没的;
52
+ * 从前这里直接写死 resolves:true —— 那和事故里 CF 的假 active 是同一种谎。
53
+ */
54
+ async function probePlatformHost(h, checkedAt) {
55
+ const a = await dohResolve(h, "A");
56
+ return {
57
+ host: h,
58
+ apex: apexOf(h),
59
+ delegation: "cloudflare",
60
+ nameservers: [],
61
+ resolves: (a.ans.Answer ?? []).some((r) => r.type === 1 || r.type === 5),
62
+ dnsStatus: a.ans.Status,
63
+ source: "platform-zone",
64
+ checkedAt,
65
+ };
66
+ }
47
67
  /**
48
68
  * 公网权威视角探测一个 host:apex 的 NS 委派指向 + host 的 A 解析。
49
69
  * 这是「域名对外是否活着」的唯一可信信号 —— CF zone status 是缓存(事故中全程假 active),
50
70
  * 注册商自家字段会说谎(事故中 Vercel 全程 verified=true)。
71
+ * 平台子域走 probePlatformHost(只查 A);分流在这里做,调用方一律 probeDelegation 即可。
51
72
  */
52
73
  export async function probeDelegation(host) {
53
74
  const h = host.toLowerCase();
54
75
  const apex = apexOf(h);
55
76
  const checkedAt = new Date().toISOString();
56
77
  try {
78
+ if (isPlatformHost(h))
79
+ return await probePlatformHost(h, checkedAt);
57
80
  const [ns, a] = await Promise.all([dohResolve(apex, "NS"), dohResolve(h, "A")]);
58
81
  const nsRecords = (ns.ans.Answer ?? [])
59
82
  .filter((r) => r.type === 2)
@@ -98,24 +121,31 @@ export function probeHealthy(p) {
98
121
  /**
99
122
  * 该域断链是否算「事故」(= 值得发告警)。
100
123
  *
124
+ * 按下列顺序判(顺序即优先级):
125
+ * · 平台子域:可达性是平台自己的责任,群发给租户是噪音 —— 不发信(状态照记,monitor 里看得到);
126
+ * · 有站点或邮箱:用户把承载物放在了 clize 上,断链就是真断线 —— 告警;
127
+ * · pending:接入 / 注册还没走完,DNS 本就可能没到位 —— 不告警(但上一条优先);
101
128
  * · registered:clize 是注册商,委派 / 续费是我方责任 —— 一律告警(6 月事故正是这一类);
102
- * · external + 有站点或邮箱:用户把承载物放在了 clize 上,断链就是真断线 —— 告警;
103
129
  * · external + 什么都没跑:NS 指向别处是域主的选择,不是故障 —— 只记录,不告警。
104
130
  *
131
+ * 承载物判定排在 status 之前(2026-09-01 改):本租户 4 个域卡在 pending,却已经部署了站点、
132
+ * 收着真实客户邮件(passfar.com / stowandsort.com 等)—— 旧序里 pending 短路在前,
133
+ * 等于给「正在营业的域」发了永久静音卡,与本模块「只要 clize 上有承载物就照常告警」的红线相反。
134
+ *
105
135
  * 注意「有承载物」按历史记录判定:站点部署过、邮箱开过就算 —— 承载物还在、委派没了,
106
136
  * 正是最该报的形态;要彻底停掉某个域的告警,是把它从 clize 摘掉(domain remove),
107
137
  * 而不是靠巡检去猜用户的意图。
108
138
  */
109
- export function alertScope(t) {
110
- if (isPlatformHost(t.domain))
111
- return { alertable: false, why: "平台子域,委派由平台 zone 保证" };
112
- if (t.status === "pending")
113
- return { alertable: false, why: "接入 / 注册未完成" };
114
- if (t.status === "registered")
115
- return { alertable: true, why: "clize 注册的域,委派是我方责任" };
116
- if (t.hasSite || t.hasEmail)
117
- return { alertable: true, why: `外部域,但 clize 上有${[t.hasSite ? "站点" : "", t.hasEmail ? "邮箱" : ""].filter(Boolean).join(" / ")}` };
118
- return { alertable: false, why: "外部域且 clize 上无站点 / 无邮箱 —— NS 指向别处是域主的选择,不是故障" };
139
+ export function alertScope(target) {
140
+ if (isPlatformHost(target.domain))
141
+ return { alertable: false, why: t("platform subdomain; delegation is guaranteed by the platform zone") };
142
+ if (target.hasSite || target.hasEmail)
143
+ return { alertable: true, why: t `clize is running ${[target.hasSite ? t("a site") : "", target.hasEmail ? t("a mailbox") : ""].filter(Boolean).join(" / ")} on it` };
144
+ if (target.status === "pending")
145
+ return { alertable: false, why: t("import / registration incomplete, and nothing runs on it in clize yet") };
146
+ if (target.status === "registered")
147
+ return { alertable: true, why: t("registered through clize; delegation is our responsibility") };
148
+ return { alertable: false, why: t("an external domain with no site / mailbox in clize — NS pointing elsewhere is the owner's choice, not a fault") };
119
149
  }
120
150
  /** 首次告警前的观察窗:连续两轮(30min 一轮)都异常才认,防 DoH 抖动。 */
121
151
  export const ALERT_MIN_FAILED_MS = 25 * 60_000;
@@ -139,10 +169,10 @@ export function shouldAlert(input) {
139
169
  if (!scope.alertable)
140
170
  return { alert: false, why: scope.why };
141
171
  if (input.failedMs < ALERT_MIN_FAILED_MS)
142
- return { alert: false, why: "异常不足两轮,先观察( DoH 抖动)" };
172
+ return { alert: false, why: t("fewer than two failed rounds; observing first (guards against DoH jitter)") };
143
173
  const need = alertIntervalMs(input.failedMs);
144
174
  if (input.sinceLastAlertMs < need)
145
- return { alert: false, why: `已在 ${Math.round(need / 3600_000)}h 提醒间隔内,不重复发` };
175
+ return { alert: false, why: t `within the ${Math.round(need / 3600_000)}h reminder interval; not sending again` };
146
176
  return { alert: true, why: scope.why };
147
177
  }
148
178
  /**
@@ -154,39 +184,33 @@ export async function checkDomainHealth(ctx, domain, opts = {}) {
154
184
  const d = domain.toLowerCase();
155
185
  const apex = apexOf(d);
156
186
  const advice = [];
157
- // ① 注册局委派(平台子域跳过:委派由平台 zone 保证)
187
+ // ① 注册局委派(平台子域:NS 由平台 zone 保证,跳过那次查询,但 A 解析照探 —— 见 probeDelegation)
158
188
  const platform = isPlatformHost(d);
159
- const probe = platform
160
- ? {
161
- host: d,
162
- apex,
163
- delegation: "cloudflare",
164
- nameservers: [],
165
- resolves: true,
166
- source: "platform-zone",
167
- checkedAt: new Date().toISOString(),
168
- }
169
- : await probeDelegation(d);
189
+ const probe = await probeDelegation(d);
170
190
  const delegationOk = probeHealthy(probe);
171
191
  let delegationNote;
172
192
  if (platform)
173
- delegationNote = `平台子域(${HANDLE_ROOT}),委派由平台保证`;
193
+ delegationNote = probe.resolves
194
+ ? t `platform subdomain (${HANDLE_ROOT}); delegation guaranteed by the platform, ${d} resolves normally`
195
+ : t `🔴 platform subdomain (${HANDLE_ROOT}) delegates correctly, but ${d} resolves no A/CNAME — the site binding or zone records are missing`;
174
196
  else if (probe.delegation === "cloudflare" && probe.resolves)
175
- delegationNote = `注册局 NS 委派在 Cloudflare(${probe.nameservers.join(", ")}),解析正常`;
197
+ delegationNote = t `registry NS delegation is on Cloudflare (${probe.nameservers.join(", ")}); resolves normally`;
176
198
  else if (probe.delegation === "cloudflare")
177
- delegationNote = `NS 委派在 Cloudflare,但 ${d} 解析不出 A/CNAME —— zone 里可能缺站点记录`;
199
+ delegationNote = t `NS delegation is on Cloudflare, but ${d} resolves no A/CNAME the zone may be missing the site records`;
178
200
  else if (probe.delegation === "elsewhere")
179
- delegationNote = `⚠️ 注册局 NS 指向 ${probe.nameservers.join(", ")}( Cloudflare)—— 站点与邮箱不会工作`;
201
+ delegationNote = t `⚠️ registry NS points at ${probe.nameservers.join(", ")} (not Cloudflare) — the site and mailboxes will not work`;
180
202
  else if (probe.delegation === "unresolved")
181
203
  delegationNote = probe.nxdomain
182
- ? `🔴 注册局对该域返回 NXDOMAIN(无委派记录,域名已被摘出 TLD zone)—— 2026-06 断链事故即此形态,通常是注册商侧委派推送故障或域名被 hold`
183
- : `🔴 权威侧查不到任何 NS 委派`;
204
+ ? t("🔴 the registry returns NXDOMAIN for the domain (no delegation record; it was dropped from the TLD zone) — the shape of the 2026-06 outage, usually a registrar-side delegation push failure or a domain hold")
205
+ : t("🔴 no NS delegation found at the authoritative side");
184
206
  else
185
- delegationNote = `探测失败(${probe.error ?? "DoH 不可达"}),稍后重试`;
207
+ delegationNote = t `probe failed (${probe.error ?? t("DoH unreachable")}); retry later`;
186
208
  if (probe.delegation === "elsewhere")
187
- advice.push(`把 NS 委派改回 Cloudflare:clize 注册域跑 \`clize domain ns ${apex} <CF 分配的 NS>\`(NS 值见 \`clize domain ns ${apex}\`);外部接入域到原注册商修改。`);
209
+ advice.push(t `Point the NS delegation back at Cloudflare: for a clize-registered domain run \`clize domain ns ${apex} <the NS Cloudflare assigned>\` (values from \`clize domain ns ${apex}\`); for an imported domain change it at the registrar.`);
188
210
  if (probe.delegation === "unresolved")
189
- advice.push(`先跑 \`clize domain ns ${apex} <CF NS>\` 重推委派;若几小时后仍 NXDOMAIN,是注册商侧故障(Vercel 注册域到 Vercel dashboard → Domains 重置 nameservers,或联系其支持)。`);
211
+ advice.push(t `Run \`clize domain ns ${apex} <CF NS>\` to push the delegation again; if it is still NXDOMAIN hours later it is a registrar-side fault (for Vercel-registered domains reset the nameservers under Vercel dashboard → Domains, or contact their support).`);
212
+ if (platform && !probe.resolves)
213
+ advice.push(t `Redeploy to restore the DNS records and site binding of ${d}: \`clize deploy <dir> --domain ${d}\`.`);
190
214
  // ② CF zone
191
215
  let zoneOk = false;
192
216
  let zoneStatus;
@@ -195,8 +219,8 @@ export async function checkDomainHealth(ctx, domain, opts = {}) {
195
219
  try {
196
220
  zoneId = platform ? await ctx.cf.findZoneId(HANDLE_ROOT) : await ctx.cf.findZoneId(apex);
197
221
  if (!zoneId) {
198
- zoneNote = `apex ${platform ? HANDLE_ROOT : apex} 不在 CF 账户( zone)`;
199
- advice.push(`跑 \`clize domain import ${apex}\` zone 接入。`);
222
+ zoneNote = t `apex ${platform ? HANDLE_ROOT : apex} is not in the CF account (no zone)`;
223
+ advice.push(t `Run \`clize domain import ${apex}\` to create the zone and add it.`);
200
224
  }
201
225
  else {
202
226
  const zone = await ctx.cf.getZone(zoneId);
@@ -204,16 +228,16 @@ export async function checkDomainHealth(ctx, domain, opts = {}) {
204
228
  zoneOk = zone.status === "active" && !(zone.paused);
205
229
  zoneNote = zoneOk
206
230
  ? `zone active`
207
- : `zone 状态 ${zone.status}${zone.paused ? "(paused)" : ""}`;
231
+ : t `zone status ${zone.status}${zone.paused ? "(paused)" : ""}`;
208
232
  if (!zoneOk)
209
- advice.push(`zone 未激活:确认 NS 已指向 CF 后跑 \`clize domain import ${apex}\` 推进激活。`);
233
+ advice.push(t `The zone is not active: once the NS points at CF, run \`clize domain import ${apex}\` to push activation.`);
210
234
  // 注意:zone active ≠ 域名可达 —— CF 的 NS 复核有缓存滞后(事故期间全程假 active)。
211
235
  if (zoneOk && !delegationOk && !platform)
212
- zoneNote += "(⚠️ 但公网委派异常 —— zone status CF 缓存,以第①层为准)";
236
+ zoneNote += t(" (⚠️ but public delegation is broken — the zone status is a CF cache; layer ① is authoritative)");
213
237
  }
214
238
  }
215
239
  catch (e) {
216
- zoneNote = `zone 查询失败:${e instanceof Error ? e.message : e}`;
240
+ zoneNote = t `zone lookup failed: ${e instanceof Error ? e.message : e}`;
217
241
  }
218
242
  // ③ host → 站点 worker 绑定(Workers Custom Domain)
219
243
  let bindingOk = false;
@@ -223,11 +247,11 @@ export async function checkDomainHealth(ctx, domain, opts = {}) {
223
247
  const hit = bindings.find((b) => b.hostname.toLowerCase() === d);
224
248
  bindingOk = !!hit;
225
249
  bindingNote = hit
226
- ? `已绑定到 worker ${hit.service}`
227
- : `未绑定站点 worker(deploy 会自动绑;只配邮箱不建站的域这层可忽略)`;
250
+ ? t `bound to worker ${hit.service}`
251
+ : t("not bound to the site worker (deploy binds it automatically; ignore this layer for email-only domains)");
228
252
  }
229
253
  catch (e) {
230
- bindingNote = `绑定查询失败:${e instanceof Error ? e.message : e}`;
254
+ bindingNote = t `binding lookup failed: ${e instanceof Error ? e.message : e}`;
231
255
  }
232
256
  // ④ 站点内容(KV 里有没有 index.html;需调用方注入 namespace id)
233
257
  let content;
@@ -242,21 +266,21 @@ export async function checkDomainHealth(ctx, domain, opts = {}) {
242
266
  }
243
267
  content = {
244
268
  ok: contentOk,
245
- note: contentOk ? "站点内容在(KV index.html)" : "KV index.html(未部署过站点?)",
269
+ note: contentOk ? t("site content present (index.html in KV)") : t("no index.html in KV (never deployed?)"),
246
270
  };
247
271
  if (!contentOk && bindingOk)
248
- advice.push(`域名已绑定但无内容:跑 \`clize deploy <目录> --domain ${d}\`。`);
272
+ advice.push(t `The domain is bound but has no content: run \`clize deploy <dir> --domain ${d}\`.`);
249
273
  }
250
274
  const healthy = delegationOk && zoneOk && (!bindingOk || !content || content.ok);
251
275
  const verdict = !delegationOk
252
276
  ? probe.delegation === "error"
253
- ? "探测失败(网络),稍后重试"
254
- : "🔴 对外不可达:注册局委派层故障(最底层,修这层)"
277
+ ? t("probe failed (network); retry later")
278
+ : t("🔴 unreachable from outside: registry delegation fault (the bottom layer; fix this one)")
255
279
  : !zoneOk
256
- ? "🟡 委派正常但 CF zone 未激活"
280
+ ? t("🟡 delegation fine but the CF zone is not active")
257
281
  : bindingOk && content && !content.ok
258
- ? "🟡 域名通、绑定在,但无站点内容"
259
- : "✅ 健康:委派 / zone / 绑定各层正常";
282
+ ? t("🟡 domain resolves and is bound, but has no site content")
283
+ : t("✅ healthy: delegation / zone / binding all fine");
260
284
  return {
261
285
  domain: d,
262
286
  apex,
@@ -1 +1 @@
1
- {"version":3,"file":"domain-health.js","sourceRoot":"","sources":["../../src/core/domain-health.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uBAAuB;AACvB,oDAAoD;AACpD,iEAAiE;AACjE,sCAAsC;AACtC,uDAAuD;AACvD,sCAAsC;AACtC,sCAAsC;AACtC,0DAA0D;AAC1D,wCAAwC;AACxC,+DAA+D;AAI/D,6DAA6D;AAC7D,MAAM,WAAW,GAAI,UAAyE;KAC3F,OAAO,EAAE,GAAG,EAAE,iBAAiB,IAAI,WAAW,CAAC;AAElD,sDAAsD;AACtD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AA+BD,uFAAuF;AACvF,KAAK,UAAU,QAAQ,CACrB,IAA6B,EAC7B,IAAY,EACZ,IAAgB;IAEhB,MAAM,GAAG,GACP,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,mCAAmC,kBAAkB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;QAC5E,CAAC,CAAC,6CAA6C,kBAAkB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,SAAS;QAC/E,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAc,CAAC;AACzC,CAAC;AAED,qDAAqD;AACrD,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,IAAgB;IAEhB,IAAI,CAAC;QACH,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACrF,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY;QAC7F,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;QACrC,MAAM,UAAU,GAAkC,QAAQ;YACxD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBACtB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvC,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,WAAW,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,CAAC;YACP,IAAI;YACJ,UAAU;YACV,WAAW,EAAE,SAAS;YACtB,QAAQ;YACR,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM;YACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,SAAS;SACV,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,CAAC;YACP,IAAI;YACJ,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,SAAS;SACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,OAAO,CAAC,CAAC,UAAU,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AAyBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,CAAc;IACvC,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC;IACrF,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;IAC3E,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC;IACrF,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ;QACzB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAClI,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,6CAA6C,EAAE,CAAC;AAClF,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ;QAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IACvD,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ;QAAE,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;IAC5D,OAAO,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;AAC3B,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,WAAW,CAAC,KAM3B;IACC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC9D,IAAI,KAAK,CAAC,QAAQ,GAAG,mBAAmB;QACtC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI;QAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAChF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AACzC,CAAC;AAgBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAY,EACZ,MAAc,EACd,OAAwD,EAAE;IAE1D,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAE;YACC,IAAI,EAAE,CAAC;YACP,IAAI;YACJ,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,eAAe;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAChB;QACvB,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,cAAsB,CAAC;IAC3B,IAAI,QAAQ;QAAE,cAAc,GAAG,QAAQ,WAAW,WAAW,CAAC;SACzD,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,IAAI,KAAK,CAAC,QAAQ;QAAE,cAAc,GAAG,yBAAyB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SACxI,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY;QAAE,cAAc,GAAG,uBAAuB,CAAC,gCAAgC,CAAC;SACjH,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;QAAE,cAAc,GAAG,gBAAgB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC;SAChI,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY;QAAE,cAAc,GAAG,KAAK,CAAC,QAAQ;YACzE,CAAC,CAAC,uFAAuF;YACzF,CAAC,CAAC,mBAAmB,CAAC;;QACnB,cAAc,GAAG,QAAQ,KAAK,CAAC,KAAK,IAAI,SAAS,QAAQ,CAAC;IAC/D,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;QAClC,MAAM,CAAC,IAAI,CACT,qDAAqD,IAAI,0CAA0C,IAAI,mBAAmB,CAC3H,CAAC;IACJ,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY;QACnC,MAAM,CAAC,IAAI,CACT,wBAAwB,IAAI,wGAAwG,CACrI,CAAC;IAEJ,YAAY;IACZ,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,UAA8B,CAAC;IACnC,IAAI,MAA0B,CAAC;IAC/B,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,eAAe,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1C,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAE,IAA6B,CAAC,MAAM,CAAC,CAAC;YAC9E,QAAQ,GAAG,MAAM;gBACf,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,GAAI,IAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvF,IAAI,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,kDAAkD,IAAI,UAAU,CAAC,CAAC;YAC3F,4DAA4D;YAC5D,IAAI,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ;gBACtC,QAAQ,IAAI,4CAA4C,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,GAAG,aAAa,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,+CAA+C;IAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACnC,KAAK,EACL,aAAa,GAAG,CAAC,EAAE,CAAC,SAAS,6BAA6B,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAClF,CAAC;QACF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;QAClB,WAAW,GAAG,GAAG;YACf,CAAC,CAAC,eAAe,GAAG,CAAC,OAAO,EAAE;YAC9B,CAAC,CAAC,0CAA0C,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,GAAG,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,iDAAiD;IACjD,IAAI,OAAgD,CAAC;IACrD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAClB,KAAK,EACL,aAAa,GAAG,CAAC,EAAE,CAAC,SAAS,0BAA0B,IAAI,CAAC,aAAa,aAAa,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAC9H,CAAC;YACF,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;QACD,OAAO,GAAG;YACR,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B;SACxE,CAAC;QACF,IAAI,CAAC,SAAS,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,IAAI,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,CAAC,YAAY;QAC3B,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO;YAC5B,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,4BAA4B;QAChC,CAAC,CAAC,CAAC,MAAM;YACP,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;gBACnC,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,yBAAyB,CAAC;IAElC,OAAO;QACL,MAAM,EAAE,CAAC;QACT,IAAI;QACJ,OAAO;QACP,OAAO;QACP,MAAM,EAAE;YACN,UAAU,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE;YAC7D,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;YAC7C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC;QACD,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"domain-health.js","sourceRoot":"","sources":["../../src/core/domain-health.ts"],"names":[],"mappings":"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"}