@stacksjs/ts-cloud 0.7.30 → 0.7.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.
- package/dist/bin/cli.js +774 -767
- package/dist/{chunk-xdd6qvre.js → chunk-0c69nbaa.js} +252 -101
- package/dist/{chunk-rr3j38qr.js → chunk-crcjdm09.js} +8 -7
- package/dist/{chunk-4ew46pj6.js → chunk-ebx9gjnn.js} +2 -2
- package/dist/{chunk-k56wpkhg.js → chunk-stt1z5cx.js} +4 -1
- package/dist/{chunk-3mcfbrw8.js → chunk-tskj9fay.js} +1 -1
- package/dist/deploy/index.js +4 -4
- package/dist/drivers/hetzner/client.d.ts +8 -0
- package/dist/drivers/hetzner/driver.d.ts +16 -0
- package/dist/drivers/index.d.ts +3 -3
- package/dist/drivers/index.js +6 -2
- package/dist/drivers/local-box/driver.d.ts +1 -1
- package/dist/drivers/shared/compute-deploy.d.ts +9 -3
- package/dist/drivers/shared/deploy-script.d.ts +12 -2
- package/dist/drivers/shared/fleet.d.ts +12 -1
- package/dist/drivers/shared/rpx-gateway.d.ts +26 -0
- package/dist/drivers/shared/ssh-keys.d.ts +3 -2
- 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/team.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 +3 -3
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
step,
|
|
7
7
|
success,
|
|
8
8
|
warn
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-tskj9fay.js";
|
|
10
10
|
import {
|
|
11
11
|
CloudWatchLogsClient,
|
|
12
12
|
CostExplorerClient,
|
|
@@ -28,13 +28,14 @@ import {
|
|
|
28
28
|
resolveSiteKind,
|
|
29
29
|
resolveUiSource,
|
|
30
30
|
siteInstallBase
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-0c69nbaa.js";
|
|
32
32
|
import {
|
|
33
33
|
artifactKey,
|
|
34
34
|
composeServerlessAppTemplate,
|
|
35
35
|
laravelServerlessEnvDefaults,
|
|
36
36
|
packagePhpApp,
|
|
37
37
|
packageServerlessApp,
|
|
38
|
+
resolveAppDatabase,
|
|
38
39
|
resolveDeploymentMode,
|
|
39
40
|
resolveQueueNames,
|
|
40
41
|
resolveQueues,
|
|
@@ -42,7 +43,7 @@ import {
|
|
|
42
43
|
resolveServerlessArtifactBucketName,
|
|
43
44
|
resolveServerlessAssetBucketName,
|
|
44
45
|
resolveServerlessRuntime
|
|
45
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-stt1z5cx.js";
|
|
46
47
|
import {
|
|
47
48
|
deployStaticSiteWithExternalDnsFull
|
|
48
49
|
} from "./chunk-d7p84vz5.js";
|
|
@@ -347,7 +348,7 @@ async function deployServerlessApp(config, environment, opts = {}) {
|
|
|
347
348
|
}
|
|
348
349
|
if (imageMode) {
|
|
349
350
|
step("Building + pushing container image");
|
|
350
|
-
const { buildAndPushServerlessImage } = await import("./chunk-
|
|
351
|
+
const { buildAndPushServerlessImage } = await import("./chunk-ebx9gjnn.js");
|
|
351
352
|
const built = await buildAndPushServerlessImage({
|
|
352
353
|
app,
|
|
353
354
|
projectRoot,
|
|
@@ -10894,7 +10895,7 @@ function normalizeEngine(engine) {
|
|
|
10894
10895
|
}
|
|
10895
10896
|
function resolveDbEngine(config6) {
|
|
10896
10897
|
const compute = config6.infrastructure?.compute;
|
|
10897
|
-
const declared = config6
|
|
10898
|
+
const declared = resolveAppDatabase(config6)?.engine;
|
|
10898
10899
|
if (declared)
|
|
10899
10900
|
return normalizeEngine(declared);
|
|
10900
10901
|
const managed = compute?.managedServices ?? {};
|
|
@@ -11626,7 +11627,7 @@ function buildDashboardOperations(config6, data) {
|
|
|
11626
11627
|
const backups = config6.infrastructure?.compute?.backups;
|
|
11627
11628
|
if (backups?.enabled) {
|
|
11628
11629
|
ops.push({ id: "backup:run", label: "Run backup now", group: "backup", target: "backup", mutates: true, confirm: "backup" });
|
|
11629
|
-
if (config6
|
|
11630
|
+
if (resolveAppDatabase(config6))
|
|
11630
11631
|
ops.push({ id: "backup:restore", label: "Restore latest DB backup", group: "backup", target: "database", mutates: true, confirm: "restore", danger: true });
|
|
11631
11632
|
}
|
|
11632
11633
|
return ops;
|
|
@@ -11702,7 +11703,7 @@ async function runDashboardOperation(config6, environment, operation, options =
|
|
|
11702
11703
|
return fromComputeOps(operation.id, `rollback ${operation.target}${to ? ` → ${to}` : ""}`, r);
|
|
11703
11704
|
}
|
|
11704
11705
|
if (operation.id === "backup:restore") {
|
|
11705
|
-
const r = await restoreDatabaseBackup(ctx, { database: config6
|
|
11706
|
+
const r = await restoreDatabaseBackup(ctx, { database: resolveAppDatabase(config6) });
|
|
11706
11707
|
return fromComputeOps(operation.id, "db restore", r);
|
|
11707
11708
|
}
|
|
11708
11709
|
const targets = await driver.findComputeTargets({ slug, environment, role: "app" });
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildAndPushServerlessImage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-tskj9fay.js";
|
|
4
4
|
import"./chunk-hsk6fe6x.js";
|
|
5
|
-
import"./chunk-
|
|
5
|
+
import"./chunk-stt1z5cx.js";
|
|
6
6
|
import"./chunk-arsh1g5h.js";
|
|
7
7
|
import"./chunk-v0bahtg2.js";
|
|
8
8
|
export {
|
|
@@ -1140,6 +1140,9 @@ function deploymentCoexistenceError(config) {
|
|
|
1140
1140
|
}
|
|
1141
1141
|
return null;
|
|
1142
1142
|
}
|
|
1143
|
+
function resolveAppDatabase(config) {
|
|
1144
|
+
return config.infrastructure?.appDatabase ?? config.infrastructure?.compute?.database;
|
|
1145
|
+
}
|
|
1143
1146
|
function resolveCloudProvider(config) {
|
|
1144
1147
|
if (config.cloud?.provider)
|
|
1145
1148
|
return config.cloud.provider;
|
|
@@ -46181,4 +46184,4 @@ class ResourceManagementManager {
|
|
|
46181
46184
|
}
|
|
46182
46185
|
var resourceManagementManager = new ResourceManagementManager;
|
|
46183
46186
|
|
|
46184
|
-
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, DASHBOARD_STATE_DIR, DASHBOARD_ENTRY, DASHBOARD_PORT_BASE, DASHBOARD_PORT_SPAN, deriveManagementDashboardPort, 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 };
|
|
46187
|
+
export { detectServiceRegion, signRequest, signRequestAsync, createPresignedUrl, createPresignedUrlAsync, makeAWSRequest, makeAWSRequestOnce, makeAWSRequestAsync, parseXMLResponse, parseJSONResponse, clearSigningKeyCache, getSigningKeyCacheSize, isNodeCryptoAvailable, isWebCryptoAvailable, QueuePresets, RealtimePresets, detectDeploymentTargets, resolveDeploymentMode, deploymentCoexistenceError, resolveAppDatabase, 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, DASHBOARD_STATE_DIR, DASHBOARD_ENTRY, DASHBOARD_PORT_BASE, DASHBOARD_PORT_SPAN, deriveManagementDashboardPort, 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 };
|
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-crcjdm09.js";
|
|
16
16
|
import {
|
|
17
17
|
buildAndPushServerlessImage
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-tskj9fay.js";
|
|
19
19
|
import"../chunk-b82pbxyp.js";
|
|
20
20
|
import"../chunk-hsk6fe6x.js";
|
|
21
21
|
import {
|
|
@@ -30,8 +30,8 @@ import {
|
|
|
30
30
|
resolveUiSource,
|
|
31
31
|
siteInstallBase,
|
|
32
32
|
validateDeploymentConfig
|
|
33
|
-
} from "../chunk-
|
|
34
|
-
import"../chunk-
|
|
33
|
+
} from "../chunk-0c69nbaa.js";
|
|
34
|
+
import"../chunk-stt1z5cx.js";
|
|
35
35
|
import"../chunk-93hjhs78.js";
|
|
36
36
|
import {
|
|
37
37
|
deleteStaticSite,
|
|
@@ -144,6 +144,14 @@ export declare class HetznerClient {
|
|
|
144
144
|
private fetchImpl;
|
|
145
145
|
constructor(options: HetznerClientOptions);
|
|
146
146
|
private request;
|
|
147
|
+
/**
|
|
148
|
+
* Fetch every page of a list endpoint. Hetzner paginates lists at 25 items by
|
|
149
|
+
* default (max 50/page) and follows `meta.pagination.next_page`; without this,
|
|
150
|
+
* an account with more than one page of resources silently truncates — target
|
|
151
|
+
* lookups miss the project's own servers, and find-or-create attempts a
|
|
152
|
+
* duplicate create (409) for firewalls/keys that already exist.
|
|
153
|
+
*/
|
|
154
|
+
private requestAll;
|
|
147
155
|
listServers(): Promise<HetznerServer[]>;
|
|
148
156
|
getServer(id: number): Promise<HetznerServer>;
|
|
149
157
|
createServer(options: CreateServerOptions): Promise<{
|
|
@@ -93,6 +93,22 @@ export declare class HetznerDriver implements CloudDriver {
|
|
|
93
93
|
private ensureSshKey;
|
|
94
94
|
/** getServer that returns null instead of throwing when the server is gone. */
|
|
95
95
|
private tryGetServer;
|
|
96
|
+
/**
|
|
97
|
+
* Rewrite a bun-fleet LB box's rpx route fragment (`sites.d/<slug>.json`)
|
|
98
|
+
* from the CURRENT sites model and the CURRENT app-box upstreams, then
|
|
99
|
+
* restart the gateway so the assembler re-merges. The LB box long outlives
|
|
100
|
+
* any single provision — without this refresh, the routes frozen at its
|
|
101
|
+
* first boot never learn about sites added/removed later or a changed
|
|
102
|
+
* app-fleet upstream set.
|
|
103
|
+
*
|
|
104
|
+
* App boxes without a routable address are dropped from the upstream list;
|
|
105
|
+
* when NO app box is routable the refresh is skipped entirely — rewriting
|
|
106
|
+
* the fragment with zero real upstreams would turn every route into a
|
|
107
|
+
* guaranteed 502, strictly worse than leaving the stale fragment in place.
|
|
108
|
+
* An SSH failure propagates: a deploy that cannot reach its LB to update
|
|
109
|
+
* routes must fail loudly, not silently serve stale ones.
|
|
110
|
+
*/
|
|
111
|
+
private refreshLbRoutes;
|
|
96
112
|
/**
|
|
97
113
|
* Look up an existing ts-cloud server for this project/environment by labels
|
|
98
114
|
* (falling back to name match). Used for idempotency when local state is
|
package/dist/drivers/index.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ export { buildSshArgs, scpUpload, sshExec, sshExecOrThrow, waitForCloudInit, wai
|
|
|
10
10
|
export type { RemoteExecOptions, RemoteExecResult, WaitOptions } from './shared/remote-exec';
|
|
11
11
|
export { AwsBoxProvisioner, buildBoxUserData, createBoxProvisioner, HetznerBoxProvisioner, UBUNTU_2404_AMI_PARAM, } from './shared/box-provision';
|
|
12
12
|
export type { AwsBoxProvisionerOptions, BoxPort, BoxProviderName, BoxProvisioner, BoxSpec, CreateBoxProvisionerOptions, ProvisionedBox, } from './shared/box-provision';
|
|
13
|
-
export { buildAwsArtifactFetch, buildLocalArtifactFetch, buildSiteDeployScript, buildStaticSiteDeployScript, resolveExecStart, } from './shared/deploy-script';
|
|
13
|
+
export { buildAwsArtifactFetch, buildLocalArtifactFetch, buildSiteDeployScript, buildStaticSiteDeployScript, releaseTarballTmpPath, resolveExecStart, } from './shared/deploy-script';
|
|
14
14
|
export { deployAllComputeSites, deploySiteRelease, reloadRpxGateway } from './shared/compute-deploy';
|
|
15
|
-
export { buildRpxConfig, buildRpxLbConfig, buildRpxProvisionScript, deriveRouteId, normalizeRoutePath, renderRpxLauncher, DEFAULT_RPX_CERTS_DIR, RPX_DIR, RPX_LAUNCHER_PATH, RPX_SERVICE_NAME, } from './shared/rpx-gateway';
|
|
16
|
-
export type { BuildRpxConfigOptions, BuildRpxProvisionOptions, RpxGatewayConfig, RpxLbAppBox, RpxRoute, } from './shared/rpx-gateway';
|
|
15
|
+
export { buildRpxConfig, buildRpxFragmentRefreshScript, buildRpxLbConfig, buildRpxProvisionScript, deriveRouteId, normalizeRoutePath, renderRpxLauncher, DEFAULT_RPX_CERTS_DIR, RPX_DIR, RPX_LAUNCHER_PATH, RPX_SERVICE_NAME, } from './shared/rpx-gateway';
|
|
16
|
+
export type { BuildRpxConfigOptions, BuildRpxFragmentRefreshOptions, BuildRpxProvisionOptions, RpxGatewayConfig, RpxLbAppBox, RpxRoute, } from './shared/rpx-gateway';
|
|
17
17
|
export { buildCloudFrontOriginConfig, MANAGED_CACHE_POLICY_DISABLED, MANAGED_CACHE_POLICY_OPTIMIZED, MANAGED_ORIGIN_REQUEST_POLICY_ALL_VIEWER, } from './shared/cloudfront-origin';
|
|
18
18
|
export type { BuildCloudFrontOriginOptions, OriginFrontedBehavior, } from './shared/cloudfront-origin';
|
package/dist/drivers/index.js
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
buildCloudFrontOriginConfig,
|
|
20
20
|
buildLocalArtifactFetch,
|
|
21
21
|
buildRpxConfig,
|
|
22
|
+
buildRpxFragmentRefreshScript,
|
|
22
23
|
buildRpxLbConfig,
|
|
23
24
|
buildRpxProvisionScript,
|
|
24
25
|
buildSiteDeployScript,
|
|
@@ -37,6 +38,7 @@ import {
|
|
|
37
38
|
isBoxMode,
|
|
38
39
|
normalizeRoutePath,
|
|
39
40
|
normalizeSshPublicKey,
|
|
41
|
+
releaseTarballTmpPath,
|
|
40
42
|
reloadRpxGateway,
|
|
41
43
|
renderRpxLauncher,
|
|
42
44
|
resolveExecStart,
|
|
@@ -48,8 +50,8 @@ import {
|
|
|
48
50
|
waitForCloudInit,
|
|
49
51
|
waitForSsh,
|
|
50
52
|
wrapCloudInitUserData
|
|
51
|
-
} from "../chunk-
|
|
52
|
-
import"../chunk-
|
|
53
|
+
} from "../chunk-0c69nbaa.js";
|
|
54
|
+
import"../chunk-stt1z5cx.js";
|
|
53
55
|
import"../chunk-93hjhs78.js";
|
|
54
56
|
import"../chunk-qpj3edwz.js";
|
|
55
57
|
import"../chunk-vd87cpvn.js";
|
|
@@ -67,6 +69,7 @@ export {
|
|
|
67
69
|
resolveExecStart,
|
|
68
70
|
renderRpxLauncher,
|
|
69
71
|
reloadRpxGateway,
|
|
72
|
+
releaseTarballTmpPath,
|
|
70
73
|
normalizeSshPublicKey,
|
|
71
74
|
normalizeRoutePath,
|
|
72
75
|
isBoxMode,
|
|
@@ -85,6 +88,7 @@ export {
|
|
|
85
88
|
buildSiteDeployScript,
|
|
86
89
|
buildRpxProvisionScript,
|
|
87
90
|
buildRpxLbConfig,
|
|
91
|
+
buildRpxFragmentRefreshScript,
|
|
88
92
|
buildRpxConfig,
|
|
89
93
|
buildLocalArtifactFetch,
|
|
90
94
|
buildCloudFrontOriginConfig,
|
|
@@ -13,7 +13,7 @@ export declare class LocalBoxDriver implements CloudDriver {
|
|
|
13
13
|
readonly usesCloudFormation = false;
|
|
14
14
|
getComputeOutputs(): Promise<ComputeStackOutputs>;
|
|
15
15
|
uploadRelease(options: UploadReleaseOptions): Promise<UploadReleaseResult>;
|
|
16
|
-
findComputeTargets(
|
|
16
|
+
findComputeTargets(options: FindComputeTargetsOptions): Promise<ComputeTarget[]>;
|
|
17
17
|
runRemoteDeploy(options: RunRemoteDeployOptions): Promise<RemoteDeployResult>;
|
|
18
18
|
}
|
|
19
19
|
/** Truthy-env check shared by the box-mode gate. */
|
|
@@ -36,8 +36,14 @@ export interface DeployAllSitesOptions {
|
|
|
36
36
|
export declare function deployAllComputeSites(options: DeployAllSitesOptions): Promise<boolean>;
|
|
37
37
|
/**
|
|
38
38
|
* Regenerate the rpx gateway config from the sites model and (re)start the
|
|
39
|
-
* gateway
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* gateway. No-op (returns `true`) unless `compute.proxy.engine === 'rpx'`.
|
|
40
|
+
*
|
|
41
|
+
* Two shapes, resolved by probing for a dedicated load-balancer target:
|
|
42
|
+
* - **Fleet** (bun-style: one rpx LB box fronts N gateway-less app boxes) —
|
|
43
|
+
* rewrite ONLY the LB's route fragment with the multi-upstream LB config
|
|
44
|
+
* ({@link buildRpxLbConfig} + {@link buildRpxFragmentRefreshScript}).
|
|
45
|
+
* - **Single box** — the gateway is co-located with the app, so the full
|
|
46
|
+
* provision script runs on the app targets. Re-runnable: it rewrites the
|
|
47
|
+
* launcher + unit and `systemctl restart`s, reloading the new routes.
|
|
42
48
|
*/
|
|
43
49
|
export declare function reloadRpxGateway(options: DeployAllSitesOptions): Promise<boolean>;
|
|
@@ -77,6 +77,8 @@ export interface BuildSiteDeployScriptOptions {
|
|
|
77
77
|
export declare function buildSiteDeployScript(options: BuildSiteDeployScriptOptions): string[];
|
|
78
78
|
export interface BuildStaticSiteDeployScriptOptions {
|
|
79
79
|
siteName: string;
|
|
80
|
+
/** Project slug — namespaces the staged tarball on shared boxes. */
|
|
81
|
+
slug?: string;
|
|
80
82
|
/** How the remote host obtains the release tarball */
|
|
81
83
|
artifactFetch: string[];
|
|
82
84
|
/** Site base dir holding `releases/`, `current`. Default `/var/www/<site>`. */
|
|
@@ -101,5 +103,13 @@ export interface BuildStaticSiteDeployScriptOptions {
|
|
|
101
103
|
* tlsx), which ts-cloud points at the symlink. Old releases are pruned.
|
|
102
104
|
*/
|
|
103
105
|
export declare function buildStaticSiteDeployScript(options: BuildStaticSiteDeployScriptOptions): string[];
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Box-local staging path for the uploaded release tarball. Namespaced by
|
|
108
|
+
* project slug + site + release id so two projects sharing a box (or two
|
|
109
|
+
* overlapping deploys of one site) never clobber each other's tarball between
|
|
110
|
+
* the fetch and the extract — the flat `/tmp/<site>-release.tar.gz` layout
|
|
111
|
+
* cross-contaminated releases on shared boxes.
|
|
112
|
+
*/
|
|
113
|
+
export declare function releaseTarballTmpPath(slug: string | undefined, siteName: string, releaseId: string): string;
|
|
114
|
+
export declare function buildAwsArtifactFetch(bucket: string, key: string, region: string, destPath: string): string[];
|
|
115
|
+
export declare function buildLocalArtifactFetch(localPath: string, destPath: string): string[];
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* private network, and (required) a dedicated services box so every app server
|
|
13
13
|
* shares one database/cache.
|
|
14
14
|
*/
|
|
15
|
-
import type { ComputeConfig, DatabaseConfig } from '@ts-cloud/core';
|
|
15
|
+
import type { CloudConfig, ComputeConfig, DatabaseConfig } from '@ts-cloud/core';
|
|
16
16
|
export type FleetRole = 'app' | 'services' | 'lb';
|
|
17
17
|
export interface FleetTopology {
|
|
18
18
|
/** Number of application servers. */
|
|
@@ -32,3 +32,14 @@ export declare function resolveFleetTopology(compute?: ComputeConfig): FleetTopo
|
|
|
32
32
|
* under `site.env` (explicit values win).
|
|
33
33
|
*/
|
|
34
34
|
export declare function buildFleetServicesEnv(servicesPrivateIp: string, database?: DatabaseConfig): Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* Build the provision commands for a fleet's dedicated services box (DB /
|
|
37
|
+
* cache / search only — no app runtime, no gateway). Shared by the PHP fleet
|
|
38
|
+
* and the bun/node/deno fleet so the two paths can never drift: engine
|
|
39
|
+
* installs bound to the private network, the app database + user, box
|
|
40
|
+
* maintenance, the on-box notifier (so the monitoring cron can report — a
|
|
41
|
+
* no-op unless notifications are configured), and — when `compute.backups`
|
|
42
|
+
* is enabled — the nightly DB backup, which MUST run here (where the
|
|
43
|
+
* database lives), never on an app box.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildFleetServicesBoxProvision(config: CloudConfig): string[];
|
|
@@ -297,3 +297,29 @@ export declare function buildCertManagementCommands(options: BuildRpxProvisionOp
|
|
|
297
297
|
* server-app/server-static sites appear in the gateway automatically.
|
|
298
298
|
*/
|
|
299
299
|
export declare function buildRpxProvisionScript(options: BuildRpxProvisionOptions): string[];
|
|
300
|
+
export interface BuildRpxFragmentRefreshOptions {
|
|
301
|
+
/** The gateway config this deploy resolved (single-box or LB multi-upstream). */
|
|
302
|
+
config: RpxGatewayConfig;
|
|
303
|
+
/**
|
|
304
|
+
* This project's slug — the registry fragment is rewritten at
|
|
305
|
+
* `<sites.d>/<slug>.json`, exactly as in {@link buildRpxProvisionScript}.
|
|
306
|
+
* Defaults to `'app'`.
|
|
307
|
+
*/
|
|
308
|
+
slug?: string;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Build the shell commands that rewrite ONLY this app's rpx route fragment
|
|
312
|
+
* (`<sites.d>/<slug>.json`) and restart the gateway, so the running assembler
|
|
313
|
+
* re-merges every fragment and the new routes go live.
|
|
314
|
+
*
|
|
315
|
+
* Unlike {@link buildRpxProvisionScript} this does NOT reinstall rpx/tlsx,
|
|
316
|
+
* rewrite the assembler launcher, or touch the systemd unit — it is the cheap
|
|
317
|
+
* reload for a box whose gateway is already provisioned. That is exactly the
|
|
318
|
+
* bun-fleet load-balancer situation: the LB box is created once (cloud-init
|
|
319
|
+
* writes the fragment at first boot) but long outlives any single deploy, so
|
|
320
|
+
* its routes must be refreshed from the CURRENT sites model + CURRENT app-box
|
|
321
|
+
* upstreams on every provision/deploy — otherwise sites added later 404 and
|
|
322
|
+
* app-fleet scale changes never reach the gateway. The `systemctl restart`
|
|
323
|
+
* re-runs the stable assembler, which re-reads all of {@link RPX_SITES_DIR}.
|
|
324
|
+
*/
|
|
325
|
+
export declare function buildRpxFragmentRefreshScript(options: BuildRpxFragmentRefreshOptions): string[];
|
|
@@ -15,7 +15,8 @@ export interface AuthorizedKeysOptions {
|
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Build the commands that reconcile the managed key block in authorized_keys.
|
|
18
|
-
* Strips any previous ts-cloud block, then appends the current set.
|
|
19
|
-
*
|
|
18
|
+
* Strips any previous ts-cloud block, then appends the current set. An empty
|
|
19
|
+
* key set still strips the block — removing your last key from the config must
|
|
20
|
+
* remove it from the box (e.g. revoking a compromised key).
|
|
20
21
|
*/
|
|
21
22
|
export declare function buildAuthorizedKeysScript(keys?: SshKeyConfig[], options?: AuthorizedKeysOptions): 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-crcjdm09.js";
|
|
59
59
|
import {
|
|
60
60
|
buildAndPushServerlessImage
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-tskj9fay.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-0c69nbaa.js";
|
|
109
109
|
import {
|
|
110
110
|
ABTestManager,
|
|
111
111
|
AI,
|
|
@@ -446,6 +446,7 @@ import {
|
|
|
446
446
|
replicaManager,
|
|
447
447
|
requiresReplacement,
|
|
448
448
|
resolveApp,
|
|
449
|
+
resolveAppDatabase,
|
|
449
450
|
resolveCloudProvider,
|
|
450
451
|
resolveCredentials,
|
|
451
452
|
resolveDashboardDomain,
|
|
@@ -509,7 +510,7 @@ import {
|
|
|
509
510
|
withSecurity,
|
|
510
511
|
withTimeout,
|
|
511
512
|
xrayManager
|
|
512
|
-
} from "./chunk-
|
|
513
|
+
} from "./chunk-stt1z5cx.js";
|
|
513
514
|
import {
|
|
514
515
|
EC2Client,
|
|
515
516
|
SSMClient
|
|
@@ -4729,6 +4730,7 @@ export {
|
|
|
4729
4730
|
resolveDashboardAction,
|
|
4730
4731
|
resolveCredentials,
|
|
4731
4732
|
resolveCloudProvider,
|
|
4733
|
+
resolveAppDatabase,
|
|
4732
4734
|
resolveApp,
|
|
4733
4735
|
requiresReplacement,
|
|
4734
4736
|
replicaManager,
|