hatchkit 0.1.29 → 0.1.31

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 (35) hide show
  1. package/dist/adopt.d.ts.map +1 -1
  2. package/dist/adopt.js +159 -2
  3. package/dist/adopt.js.map +1 -1
  4. package/dist/deploy/gh-actions-secrets.d.ts +16 -0
  5. package/dist/deploy/gh-actions-secrets.d.ts.map +1 -1
  6. package/dist/deploy/gh-actions-secrets.js +38 -0
  7. package/dist/deploy/gh-actions-secrets.js.map +1 -1
  8. package/dist/deploy/rollback.d.ts.map +1 -1
  9. package/dist/deploy/rollback.js +71 -2
  10. package/dist/deploy/rollback.js.map +1 -1
  11. package/dist/index.js +70 -9
  12. package/dist/index.js.map +1 -1
  13. package/dist/provision/index.d.ts +16 -1
  14. package/dist/provision/index.d.ts.map +1 -1
  15. package/dist/provision/index.js +62 -2
  16. package/dist/provision/index.js.map +1 -1
  17. package/dist/provision/s3-buckets.d.ts +16 -0
  18. package/dist/provision/s3-buckets.d.ts.map +1 -1
  19. package/dist/provision/s3-buckets.js +126 -44
  20. package/dist/provision/s3-buckets.js.map +1 -1
  21. package/dist/provision/s3.d.ts +77 -0
  22. package/dist/provision/s3.d.ts.map +1 -0
  23. package/dist/provision/s3.js +347 -0
  24. package/dist/provision/s3.js.map +1 -0
  25. package/dist/scaffold/manifest.d.ts +45 -5
  26. package/dist/scaffold/manifest.d.ts.map +1 -1
  27. package/dist/scaffold/manifest.js.map +1 -1
  28. package/dist/utils/cloudflare-api.d.ts +67 -5
  29. package/dist/utils/cloudflare-api.d.ts.map +1 -1
  30. package/dist/utils/cloudflare-api.js +133 -10
  31. package/dist/utils/cloudflare-api.js.map +1 -1
  32. package/dist/utils/run-ledger.d.ts +33 -0
  33. package/dist/utils/run-ledger.d.ts.map +1 -1
  34. package/dist/utils/run-ledger.js.map +1 -1
  35. package/package.json +1 -1
@@ -23,7 +23,15 @@ import { getCoolifyConfig, getDnsConfig } from "../config.js";
23
23
  import { CoolifyApi } from "../utils/coolify-api.js";
24
24
  import { exec } from "../utils/exec.js";
25
25
  import { RunLedger } from "../utils/run-ledger.js";
26
- import { deleteSecret } from "../utils/secrets.js";
26
+ import { SECRET_KEYS, deleteSecret, getSecret } from "../utils/secrets.js";
27
+ import { ghSecretDelete } from "./gh-actions-secrets.js";
28
+ /** Pull the R2 admin token from the OS keychain. Used by rollback
29
+ * steps that need to talk to the R2 API (bucket/token destroy).
30
+ * Returns undefined when the user has wiped their keychain or never
31
+ * configured R2; callers surface that as a "re-add the token" error. */
32
+ async function getR2AdminToken() {
33
+ return (await getSecret(SECRET_KEYS.r2AdminToken)) ?? undefined;
34
+ }
27
35
  /** Thrown by an undo step when the resource can't be auto-deleted because
28
36
  * the underlying API needs the user to do something first (e.g. Coolify
29
37
  * refuses to delete a project that still has apps/databases inside it).
@@ -142,6 +150,14 @@ function recipeFor(step) {
142
150
  return `rm ${shellEscape(step.path)}`;
143
151
  case "gitInit":
144
152
  return `rm -rf ${shellEscape(step.path)}`;
153
+ case "ghActionsSecret":
154
+ return `gh secret delete ${shellEscape(step.name)} --repo ${shellEscape(step.repo)}`;
155
+ case "r2Bucket":
156
+ return chalk.dim(`# manual: delete R2 bucket ${step.bucketName} (account ${step.accountId}) via dashboard or 'wrangler r2 bucket delete'`);
157
+ case "r2Token":
158
+ return chalk.dim(step.audience === "account"
159
+ ? `# manual: revoke account API token ${step.tokenId} at https://dash.cloudflare.com/${step.accountId}/api-tokens`
160
+ : `# manual: revoke user API token ${step.tokenId} at https://dash.cloudflare.com/profile/api-tokens`);
145
161
  case "cloudflareDnsRecord":
146
162
  return chalk.dim(`# manual: delete ${step.type} record ${step.name} (id ${step.recordId}) in Cloudflare zone ${step.zoneId}`);
147
163
  }
@@ -259,7 +275,10 @@ function isDestructive(step) {
259
275
  step.kind === "coolifyProject" ||
260
276
  step.kind === "coolifyDb" ||
261
277
  step.kind === "coolifyPrivateRegistry" ||
262
- step.kind === "cloudflareDnsRecord");
278
+ step.kind === "cloudflareDnsRecord" ||
279
+ // R2 bucket delete drops every object inside it. Token revocation
280
+ // is reversible (just re-mint), so it stays out of this list.
281
+ step.kind === "r2Bucket");
263
282
  }
264
283
  /** Probe Coolify for apps that DON'T belong to this run's ledger. Used
265
284
  * before deleting `coolifyPrivateRegistry`: the GHCR pull-creds entry
@@ -329,6 +348,12 @@ function describeStep(step) {
329
348
  return `remove ${chalk.cyan(step.path)}`;
330
349
  case "gitInit":
331
350
  return `remove .git dir at ${chalk.cyan(step.path)}`;
351
+ case "ghActionsSecret":
352
+ return `delete GH Actions secret ${chalk.cyan(step.name)} on ${chalk.cyan(step.repo)}`;
353
+ case "r2Bucket":
354
+ return `delete R2 bucket ${chalk.cyan(step.bucketName)}`;
355
+ case "r2Token":
356
+ return `revoke R2 ${step.audience} token ${chalk.cyan(step.tokenId.slice(0, 8) + "…")}`;
332
357
  case "cloudflareDnsRecord":
333
358
  return `delete Cloudflare ${step.type} record ${chalk.cyan(step.name)}`;
334
359
  }
@@ -471,6 +496,50 @@ async function undoStep(step, ledgerName) {
471
496
  rmSync(step.path, { recursive: true, force: true });
472
497
  return "done";
473
498
  }
499
+ case "ghActionsSecret": {
500
+ // Recorded only when adopt's probe confirmed the secret didn't
501
+ // pre-exist (see ghSecretExists in gh-actions-secrets.ts), so
502
+ // we're never deleting a secret the user set themselves.
503
+ return ghSecretDelete(step.repo, step.name);
504
+ }
505
+ case "r2Bucket": {
506
+ // Use the R2 admin token (account-level R2 perms) for the delete;
507
+ // it's the same token provision used to create the bucket. Falls
508
+ // back to the DNS token only if R2 admin isn't around — the DNS
509
+ // token rarely has R2:Edit but the error message will be clear.
510
+ const adminToken = await getR2AdminToken();
511
+ if (!adminToken) {
512
+ throw new Error("R2 admin token not in keychain — re-add via `hatchkit config add s3 r2`, then retry destroy.");
513
+ }
514
+ const { CloudflareApi } = await import("../utils/cloudflare-api.js");
515
+ const cf = new CloudflareApi({ token: adminToken });
516
+ const result = await cf.deleteR2Bucket(step.accountId, step.bucketName);
517
+ if (result === "not-empty") {
518
+ // Don't auto-empty — destroying user objects without explicit
519
+ // confirmation is exactly the safety violation we want to avoid.
520
+ throw new RollbackSkip(`R2 bucket "${step.bucketName}" still contains objects.`, [
521
+ `Empty the bucket first, e.g.: \`wrangler r2 bucket delete ${step.bucketName} --remote\` (after \`wrangler r2 object delete\` for the contents),`,
522
+ `or open https://dash.cloudflare.com/${step.accountId}/r2/default/buckets/${step.bucketName} and delete the objects manually.`,
523
+ `Then re-run \`hatchkit destroy ${ledgerName}\`.`,
524
+ ]);
525
+ }
526
+ return result === "deleted" ? "done" : "not-found";
527
+ }
528
+ case "r2Token": {
529
+ const adminToken = await getR2AdminToken();
530
+ if (!adminToken) {
531
+ throw new Error("R2 admin token not in keychain — re-add via `hatchkit config add s3 r2`, then retry destroy.");
532
+ }
533
+ const { CloudflareApi } = await import("../utils/cloudflare-api.js");
534
+ const cf = new CloudflareApi({ token: adminToken });
535
+ // Account-token deletes go through the account endpoint; legacy
536
+ // user-token entries (recorded for migration safety) go through
537
+ // the user endpoint — see the LedgerStep doc.
538
+ const result = step.audience === "account"
539
+ ? await cf.deleteAccountToken(step.accountId, step.tokenId)
540
+ : await cf.deleteApiToken(step.tokenId);
541
+ return result === "not-found" ? "not-found" : "done";
542
+ }
474
543
  case "cloudflareDnsRecord": {
475
544
  const dns = await getDnsConfig();
476
545
  if (!dns || dns.provider !== "cloudflare" || !dns.apiToken) {
@@ -1 +1 @@
1
- {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAmB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD;;;;;mCAKmC;AACnC,MAAM,YAAa,SAAQ,KAAK;IAC9B,KAAK,CAAW;IAChB,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAE7E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAiB,EAAE,GAAY;IACvE,OAAO,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;;sDAGsD;AACtD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAiB,EAAE,GAAY;IACtE,OAAO,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAiB,EACjB,GAAY,EACZ,IAAwB;IAExB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,eAAe,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB;QAC/F,WAAW,MAAM,CAAC,IAAI,IAAI,CAC7B,CACF,CAAC;IACF,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,mEAAmE;IACnE,yBAAyB;IACzB,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,MAAM,MAAM,CAAkC;YAC3D,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,wDAAwD,EAAE,KAAK,EAAE,UAAU,EAAE;gBACrF,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAClD,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,OAAO,EAAE;aAC3D;YACD,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,2BAA2B,MAAM,CAAC,IAAI,4BAA4B,MAAM,CAAC,IAAI,qBAAqB,CACnG,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAE7E,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IAEtF,6CAA6C;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB;IACjC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,QAAQ,YAAY,CAAC,CAAC;QACzF,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC;QACxF,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC;QAC3F,KAAK,gBAAgB;YACnB,OAAO,KAAK,CAAC,GAAG,CACd,oCAAoC,IAAI,CAAC,IAAI,iCAAiC,CAC/E,CAAC;QACJ,KAAK,wBAAwB;YAC3B,OAAO,KAAK,CAAC,GAAG,CACd,gDAAgD,IAAI,CAAC,IAAI,8CAA8C,CACxG,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,mCAAmC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3G,KAAK,YAAY;YACf,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,WAAW;YACd,OAAO,mBAAmB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACxE,KAAK,WAAW;YACd,OAAO,mBAAmB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,mBAAmB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACpE,KAAK,QAAQ;YACX,OAAO,kBAAkB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1D,KAAK,UAAU;YACb,OAAO,UAAU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,KAAK,UAAU;YACb,OAAO,mDAAmD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,KAAK,UAAU;YACb,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,iBAAiB;YACpB,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,gBAAgB;YACnB,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,UAAU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,KAAK,qBAAqB;YACxB,OAAO,KAAK,CAAC,GAAG,CACd,oBAAoB,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,QAAQ,wBAAwB,IAAI,CAAC,MAAM,EAAE,CAC5G,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAE7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAiB,EAAE,OAAwB,EAAE;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;IAE9F,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAEjC,kEAAkE;QAClE,oEAAoE;QACpE,mEAAmE;QACnE,kEAAkE;QAClE,qCAAqC;QACrC,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5F,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,OAAO,MAAM,CAAC,KAAK,0DAA0D,IAAI,IAAI,CACtF,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,4FAA4F,CAC7F,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;gBACvB,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,YAAY;gBAC1D,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,qEAAqE;QACrE,gCAAgC;QAChC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,OAAO,SAAS,CAAC,MAAM,qDAAqD,MAAM,CAAC,IAAI,gBAAgB,CACxG,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;kDAGkD;AAClD,SAAS,gBAAgB,CAAC,MAAiB,EAAE,SAAuB;IAClE,gEAAgE;IAChE,oEAAoE;IACpE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAgB;IACrC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,UAAU;QACxB,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,IAAI,CAAC,IAAI,KAAK,QAAQ;QACtB,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAChC,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAC9B,IAAI,CAAC,IAAI,KAAK,WAAW;QACzB,IAAI,CAAC,IAAI,KAAK,wBAAwB;QACtC,IAAI,CAAC,IAAI,KAAK,qBAAqB,CACpC,CAAC;AACJ,CAAC;AAED;;;;;;;;;gCASgC;AAChC,KAAK,UAAU,qBAAqB,CAClC,MAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,mEAAmE;QACnE,qDAAqD;QACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACvE,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC9C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,KAAK,WAAW;YACd,OAAO,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,KAAK,WAAW;YACd,OAAO,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,KAAK,QAAQ;YACX,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,KAAK,QAAQ;YACX,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,YAAY;YACf,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,UAAU;YACb,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,KAAK,kBAAkB;YACrB,OAAO,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,KAAK,YAAY;YACf,OAAO,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,KAAK,gBAAgB;YACnB,OAAO,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,KAAK,WAAW;YACd,OAAO,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,wBAAwB;YAC3B,OAAO,yCAAyC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,KAAK,WAAW;YACd,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,UAAU;YACb,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,iBAAiB;YACpB,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,gBAAgB;YACnB,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,KAAK,qBAAqB;YACxB,OAAO,qBAAqB,IAAI,CAAC,IAAI,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAgB,EAChB,UAAkB;IAElB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,WAAW,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACvF,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvB,qDAAqD;gBACrD,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;oBAAE,OAAO,WAAW,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,WAAW,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;QACnC,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,gEAAgE;YAChE,8DAA8D;YAC9D,wCAAwC;YACxC,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;YACjC,MAAM,GAAG,GAA2B,EAAE,CAAC;YACvC,IAAI,GAAG,EAAE,QAAQ,KAAK,YAAY,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACnD,GAAG,CAAC,2BAA2B,GAAG,GAAG,CAAC,QAAQ,CAAC;YACjD,CAAC;iBAAM,IAAI,GAAG,EAAE,QAAQ,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACpE,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,QAAQ,CAAC;gBACxC,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,WAAW,EACX,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC,EAC5D,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAC1C,CAAC;YACF,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;YACvD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,8DAA8D;gBAC9D,2DAA2D;gBAC3D,+DAA+D;gBAC/D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,gEAAgE;gBAChE,sDAAsD;gBACtD,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,CAAC;gBACnC,IAAI,0CAA0C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzD,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;oBACxE,MAAM,IAAI,YAAY,CACpB,sEAAsE,EACtE;wBACE,QAAQ,UAAU,sCAAsC;wBACxD,kCAAkC,UAAU,iCAAiC;qBAC9E,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,iBAAiB,CAAC;QACvB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,WAAW,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,8DAA8D;YAC9D,4DAA4D;YAC5D,6DAA6D;YAC7D,8DAA8D;YAC9D,6DAA6D;YAC7D,eAAe;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,WAAW,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACrE,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC;QACD,KAAK,WAAW;YACd,wEAAwE;YACxE,oDAAoD;YACpD,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { join, resolve } from "node:path";
2
+ import { existsSync } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
3
4
  import { confirm } from "@inquirer/prompts";
4
5
  import chalk from "chalk";
5
6
  import { ensureCoolify, ensureGitHub, ensureHetzner, ensureS3, getConfig, getConfigPath, getMlServices, isFirstRun, reconfigureProvider, resetConfig, runOnboarding, } from "./config.js";
@@ -336,6 +337,27 @@ async function detectRepoSlug() {
336
337
  function opts(result) {
337
338
  return { pushedAnywhere: !!result.pushedCoolify || !!result.pushedGh };
338
339
  }
340
+ /** Walk up from `serverEnvDir` looking for the closest `.hatchkit.json`,
341
+ * capped at 4 levels so we never escape a project tree. Used by the
342
+ * non-interactive `hatchkit add` path to find the manifest without
343
+ * forcing the user to pass `--project-dir` explicitly when the env
344
+ * dir already lives inside the project (`packages/server`,
345
+ * `apps/web`, etc.). Returns undefined when no manifest is found —
346
+ * callers fall back to "skip s3" with a hint. */
347
+ function inferProjectDir(serverEnvDir) {
348
+ if (!serverEnvDir)
349
+ return undefined;
350
+ let cur = serverEnvDir;
351
+ for (let i = 0; i < 4; i++) {
352
+ if (existsSync(join(cur, ".hatchkit.json")))
353
+ return cur;
354
+ const up = dirname(cur);
355
+ if (up === cur)
356
+ break;
357
+ cur = up;
358
+ }
359
+ return undefined;
360
+ }
339
361
  async function handleAdd() {
340
362
  // Positional args are optional — anything missing is prompted for.
341
363
  // hatchkit add (fully interactive)
@@ -345,7 +367,7 @@ async function handleAdd() {
345
367
  const positional = args.slice(1).filter((a) => !a.startsWith("--"));
346
368
  let baseName = positional[0];
347
369
  const rawService = positional[1];
348
- const allServices = ["glitchtip", "openpanel", "resend"];
370
+ const allServices = ["glitchtip", "openpanel", "resend", "s3"];
349
371
  if (!baseName) {
350
372
  const { input } = await import("@inquirer/prompts");
351
373
  const { validateProjectName } = await import("./utils/validate.js");
@@ -358,11 +380,16 @@ async function handleAdd() {
358
380
  if (!rawService) {
359
381
  const { multiselect } = await import("./utils/multiselect.js");
360
382
  services = await multiselect({
361
- message: "Which services to add (-dev and -prod pair each)?",
383
+ message: "Which services to add?",
362
384
  choices: [
363
385
  { name: "GlitchTip (error tracking)", value: "glitchtip", checked: true },
364
386
  { name: "OpenPanel (product analytics)", value: "openpanel", checked: true },
365
387
  { name: "Resend (transactional email)", value: "resend", checked: true },
388
+ {
389
+ name: "S3 / R2 (per-bucket scoped credentials from .hatchkit.json)",
390
+ value: "s3",
391
+ checked: false,
392
+ },
366
393
  ],
367
394
  required: true,
368
395
  });
@@ -392,18 +419,20 @@ async function handleAdd() {
392
419
  const surfaceFlag = args.find((a) => a.startsWith("--surfaces="))?.slice("--surfaces=".length);
393
420
  const serverDirIdx = args.indexOf("--server-dir");
394
421
  const clientDirIdx = args.indexOf("--client-dir");
422
+ const projectDirIdx = args.indexOf("--project-dir");
395
423
  const serverDirFlag = serverDirIdx >= 0 ? args[serverDirIdx + 1] : undefined;
396
424
  const clientDirFlag = clientDirIdx >= 0 ? args[clientDirIdx + 1] : undefined;
425
+ const projectDirFlag = projectDirIdx >= 0 ? args[projectDirIdx + 1] : undefined;
397
426
  const { resolve: resolvePath } = await import("node:path");
398
427
  const validSurfaceModes = ["shared", "separate", "server-only", "client-only"];
399
428
  let surfaces = undefined;
400
429
  if (noWrite) {
401
430
  surfaces = false;
402
431
  }
403
- else if (surfaceFlag || serverDirFlag || clientDirFlag) {
432
+ else if (surfaceFlag || serverDirFlag || clientDirFlag || projectDirFlag) {
404
433
  // Non-interactive surface config: require every field we need.
405
434
  if (!surfaceFlag || !validSurfaceModes.includes(surfaceFlag)) {
406
- console.log(chalk.red(` --surfaces=<mode> is required when --server-dir/--client-dir is passed.\n Valid: ${validSurfaceModes.join(", ")}`));
435
+ console.log(chalk.red(` --surfaces=<mode> is required when --server-dir/--client-dir/--project-dir is passed.\n Valid: ${validSurfaceModes.join(", ")}`));
407
436
  process.exit(1);
408
437
  }
409
438
  const mode = surfaceFlag;
@@ -421,6 +450,14 @@ async function handleAdd() {
421
450
  mode,
422
451
  serverEnvDir: needsServer ? resolvePath(serverDirFlag) : undefined,
423
452
  clientEnvDir: needsClient ? resolvePath(clientDirFlag) : undefined,
453
+ // --project-dir is optional in the flag path. When provided, it
454
+ // points at the directory holding `.hatchkit.json` (needed for
455
+ // the `s3` service to read s3Buckets). When absent and the
456
+ // serverEnvDir is a `packages/server` style subdir, we infer it
457
+ // by walking up two segments.
458
+ projectDir: projectDirFlag
459
+ ? resolvePath(projectDirFlag)
460
+ : inferProjectDir(needsServer ? resolvePath(serverDirFlag) : undefined),
424
461
  };
425
462
  }
426
463
  await runProvision({ baseName, services, surfaces, enableDevObs });
@@ -604,7 +641,7 @@ async function handleRemove() {
604
641
  const skipConfirm = args.includes("--yes") || args.includes("-y");
605
642
  let baseName = positional[0];
606
643
  const rawService = positional[1];
607
- const allServices = ["glitchtip", "openpanel", "resend"];
644
+ const allServices = ["glitchtip", "openpanel", "resend", "s3"];
608
645
  if (!baseName) {
609
646
  const { input } = await import("@inquirer/prompts");
610
647
  const { validateProjectName } = await import("./utils/validate.js");
@@ -617,11 +654,12 @@ async function handleRemove() {
617
654
  if (!rawService) {
618
655
  const { multiselect } = await import("./utils/multiselect.js");
619
656
  services = await multiselect({
620
- message: "Which services to remove (-dev AND -prod clients each)?",
657
+ message: "Which services to remove?",
621
658
  choices: [
622
659
  { name: "GlitchTip (deletes the project)", value: "glitchtip", checked: true },
623
660
  { name: "OpenPanel (deletes the project)", value: "openpanel", checked: true },
624
661
  { name: "Resend (deletes the API key)", value: "resend", checked: true },
662
+ { name: "S3 / R2 (deletes per-bucket scoped tokens)", value: "s3", checked: false },
625
663
  ],
626
664
  required: true,
627
665
  });
@@ -643,7 +681,7 @@ async function handleRemove() {
643
681
  if (!skipConfirm && !dryRun) {
644
682
  const { confirm } = await import("@inquirer/prompts");
645
683
  const ok = await confirm({
646
- message: `Delete -dev and -prod clients of "${baseName}" from ${services.join(", ")}? This can't be undone.`,
684
+ message: `Delete clients of "${baseName}" from ${services.join(", ")}? This can't be undone.`,
647
685
  default: false,
648
686
  });
649
687
  if (!ok) {
@@ -651,7 +689,21 @@ async function handleRemove() {
651
689
  return;
652
690
  }
653
691
  }
654
- await runUnprovision({ baseName, services, dryRun });
692
+ // For `s3` removal, hand the orchestrator a projectDir so it can read
693
+ // the manifest's s3Buckets list. Default: walk up from the named
694
+ // project directory if it exists; the s3 unprovision falls back to
695
+ // a keychain sweep when the manifest can't be found.
696
+ let projectDir;
697
+ if (services.includes("s3")) {
698
+ const guess = resolve(baseName);
699
+ if (existsSync(join(guess, ".hatchkit.json"))) {
700
+ projectDir = guess;
701
+ }
702
+ else if (existsSync(join(process.cwd(), ".hatchkit.json"))) {
703
+ projectDir = process.cwd();
704
+ }
705
+ }
706
+ await runUnprovision({ baseName, services, dryRun, projectDir });
655
707
  }
656
708
  async function handleDns() {
657
709
  const sub = args[1];
@@ -1373,6 +1425,11 @@ function printHelp(topic) {
1373
1425
  glitchtip GLITCHTIP_DSN (server) / PUBLIC_GLITCHTIP_DSN (client)
1374
1426
  openpanel OPENPANEL_* (server) / PUBLIC_OPENPANEL_* (client)
1375
1427
  resend RESEND_API_KEY (server only)
1428
+ s3 R2_<BUCKET>_ACCESS_KEY_ID / *_SECRET_ACCESS_KEY / *_BUCKET / R2_ENDPOINT
1429
+ — mints a per-bucket scoped Cloudflare R2 API token for every
1430
+ bucket declared in .hatchkit.json (s3Buckets). Single-bucket
1431
+ projects also get unprefixed R2_ACCESS_KEY_ID / R2_SECRET_ACCESS_KEY
1432
+ aliases. Buckets must already exist (s3Provider: "existing").
1376
1433
 
1377
1434
  ${chalk.bold("Flags:")}
1378
1435
  --enable-dev-obs Also populate .env.development with obs creds.
@@ -1380,6 +1437,8 @@ function printHelp(topic) {
1380
1437
  --surfaces=<mode> shared | server-only | client-only | separate
1381
1438
  --server-dir <path> Server env directory (skips prompt when set).
1382
1439
  --client-dir <path> Client env directory (skips prompt when set).
1440
+ --project-dir <path> Project root holding .hatchkit.json (s3 only;
1441
+ inferred from --server-dir if omitted).
1383
1442
 
1384
1443
  ${chalk.bold("Examples:")}
1385
1444
  hatchkit add
@@ -1485,6 +1544,8 @@ function printHelp(topic) {
1485
1544
  glitchtip Deletes the GlitchTip project
1486
1545
  openpanel Deletes the OpenPanel project (and clears cached creds)
1487
1546
  resend Finds API keys by name and deletes them
1547
+ s3 Deletes per-bucket scoped Cloudflare R2 API tokens
1548
+ (clears the keychain entries and DELETEs upstream)
1488
1549
 
1489
1550
  ${chalk.bold("Options:")}
1490
1551
  --dry-run Print what would be deleted; hit no APIs, remove no files.