@stacksjs/ts-cloud 0.16.24 → 0.16.26

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 (155) hide show
  1. package/dist/aws/cloudfront.d.ts +88 -49
  2. package/dist/aws/index.js +1 -1
  3. package/dist/bin/chunk-08hxbrmv.js +1 -0
  4. package/dist/bin/{chunk-xh5jcv64.js → chunk-0apv4e8e.js} +3 -3
  5. package/dist/bin/{chunk-wfa8j3wg.js → chunk-0hbrkdrc.js} +2 -2
  6. package/dist/bin/{chunk-jwdcx0mm.js → chunk-10dnawvx.js} +1 -1
  7. package/dist/bin/{chunk-c35qm7as.js → chunk-2857cbf1.js} +1 -1
  8. package/dist/bin/chunk-2qrr4ydb.js +1 -0
  9. package/dist/bin/{chunk-0ytk5g2t.js → chunk-3rzabz10.js} +1 -1
  10. package/dist/bin/{chunk-jdfbahjb.js → chunk-4a8qt6e8.js} +15 -15
  11. package/dist/bin/chunk-4jgespb7.js +1 -0
  12. package/dist/bin/{chunk-prj5b597.js → chunk-4r46kw46.js} +2 -2
  13. package/dist/bin/{chunk-d1psxeqj.js → chunk-4xfwb21f.js} +1 -1
  14. package/dist/bin/{chunk-wffaqgcc.js → chunk-5ky6qf18.js} +25 -25
  15. package/dist/bin/{chunk-257sygzm.js → chunk-817q3s2p.js} +1 -1
  16. package/dist/bin/{chunk-8e7n357e.js → chunk-85733wwc.js} +63 -63
  17. package/dist/bin/{chunk-r3hkc2s3.js → chunk-8hnph1yy.js} +1 -1
  18. package/dist/bin/{chunk-hjv1k8s9.js → chunk-8k87zpnp.js} +5 -5
  19. package/dist/bin/chunk-8tp6srfc.js +2 -0
  20. package/dist/bin/{chunk-988qv730.js → chunk-92rhkvpx.js} +4 -4
  21. package/dist/bin/chunk-aqreqn37.js +1 -0
  22. package/dist/bin/{chunk-5x59x4qw.js → chunk-ccykpema.js} +1 -1
  23. package/dist/bin/{chunk-6eesa8d1.js → chunk-cgyqnbcm.js} +1 -1
  24. package/dist/bin/{chunk-5kc8s9gp.js → chunk-dh6kj6ce.js} +2 -2
  25. package/dist/bin/{chunk-0md2h0an.js → chunk-e3tjy3wg.js} +6 -6
  26. package/dist/bin/chunk-eh3235zq.js +1 -0
  27. package/dist/bin/chunk-eshss5qy.js +2 -0
  28. package/dist/bin/{chunk-m2gwzksz.js → chunk-f4rp62j4.js} +8 -8
  29. package/dist/bin/chunk-ff888cnm.js +1 -0
  30. package/dist/bin/chunk-fjxsj9z9.js +2 -0
  31. package/dist/bin/{chunk-4sq6cvz5.js → chunk-h3shxxh4.js} +2 -2
  32. package/dist/bin/{chunk-apw5bbjg.js → chunk-hvd87xj9.js} +1 -1
  33. package/dist/bin/chunk-jxyt009c.js +1 -0
  34. package/dist/bin/chunk-kxmq7r53.js +1 -0
  35. package/dist/bin/{chunk-9e7pqhj1.js → chunk-qsyna6ng.js} +1 -1
  36. package/dist/bin/{chunk-4y20ry45.js → chunk-qxssaa4s.js} +1 -1
  37. package/dist/bin/{chunk-k9mzq7z9.js → chunk-r2ft7vek.js} +1 -1
  38. package/dist/bin/{chunk-hez48c69.js → chunk-rfvx641h.js} +2 -2
  39. package/dist/bin/chunk-swnef46q.js +1 -0
  40. package/dist/bin/chunk-v95b2dy0.js +1 -0
  41. package/dist/bin/{chunk-ax41jhq7.js → chunk-w23en85y.js} +2 -2
  42. package/dist/bin/chunk-wjwxtz68.js +1 -0
  43. package/dist/bin/{chunk-1fde3e2c.js → chunk-x2r1zm2r.js} +1 -1
  44. package/dist/bin/chunk-z3962as2.js +34 -0
  45. package/dist/bin/{chunk-3b8a3knq.js → chunk-zvt7as22.js} +1 -1
  46. package/dist/bin/cli.js +375 -375
  47. package/dist/bin/dashboard-server.js +1 -1
  48. package/dist/{chunk-bzbryxfm.js → chunk-08tswmb3.js} +1 -1
  49. package/dist/{chunk-4rkjhvgw.js → chunk-0p7ddjt6.js} +9 -9
  50. package/dist/chunk-2nma0bd8.js +92 -0
  51. package/dist/chunk-31qham3c.js +1 -0
  52. package/dist/chunk-3zv0e36t.js +34 -0
  53. package/dist/{chunk-d8w90gsb.js → chunk-49p5cx21.js} +21 -21
  54. package/dist/{chunk-mv7hne2c.js → chunk-5db32a4x.js} +2 -2
  55. package/dist/chunk-7fbfmpyx.js +1 -0
  56. package/dist/{chunk-rgq7m90a.js → chunk-7p1653g6.js} +56 -56
  57. package/dist/{chunk-hzbyj0xd.js → chunk-98qx6m9h.js} +1 -1
  58. package/dist/{chunk-zv85cpt2.js → chunk-b10n1xy5.js} +1 -1
  59. package/dist/chunk-dschvakr.js +1 -0
  60. package/dist/chunk-e44ajkha.js +5 -0
  61. package/dist/{chunk-vtm83crj.js → chunk-k75jv8s6.js} +129 -129
  62. package/dist/{chunk-65yh2h1e.js → chunk-mdqnpbbc.js} +14 -14
  63. package/dist/{chunk-jrrw3ezm.js → chunk-mte9da2p.js} +4 -4
  64. package/dist/chunk-nkd35khb.js +1 -0
  65. package/dist/{chunk-9ca1yafd.js → chunk-q0g0rjn3.js} +1 -1
  66. package/dist/chunk-rxs4y74z.js +2 -0
  67. package/dist/{chunk-97trx8p9.js → chunk-setpnrtg.js} +2 -2
  68. package/dist/chunk-tvwrthfq.js +2 -0
  69. package/dist/{chunk-v7y50hhf.js → chunk-w23wrsa4.js} +70 -70
  70. package/dist/deploy/index.js +1 -1
  71. package/dist/dns/index.js +1 -1
  72. package/dist/drivers/index.js +1 -1
  73. package/dist/index.d.ts +1 -1
  74. package/dist/index.js +36 -36
  75. package/dist/operations/index.js +1 -1
  76. package/dist/protection/index.js +1 -1
  77. package/dist/spend/index.js +1 -1
  78. package/dist/ui/404.html +1 -1
  79. package/dist/ui/accept-invitation.html +1 -1
  80. package/dist/ui/access-denied.html +1 -1
  81. package/dist/ui/account/automation.html +5 -5
  82. package/dist/ui/account/security.html +2 -2
  83. package/dist/ui/applications/compose.html +6 -6
  84. package/dist/ui/applications/new.html +2 -2
  85. package/dist/ui/data/backups.html +5 -5
  86. package/dist/ui/data/services.html +6 -6
  87. package/dist/ui/data/volumes.html +6 -6
  88. package/dist/ui/index.html +6 -6
  89. package/dist/ui/infrastructure/topology.html +6 -6
  90. package/dist/ui/integrations.html +1 -1
  91. package/dist/ui/operations/alerts.html +6 -6
  92. package/dist/ui/operations/configuration.html +6 -6
  93. package/dist/ui/operations/jobs.html +6 -6
  94. package/dist/ui/operations/maintenance.html +5 -5
  95. package/dist/ui/operations/observability.html +6 -6
  96. package/dist/ui/operations/previews.html +6 -6
  97. package/dist/ui/operations/queue.html +6 -6
  98. package/dist/ui/operations/regions.html +6 -6
  99. package/dist/ui/operations/releases.html +6 -6
  100. package/dist/ui/operations/spend.html +6 -6
  101. package/dist/ui/operations/workloads.html +5 -5
  102. package/dist/ui/security.html +2 -2
  103. package/dist/ui/server/actions.html +6 -6
  104. package/dist/ui/server/activity.html +1 -1
  105. package/dist/ui/server/capacity.html +6 -6
  106. package/dist/ui/server/database.html +6 -6
  107. package/dist/ui/server/deployments.html +6 -6
  108. package/dist/ui/server/diagnostics.html +2 -2
  109. package/dist/ui/server/firewall.html +5 -5
  110. package/dist/ui/server/fleet.html +5 -5
  111. package/dist/ui/server/logs.html +6 -6
  112. package/dist/ui/server/metrics.html +6 -6
  113. package/dist/ui/server/security.html +2 -2
  114. package/dist/ui/server/services.html +2 -2
  115. package/dist/ui/server/sites.html +6 -6
  116. package/dist/ui/server/ssh-keys.html +6 -6
  117. package/dist/ui/server/team.html +6 -6
  118. package/dist/ui/server/terminal.html +2 -2
  119. package/dist/ui/serverless/alarms.html +5 -5
  120. package/dist/ui/serverless/assets.html +2 -2
  121. package/dist/ui/serverless/cost.html +2 -2
  122. package/dist/ui/serverless/data.html +6 -6
  123. package/dist/ui/serverless/deployments.html +2 -2
  124. package/dist/ui/serverless/firewall.html +2 -2
  125. package/dist/ui/serverless/functions.html +6 -6
  126. package/dist/ui/serverless/logs.html +6 -6
  127. package/dist/ui/serverless/metrics.html +2 -2
  128. package/dist/ui/serverless/queues.html +5 -5
  129. package/dist/ui/serverless/secrets.html +6 -6
  130. package/dist/ui/serverless/traces.html +6 -6
  131. package/dist/ui/serverless.html +6 -6
  132. package/package.json +3 -3
  133. package/dist/bin/chunk-6aj3h8yk.js +0 -1
  134. package/dist/bin/chunk-78w3bn85.js +0 -1
  135. package/dist/bin/chunk-9b6af1sj.js +0 -1
  136. package/dist/bin/chunk-a07jfqvs.js +0 -1
  137. package/dist/bin/chunk-a3rq51az.js +0 -2
  138. package/dist/bin/chunk-f0fpp4mk.js +0 -2
  139. package/dist/bin/chunk-fpy7nv5g.js +0 -1
  140. package/dist/bin/chunk-fq4nxfec.js +0 -1
  141. package/dist/bin/chunk-ghe1nawv.js +0 -1
  142. package/dist/bin/chunk-kf1p7s61.js +0 -1
  143. package/dist/bin/chunk-q8crt80d.js +0 -1
  144. package/dist/bin/chunk-rpfvv7hw.js +0 -2
  145. package/dist/bin/chunk-wg20x65t.js +0 -34
  146. package/dist/bin/chunk-xb82bmgf.js +0 -1
  147. package/dist/bin/chunk-xxgybh3b.js +0 -1
  148. package/dist/chunk-1ba6keyk.js +0 -1
  149. package/dist/chunk-3x9g48ey.js +0 -92
  150. package/dist/chunk-e3axmek0.js +0 -1
  151. package/dist/chunk-e7m70ex1.js +0 -2
  152. package/dist/chunk-qa6jjv3m.js +0 -1
  153. package/dist/chunk-qrchr75r.js +0 -5
  154. package/dist/chunk-rnjgde95.js +0 -1
  155. package/dist/chunk-t4ynyk8k.js +0 -34
@@ -55,6 +55,93 @@ export interface Distribution {
55
55
  };
56
56
  Enabled: boolean;
57
57
  }
58
+ /** A repeated XML element as AWSClient parses it: one occurrence is a bare value, several an array. */
59
+ export type XmlList<T> = T | T[];
60
+ /**
61
+ * CloudFront's `<Quantity>`/`<Items>` wrapper as AWSClient parses it. `Items`
62
+ * holds the repeated element under its own name (`{ Method: [..] }`, never a
63
+ * bare array), and is absent when Quantity is 0.
64
+ */
65
+ export interface CloudFrontItems<Element extends string, T> {
66
+ Quantity: number;
67
+ Items?: {
68
+ [K in Element]: XmlList<T>;
69
+ };
70
+ }
71
+ /** A cache behavior as it appears in a parsed distribution config. */
72
+ export interface RawCacheBehavior {
73
+ TargetOriginId: string;
74
+ ViewerProtocolPolicy: string;
75
+ /** CachedMethods is nested inside AllowedMethods, as in the XML, not beside it. */
76
+ AllowedMethods?: CloudFrontItems<'Method', string> & {
77
+ CachedMethods?: CloudFrontItems<'Method', string>;
78
+ };
79
+ CachePolicyId?: string;
80
+ OriginRequestPolicyId?: string;
81
+ ResponseHeadersPolicyId?: string;
82
+ Compress?: boolean;
83
+ SmoothStreaming?: boolean;
84
+ FieldLevelEncryptionId?: string;
85
+ FunctionAssociations?: CloudFrontItems<'FunctionAssociation', {
86
+ EventType: string;
87
+ FunctionARN: string;
88
+ }>;
89
+ LambdaFunctionAssociations?: CloudFrontItems<'LambdaFunctionAssociation', Record<string, any>>;
90
+ ForwardedValues?: Record<string, any>;
91
+ TrustedSigners?: Record<string, any>;
92
+ TrustedKeyGroups?: Record<string, any>;
93
+ MinTTL?: number;
94
+ DefaultTTL?: number;
95
+ MaxTTL?: number;
96
+ [field: string]: any;
97
+ }
98
+ /** An origin as it appears in a parsed distribution config. */
99
+ export interface RawOrigin {
100
+ Id: string;
101
+ DomainName: string;
102
+ OriginPath?: string;
103
+ OriginAccessControlId?: string;
104
+ S3OriginConfig?: {
105
+ OriginAccessIdentity?: string;
106
+ };
107
+ CustomOriginConfig?: Record<string, any>;
108
+ ConnectionAttempts?: number;
109
+ ConnectionTimeout?: number;
110
+ [field: string]: any;
111
+ }
112
+ /**
113
+ * A distribution config exactly as getDistributionConfig returns it: the parsed
114
+ * XML, kept raw so it can be PUT back. Every list is a CloudFrontItems node,
115
+ * and numeric text is a number (so a numeric CallerReference is a number).
116
+ * Fields not listed here pass through untouched.
117
+ */
118
+ export interface RawDistributionConfig {
119
+ CallerReference: string | number;
120
+ Comment?: string;
121
+ Enabled: boolean;
122
+ Origins: CloudFrontItems<'Origin', RawOrigin>;
123
+ DefaultCacheBehavior: RawCacheBehavior;
124
+ CacheBehaviors?: CloudFrontItems<'CacheBehavior', RawCacheBehavior & {
125
+ PathPattern: string;
126
+ }>;
127
+ Aliases?: CloudFrontItems<'CNAME', string>;
128
+ CustomErrorResponses?: CloudFrontItems<'CustomErrorResponse', {
129
+ ErrorCode: number;
130
+ ResponsePagePath?: string;
131
+ ResponseCode?: number | string;
132
+ ErrorCachingMinTTL?: number;
133
+ }>;
134
+ DefaultRootObject?: string;
135
+ PriceClass?: string;
136
+ HttpVersion?: string;
137
+ IsIPV6Enabled?: boolean;
138
+ WebACLId?: string;
139
+ ViewerCertificate?: Record<string, any>;
140
+ Restrictions?: Record<string, any>;
141
+ Logging?: Record<string, any>;
142
+ OriginGroups?: Record<string, any>;
143
+ [field: string]: any;
144
+ }
58
145
  /**
59
146
  * CloudFront client using direct API calls
60
147
  */
@@ -111,55 +198,7 @@ export declare class CloudFrontClient {
111
198
  */
112
199
  getDistributionConfig(distributionId: string): Promise<{
113
200
  ETag: string;
114
- DistributionConfig: {
115
- Origins: {
116
- Quantity: number;
117
- Items: any;
118
- };
119
- DefaultCacheBehavior: {
120
- TargetOriginId: string;
121
- ViewerProtocolPolicy: string;
122
- AllowedMethods?: {
123
- Quantity: number;
124
- Items: string[];
125
- };
126
- CachedMethods?: {
127
- Quantity: number;
128
- Items: string[];
129
- };
130
- ForwardedValues?: any;
131
- TrustedSigners?: any;
132
- MinTTL?: number;
133
- DefaultTTL?: number;
134
- MaxTTL?: number;
135
- };
136
- CacheBehaviors?: {
137
- Quantity: number;
138
- Items: Array<{
139
- PathPattern: string;
140
- TargetOriginId: string;
141
- ViewerProtocolPolicy: string;
142
- AllowedMethods?: {
143
- Quantity: number;
144
- Items: string[];
145
- };
146
- CachedMethods?: {
147
- Quantity: number;
148
- Items: string[];
149
- };
150
- ForwardedValues?: any;
151
- MinTTL?: number;
152
- DefaultTTL?: number;
153
- MaxTTL?: number;
154
- }>;
155
- };
156
- Aliases?: {
157
- Quantity: number;
158
- Items: string[];
159
- };
160
- Comment?: string;
161
- Enabled: boolean;
162
- };
201
+ DistributionConfig: RawDistributionConfig;
163
202
  }>;
164
203
  /**
165
204
  * Invalidate all files
package/dist/aws/index.js CHANGED
@@ -1 +1 @@
1
- import{Ae,nr,ls,us,bu,Qa,Ha,ps,gs,Ga,tt,z,rt,se,E,ye,An,qa,Oe,Va,yn,In,Sn,vh,Th,Ny,ky,By,_y,wt,xy,Oy,Ly,$y,Rt,wh,Rh,Dh,Dt,Ph,Nh,kh,Cn,My,Fy,Uy,ir,Qy,Hy,Gy,ja,za,vu,qy,Vy,jy,sr,Bh,_h,or,nt,En,Ka,Tu,zy,wu,Ky,Pt,Wy,Jy,Xy,Yy,ae,Zy,eI,tI,rI,ar,nI,iI,sI,bn,Wa,Ja,Ru,Du,Xa,cr}from"../chunk-4rkjhvgw.js";import{Ie,it,vn,xh}from"../chunk-t4ynyk8k.js";import{y}from"../chunk-65yh2h1e.js";import{Le}from"../chunk-dm6kyz6e.js";import{K}from"../chunk-e7m70ex1.js";import{st,ce,$e,Se,Nt,wn,hs,fs,dr,lr,Rn,ur,As,ys,Is,Ss,W,Cs,Es,bs,vs,de,Ts,ws,Rs,w,ec,Dn,tc,le,pr}from"../chunk-97trx8p9.js";import{I}from"../chunk-mv7hne2c.js";import{Tr,we}from"../chunk-x9bpm5s1.js";import{f}from"../chunk-bzbryxfm.js";import{o}from"../chunk-3x9g48ey.js";import{Rr,di,n,l,tf}from"../chunk-wrpnnrdf.js";export{le as ACMClient,pr as ACMDnsValidator,n as AWSClient,Ka as ApplicationAutoScalingClient,nr as AwsBackupClient,Th as BedrockAgentClient,vh as BedrockAgentRuntimeClient,Sn as BedrockClient,In as BedrockRuntimeClient,f as CloudFormationClient,y as CloudFrontClient,ye as CloudWatchLogsClient,Se as CloudflareProvider,wt as ComprehendClient,An as ConnectClient,gs as CostExplorerClient,Dn as DnsProviderFactory,Oe as DynamoDBClient,Tr as EC2Client,Le as ECRClient,tt as ECSClient,cr as EFSClient,qa as ELBv2Client,nt as ElastiCacheClient,vn as EmailClient,or as EventBridgeClient,$e as GoDaddyProvider,Ie as IAMClient,Tu as ImapServer,sr as KendraClient,E as LambdaClient,Va as OpenSearchClient,st as PROXIABLE_RECORD_TYPES,ja as PersonalizeClient,vu as PersonalizeEventsClient,za as PersonalizeRuntimeClient,Cn as PollyClient,ce as PorkbunProvider,K as RDSClient,Rt as RekognitionClient,I as Route53Client,Ga as Route53DomainsClient,W as Route53Provider,o as S3Client,it as SESClient,rt as SNSClient,se as SQSClient,we as SSMClient,Ae as STSClient,En as SchedulerClient,z as SecretsManagerClient,Pt as SmsClient,Xa as SmsVoiceClient,wu as SmtpServer,bn as SupportClient,Wa as SupportTemplates,Dt as TextractClient,yn as TranscribeClient,ir as TranslateClient,de as UnifiedDnsValidator,ar as VoiceClient,xy as analyzeSentiment,Is as applyDeclaredZoneSettings,bs as applyZoneMigration,l as buildQueryParams,di as coerceXmlValues,By as completeWithClaude,$y as containsPii,Rh as countFacesInS3Image,Yy as createDeliveryReceiptHandler,w as createDnsProvider,ws as createGoDaddyValidator,ps as createObjectStorageClient,Ts as createPorkbunValidator,iI as createRecordingHandler,Rs as createRoute53Validator,Uy as createSSML,Jy as createScheduledSmsHandler,Xy as createSmsClient,Wy as createSmsInboxHandler,Du as createSmsInfrastructure,sI as createVoiceClient,nI as createVoicemailHandler,ur as delegateZone,As as delegateZoneFromConfig,ys as describeDelegation,Ss as describeZoneSettings,tf as detectCredentialSource,ec as detectDnsProvider,wh as detectLabelsFromS3,Ly as detectLanguage,tc as dnsProviders,xh as email,Cs as exportRoute53Zone,Oy as extractEntities,Nh as extractFormsFromS3,kh as extractTablesFromS3,Ph as extractTextFromS3,Zy as formatPhoneNumber,_y as generateEmbeddings,tI as getCountryCode,qy as getRecommendations,Vy as getSimilarItems,Ru as getSmsInfrastructureStatus,Dh as isContentSafe,dr as isNameserverRegistrar,rI as isSamePhoneNumber,eI as isValidPhoneNumber,lr as isZoneHost,us as keyMatchesFilters,ky as listClaudeModels,Gy as listLanguages,Fy as listVoices,bu as migrateObjectStorage,ae as normalizePhoneNumber,Es as planZoneMigration,Nt as policyTag,Qa as providerEndpoint,wn as qualifyName,fs as reconcileDeclaredRecords,ls as remapKey,Ny as requestModelAccess,hs as resolveDeclaredRecords,Ha as resolveObjectStorage,Rr as resolveS3Endpoint,_h as retrieveForRag,Rn as sameNameservers,Bh as search,Ja as setupSmsInfrastructure,zy as startImapServer,Ky as startSmtpServer,My as textToSpeech,jy as trackEvent,Qy as translate,Hy as translateToMultiple,vs as verifyZoneParity};
1
+ import{Ae,nr,ls,us,bu,Qa,Ha,ps,gs,Ga,tt,z,rt,se,b,ye,An,qa,Oe,Va,yn,In,Sn,vh,Th,Ny,ky,By,_y,wt,xy,Oy,Ly,$y,Rt,wh,Rh,Dh,Dt,Ph,Nh,kh,Cn,My,Fy,Uy,ir,Qy,Hy,Gy,ja,za,vu,qy,Vy,jy,sr,Bh,_h,or,nt,En,Ka,Tu,zy,wu,Ky,Pt,Wy,Jy,Xy,Yy,ae,Zy,eI,tI,rI,ar,nI,iI,sI,bn,Wa,Ja,Ru,Du,Xa,cr}from"../chunk-0p7ddjt6.js";import{Ie,it,vn,xh}from"../chunk-3zv0e36t.js";import{y}from"../chunk-mdqnpbbc.js";import{Le}from"../chunk-dm6kyz6e.js";import{K}from"../chunk-tvwrthfq.js";import{st,ce,$e,Se,Nt,wn,hs,fs,dr,lr,Rn,ur,As,ys,Is,Ss,W,Cs,Es,bs,vs,de,Ts,ws,Rs,R,ec,Dn,tc,le,pr}from"../chunk-setpnrtg.js";import{S}from"../chunk-5db32a4x.js";import{Tr,we}from"../chunk-x9bpm5s1.js";import{f}from"../chunk-08tswmb3.js";import{o}from"../chunk-2nma0bd8.js";import{Rr,di,n,l,tf}from"../chunk-wrpnnrdf.js";export{le as ACMClient,pr as ACMDnsValidator,n as AWSClient,Ka as ApplicationAutoScalingClient,nr as AwsBackupClient,Th as BedrockAgentClient,vh as BedrockAgentRuntimeClient,Sn as BedrockClient,In as BedrockRuntimeClient,f as CloudFormationClient,y as CloudFrontClient,ye as CloudWatchLogsClient,Se as CloudflareProvider,wt as ComprehendClient,An as ConnectClient,gs as CostExplorerClient,Dn as DnsProviderFactory,Oe as DynamoDBClient,Tr as EC2Client,Le as ECRClient,tt as ECSClient,cr as EFSClient,qa as ELBv2Client,nt as ElastiCacheClient,vn as EmailClient,or as EventBridgeClient,$e as GoDaddyProvider,Ie as IAMClient,Tu as ImapServer,sr as KendraClient,b as LambdaClient,Va as OpenSearchClient,st as PROXIABLE_RECORD_TYPES,ja as PersonalizeClient,vu as PersonalizeEventsClient,za as PersonalizeRuntimeClient,Cn as PollyClient,ce as PorkbunProvider,K as RDSClient,Rt as RekognitionClient,S as Route53Client,Ga as Route53DomainsClient,W as Route53Provider,o as S3Client,it as SESClient,rt as SNSClient,se as SQSClient,we as SSMClient,Ae as STSClient,En as SchedulerClient,z as SecretsManagerClient,Pt as SmsClient,Xa as SmsVoiceClient,wu as SmtpServer,bn as SupportClient,Wa as SupportTemplates,Dt as TextractClient,yn as TranscribeClient,ir as TranslateClient,de as UnifiedDnsValidator,ar as VoiceClient,xy as analyzeSentiment,Is as applyDeclaredZoneSettings,bs as applyZoneMigration,l as buildQueryParams,di as coerceXmlValues,By as completeWithClaude,$y as containsPii,Rh as countFacesInS3Image,Yy as createDeliveryReceiptHandler,R as createDnsProvider,ws as createGoDaddyValidator,ps as createObjectStorageClient,Ts as createPorkbunValidator,iI as createRecordingHandler,Rs as createRoute53Validator,Uy as createSSML,Jy as createScheduledSmsHandler,Xy as createSmsClient,Wy as createSmsInboxHandler,Du as createSmsInfrastructure,sI as createVoiceClient,nI as createVoicemailHandler,ur as delegateZone,As as delegateZoneFromConfig,ys as describeDelegation,Ss as describeZoneSettings,tf as detectCredentialSource,ec as detectDnsProvider,wh as detectLabelsFromS3,Ly as detectLanguage,tc as dnsProviders,xh as email,Cs as exportRoute53Zone,Oy as extractEntities,Nh as extractFormsFromS3,kh as extractTablesFromS3,Ph as extractTextFromS3,Zy as formatPhoneNumber,_y as generateEmbeddings,tI as getCountryCode,qy as getRecommendations,Vy as getSimilarItems,Ru as getSmsInfrastructureStatus,Dh as isContentSafe,dr as isNameserverRegistrar,rI as isSamePhoneNumber,eI as isValidPhoneNumber,lr as isZoneHost,us as keyMatchesFilters,ky as listClaudeModels,Gy as listLanguages,Fy as listVoices,bu as migrateObjectStorage,ae as normalizePhoneNumber,Es as planZoneMigration,Nt as policyTag,Qa as providerEndpoint,wn as qualifyName,fs as reconcileDeclaredRecords,ls as remapKey,Ny as requestModelAccess,hs as resolveDeclaredRecords,Ha as resolveObjectStorage,Rr as resolveS3Endpoint,_h as retrieveForRag,Rn as sameNameservers,Bh as search,Ja as setupSmsInfrastructure,zy as startImapServer,Ky as startSmtpServer,My as textToSpeech,jy as trackEvent,Qy as translate,Hy as translateToMultiple,vs as verifyZoneParity};
@@ -0,0 +1 @@
1
+ import{Jn}from"./chunk-5ky6qf18.js";import"./chunk-w23en85y.js";import"./chunk-2857cbf1.js";import"./chunk-qsyna6ng.js";import"./chunk-e3tjy3wg.js";import"./chunk-2q27v6vz.js";import"./chunk-q3xwh0r8.js";import"./chunk-4a8qt6e8.js";export{Jn as resolveServerDashboardData};
@@ -1,3 +1,3 @@
1
- import{De,ea,Io,ga,dn,Uo,fa,ha,Ea,wa}from"./chunk-jdfbahjb.js";import{n,r,a,e,p,i,Se}from"./chunk-3jjggqfj.js";import{u}from"./chunk-q3xwh0r8.js";import{v}from"./chunk-9e7pqhj1.js";import{R}from"./chunk-1j9vy88a.js";import{g}from"./chunk-2q27v6vz.js";import{existsSync as de,readdirSync as me,readFileSync as pe,statSync as fe}from"node:fs";import{join as ne,relative as ye}from"node:path";class G{client;region;constructor(t="us-east-1",s){this.region=t,this.client=new u}async createSecret(t){let s={Name:t.Name};if(t.Description)s.Description=t.Description;if(t.KmsKeyId)s.KmsKeyId=t.KmsKeyId;if(t.SecretBinary)s.SecretBinary=t.SecretBinary;if(t.SecretString)s.SecretString=t.SecretString;if(t.Tags&&t.Tags.length>0)s.Tags=t.Tags;if(t.AddReplicaRegions&&t.AddReplicaRegions.length>0)s.AddReplicaRegions=t.AddReplicaRegions;if(t.ForceOverwriteReplicaSecret!==void 0)s.ForceOverwriteReplicaSecret=t.ForceOverwriteReplicaSecret;s.ClientRequestToken=t.ClientRequestToken||crypto.randomUUID();let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.CreateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId,ReplicationStatus:o.ReplicationStatus}}async updateSecret(t){let s={SecretId:t.SecretId,ClientRequestToken:t.ClientRequestToken||crypto.randomUUID()};if(t.Description)s.Description=t.Description;if(t.KmsKeyId)s.KmsKeyId=t.KmsKeyId;if(t.SecretBinary)s.SecretBinary=t.SecretBinary;if(t.SecretString)s.SecretString=t.SecretString;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.UpdateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId}}async putSecretValue(t){let s={SecretId:t.SecretId};if(t.SecretBinary)s.SecretBinary=t.SecretBinary;if(t.SecretString)s.SecretString=t.SecretString;if(t.VersionStages&&t.VersionStages.length>0)s.VersionStages=t.VersionStages;s.ClientRequestToken=t.ClientRequestToken||crypto.randomUUID();let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.PutSecretValue","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId,VersionStages:o.VersionStages}}async getSecretValue(t){let s={SecretId:t.SecretId};if(t.VersionId)s.VersionId=t.VersionId;if(t.VersionStage)s.VersionStage=t.VersionStage;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.GetSecretValue","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId,SecretBinary:o.SecretBinary,SecretString:o.SecretString,VersionStages:o.VersionStages,CreatedDate:o.CreatedDate}}async describeSecret(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.DescribeSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return this.parseSecret(o)}async listSecrets(t){let s={};if(t?.MaxResults)s.MaxResults=t.MaxResults;if(t?.NextToken)s.NextToken=t.NextToken;if(t?.Filters&&t.Filters.length>0)s.Filters=t.Filters;if(t?.SortOrder)s.SortOrder=t.SortOrder;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.ListSecrets","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{SecretList:o.SecretList?.map((c)=>this.parseSecret(c)),NextToken:o.NextToken}}async deleteSecret(t){let s={SecretId:t.SecretId};if(t.RecoveryWindowInDays!==void 0)s.RecoveryWindowInDays=t.RecoveryWindowInDays;if(t.ForceDeleteWithoutRecovery!==void 0)s.ForceDeleteWithoutRecovery=t.ForceDeleteWithoutRecovery;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.DeleteSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,DeletionDate:o.DeletionDate}}async restoreSecret(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.RestoreSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async rotateSecret(t){let s={SecretId:t.SecretId};if(t.ClientRequestToken)s.ClientRequestToken=t.ClientRequestToken;if(t.RotationLambdaARN)s.RotationLambdaARN=t.RotationLambdaARN;if(t.RotationRules)s.RotationRules=t.RotationRules;if(t.RotateImmediately!==void 0)s.RotateImmediately=t.RotateImmediately;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.RotateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId}}async cancelRotateSecret(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.CancelRotateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async getResourcePolicy(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.GetResourcePolicy","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,ResourcePolicy:o.ResourcePolicy}}async putResourcePolicy(t){let s={SecretId:t.SecretId,ResourcePolicy:t.ResourcePolicy};if(t.BlockPublicPolicy!==void 0)s.BlockPublicPolicy=t.BlockPublicPolicy;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.PutResourcePolicy","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async deleteResourcePolicy(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.DeleteResourcePolicy","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async tagResource(t){let s={SecretId:t.SecretId,Tags:t.Tags};await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.TagResource","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)})}async untagResource(t){let s={SecretId:t.SecretId,TagKeys:t.TagKeys};await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.UntagResource","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)})}async setString(t,s,o){try{let c=await this.putSecretValue({SecretId:t,SecretString:s});return{ARN:c.ARN,VersionId:c.VersionId}}catch(c){if(c.code==="ResourceNotFoundException"){let l=await this.createSecret({Name:t,SecretString:s,Description:o?.description,KmsKeyId:o?.kmsKeyId,Tags:o?.tags});return{ARN:l.ARN,VersionId:l.VersionId}}throw c}}async setJson(t,s,o){return this.setString(t,JSON.stringify(s),o)}async getString(t){return(await this.getSecretValue({SecretId:t})).SecretString}async getJson(t){let s=await this.getString(t);if(s)return JSON.parse(s);return}async listAll(){let t=[],s;do{let o=await this.listSecrets({NextToken:s});if(o.SecretList)t.push(...o.SecretList);s=o.NextToken}while(s);return t}parseSecret(t){return{ARN:t.ARN,Name:t.Name,Description:t.Description,KmsKeyId:t.KmsKeyId,RotationEnabled:t.RotationEnabled,RotationLambdaARN:t.RotationLambdaARN,RotationRules:t.RotationRules,LastRotatedDate:t.LastRotatedDate,LastChangedDate:t.LastChangedDate,LastAccessedDate:t.LastAccessedDate,DeletedDate:t.DeletedDate,NextRotationDate:t.NextRotationDate,Tags:t.Tags,SecretVersionsToStages:t.SecretVersionsToStages,CreatedDate:t.CreatedDate,PrimaryRegion:t.PrimaryRegion}}}function E(t,s){let o=t.environments?.[s]?.app;if(!o)throw Error(`No serverless app configured for environment '${s}'. Add environments.${s}.app to your config.`);let c=t.project.slug,l=t.environments?.[s]?.region||t.project.region||"us-east-1";return{app:o,slug:c,region:l,stackName:De(t,s),artifactBucket:ea(c,s),assetsBucket:Io(c,s)}}function yt(t,s){let o=E(t,s),c=`${o.slug}-${s}`;return{region:o.region,slug:o.slug,stackName:o.stackName,functions:{http:`${c}-http`,queue:`${c}-queue`,cli:`${c}-cli`}}}async function L(t,s=8){let o;for(let c=0;c<s;c++)try{return await t()}catch(l){let d=l?.code||l?.name||"",m=String(l?.message||"");if(d==="ResourceConflictException"||/update is in progress|currently in the following state/i.test(m)){o=l,await new Promise((f)=>setTimeout(f,3000));continue}throw l}throw o}var ie=(t,s)=>`releases/${t}/${s}/current.json`;async function X(t,s,o,c){try{return await t.getObjectJson(s,ie(o,c))}catch{return null}}async function ae(t,s,o,c,l){await t.putObjectJson(s,ie(o,c),l)}async function Re(t,s){if(!t.secrets)return{};let o=new G(s),c={},l=Array.isArray(t.secrets)?t.secrets.map((d)=>({envName:d.split("/").pop().toUpperCase().replace(/[^A-Z0-9_]/g,"_"),secretId:d})):Object.entries(t.secrets).map(([d,m])=>({envName:d,secretId:m}));if(Array.isArray(t.secrets)){let d=new Map;for(let{envName:f,secretId:S}of l)d.set(f,[...d.get(f)??[],S]);let m=[...d.entries()].filter(([,f])=>f.length>1);if(m.length){let f=m.map(([S,h])=>`${S} ← ${h.join(", ")}`).join("; ");throw Error(`serverless secrets: multiple secrets map to the same env var (${f}). Use the map form { ENV_NAME: 'secret/id' } to disambiguate.`)}}for(let{envName:d,secretId:m}of l){let S=(await o.getSecretValue({SecretId:m})).SecretString??"";try{let h=JSON.parse(S);if(h&&typeof h==="object"&&!Array.isArray(h)){for(let[C,w]of Object.entries(h))c[C]=String(w);continue}}catch{}c[d]=S}return c}function Cd(t,s){let o={},c=s.DbProxyEndpoint||s.DbEndpoint;if(c)o.DB_CONNECTION="mysql",o.DB_HOST=c,o.DB_PORT="3306",o.DB_DATABASE=o.DB_DATABASE||"app";if(s.CacheEndpoint){if(o.REDIS_HOST=s.CacheEndpoint,o.REDIS_PORT="6379",t.cache?.driver==="elasticache")o.CACHE_STORE="redis",o.CACHE_DRIVER="redis",o.SESSION_DRIVER="redis"}return o}function Es(t,s,o,c,l,d,m,f={}){let S=t.kind==="php"?Ea({cacheDriver:t.cache?.driver==="elasticache"?"redis":"dynamodb"}):{};return{TSCLOUD_LAMBDA_MODE:c,TSCLOUD_ENV:o,MAINTENANCE_MODE:"0",...t.octane?{TSCLOUD_OCTANE:"1"}:{},...t.serveAssets?{TSCLOUD_SERVE_ASSETS:"1"}:{},...t.redirectRobotsTxt===!1?{TSCLOUD_REDIRECT_ROBOTS_TXT:"0"}:{},...S,...f,...s.app.cache?.driver!=="elasticache"?{TSCLOUD_CACHE_TABLE:`${s.slug}-${o}-cache`}:{},...m?{TSCLOUD_QUEUE:m,SQS_QUEUE:m}:{},...d?{ASSET_URL:d}:{},...t.env??{},...l}}function he(t){let s=t.slice(t.lastIndexOf(".")).toLowerCase();return{".html":"text/html",".css":"text/css",".js":"text/javascript",".mjs":"text/javascript",".json":"application/json",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".ico":"image/x-icon",".woff":"font/woff",".woff2":"font/woff2",".txt":"text/plain",".map":"application/json"}[s]??"application/octet-stream"}function*oe(t){for(let s of me(t)){let o=ne(t,s);if(fe(o).isDirectory())yield*oe(o);else yield o}}async function ve(t,s,o,c,l=!1){let d=0;for(let m of oe(o)){let f=ye(o,m).replace(/\\/g,"/");if(!l&&f.split("/").some((S)=>S.startsWith(".")))continue;await t.putObject({bucket:s,key:`${c}/${f}`,body:pe(m),contentType:he(m),cacheControl:"public, max-age=31536000, immutable"}),d++}return d}function uo(t,s){let o=Object.entries(s).reduce((c,[l,d])=>c+Buffer.byteLength(`${l}=${d}`,"utf8"),0);if(o>4096){let c=Object.entries(s).map(([l,d])=>[l,Buffer.byteLength(`${l}=${d}`,"utf8")]).sort((l,d)=>d[1]-l[1]).slice(0,5).map(([l,d])=>`${l} (${d}B)`).join(", ");throw Error(`${t}: environment variables total ${o}B, over AWS's 4096B limit (${o-4096}B too large). Largest: ${c}. Move large/secret values out of env — store them in Secrets Manager and fetch at cold start.`)}}async function U(t,s,o,c){uo(s,o),await L(()=>t.updateFunctionConfiguration({FunctionName:s,Environment:{Variables:o}})),await t.waitForFunctionActive(s,120);let l=c.kind==="image"?{FunctionName:s,ImageUri:c.imageUri}:{FunctionName:s,S3Bucket:c.bucket,S3Key:c.key};await L(()=>t.updateFunctionCode(l)),await t.waitForFunctionActive(s,120)}async function W(t,s){let c=(await L(()=>t.publishVersion({FunctionName:s}))).Version;if(!c)throw Error(`publishVersion returned no version for ${s}`);return await L(()=>t.updateAlias({FunctionName:s,Name:"live",FunctionVersion:c})),c}async function lp(t,s,o={}){let c=E(t,s),{app:l,slug:d,region:m,stackName:f,artifactBucket:S}=c,h=o.projectRoot??process.cwd();i(`Deploying serverless app: ${d} (${s})`),e(`Stack: ${f}`),e(`Region: ${m}`);let C=new g(m),w=new v(m),b=new R(m),P=l.kind==="php",O=l.packaging==="image",N=Uo(l),B,I,k,Y,z=[];if(O&&N.usesLayer&&N.layerKind!=="php")throw Error(`packaging: 'image' currently supports PHP and managed Node runtimes. ${N.kind}${N.kind==="node"?` ${N.version}`:""} uses a custom runtime — `+"use the default zip packaging (the runtime layer is built + attached automatically).");if(O){p("Building + pushing container image");let{buildAndPushServerlessImage:y}=await import("./chunk-xxgybh3b.js"),A=await y({app:l,projectRoot:h,region:m,repository:`${d}-${s}`,skipBuild:o.skipBuild,onStep:(D)=>e(` ${D}`)});B=A.handlers,I={kind:"image",imageUri:A.imageUri},k=A.tag,z.push({ParameterKey:"ImageUri",ParameterValue:A.imageUri})}else{p("Packaging application");let y=P?wa({projectRoot:h,app:l,skipBuild:o.skipBuild,onStep:(x)=>e(` ${x}`)}):await dn({projectRoot:h,app:l,skipBuild:o.skipBuild,onStep:(x)=>e(` ${x}`)}),A=ga(d,s,y.sha256);if(e(`Artifact: ${y.sha256.slice(0,12)} (${(y.zip.length/1024).toFixed(0)} KB)`),B=y.handlers,k=y.sha256,N.usesLayer){let x=N.layerEnvVar?process.env[N.layerEnvVar]:void 0;if(Y=l.layers??(x?[x]:void 0),!Y?.length){let ge=N.layerKind==="php"?"serverless:build-php-layer":N.layerKind==="bun"?"serverless:build-bun-layer":"serverless:build-node-layer";throw Error(`${N.kind} apps on provided.al2023 need a runtime layer. Set environments.<env>.app.layers or the ${N.layerEnvVar} env var (build one with \`cloud ${ge}\`)${N.kind==="node"?", or use a managed Node version (18/20/22)":""}.`)}}if(!await C.bucketExists(S))p(`Creating artifact bucket ${S}`),await C.createBucket(S);if(await C.headObject(S,A).then((x)=>x!==null).catch(()=>!1))e("Artifact already uploaded — reusing");else p("Uploading artifact"),await C.putObject({bucket:S,key:A,body:y.zip,contentType:"application/zip"});I={kind:"zip",bucket:S,key:A},z.push({ParameterKey:"ArtifactBucket",ParameterValue:S},{ParameterKey:"ArtifactKey",ParameterValue:A})}let T=ha({config:t,environment:s,app:l,handlers:B,runtimeLayers:Y}),te=JSON.stringify(T.template),re=["CAPABILITY_NAMED_IAM"],K=await w.describeStacks({stackName:f}).then((y)=>y.Stacks[0]?.StackStatus).catch(()=>{return}),M=K!==void 0;if(K&&/DELETE_IN_PROGRESS/.test(K))p("Waiting for an in-progress stack delete to finish"),await w.waitForStack(f,"stack-delete-complete").catch(()=>{}),M=!1;else if(K&&/(?:ROLLBACK_COMPLETE|REVIEW_IN_PROGRESS|CREATE_FAILED)/.test(K))p(`Deleting unusable stack (status ${K}) before recreate`),await w.deleteStack(f),await w.waitForStack(f,"stack-delete-complete").catch(()=>{}),M=!1;p(M?"Updating infrastructure stack":"Creating infrastructure stack");try{if(M)await w.updateStack({stackName:f,templateBody:te,parameters:z,capabilities:re}),await w.waitForStack(f,"stack-update-complete");else await w.createStack({stackName:f,templateBody:te,parameters:z,capabilities:re,onFailure:"DELETE"}),await w.waitForStack(f,"stack-create-complete")}catch(y){if(/No updates are to be performed/i.test(String(y?.message)))e("No infrastructure changes");else throw y}let Q=await w.getStackOutputs(f).catch(()=>({})),F;if(l.assets){let y=ne(h,l.assets);if(de(y)){let A=l.assetDomain||Q.AssetsCdnDomain;F=A?`https://${A}/${k}`:void 0,p(`Syncing assets from ${l.assets}`);let D=await ve(C,c.assetsBucket,y,k,l.dotFilesAsAssets);e(`Uploaded ${D} asset(s)${F?` → ${F}`:""}`)}else a(`Assets directory not found: ${y}`)}p("Resolving secrets");let _=await Re(l,m);if(l.database?.connection==="aurora-serverless")try{let A=await new G(m).getSecretValue({SecretId:`${d}/${s}/db`}),D=JSON.parse(A.SecretString??"{}");if(D.username)_.DB_USERNAME=D.username;if(D.password)_.DB_PASSWORD=D.password}catch(y){a(`Could not resolve Aurora DB credentials: ${y.message}`)}if(!await C.bucketExists(S))await C.createBucket(S);let J=await X(C,S,d,s),q={},Z=T.queueNames[0],ee=Cd(l,Q);if(p("Activating functions"),q.http=Es(l,c,s,"http",_,F,Z,ee),await U(b,T.functionNames.http,q.http,I),q.cli=Es(l,c,s,"cli",_,F,Z,ee),await U(b,T.functionNames.cli,q.cli,I),T.queueNames.length)q.queue=Es(l,c,s,"queue",_,F,Z,ee),await U(b,T.functionNames.queue,q.queue,I);let se=(l.provisionedConcurrency??0)>0,H={};if(se){if(p("Publishing versions + flipping live alias"),H.http=await W(b,T.functionNames.http),H.cli=await W(b,T.functionNames.cli),T.queueNames.length)H.queue=await W(b,T.functionNames.queue)}if(await ae(C,S,d,s,{sha:k,code:I,previousSha:J?.sha,previousCode:J?.code,previousFunctionEnv:J?.functionEnv,...se?{functionVersions:H,previousFunctionVersions:J?.functionVersions}:{},functionEnv:q,functionNames:{http:T.functionNames.http,cli:T.functionNames.cli,...T.queueNames.length?{queue:T.functionNames.queue}:{}},assetUrl:F,timestamp:new Date().toISOString()}),!o.skipDeployHooks&&l.deploy?.length){p("Running deploy hooks");for(let y of l.deploy){e(` deploy: ${y}`);let A=await b.invoke({FunctionName:T.functionNames.cli,InvocationType:"RequestResponse",Payload:{command:y},LogType:"Tail"});if(A.FunctionError)throw r("Deploy hook failed — the new build is ALREADY LIVE."),e(` Roll back with: cloud serverless:rollback --env ${s}`),Error(`Deploy hook failed (${y}): ${A.Payload}`)}}let j=Q.HttpApiEndpoint;if(!o.skipHealthCheck&&j){p("Health check");try{let y=await fetch(j,{method:"GET"});e(`GET ${j} → ${y.status}`)}catch(y){a(`Health check could not reach ${j}: ${y.message}`)}}Se(["Serverless deploy complete","",j?`URL: ${j}`:"",`Stack: ${f}`,`Build: ${k.slice(0,12)}`].filter(Boolean).join(`
2
- `),"green")}async function ws(t,s){let o=E(t,s),c=new g(o.region),l=new R(o.region),d=await X(c,o.artifactBucket,o.slug,s);if(!d)throw Error("No previous release to redeploy. Run a full deploy first.");i(`Redeploying ${o.slug} (${s}) — build ${d.sha.slice(0,12)}`);for(let[m,f]of Object.entries(d.functionNames)){if(!f)continue;p(`Re-activating ${m} (${f})`),await U(l,f,d.functionEnv[m]??{},d.code);let S=d.functionVersions?.[m];if(S)await L(()=>l.updateAlias({FunctionName:f,Name:"live",FunctionVersion:S}))}n("Redeploy complete")}async function Cs(t,s){let o=E(t,s),c=new g(o.region),l=new R(o.region),d=await X(c,o.artifactBucket,o.slug,s);if(!d?.previousCode)throw Error("No previous release to roll back to.");i(`Rolling back ${o.slug} (${s}) → ${d.previousSha?.slice(0,12)}`);for(let[m,f]of Object.entries(d.functionNames)){if(!f)continue;p(`Restoring ${m} (${f})`);let S=d.previousFunctionEnv?.[m]??d.functionEnv[m]??{};await U(l,f,S,d.previousCode);let h=d.previousFunctionVersions?.[m];if(h)await L(()=>l.updateAlias({FunctionName:f,Name:"live",FunctionVersion:h}))}await ae(c,o.artifactBucket,o.slug,s,{...d,sha:d.previousSha??d.sha,code:d.previousCode,functionEnv:d.previousFunctionEnv??d.functionEnv,functionVersions:d.previousFunctionVersions??d.functionVersions,previousSha:void 0,previousCode:void 0,previousFunctionEnv:void 0,previousFunctionVersions:void 0,timestamp:new Date().toISOString()}),n("Rollback complete")}async function po(t,s,o,c){let l=E(t,s),d=new R(l.region),m=`${l.slug}-${s}-http`,S={...(await d.getFunction(m)).Configuration?.Environment?.Variables??{}};if(S.MAINTENANCE_MODE=o?"1":"0",o&&c)S.MAINTENANCE_BYPASS_SECRET=c;if(!o)delete S.MAINTENANCE_BYPASS_SECRET;if(await L(()=>d.updateFunctionConfiguration({FunctionName:m,Environment:{Variables:S}})),(l.app.provisionedConcurrency??0)>0)await d.waitForFunctionActive(m,120),await W(d,m);n(o?"Application is now in maintenance mode (503)":"Application is live")}async function Mt(t,s,o){let c=E(t,s),l=new R(c.region),d=`${c.slug}-${s}-cli`,m=await l.invoke({FunctionName:d,InvocationType:"RequestResponse",Payload:{command:o},LogType:"Tail"});if(m.FunctionError)throw Error(`Command failed: ${m.Payload}`);return m.Payload??""}var ce=(t,s)=>`commands/${t}/${s}/history.json`,Ne=50;async function le(t,s,o,c){try{return(await t.getObjectJson(s,ce(o,c)))?.records??[]}catch{return[]}}async function dp(t,s,o){let c=E(t,s),l=new R(c.region),d=`${c.slug}-${s}-cli`,m=await l.invoke({FunctionName:d,InvocationType:"RequestResponse",Payload:{command:o},LogType:"Tail"}),f=m.Payload??"",S=m.FunctionError?"error":"ok",h=-1;try{let C=new g(c.region);if(await C.bucketExists(c.artifactBucket)){let w=await le(C,c.artifactBucket,c.slug,s);h=w.reduce((b,P)=>Math.max(b,P.id),0)+1,w.push({id:h,command:o,timestamp:new Date().toISOString(),status:S,output:f.slice(0,4000)}),await C.putObjectJson(c.artifactBucket,ce(c.slug,s),{records:w.slice(-Ne)})}}catch{}if(m.FunctionError)throw Error(`Command failed${h>0?` (#${h})`:""}: ${f}`);return{id:h,status:S,output:f}}async function Ad(t,s){let o=E(t,s),c=new g(o.region);return le(c,o.artifactBucket,o.slug,s)}async function up(t,s,o){let c=await Ad(t,s);if(!c.length)return;return o==null?c[c.length-1]:c.find((l)=>l.id===o)}async function pp(t,s,o){let c=Buffer.from(o,"utf-8").toString("base64");return Mt(t,s,`tscloud:db-query --sql-base64=${c}`)}async function V(t,s){let o=E(t,s),c=new v(o.region),l=new R(o.region),d=new g(o.region),m="not deployed",f={};try{let{Stacks:O}=await c.describeStacks({stackName:o.stackName});m=O?.[0]?.StackStatus??m;for(let N of O?.[0]?.Outputs??[])if(N.OutputKey)f[N.OutputKey]=N.OutputValue??""}catch{}let S=fa(o.app,o.slug,s),h=o.app.provisionedConcurrency??0,C=["http","cli",...S.length?["queue"]:[]],w=`${o.slug}-${s}`,b=[];for(let O of C){let N=`${w}-${O}`,B={mode:O,name:N,version:"$LATEST"};if(h>0){let I=await l.getAlias(N,"live").catch(()=>null);if(I?.FunctionVersion){B.version=I.FunctionVersion;let k=await l.getProvisionedConcurrencyConfig(N,"live").catch(()=>null);if(k)B.provisioned={status:k.Status??"-",allocated:k.AllocatedProvisionedConcurrentExecutions??0,requested:k.RequestedProvisionedConcurrentExecutions??0}}}b.push(B)}let P=await X(d,o.artifactBucket,o.slug,s).catch(()=>null);return{slug:o.slug,environment:s,region:o.region,stackStatus:m,endpoint:f.HttpApiEndpoint,assetUrl:P?.assetUrl,scheduler:o.app.scheduler??"on",queues:S,provisionedConcurrency:h,functions:b,lastRelease:P?{sha:P.sha,timestamp:P.timestamp}:void 0}}function ue(t,s){return`${t}-${s}-db`}async function As(t,s,o,c){let l=E(t,s);if(l.app.database?.connection!=="aurora-serverless")throw Error("No Aurora Serverless v2 database is configured for this environment.");let{RDSClient:d}=await import("./chunk-kf1p7s61.js"),m=new d(l.region),f=ue(l.slug,s);p(`Scaling ${f} → ${o}–${c} ACUs`),await m.modifyDBCluster({DBClusterIdentifier:f,ServerlessV2ScalingConfiguration:{MinCapacity:o,MaxCapacity:c},ApplyImmediately:!0}),n(`Scaling applied to ${f} (takes effect shortly).`)}async function mp(t,s,o){let c=E(t,s);if(c.app.database?.connection!=="aurora-serverless")throw Error("No Aurora Serverless v2 database is configured for this environment.");if(!o.toTime&&!o.latest)throw Error("Specify a restore point: --to <ISO timestamp> or --latest.");let{RDSClient:l}=await import("./chunk-kf1p7s61.js"),d=new l(c.region),m=ue(c.slug,s),f=o.latest?"latest":o.toTime.toISOString().replace(/[^0-9]/g,"").slice(0,14),S=o.target??`${m}-restore-${f}`;p(`Restoring ${m} → new cluster ${S} (${o.latest?"latest restorable time":o.toTime.toISOString()})`),await d.restoreDBClusterToPointInTime({DBClusterIdentifier:S,SourceDBClusterIdentifier:m,RestoreToTime:o.toTime,UseLatestRestorableTime:o.latest}),p("Waiting for the restored cluster to be ready");for(let h=0;h<120;h++){let{DBClusters:C}=await d.describeDBClusters({DBClusterIdentifier:S}),w=C?.[0]?.Status;if(w&&w!=="creating")break;await new Promise((b)=>setTimeout(b,15000))}return p("Adding a writer instance"),await d.createDBInstance({DBInstanceIdentifier:`${S}-1`,DBClusterIdentifier:S,Engine:"aurora-mysql",DBInstanceClass:"db.serverless"}),n(`Restore complete → cluster ${S} with writer ${S}-1. Point an env's database at it once available.`),S}
3
- export{G,yt,Cd,Es,uo,lp,ws,Cs,po,Mt,dp,Ad,up,pp,V,As,mp};
1
+ import{De,ea,Io,ga,dn,Uo,fa,ha,Ea,wa}from"./chunk-4a8qt6e8.js";import{n,r,a,e,p,i,Se}from"./chunk-3jjggqfj.js";import{u}from"./chunk-q3xwh0r8.js";import{v}from"./chunk-qsyna6ng.js";import{R}from"./chunk-1j9vy88a.js";import{g}from"./chunk-2q27v6vz.js";import{existsSync as de,readdirSync as me,readFileSync as pe,statSync as fe}from"node:fs";import{join as ne,relative as ye}from"node:path";class K{client;region;constructor(t="us-east-1",s){this.region=t,this.client=new u}async createSecret(t){let s={Name:t.Name};if(t.Description)s.Description=t.Description;if(t.KmsKeyId)s.KmsKeyId=t.KmsKeyId;if(t.SecretBinary)s.SecretBinary=t.SecretBinary;if(t.SecretString)s.SecretString=t.SecretString;if(t.Tags&&t.Tags.length>0)s.Tags=t.Tags;if(t.AddReplicaRegions&&t.AddReplicaRegions.length>0)s.AddReplicaRegions=t.AddReplicaRegions;if(t.ForceOverwriteReplicaSecret!==void 0)s.ForceOverwriteReplicaSecret=t.ForceOverwriteReplicaSecret;s.ClientRequestToken=t.ClientRequestToken||crypto.randomUUID();let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.CreateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId,ReplicationStatus:o.ReplicationStatus}}async updateSecret(t){let s={SecretId:t.SecretId,ClientRequestToken:t.ClientRequestToken||crypto.randomUUID()};if(t.Description)s.Description=t.Description;if(t.KmsKeyId)s.KmsKeyId=t.KmsKeyId;if(t.SecretBinary)s.SecretBinary=t.SecretBinary;if(t.SecretString)s.SecretString=t.SecretString;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.UpdateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId}}async putSecretValue(t){let s={SecretId:t.SecretId};if(t.SecretBinary)s.SecretBinary=t.SecretBinary;if(t.SecretString)s.SecretString=t.SecretString;if(t.VersionStages&&t.VersionStages.length>0)s.VersionStages=t.VersionStages;s.ClientRequestToken=t.ClientRequestToken||crypto.randomUUID();let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.PutSecretValue","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId,VersionStages:o.VersionStages}}async getSecretValue(t){let s={SecretId:t.SecretId};if(t.VersionId)s.VersionId=t.VersionId;if(t.VersionStage)s.VersionStage=t.VersionStage;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.GetSecretValue","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId,SecretBinary:o.SecretBinary,SecretString:o.SecretString,VersionStages:o.VersionStages,CreatedDate:o.CreatedDate}}async describeSecret(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.DescribeSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return this.parseSecret(o)}async listSecrets(t){let s={};if(t?.MaxResults)s.MaxResults=t.MaxResults;if(t?.NextToken)s.NextToken=t.NextToken;if(t?.Filters&&t.Filters.length>0)s.Filters=t.Filters;if(t?.SortOrder)s.SortOrder=t.SortOrder;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.ListSecrets","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{SecretList:o.SecretList?.map((c)=>this.parseSecret(c)),NextToken:o.NextToken}}async deleteSecret(t){let s={SecretId:t.SecretId};if(t.RecoveryWindowInDays!==void 0)s.RecoveryWindowInDays=t.RecoveryWindowInDays;if(t.ForceDeleteWithoutRecovery!==void 0)s.ForceDeleteWithoutRecovery=t.ForceDeleteWithoutRecovery;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.DeleteSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,DeletionDate:o.DeletionDate}}async restoreSecret(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.RestoreSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async rotateSecret(t){let s={SecretId:t.SecretId};if(t.ClientRequestToken)s.ClientRequestToken=t.ClientRequestToken;if(t.RotationLambdaARN)s.RotationLambdaARN=t.RotationLambdaARN;if(t.RotationRules)s.RotationRules=t.RotationRules;if(t.RotateImmediately!==void 0)s.RotateImmediately=t.RotateImmediately;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.RotateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,VersionId:o.VersionId}}async cancelRotateSecret(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.CancelRotateSecret","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async getResourcePolicy(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.GetResourcePolicy","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name,ResourcePolicy:o.ResourcePolicy}}async putResourcePolicy(t){let s={SecretId:t.SecretId,ResourcePolicy:t.ResourcePolicy};if(t.BlockPublicPolicy!==void 0)s.BlockPublicPolicy=t.BlockPublicPolicy;let o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.PutResourcePolicy","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async deleteResourcePolicy(t){let s={SecretId:t},o=await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.DeleteResourcePolicy","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)});return{ARN:o.ARN,Name:o.Name}}async tagResource(t){let s={SecretId:t.SecretId,Tags:t.Tags};await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.TagResource","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)})}async untagResource(t){let s={SecretId:t.SecretId,TagKeys:t.TagKeys};await this.client.request({service:"secretsmanager",region:this.region,method:"POST",path:"/",headers:{"X-Amz-Target":"secretsmanager.UntagResource","Content-Type":"application/x-amz-json-1.1"},body:JSON.stringify(s)})}async setString(t,s,o){try{let c=await this.putSecretValue({SecretId:t,SecretString:s});return{ARN:c.ARN,VersionId:c.VersionId}}catch(c){if(c.code==="ResourceNotFoundException"){let l=await this.createSecret({Name:t,SecretString:s,Description:o?.description,KmsKeyId:o?.kmsKeyId,Tags:o?.tags});return{ARN:l.ARN,VersionId:l.VersionId}}throw c}}async setJson(t,s,o){return this.setString(t,JSON.stringify(s),o)}async getString(t){return(await this.getSecretValue({SecretId:t})).SecretString}async getJson(t){let s=await this.getString(t);if(s)return JSON.parse(s);return}async listAll(){let t=[],s;do{let o=await this.listSecrets({NextToken:s});if(o.SecretList)t.push(...o.SecretList);s=o.NextToken}while(s);return t}parseSecret(t){return{ARN:t.ARN,Name:t.Name,Description:t.Description,KmsKeyId:t.KmsKeyId,RotationEnabled:t.RotationEnabled,RotationLambdaARN:t.RotationLambdaARN,RotationRules:t.RotationRules,LastRotatedDate:t.LastRotatedDate,LastChangedDate:t.LastChangedDate,LastAccessedDate:t.LastAccessedDate,DeletedDate:t.DeletedDate,NextRotationDate:t.NextRotationDate,Tags:t.Tags,SecretVersionsToStages:t.SecretVersionsToStages,CreatedDate:t.CreatedDate,PrimaryRegion:t.PrimaryRegion}}}function E(t,s){let o=t.environments?.[s]?.app;if(!o)throw Error(`No serverless app configured for environment '${s}'. Add environments.${s}.app to your config.`);let c=t.project.slug,l=t.environments?.[s]?.region||t.project.region||"us-east-1";return{app:o,slug:c,region:l,stackName:De(t,s),artifactBucket:ea(c,s),assetsBucket:Io(c,s)}}function yt(t,s){let o=E(t,s),c=`${o.slug}-${s}`;return{region:o.region,slug:o.slug,stackName:o.stackName,functions:{http:`${c}-http`,queue:`${c}-queue`,cli:`${c}-cli`}}}async function q(t,s=8){let o;for(let c=0;c<s;c++)try{return await t()}catch(l){let d=l?.code||l?.name||"",m=String(l?.message||"");if(d==="ResourceConflictException"||/update is in progress|currently in the following state/i.test(m)){o=l,await new Promise((f)=>setTimeout(f,3000));continue}throw l}throw o}var ie=(t,s)=>`releases/${t}/${s}/current.json`;async function G(t,s,o,c){try{return await t.getObjectJson(s,ie(o,c))}catch{return null}}async function ae(t,s,o,c,l){await t.putObjectJson(s,ie(o,c),l)}async function Re(t,s){if(!t.secrets)return{};let o=new K(s),c={},l=Array.isArray(t.secrets)?t.secrets.map((d)=>({envName:d.split("/").pop().toUpperCase().replace(/[^A-Z0-9_]/g,"_"),secretId:d})):Object.entries(t.secrets).map(([d,m])=>({envName:d,secretId:m}));if(Array.isArray(t.secrets)){let d=new Map;for(let{envName:f,secretId:S}of l)d.set(f,[...d.get(f)??[],S]);let m=[...d.entries()].filter(([,f])=>f.length>1);if(m.length){let f=m.map(([S,h])=>`${S} ← ${h.join(", ")}`).join("; ");throw Error(`serverless secrets: multiple secrets map to the same env var (${f}). Use the map form { ENV_NAME: 'secret/id' } to disambiguate.`)}}for(let{envName:d,secretId:m}of l){let S=(await o.getSecretValue({SecretId:m})).SecretString??"";try{let h=JSON.parse(S);if(h&&typeof h==="object"&&!Array.isArray(h)){for(let[C,w]of Object.entries(h))c[C]=String(w);continue}}catch{}c[d]=S}return c}function Cd(t,s){let o={},c=s.DbProxyEndpoint||s.DbEndpoint;if(c)o.DB_CONNECTION="mysql",o.DB_HOST=c,o.DB_PORT="3306",o.DB_DATABASE=o.DB_DATABASE||"app";if(s.CacheEndpoint){if(o.REDIS_HOST=s.CacheEndpoint,o.REDIS_PORT="6379",t.cache?.driver==="elasticache")o.CACHE_STORE="redis",o.CACHE_DRIVER="redis",o.SESSION_DRIVER="redis"}return o}function Es(t,s,o,c,l,d,m,f={}){let S=t.kind==="php"?Ea({cacheDriver:t.cache?.driver==="elasticache"?"redis":"dynamodb"}):{};return{TSCLOUD_LAMBDA_MODE:c,TSCLOUD_ENV:o,MAINTENANCE_MODE:"0",...t.octane?{TSCLOUD_OCTANE:"1"}:{},...t.serveAssets?{TSCLOUD_SERVE_ASSETS:"1"}:{},...t.redirectRobotsTxt===!1?{TSCLOUD_REDIRECT_ROBOTS_TXT:"0"}:{},...S,...f,...s.app.cache?.driver!=="elasticache"?{TSCLOUD_CACHE_TABLE:`${s.slug}-${o}-cache`}:{},...m?{TSCLOUD_QUEUE:m,SQS_QUEUE:m}:{},...d?{ASSET_URL:d}:{},...t.env??{},...l}}function he(t){let s=t.slice(t.lastIndexOf(".")).toLowerCase();return{".html":"text/html",".css":"text/css",".js":"text/javascript",".mjs":"text/javascript",".json":"application/json",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".ico":"image/x-icon",".woff":"font/woff",".woff2":"font/woff2",".txt":"text/plain",".map":"application/json"}[s]??"application/octet-stream"}function*oe(t){for(let s of me(t)){let o=ne(t,s);if(fe(o).isDirectory())yield*oe(o);else yield o}}async function ve(t,s,o,c,l=!1){let d=0;for(let m of oe(o)){let f=ye(o,m).replace(/\\/g,"/");if(!l&&f.split("/").some((S)=>S.startsWith(".")))continue;await t.putObject({bucket:s,key:`${c}/${f}`,body:pe(m),contentType:he(m),cacheControl:"public, max-age=31536000, immutable"}),d++}return d}function uo(t,s){let o=Object.entries(s).reduce((c,[l,d])=>c+Buffer.byteLength(`${l}=${d}`,"utf8"),0);if(o>4096){let c=Object.entries(s).map(([l,d])=>[l,Buffer.byteLength(`${l}=${d}`,"utf8")]).sort((l,d)=>d[1]-l[1]).slice(0,5).map(([l,d])=>`${l} (${d}B)`).join(", ");throw Error(`${t}: environment variables total ${o}B, over AWS's 4096B limit (${o-4096}B too large). Largest: ${c}. Move large/secret values out of env — store them in Secrets Manager and fetch at cold start.`)}}async function U(t,s,o,c){uo(s,o),await q(()=>t.updateFunctionConfiguration({FunctionName:s,Environment:{Variables:o}})),await t.waitForFunctionActive(s,120);let l=c.kind==="image"?{FunctionName:s,ImageUri:c.imageUri}:{FunctionName:s,S3Bucket:c.bucket,S3Key:c.key};await q(()=>t.updateFunctionCode(l)),await t.waitForFunctionActive(s,120)}async function X(t,s){let c=(await q(()=>t.publishVersion({FunctionName:s}))).Version;if(!c)throw Error(`publishVersion returned no version for ${s}`);return await q(()=>t.updateAlias({FunctionName:s,Name:"live",FunctionVersion:c})),c}async function lp(t,s,o={}){let c=E(t,s),{app:l,slug:d,region:m,stackName:f,artifactBucket:S}=c,h=o.projectRoot??process.cwd();i(`Deploying serverless app: ${d} (${s})`),e(`Stack: ${f}`),e(`Region: ${m}`);let C=new g(m),w=new v(m),b=new R(m),P=l.kind==="php",O=l.packaging==="image",N=Uo(l),V,I,k,Y,M=[];if(O&&N.usesLayer&&N.layerKind!=="php")throw Error(`packaging: 'image' currently supports PHP and managed Node runtimes. ${N.kind}${N.kind==="node"?` ${N.version}`:""} uses a custom runtime — `+"use the default zip packaging (the runtime layer is built + attached automatically).");if(O){p("Building + pushing container image");let{buildAndPushServerlessImage:y}=await import("./chunk-v95b2dy0.js"),A=await y({app:l,projectRoot:h,region:m,repository:`${d}-${s}`,skipBuild:o.skipBuild,onStep:(D)=>e(` ${D}`)});V=A.handlers,I={kind:"image",imageUri:A.imageUri},k=A.tag,M.push({ParameterKey:"ImageUri",ParameterValue:A.imageUri})}else{p("Packaging application");let y=P?wa({projectRoot:h,app:l,skipBuild:o.skipBuild,onStep:(x)=>e(` ${x}`)}):await dn({projectRoot:h,app:l,skipBuild:o.skipBuild,onStep:(x)=>e(` ${x}`)}),A=ga(d,s,y.sha256);if(e(`Artifact: ${y.sha256.slice(0,12)} (${(y.zip.length/1024).toFixed(0)} KB)`),V=y.handlers,k=y.sha256,N.usesLayer){let x=N.layerEnvVar?process.env[N.layerEnvVar]:void 0;if(Y=l.layers??(x?[x]:void 0),!Y?.length){let ge=N.layerKind==="php"?"serverless:build-php-layer":N.layerKind==="bun"?"serverless:build-bun-layer":"serverless:build-node-layer";throw Error(`${N.kind} apps on provided.al2023 need a runtime layer. Set environments.<env>.app.layers or the ${N.layerEnvVar} env var (build one with \`cloud ${ge}\`)${N.kind==="node"?", or use a managed Node version (18/20/22)":""}.`)}}if(!await C.bucketExists(S))p(`Creating artifact bucket ${S}`),await C.createBucket(S);if(await C.headObject(S,A).then((x)=>x!==null).catch(()=>!1))e("Artifact already uploaded — reusing");else p("Uploading artifact"),await C.putObject({bucket:S,key:A,body:y.zip,contentType:"application/zip"});I={kind:"zip",bucket:S,key:A},M.push({ParameterKey:"ArtifactBucket",ParameterValue:S},{ParameterKey:"ArtifactKey",ParameterValue:A})}let T=ha({config:t,environment:s,app:l,handlers:V,runtimeLayers:Y}),te=JSON.stringify(T.template),re=["CAPABILITY_NAMED_IAM"],L=await w.describeStacks({stackName:f}).then((y)=>y.Stacks[0]?.StackStatus).catch(()=>{return}),J=L!==void 0;if(L&&/DELETE_IN_PROGRESS/.test(L))p("Waiting for an in-progress stack delete to finish"),await w.waitForStack(f,"stack-delete-complete").catch(()=>{}),J=!1;else if(L&&/(?:ROLLBACK_COMPLETE|REVIEW_IN_PROGRESS|CREATE_FAILED)/.test(L))p(`Deleting unusable stack (status ${L}) before recreate`),await w.deleteStack(f),await w.waitForStack(f,"stack-delete-complete").catch(()=>{}),J=!1;p(J?"Updating infrastructure stack":"Creating infrastructure stack");try{if(J)await w.updateStack({stackName:f,templateBody:te,parameters:M,capabilities:re}),await w.waitForStack(f,"stack-update-complete");else await w.createStack({stackName:f,templateBody:te,parameters:M,capabilities:re,onFailure:"DELETE"}),await w.waitForStack(f,"stack-create-complete")}catch(y){if(/No updates are to be performed/i.test(String(y?.message)))e("No infrastructure changes");else throw y}let Q=await w.getStackOutputs(f).catch(()=>({})),B;if(l.assets){let y=ne(h,l.assets);if(de(y)){let A=l.assetDomain||Q.AssetsCdnDomain;B=A?`https://${A}/${k}`:void 0,p(`Syncing assets from ${l.assets}`);let D=await ve(C,c.assetsBucket,y,k,l.dotFilesAsAssets);e(`Uploaded ${D} asset(s)${B?` → ${B}`:""}`)}else a(`Assets directory not found: ${y}`)}p("Resolving secrets");let _=await Re(l,m);if(l.database?.connection==="aurora-serverless")try{let A=await new K(m).getSecretValue({SecretId:`${d}/${s}/db`}),D=JSON.parse(A.SecretString??"{}");if(D.username)_.DB_USERNAME=D.username;if(D.password)_.DB_PASSWORD=D.password}catch(y){a(`Could not resolve Aurora DB credentials: ${y.message}`)}if(!await C.bucketExists(S))await C.createBucket(S);let H=await G(C,S,d,s),F={},Z=T.queueNames[0],ee=Cd(l,Q);if(p("Activating functions"),F.http=Es(l,c,s,"http",_,B,Z,ee),await U(b,T.functionNames.http,F.http,I),F.cli=Es(l,c,s,"cli",_,B,Z,ee),await U(b,T.functionNames.cli,F.cli,I),T.queueNames.length)F.queue=Es(l,c,s,"queue",_,B,Z,ee),await U(b,T.functionNames.queue,F.queue,I);let se=(l.provisionedConcurrency??0)>0,W={};if(se){if(p("Publishing versions + flipping live alias"),W.http=await X(b,T.functionNames.http),W.cli=await X(b,T.functionNames.cli),T.queueNames.length)W.queue=await X(b,T.functionNames.queue)}if(await ae(C,S,d,s,{sha:k,code:I,previousSha:H?.sha,previousCode:H?.code,previousFunctionEnv:H?.functionEnv,...se?{functionVersions:W,previousFunctionVersions:H?.functionVersions}:{},functionEnv:F,functionNames:{http:T.functionNames.http,cli:T.functionNames.cli,...T.queueNames.length?{queue:T.functionNames.queue}:{}},assetUrl:B,timestamp:new Date().toISOString()}),!o.skipDeployHooks&&l.deploy?.length){p("Running deploy hooks");for(let y of l.deploy){e(` deploy: ${y}`);let A=await b.invoke({FunctionName:T.functionNames.cli,InvocationType:"RequestResponse",Payload:{command:y},LogType:"Tail"});if(A.FunctionError)throw r("Deploy hook failed — the new build is ALREADY LIVE."),e(` Roll back with: cloud serverless:rollback --env ${s}`),Error(`Deploy hook failed (${y}): ${A.Payload}`)}}let j=Q.HttpApiEndpoint;if(!o.skipHealthCheck&&j){p("Health check");try{let y=await fetch(j,{method:"GET"});e(`GET ${j} → ${y.status}`)}catch(y){a(`Health check could not reach ${j}: ${y.message}`)}}Se(["Serverless deploy complete","",j?`URL: ${j}`:"",`Stack: ${f}`,`Build: ${k.slice(0,12)}`].filter(Boolean).join(`
2
+ `),"green")}async function ws(t,s){let o=E(t,s),c=new g(o.region),l=new R(o.region),d=await G(c,o.artifactBucket,o.slug,s);if(!d)throw Error("No previous release to redeploy. Run a full deploy first.");i(`Redeploying ${o.slug} (${s}) — build ${d.sha.slice(0,12)}`);for(let[m,f]of Object.entries(d.functionNames)){if(!f)continue;p(`Re-activating ${m} (${f})`),await U(l,f,d.functionEnv[m]??{},d.code);let S=d.functionVersions?.[m];if(S)await q(()=>l.updateAlias({FunctionName:f,Name:"live",FunctionVersion:S}))}n("Redeploy complete")}async function Cs(t,s){let o=E(t,s),c=new g(o.region),l=new R(o.region),d=await G(c,o.artifactBucket,o.slug,s);if(!d?.previousCode)throw Error("No previous release to roll back to.");i(`Rolling back ${o.slug} (${s}) → ${d.previousSha?.slice(0,12)}`);for(let[m,f]of Object.entries(d.functionNames)){if(!f)continue;p(`Restoring ${m} (${f})`);let S=d.previousFunctionEnv?.[m]??d.functionEnv[m]??{};await U(l,f,S,d.previousCode);let h=d.previousFunctionVersions?.[m];if(h)await q(()=>l.updateAlias({FunctionName:f,Name:"live",FunctionVersion:h}))}await ae(c,o.artifactBucket,o.slug,s,{...d,sha:d.previousSha??d.sha,code:d.previousCode,functionEnv:d.previousFunctionEnv??d.functionEnv,functionVersions:d.previousFunctionVersions??d.functionVersions,previousSha:void 0,previousCode:void 0,previousFunctionEnv:void 0,previousFunctionVersions:void 0,timestamp:new Date().toISOString()}),n("Rollback complete")}async function po(t,s,o,c){let l=E(t,s),d=new R(l.region),m=`${l.slug}-${s}-http`,S={...(await d.getFunction(m)).Configuration?.Environment?.Variables??{}};if(S.MAINTENANCE_MODE=o?"1":"0",o&&c)S.MAINTENANCE_BYPASS_SECRET=c;if(!o)delete S.MAINTENANCE_BYPASS_SECRET;if(await q(()=>d.updateFunctionConfiguration({FunctionName:m,Environment:{Variables:S}})),(l.app.provisionedConcurrency??0)>0)await d.waitForFunctionActive(m,120),await X(d,m);n(o?"Application is now in maintenance mode (503)":"Application is live")}async function Mt(t,s,o){let c=E(t,s),l=new R(c.region),d=`${c.slug}-${s}-cli`,m=await l.invoke({FunctionName:d,InvocationType:"RequestResponse",Payload:{command:o},LogType:"Tail"});if(m.FunctionError)throw Error(`Command failed: ${m.Payload}`);return m.Payload??""}var ce=(t,s)=>`commands/${t}/${s}/history.json`,Ne=50;async function le(t,s,o,c){try{return(await t.getObjectJson(s,ce(o,c)))?.records??[]}catch{return[]}}async function dp(t,s,o){let c=E(t,s),l=new R(c.region),d=`${c.slug}-${s}-cli`,m=await l.invoke({FunctionName:d,InvocationType:"RequestResponse",Payload:{command:o},LogType:"Tail"}),f=m.Payload??"",S=m.FunctionError?"error":"ok",h=-1;try{let C=new g(c.region);if(await C.bucketExists(c.artifactBucket)){let w=await le(C,c.artifactBucket,c.slug,s);h=w.reduce((b,P)=>Math.max(b,P.id),0)+1,w.push({id:h,command:o,timestamp:new Date().toISOString(),status:S,output:f.slice(0,4000)}),await C.putObjectJson(c.artifactBucket,ce(c.slug,s),{records:w.slice(-Ne)})}}catch{}if(m.FunctionError)throw Error(`Command failed${h>0?` (#${h})`:""}: ${f}`);return{id:h,status:S,output:f}}async function Ad(t,s){let o=E(t,s),c=new g(o.region);return le(c,o.artifactBucket,o.slug,s)}async function up(t,s,o){let c=await Ad(t,s);if(!c.length)return;return o==null?c[c.length-1]:c.find((l)=>l.id===o)}async function pp(t,s,o){let c=Buffer.from(o,"utf-8").toString("base64");return Mt(t,s,`tscloud:db-query --sql-base64=${c}`)}async function z(t,s){let o=E(t,s),c=new v(o.region),l=new R(o.region),d=new g(o.region),m="not deployed",f={};try{let{Stacks:O}=await c.describeStacks({stackName:o.stackName});m=O?.[0]?.StackStatus??m;for(let N of O?.[0]?.Outputs??[])if(N.OutputKey)f[N.OutputKey]=N.OutputValue??""}catch{}let S=fa(o.app,o.slug,s),h=o.app.provisionedConcurrency??0,C=["http","cli",...S.length?["queue"]:[]],w=`${o.slug}-${s}`,b=[];for(let O of C){let N=`${w}-${O}`,V={mode:O,name:N,version:"$LATEST"};if(h>0){let I=await l.getAlias(N,"live").catch(()=>null);if(I?.FunctionVersion){V.version=I.FunctionVersion;let k=await l.getProvisionedConcurrencyConfig(N,"live").catch(()=>null);if(k)V.provisioned={status:k.Status??"-",allocated:k.AllocatedProvisionedConcurrentExecutions??0,requested:k.RequestedProvisionedConcurrentExecutions??0}}}b.push(V)}let P=await G(d,o.artifactBucket,o.slug,s).catch(()=>null);return{slug:o.slug,environment:s,region:o.region,stackStatus:m,endpoint:f.HttpApiEndpoint,assetUrl:P?.assetUrl,scheduler:o.app.scheduler??"on",queues:S,provisionedConcurrency:h,functions:b,lastRelease:P?{sha:P.sha,timestamp:P.timestamp}:void 0}}function ue(t,s){return`${t}-${s}-db`}async function As(t,s,o,c){let l=E(t,s);if(l.app.database?.connection!=="aurora-serverless")throw Error("No Aurora Serverless v2 database is configured for this environment.");let{RDSClient:d}=await import("./chunk-2qrr4ydb.js"),m=new d(l.region),f=ue(l.slug,s);p(`Scaling ${f} → ${o}–${c} ACUs`),await m.modifyDBCluster({DBClusterIdentifier:f,ServerlessV2ScalingConfiguration:{MinCapacity:o,MaxCapacity:c},ApplyImmediately:!0}),n(`Scaling applied to ${f} (takes effect shortly).`)}async function mp(t,s,o){let c=E(t,s);if(c.app.database?.connection!=="aurora-serverless")throw Error("No Aurora Serverless v2 database is configured for this environment.");if(!o.toTime&&!o.latest)throw Error("Specify a restore point: --to <ISO timestamp> or --latest.");let{RDSClient:l}=await import("./chunk-2qrr4ydb.js"),d=new l(c.region),m=ue(c.slug,s),f=o.latest?"latest":o.toTime.toISOString().replace(/[^0-9]/g,"").slice(0,14),S=o.target??`${m}-restore-${f}`;p(`Restoring ${m} → new cluster ${S} (${o.latest?"latest restorable time":o.toTime.toISOString()})`),await d.restoreDBClusterToPointInTime({DBClusterIdentifier:S,SourceDBClusterIdentifier:m,RestoreToTime:o.toTime,UseLatestRestorableTime:o.latest}),p("Waiting for the restored cluster to be ready");for(let h=0;h<120;h++){let{DBClusters:C}=await d.describeDBClusters({DBClusterIdentifier:S}),w=C?.[0]?.Status;if(w&&w!=="creating")break;await new Promise((b)=>setTimeout(b,15000))}return p("Adding a writer instance"),await d.createDBInstance({DBInstanceIdentifier:`${S}-1`,DBClusterIdentifier:S,Engine:"aurora-mysql",DBInstanceClass:"db.serverless"}),n(`Restore complete → cluster ${S} with writer ${S}-1. Point an env's database at it once available.`),S}
3
+ export{K,yt,Cd,Es,uo,lp,ws,Cs,po,Mt,dp,Ad,up,pp,z,As,mp};
@@ -1,3 +1,3 @@
1
- import{K,M,di,Os,Bt,uc}from"./chunk-0md2h0an.js";function c(e){return`'${e.split("'").join("'\\''")}'`}function m(e){let r=e.user||"root",s=e.script.join(`
2
- `),t=r==="root"?'bash -l "$TS_CLOUD_RECIPE"':`runuser -l ${c(r)} -c "bash $TS_CLOUD_RECIPE"`;return["set -uo pipefail",`echo "__TS_CLOUD_RECIPE_BEGIN__ ${e.name} (user=${r})"`,"TS_CLOUD_RECIPE=$(mktemp)",`cat > "$TS_CLOUD_RECIPE" <<'TS_CLOUD_RECIPE_EOF'`,s,"TS_CLOUD_RECIPE_EOF",'chmod +r "$TS_CLOUD_RECIPE"',t,"TS_CLOUD_RC=$?",'rm -f "$TS_CLOUD_RECIPE"',`echo "__TS_CLOUD_RECIPE_END__ ${e.name} exit=$TS_CLOUD_RC"`,"exit $TS_CLOUD_RC"]}var l={info:()=>{},warn:()=>{},error:()=>{},step:()=>{},success:()=>{}};async function i(e){return await e.driver.findComputeTargets({slug:e.slug,environment:e.environment,role:e.role||"app"})}async function Ds(e,r){let s=e.logger||l,t=await i(e);if(t.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};let n=K(e.slug,r.siteName),u=Bt(n,r.to||"unused"),o=["set -uo pipefail",...uc(u,{...r.to?{to:r.to}:{},unitBase:`${e.slug}-${r.siteName}`}),`(cd ${M} && pantry restart php-fpm) 2>/dev/null || true`,`(cd ${u.current} && eval "$(cd ${M} && pantry env 2>/dev/null)" && php artisan queue:restart) 2>/dev/null || true`];s.step(`Rolling back ${r.siteName}${r.to?` to ${r.to}`:" to the previous release"} on ${t.length} server(s)...`);let a=await e.driver.runRemoteDeploy({targets:t,commands:o,comment:`ts-cloud rollback ${e.slug}/${r.siteName}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});if(!a.success)s.error(`Rollback failed: ${a.error||"unknown error"}`);else s.success(`Rolled back ${r.siteName}.`);return{success:a.success,error:a.error,perInstance:a.perInstance}}async function gp(e,r){let s=await i(e);if(s.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};let t=Os(K(e.slug,r.siteName)),n=Math.max(1,r.limit??20),u=[`[ -f ${t} ] && tail -n ${n} ${t} || echo "no deploy history for ${r.siteName}"`],o=await e.driver.runRemoteDeploy({targets:s,commands:u,comment:`ts-cloud deploy:history ${e.slug}/${r.siteName}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});return{success:o.success,error:o.error,perInstance:o.perInstance}}async function fp(e,r){let s=e.logger||l,t=await i(e);if(t.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};s.step(`Running recipe '${r.name}' as ${r.user||"root"} on ${t.length} server(s)...`);let n=await e.driver.runRemoteDeploy({targets:t,commands:m({name:r.name,script:r.script,user:r.user}),comment:`ts-cloud recipe ${r.name}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});if(!n.success)s.error(`Recipe '${r.name}' failed: ${n.error||"unknown error"}`);else s.success(`Recipe '${r.name}' completed.`);return{success:n.success,error:n.error,perInstance:n.perInstance}}async function ks(e,r){let s=e.logger||l;if(!r.database?.name)return{success:!1,error:"No appDatabase configured to restore."};let t=await i(e);if(t.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};s.step(`Restoring database '${r.database.name}'${r.from?` from ${r.from}`:" from the latest backup"} on ${t.length} server(s)...`);let n=await e.driver.runRemoteDeploy({targets:t,commands:di(r.database,{from:r.from}),comment:`ts-cloud db:restore ${e.slug}/${r.database.name}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});if(!n.success)s.error(`Restore failed: ${n.error||"unknown error"}`);else s.success(`Restored ${r.database.name}.`);return{success:n.success,error:n.error,perInstance:n.perInstance}}
1
+ import{J,U,di,Os,Bt,uc}from"./chunk-e3tjy3wg.js";function c(e){return`'${e.split("'").join("'\\''")}'`}function m(e){let r=e.user||"root",s=e.script.join(`
2
+ `),t=r==="root"?'bash -l "$TS_CLOUD_RECIPE"':`runuser -l ${c(r)} -c "bash $TS_CLOUD_RECIPE"`;return["set -uo pipefail",`echo "__TS_CLOUD_RECIPE_BEGIN__ ${e.name} (user=${r})"`,"TS_CLOUD_RECIPE=$(mktemp)",`cat > "$TS_CLOUD_RECIPE" <<'TS_CLOUD_RECIPE_EOF'`,s,"TS_CLOUD_RECIPE_EOF",'chmod +r "$TS_CLOUD_RECIPE"',t,"TS_CLOUD_RC=$?",'rm -f "$TS_CLOUD_RECIPE"',`echo "__TS_CLOUD_RECIPE_END__ ${e.name} exit=$TS_CLOUD_RC"`,"exit $TS_CLOUD_RC"]}var l={info:()=>{},warn:()=>{},error:()=>{},step:()=>{},success:()=>{}};async function i(e){return await e.driver.findComputeTargets({slug:e.slug,environment:e.environment,role:e.role||"app"})}async function Ds(e,r){let s=e.logger||l,t=await i(e);if(t.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};let n=J(e.slug,r.siteName),u=Bt(n,r.to||"unused"),o=["set -uo pipefail",...uc(u,{...r.to?{to:r.to}:{},unitBase:`${e.slug}-${r.siteName}`}),`(cd ${U} && pantry restart php-fpm) 2>/dev/null || true`,`(cd ${u.current} && eval "$(cd ${U} && pantry env 2>/dev/null)" && php artisan queue:restart) 2>/dev/null || true`];s.step(`Rolling back ${r.siteName}${r.to?` to ${r.to}`:" to the previous release"} on ${t.length} server(s)...`);let a=await e.driver.runRemoteDeploy({targets:t,commands:o,comment:`ts-cloud rollback ${e.slug}/${r.siteName}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});if(!a.success)s.error(`Rollback failed: ${a.error||"unknown error"}`);else s.success(`Rolled back ${r.siteName}.`);return{success:a.success,error:a.error,perInstance:a.perInstance}}async function gp(e,r){let s=await i(e);if(s.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};let t=Os(J(e.slug,r.siteName)),n=Math.max(1,r.limit??20),u=[`[ -f ${t} ] && tail -n ${n} ${t} || echo "no deploy history for ${r.siteName}"`],o=await e.driver.runRemoteDeploy({targets:s,commands:u,comment:`ts-cloud deploy:history ${e.slug}/${r.siteName}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});return{success:o.success,error:o.error,perInstance:o.perInstance}}async function fp(e,r){let s=e.logger||l,t=await i(e);if(t.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};s.step(`Running recipe '${r.name}' as ${r.user||"root"} on ${t.length} server(s)...`);let n=await e.driver.runRemoteDeploy({targets:t,commands:m({name:r.name,script:r.script,user:r.user}),comment:`ts-cloud recipe ${r.name}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});if(!n.success)s.error(`Recipe '${r.name}' failed: ${n.error||"unknown error"}`);else s.success(`Recipe '${r.name}' completed.`);return{success:n.success,error:n.error,perInstance:n.perInstance}}async function ks(e,r){let s=e.logger||l;if(!r.database?.name)return{success:!1,error:"No appDatabase configured to restore."};let t=await i(e);if(t.length===0)return{success:!1,error:`No '${e.role||"app"}' servers found for ${e.slug}/${e.environment}.`};s.step(`Restoring database '${r.database.name}'${r.from?` from ${r.from}`:" from the latest backup"} on ${t.length} server(s)...`);let n=await e.driver.runRemoteDeploy({targets:t,commands:di(r.database,{from:r.from}),comment:`ts-cloud db:restore ${e.slug}/${r.database.name}`,tags:{Project:e.slug,Environment:e.environment,Role:e.role||"app"}});if(!n.success)s.error(`Restore failed: ${n.error||"unknown error"}`);else s.success(`Restored ${r.database.name}.`);return{success:n.success,error:n.error,perInstance:n.perInstance}}
3
3
  export{Ds,gp,fp,ks};
@@ -1 +1 @@
1
- import{fc,ae,hc,Rd,yp,fi,Sp,bp,qs,vp,Tp,Ep,wp,Cp,Ap,Ip,yc,Sc,Ws,Gs,Co,et,A,Ks,bc,z,Rr,C,Pd,hi,Js,Xs,B,Ao,Rp,Pp,Np,Dp,l,s,kp,_p,E,Qs,Ys,Zs,xp,$p,De,ea,Io,Nd,Op,Lp,Ue,Et,ta,vc,Tc,Mp,Ec,wc,Cc,ra,Ac,jt,Ro,yi,Po,Si,Be,Dd,No,Do,na,ia,oa,sa,aa,ca,ve,F,S,O,tt,D,kd,wt,ge,Vt,Up,_d,Te,ko,Fe,zt,bi,Ee,_o,ke,xd,vi,we,Ce,re,Ti,J,Ht,Ct,Ae,t,xo,Bp,Ic,la,Fp,jp,Vp,zp,da,Hp,qp,Wp,Gp,Kp,Jp,Xp,Qp,Yp,Zp,em,tm,$d,Od,Ld,Md,Ud,Bd,Fd,qt,Rc,Pc,Pr,Ei,rm,Nc,nm,im,an,om,sm,am,cm,lm,dm,jd,Vd,zd,Hd,qd,$o,um,ua,Wd,Gd,Kd,Dc,Ie,pm,Jd,At,Oo,Nr,Xd,kc,Qd,Yd,Zd,_c,_e,mm,gm,fm,hm,eu,ym,Re,Sm,bm,vm,xc,$c,Tm,Oc,Lc,Em,wm,Cm,Am,Im,tu,pa,Rm,Pm,Nm,Dm,km,ru,nu,_m,xm,$m,Om,Lm,Mm,Um,Bm,Fm,Mc,ma,jm,Vm,zm,Hm,Uc,Bc,Fc,qm,jc,Wm,Gm,Km,Jm,Vc,Xm,Qm,Ym,Zm,eg,tg,rg,ng,iu,ou,su,au,zc,ig,og,sg,ag,cg,lg,dg,ug,pg,cu,lu,du,uu,mg,gg,Hc,fg,qc,Wc,Gc,Kc,hg,yg,Sg,bg,rt,wi,vg,Tg,Eg,wg,Cg,Ag,Ig,Rg,pu,Pg,Ng,Jc,Xc,Dg,kg,mu,_g,xg,$g,Og,Lg,Mg,Ug,Bg,Fg,jg,Vg,zg,Hg,qg,Wg,Gg,Kg,Jg,Xg,Qg,Yg,Qc,Zg,Yc,ef,Zc,tf,el,rf,tl,nf,cn,of,rl,sf,Lo,af,nl,cf,il,lf,ol,df,sl,uf,al,pf,ln,mf,cl,gf,ll,ff,dl,hf,ul,yf,pl,Sf,ml,bf,gl,vf,fl,Tf,hl,Ef,yl,wf,Sl,Cf,bl,Af,vl,If,Tl,Rf,El,Pf,wl,Nf,Cl,Df,Al,kf,Il,_f,Rl,xf,Pl,$f,Nl,Of,Dl,Lf,kl,Mf,_l,Uf,gu,fu,hu,yu,xl,Bf,$l,Ff,Ol,jf,Ll,Vf,Ci,Su,bu,Mo,ga,dn,vu,Uo,Wt,fa,ha,Tu,Eu,Ml,wu,ya,Ul,zf,Hf,Sa,ba,va,Bl,Bo,Fl,jl,Ta,Vl,zl,Hl,Cu,Au,Iu,qf,Ru,Pu,Wf,Nu,ql,Du,ku,_u,Gf,xu,Ai,Ea,$u,Kf,Ou,Fo,jo,wa,Wl,Jf,Gl,Xf,Kl,Qf,Jl,Yf,Xl,Zf}from"./chunk-jdfbahjb.js";export{nl as ABTestManager,Fe as AI,Qd as AWSAPIError,Zc as AWSConfigManager,Bp as AWS_PSEUDO_PARAMETERS,rt as AWS_REGIONS,_o as ApiGateway,xo as Arn,re as AssetHasher,we as Auth,Qc as BackupManager,Ol as BatchProcessingManager,rl as BlueGreenManager,Nl as BounceComplaintHandler,yl as BuildOptimizationManager,Be as CDN,ba as CHAIN_HEADER,ta as CLOUDFRONT_FAILOVER_STATUS_CODES,xg as COMMON_CROSS_ACCOUNT_ROLES,bi as Cache,Lo as CanaryManager,gl as CertificateManager,At as CloudError,Ic as CloudFormationBuilder,Kd as CloudFormationClient,Jd as CloudFrontClient,el as CloudTrailManager,uu as CommandHistory,Ae as Communication,S as Compute,Oo as ConfigurationError,Sl as ContainerRegistryManager,Nr as CredentialError,qc as CrossRegionReferenceManager,Od as DASHBOARD_ENTRY,Ld as DASHBOARD_PORT_BASE,Md as DASHBOARD_PORT_SPAN,$d as DASHBOARD_STATE_DIR,vc as DEFAULT_FAILOVER_STATUS_CODES,Bo as DEFAULT_RECURSION_LIMITS,Re as DEFAULT_SERVICE_LIMITS,yc as DEFAULT_STATE_DIR,Dd as DEFAULT_STORAGE_FAILOVER_STATUS_CODES,Sa as DEPTH_HEADER,$l as DLQMonitoringManager,ve as DNS,Rl as DNSSECManager,zt as Database,ul as DatabaseUserManager,_e as DebugLogger,Nd as DependencyGraph,Ce as Deployment,Xd as DeploymentError,Yc as DisasterRecoveryManager,D as Email,gu as EmailAdvanced,Dl as EmailAnalyticsManager,fu as EmailHandlers,_l as EmailTemplateManager,Yd as ErrorCodes,Do as FAILOVER_REPLICA_POLICY_SID,xl as FIFOQueueManager,xc as FileCache,tt as FileSystem,t as Fn,Wc as GlobalResourceManager,tl as GuardDutyManager,tu as HashCache,Kl as HealthCheckManager,hl as ImageScanningManager,Vt as JobLoader,$u as LARAVEL_SERVERLESS_BUILD_STEPS,El as LambdaConcurrencyManager,Al as LambdaDLQManager,wl as LambdaDestinationsManager,vl as LambdaLayersManager,Cl as LambdaVPCManager,Tl as LambdaVersionsManager,al as LogsManager,vu as MANAGED_NODE_VERSIONS,Rc as MANAGEMENT_DASHBOARD_SITE_PREFIX,ke as Messaging,sl as MetricsManager,cl as MigrationManager,Uc as MockCloudFormation,Fc as MockDynamoDB,Bc as MockS3,vi as Monitoring,Jc as MultiAccountManager,Hc as MultiRegionManager,ou as MultiStepProgress,O as Network,Jl as NetworkSecurityManager,wc as ORIGIN_CONNECTION_ATTEMPTS,Cc as ORIGIN_CONNECTION_TIMEOUT,Tc as ORIGIN_GROUP_ALLOWED_METHODS,Mp as ORIGIN_GROUP_ID_SUFFIX,Ec as ORIGIN_GROUP_SELECTION_CRITERIA,Xc as OrganizationManager,Ou as PHP_DEFAULT_EXCLUDES,Tu as PHP_LAYER_EXTENSIONS,J as ParameterStore,dl as PerformanceManager,Ee as Permissions,wt as Phone,hu as PhoneAdvanced,kd as PhoneHandlers,jc as PreviewEnvironmentManager,Vc as PreviewNotificationService,iu as ProgressBar,il as ProgressiveDeploymentManager,Dp as Pseudo,ge as Queue,Ll as QueueManagementManager,Ap as QueuePresets,mu as RECOMMENDED_ACCOUNT_STRUCTURES,_g as RECOMMENDED_SCPS,cu as REPL,du as REPLCommandBuilder,lu as REPLContext,ru as RateLimiter,Ip as RealtimePresets,Ta as RecursionGuard,Ct as Redirects,Gc as RegionPairManager,Et as Registry,ll as ReplicaManager,Xl as ResourceManagementManager,Pl as Route53ResolverManager,Il as Route53RoutingManager,Dc as S3Client,Ie as S3Error,Te as SMS,Sc as STATE_DIR_ENV_VAR,No as STORAGE_FAILOVER_METADATA_KEY,Ht as Search,Ti as Secrets,ml as SecretsManager,pl as SecretsRotationManager,F as Security,cn as SecurityHubManager,fl as SecurityScanningManager,kl as SenderReputationManager,bl as ServiceMeshManager,ko as Sftp,yu as SmsAdvanced,_d as SmsHandlers,su as Spinner,Kc as StackDependencyManager,Up as StacksIntegration,Wl as StaticSiteManager,Ue as Storage,Gl as StorageAdvancedManager,ln as SyntheticsManager,va as TRACE_HEADER,au as TaskList,Ao as TemplateBuilder,$c as TemplateCache,kc as ValidationError,xd as Workflow,ol as XRayManager,cf as abTestManager,Op as analyzeStackDiff,ga as artifactKey,yi as assertOriginGroupMethods,cg as autocomplete,tf as awsConfigManager,Zg as backupManager,Rm as batch,jf as batchProcessingManager,sf as blueGreenManager,Of as bounceComplaintHandler,Hf as buildBunRuntimeLayerZip,la as buildCloudFormationTemplate,aa as buildFailoverReplicaPolicyStatement,Xs as buildMailEnv,zf as buildNodeRuntimeLayerZip,wf as buildOptimizationManager,Ac as buildOriginGroup,Ro as buildOriginGroups,Kf as buildPhpRuntimeLayerZip,sa as buildReplicationConfiguration,oa as buildReplicationRole,af as canaryManager,Lm as categorizeChanges,vf as certificateManager,hm as checkIAMPermissions,Ru as checkInvocation,Sm as checkServiceQuotas,nu as chunk,Tp as clearSigningKeyCache,Bm as cloudConfigSchema,rf as cloudTrailManager,jo as collectPhpAppEntries,nm as composePresets,ha as composeServerlessAppTemplate,Cf as containerRegistryManager,qp as createApiBackendPreset,_u as createCliHandler,um as createCredentialProvider,tm as createDashboardSite,Xp as createDataPipelinePreset,_c as createError,da as createExistingStaticFullStackPreset,Hp as createFullStackAppPreset,Gf as createHandlers,Du as createHttpHandler,Gp as createJamstackPreset,Zp as createLaravelPreset,Qp as createMLApiPreset,Kp as createMicroservicesPreset,qm as createMockAWS,jp as createNodeJsServerPreset,Vp as createNodeJsServerlessPreset,im as createPreset,Rd as createPresignedUrl,yp as createPresignedUrlAsync,ku as createQueueHandler,Jp as createRealtimeAppPreset,pm as createS3Client,em as createServerlessLaravelPreset,zp as createServerlessNodePreset,Fp as createStaticSitePreset,Yp as createTraditionalWebAppPreset,Wp as createWordPressPreset,Ci as createZip,hg as crossRegionReferenceManager,yf as databaseUserManager,Mc as defaultLocalConfig,Rr as deploymentCoexistenceError,Ud as deriveManagementDashboardPort,bc as detectDeploymentTargets,gm as detectMisconfigurations,fc as detectServiceRegion,xm as diffTemplates,Ff as dlqMonitoringManager,xf as dnssecManager,ef as drManager,Lf as emailAnalyticsManager,Uf as emailTemplateManager,Nu as eventToRequest,Nc as extendPreset,Bf as fifoQueueManager,Im as findChangedFiles,Mg as formatAccountStructure,eg as formatBytes,Lp as formatDiff,tg as formatDuration,dg as formatFlagSuggestions,mg as formatHistory,gg as formatHistoryStats,ng as formatKeyValue,rg as formatList,Zm as formatProgressBar,pu as formatRegion,Pg as formatRegionList,ig as formatSuggestion,Qm as formatTable,Ym as formatTree,zd as fromEC2Metadata,Hd as fromECSMetadata,jd as fromEnvironment,Vd as fromSharedCredentials,qd as fromWebIdentity,Bl as functionFingerprint,ya as generateAppImageDockerfile,Qg as generateApprovalConfig,Su as generateBootstrap,Km as generateCleanupWorkflow,Jm as generateCostReportWorkflow,Og as generateCrossAccountRoleCF,Kg as generateDeploymentConfig,zg as generateDeploymentPipeline,Ug as generateDeploymentWorkflow,s as generateLogicalId,Gg as generateManualPipeline,Vg as generateMatrixWorkflow,Jg as generateMultiEnvConfig,Hg as generateMultiEnvPipeline,Bg as generateMultiEnvWorkflow,Fg as generatePRPreviewWorkflow,Yg as generateParallelConfig,xu as generatePhpFpmConfig,wu as generatePhpLayerDockerfile,qg as generatePreviewPipeline,Gm as generatePreviewWorkflow,l as generateResourceName,Xg as generateScheduledConfig,Wg as generateScheduledPipeline,jg as generateScheduledWorkflow,Gd as getAccountId,vg as getAllRegions,Ag as getClosestRegion,ug as getCommandUsage,sg as getContextualHelp,$o as getCredentials,Mm as getDeploymentStrategy,Um as getDiffStats,$m as getDiffSummary,Zd as getErrorDetails,ma as getLocalConfig,zm as getLocalCredentials,Vm as getLocalEndpoint,Hm as getLocalEnvVars,bm as getQuotaUsageSummary,$g as getRecommendedStructure,wi as getRegion,Ng as getRegionStats,Eg as getRegionsByCompliance,Tg as getRegionsByLocation,wg as getRegionsByPricingTier,eu as getRequiredPermissions,Ep as getSigningKeyCacheSize,kp as getTimestamp,yg as globalResourceManager,nf as guardDutyManager,qt as hasManagementDashboardSite,Em as hashBuffer,wm as hashDirectory,Oc as hashFile,Cm as hashManifest,Lc as hashString,Qf as healthCheckManager,Ef as imageScanningManager,jl as inspectInvocation,Au as installRecursionFetch,Hl as invocationContext,og as isLikelyTypo,jm as isLocalDevelopment,Pr as isManagementDashboardSiteName,wp as isNodeCryptoAvailable,Po as isS3RestEndpoint,Gs as isStateDirConfigured,Ks as isStatePath,Cg as isValidRegion,Cp as isWebCryptoAvailable,Pf as lambdaConcurrencyManager,kf as lambdaDLQManager,Nf as lambdaDestinationsManager,If as lambdaLayersManager,Df as lambdaVPCManager,Rf as lambdaVersionsManager,Ea as laravelServerlessEnvDefaults,pf as logsManager,Pd as mailEnabled,Js as mailFirewallPorts,fi as makeAWSRequest,bp as makeAWSRequestAsync,Sp as makeAWSRequestOnce,Pc as managementDashboardSiteName,an as mergeInfrastructure,uf as metricsManager,gf as migrationManager,Dg as multiAccountManager,fg as multiRegionManager,Yf as networkSecurityManager,kg as organizationManager,wa as packagePhpApp,dn as packageServerlessApp,pa as parallel,Pm as parallelMap,Nm as parallelWithRetry,Fl as parseChain,vp as parseJSONResponse,qs as parseXMLResponse,hf as performanceManager,Ml as phpLayerBuildStage,Eu as phpLayerPackages,Ai as phpRuntimeLayerAssets,Wm as previewManager,Xm as previewNotifications,_m as processInChunks,lf as progressiveDeploymentManager,Vl as propagationHeaders,Vf as queueManagementManager,Am as quickHash,zl as recursionBlockedResponse,Sg as regionPairManager,ff as replicaManager,Om as requiresReplacement,qf as resetRecursionRuntime,Wf as resolveApp,C as resolveAppDatabase,B as resolveCloudProvider,ua as resolveCredentials,Bd as resolveDashboardDomain,Fd as resolveDashboardDomains,$p as resolveDeployBucketName,z as resolveDeploymentMode,ra as resolveFailoverStatusCodes,hi as resolveMailService,rm as resolveManagementDashboardSite,Ei as resolveManagementDashboardSites,jt as resolveOriginConnection,E as resolveProjectStackName,fa as resolveQueueNames,Wt as resolveQueues,Cu as resolveRecursionConfig,Wd as resolveRegion,De as resolveServerlessAppStackName,ea as resolveServerlessArtifactBucketName,Io as resolveServerlessAssetBucketName,Uo as resolveServerlessRuntime,Zs as resolveSiteBucketName,Ys as resolveSiteResourceName,Qs as resolveSiteStackName,A as resolveStatePath,xp as resolveStorageBucketName,na as resolveStorageFailover,Zf as resourceManagementManager,ql as responseToResult,$f as route53ResolverManager,_f as route53RoutingManager,bu as runBuildHooks,Fo as runPhpBuildHooks,ia as s3RegionalDomain,_p as sanitizeName,ag as searchCommands,bf as secretsManager,Sf as secretsRotationManager,of as securityHubManager,Tf as securityScanningManager,Mf as senderReputationManager,Dm as sequence,Af as serviceMeshManager,Ws as setStateDir,Mo as sha256,Iu as sharedRecursionGuard,Ul as sharedRuntimeLoop,ae as signRequest,hc as signRequestAsync,bg as stackDependencyManager,Co as stateDir,et as statePath,Jf as staticSiteManager,Xf as storageAdvancedManager,ca as storageFailoverReplicasFromTemplate,zc as suggestCommand,lg as suggestFlags,ym as suggestIAMPolicy,vm as suggestQuotaIncrease,Rg as suggestRegionPairs,Ig as suggestRegions,mf as syntheticsManager,Tm as templateCache,Lg as validateAccountStructure,Fm as validateAgainstSchema,pg as validateCommand,mm as validateConfiguration,fm as validateCredentials,Si as validateOriginGroups,Np as validateResourceLimits,Rp as validateTemplate,Pp as validateTemplateSize,lm as withCDN,cm as withCache,am as withDatabase,Pu as withInvocation,om as withMonitoring,dm as withQueue,sm as withSecurity,km as withTimeout,df as xrayManager};
1
+ import{fc,ae,hc,Rd,yp,fi,Sp,bp,qs,vp,Tp,Ep,wp,Cp,Ap,Ip,yc,Sc,Ws,Gs,Co,et,A,Ks,bc,H,Rr,C,Pd,hi,Js,Xs,F,Ao,Rp,Pp,Np,Dp,l,s,kp,_p,E,Qs,Ys,Zs,xp,$p,De,ea,Io,Nd,Op,Lp,Ue,Et,ta,vc,Tc,Mp,Ec,wc,Cc,ra,Ac,jt,Ro,yi,Po,Si,Be,Dd,No,Do,na,ia,oa,sa,aa,ca,ve,j,S,L,tt,D,kd,wt,ge,Vt,Up,_d,Te,ko,Fe,zt,bi,Ee,_o,ke,xd,vi,we,Ce,re,Ti,X,Ht,Ct,Ae,t,xo,Bp,Ic,la,Fp,jp,Vp,zp,da,Hp,qp,Wp,Gp,Kp,Jp,Xp,Qp,Yp,Zp,em,tm,$d,Od,Ld,Md,Ud,Bd,Fd,qt,Rc,Pc,Pr,Ei,rm,Nc,nm,im,an,om,sm,am,cm,lm,dm,jd,Vd,zd,Hd,qd,$o,um,ua,Wd,Gd,Kd,Dc,Ie,pm,Jd,At,Oo,Nr,Xd,kc,Qd,Yd,Zd,_c,_e,mm,gm,fm,hm,eu,ym,Re,Sm,bm,vm,xc,$c,Tm,Oc,Lc,Em,wm,Cm,Am,Im,tu,pa,Rm,Pm,Nm,Dm,km,ru,nu,_m,xm,$m,Om,Lm,Mm,Um,Bm,Fm,Mc,ma,jm,Vm,zm,Hm,Uc,Bc,Fc,qm,jc,Wm,Gm,Km,Jm,Vc,Xm,Qm,Ym,Zm,eg,tg,rg,ng,iu,ou,su,au,zc,ig,og,sg,ag,cg,lg,dg,ug,pg,cu,lu,du,uu,mg,gg,Hc,fg,qc,Wc,Gc,Kc,hg,yg,Sg,bg,rt,wi,vg,Tg,Eg,wg,Cg,Ag,Ig,Rg,pu,Pg,Ng,Jc,Xc,Dg,kg,mu,_g,xg,$g,Og,Lg,Mg,Ug,Bg,Fg,jg,Vg,zg,Hg,qg,Wg,Gg,Kg,Jg,Xg,Qg,Yg,Qc,Zg,Yc,ef,Zc,tf,el,rf,tl,nf,cn,of,rl,sf,Lo,af,nl,cf,il,lf,ol,df,sl,uf,al,pf,ln,mf,cl,gf,ll,ff,dl,hf,ul,yf,pl,Sf,ml,bf,gl,vf,fl,Tf,hl,Ef,yl,wf,Sl,Cf,bl,Af,vl,If,Tl,Rf,El,Pf,wl,Nf,Cl,Df,Al,kf,Il,_f,Rl,xf,Pl,$f,Nl,Of,Dl,Lf,kl,Mf,_l,Uf,gu,fu,hu,yu,xl,Bf,$l,Ff,Ol,jf,Ll,Vf,Ci,Su,bu,Mo,ga,dn,vu,Uo,Wt,fa,ha,Tu,Eu,Ml,wu,ya,Ul,zf,Hf,Sa,ba,va,Bl,Bo,Fl,jl,Ta,Vl,zl,Hl,Cu,Au,Iu,qf,Ru,Pu,Wf,Nu,ql,Du,ku,_u,Gf,xu,Ai,Ea,$u,Kf,Ou,Fo,jo,wa,Wl,Jf,Gl,Xf,Kl,Qf,Jl,Yf,Xl,Zf}from"./chunk-4a8qt6e8.js";export{nl as ABTestManager,Fe as AI,Qd as AWSAPIError,Zc as AWSConfigManager,Bp as AWS_PSEUDO_PARAMETERS,rt as AWS_REGIONS,_o as ApiGateway,xo as Arn,re as AssetHasher,we as Auth,Qc as BackupManager,Ol as BatchProcessingManager,rl as BlueGreenManager,Nl as BounceComplaintHandler,yl as BuildOptimizationManager,Be as CDN,ba as CHAIN_HEADER,ta as CLOUDFRONT_FAILOVER_STATUS_CODES,xg as COMMON_CROSS_ACCOUNT_ROLES,bi as Cache,Lo as CanaryManager,gl as CertificateManager,At as CloudError,Ic as CloudFormationBuilder,Kd as CloudFormationClient,Jd as CloudFrontClient,el as CloudTrailManager,uu as CommandHistory,Ae as Communication,S as Compute,Oo as ConfigurationError,Sl as ContainerRegistryManager,Nr as CredentialError,qc as CrossRegionReferenceManager,Od as DASHBOARD_ENTRY,Ld as DASHBOARD_PORT_BASE,Md as DASHBOARD_PORT_SPAN,$d as DASHBOARD_STATE_DIR,vc as DEFAULT_FAILOVER_STATUS_CODES,Bo as DEFAULT_RECURSION_LIMITS,Re as DEFAULT_SERVICE_LIMITS,yc as DEFAULT_STATE_DIR,Dd as DEFAULT_STORAGE_FAILOVER_STATUS_CODES,Sa as DEPTH_HEADER,$l as DLQMonitoringManager,ve as DNS,Rl as DNSSECManager,zt as Database,ul as DatabaseUserManager,_e as DebugLogger,Nd as DependencyGraph,Ce as Deployment,Xd as DeploymentError,Yc as DisasterRecoveryManager,D as Email,gu as EmailAdvanced,Dl as EmailAnalyticsManager,fu as EmailHandlers,_l as EmailTemplateManager,Yd as ErrorCodes,Do as FAILOVER_REPLICA_POLICY_SID,xl as FIFOQueueManager,xc as FileCache,tt as FileSystem,t as Fn,Wc as GlobalResourceManager,tl as GuardDutyManager,tu as HashCache,Kl as HealthCheckManager,hl as ImageScanningManager,Vt as JobLoader,$u as LARAVEL_SERVERLESS_BUILD_STEPS,El as LambdaConcurrencyManager,Al as LambdaDLQManager,wl as LambdaDestinationsManager,vl as LambdaLayersManager,Cl as LambdaVPCManager,Tl as LambdaVersionsManager,al as LogsManager,vu as MANAGED_NODE_VERSIONS,Rc as MANAGEMENT_DASHBOARD_SITE_PREFIX,ke as Messaging,sl as MetricsManager,cl as MigrationManager,Uc as MockCloudFormation,Fc as MockDynamoDB,Bc as MockS3,vi as Monitoring,Jc as MultiAccountManager,Hc as MultiRegionManager,ou as MultiStepProgress,L as Network,Jl as NetworkSecurityManager,wc as ORIGIN_CONNECTION_ATTEMPTS,Cc as ORIGIN_CONNECTION_TIMEOUT,Tc as ORIGIN_GROUP_ALLOWED_METHODS,Mp as ORIGIN_GROUP_ID_SUFFIX,Ec as ORIGIN_GROUP_SELECTION_CRITERIA,Xc as OrganizationManager,Ou as PHP_DEFAULT_EXCLUDES,Tu as PHP_LAYER_EXTENSIONS,X as ParameterStore,dl as PerformanceManager,Ee as Permissions,wt as Phone,hu as PhoneAdvanced,kd as PhoneHandlers,jc as PreviewEnvironmentManager,Vc as PreviewNotificationService,iu as ProgressBar,il as ProgressiveDeploymentManager,Dp as Pseudo,ge as Queue,Ll as QueueManagementManager,Ap as QueuePresets,mu as RECOMMENDED_ACCOUNT_STRUCTURES,_g as RECOMMENDED_SCPS,cu as REPL,du as REPLCommandBuilder,lu as REPLContext,ru as RateLimiter,Ip as RealtimePresets,Ta as RecursionGuard,Ct as Redirects,Gc as RegionPairManager,Et as Registry,ll as ReplicaManager,Xl as ResourceManagementManager,Pl as Route53ResolverManager,Il as Route53RoutingManager,Dc as S3Client,Ie as S3Error,Te as SMS,Sc as STATE_DIR_ENV_VAR,No as STORAGE_FAILOVER_METADATA_KEY,Ht as Search,Ti as Secrets,ml as SecretsManager,pl as SecretsRotationManager,j as Security,cn as SecurityHubManager,fl as SecurityScanningManager,kl as SenderReputationManager,bl as ServiceMeshManager,ko as Sftp,yu as SmsAdvanced,_d as SmsHandlers,su as Spinner,Kc as StackDependencyManager,Up as StacksIntegration,Wl as StaticSiteManager,Ue as Storage,Gl as StorageAdvancedManager,ln as SyntheticsManager,va as TRACE_HEADER,au as TaskList,Ao as TemplateBuilder,$c as TemplateCache,kc as ValidationError,xd as Workflow,ol as XRayManager,cf as abTestManager,Op as analyzeStackDiff,ga as artifactKey,yi as assertOriginGroupMethods,cg as autocomplete,tf as awsConfigManager,Zg as backupManager,Rm as batch,jf as batchProcessingManager,sf as blueGreenManager,Of as bounceComplaintHandler,Hf as buildBunRuntimeLayerZip,la as buildCloudFormationTemplate,aa as buildFailoverReplicaPolicyStatement,Xs as buildMailEnv,zf as buildNodeRuntimeLayerZip,wf as buildOptimizationManager,Ac as buildOriginGroup,Ro as buildOriginGroups,Kf as buildPhpRuntimeLayerZip,sa as buildReplicationConfiguration,oa as buildReplicationRole,af as canaryManager,Lm as categorizeChanges,vf as certificateManager,hm as checkIAMPermissions,Ru as checkInvocation,Sm as checkServiceQuotas,nu as chunk,Tp as clearSigningKeyCache,Bm as cloudConfigSchema,rf as cloudTrailManager,jo as collectPhpAppEntries,nm as composePresets,ha as composeServerlessAppTemplate,Cf as containerRegistryManager,qp as createApiBackendPreset,_u as createCliHandler,um as createCredentialProvider,tm as createDashboardSite,Xp as createDataPipelinePreset,_c as createError,da as createExistingStaticFullStackPreset,Hp as createFullStackAppPreset,Gf as createHandlers,Du as createHttpHandler,Gp as createJamstackPreset,Zp as createLaravelPreset,Qp as createMLApiPreset,Kp as createMicroservicesPreset,qm as createMockAWS,jp as createNodeJsServerPreset,Vp as createNodeJsServerlessPreset,im as createPreset,Rd as createPresignedUrl,yp as createPresignedUrlAsync,ku as createQueueHandler,Jp as createRealtimeAppPreset,pm as createS3Client,em as createServerlessLaravelPreset,zp as createServerlessNodePreset,Fp as createStaticSitePreset,Yp as createTraditionalWebAppPreset,Wp as createWordPressPreset,Ci as createZip,hg as crossRegionReferenceManager,yf as databaseUserManager,Mc as defaultLocalConfig,Rr as deploymentCoexistenceError,Ud as deriveManagementDashboardPort,bc as detectDeploymentTargets,gm as detectMisconfigurations,fc as detectServiceRegion,xm as diffTemplates,Ff as dlqMonitoringManager,xf as dnssecManager,ef as drManager,Lf as emailAnalyticsManager,Uf as emailTemplateManager,Nu as eventToRequest,Nc as extendPreset,Bf as fifoQueueManager,Im as findChangedFiles,Mg as formatAccountStructure,eg as formatBytes,Lp as formatDiff,tg as formatDuration,dg as formatFlagSuggestions,mg as formatHistory,gg as formatHistoryStats,ng as formatKeyValue,rg as formatList,Zm as formatProgressBar,pu as formatRegion,Pg as formatRegionList,ig as formatSuggestion,Qm as formatTable,Ym as formatTree,zd as fromEC2Metadata,Hd as fromECSMetadata,jd as fromEnvironment,Vd as fromSharedCredentials,qd as fromWebIdentity,Bl as functionFingerprint,ya as generateAppImageDockerfile,Qg as generateApprovalConfig,Su as generateBootstrap,Km as generateCleanupWorkflow,Jm as generateCostReportWorkflow,Og as generateCrossAccountRoleCF,Kg as generateDeploymentConfig,zg as generateDeploymentPipeline,Ug as generateDeploymentWorkflow,s as generateLogicalId,Gg as generateManualPipeline,Vg as generateMatrixWorkflow,Jg as generateMultiEnvConfig,Hg as generateMultiEnvPipeline,Bg as generateMultiEnvWorkflow,Fg as generatePRPreviewWorkflow,Yg as generateParallelConfig,xu as generatePhpFpmConfig,wu as generatePhpLayerDockerfile,qg as generatePreviewPipeline,Gm as generatePreviewWorkflow,l as generateResourceName,Xg as generateScheduledConfig,Wg as generateScheduledPipeline,jg as generateScheduledWorkflow,Gd as getAccountId,vg as getAllRegions,Ag as getClosestRegion,ug as getCommandUsage,sg as getContextualHelp,$o as getCredentials,Mm as getDeploymentStrategy,Um as getDiffStats,$m as getDiffSummary,Zd as getErrorDetails,ma as getLocalConfig,zm as getLocalCredentials,Vm as getLocalEndpoint,Hm as getLocalEnvVars,bm as getQuotaUsageSummary,$g as getRecommendedStructure,wi as getRegion,Ng as getRegionStats,Eg as getRegionsByCompliance,Tg as getRegionsByLocation,wg as getRegionsByPricingTier,eu as getRequiredPermissions,Ep as getSigningKeyCacheSize,kp as getTimestamp,yg as globalResourceManager,nf as guardDutyManager,qt as hasManagementDashboardSite,Em as hashBuffer,wm as hashDirectory,Oc as hashFile,Cm as hashManifest,Lc as hashString,Qf as healthCheckManager,Ef as imageScanningManager,jl as inspectInvocation,Au as installRecursionFetch,Hl as invocationContext,og as isLikelyTypo,jm as isLocalDevelopment,Pr as isManagementDashboardSiteName,wp as isNodeCryptoAvailable,Po as isS3RestEndpoint,Gs as isStateDirConfigured,Ks as isStatePath,Cg as isValidRegion,Cp as isWebCryptoAvailable,Pf as lambdaConcurrencyManager,kf as lambdaDLQManager,Nf as lambdaDestinationsManager,If as lambdaLayersManager,Df as lambdaVPCManager,Rf as lambdaVersionsManager,Ea as laravelServerlessEnvDefaults,pf as logsManager,Pd as mailEnabled,Js as mailFirewallPorts,fi as makeAWSRequest,bp as makeAWSRequestAsync,Sp as makeAWSRequestOnce,Pc as managementDashboardSiteName,an as mergeInfrastructure,uf as metricsManager,gf as migrationManager,Dg as multiAccountManager,fg as multiRegionManager,Yf as networkSecurityManager,kg as organizationManager,wa as packagePhpApp,dn as packageServerlessApp,pa as parallel,Pm as parallelMap,Nm as parallelWithRetry,Fl as parseChain,vp as parseJSONResponse,qs as parseXMLResponse,hf as performanceManager,Ml as phpLayerBuildStage,Eu as phpLayerPackages,Ai as phpRuntimeLayerAssets,Wm as previewManager,Xm as previewNotifications,_m as processInChunks,lf as progressiveDeploymentManager,Vl as propagationHeaders,Vf as queueManagementManager,Am as quickHash,zl as recursionBlockedResponse,Sg as regionPairManager,ff as replicaManager,Om as requiresReplacement,qf as resetRecursionRuntime,Wf as resolveApp,C as resolveAppDatabase,F as resolveCloudProvider,ua as resolveCredentials,Bd as resolveDashboardDomain,Fd as resolveDashboardDomains,$p as resolveDeployBucketName,H as resolveDeploymentMode,ra as resolveFailoverStatusCodes,hi as resolveMailService,rm as resolveManagementDashboardSite,Ei as resolveManagementDashboardSites,jt as resolveOriginConnection,E as resolveProjectStackName,fa as resolveQueueNames,Wt as resolveQueues,Cu as resolveRecursionConfig,Wd as resolveRegion,De as resolveServerlessAppStackName,ea as resolveServerlessArtifactBucketName,Io as resolveServerlessAssetBucketName,Uo as resolveServerlessRuntime,Zs as resolveSiteBucketName,Ys as resolveSiteResourceName,Qs as resolveSiteStackName,A as resolveStatePath,xp as resolveStorageBucketName,na as resolveStorageFailover,Zf as resourceManagementManager,ql as responseToResult,$f as route53ResolverManager,_f as route53RoutingManager,bu as runBuildHooks,Fo as runPhpBuildHooks,ia as s3RegionalDomain,_p as sanitizeName,ag as searchCommands,bf as secretsManager,Sf as secretsRotationManager,of as securityHubManager,Tf as securityScanningManager,Mf as senderReputationManager,Dm as sequence,Af as serviceMeshManager,Ws as setStateDir,Mo as sha256,Iu as sharedRecursionGuard,Ul as sharedRuntimeLoop,ae as signRequest,hc as signRequestAsync,bg as stackDependencyManager,Co as stateDir,et as statePath,Jf as staticSiteManager,Xf as storageAdvancedManager,ca as storageFailoverReplicasFromTemplate,zc as suggestCommand,lg as suggestFlags,ym as suggestIAMPolicy,vm as suggestQuotaIncrease,Rg as suggestRegionPairs,Ig as suggestRegions,mf as syntheticsManager,Tm as templateCache,Lg as validateAccountStructure,Fm as validateAgainstSchema,pg as validateCommand,mm as validateConfiguration,fm as validateCredentials,Si as validateOriginGroups,Np as validateResourceLimits,Rp as validateTemplate,Pp as validateTemplateSize,lm as withCDN,cm as withCache,am as withDatabase,Pu as withInvocation,om as withMonitoring,dm as withQueue,sm as withSecurity,km as withTimeout,df as xrayManager};
@@ -1,4 +1,4 @@
1
- import{et,A,qt,Pr,Ei}from"./chunk-jdfbahjb.js";import{execSync as D}from"node:child_process";import{randomBytes as R}from"node:crypto";import{chmodSync as j,copyFileSync as x,existsSync as u,mkdirSync as w,readFileSync as U,statSync as N,writeFileSync as m}from"node:fs";import{tmpdir as E}from"node:os";import{basename as P,dirname as v,isAbsolute as O,join as a,resolve as B}from"node:path";import{fileURLToPath as C}from"node:url";function h(e){if(!e||typeof e!=="object")return e;return Object.fromEntries(Object.keys(e).map((r)=>[r,""]))}function M(e){let r=JSON.parse(JSON.stringify(e??{}));if(r.hetzner)delete r.hetzner.apiToken;delete r.aws,delete r.stateDir;for(let t of Object.values(r.sites??{})){if(t?.env)t.env=h(t.env);if(t?.environment)t.environment=h(t.environment)}for(let t of Object.values(r.environments??{}))if(t?.variables)t.variables=h(t.variables);for(let t of Object.values(r.infrastructure?.databases??{}))if(t?.password)t.password="";if(r.infrastructure?.appDatabase?.password)r.infrastructure.appDatabase.password="";if(r.infrastructure?.compute?.database?.password)r.infrastructure.compute.database.password="";if(r.infrastructure?.compute?.managedServices?.vitess?.password)r.infrastructure.compute.managedServices.vitess.password="";return r}function y(e){let r=M(e);return["// Generated by ts-cloud for the management dashboard — do not edit.","//","// This is the project's resolved cloud config, inlined so it needs no","// imports on the box. Credentials are deliberately absent.",`export default ${JSON.stringify(r,null,2)}`,""].join(`
1
+ import{et,A,qt,Pr,Ei}from"./chunk-4a8qt6e8.js";import{execSync as D}from"node:child_process";import{randomBytes as R}from"node:crypto";import{chmodSync as j,copyFileSync as x,existsSync as u,mkdirSync as w,readFileSync as U,statSync as N,writeFileSync as m}from"node:fs";import{tmpdir as E}from"node:os";import{basename as P,dirname as v,isAbsolute as O,join as a,resolve as B}from"node:path";import{fileURLToPath as C}from"node:url";function h(e){if(!e||typeof e!=="object")return e;return Object.fromEntries(Object.keys(e).map((r)=>[r,""]))}function M(e){let r=JSON.parse(JSON.stringify(e??{}));if(r.hetzner)delete r.hetzner.apiToken;delete r.aws,delete r.stateDir;for(let t of Object.values(r.sites??{})){if(t?.env)t.env=h(t.env);if(t?.environment)t.environment=h(t.environment)}for(let t of Object.values(r.environments??{}))if(t?.variables)t.variables=h(t.variables);for(let t of Object.values(r.infrastructure?.databases??{}))if(t?.password)t.password="";if(r.infrastructure?.appDatabase?.password)r.infrastructure.appDatabase.password="";if(r.infrastructure?.compute?.database?.password)r.infrastructure.compute.database.password="";if(r.infrastructure?.compute?.managedServices?.vitess?.password)r.infrastructure.compute.managedServices.vitess.password="";return r}function y(e){let r=M(e);return["// Generated by ts-cloud for the management dashboard — do not edit.","//","// This is the project's resolved cloud config, inlined so it needs no","// imports on the box. Credentials are deliberately absent.",`export default ${JSON.stringify(r,null,2)}`,""].join(`
2
2
  `)}var Ed="dashboard";function sc(){return et("dashboard-credentials.json")}function F(){return R(24).toString("base64url")}function wd(e,r,t){let s=process.env.TS_CLOUD_UI_PASSWORD?.trim();if(s)return{password:s,source:"env"};if(b(process.env.TS_CLOUD_UI_PUBLIC))return{password:void 0,source:"public"};let n=sc(),i=A(e,"dashboard-credentials.json");try{if(u(i)){let o=JSON.parse(U(i,"utf8"));if(o?.password)return{password:o.password,source:"generated"}}}catch{}let d=F();try{w(v(i),{recursive:!0}),m(i,`${JSON.stringify({username:r,password:d,generatedAt:new Date().toISOString()},null,2)}
3
3
  `),j(i,384),t.info(`Management dashboard: generated a password for '${r}' and saved it to ${n} (read it there — it is not printed). Set TS_CLOUD_UI_PASSWORD to pin your own, or TS_CLOUD_UI_PUBLIC=1 to serve without auth.`)}catch(o){t.warn(`Management dashboard: could not persist the generated password (${o?.message??o}). Using it for this deploy only — pass: ${d}
4
4
  This password is now in your deploy log. Set TS_CLOUD_UI_PASSWORD to a value of your own and redeploy once ${n} is writable.`)}return{password:d,source:"generated"}}var I={info:()=>{},warn:()=>{}};function b(e){return e!=null&&e!==""&&e!=="0"&&e.toLowerCase()!=="false"}function J(){return et("dashboard-release")}function L(){let e=v(C(import.meta.url));for(let r of[a(e,"..","..","package.json"),a(e,"..","package.json")])try{let t=JSON.parse(U(r,"utf8"));if(t.name==="@stacksjs/ts-cloud"&&t.version)return`^${t.version}`}catch{}return"latest"}function z(){return process.env.TS_CLOUD_UI_VERSION?.trim()||L()}function V(e,r,t){if(!e?.project?.slug)return t.warn("Management dashboard: the cloud config has no project slug — skipping the live dashboard."),null;let s=A(r,"dashboard-release");try{w(s,{recursive:!0}),m(a(s,"cloud.config.ts"),y(e));let n=z();if(n.startsWith("file:")){let d=n.slice(5),o=O(d)?d:B(r,d);if(!u(o)||!N(o).isFile())n=L(),t.warn(`Management dashboard: TS_CLOUD_UI_VERSION points to a missing package file (${o}); using the deploying ts-cloud version ${n} instead.`);else{let c=P(o),l=a(s,c);if(o!==l)x(o,l);n=`file:./${c}`}}let i={name:"ts-cloud-dashboard",private:!0,type:"module",dependencies:{"@stacksjs/ts-cloud":n}};return m(a(s,"package.json"),`${JSON.stringify(i,null,2)}
@@ -0,0 +1 @@
1
+ import{me}from"./chunk-fjxsj9z9.js";import"./chunk-q3xwh0r8.js";export{me as RDSClient};
@@ -1 +1 @@
1
- import{zu,Hu,qu,Wu}from"./chunk-5x59x4qw.js";import"./chunk-2q27v6vz.js";import"./chunk-q3xwh0r8.js";import"./chunk-jdfbahjb.js";export{Wu as deleteFailoverReplicaBuckets,zu as ensureFailoverReplicaBuckets,Hu as grantFailoverReplicaAccess,qu as seedFailoverReplicas};
1
+ import{zu,Hu,qu,Wu}from"./chunk-ccykpema.js";import"./chunk-2q27v6vz.js";import"./chunk-q3xwh0r8.js";import"./chunk-4a8qt6e8.js";export{Wu as deleteFailoverReplicaBuckets,zu as ensureFailoverReplicaBuckets,Hu as grantFailoverReplicaAccess,qu as seedFailoverReplicas};