@stacksjs/ts-cloud 0.7.10 → 0.7.11

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 (42) hide show
  1. package/dist/bin/cli.js +320 -320
  2. package/dist/{chunk-6va72rhh.js → chunk-1518raqr.js} +5 -4
  3. package/dist/{chunk-pegd7rmf.js → chunk-9ra8b9b4.js} +2 -2
  4. package/dist/{chunk-0wxyppza.js → chunk-m03vddvr.js} +1 -1
  5. package/dist/{chunk-7pym4v5b.js → chunk-nw5nnffj.js} +49 -15
  6. package/dist/{chunk-c6rgvg1j.js → chunk-vsgkcpqw.js} +62 -29
  7. package/dist/deploy/index.js +4 -4
  8. package/dist/deploy/management-dashboard.d.ts +2 -0
  9. package/dist/drivers/index.js +2 -2
  10. package/dist/drivers/shared/db-provision.test.d.ts +1 -0
  11. package/dist/index.js +12 -4
  12. package/dist/ui/index.html +4 -4
  13. package/dist/ui/server/actions.html +4 -4
  14. package/dist/ui/server/activity.html +1 -1
  15. package/dist/ui/server/backups.html +4 -4
  16. package/dist/ui/server/database.html +4 -4
  17. package/dist/ui/server/deployments.html +4 -4
  18. package/dist/ui/server/diagnostics.html +1 -1
  19. package/dist/ui/server/firewall.html +4 -4
  20. package/dist/ui/server/logs.html +4 -4
  21. package/dist/ui/server/metrics.html +1 -1
  22. package/dist/ui/server/security.html +1 -1
  23. package/dist/ui/server/services.html +4 -4
  24. package/dist/ui/server/sites.html +4 -4
  25. package/dist/ui/server/ssh-keys.html +4 -4
  26. package/dist/ui/server/terminal.html +4 -4
  27. package/dist/ui/server/workers.html +4 -4
  28. package/dist/ui/serverless/alarms.html +4 -4
  29. package/dist/ui/serverless/assets.html +4 -4
  30. package/dist/ui/serverless/cost.html +1 -1
  31. package/dist/ui/serverless/data.html +4 -4
  32. package/dist/ui/serverless/deployments.html +4 -4
  33. package/dist/ui/serverless/firewall.html +1 -1
  34. package/dist/ui/serverless/functions.html +4 -4
  35. package/dist/ui/serverless/logs.html +4 -4
  36. package/dist/ui/serverless/metrics.html +1 -1
  37. package/dist/ui/serverless/queues.html +4 -4
  38. package/dist/ui/serverless/scheduler.html +4 -4
  39. package/dist/ui/serverless/secrets.html +4 -4
  40. package/dist/ui/serverless/traces.html +4 -4
  41. package/dist/ui/serverless.html +4 -4
  42. package/package.json +3 -3
@@ -6,7 +6,7 @@ import {
6
6
  step,
7
7
  success,
8
8
  warn
9
- } from "./chunk-0wxyppza.js";
9
+ } from "./chunk-m03vddvr.js";
10
10
  import {
11
11
  CloudWatchLogsClient,
12
12
  CostExplorerClient,
@@ -26,7 +26,7 @@ import {
26
26
  resolveSiteFramework,
27
27
  resolveSiteKind,
28
28
  resolveUiSource
29
- } from "./chunk-7pym4v5b.js";
29
+ } from "./chunk-nw5nnffj.js";
30
30
  import {
31
31
  artifactKey,
32
32
  composeServerlessAppTemplate,
@@ -40,7 +40,7 @@ import {
40
40
  resolveServerlessArtifactBucketName,
41
41
  resolveServerlessAssetBucketName,
42
42
  resolveServerlessRuntime
43
- } from "./chunk-c6rgvg1j.js";
43
+ } from "./chunk-vsgkcpqw.js";
44
44
  import {
45
45
  deployStaticSiteWithExternalDnsFull
46
46
  } from "./chunk-d7p84vz5.js";
@@ -345,7 +345,7 @@ async function deployServerlessApp(config, environment, opts = {}) {
345
345
  }
346
346
  if (imageMode) {
347
347
  step("Building + pushing container image");
348
- const { buildAndPushServerlessImage } = await import("./chunk-pegd7rmf.js");
348
+ const { buildAndPushServerlessImage } = await import("./chunk-9ra8b9b4.js");
349
349
  const built = await buildAndPushServerlessImage({
350
350
  app,
351
351
  projectRoot,
@@ -8195,6 +8195,7 @@ class Logger3 {
8195
8195
  }
8196
8196
  }
8197
8197
  var logger3 = new Logger3("stacks");
8198
+
8198
8199
  class BunfigError2 extends Error {
8199
8200
  timestamp;
8200
8201
  context;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  buildAndPushServerlessImage
3
- } from "./chunk-0wxyppza.js";
3
+ } from "./chunk-m03vddvr.js";
4
4
  import"./chunk-hsk6fe6x.js";
5
- import"./chunk-c6rgvg1j.js";
5
+ import"./chunk-vsgkcpqw.js";
6
6
  import"./chunk-arsh1g5h.js";
7
7
  import"./chunk-v0bahtg2.js";
8
8
  export {
@@ -8,7 +8,7 @@ import {
8
8
  phpRuntimeLayerAssets,
9
9
  runPhpBuildHooks,
10
10
  sha256
11
- } from "./chunk-c6rgvg1j.js";
11
+ } from "./chunk-vsgkcpqw.js";
12
12
 
13
13
  // src/deploy/serverless-image.ts
14
14
  import { execFileSync } from "node:child_process";
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  deploymentCoexistenceError,
3
3
  hasManagementDashboardSite,
4
+ isManagementDashboardSiteName,
4
5
  resolveCloudProvider,
5
- resolveManagementDashboardSite,
6
+ resolveManagementDashboardSites,
6
7
  resolveProjectStackName
7
- } from "./chunk-c6rgvg1j.js";
8
+ } from "./chunk-vsgkcpqw.js";
8
9
  import {
9
10
  EC2Client,
10
11
  SSMClient
@@ -194,7 +195,8 @@ function buildDatabaseSetupScript(database, services = {}) {
194
195
  function buildManagedDbEnv(database) {
195
196
  if (!database?.name)
196
197
  return {};
197
- const connection = database.engine === "postgres" ? "pgsql" : "mysql";
198
+ const isSingleStore = database.engine === "singlestore";
199
+ const connection = database.engine === "postgres" ? "pgsql" : isSingleStore ? "singlestore" : "mysql";
198
200
  const port = database.port ?? (database.engine === "postgres" ? 5432 : 3306);
199
201
  const env = {
200
202
  DB_CONNECTION: connection,
@@ -206,6 +208,8 @@ function buildManagedDbEnv(database) {
206
208
  env.DB_USERNAME = database.username;
207
209
  if (database.password)
208
210
  env.DB_PASSWORD = database.password;
211
+ if (isSingleStore && database.ssl !== false)
212
+ env.DB_SSL = "true";
209
213
  return env;
210
214
  }
211
215
 
@@ -3616,7 +3620,8 @@ function buildSiteDeployScript(options) {
3616
3620
  `TS_CLOUD_OLD_UNITS=$(systemctl list-units --plain --no-legend --type=service "${unitBase}@*.service" 2>/dev/null | awk '{print $1}' | grep -v "^${instance}$" || true)`,
3617
3621
  `if [ -f /etc/systemd/system/${serviceName} ] && systemctl is-active --quiet ${serviceName}; then echo "[ts-cloud] retiring pre-zero-downtime unit ${serviceName} (one-time restart cutover)"; systemctl stop ${serviceName}; fi`,
3618
3622
  `systemctl start ${instance}`,
3619
- `for TS_CLOUD_I in $(seq 1 ${Math.max(1, healthGateSeconds)}); do sleep 1; systemctl is-active --quiet ${instance} || ${failGate}; done`,
3623
+ `TS_CLOUD_GATE_OK=1; for TS_CLOUD_I in $(seq 1 ${Math.max(1, healthGateSeconds)}); do sleep 1; systemctl is-active --quiet ${instance} || { TS_CLOUD_GATE_OK=0; break; }; done`,
3624
+ `if [ "$TS_CLOUD_GATE_OK" -ne 1 ]; then echo "[ts-cloud] release ${releaseId} could not overlap the previous release (no SO_REUSEPORT?) — retiring old instances and retrying" >&2; for TS_CLOUD_RU in \${TS_CLOUD_OLD_UNITS}; do systemctl stop "$TS_CLOUD_RU" 2>/dev/null || true; done; systemctl restart ${instance}; for TS_CLOUD_I in $(seq 1 ${Math.max(1, healthGateSeconds)}); do sleep 1; systemctl is-active --quiet ${instance} || ${failGate}; done; fi`,
3620
3625
  ...gatePath ? [`curl -sf -o /dev/null --max-time 10 "http://127.0.0.1:${port}${gatePath}" || ${failGate}`] : [],
3621
3626
  ...buildActivateRelease(paths),
3622
3627
  `systemctl enable ${instance} 2>/dev/null || true`,
@@ -3680,6 +3685,11 @@ function buildLocalArtifactFetch(localPath, siteName) {
3680
3685
  `cp "${localPath}" /tmp/${siteName}-release.tar.gz`
3681
3686
  ];
3682
3687
  }
3688
+ // src/drivers/shared/compute-deploy.ts
3689
+ import { copyFileSync } from "node:fs";
3690
+ import { tmpdir as tmpdir2 } from "node:os";
3691
+ import { join as join5 } from "node:path";
3692
+
3683
3693
  // src/deploy/management-dashboard.ts
3684
3694
  import { execSync as execSync2 } from "node:child_process";
3685
3695
  import { randomBytes } from "node:crypto";
@@ -3758,7 +3768,7 @@ function ensureManagementDashboard(config, options = {}) {
3758
3768
  const environment = config.environments && Object.keys(config.environments)[0];
3759
3769
  const live = truthy(process.env.TS_CLOUD_UI_LIVE);
3760
3770
  const port = Number(process.env.TS_CLOUD_UI_PORT) || undefined;
3761
- const resolved = resolveManagementDashboardSite(config, environment ?? "production", {
3771
+ const resolved = resolveManagementDashboardSites(config, environment ?? "production", {
3762
3772
  uiRoot: ui.uiRoot,
3763
3773
  build: ui.build,
3764
3774
  domain: process.env.TS_CLOUD_UI_DOMAIN?.trim() || undefined,
@@ -3768,15 +3778,22 @@ function ensureManagementDashboard(config, options = {}) {
3768
3778
  live,
3769
3779
  port
3770
3780
  });
3771
- if (!resolved) {
3781
+ if (resolved.length === 0) {
3772
3782
  logger.info("Management dashboard: no domain resolved (set TS_CLOUD_UI_DOMAIN or configure a site domain) — skipping.");
3773
3783
  return config;
3774
3784
  }
3775
- config.sites = { ...config.sites ?? {}, [resolved.name]: resolved.site };
3776
3785
  const authNote = auth.source === "public" ? "NO AUTH — TS_CLOUD_UI_PUBLIC is set (dashboard is publicly reachable)" : auth.source === "env" ? "htpasswd-protected (TS_CLOUD_UI_PASSWORD)" : `htpasswd-protected (auto-generated — see ${DASHBOARD_CREDENTIALS_FILE})`;
3777
- logger.info(`Management dashboard https://${resolved.site.domain} (${authNote})`);
3786
+ const sites = { ...config.sites ?? {} };
3787
+ for (const { name, site } of resolved) {
3788
+ sites[name] = site;
3789
+ logger.info(`Management dashboard → https://${site.domain} (${authNote})`);
3790
+ }
3791
+ config.sites = sites;
3778
3792
  return config;
3779
3793
  }
3794
+ function managementDashboardSiteNames(config) {
3795
+ return Object.keys(config.sites ?? {}).filter(isManagementDashboardSiteName);
3796
+ }
3780
3797
  function buildManagementDashboardArtifact(site, options) {
3781
3798
  if (!site?.root)
3782
3799
  return null;
@@ -4480,16 +4497,33 @@ async function deployAllComputeSites(options) {
4480
4497
  const cwd = options.cwd ?? process.cwd();
4481
4498
  const hadDashboard = hasManagementDashboardSite(config);
4482
4499
  ensureManagementDashboard(config, { cwd, logger: { info: logger.info, warn: logger.warn } });
4483
- const injectedDashboard = !hadDashboard && hasManagementDashboardSite(config);
4500
+ const injectedDashboardSites = hadDashboard ? [] : managementDashboardSiteNames(config);
4484
4501
  if (options.rpxConfig && options.rpxConfig !== config && !hasManagementDashboardSite(options.rpxConfig))
4485
4502
  ensureManagementDashboard(options.rpxConfig, { cwd, logger: { info: () => {}, warn: () => {} } });
4486
4503
  let dashboardTarball = null;
4487
- if (injectedDashboard) {
4488
- dashboardTarball = buildManagementDashboardArtifact(config.sites?.[MANAGEMENT_DASHBOARD_SITE], { cwd, slug, sha, logger: { info: logger.info, warn: logger.warn } });
4504
+ const dashboardTarballBySite = new Map;
4505
+ if (injectedDashboardSites.length > 0) {
4506
+ dashboardTarball = buildManagementDashboardArtifact(config.sites?.[injectedDashboardSites[0]], { cwd, slug, sha, logger: { info: logger.info, warn: logger.warn } });
4489
4507
  if (!dashboardTarball) {
4490
- logger.warn("Management dashboard: no artifact available — skipping dashboard site for this deploy.");
4491
- if (config.sites)
4492
- delete config.sites[MANAGEMENT_DASHBOARD_SITE];
4508
+ logger.warn("Management dashboard: no artifact available — skipping dashboard site(s) for this deploy.");
4509
+ for (const name of injectedDashboardSites) {
4510
+ if (config.sites)
4511
+ delete config.sites[name];
4512
+ }
4513
+ } else {
4514
+ for (const name of injectedDashboardSites) {
4515
+ if (name === MANAGEMENT_DASHBOARD_SITE) {
4516
+ dashboardTarballBySite.set(name, dashboardTarball);
4517
+ continue;
4518
+ }
4519
+ try {
4520
+ const copy = join5(tmpdir2(), `${slug}-${name}-${sha}.tar.gz`);
4521
+ copyFileSync(dashboardTarball, copy);
4522
+ dashboardTarballBySite.set(name, copy);
4523
+ } catch {
4524
+ dashboardTarballBySite.set(name, dashboardTarball);
4525
+ }
4526
+ }
4493
4527
  }
4494
4528
  }
4495
4529
  const sites = config.sites || {};
@@ -4507,7 +4541,7 @@ async function deployAllComputeSites(options) {
4507
4541
  });
4508
4542
  if (deployable.length === 0)
4509
4543
  return true;
4510
- const tarballFor = (siteName) => siteName === MANAGEMENT_DASHBOARD_SITE && dashboardTarball ? dashboardTarball : tarballForSite(siteName);
4544
+ const tarballFor = (siteName) => dashboardTarballBySite.get(siteName) ?? tarballForSite(siteName);
4511
4545
  for (const [siteName, site] of deployable) {
4512
4546
  logger.step(`Deploying site: ${siteName}`);
4513
4547
  const localTarballPath = isPhpSite(site) ? undefined : tarballFor(siteName);
@@ -21905,27 +21905,44 @@ function apexOf(domain) {
21905
21905
  const parts = domain.split(".").filter(Boolean);
21906
21906
  return parts.length <= 2 ? domain : parts.slice(-2).join(".");
21907
21907
  }
21908
- function resolveDashboardDomain(config, environment, explicit) {
21909
- if (explicit)
21910
- return explicit;
21908
+ function collectDomains(config, environment) {
21911
21909
  const candidates = [];
21910
+ const dnsDomain = config.infrastructure?.dns?.domain;
21911
+ if (dnsDomain)
21912
+ candidates.push(dnsDomain);
21913
+ if (environment && config.environments?.[environment]?.domain)
21914
+ candidates.push(config.environments[environment].domain);
21912
21915
  for (const site of Object.values(config.sites ?? {})) {
21913
- const d = site?.domain;
21916
+ const s = site;
21917
+ if (!s || s.redirect)
21918
+ continue;
21919
+ const d = s.domain;
21914
21920
  if (typeof d === "string")
21915
21921
  candidates.push(d);
21916
21922
  else if (Array.isArray(d))
21917
21923
  candidates.push(...d.filter((x) => typeof x === "string"));
21918
21924
  }
21919
- if (environment && config.environments?.[environment]?.domain)
21920
- candidates.push(config.environments[environment].domain);
21921
- const dnsDomain = config.infrastructure?.dns?.domain;
21922
- if (dnsDomain)
21923
- candidates.push(dnsDomain);
21924
- const base = candidates.find((d) => d && !d.startsWith("dashboard."));
21925
+ return candidates.filter((d) => d && !d.startsWith("dashboard."));
21926
+ }
21927
+ function resolveDashboardDomain(config, environment, explicit) {
21928
+ if (explicit)
21929
+ return explicit;
21930
+ const base = collectDomains(config, environment)[0];
21925
21931
  if (!base)
21926
21932
  return null;
21927
21933
  return `dashboard.${apexOf(base)}`;
21928
21934
  }
21935
+ function resolveDashboardDomains(config, environment, explicit) {
21936
+ if (explicit)
21937
+ return [explicit];
21938
+ const apexes = [];
21939
+ for (const d of collectDomains(config, environment)) {
21940
+ const apex = apexOf(d);
21941
+ if (!apexes.includes(apex))
21942
+ apexes.push(apex);
21943
+ }
21944
+ return apexes.map((apex) => `dashboard.${apex}`);
21945
+ }
21929
21946
  function hasManagementDashboardSite(config) {
21930
21947
  return Object.entries(config.sites ?? {}).some(([name, site]) => {
21931
21948
  if (!site)
@@ -21934,37 +21951,53 @@ function hasManagementDashboardSite(config) {
21934
21951
  return name === "dashboard" || root === "ui/dist" || root.endsWith("/ui/dist") || root.endsWith("/dist/ui");
21935
21952
  });
21936
21953
  }
21937
- function resolveManagementDashboardSite(config, environment, opts) {
21954
+ var MANAGEMENT_DASHBOARD_SITE_PREFIX = "dashboard-";
21955
+ function dashboardSiteName(domain, primary) {
21956
+ if (primary)
21957
+ return "dashboard";
21958
+ return MANAGEMENT_DASHBOARD_SITE_PREFIX + domain.replace(/^dashboard\./, "").replace(/\./g, "-");
21959
+ }
21960
+ function isManagementDashboardSiteName(name) {
21961
+ return name === "dashboard" || name.startsWith(MANAGEMENT_DASHBOARD_SITE_PREFIX);
21962
+ }
21963
+ function resolveManagementDashboardSites(config, environment, opts) {
21938
21964
  if (hasManagementDashboardSite(config))
21939
- return null;
21940
- const domain = resolveDashboardDomain(config, environment, opts.domain);
21941
- if (!domain)
21942
- return null;
21965
+ return [];
21943
21966
  const auth2 = opts.password ? { auth: { username: opts.username || "admin", password: opts.password, realm: opts.realm } } : {};
21967
+ const build = opts.build === false || opts.build === undefined ? {} : { build: opts.build };
21944
21968
  if (opts.live) {
21969
+ const domain = resolveDashboardDomain(config, environment, opts.domain);
21970
+ if (!domain)
21971
+ return [];
21945
21972
  const port = opts.port ?? 7676;
21946
- const site2 = {
21973
+ const site = {
21947
21974
  root: opts.uiRoot,
21948
21975
  deploy: "server",
21949
21976
  domain,
21950
21977
  start: `cloud dashboard:serve --box --host 127.0.0.1 --port ${port}`,
21951
21978
  port,
21952
21979
  ssl: { provider: "letsencrypt" },
21953
- ...opts.build === false || opts.build === undefined ? {} : { build: opts.build },
21980
+ ...build,
21954
21981
  ...auth2
21955
21982
  };
21956
- return { name: "dashboard", site: site2 };
21983
+ return [{ name: "dashboard", site }];
21957
21984
  }
21958
- const site = {
21959
- root: opts.uiRoot,
21960
- deploy: "server",
21961
- type: "static",
21962
- domain,
21963
- ssl: { provider: "letsencrypt" },
21964
- ...opts.build === false || opts.build === undefined ? {} : { build: opts.build },
21965
- ...auth2
21966
- };
21967
- return { name: "dashboard", site };
21985
+ const domains = resolveDashboardDomains(config, environment, opts.domain);
21986
+ return domains.map((domain, i) => ({
21987
+ name: dashboardSiteName(domain, i === 0),
21988
+ site: {
21989
+ root: opts.uiRoot,
21990
+ deploy: "server",
21991
+ type: "static",
21992
+ domain,
21993
+ ssl: { provider: "letsencrypt" },
21994
+ ...build,
21995
+ ...auth2
21996
+ }
21997
+ }));
21998
+ }
21999
+ function resolveManagementDashboardSite(config, environment, opts) {
22000
+ return resolveManagementDashboardSites(config, environment, opts)[0] ?? null;
21968
22001
  }
21969
22002
  function deepMerge(target, source) {
21970
22003
  const result = { ...target };
@@ -46121,4 +46154,4 @@ class ResourceManagementManager {
46121
46154
  }
46122
46155
  var resourceManagementManager = new ResourceManagementManager;
46123
46156
 
46124
- export { detectServiceRegion, signRequest, signRequestAsync, createPresignedUrl, createPresignedUrlAsync, makeAWSRequest, makeAWSRequestOnce, makeAWSRequestAsync, parseXMLResponse, parseJSONResponse, clearSigningKeyCache, getSigningKeyCacheSize, isNodeCryptoAvailable, isWebCryptoAvailable, QueuePresets, RealtimePresets, detectDeploymentTargets, resolveDeploymentMode, deploymentCoexistenceError, resolveCloudProvider, TemplateBuilder, Pseudo, generateResourceName, generateLogicalId, getTimestamp, sanitizeName, resolveProjectStackName, resolveSiteStackName, resolveSiteResourceName, resolveSiteBucketName, resolveStorageBucketName, resolveDeployBucketName, resolveServerlessAppStackName, resolveServerlessArtifactBucketName, resolveServerlessAssetBucketName, DependencyGraph, analyzeStackDiff, formatDiff, Storage, Registry, CDN, DNS, Security, Compute, Network, FileSystem, Email, exports_incoming_call, Phone, Queue, JobLoader, StacksIntegration, exports_send, SMS, AI, Database, Cache, Permissions, ApiGateway, Messaging, Workflow, Monitoring, Auth, Deployment, AssetHasher, Secrets, ParameterStore, Search, Redirects, Communication, Fn2, Arn, AWS_PSEUDO_PARAMETERS, CloudFormationBuilder, buildCloudFormationTemplate, createStaticSitePreset, createNodeJsServerPreset, createNodeJsServerlessPreset, createServerlessNodePreset, createFullStackAppPreset, createApiBackendPreset, createWordPressPreset, createJamstackPreset, createMicroservicesPreset, createRealtimeAppPreset, createDataPipelinePreset, createMLApiPreset, createTraditionalWebAppPreset, createLaravelPreset, createServerlessLaravelPreset, createDashboardSite, resolveDashboardDomain, hasManagementDashboardSite, resolveManagementDashboardSite, extendPreset, composePresets, createPreset, mergeInfrastructure, withMonitoring, withSecurity, withDatabase, withCache, withCDN, withQueue, fromEnvironment, fromSharedCredentials, fromEC2Metadata, fromECSMetadata, fromWebIdentity, getCredentials, createCredentialProvider, resolveCredentials, resolveRegion, getAccountId, S3Error, createS3Client, CloudError, ConfigurationError, CredentialError, DeploymentError, ValidationError, AWSAPIError, ErrorCodes, getErrorDetails, createError, DebugLogger, validateConfiguration, detectMisconfigurations, validateCredentials, checkIAMPermissions, getRequiredPermissions, suggestIAMPolicy, DEFAULT_SERVICE_LIMITS, checkServiceQuotas, getQuotaUsageSummary, suggestQuotaIncrease, FileCache, TemplateCache, templateCache, hashFile, hashString, hashBuffer, hashDirectory, hashManifest, quickHash, findChangedFiles, HashCache, parallel, batch, parallelMap, parallelWithRetry, sequence, withTimeout, RateLimiter, chunk, processInChunks, diffTemplates, getDiffSummary, requiresReplacement, categorizeChanges, getDeploymentStrategy, getDiffStats, cloud_config_schema_default, validateAgainstSchema, defaultLocalConfig, getLocalConfig, isLocalDevelopment, getLocalEndpoint, getLocalCredentials, getLocalEnvVars, MockCloudFormation, MockS3, MockDynamoDB, createMockAWS, PreviewEnvironmentManager, previewManager, generatePreviewWorkflow, generateCleanupWorkflow, generateCostReportWorkflow, PreviewNotificationService, previewNotifications, formatTable, formatTree, formatProgressBar, formatBytes, formatDuration, formatList, formatKeyValue, ProgressBar, MultiStepProgress, Spinner, TaskList, suggestCommand, formatSuggestion, isLikelyTypo, getContextualHelp, searchCommands, autocomplete, suggestFlags, formatFlagSuggestions, getCommandUsage, validateCommand, REPL, REPLContext, REPLCommandBuilder, CommandHistory, formatHistory, formatHistoryStats, MultiRegionManager, multiRegionManager, CrossRegionReferenceManager, GlobalResourceManager, RegionPairManager, StackDependencyManager, crossRegionReferenceManager, globalResourceManager, regionPairManager, stackDependencyManager, AWS_REGIONS, getRegion, getAllRegions, getRegionsByLocation, getRegionsByCompliance, getRegionsByPricingTier, isValidRegion, getClosestRegion, suggestRegions, suggestRegionPairs, formatRegion, formatRegionList, getRegionStats, MultiAccountManager, OrganizationManager, multiAccountManager, organizationManager, RECOMMENDED_ACCOUNT_STRUCTURES, RECOMMENDED_SCPS, COMMON_CROSS_ACCOUNT_ROLES, getRecommendedStructure, generateCrossAccountRoleCF, validateAccountStructure, formatAccountStructure, generateDeploymentWorkflow, generateMultiEnvWorkflow, generatePRPreviewWorkflow, generateScheduledWorkflow, generateMatrixWorkflow, generateDeploymentPipeline, generateMultiEnvPipeline, generatePreviewPipeline, generateScheduledPipeline, generateManualPipeline, generateDeploymentConfig, generateMultiEnvConfig, generateScheduledConfig, generateApprovalConfig, generateParallelConfig, BackupManager, backupManager, DisasterRecoveryManager, drManager, AWSConfigManager, awsConfigManager, CloudTrailManager, cloudTrailManager, GuardDutyManager, guardDutyManager, SecurityHubManager, securityHubManager, BlueGreenManager, blueGreenManager, CanaryManager, canaryManager, ABTestManager, abTestManager, ProgressiveDeploymentManager, progressiveDeploymentManager, XRayManager, xrayManager, MetricsManager, metricsManager, LogsManager, logsManager, SyntheticsManager, syntheticsManager, MigrationManager, migrationManager, ReplicaManager, replicaManager, PerformanceManager, performanceManager, DatabaseUserManager, databaseUserManager, SecretsRotationManager, secretsRotationManager, SecretsManager, secretsManager, CertificateManager, certificateManager, SecurityScanningManager, securityScanningManager, ImageScanningManager, imageScanningManager, BuildOptimizationManager, buildOptimizationManager, ContainerRegistryManager, containerRegistryManager, ServiceMeshManager, serviceMeshManager, LambdaLayersManager, lambdaLayersManager, LambdaVersionsManager, lambdaVersionsManager, LambdaConcurrencyManager, lambdaConcurrencyManager, LambdaDestinationsManager, lambdaDestinationsManager, LambdaVPCManager, lambdaVPCManager, LambdaDLQManager, lambdaDLQManager, Route53RoutingManager, route53RoutingManager, DNSSECManager, dnssecManager, Route53ResolverManager, route53ResolverManager, BounceComplaintHandler, bounceComplaintHandler, EmailAnalyticsManager, emailAnalyticsManager, SenderReputationManager, senderReputationManager, EmailTemplateManager, emailTemplateManager, exports_advanced, exports_inbound, exports_advanced2, exports_advanced3, FIFOQueueManager, fifoQueueManager, DLQMonitoringManager, dlqMonitoringManager, BatchProcessingManager, batchProcessingManager, QueueManagementManager, queueManagementManager, createZip, generateBootstrap, runBuildHooks, sha256, artifactKey, packageServerlessApp, MANAGED_NODE_VERSIONS, resolveServerlessRuntime, resolveQueues, resolveQueueNames, composeServerlessAppTemplate, PHP_LAYER_EXTENSIONS, phpLayerPackages, phpLayerBuildStage, generatePhpLayerDockerfile, generateAppImageDockerfile, sharedRuntimeLoop, buildNodeRuntimeLayerZip, buildBunRuntimeLayerZip, resolveApp, eventToRequest, responseToResult, createHttpHandler, createQueueHandler, createCliHandler, createHandlers, generatePhpFpmConfig, phpRuntimeLayerAssets, laravelServerlessEnvDefaults, LARAVEL_SERVERLESS_BUILD_STEPS, buildPhpRuntimeLayerZip, PHP_DEFAULT_EXCLUDES, runPhpBuildHooks, collectPhpAppEntries, packagePhpApp, StaticSiteManager, staticSiteManager, StorageAdvancedManager, storageAdvancedManager, HealthCheckManager, healthCheckManager, NetworkSecurityManager, networkSecurityManager, ResourceManagementManager, resourceManagementManager };
46157
+ export { detectServiceRegion, signRequest, signRequestAsync, createPresignedUrl, createPresignedUrlAsync, makeAWSRequest, makeAWSRequestOnce, makeAWSRequestAsync, parseXMLResponse, parseJSONResponse, clearSigningKeyCache, getSigningKeyCacheSize, isNodeCryptoAvailable, isWebCryptoAvailable, QueuePresets, RealtimePresets, detectDeploymentTargets, resolveDeploymentMode, deploymentCoexistenceError, resolveCloudProvider, TemplateBuilder, Pseudo, generateResourceName, generateLogicalId, getTimestamp, sanitizeName, resolveProjectStackName, resolveSiteStackName, resolveSiteResourceName, resolveSiteBucketName, resolveStorageBucketName, resolveDeployBucketName, resolveServerlessAppStackName, resolveServerlessArtifactBucketName, resolveServerlessAssetBucketName, DependencyGraph, analyzeStackDiff, formatDiff, Storage, Registry, CDN, DNS, Security, Compute, Network, FileSystem, Email, exports_incoming_call, Phone, Queue, JobLoader, StacksIntegration, exports_send, SMS, AI, Database, Cache, Permissions, ApiGateway, Messaging, Workflow, Monitoring, Auth, Deployment, AssetHasher, Secrets, ParameterStore, Search, Redirects, Communication, Fn2, Arn, AWS_PSEUDO_PARAMETERS, CloudFormationBuilder, buildCloudFormationTemplate, createStaticSitePreset, createNodeJsServerPreset, createNodeJsServerlessPreset, createServerlessNodePreset, createFullStackAppPreset, createApiBackendPreset, createWordPressPreset, createJamstackPreset, createMicroservicesPreset, createRealtimeAppPreset, createDataPipelinePreset, createMLApiPreset, createTraditionalWebAppPreset, createLaravelPreset, createServerlessLaravelPreset, createDashboardSite, resolveDashboardDomain, resolveDashboardDomains, hasManagementDashboardSite, MANAGEMENT_DASHBOARD_SITE_PREFIX, isManagementDashboardSiteName, resolveManagementDashboardSites, resolveManagementDashboardSite, extendPreset, composePresets, createPreset, mergeInfrastructure, withMonitoring, withSecurity, withDatabase, withCache, withCDN, withQueue, fromEnvironment, fromSharedCredentials, fromEC2Metadata, fromECSMetadata, fromWebIdentity, getCredentials, createCredentialProvider, resolveCredentials, resolveRegion, getAccountId, S3Error, createS3Client, CloudError, ConfigurationError, CredentialError, DeploymentError, ValidationError, AWSAPIError, ErrorCodes, getErrorDetails, createError, DebugLogger, validateConfiguration, detectMisconfigurations, validateCredentials, checkIAMPermissions, getRequiredPermissions, suggestIAMPolicy, DEFAULT_SERVICE_LIMITS, checkServiceQuotas, getQuotaUsageSummary, suggestQuotaIncrease, FileCache, TemplateCache, templateCache, hashFile, hashString, hashBuffer, hashDirectory, hashManifest, quickHash, findChangedFiles, HashCache, parallel, batch, parallelMap, parallelWithRetry, sequence, withTimeout, RateLimiter, chunk, processInChunks, diffTemplates, getDiffSummary, requiresReplacement, categorizeChanges, getDeploymentStrategy, getDiffStats, cloud_config_schema_default, validateAgainstSchema, defaultLocalConfig, getLocalConfig, isLocalDevelopment, getLocalEndpoint, getLocalCredentials, getLocalEnvVars, MockCloudFormation, MockS3, MockDynamoDB, createMockAWS, PreviewEnvironmentManager, previewManager, generatePreviewWorkflow, generateCleanupWorkflow, generateCostReportWorkflow, PreviewNotificationService, previewNotifications, formatTable, formatTree, formatProgressBar, formatBytes, formatDuration, formatList, formatKeyValue, ProgressBar, MultiStepProgress, Spinner, TaskList, suggestCommand, formatSuggestion, isLikelyTypo, getContextualHelp, searchCommands, autocomplete, suggestFlags, formatFlagSuggestions, getCommandUsage, validateCommand, REPL, REPLContext, REPLCommandBuilder, CommandHistory, formatHistory, formatHistoryStats, MultiRegionManager, multiRegionManager, CrossRegionReferenceManager, GlobalResourceManager, RegionPairManager, StackDependencyManager, crossRegionReferenceManager, globalResourceManager, regionPairManager, stackDependencyManager, AWS_REGIONS, getRegion, getAllRegions, getRegionsByLocation, getRegionsByCompliance, getRegionsByPricingTier, isValidRegion, getClosestRegion, suggestRegions, suggestRegionPairs, formatRegion, formatRegionList, getRegionStats, MultiAccountManager, OrganizationManager, multiAccountManager, organizationManager, RECOMMENDED_ACCOUNT_STRUCTURES, RECOMMENDED_SCPS, COMMON_CROSS_ACCOUNT_ROLES, getRecommendedStructure, generateCrossAccountRoleCF, validateAccountStructure, formatAccountStructure, generateDeploymentWorkflow, generateMultiEnvWorkflow, generatePRPreviewWorkflow, generateScheduledWorkflow, generateMatrixWorkflow, generateDeploymentPipeline, generateMultiEnvPipeline, generatePreviewPipeline, generateScheduledPipeline, generateManualPipeline, generateDeploymentConfig, generateMultiEnvConfig, generateScheduledConfig, generateApprovalConfig, generateParallelConfig, BackupManager, backupManager, DisasterRecoveryManager, drManager, AWSConfigManager, awsConfigManager, CloudTrailManager, cloudTrailManager, GuardDutyManager, guardDutyManager, SecurityHubManager, securityHubManager, BlueGreenManager, blueGreenManager, CanaryManager, canaryManager, ABTestManager, abTestManager, ProgressiveDeploymentManager, progressiveDeploymentManager, XRayManager, xrayManager, MetricsManager, metricsManager, LogsManager, logsManager, SyntheticsManager, syntheticsManager, MigrationManager, migrationManager, ReplicaManager, replicaManager, PerformanceManager, performanceManager, DatabaseUserManager, databaseUserManager, SecretsRotationManager, secretsRotationManager, SecretsManager, secretsManager, CertificateManager, certificateManager, SecurityScanningManager, securityScanningManager, ImageScanningManager, imageScanningManager, BuildOptimizationManager, buildOptimizationManager, ContainerRegistryManager, containerRegistryManager, ServiceMeshManager, serviceMeshManager, LambdaLayersManager, lambdaLayersManager, LambdaVersionsManager, lambdaVersionsManager, LambdaConcurrencyManager, lambdaConcurrencyManager, LambdaDestinationsManager, lambdaDestinationsManager, LambdaVPCManager, lambdaVPCManager, LambdaDLQManager, lambdaDLQManager, Route53RoutingManager, route53RoutingManager, DNSSECManager, dnssecManager, Route53ResolverManager, route53ResolverManager, BounceComplaintHandler, bounceComplaintHandler, EmailAnalyticsManager, emailAnalyticsManager, SenderReputationManager, senderReputationManager, EmailTemplateManager, emailTemplateManager, exports_advanced, exports_inbound, exports_advanced2, exports_advanced3, FIFOQueueManager, fifoQueueManager, DLQMonitoringManager, dlqMonitoringManager, BatchProcessingManager, batchProcessingManager, QueueManagementManager, queueManagementManager, createZip, generateBootstrap, runBuildHooks, sha256, artifactKey, packageServerlessApp, MANAGED_NODE_VERSIONS, resolveServerlessRuntime, resolveQueues, resolveQueueNames, composeServerlessAppTemplate, PHP_LAYER_EXTENSIONS, phpLayerPackages, phpLayerBuildStage, generatePhpLayerDockerfile, generateAppImageDockerfile, sharedRuntimeLoop, buildNodeRuntimeLayerZip, buildBunRuntimeLayerZip, resolveApp, eventToRequest, responseToResult, createHttpHandler, createQueueHandler, createCliHandler, createHandlers, generatePhpFpmConfig, phpRuntimeLayerAssets, laravelServerlessEnvDefaults, LARAVEL_SERVERLESS_BUILD_STEPS, buildPhpRuntimeLayerZip, PHP_DEFAULT_EXCLUDES, runPhpBuildHooks, collectPhpAppEntries, packagePhpApp, StaticSiteManager, staticSiteManager, StorageAdvancedManager, storageAdvancedManager, HealthCheckManager, healthCheckManager, NetworkSecurityManager, networkSecurityManager, ResourceManagementManager, resourceManagementManager };
@@ -12,10 +12,10 @@ import {
12
12
  sanitizeCloudConfig,
13
13
  setMaintenance,
14
14
  startLocalDashboardServer
15
- } from "../chunk-6va72rhh.js";
15
+ } from "../chunk-1518raqr.js";
16
16
  import {
17
17
  buildAndPushServerlessImage
18
- } from "../chunk-0wxyppza.js";
18
+ } from "../chunk-m03vddvr.js";
19
19
  import"../chunk-b82pbxyp.js";
20
20
  import"../chunk-hsk6fe6x.js";
21
21
  import {
@@ -29,8 +29,8 @@ import {
29
29
  resolveSiteKind,
30
30
  resolveUiSource,
31
31
  validateDeploymentConfig
32
- } from "../chunk-7pym4v5b.js";
33
- import"../chunk-c6rgvg1j.js";
32
+ } from "../chunk-nw5nnffj.js";
33
+ import"../chunk-vsgkcpqw.js";
34
34
  import"../chunk-93hjhs78.js";
35
35
  import {
36
36
  deleteStaticSite,
@@ -62,6 +62,8 @@ export declare function ensureManagementDashboard(config: CloudConfig, options?:
62
62
  cwd?: string;
63
63
  logger?: EnsureDashboardLogger;
64
64
  }): CloudConfig;
65
+ /** Names of the management-dashboard sites currently present in `config`. */
66
+ export declare function managementDashboardSiteNames(config: CloudConfig): string[];
65
67
  export interface BuildDashboardArtifactOptions {
66
68
  cwd?: string;
67
69
  slug: string;
@@ -48,8 +48,8 @@ import {
48
48
  waitForCloudInit,
49
49
  waitForSsh,
50
50
  wrapCloudInitUserData
51
- } from "../chunk-7pym4v5b.js";
52
- import"../chunk-c6rgvg1j.js";
51
+ } from "../chunk-nw5nnffj.js";
52
+ import"../chunk-vsgkcpqw.js";
53
53
  import"../chunk-93hjhs78.js";
54
54
  import"../chunk-qpj3edwz.js";
55
55
  import"../chunk-vd87cpvn.js";
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js CHANGED
@@ -55,10 +55,10 @@ import {
55
55
  sanitizeCloudConfig,
56
56
  setMaintenance,
57
57
  startLocalDashboardServer
58
- } from "./chunk-6va72rhh.js";
58
+ } from "./chunk-1518raqr.js";
59
59
  import {
60
60
  buildAndPushServerlessImage
61
- } from "./chunk-0wxyppza.js";
61
+ } from "./chunk-m03vddvr.js";
62
62
  import {
63
63
  CloudWatchLogsClient,
64
64
  EFSClient,
@@ -105,7 +105,7 @@ import {
105
105
  waitForCloudInit,
106
106
  waitForSsh,
107
107
  wrapCloudInitUserData
108
- } from "./chunk-7pym4v5b.js";
108
+ } from "./chunk-nw5nnffj.js";
109
109
  import {
110
110
  ABTestManager,
111
111
  AI,
@@ -171,6 +171,7 @@ import {
171
171
  LambdaVersionsManager,
172
172
  LogsManager,
173
173
  MANAGED_NODE_VERSIONS,
174
+ MANAGEMENT_DASHBOARD_SITE_PREFIX,
174
175
  Messaging,
175
176
  MetricsManager,
176
177
  MigrationManager,
@@ -396,6 +397,7 @@ import {
396
397
  imageScanningManager,
397
398
  isLikelyTypo,
398
399
  isLocalDevelopment,
400
+ isManagementDashboardSiteName,
399
401
  isNodeCryptoAvailable,
400
402
  isValidRegion,
401
403
  isWebCryptoAvailable,
@@ -441,9 +443,11 @@ import {
441
443
  resolveCloudProvider,
442
444
  resolveCredentials,
443
445
  resolveDashboardDomain,
446
+ resolveDashboardDomains,
444
447
  resolveDeployBucketName,
445
448
  resolveDeploymentMode,
446
449
  resolveManagementDashboardSite,
450
+ resolveManagementDashboardSites,
447
451
  resolveProjectStackName,
448
452
  resolveQueueNames,
449
453
  resolveQueues,
@@ -499,7 +503,7 @@ import {
499
503
  withSecurity,
500
504
  withTimeout,
501
505
  xrayManager
502
- } from "./chunk-c6rgvg1j.js";
506
+ } from "./chunk-vsgkcpqw.js";
503
507
  import {
504
508
  EC2Client,
505
509
  SSMClient
@@ -4707,11 +4711,13 @@ export {
4707
4711
  resolveQueueNames,
4708
4712
  resolveProjectStackName,
4709
4713
  resolveObjectStorage,
4714
+ resolveManagementDashboardSites,
4710
4715
  resolveManagementDashboardSite,
4711
4716
  resolveHetznerApiToken,
4712
4717
  resolveExecStart,
4713
4718
  resolveDeploymentMode,
4714
4719
  resolveDeployBucketName,
4720
+ resolveDashboardDomains,
4715
4721
  resolveDashboardDomain,
4716
4722
  resolveDashboardAuth,
4717
4723
  resolveDashboardAction,
@@ -4767,6 +4773,7 @@ export {
4767
4773
  isWebCryptoAvailable,
4768
4774
  isValidRegion,
4769
4775
  isNodeCryptoAvailable,
4776
+ isManagementDashboardSiteName,
4770
4777
  isLocalDevelopment,
4771
4778
  isLikelyTypo,
4772
4779
  invalidateCache,
@@ -5054,6 +5061,7 @@ export {
5054
5061
  MigrationManager,
5055
5062
  MetricsManager,
5056
5063
  Messaging,
5064
+ MANAGEMENT_DASHBOARD_SITE_PREFIX,
5057
5065
  MANAGEMENT_DASHBOARD_SITE,
5058
5066
  MANAGED_NODE_VERSIONS,
5059
5067
  LogsManager,