@stacksjs/ts-cloud 0.7.66 → 0.7.68

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 (60) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/cli.js +495 -495
  3. package/dist/{chunk-tzqng3ae.js → chunk-349k40rw.js} +2 -2
  4. package/dist/{chunk-gcsv7g83.js → chunk-ef2dwfrg.js} +3 -3
  5. package/dist/{chunk-001z7khv.js → chunk-gttvakpv.js} +12 -6
  6. package/dist/{chunk-z3bakpnh.js → chunk-s9c2x5jv.js} +2 -2
  7. package/dist/deploy/index.js +4 -4
  8. package/dist/dns/index.js +1 -1
  9. package/dist/drivers/hetzner/host-optimization.d.ts +19 -0
  10. package/dist/drivers/index.js +1 -1
  11. package/dist/index.js +4 -4
  12. package/dist/ui/access-denied.html +2 -2
  13. package/dist/ui/account/automation.html +3 -3
  14. package/dist/ui/account/security.html +2 -2
  15. package/dist/ui/applications/compose.html +4 -4
  16. package/dist/ui/applications/new.html +2 -2
  17. package/dist/ui/data/backups.html +4 -4
  18. package/dist/ui/data/services.html +4 -4
  19. package/dist/ui/data/volumes.html +4 -4
  20. package/dist/ui/index.html +4 -4
  21. package/dist/ui/integrations.html +2 -2
  22. package/dist/ui/operations/alerts.html +4 -4
  23. package/dist/ui/operations/configuration.html +4 -4
  24. package/dist/ui/operations/jobs.html +4 -4
  25. package/dist/ui/operations/maintenance.html +4 -4
  26. package/dist/ui/operations/observability.html +4 -4
  27. package/dist/ui/operations/previews.html +4 -4
  28. package/dist/ui/operations/queue.html +4 -4
  29. package/dist/ui/operations/regions.html +4 -4
  30. package/dist/ui/operations/releases.html +4 -4
  31. package/dist/ui/operations/workloads.html +4 -4
  32. package/dist/ui/security.html +2 -2
  33. package/dist/ui/server/actions.html +4 -4
  34. package/dist/ui/server/activity.html +2 -2
  35. package/dist/ui/server/capacity.html +4 -4
  36. package/dist/ui/server/database.html +3 -3
  37. package/dist/ui/server/deployments.html +4 -4
  38. package/dist/ui/server/diagnostics.html +2 -2
  39. package/dist/ui/server/firewall.html +3 -3
  40. package/dist/ui/server/fleet.html +4 -4
  41. package/dist/ui/server/logs.html +4 -4
  42. package/dist/ui/server/metrics.html +4 -4
  43. package/dist/ui/server/security.html +2 -2
  44. package/dist/ui/server/services.html +2 -2
  45. package/dist/ui/server/sites.html +4 -4
  46. package/dist/ui/server/ssh-keys.html +4 -4
  47. package/dist/ui/server/team.html +4 -4
  48. package/dist/ui/server/terminal.html +2 -2
  49. package/dist/ui/serverless/alarms.html +4 -4
  50. package/dist/ui/serverless/cost.html +2 -2
  51. package/dist/ui/serverless/data.html +4 -4
  52. package/dist/ui/serverless/firewall.html +2 -2
  53. package/dist/ui/serverless/functions.html +4 -4
  54. package/dist/ui/serverless/logs.html +4 -4
  55. package/dist/ui/serverless/queues.html +4 -4
  56. package/dist/ui/serverless/secrets.html +4 -4
  57. package/dist/ui/serverless/traces.html +4 -4
  58. package/dist/ui/serverless.html +3 -3
  59. package/package.json +3 -3
  60. /package/dist/{chunk-xawdhj7z.js → chunk-1p8jah5z.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deployStaticSiteWithExternalDnsFull
3
- } from "./chunk-gcsv7g83.js";
3
+ } from "./chunk-ef2dwfrg.js";
4
4
  import {
5
5
  box,
6
6
  error,
@@ -45,7 +45,7 @@ import {
45
45
  resolveSiteKind,
46
46
  resolveUiSource,
47
47
  siteInstallBase
48
- } from "./chunk-xawdhj7z.js";
48
+ } from "./chunk-1p8jah5z.js";
49
49
  import {
50
50
  artifactKey,
51
51
  buildCloudFormationTemplate,
@@ -7,7 +7,7 @@ import {
7
7
  Route53Provider,
8
8
  UnifiedDnsValidator,
9
9
  createDnsProvider
10
- } from "./chunk-001z7khv.js";
10
+ } from "./chunk-gttvakpv.js";
11
11
  import {
12
12
  CloudFormationClient
13
13
  } from "./chunk-4cjrg98a.js";
@@ -815,7 +815,7 @@ async function deployStaticSiteWithExternalDnsFull(config) {
815
815
  }
816
816
  }
817
817
  onProgress?.("upload", "Uploading files to S3...");
818
- const { uploadStaticFiles } = await import("./chunk-z3bakpnh.js");
818
+ const { uploadStaticFiles } = await import("./chunk-s9c2x5jv.js");
819
819
  const uploadResult = await uploadStaticFiles({
820
820
  sourceDir,
821
821
  bucket: infraResult.bucket,
@@ -835,7 +835,7 @@ async function deployStaticSiteWithExternalDnsFull(config) {
835
835
  }
836
836
  if (infraResult.distributionId && uploadResult.uploaded > 0) {
837
837
  onProgress?.("invalidate", "Invalidating CloudFront cache...");
838
- const { invalidateCache } = await import("./chunk-z3bakpnh.js");
838
+ const { invalidateCache } = await import("./chunk-s9c2x5jv.js");
839
839
  await invalidateCache(infraResult.distributionId);
840
840
  }
841
841
  onProgress?.("complete", "Deployment complete!");
@@ -869,8 +869,14 @@ class Route53Provider {
869
869
  }
870
870
  return null;
871
871
  }
872
- normalizeName(name) {
873
- return name.endsWith(".") ? name : `${name}.`;
872
+ normalizeName(domain, name) {
873
+ const zone = domain.replace(/\.$/, "");
874
+ const record = name.replace(/\.$/, "");
875
+ if (!record || record === "@")
876
+ return `${zone}.`;
877
+ if (record === zone || record.endsWith(`.${zone}`))
878
+ return `${record}.`;
879
+ return `${record}.${zone}.`;
874
880
  }
875
881
  async createRecord(domain, record) {
876
882
  try {
@@ -881,7 +887,7 @@ class Route53Provider {
881
887
  message: `No hosted zone found for domain: ${domain}`
882
888
  };
883
889
  }
884
- const recordName = this.normalizeName(record.name);
890
+ const recordName = this.normalizeName(domain, record.name);
885
891
  let recordValue = record.content;
886
892
  if (record.type === "TXT" && !recordValue.startsWith('"')) {
887
893
  recordValue = `"${recordValue}"`;
@@ -927,7 +933,7 @@ class Route53Provider {
927
933
  message: `No hosted zone found for domain: ${domain}`
928
934
  };
929
935
  }
930
- const recordName = this.normalizeName(record.name);
936
+ const recordName = this.normalizeName(domain, record.name);
931
937
  let recordValue = record.content;
932
938
  if (record.type === "TXT" && !recordValue.startsWith('"')) {
933
939
  recordValue = `"${recordValue}"`;
@@ -973,7 +979,7 @@ class Route53Provider {
973
979
  message: `No hosted zone found for domain: ${domain}`
974
980
  };
975
981
  }
976
- const recordName = this.normalizeName(record.name);
982
+ const recordName = this.normalizeName(domain, record.name);
977
983
  let recordValue = record.content;
978
984
  if (record.type === "TXT" && !recordValue.startsWith('"')) {
979
985
  recordValue = `"${recordValue}"`;
@@ -1091,7 +1097,7 @@ class Route53Provider {
1091
1097
  }
1092
1098
  const result = await this.client.createAliasRecord({
1093
1099
  HostedZoneId: hostedZoneId,
1094
- Name: this.normalizeName(params.name),
1100
+ Name: this.normalizeName(params.domain, params.name),
1095
1101
  TargetHostedZoneId: params.targetHostedZoneId,
1096
1102
  TargetDNSName: params.targetDnsName,
1097
1103
  EvaluateTargetHealth: params.evaluateTargetHealth,
@@ -5,9 +5,9 @@ import {
5
5
  generateStaticSiteTemplate,
6
6
  invalidateCache,
7
7
  uploadStaticFiles
8
- } from "./chunk-gcsv7g83.js";
8
+ } from "./chunk-ef2dwfrg.js";
9
9
  import"./chunk-01d86gt1.js";
10
- import"./chunk-001z7khv.js";
10
+ import"./chunk-gttvakpv.js";
11
11
  import"./chunk-4cjrg98a.js";
12
12
  import"./chunk-32e7ya18.js";
13
13
  import"./chunk-wj3s95p9.js";
@@ -32,7 +32,7 @@ import {
32
32
  synchronizeDashboardUsers,
33
33
  trackDashboardOperation,
34
34
  verifyStaticApiOrigin
35
- } from "../chunk-tzqng3ae.js";
35
+ } from "../chunk-349k40rw.js";
36
36
  import {
37
37
  deleteStaticSite,
38
38
  deployStaticSite,
@@ -43,7 +43,7 @@ import {
43
43
  generateStaticSiteTemplate,
44
44
  invalidateCache,
45
45
  uploadStaticFiles
46
- } from "../chunk-gcsv7g83.js";
46
+ } from "../chunk-ef2dwfrg.js";
47
47
  import {
48
48
  buildAndPushServerlessImage
49
49
  } from "../chunk-28vh1h91.js";
@@ -51,7 +51,7 @@ import"../chunk-ybcz6sxc.js";
51
51
  import"../chunk-01d86gt1.js";
52
52
  import"../chunk-50jpda9q.js";
53
53
  import"../chunk-he9a874b.js";
54
- import"../chunk-001z7khv.js";
54
+ import"../chunk-gttvakpv.js";
55
55
  import {
56
56
  MANAGEMENT_DASHBOARD_SITE,
57
57
  buildManagementDashboardArtifact,
@@ -65,7 +65,7 @@ import {
65
65
  shipsARelease,
66
66
  siteInstallBase,
67
67
  validateDeploymentConfig
68
- } from "../chunk-xawdhj7z.js";
68
+ } from "../chunk-1p8jah5z.js";
69
69
  import"../chunk-ecsyc3p0.js";
70
70
  import"../chunk-703nkybg.js";
71
71
  import"../chunk-4cjrg98a.js";
package/dist/dns/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  createRoute53Validator,
12
12
  detectDnsProvider,
13
13
  dnsProviders
14
- } from "../chunk-001z7khv.js";
14
+ } from "../chunk-gttvakpv.js";
15
15
  import"../chunk-32e7ya18.js";
16
16
  import"../chunk-zqtpg06c.js";
17
17
  import"../chunk-v0bahtg2.js";
@@ -1,5 +1,6 @@
1
1
  import type { CloudConfig } from '@ts-cloud/core';
2
2
  import type { RemoteExecOptions } from '../shared/remote-exec';
3
+ import type { HetznerResizeManifest } from './resize-remote';
3
4
  export interface HetznerHostOptimizationPlan {
4
5
  firewallPorts: number[];
5
6
  monitoring: boolean;
@@ -26,6 +27,24 @@ export interface HetznerHostOptimizationReport {
26
27
  export interface HetznerHostOptimizationOptions extends RemoteExecOptions {
27
28
  host: string;
28
29
  }
30
+ export interface HetznerHostContinuityFailures {
31
+ stoppedServices: string[];
32
+ changedRouteFragments: string[];
33
+ missingRouteIds: string[];
34
+ changedReleaseLinks: string[];
35
+ missingData: string[];
36
+ }
37
+ /**
38
+ * Compare workload identities rather than immutable release values.
39
+ *
40
+ * Host optimization does not stop application services, but a normal deploy
41
+ * may finish while its package installs and system services are being
42
+ * reconciled. In that case `api@old.service` becoming `api@new.service`, a
43
+ * `current` link advancing, or a route fragment being atomically rewritten is
44
+ * healthy continuity, not loss. Exact route IDs and data catalog entries still
45
+ * have to survive, and a workload with no replacement still fails closed.
46
+ */
47
+ export declare function verifyHetznerHostContinuity(before: HetznerResizeManifest, after: HetznerResizeManifest): HetznerHostContinuityFailures;
29
48
  export declare function resolveHetznerHostOptimizationPlan(config: CloudConfig): HetznerHostOptimizationPlan;
30
49
  export declare function buildHetznerHostOptimizationScript(config: CloudConfig): string[];
31
50
  export declare function applyHetznerHostOptimization(config: CloudConfig, options: HetznerHostOptimizationOptions): Promise<void>;
@@ -68,7 +68,7 @@ import {
68
68
  waitForSsh,
69
69
  wrapCloudInitUserData,
70
70
  writeResizeCheckpoint
71
- } from "../chunk-xawdhj7z.js";
71
+ } from "../chunk-1p8jah5z.js";
72
72
  import"../chunk-ecsyc3p0.js";
73
73
  import"../chunk-703nkybg.js";
74
74
  import"../chunk-4cjrg98a.js";
package/dist/index.js CHANGED
@@ -285,7 +285,7 @@ import {
285
285
  volumeCapabilities,
286
286
  webhookEndpoint,
287
287
  zeroCapacity
288
- } from "./chunk-tzqng3ae.js";
288
+ } from "./chunk-349k40rw.js";
289
289
  import {
290
290
  deleteStaticSite,
291
291
  deployStaticSite,
@@ -296,7 +296,7 @@ import {
296
296
  generateStaticSiteTemplate,
297
297
  invalidateCache,
298
298
  uploadStaticFiles
299
- } from "./chunk-gcsv7g83.js";
299
+ } from "./chunk-ef2dwfrg.js";
300
300
  import {
301
301
  buildAndPushServerlessImage
302
302
  } from "./chunk-28vh1h91.js";
@@ -361,7 +361,7 @@ import {
361
361
  createRoute53Validator,
362
362
  detectDnsProvider,
363
363
  dnsProviders
364
- } from "./chunk-001z7khv.js";
364
+ } from "./chunk-gttvakpv.js";
365
365
  import {
366
366
  AwsDriver,
367
367
  CloudDriverFactory,
@@ -398,7 +398,7 @@ import {
398
398
  waitForCloudInit,
399
399
  waitForSsh,
400
400
  wrapCloudInitUserData
401
- } from "./chunk-xawdhj7z.js";
401
+ } from "./chunk-1p8jah5z.js";
402
402
  import {
403
403
  ABTestManager,
404
404
  AI,