@clize/clize 0.10.1 → 0.12.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.
- package/README.md +9 -11
- package/dist/cli.js +207 -373
- package/dist/cli.js.map +1 -1
- package/dist/config.js +1 -12
- package/dist/config.js.map +1 -1
- package/dist/context.js +32 -50
- package/dist/context.js.map +1 -1
- package/dist/core/billing.js +21 -17
- package/dist/core/billing.js.map +1 -1
- package/dist/core/credentials.js +30 -0
- package/dist/core/credentials.js.map +1 -0
- package/dist/core/dns.js +27 -1
- package/dist/core/dns.js.map +1 -1
- package/dist/core/domains.js +134 -19
- package/dist/core/domains.js.map +1 -1
- package/dist/core/reconcile.js +127 -0
- package/dist/core/reconcile.js.map +1 -0
- package/dist/core/setup.js +3 -26
- package/dist/core/setup.js.map +1 -1
- package/dist/core/sites.js +72 -20
- package/dist/core/sites.js.map +1 -1
- package/dist/index.js +54 -90
- package/dist/index.js.map +1 -1
- package/dist/lib/cloudflare.js +4 -0
- package/dist/lib/cloudflare.js.map +1 -1
- package/dist/lib/crypto.js +57 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/vercel.js +67 -0
- package/dist/lib/vercel.js.map +1 -0
- package/dist/lib/zone.js +12 -0
- package/dist/lib/zone.js.map +1 -1
- package/dist/providers/dns/cloudflare.js +8 -0
- package/dist/providers/dns/cloudflare.js.map +1 -1
- package/dist/providers/index.js +15 -3
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/registrar/cloudflare.js +12 -22
- package/dist/providers/registrar/cloudflare.js.map +1 -1
- package/dist/providers/registrar/routing.js +98 -0
- package/dist/providers/registrar/routing.js.map +1 -0
- package/dist/providers/registrar/vercel.js +134 -0
- package/dist/providers/registrar/vercel.js.map +1 -0
- package/dist/remote.js +20 -8
- package/dist/remote.js.map +1 -1
- package/dist/state/file-store.js +7 -0
- package/dist/state/file-store.js.map +1 -1
- package/package.json +1 -1
- package/skills/clize-site-debug/SKILL.md +80 -0
package/dist/core/domains.js
CHANGED
|
@@ -1,21 +1,49 @@
|
|
|
1
1
|
import { chargedAmount, checkMonthlySpendLimit } from "./billing.js";
|
|
2
2
|
import { ensureBalance } from "./autopay.js";
|
|
3
3
|
import { auditScope, currentProjectId, PENDING_PROJECT_ID, projectFilter, requireProjectId, } from "./projects.js";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { CLOUDFLARE_TLDS } from "../providers/registrar/cloudflare.js";
|
|
5
|
+
import { nameserversOnVercel } from "../lib/zone.js";
|
|
6
|
+
/** @deprecated 仅 Cloudflare 直注的固定后缀;真实可注册能力(含 Vercel)用 listSupportedTlds(ctx)。 */
|
|
7
|
+
export const SUPPORTED_TLDS = CLOUDFLARE_TLDS;
|
|
8
|
+
/** 列出真实可注册的 TLD:CF 直注的 + 配了 Vercel 时的 500+ 补充(系统按 TLD 自动选注册商)。 */
|
|
9
|
+
export async function listSupportedTlds(ctx) {
|
|
10
|
+
const registrar = ctx.providers.registrar;
|
|
11
|
+
const vercel = typeof registrar.vercelSupportedTlds === "function"
|
|
12
|
+
? await registrar.vercelSupportedTlds().catch(() => [])
|
|
13
|
+
: [];
|
|
14
|
+
const all = Array.from(new Set([...CLOUDFLARE_TLDS, ...vercel])).sort();
|
|
15
|
+
return {
|
|
16
|
+
total: all.length,
|
|
17
|
+
cloudflareDirect: CLOUDFLARE_TLDS,
|
|
18
|
+
viaVercelCount: vercel.length,
|
|
19
|
+
note: vercel.length
|
|
20
|
+
? `CF 直注 ${CLOUDFLARE_TLDS.length} 个(同账号、DNS 一体);其余经 Vercel,共 ${all.length} 个。直接 \`clize domain search <name>.<tld>\`,系统自动选注册商并把 NS 迁回 CF。`
|
|
21
|
+
: `Cloudflare 注册商 beta,仅 ${CLOUDFLARE_TLDS.length} 个;配 VERCEL_TOKEN 可解锁 Vercel 的 500+ TLD(.ai/.io/.co…)。`,
|
|
22
|
+
tlds: all,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** 本次域名操作是否租户自付(按实际选中的 registrar,缺省回域名默认)。自付 → 不扣 clize 余额、不加价。 */
|
|
26
|
+
function selfPaidFor(ctx, domain, registrar) {
|
|
27
|
+
const id = registrar ?? ctx.providers.registrar.registrarIdFor?.(domain);
|
|
28
|
+
if (id === "vercel")
|
|
29
|
+
return ctx.selfPaid.vercel;
|
|
30
|
+
return ctx.selfPaid.cf; // cloudflare 或单一渠道(裸 CloudflareRegistrar)
|
|
31
|
+
}
|
|
6
32
|
export async function searchDomains(ctx, domains) {
|
|
7
33
|
const results = await ctx.providers.registrar.checkAvailability(domains);
|
|
8
34
|
// 报价 = 用户实际要付的价,必须与扣费一致:
|
|
9
|
-
//
|
|
10
|
-
//
|
|
35
|
+
// self-host / 托管 BYO(租户自付)→ 原价(用户直接对 CF/Vercel 付,无加价);
|
|
36
|
+
// 托管平台代付 → 对客价(成本 ×(1+markup))。
|
|
11
37
|
const balance = await ctx.store.getBalanceUsd(ctx.tenantId);
|
|
12
38
|
if (balance === null)
|
|
13
|
-
return results;
|
|
14
|
-
return results.map((r) => (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
39
|
+
return results; // self-host:无 clize 余额量纲,原价
|
|
40
|
+
return results.map((r) => selfPaidFor(ctx, r.domain, r.registrar)
|
|
41
|
+
? r
|
|
42
|
+
: {
|
|
43
|
+
...r,
|
|
44
|
+
registrationCost: r.registrationCost != null ? chargedAmount(ctx, r.registrationCost) : r.registrationCost,
|
|
45
|
+
renewalCost: r.renewalCost != null ? chargedAmount(ctx, r.renewalCost) : r.renewalCost,
|
|
46
|
+
});
|
|
19
47
|
}
|
|
20
48
|
/** 列出当前租户的域名(检出了项目则只列该项目的)。 */
|
|
21
49
|
export async function listDomains(ctx) {
|
|
@@ -33,14 +61,17 @@ export async function registerDomain(ctx, domain, opts = {}) {
|
|
|
33
61
|
const autoRenew = opts.autoRenew ?? true;
|
|
34
62
|
// 0) 项目归属先行解析(fail fast):检出名无效要在扣费 / 注册之前就报,绝不静默落错项目。
|
|
35
63
|
const projectId = await requireProjectId(ctx);
|
|
36
|
-
// 1) 查价 + 可用性
|
|
64
|
+
// 1) 查价 + 可用性(注册商由 RoutingRegistrar 自动选)
|
|
37
65
|
const [check] = await ctx.providers.registrar.checkAvailability([domain]);
|
|
38
66
|
if (!check?.available)
|
|
39
67
|
throw new Error(`域名 ${domain} 不可注册${check?.reason ? `(${check.reason})` : ""}`);
|
|
40
68
|
const cost = check.registrationCost;
|
|
41
|
-
//
|
|
69
|
+
// selfPaid:按 checkAvailability 自动选中的注册商判定(平台代付重叠会比首年价选低的那家)。
|
|
70
|
+
const selfPaid = selfPaidFor(ctx, domain, check.registrar);
|
|
71
|
+
// 2) 月度开销上限(口径=用户实付:平台代付=对客价,自付=原价 —— 与 audit 累计口径一致)
|
|
42
72
|
const balanceForLimit = await ctx.store.getBalanceUsd(ctx.tenantId);
|
|
43
|
-
|
|
73
|
+
const userCost = cost == null ? cost : selfPaid ? cost : chargedAmount(ctx, cost);
|
|
74
|
+
await checkMonthlySpendLimit(ctx, userCost);
|
|
44
75
|
// 3) 演练模式
|
|
45
76
|
if (ctx.tenant.dryRun) {
|
|
46
77
|
await ctx.store.appendAudit(ctx.tenantId, {
|
|
@@ -62,13 +93,14 @@ export async function registerDomain(ctx, domain, opts = {}) {
|
|
|
62
93
|
wouldCost: cost,
|
|
63
94
|
currency: check.currency,
|
|
64
95
|
autoRenew,
|
|
96
|
+
registrar: check.registrar,
|
|
65
97
|
message: "演练模式:未真正注册。设 DRY_RUN=false 后执行。",
|
|
66
98
|
};
|
|
67
99
|
}
|
|
68
|
-
// 4) 计费闸(
|
|
100
|
+
// 4) 计费闸(仅「托管 + 平台代付」:预付余额 + 加价,先扣后注册;self-host / BYO 自付跳过)
|
|
69
101
|
const balanceUsd = balanceForLimit;
|
|
70
102
|
let charged;
|
|
71
|
-
if (balanceUsd !== null && cost != null) {
|
|
103
|
+
if (!selfPaid && balanceUsd !== null && cost != null) {
|
|
72
104
|
charged = chargedAmount(ctx, cost);
|
|
73
105
|
// 余额不足时先自动续充(已开自动续充 + 绑卡才触发;否则下面 chargeBalance 抛 402)。
|
|
74
106
|
await ensureBalance(ctx, charged, { action: "domain_register", detail: { domain } });
|
|
@@ -96,19 +128,28 @@ export async function registerDomain(ctx, domain, opts = {}) {
|
|
|
96
128
|
// 审计 / 月度开销也按对客实付额(托管=charged,自带-CF=raw cost),不暴露成本。
|
|
97
129
|
await ctx.store.appendAudit(ctx.tenantId, {
|
|
98
130
|
action: "domain_register",
|
|
99
|
-
detail: { domain, autoRenew, state: result.state },
|
|
131
|
+
detail: { domain, autoRenew, state: result.state, registrar: result.registrar },
|
|
100
132
|
cost: charged ?? cost,
|
|
101
133
|
projectId,
|
|
102
134
|
});
|
|
103
|
-
// 6)
|
|
135
|
+
// 6) 注册成功后记录(归当前项目)。
|
|
136
|
+
// CF 注册的域名 zone 自动在 CF;Vercel 注册的留 Vercel DNS —— NS→CF 全自动被 Vercel 堵死
|
|
137
|
+
// (能写 customNameservers 但激活/关 CDN 不开放给 API,见 DOMAINS.md §Vercel-NS),
|
|
138
|
+
// 故不强迁。需 support@ 邮箱的域名请用 CF 直注的 TLD,或后续 `clize domain import` 手动迁 NS。
|
|
139
|
+
const viaVercel = result.registrar === "vercel";
|
|
104
140
|
const zoneId = await ctx.cf.findZoneId(domain).catch(() => undefined);
|
|
141
|
+
const status = result.completed ? "registered" : "pending";
|
|
105
142
|
await ctx.store.upsertIdentity(ctx.tenantId, {
|
|
106
143
|
domain,
|
|
107
|
-
status
|
|
144
|
+
status,
|
|
108
145
|
zoneId,
|
|
109
146
|
registeredAt: new Date().toISOString(),
|
|
110
147
|
expiresAt: result.expiresAt,
|
|
111
148
|
autoRenew,
|
|
149
|
+
// 权威来源:回填「谁真正执行了注册」(平台代付比价后可能是 Vercel,而非 TLD 默认的 CF)。
|
|
150
|
+
// 替代 store 对新身份默认的 "cloudflare" —— 让日后 setAutoRenew / 排障能查到真实注册商,
|
|
151
|
+
// 不再依赖 registrarIdFor 的 TLD 静态猜测(result.registrar 缺省时不写,沿用 store 默认)。
|
|
152
|
+
...(result.registrar ? { registrar: result.registrar } : {}),
|
|
112
153
|
projectId,
|
|
113
154
|
});
|
|
114
155
|
// 返回只给「实付价」(pricePaidUsd),不含 CF 成本 / 毛利。
|
|
@@ -118,6 +159,11 @@ export async function registerDomain(ctx, domain, opts = {}) {
|
|
|
118
159
|
currency: check.currency,
|
|
119
160
|
zoneId,
|
|
120
161
|
autoRenew,
|
|
162
|
+
...(viaVercel
|
|
163
|
+
? {
|
|
164
|
+
note: "域名注册在 Vercel、DNS 也在 Vercel。要 support@ 邮箱 → 用 CF 直注的 TLD,或在 Vercel dashboard 手动关 CDN/设 custom NS 后再 `clize domain import`(API 不支持自动迁)。",
|
|
165
|
+
}
|
|
166
|
+
: {}),
|
|
121
167
|
};
|
|
122
168
|
}
|
|
123
169
|
/**
|
|
@@ -310,7 +356,11 @@ export async function setAutoRenew(ctx, domain, enabled) {
|
|
|
310
356
|
});
|
|
311
357
|
return { dryRun: true, domain, autoRenew: enabled, message: "演练模式:未真正修改。" };
|
|
312
358
|
}
|
|
313
|
-
|
|
359
|
+
// 落到真实注册商:从 Identity.registrar(注册时回填的权威来源)取 hint 传给 routing,
|
|
360
|
+
// 替代它的 TLD 静态猜测 —— 重叠 TLD 在 Vercel 注册时会猜错家,CF 不认该域、开关失效。
|
|
361
|
+
// 未纳管 / 旧记录无 registrar → hint 为空,routing 回退 TLD 路由(不劣于改前)。
|
|
362
|
+
const identity = await ctx.store.getIdentity(ctx.tenantId, domain);
|
|
363
|
+
await ctx.providers.registrar.setAutoRenew(domain, enabled, { registrar: identity?.registrar });
|
|
314
364
|
await ctx.store.appendAudit(ctx.tenantId, {
|
|
315
365
|
action: "domain_autorenew",
|
|
316
366
|
detail: { domain, enabled },
|
|
@@ -318,6 +368,71 @@ export async function setAutoRenew(ctx, domain, enabled) {
|
|
|
318
368
|
await ctx.store.upsertIdentity(ctx.tenantId, { domain, autoRenew: enabled });
|
|
319
369
|
return { domain, autoRenew: enabled, message: enabled ? "已开启自动续费" : "已关闭自动续费" };
|
|
320
370
|
}
|
|
371
|
+
/** 读某域 NS 现状:注册商 + 当前委派(zone 源 NS)+ CF 分配的目标 NS。供 `domain ns`(无参)查看 / 排障。 */
|
|
372
|
+
export async function getDomainNameservers(ctx, domain) {
|
|
373
|
+
const d = domain.toLowerCase();
|
|
374
|
+
const id = await ctx.store.getIdentity(ctx.tenantId, d);
|
|
375
|
+
const apex = d.split(".").slice(-2).join(".");
|
|
376
|
+
const zoneId = await ctx.cf.findZoneId(apex).catch(() => undefined);
|
|
377
|
+
const zone = zoneId ? await ctx.cf.getZone(zoneId).catch(() => undefined) : undefined;
|
|
378
|
+
return {
|
|
379
|
+
domain: d,
|
|
380
|
+
registrar: id?.registrar ?? "(未知/未纳管)",
|
|
381
|
+
status: id?.status,
|
|
382
|
+
currentNameservers: zone?.original_name_servers ?? id?.nameservers,
|
|
383
|
+
cloudflareNameservers: zone?.name_servers,
|
|
384
|
+
zoneStatus: zone?.status,
|
|
385
|
+
hint: "改 NS:`clize domain ns <域名> <ns1> <ns2> …`。clize 注册的 Vercel 域名可任意指向;CF 注册域 NS 锁 CF;外部域只能去原注册商改。",
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* 设某域的 registrar nameservers(显式暴露,非仅 deploy 自动切)。按真实注册商分流:
|
|
390
|
+
* - clize 注册的 Vercel 域 → 程序化改(可指 CF、也可指走;指离 CF 回带 warning);
|
|
391
|
+
* - CF 注册域 → NS 锁 CF(CF Registrar 硬限制),报错引导用 `clize dns`;
|
|
392
|
+
* - 外部接入域 → clize 无原注册商权限,报错给出目标值引导手动改。
|
|
393
|
+
*/
|
|
394
|
+
export async function setDomainNameservers(ctx, domain, nameservers) {
|
|
395
|
+
const d = domain.toLowerCase();
|
|
396
|
+
if (!nameservers.length)
|
|
397
|
+
throw new Error("需至少一个 nameserver(只想看现状就别带 ns 参数)");
|
|
398
|
+
const id = await ctx.store.getIdentity(ctx.tenantId, d);
|
|
399
|
+
const reg = ctx.providers.registrar;
|
|
400
|
+
// 外部接入域:clize 没有原注册商权限,改不了 —— 给出目标 NS、引导用户去原注册商改。
|
|
401
|
+
if (id?.status === "external")
|
|
402
|
+
throw new Error(`${d} 是外部接入域,clize 没有它原注册商的权限、无法程序化改 NS。请到你注册该域名的服务商处把 nameservers 改成:${nameservers.join(", ")}。`);
|
|
403
|
+
// 判真实注册商:registrar 字段(注册时回填 / 对账校正)优先,zone 源 NS 指向 vercel-dns 兜底。
|
|
404
|
+
const apex = d.split(".").slice(-2).join(".");
|
|
405
|
+
const zoneId = await ctx.cf.findZoneId(apex).catch(() => undefined);
|
|
406
|
+
const onVercelNs = zoneId
|
|
407
|
+
? nameserversOnVercel((await ctx.cf.getZone(zoneId).catch(() => undefined))?.original_name_servers)
|
|
408
|
+
: false;
|
|
409
|
+
const isVercel = id?.registrar === "vercel" || onVercelNs;
|
|
410
|
+
if (id?.registrar === "cloudflare" && !isVercel)
|
|
411
|
+
throw new Error(`${d} 注册在 Cloudflare Registrar,其 NS 锁定在 Cloudflare、不能指向第三方(CF Registrar 硬限制)。要自管 DNS 用 \`clize dns\` 直接在 CF 上配记录。`);
|
|
412
|
+
if (!reg.setNameservers)
|
|
413
|
+
throw new Error(`${d} 的注册商不支持程序化改 NS(可能是修复前的存量记录)——先跑注册商对账,或确认它确属 clize 注册。`);
|
|
414
|
+
await reg.setNameservers(d, nameservers);
|
|
415
|
+
await ctx.store
|
|
416
|
+
.appendAudit(ctx.tenantId, {
|
|
417
|
+
action: "domain_set_nameservers",
|
|
418
|
+
detail: { domain: d, nameservers, source: "manual" },
|
|
419
|
+
})
|
|
420
|
+
.catch(() => { });
|
|
421
|
+
await ctx.store.upsertIdentity(ctx.tenantId, { domain: d, nameservers });
|
|
422
|
+
// 指离 CF 警告:没有任一 NS 指向 *.ns.cloudflare.com → 该域上的 clize 邮箱(收信)/ 站点会停。
|
|
423
|
+
const offCloudflare = !nameservers.some((ns) => /\.ns\.cloudflare\.com\.?$/i.test(ns));
|
|
424
|
+
return {
|
|
425
|
+
domain: d,
|
|
426
|
+
nameservers,
|
|
427
|
+
registrar: id?.registrar ?? "vercel",
|
|
428
|
+
message: `已把 ${d} 的 NS 设为:${nameservers.join(", ")}(注册局生效 + 传播需几分钟;验证查 dns.google,别信注册商自家字段)。`,
|
|
429
|
+
...(offCloudflare
|
|
430
|
+
? {
|
|
431
|
+
warning: "⚠️ NS 已指离 Cloudflare —— 该域上的 clize 邮箱(收信)和站点会停止工作,直到把 NS 指回 CF 的 nameservers。",
|
|
432
|
+
}
|
|
433
|
+
: {}),
|
|
434
|
+
};
|
|
435
|
+
}
|
|
321
436
|
/** 从注册商拉取真实已注册域名列表(含到期时间,用于防过期巡检)。 */
|
|
322
437
|
export function listRegistered(ctx) {
|
|
323
438
|
return ctx.providers.registrar.listRegistered();
|
package/dist/core/domains.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/core/domains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEjF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,OAAiB;IACjE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzE,yBAAyB;IACzB,wCAAwC;IACxC,oDAAoD;IACpD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,GAAG,CAAC;QACJ,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QAC1G,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;KACvF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAY;IAC5C,OAAO,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,MAAc;IAC1D,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,aAAa,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAY,EACZ,MAAc,EACd,OAAgC,EAAE;IAElC,uDAAuD;IACvD,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IAEzC,sDAAsD;IACtD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE9C,cAAc;IACd,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,MAAM,MAAM,QAAQ,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAEpC,2DAA2D;IAC3D,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,sBAAsB,CAC1B,GAAG,EACH,eAAe,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3E,CAAC;IAEF,UAAU;IACV,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;YACxC,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;YAC7B,IAAI;YACJ,MAAM,EAAE,IAAI;YACZ,SAAS;SACV,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC3C,MAAM;YACN,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,kBAAkB;YACzB,SAAS;SACV,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM;YACN,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS;YACT,OAAO,EAAE,iCAAiC;SAC3C,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,UAAU,GAAG,eAAe,CAAC;IACnC,IAAI,OAA2B,CAAC;IAChC,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,uDAAuD;QACvD,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACrF,wCAAwC;QACxC,uDAAuD;QACvD,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE;YACnD,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,EAAE,MAAM,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,IAAI,IAAI;YACjB,MAAM,GAAG,CAAC,KAAK;iBACZ,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;iBAChG,KAAK,CAAC,GAAG,EAAE;gBACV,iBAAiB;YACnB,CAAC,CAAC,CAAC;QACP,MAAM,CAAC,CAAC;IACV,CAAC;IACD,qDAAqD;IACrD,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;QAClD,IAAI,EAAE,OAAO,IAAI,IAAI;QACrB,SAAS;KACV,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3C,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACnD,MAAM;QACN,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS;QACT,SAAS;KACV,CAAC,CAAC;IAEH,yCAAyC;IACzC,OAAO;QACL,GAAG,MAAM;QACT,YAAY,EAAE,OAAO,IAAI,IAAI;QAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAY,EACZ,MAAc;IAEd,2CAA2C;IAC3C,+CAA+C;IAC/C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpE,mBAAmB;IACnB,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC3C,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,SAAS;SACV,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,uDAAuD,MAAM,mCAAmC;aAC1G,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,cAAc,EAAE,8DAA8D,MAAM,wBAAwB;YAC5G,OAAO,EAAE,gGAAgG;SAC1G,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM;YACN,OAAO,EACL,gEAAgE;SACnE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;KACpC,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3C,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,SAAS;KACV,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,wBAAwB;QAC7C,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,SAAS,EAAE;YACT,iEAAiE;YACjE,0FAA0F;YAC1F,uCAAuC,MAAM,gDAAgD,MAAM,UAAU;SAC9G;KACF,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAY,EACZ,UAAuB;IAEvB,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,OAAO,GAA0E,EAAE,CAAC;IAC1F,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY;YAAE,SAAS;QACtC,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,4DAA4D;YAC5D,kCAAkC;YAClC,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/F,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,2BAA2B;QACvC,CAAC;QACD,sBAAsB;QACtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmD,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU;gBACjD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CACnF,CAAC;YACF,IAAI,CAAC,OAAO;gBACV,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;IAC/E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAY;IAChD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtD,qDAAqD;IACrD,2DAA2D;IAC3D,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW;QAClC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO;QACL,6CAA6C;QAC7C,wDAAwD;QACxD,OAAO,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;QAChC,GAAG,CAAC,SAAS,KAAK,kBAAkB;YAClC,CAAC,CAAC;gBACE,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,6CAA6C;aACjF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,YAAY,GAAG,CAAC;YACtC,CAAC,CAAC;gBACE,WAAW,EAAE,QAAQ,YAAY,uFAAuF;aACzH;YACH,CAAC,CAAC,EAAE,CAAC;QACP,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,EAAE,yBAAyB;QACxE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,kBAAkB;YACrC,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,kBAAkB,IAAI,OAAO,CAAC,MAAM,mCAAmC,EAAE;YACzG,CAAC,CAAC,EAAE,CAAC;QACP,6DAA6D;QAC7D,sDAAsD;QACtD,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;QACzB,sDAAsD;QACtD,kDAAkD;QAClD,iBAAiB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACnC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,EAAE;QACJ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,WAAW,EAAE,UAAU,CAAC,MAAM;QAC9B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC;YAC/D,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;SAC3B,CAAC,CAAC;QACH,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,kBAAkB;YACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,IAAI,UAAU,CAAC,MAAM,uBAAuB,EAAE;YAC5F,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,SAAS,YAAY,CAAC,GAAY;IAChC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE;QAAE,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;IAChE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,uBAAuB;IACpE,IAAI,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI;QACzC,MAAM,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAChE,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;QACzE,MAAM,CAAC,QAAQ,GAAG,oCAAoC,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAY,EAAE,KAAK,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAY,EACZ,MAAc,EACd,OAAgB;IAEhB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;YACxC,MAAM,EAAE,kBAAkB;YAC1B,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;YAC3B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;KAC5B,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAClF,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAClD,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY;IAC7C,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,eAAe,CAAC,GAAG,CAAC;QACpB,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAgD,CAAC;QACjF,eAAe,CAAC,GAAG,CAAC;KACrB,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,2DAA2D;AAC3D,KAAK,UAAU,eAAe,CAAC,GAAY;IACzC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACjF,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CACvB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EACrE,CAAC,CACF,CAAC;IACF,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjF,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;QACjC,UAAU;QACV,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC;gBACE,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG;gBACjD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;aACnF;YACH,CAAC,CAAC,IAAI;QACR,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;YAClD,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/core/domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { nameserversOnVercel } from "../lib/zone.js";
|
|
2
|
+
/** 只校正「本系统注册」的身份;external(import 接入的外部域)registrar 字段不归我们所有,不动。 */
|
|
3
|
+
const RECONCILABLE = new Set([
|
|
4
|
+
"registered",
|
|
5
|
+
"pending",
|
|
6
|
+
]);
|
|
7
|
+
/**
|
|
8
|
+
* 单租户对账:用 ctx.tenantId 的 store/registrar/cf 判定并校正 registrar。
|
|
9
|
+
* @param opts.apply 默认 true(真写库);false = 仅预演返回将要改的清单,不落库、不留痕。
|
|
10
|
+
*/
|
|
11
|
+
export async function reconcileRegistrars(ctx, opts = {}) {
|
|
12
|
+
const apply = opts.apply ?? true;
|
|
13
|
+
const targets = (await ctx.store.listIdentities(ctx.tenantId)).filter((i) => RECONCILABLE.has(i.status));
|
|
14
|
+
const report = {
|
|
15
|
+
tenantId: ctx.tenantId,
|
|
16
|
+
scanned: targets.length,
|
|
17
|
+
corrected: [],
|
|
18
|
+
unresolved: [],
|
|
19
|
+
applied: apply,
|
|
20
|
+
};
|
|
21
|
+
if (!targets.length)
|
|
22
|
+
return report; // 空租户:不打扰注册商 API
|
|
23
|
+
// 1) 权威信号:注册商真实已注册列表,按归属(registrar 字段)分桶 domain→cloudflare/vercel。
|
|
24
|
+
// listRegistered 失败(无凭证 / 限流)不致命 —— 退化为空桶,后面靠 zone 源 NS 兜底。
|
|
25
|
+
const cf = new Set();
|
|
26
|
+
const vercel = new Set();
|
|
27
|
+
try {
|
|
28
|
+
for (const d of await ctx.providers.registrar.listRegistered()) {
|
|
29
|
+
const name = d.domain?.toLowerCase();
|
|
30
|
+
if (!name)
|
|
31
|
+
continue;
|
|
32
|
+
if (d.registrar === "vercel")
|
|
33
|
+
vercel.add(name);
|
|
34
|
+
else if (d.registrar === "cloudflare")
|
|
35
|
+
cf.add(name);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
/* 信号缺失:不阻断,靠 NS 兜底 */
|
|
40
|
+
}
|
|
41
|
+
// 2) 逐域判真实注册商:权威列表优先;判不了再用 zone 源 NS 兜底(只在现值非 vercel 时翻成
|
|
42
|
+
// vercel —— 对准 bug 方向,避免把已正确 / 不相干的记录乱翻)。
|
|
43
|
+
for (const id of targets) {
|
|
44
|
+
const domain = id.domain.toLowerCase();
|
|
45
|
+
const inVercel = vercel.has(domain);
|
|
46
|
+
const inCf = cf.has(domain);
|
|
47
|
+
let verdict;
|
|
48
|
+
if (inVercel && !inCf)
|
|
49
|
+
verdict = { to: "vercel", via: "registry" };
|
|
50
|
+
else if (inCf && !inVercel)
|
|
51
|
+
verdict = { to: "cloudflare", via: "registry" };
|
|
52
|
+
// 两边都在(理论上不该)/ 都不在 → 权威列表判不了;仅当现值非 vercel 时用 NS 兜底翻 vercel。
|
|
53
|
+
if (!verdict && id.registrar !== "vercel" && (await zoneOnVercelNs(ctx, domain)))
|
|
54
|
+
verdict = { to: "vercel", via: "nameserver" };
|
|
55
|
+
if (!verdict) {
|
|
56
|
+
report.unresolved.push(domain);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (verdict.to === id.registrar)
|
|
60
|
+
continue; // 已正确:幂等不写
|
|
61
|
+
const correction = {
|
|
62
|
+
tenantId: ctx.tenantId,
|
|
63
|
+
domain,
|
|
64
|
+
from: id.registrar,
|
|
65
|
+
to: verdict.to,
|
|
66
|
+
via: verdict.via,
|
|
67
|
+
};
|
|
68
|
+
report.corrected.push(correction);
|
|
69
|
+
if (apply) {
|
|
70
|
+
await ctx.store.upsertIdentity(ctx.tenantId, { domain, registrar: verdict.to });
|
|
71
|
+
await ctx.store
|
|
72
|
+
.appendAudit(ctx.tenantId, {
|
|
73
|
+
action: "domain_registrar_reconcile",
|
|
74
|
+
detail: { domain, from: correction.from, to: verdict.to, via: verdict.via },
|
|
75
|
+
})
|
|
76
|
+
.catch(() => { }); // 留痕失败不阻断校正
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return report;
|
|
80
|
+
}
|
|
81
|
+
/** best-effort:该域名的 CF zone「源 NS」是否指向 Vercel(查不到 zone / 出错 → false,不影响其它域)。 */
|
|
82
|
+
async function zoneOnVercelNs(ctx, domain) {
|
|
83
|
+
try {
|
|
84
|
+
const apex = domain.split(".").slice(-2).join(".");
|
|
85
|
+
const zoneId = await ctx.cf.findZoneId(apex);
|
|
86
|
+
if (!zoneId)
|
|
87
|
+
return false;
|
|
88
|
+
const zone = await ctx.cf.getZone(zoneId);
|
|
89
|
+
return nameserversOnVercel(zone.original_name_servers);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 多租户对账编排:按租户维度遍历,每租户用 buildCtx 建自己的 ctx(各查各账号),逐租户聚合。
|
|
97
|
+
* store 无关 —— 调用方把「如何按 tenantId 建 ctx」注入进来(worker 用 createCloudContext + BYO 凭证;
|
|
98
|
+
* 测试可用同一个 FileStore 给不同 tenantId 各建 ctx)。单租户失败不阻断其它租户(错误进该租户 report)。
|
|
99
|
+
*/
|
|
100
|
+
export async function reconcileTenants(opts) {
|
|
101
|
+
const apply = opts.apply ?? true;
|
|
102
|
+
const reports = [];
|
|
103
|
+
for (const tenantId of opts.tenantIds) {
|
|
104
|
+
try {
|
|
105
|
+
const ctx = await opts.buildCtx(tenantId);
|
|
106
|
+
reports.push(await reconcileRegistrars(ctx, { apply }));
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
reports.push({
|
|
110
|
+
tenantId,
|
|
111
|
+
scanned: 0,
|
|
112
|
+
corrected: [],
|
|
113
|
+
unresolved: [],
|
|
114
|
+
applied: apply,
|
|
115
|
+
error: e instanceof Error ? e.message : String(e),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
tenants: reports.length,
|
|
121
|
+
scanned: reports.reduce((n, r) => n + r.scanned, 0),
|
|
122
|
+
correctedCount: reports.reduce((n, r) => n + r.corrected.length, 0),
|
|
123
|
+
applied: apply,
|
|
124
|
+
reports,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/core/reconcile.ts"],"names":[],"mappings":"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"}
|
package/dist/core/setup.js
CHANGED
|
@@ -1,35 +1,12 @@
|
|
|
1
|
-
// 上手:login(
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// 上手:login(保存 clize key 到本地)+ init(绑定当前项目)。
|
|
2
|
+
// login 把 clize key 存进 ~/.clize/config.json,免去每次配环境变量;
|
|
3
|
+
// remote.loadRemote() 读这个文件判定登录态(纯托管下 CLI/MCP 是瘦客户端)。
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
export function configPath() {
|
|
8
8
|
return path.join(os.homedir(), ".clize", "config.json");
|
|
9
9
|
}
|
|
10
|
-
/** 保存访问凭证到 ~/.clize/config.json(token + 账户 id),仅本机可读。 */
|
|
11
|
-
export function saveLogin(token, account) {
|
|
12
|
-
const p = configPath();
|
|
13
|
-
fs.mkdirSync(path.dirname(p), { recursive: true });
|
|
14
|
-
let cfg = {};
|
|
15
|
-
try {
|
|
16
|
-
cfg = JSON.parse(fs.readFileSync(p, "utf8"));
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
/* 首次,新建 */
|
|
20
|
-
}
|
|
21
|
-
cfg.CLOUDFLARE_API_TOKEN = token;
|
|
22
|
-
if (account)
|
|
23
|
-
cfg.CLOUDFLARE_ACCOUNT_ID = account;
|
|
24
|
-
fs.writeFileSync(p, JSON.stringify(cfg, null, 2));
|
|
25
|
-
try {
|
|
26
|
-
fs.chmodSync(p, 0o600);
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
/* 平台不支持则忽略 */
|
|
30
|
-
}
|
|
31
|
-
return { saved: p, message: "凭证已保存(仅本机可读)。跑 `clize check` 验证连通性。" };
|
|
32
|
-
}
|
|
33
10
|
/** 保存托管(remote)模式凭证:clize API URL + clize key → 切到托管模式。 */
|
|
34
11
|
export function saveRemoteLogin(apiUrl, apiKey) {
|
|
35
12
|
const p = configPath();
|
package/dist/core/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/core/setup.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/core/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/core/sites.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { assertDomainInProject } from "./projects.js";
|
|
8
|
+
import { nameserversOnVercel } from "../lib/zone.js";
|
|
8
9
|
const SITE_WORKER = "clize-handle-site";
|
|
9
10
|
const SITE_KV_TITLE = "clize-sites";
|
|
10
11
|
/** 共享站点 worker 源码:KV 取 `${host}${path}`,SPA/根回退 index.html,无内容→占位页。 */
|
|
@@ -79,18 +80,75 @@ export async function ensureSiteInfra(ctx) {
|
|
|
79
80
|
await ctx.cf.request("PUT", `/accounts/${ctx.cf.accountId}/workers/scripts/${SITE_WORKER}`, form);
|
|
80
81
|
return { worker: SITE_WORKER, kvNamespaceId: kvId, message: "站点基建就绪(共享 worker + KV)" };
|
|
81
82
|
}
|
|
82
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* 确保 host 的 apex zone 在 CF 且 active —— 绑 custom domain 到站点 worker 的前提。
|
|
85
|
+
* zone 不存在则建;pending(NS 没委派给 CF)且域名是 Vercel 注册的 → 自动把 NS 切到 CF + 催激活。
|
|
86
|
+
* 仍 pending(注册局/DNS 传播未完成,或非 Vercel 域名 NS 没指 CF)→ 明确报错,绝不静默放过。
|
|
87
|
+
*/
|
|
88
|
+
export async function ensureZoneActiveForHandle(ctx, host) {
|
|
89
|
+
const apex = host.toLowerCase().split(".").slice(-2).join(".");
|
|
90
|
+
const id = await ctx.cf.findZoneId(apex);
|
|
91
|
+
let zone = id ? await ctx.cf.getZone(id) : await ctx.cf.createZone(apex);
|
|
92
|
+
if (zone.status === "active")
|
|
93
|
+
return zone.id;
|
|
94
|
+
// pending:NS 没委派给 CF。该域名注册在 Vercel → 自动切 NS 到 CF 分配的 name_servers + 催激活。
|
|
95
|
+
const reg = ctx.providers.registrar;
|
|
96
|
+
const cfNs = zone.name_servers ?? [];
|
|
97
|
+
// 判「是不是 Vercel 域名」不能只信 registrarIdFor —— 它是「按 TLD 该路由给谁」的静态判断:
|
|
98
|
+
// 重叠 TLD(com/app/dev/info/xyz…)在平台代付下比价后可能实际注册在 Vercel,却被它判成
|
|
99
|
+
// cloudflare,于是下面切 NS 整段被跳过、zone 永远 pending(diagramgen.app 即此坑)。
|
|
100
|
+
// 再叠加「zone 源 NS 是否指向 vercel-dns.com」这个真实世界信号兜底,对存量域名也成立。
|
|
101
|
+
const onVercelNs = nameserversOnVercel(zone.original_name_servers);
|
|
102
|
+
const isVercel = reg.registrarIdFor?.(apex) === "vercel" || onVercelNs;
|
|
103
|
+
if (isVercel && reg.setNameservers && cfNs.length) {
|
|
104
|
+
await reg.setNameservers(apex, cfNs);
|
|
105
|
+
// 留痕:audit 里能看到 NS 真的切过(此前切 NS 不记录,排障时只见买域、不见切 NS)。
|
|
106
|
+
await ctx.store
|
|
107
|
+
.appendAudit(ctx.tenantId, {
|
|
108
|
+
action: "domain_set_nameservers",
|
|
109
|
+
detail: { domain: apex, nameservers: cfNs, reason: onVercelNs ? "original_ns_vercel" : "registrar_vercel" },
|
|
110
|
+
})
|
|
111
|
+
.catch(() => { }); // best-effort:留痕失败不阻断切 NS / 部署
|
|
112
|
+
await ctx.cf.activationCheck(zone.id).catch(() => { }); // 催一下;失败不致命(CF 也会自动轮询)
|
|
113
|
+
zone = await ctx.cf.getZone(zone.id); // 重查:.app 等注册局 NS 生效快,通常此刻已 active
|
|
114
|
+
if (zone.status === "active")
|
|
115
|
+
return zone.id;
|
|
116
|
+
}
|
|
117
|
+
const nsHint = cfNs.length ? cfNs.join(", ") : "见 CF dashboard";
|
|
118
|
+
throw new Error(isVercel
|
|
119
|
+
? `已把 ${apex} 的 NS 切到 Cloudflare(${nsHint}),但 zone 仍 pending —— ` +
|
|
120
|
+
`注册局/DNS 传播需几分钟,稍后重跑 deploy 即可上线(站点内容已在 KV,不会丢)。`
|
|
121
|
+
: `${apex} 的 CF zone 是 ${zone.status}:NS 没指向 Cloudflare。` +
|
|
122
|
+
`请到注册商把 NS 改成 ${nsHint},生效后重跑 deploy。`);
|
|
123
|
+
}
|
|
124
|
+
/** 绑定 host → 共享站点 worker。已绑定=幂等忽略;其他错误抛出,不再静默吞掉(避免"假成功")。 */
|
|
125
|
+
async function bindHandleDomain(ctx, host, zoneId) {
|
|
126
|
+
try {
|
|
127
|
+
await ctx.cf.request("PUT", `/accounts/${ctx.cf.accountId}/workers/domains`, {
|
|
128
|
+
hostname: host.toLowerCase(),
|
|
129
|
+
service: SITE_WORKER,
|
|
130
|
+
environment: "production",
|
|
131
|
+
zone_id: zoneId,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
136
|
+
if (/already|exist|duplicate|conflict/i.test(msg))
|
|
137
|
+
return; // 已绑定 = 幂等成功
|
|
138
|
+
throw new Error(`绑定 ${host} 到站点 worker 失败:${msg}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** 把一个域绑定到共享站点 worker(确保基建在)。claim 后让 handle 显示占位页 —— 此阶段绑不上不致命。 */
|
|
83
142
|
export async function bindHandleSite(ctx, host) {
|
|
84
143
|
await ensureSiteInfra(ctx);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
.catch(() => { });
|
|
144
|
+
// claim 占位:尽力绑(自动切 NS);NS 还在传播等导致绑不上不阻断 —— 真正 deploy 时会严格绑定并报错。
|
|
145
|
+
try {
|
|
146
|
+
const zoneId = await ensureZoneActiveForHandle(ctx, host);
|
|
147
|
+
await bindHandleDomain(ctx, host, zoneId);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
/* 占位绑定失败不阻断 claim;deployFilesToHandle 会在部署时严格处理 */
|
|
151
|
+
}
|
|
94
152
|
}
|
|
95
153
|
function walk(dir) {
|
|
96
154
|
const out = [];
|
|
@@ -134,16 +192,10 @@ export async function deployFilesToHandle(ctx, handle, files) {
|
|
|
134
192
|
for (let i = 0; i < items.length; i += 5000) {
|
|
135
193
|
await ctx.cf.request("PUT", `/accounts/${ctx.cf.accountId}/storage/kv/namespaces/${kvId}/bulk`, items.slice(i, i + 5000));
|
|
136
194
|
}
|
|
137
|
-
// 绑定 host → 共享 worker
|
|
138
|
-
|
|
139
|
-
await ctx
|
|
140
|
-
|
|
141
|
-
hostname: host,
|
|
142
|
-
service: SITE_WORKER,
|
|
143
|
-
environment: "production",
|
|
144
|
-
zone_id: zoneId,
|
|
145
|
-
})
|
|
146
|
-
.catch(() => { }); // 已绑定则忽略
|
|
195
|
+
// 绑定 host → 共享 worker:先确保 apex zone 在 CF 且 active(Vercel 注册域名自动切 NS→CF),
|
|
196
|
+
// 再绑 custom domain。绑定失败不再静默吞掉 —— 原 .catch(() => {}) 会把"域名没接上"伪装成成功。
|
|
197
|
+
const zoneId = await ensureZoneActiveForHandle(ctx, host);
|
|
198
|
+
await bindHandleDomain(ctx, host, zoneId);
|
|
147
199
|
await ctx.store.appendAudit(ctx.tenantId, {
|
|
148
200
|
action: "handle_site_deploy",
|
|
149
201
|
detail: { host, files: files.length },
|