@stacksjs/ts-cloud 0.7.13 → 0.7.15
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/dist/bin/cli.js +282 -282
- package/dist/{chunk-9ra8b9b4.js → chunk-296n8hvt.js} +2 -2
- package/dist/{chunk-vsgkcpqw.js → chunk-49nmy775.js} +6 -8
- package/dist/{chunk-jg4f2ybx.js → chunk-6agm101w.js} +24 -5
- package/dist/{chunk-fy85hcfy.js → chunk-mbpxadga.js} +4 -4
- package/dist/{chunk-m03vddvr.js → chunk-qgnyzfmx.js} +1 -1
- package/dist/deploy/index.js +4 -4
- package/dist/deploy/management-dashboard.d.ts +9 -1
- package/dist/drivers/index.js +2 -2
- package/dist/drivers/shared/releases.d.ts +12 -0
- package/dist/index.js +6 -4
- package/dist/ui/index.html +3 -3
- package/dist/ui/server/actions.html +3 -3
- package/dist/ui/server/backups.html +3 -3
- package/dist/ui/server/database.html +3 -3
- package/dist/ui/server/deployments.html +3 -3
- package/dist/ui/server/firewall.html +3 -3
- package/dist/ui/server/logs.html +3 -3
- package/dist/ui/server/services.html +3 -3
- package/dist/ui/server/sites.html +3 -3
- package/dist/ui/server/ssh-keys.html +3 -3
- package/dist/ui/server/terminal.html +3 -3
- package/dist/ui/server/workers.html +3 -3
- package/dist/ui/serverless/alarms.html +3 -3
- package/dist/ui/serverless/assets.html +3 -3
- package/dist/ui/serverless/data.html +3 -3
- package/dist/ui/serverless/deployments.html +3 -3
- package/dist/ui/serverless/functions.html +3 -3
- package/dist/ui/serverless/logs.html +3 -3
- package/dist/ui/serverless/queues.html +3 -3
- package/dist/ui/serverless/scheduler.html +3 -3
- package/dist/ui/serverless/secrets.html +3 -3
- package/dist/ui/serverless/traces.html +3 -3
- package/dist/ui/serverless.html +3 -3
- package/package.json +10 -10
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildAndPushServerlessImage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-qgnyzfmx.js";
|
|
4
4
|
import"./chunk-hsk6fe6x.js";
|
|
5
|
-
import"./chunk-
|
|
5
|
+
import"./chunk-49nmy775.js";
|
|
6
6
|
import"./chunk-arsh1g5h.js";
|
|
7
7
|
import"./chunk-v0bahtg2.js";
|
|
8
8
|
export {
|
|
@@ -21948,13 +21948,11 @@ function hasManagementDashboardSite(config) {
|
|
|
21948
21948
|
if (!site)
|
|
21949
21949
|
return false;
|
|
21950
21950
|
const root = site.root ?? "";
|
|
21951
|
-
return name
|
|
21951
|
+
return isManagementDashboardSiteName(name) || root === "ui/dist" || root.endsWith("/ui/dist") || root.endsWith("/dist/ui");
|
|
21952
21952
|
});
|
|
21953
21953
|
}
|
|
21954
21954
|
var MANAGEMENT_DASHBOARD_SITE_PREFIX = "dashboard-";
|
|
21955
|
-
function
|
|
21956
|
-
if (primary)
|
|
21957
|
-
return "dashboard";
|
|
21955
|
+
function managementDashboardSiteName(domain) {
|
|
21958
21956
|
return MANAGEMENT_DASHBOARD_SITE_PREFIX + domain.replace(/^dashboard\./, "").replace(/\./g, "-");
|
|
21959
21957
|
}
|
|
21960
21958
|
function isManagementDashboardSiteName(name) {
|
|
@@ -21980,11 +21978,11 @@ function resolveManagementDashboardSites(config, environment, opts) {
|
|
|
21980
21978
|
...build,
|
|
21981
21979
|
...auth2
|
|
21982
21980
|
};
|
|
21983
|
-
return [{ name:
|
|
21981
|
+
return [{ name: managementDashboardSiteName(domain), site }];
|
|
21984
21982
|
}
|
|
21985
21983
|
const domains = resolveDashboardDomains(config, environment, opts.domain);
|
|
21986
|
-
return domains.map((domain
|
|
21987
|
-
name:
|
|
21984
|
+
return domains.map((domain) => ({
|
|
21985
|
+
name: managementDashboardSiteName(domain),
|
|
21988
21986
|
site: {
|
|
21989
21987
|
root: opts.uiRoot,
|
|
21990
21988
|
deploy: "server",
|
|
@@ -46154,4 +46152,4 @@ class ResourceManagementManager {
|
|
|
46154
46152
|
}
|
|
46155
46153
|
var resourceManagementManager = new ResourceManagementManager;
|
|
46156
46154
|
|
|
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 };
|
|
46155
|
+
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, managementDashboardSiteName, 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 };
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
resolveCloudProvider,
|
|
6
6
|
resolveManagementDashboardSites,
|
|
7
7
|
resolveProjectStackName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-49nmy775.js";
|
|
9
9
|
import {
|
|
10
10
|
EC2Client,
|
|
11
11
|
SSMClient
|
|
@@ -3548,6 +3548,24 @@ function buildPruneReleases(paths, keep = DEFAULT_KEEP_RELEASES) {
|
|
|
3548
3548
|
"done"
|
|
3549
3549
|
];
|
|
3550
3550
|
}
|
|
3551
|
+
function siteOwnerPath(base) {
|
|
3552
|
+
return `${deployMetaDir(base)}/owner`;
|
|
3553
|
+
}
|
|
3554
|
+
function buildSiteOwnerGuard(base, slug) {
|
|
3555
|
+
const owner = siteOwnerPath(base);
|
|
3556
|
+
return [
|
|
3557
|
+
`if [ -f "${owner}" ]; then`,
|
|
3558
|
+
` TS_CLOUD_OWNER=$(cat "${owner}")`,
|
|
3559
|
+
` if [ "$TS_CLOUD_OWNER" != "${slug}" ]; then`,
|
|
3560
|
+
` echo "[ts-cloud] REFUSING deploy: ${base} belongs to project '$TS_CLOUD_OWNER', not '${slug}'. Another project on this box derives the same site key — give one of them a distinct site name/domain, or remove ${owner} to transfer ownership." >&2`,
|
|
3561
|
+
" exit 1",
|
|
3562
|
+
" fi",
|
|
3563
|
+
"else",
|
|
3564
|
+
` mkdir -p "$(dirname "${owner}")"`,
|
|
3565
|
+
` printf '%s\\n' "${slug}" > "${owner}"`,
|
|
3566
|
+
"fi"
|
|
3567
|
+
];
|
|
3568
|
+
}
|
|
3551
3569
|
function buildDeployHistoryHeader(base, options) {
|
|
3552
3570
|
const meta = deployMetaDir(base);
|
|
3553
3571
|
const log = deployLogPath(base, options.releaseId);
|
|
@@ -3827,7 +3845,7 @@ function buildManagementDashboardArtifact(site, options) {
|
|
|
3827
3845
|
logger.warn(`Management dashboard: build output not found at ${root} — skipping dashboard artifact.`);
|
|
3828
3846
|
return null;
|
|
3829
3847
|
}
|
|
3830
|
-
const tarball = join4(tmpdir(), `${options.slug}-${MANAGEMENT_DASHBOARD_SITE}-${options.sha}.tar.gz`);
|
|
3848
|
+
const tarball = join4(tmpdir(), `${options.slug}-${options.siteName ?? MANAGEMENT_DASHBOARD_SITE}-${options.sha}.tar.gz`);
|
|
3831
3849
|
execSync2(`tar czf "${tarball}" -C "${root}" .`, { stdio: "inherit" });
|
|
3832
3850
|
return tarball;
|
|
3833
3851
|
} catch (error) {
|
|
@@ -4404,7 +4422,7 @@ async function deploySiteRelease(driver, options, logger = noopLogger2) {
|
|
|
4404
4422
|
logger.step(`Deploying PHP site '${siteName}' to ${targets.length} target(s)...`);
|
|
4405
4423
|
const phpResult = await driver.runRemoteDeploy({
|
|
4406
4424
|
targets,
|
|
4407
|
-
commands: [...deployScript, ...poolScript, ...vhostScript, ...sslScript, ...servicesScript2, ...healthCheckScript],
|
|
4425
|
+
commands: [...buildSiteOwnerGuard(appBase, slug), ...deployScript, ...poolScript, ...vhostScript, ...sslScript, ...servicesScript2, ...healthCheckScript],
|
|
4408
4426
|
comment: `ts-cloud deploy ${slug}/${siteName}@${sha}`,
|
|
4409
4427
|
tags: { Project: slug, Environment: environment, Role: "app" }
|
|
4410
4428
|
});
|
|
@@ -4479,6 +4497,7 @@ async function deploySiteRelease(driver, options, logger = noopLogger2) {
|
|
|
4479
4497
|
commit: sha,
|
|
4480
4498
|
branch: site.branch ?? "main"
|
|
4481
4499
|
}),
|
|
4500
|
+
...buildSiteOwnerGuard(`/var/www/${siteName}`, slug),
|
|
4482
4501
|
...baseScript,
|
|
4483
4502
|
...staticVhost,
|
|
4484
4503
|
...staticSsl,
|
|
@@ -4521,7 +4540,7 @@ async function deployAllComputeSites(options) {
|
|
|
4521
4540
|
let dashboardTarball = null;
|
|
4522
4541
|
const dashboardTarballBySite = new Map;
|
|
4523
4542
|
if (injectedDashboardSites.length > 0) {
|
|
4524
|
-
dashboardTarball = buildManagementDashboardArtifact(config.sites?.[injectedDashboardSites[0]], { cwd, slug, sha, logger: { info: logger.info, warn: logger.warn } });
|
|
4543
|
+
dashboardTarball = buildManagementDashboardArtifact(config.sites?.[injectedDashboardSites[0]], { cwd, slug, sha, siteName: injectedDashboardSites[0], logger: { info: logger.info, warn: logger.warn } });
|
|
4525
4544
|
if (!dashboardTarball) {
|
|
4526
4545
|
logger.warn("Management dashboard: no artifact available — skipping dashboard site(s) for this deploy.");
|
|
4527
4546
|
for (const name of injectedDashboardSites) {
|
|
@@ -4530,7 +4549,7 @@ async function deployAllComputeSites(options) {
|
|
|
4530
4549
|
}
|
|
4531
4550
|
} else {
|
|
4532
4551
|
for (const name of injectedDashboardSites) {
|
|
4533
|
-
if (name ===
|
|
4552
|
+
if (name === injectedDashboardSites[0]) {
|
|
4534
4553
|
dashboardTarballBySite.set(name, dashboardTarball);
|
|
4535
4554
|
continue;
|
|
4536
4555
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
step,
|
|
7
7
|
success,
|
|
8
8
|
warn
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-qgnyzfmx.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-
|
|
29
|
+
} from "./chunk-6agm101w.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-
|
|
43
|
+
} from "./chunk-49nmy775.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-
|
|
348
|
+
const { buildAndPushServerlessImage } = await import("./chunk-296n8hvt.js");
|
|
349
349
|
const built = await buildAndPushServerlessImage({
|
|
350
350
|
app,
|
|
351
351
|
projectRoot,
|
package/dist/deploy/index.js
CHANGED
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
sanitizeCloudConfig,
|
|
13
13
|
setMaintenance,
|
|
14
14
|
startLocalDashboardServer
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-mbpxadga.js";
|
|
16
16
|
import {
|
|
17
17
|
buildAndPushServerlessImage
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-qgnyzfmx.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-
|
|
33
|
-
import"../chunk-
|
|
32
|
+
} from "../chunk-6agm101w.js";
|
|
33
|
+
import"../chunk-49nmy775.js";
|
|
34
34
|
import"../chunk-93hjhs78.js";
|
|
35
35
|
import {
|
|
36
36
|
deleteStaticSite,
|
|
@@ -20,7 +20,13 @@
|
|
|
20
20
|
* - `TS_CLOUD_UI_DISABLE` set truthy to skip auto-deploy
|
|
21
21
|
*/
|
|
22
22
|
import type { CloudConfig } from '@ts-cloud/core';
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Legacy site key for the management dashboard. Auto-injected dashboards are
|
|
25
|
+
* now keyed per domain (`dashboard-<apex-dashed>`, see
|
|
26
|
+
* `managementDashboardSiteName` in `@ts-cloud/core`) so tenants sharing a box
|
|
27
|
+
* via `attachTo` never collide on `/var/www/dashboard`. This bare key remains
|
|
28
|
+
* only for hand-configured dashboards and pre-0.8 deploys.
|
|
29
|
+
*/
|
|
24
30
|
export declare const MANAGEMENT_DASHBOARD_SITE = "dashboard";
|
|
25
31
|
/** Where an auto-generated dashboard password is persisted (per project checkout). */
|
|
26
32
|
export declare const DASHBOARD_CREDENTIALS_FILE: string;
|
|
@@ -68,6 +74,8 @@ export interface BuildDashboardArtifactOptions {
|
|
|
68
74
|
cwd?: string;
|
|
69
75
|
slug: string;
|
|
70
76
|
sha: string;
|
|
77
|
+
/** Site key the tarball is staged under. @default MANAGEMENT_DASHBOARD_SITE */
|
|
78
|
+
siteName?: string;
|
|
71
79
|
logger?: EnsureDashboardLogger;
|
|
72
80
|
}
|
|
73
81
|
/**
|
package/dist/drivers/index.js
CHANGED
|
@@ -48,8 +48,8 @@ import {
|
|
|
48
48
|
waitForCloudInit,
|
|
49
49
|
waitForSsh,
|
|
50
50
|
wrapCloudInitUserData
|
|
51
|
-
} from "../chunk-
|
|
52
|
-
import"../chunk-
|
|
51
|
+
} from "../chunk-6agm101w.js";
|
|
52
|
+
import"../chunk-49nmy775.js";
|
|
53
53
|
import"../chunk-93hjhs78.js";
|
|
54
54
|
import"../chunk-qpj3edwz.js";
|
|
55
55
|
import"../chunk-vd87cpvn.js";
|
|
@@ -77,6 +77,18 @@ export declare function buildRollbackScript(paths: ReleasePaths, options?: {
|
|
|
77
77
|
* at the newest, so it is never pruned.
|
|
78
78
|
*/
|
|
79
79
|
export declare function buildPruneReleases(paths: ReleasePaths, keep?: number): string[];
|
|
80
|
+
/** Owner marker recording which project a site's base dir belongs to. */
|
|
81
|
+
export declare function siteOwnerPath(base: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* Guard a site's base dir against cross-project deploys on a shared box
|
|
84
|
+
* (`attachTo`): the first deploy stamps `<base>/.ts-cloud/owner` with the
|
|
85
|
+
* project slug; a later deploy whose slug differs fails loudly instead of
|
|
86
|
+
* silently overwriting another tenant's releases. Two projects can only trip
|
|
87
|
+
* this by deriving the same site key (e.g. both claiming the same domain),
|
|
88
|
+
* which is a config conflict the operator must resolve — not one deploys
|
|
89
|
+
* should paper over. Emitted before anything mutates the dir.
|
|
90
|
+
*/
|
|
91
|
+
export declare function buildSiteOwnerGuard(base: string, slug: string): string[];
|
|
80
92
|
export interface DeployHistoryOptions {
|
|
81
93
|
/** This deploy's release id. */
|
|
82
94
|
releaseId: string;
|
package/dist/index.js
CHANGED
|
@@ -55,10 +55,10 @@ import {
|
|
|
55
55
|
sanitizeCloudConfig,
|
|
56
56
|
setMaintenance,
|
|
57
57
|
startLocalDashboardServer
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-mbpxadga.js";
|
|
59
59
|
import {
|
|
60
60
|
buildAndPushServerlessImage
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-qgnyzfmx.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-
|
|
108
|
+
} from "./chunk-6agm101w.js";
|
|
109
109
|
import {
|
|
110
110
|
ABTestManager,
|
|
111
111
|
AI,
|
|
@@ -412,6 +412,7 @@ import {
|
|
|
412
412
|
makeAWSRequest,
|
|
413
413
|
makeAWSRequestAsync,
|
|
414
414
|
makeAWSRequestOnce,
|
|
415
|
+
managementDashboardSiteName,
|
|
415
416
|
mergeInfrastructure,
|
|
416
417
|
metricsManager,
|
|
417
418
|
migrationManager,
|
|
@@ -503,7 +504,7 @@ import {
|
|
|
503
504
|
withSecurity,
|
|
504
505
|
withTimeout,
|
|
505
506
|
xrayManager
|
|
506
|
-
} from "./chunk-
|
|
507
|
+
} from "./chunk-49nmy775.js";
|
|
507
508
|
import {
|
|
508
509
|
EC2Client,
|
|
509
510
|
SSMClient
|
|
@@ -4757,6 +4758,7 @@ export {
|
|
|
4757
4758
|
migrateObjectStorage,
|
|
4758
4759
|
metricsManager,
|
|
4759
4760
|
mergeInfrastructure,
|
|
4761
|
+
managementDashboardSiteName,
|
|
4760
4762
|
makeAWSRequestOnce,
|
|
4761
4763
|
makeAWSRequestAsync,
|
|
4762
4764
|
makeAWSRequest,
|