@fjall/deploy-core 2.34.0 → 3.0.0

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 (208) hide show
  1. package/dist/.minified +1 -1
  2. package/dist/src/aws/SimpleAwsProvider.js +1 -1
  3. package/dist/src/aws/cloudtrail/orgTrailDelivery.js +1 -1
  4. package/dist/src/aws/organisations/accountGlobals.js +1 -1
  5. package/dist/src/aws/organisations/accounts.js +1 -1
  6. package/dist/src/aws/organisations/backup.js +2 -2
  7. package/dist/src/aws/organisations/costAllocation.js +1 -1
  8. package/dist/src/aws/organisations/delegatedAdmin.js +2 -2
  9. package/dist/src/aws/organisations/identityCentre.js +1 -1
  10. package/dist/src/aws/organisations/identityCentreSnapshot.js +1 -1
  11. package/dist/src/aws/organisations/importedAccounts.js +1 -1
  12. package/dist/src/aws/organisations/ipam.js +1 -1
  13. package/dist/src/aws/organisations/oidcProvider.js +1 -1
  14. package/dist/src/aws/organisations/organisation.js +1 -1
  15. package/dist/src/aws/organisations/organisationalUnits.js +1 -1
  16. package/dist/src/aws/organisations/pagination.js +1 -1
  17. package/dist/src/aws/organisations/policies.js +1 -1
  18. package/dist/src/aws/organisations/ram.js +1 -1
  19. package/dist/src/aws/organisations/rootAccess.js +3 -3
  20. package/dist/src/aws/organisations/serviceAccess.js +1 -1
  21. package/dist/src/aws/organisations/trustedAccess.js +1 -1
  22. package/dist/src/aws/organisations/types.js +1 -1
  23. package/dist/src/aws/regions/regionOptStatus.js +1 -1
  24. package/dist/src/aws/sts/assumeRoot.js +1 -1
  25. package/dist/src/aws/targetReadiness.js +1 -1
  26. package/dist/src/aws/targetSetAdvisory.js +1 -1
  27. package/dist/src/aws/utils/arnParser.js +1 -1
  28. package/dist/src/aws/utils/awsErrorHandler.js +1 -1
  29. package/dist/src/aws/utils/cloudformationEventHelpers.js +1 -1
  30. package/dist/src/aws/utils/cloudformationEvents.js +1 -1
  31. package/dist/src/index.d.ts +4 -2
  32. package/dist/src/index.js +1 -1
  33. package/dist/src/orchestration/activeDeploymentGuard.js +5 -5
  34. package/dist/src/orchestration/application/applicationDeploy.js +1 -1
  35. package/dist/src/orchestration/application/applicationDeployHelpers.js +3 -3
  36. package/dist/src/orchestration/application/applicationDestroy.js +1 -1
  37. package/dist/src/orchestration/application/approvalGate.js +1 -1
  38. package/dist/src/orchestration/application/artefactCollection.js +1 -1
  39. package/dist/src/orchestration/application/buildArgResolver.js +1 -1
  40. package/dist/src/orchestration/application/buildGroupValidator.js +1 -1
  41. package/dist/src/orchestration/application/buildSecretResolver.js +1 -1
  42. package/dist/src/orchestration/application/buildSecretSession.js +1 -1
  43. package/dist/src/orchestration/application/codeOnlyDeploy.js +1 -1
  44. package/dist/src/orchestration/application/databaseEndpointReconcile.js +1 -1
  45. package/dist/src/orchestration/application/deploySessionPolicy.js +1 -1
  46. package/dist/src/orchestration/application/destroyPreFlight.js +1 -1
  47. package/dist/src/orchestration/application/destructionGate.js +3 -3
  48. package/dist/src/orchestration/application/detectionPipeline.js +1 -1
  49. package/dist/src/orchestration/application/dockerBuildHelper.js +1 -1
  50. package/dist/src/orchestration/application/ecrCacheRepository.js +1 -1
  51. package/dist/src/orchestration/application/lambdaCodeOnlyRollout.js +1 -1
  52. package/dist/src/orchestration/application/leaseGate.js +1 -1
  53. package/dist/src/orchestration/application/openNextBuild.js +3 -3
  54. package/dist/src/orchestration/application/plan/approvalToken.js +1 -1
  55. package/dist/src/orchestration/application/plan/assemblyDigest.js +2 -2
  56. package/dist/src/orchestration/application/plan/buildDeployPlan.js +1 -1
  57. package/dist/src/orchestration/application/plan/changeSetEscalation.js +1 -1
  58. package/dist/src/orchestration/application/plan/classify.js +1 -1
  59. package/dist/src/orchestration/application/plan/computeDeployPlan.js +1 -1
  60. package/dist/src/orchestration/application/plan/loadDeployPlan.js +1 -1
  61. package/dist/src/orchestration/application/plan/pinnedNames.js +1 -1
  62. package/dist/src/orchestration/application/plan/registryOverlay.js +1 -1
  63. package/dist/src/orchestration/application/plan/renderDeployPlan.js +1 -1
  64. package/dist/src/orchestration/application/serviceImageTagsRollback.js +1 -1
  65. package/dist/src/orchestration/application/taskDefinitionRoll.js +1 -1
  66. package/dist/src/orchestration/application/welcomeImageHelper.js +1 -1
  67. package/dist/src/orchestration/builders/dockerBuilder.js +1 -1
  68. package/dist/src/orchestration/builders/frameworkRegistry.js +1 -1
  69. package/dist/src/orchestration/builders/openNextBuilder.js +1 -1
  70. package/dist/src/orchestration/builders/staticSiteBuilder.js +2 -2
  71. package/dist/src/orchestration/contextHelpers.js +1 -1
  72. package/dist/src/orchestration/deploy.js +1 -1
  73. package/dist/src/orchestration/destroy.js +1 -1
  74. package/dist/src/orchestration/domain/caaPreflight.d.ts +56 -0
  75. package/dist/src/orchestration/domain/caaPreflight.js +1 -0
  76. package/dist/src/orchestration/domain/delegatedDomainDeploy.d.ts +79 -0
  77. package/dist/src/orchestration/domain/delegatedDomainDeploy.js +1 -0
  78. package/dist/src/orchestration/domain/delegationDestroyMirror.d.ts +141 -0
  79. package/dist/src/orchestration/domain/delegationDestroyMirror.js +1 -0
  80. package/dist/src/orchestration/domain/index.d.ts +10 -0
  81. package/dist/src/orchestration/domain/index.js +1 -0
  82. package/dist/src/orchestration/domain/nsPropagationGate.d.ts +59 -0
  83. package/dist/src/orchestration/domain/nsPropagationGate.js +1 -0
  84. package/dist/src/orchestration/domain/types.d.ts +75 -0
  85. package/dist/src/orchestration/domain/types.js +1 -0
  86. package/dist/src/orchestration/domainInterface.d.ts +10 -0
  87. package/dist/src/orchestration/drift/classifyDriftFailure.js +1 -1
  88. package/dist/src/orchestration/drift/detectStackDrift.js +1 -1
  89. package/dist/src/orchestration/drift/driftPreFlight.js +5 -5
  90. package/dist/src/orchestration/drift/driftProbe.d.ts +12 -6
  91. package/dist/src/orchestration/drift/driftProbe.js +1 -1
  92. package/dist/src/orchestration/drift/driftSuspectJournal.js +1 -1
  93. package/dist/src/orchestration/drift/preFlightGate.d.ts +10 -2
  94. package/dist/src/orchestration/drift/preFlightGate.js +2 -2
  95. package/dist/src/orchestration/drift/route53Names.d.ts +35 -0
  96. package/dist/src/orchestration/drift/route53Names.js +1 -0
  97. package/dist/src/orchestration/drift/route53RecordPreflight.d.ts +105 -0
  98. package/dist/src/orchestration/drift/route53RecordPreflight.js +2 -0
  99. package/dist/src/orchestration/index.d.ts +3 -1
  100. package/dist/src/orchestration/index.js +1 -1
  101. package/dist/src/orchestration/manifestSecretParser.js +1 -1
  102. package/dist/src/orchestration/organisation/accountsConfig.js +1 -1
  103. package/dist/src/orchestration/organisation/cascadeDestroyHelpers.js +1 -1
  104. package/dist/src/orchestration/organisation/cascadeHelpers.d.ts +18 -1
  105. package/dist/src/orchestration/organisation/cascadeHelpers.js +1 -1
  106. package/dist/src/orchestration/organisation/cascadeSummary.js +1 -1
  107. package/dist/src/orchestration/organisation/organisationDeploy.js +1 -1
  108. package/dist/src/orchestration/organisation/organisationDestroy.js +2 -2
  109. package/dist/src/orchestration/organisation/organisationSetup.js +1 -1
  110. package/dist/src/orchestration/organisation/reconcileProviderAccounts.js +1 -1
  111. package/dist/src/orchestration/organisationDeploy/cascadeExecution.js +1 -1
  112. package/dist/src/orchestration/organisationDeploy/infraSteps.js +1 -1
  113. package/dist/src/orchestration/organisationDeploy/orgCascadeDeploy.js +3 -3
  114. package/dist/src/orchestration/organisationDeploy/orgContext.js +1 -1
  115. package/dist/src/orchestration/organisationDeploy/resolveCascadeAccounts.js +1 -1
  116. package/dist/src/orchestration/organisationDeploy/singleComponentDeploy.js +1 -1
  117. package/dist/src/orchestration/organisationDeploy/trailReconciliation.js +1 -1
  118. package/dist/src/orchestration/probes/deleteBlockProbes.js +1 -1
  119. package/dist/src/orchestration/remediation/driftRepairGate.js +1 -1
  120. package/dist/src/orchestration/remediation/forensicsCapture.js +1 -1
  121. package/dist/src/orchestration/remediation/forgetResource.js +1 -1
  122. package/dist/src/orchestration/remediation/pinRemediation.js +1 -1
  123. package/dist/src/orchestration/remediation/postFailureRepairOffer.js +8 -8
  124. package/dist/src/orchestration/remediation/recreatePreFlight.js +1 -1
  125. package/dist/src/orchestration/remediation/recreateResource.js +1 -1
  126. package/dist/src/orchestration/remediation/remediationJournal.js +2 -2
  127. package/dist/src/orchestration/remediation/removalUpdate.js +1 -1
  128. package/dist/src/orchestration/remediation/retainFlip.js +1 -1
  129. package/dist/src/orchestration/resolveOperation.js +1 -1
  130. package/dist/src/orchestration/restart/restartApplication.js +1 -1
  131. package/dist/src/orchestration/restart/secretsDrift.js +1 -1
  132. package/dist/src/orchestration/secretArnResolver.js +1 -1
  133. package/dist/src/orchestration/serviceFactory.js +1 -1
  134. package/dist/src/orchestration/spawnHelpers.js +1 -1
  135. package/dist/src/orchestration/stackCleanup/bucketOps.js +1 -1
  136. package/dist/src/orchestration/stackCleanup/failedStack.js +1 -1
  137. package/dist/src/orchestration/stackCleanup/logging.js +1 -1
  138. package/dist/src/orchestration/stackCleanup/messages.js +1 -1
  139. package/dist/src/orchestration/stackCleanup/orphanSweep.js +1 -1
  140. package/dist/src/orchestration/stackCleanup/preEmpty.js +1 -1
  141. package/dist/src/orchestration/stackCleanup/stackResources.js +1 -1
  142. package/dist/src/orchestration/stepLifecycle.js +1 -1
  143. package/dist/src/orchestration/trailMigration/memberTrailCleanup.js +1 -1
  144. package/dist/src/orchestration/trailMigration/trailMigration.js +1 -1
  145. package/dist/src/orchestration/unlock/bucketPolicyTriage.js +1 -1
  146. package/dist/src/orchestration/unlock/restoreAndReconcileQuarantinedBucket.js +1 -1
  147. package/dist/src/orchestration/unlock/restoreBucketPolicy.js +1 -1
  148. package/dist/src/orchestration/unlock/scpRemediation.js +1 -1
  149. package/dist/src/orchestration/unlock/toResourcePolicyStatements.js +1 -1
  150. package/dist/src/orchestration/unlock/unlockBucket.js +1 -1
  151. package/dist/src/orchestration/unlock/unlockQueue.js +1 -1
  152. package/dist/src/services/application/ApplicationStackService.d.ts +7 -0
  153. package/dist/src/services/application/ApplicationStackService.js +1 -1
  154. package/dist/src/services/application/applicationStackHelpers.js +3 -3
  155. package/dist/src/services/infrastructure/CdkArgumentBuilder.js +1 -1
  156. package/dist/src/services/infrastructure/CdkCommandRunner.js +2 -2
  157. package/dist/src/services/infrastructure/CdkErrorFormatter.js +10 -10
  158. package/dist/src/services/infrastructure/CdkEventMonitoring.js +1 -1
  159. package/dist/src/services/infrastructure/CdkOutputAnalyser.js +2 -2
  160. package/dist/src/services/infrastructure/CdkOutputParser.js +2 -2
  161. package/dist/src/services/infrastructure/CdkProcessManager.js +3 -3
  162. package/dist/src/services/infrastructure/CdkService.d.ts +1 -1
  163. package/dist/src/services/infrastructure/CdkService.js +2 -2
  164. package/dist/src/services/infrastructure/CdkServiceTypes.d.ts +39 -0
  165. package/dist/src/services/infrastructure/CfnRegistryService.js +1 -1
  166. package/dist/src/services/infrastructure/CloudFormationService.js +1 -1
  167. package/dist/src/services/infrastructure/EcrImageInspectorService.js +1 -1
  168. package/dist/src/services/infrastructure/EcsService.js +1 -1
  169. package/dist/src/services/infrastructure/EcsServiceResolver.js +1 -1
  170. package/dist/src/services/infrastructure/LambdaService.js +1 -1
  171. package/dist/src/services/infrastructure/SsmParameterMetadataService.js +1 -1
  172. package/dist/src/services/infrastructure/cancelInFlightStack.js +3 -3
  173. package/dist/src/services/infrastructure/cdkServiceHelpers.js +1 -1
  174. package/dist/src/services/infrastructure/changeSetProbe.js +1 -1
  175. package/dist/src/services/infrastructure/constructMapEnrichment.js +1 -1
  176. package/dist/src/services/supporting/CdkContextBuilder.d.ts +1 -0
  177. package/dist/src/services/supporting/CdkContextBuilder.js +1 -1
  178. package/dist/src/services/supporting/TemplateHashService.js +1 -1
  179. package/dist/src/services/supporting/helpers.js +1 -1
  180. package/dist/src/steps/stepRegistry.js +1 -1
  181. package/dist/src/types/ProgressEvent.js +1 -1
  182. package/dist/src/types/application/ApplicationServiceTypes.js +1 -1
  183. package/dist/src/types/callbacks.js +1 -1
  184. package/dist/src/types/config/FjallState.js +1 -1
  185. package/dist/src/types/constants.js +1 -1
  186. package/dist/src/types/deployEmitter.js +1 -1
  187. package/dist/src/types/deployEvent.d.ts +1 -0
  188. package/dist/src/types/deployEvent.js +1 -1
  189. package/dist/src/types/deployEventParse.js +1 -1
  190. package/dist/src/types/deployment/DeploymentServiceTypes.js +1 -1
  191. package/dist/src/types/deployment/DeploymentTypes.d.ts +1 -0
  192. package/dist/src/types/deploymentEventSchema.d.ts +1 -0
  193. package/dist/src/types/deploymentEventSchema.js +1 -1
  194. package/dist/src/types/detection/patternDetection.js +1 -1
  195. package/dist/src/types/detection/patternTypes.d.ts +9 -0
  196. package/dist/src/types/drift.js +1 -1
  197. package/dist/src/types/errors/CdkError.js +1 -1
  198. package/dist/src/types/errors/ServiceError.js +1 -1
  199. package/dist/src/types/operations.d.ts +26 -2
  200. package/dist/src/types/operations.js +1 -1
  201. package/dist/src/types/params.d.ts +20 -0
  202. package/dist/src/types/remediation.js +1 -1
  203. package/dist/src/types/stepDefinitions.d.ts +3 -0
  204. package/dist/src/types/stepDefinitions.js +1 -1
  205. package/dist/src/util/dockerfileDetection.js +1 -1
  206. package/dist/src/util/sequencedCallbacks.js +1 -1
  207. package/dist/src/util/sleepAbortable.js +1 -1
  208. package/package.json +5 -4
@@ -1 +1 @@
1
- import{isOpenNextPattern as i}from"./detection/patternTypes.js";import{STEP_IDS as s}from"./stepDefinitions.js";import{toPascalCase as E}from"@fjall/util";const t={NETWORK:"Network",DATABASE:"Database",STORAGE:"Storage",COMPUTE:"Compute",CDN:"Cdn",MESSAGING:"Messaging"},C={ORGANISATION:"organisation",PLATFORM:"platform",ACCOUNT:"account"};function G(e){return e.kind==="application"}function g(e){return e.kind==="organisation"}const T=[t.NETWORK,t.DATABASE,t.COMPUTE],u=[t.COMPUTE,t.DATABASE,t.NETWORK],P=[t.NETWORK,t.STORAGE,t.MESSAGING,t.DATABASE,t.COMPUTE,t.CDN],N=[t.CDN,t.COMPUTE,t.DATABASE,t.MESSAGING,t.STORAGE,t.NETWORK],n={PHASE_1:{phase:1,stacks:[t.NETWORK],description:"Network infrastructure"},PHASE_2:{phase:2,stacks:[t.STORAGE,t.MESSAGING,t.DATABASE],description:"Storage and database resources (parallel)"},PHASE_3:{phase:3,stacks:[t.COMPUTE],description:"Compute resources"},PHASE_4:{phase:4,stacks:[t.CDN],description:"CDN distribution"}},f={NEXTJS_PARALLEL:{stacks:[t.STORAGE,t.MESSAGING,t.DATABASE],includeBuild:!0,description:"Build + Storage/Messaging/Database (parallel)"},PAYLOAD_PARALLEL:{stacks:[t.STORAGE,t.MESSAGING],includeBuild:!0,description:"Build + Storage/Messaging (parallel)"}};function I(){return[n.PHASE_1,n.PHASE_2,n.PHASE_3,n.PHASE_4]}const a={PHASE_1:{phase:1,stacks:[t.CDN],description:"CDN distribution"},PHASE_2:{phase:2,stacks:[t.COMPUTE],description:"Compute resources"},PHASE_3:{phase:3,stacks:[t.DATABASE,t.MESSAGING,t.STORAGE],description:"Database, messaging, and storage (parallel)"},PHASE_4:{phase:4,stacks:[t.NETWORK],description:"Network infrastructure"}};function L(){return[a.PHASE_1,a.PHASE_2,a.PHASE_3,a.PHASE_4]}const S={Network:1,Storage:2,Messaging:2,Database:2,Compute:3,Cdn:4};function M(e){const{pattern:o,resources:r}=e??{};return i(o)?P:r?p(r,"asc"):T}function h(e){const{pattern:o,resources:r}=e??{};return i(o)?N:r?p(r,"desc"):u}function p(e,o){const r=[];return e.hasNetwork&&r.push(t.NETWORK),e.hasStorage&&r.push(t.STORAGE),e.hasMessaging&&r.push(t.MESSAGING),e.hasDatabase&&r.push(t.DATABASE),e.hasCompute&&r.push(t.COMPUTE),e.hasCdn&&r.push(t.CDN),r.sort((c,O)=>{const A=S[c]-S[O];return o==="asc"?A:-A})}function x(e,o){return`${E(e)}${o}`}function k(e){switch(e){case"organisation":return"Organisation";case"platform":return"Platform";case"account":return"Account";default:{const o=e;throw new Error(`Unsupported organisation type: ${String(o)}`)}}}const D=new Set(Object.values(t));function m(e){return D.has(e)}function y(e,o){return`${o==="deploy"?"Deploying":"Destroying"} ${e.toLowerCase()} infrastructure`}const R={[t.NETWORK]:{deploy:s.NETWORK,destroy:s.NETWORK_DESTROY},[t.DATABASE]:{deploy:s.DATABASE,destroy:s.DATABASE_DESTROY},[t.STORAGE]:{deploy:s.STORAGE,destroy:s.STORAGE_DESTROY},[t.COMPUTE]:{deploy:s.COMPUTE,destroy:s.COMPUTE_DESTROY},[t.CDN]:{deploy:s.CDN,destroy:s.CDN_DESTROY},[t.MESSAGING]:{deploy:s.MESSAGING,destroy:s.MESSAGING_DESTROY}};function U(e,o){return R[e][o]}export{T as APPLICATION_DEPLOY_ORDER,u as APPLICATION_DESTROY_ORDER,t as APPLICATION_STACKS,P as OPENNEXT_DEPLOY_ORDER,N as OPENNEXT_DESTROY_ORDER,f as OPENNEXT_PARALLEL_GROUPS,C as ORGANISATION_TYPES,n as PARALLEL_DEPLOY_GROUPS,a as PARALLEL_DESTROY_GROUPS,M as getApplicationDeployOrder,h as getApplicationDestroyOrder,x as getApplicationStackName,U as getApplicationStepId,y as getApplicationStepName,k as getOrganisationStackName,I as getParallelDeployGroups,L as getParallelDestroyGroups,G as isApplicationOperation,m as isApplicationStack,g as isOrganisationOperation,E as toPascalCase};
1
+ var _=Object.defineProperty;var a=(e,s)=>_(e,"name",{value:s,configurable:!0});import{isOpenNextPattern as c}from"./detection/patternTypes.js";import{STEP_IDS as o}from"./stepDefinitions.js";import{toPascalCase as p}from"@fjall/util";const t={NETWORK:"Network",DATABASE:"Database",STORAGE:"Storage",COMPUTE:"Compute",US_EAST_1_CERTIFICATES:"UsEast1Certificates",CDN:"Cdn",MESSAGING:"Messaging"},U={ORGANISATION:"organisation",PLATFORM:"platform",ACCOUNT:"account"};function h(e){return e.kind==="application"}a(h,"isApplicationOperation");function L(e){return e.kind==="organisation"}a(L,"isOrganisationOperation");const C=[t.NETWORK,t.DATABASE,t.COMPUTE],P=[t.COMPUTE,t.DATABASE,t.NETWORK],N=[t.NETWORK,t.STORAGE,t.MESSAGING,t.DATABASE,t.COMPUTE,t.CDN],R=[t.CDN,t.COMPUTE,t.DATABASE,t.MESSAGING,t.STORAGE,t.NETWORK],E={PHASE_1:{phase:1,stacks:[t.NETWORK],description:"Network infrastructure"},PHASE_2:{phase:2,stacks:[t.STORAGE,t.MESSAGING,t.DATABASE],description:"Storage and database resources (parallel)"},PHASE_3:{phase:3,stacks:[t.COMPUTE],description:"Compute resources"},PHASE_4:{phase:4,stacks:[t.CDN],description:"CDN distribution"}},M={NEXTJS_PARALLEL:{stacks:[t.STORAGE,t.MESSAGING,t.DATABASE],includeBuild:!0,description:"Build + Storage/Messaging/Database (parallel)"},PAYLOAD_PARALLEL:{stacks:[t.STORAGE,t.MESSAGING],includeBuild:!0,description:"Build + Storage/Messaging (parallel)"}};function x(){return[E.PHASE_1,E.PHASE_2,E.PHASE_3,E.PHASE_4]}a(x,"getParallelDeployGroups");const A={PHASE_1:{phase:1,stacks:[t.CDN],description:"CDN distribution"},PHASE_2:{phase:2,stacks:[t.COMPUTE],description:"Compute resources"},PHASE_3:{phase:3,stacks:[t.DATABASE,t.MESSAGING,t.STORAGE],description:"Database, messaging, and storage (parallel)"},PHASE_4:{phase:4,stacks:[t.NETWORK],description:"Network infrastructure"}};function k(e){const s=[A.PHASE_1,A.PHASE_2,A.PHASE_3,A.PHASE_4];return e?.hasUsEast1Certificates===!0&&s.splice(1,0,{phase:1.5,stacks:[t.US_EAST_1_CERTIFICATES],description:"us-east-1 certificates"}),s}a(k,"getParallelDestroyGroups");const T={Network:1,Storage:2,Messaging:2,Database:2,Compute:3,UsEast1Certificates:4,Cdn:5};function y(e){const{pattern:s,resources:r}=e??{};return c(s)?u(N,r,"deploy"):r?O(r,"asc"):C}a(y,"getApplicationDeployOrder");function m(e){const{pattern:s,resources:r}=e??{};return c(s)?u(R,r,"destroy"):r?O(r,"desc"):P}a(m,"getApplicationDestroyOrder");function u(e,s,r){if(s?.hasUsEast1Certificates!==!0)return e;const n=e.indexOf(t.CDN);if(n===-1)return[...e,t.US_EAST_1_CERTIFICATES];const i=r==="deploy"?n:n+1;return[...e.slice(0,i),t.US_EAST_1_CERTIFICATES,...e.slice(i)]}a(u,"withUsEast1Certificates");function O(e,s){const r=[];return e.hasNetwork&&r.push(t.NETWORK),e.hasStorage&&r.push(t.STORAGE),e.hasMessaging&&r.push(t.MESSAGING),e.hasDatabase&&r.push(t.DATABASE),e.hasCompute&&r.push(t.COMPUTE),e.hasUsEast1Certificates===!0&&r.push(t.US_EAST_1_CERTIFICATES),e.hasCdn&&r.push(t.CDN),r.sort((n,i)=>{const S=T[n]-T[i];return s==="asc"?S:-S})}a(O,"buildOrderFromResources");function B(e,s){return`${p(e)}${s}`}a(B,"getApplicationStackName");function H(e){switch(e){case"organisation":return"Organisation";case"platform":return"Platform";case"account":return"Account";default:{const s=e;throw new Error(`Unsupported organisation type: ${String(s)}`)}}}a(H,"getOrganisationStackName");const D=new Set(Object.values(t));function Y(e){return D.has(e)}a(Y,"isApplicationStack");const d={Network:"network",Database:"database",Storage:"storage",Compute:"compute",UsEast1Certificates:"us-east-1 certificate",Cdn:"cdn",Messaging:"messaging"};function b(e,s){return`${s==="deploy"?"Deploying":"Destroying"} ${d[e]} infrastructure`}a(b,"getApplicationStepName");const l={[t.NETWORK]:{deploy:o.NETWORK,destroy:o.NETWORK_DESTROY},[t.DATABASE]:{deploy:o.DATABASE,destroy:o.DATABASE_DESTROY},[t.STORAGE]:{deploy:o.STORAGE,destroy:o.STORAGE_DESTROY},[t.COMPUTE]:{deploy:o.COMPUTE,destroy:o.COMPUTE_DESTROY},[t.US_EAST_1_CERTIFICATES]:{deploy:o.US_EAST_1_CERTIFICATES,destroy:o.US_EAST_1_CERTIFICATES_DESTROY},[t.CDN]:{deploy:o.CDN,destroy:o.CDN_DESTROY},[t.MESSAGING]:{deploy:o.MESSAGING,destroy:o.MESSAGING_DESTROY}};function K(e,s){return l[e][s]}a(K,"getApplicationStepId");export{C as APPLICATION_DEPLOY_ORDER,P as APPLICATION_DESTROY_ORDER,t as APPLICATION_STACKS,N as OPENNEXT_DEPLOY_ORDER,R as OPENNEXT_DESTROY_ORDER,M as OPENNEXT_PARALLEL_GROUPS,U as ORGANISATION_TYPES,E as PARALLEL_DEPLOY_GROUPS,A as PARALLEL_DESTROY_GROUPS,y as getApplicationDeployOrder,m as getApplicationDestroyOrder,B as getApplicationStackName,K as getApplicationStepId,b as getApplicationStepName,H as getOrganisationStackName,x as getParallelDeployGroups,k as getParallelDestroyGroups,h as isApplicationOperation,Y as isApplicationStack,L as isOrganisationOperation,p as toPascalCase};
@@ -98,6 +98,18 @@ export interface DeployParams {
98
98
  * carrying the exact config lines.
99
99
  */
100
100
  infrastructureSource?: InfrastructureSource;
101
+ /**
102
+ * Deploy-time-resolved managed-domain bindings (D2 — resolution by
103
+ * injection), keyed by zone name with each value the JSON-serialised
104
+ * `ManagedDomainBinding` (literal hostedZoneId/certificate ARNs resolved
105
+ * from the domain stack's outputs via DescribeStacks). Threaded into synth
106
+ * as one `-c fjall:managedDomain:<zone>=<json>` context arg per entry
107
+ * (CdkArgumentBuilder); constructs read it ahead of BYO zone props, with
108
+ * explicit `managedDomain` props still winning. The CLI resolves these via
109
+ * `DomainService.resolveDomainForApp`; surfaces without a `fjall/domains/`
110
+ * checkout omit the field and constructs fall back to explicit props.
111
+ */
112
+ managedDomainBindings?: Record<string, string>;
101
113
  /**
102
114
  * Asked before the post-deploy database-endpoint reconcile restarts the
103
115
  * application's ECS services (fires only when a deploy replaced the
@@ -168,6 +180,14 @@ export interface DeployOptions {
168
180
  environment?: string;
169
181
  /** Skip OIDC connector deployment in the Account stack — set when the OIDC connector was already provisioned separately (e.g. via the webapp CloudFormation quick-create flow). */
170
182
  skipOidc?: boolean;
183
+ /**
184
+ * Pre-answer for the delegated-domain CAA preflight (fail-closed ADR): the
185
+ * operator has verified the CAA chain out of band, so `deployDelegatedDomain`
186
+ * skips the check — loudly, with a warning naming the skip. This is the
187
+ * flag the preflight's cure text names (`--skip-caa-preflight`); threaded
188
+ * through the cascade's domains phase (`deployDomains`).
189
+ */
190
+ skipCaaPreflight?: boolean;
171
191
  /** Restrict a code-only deploy to a single ECS service by name (case-insensitive). */
172
192
  serviceName?: string;
173
193
  /** Skip the pre-rollout migrations RunTask. Honoured by the code-only orchestrator. */
@@ -1 +1 @@
1
- import{z as e}from"zod";const t=["captured","flip-verified","flip-applied","removal-applied","done"],o=e.enum(t);function m(i){return t.indexOf(i)}const r=e.object({logicalId:e.string().min(1),resourceType:e.string().min(1),physicalId:e.string().min(1)}).strict();function a(i,n){return`${i}/${n}`}function p(i,n){return i.physicalId===a(n,i.logicalId)}const s=e.object({diffGuardPassed:e.boolean(),changeSetMetadataOnly:e.boolean(),noChanges:e.boolean(),provenAt:e.string().min(1)}).strict(),l=e.enum(["forget","recreate"]),d=e.object({version:e.literal(1),opId:e.string().min(1),verb:l,accountId:e.string().min(1),region:e.string().min(1),stackName:e.string().min(1),appName:e.string().min(1).optional(),targets:e.array(r).min(1),phase:o,createdAt:e.string().min(1),updatedAt:e.string().min(1),liveTemplateDigest:e.string().min(1).optional(),forensicsPath:e.string().min(1).optional(),proof:s.optional(),consentedPhysicalNames:e.array(e.string()).optional(),retainedByRedeclaration:e.array(e.string().min(1)).optional(),fliplessTargets:e.array(e.string().min(1)).optional(),fliplessByNecessity:e.array(e.string().min(1)).optional(),recreatedResources:e.array(e.string().min(1)).optional(),snapshotPolicies:e.record(e.string().min(1),e.enum(["Snapshot","Delete"])).optional(),coRemovedLogicalIds:e.array(e.string().min(1)).optional(),orphanedResources:e.array(e.string().min(1)).optional(),unverifiedRemovals:e.array(e.string().min(1)).optional(),completedAt:e.string().min(1).optional()}).strict();export{t as REMEDIATION_PHASES,s as RemediationFlipProofSchema,d as RemediationJournalRecordSchema,o as RemediationPhaseSchema,r as RemediationTargetSchema,l as RemediationVerbWithSurgerySchema,p as isRemediationPlaceholderPhysicalId,m as remediationPhaseRank,a as remediationPlaceholderPhysicalId};
1
+ var r=Object.defineProperty;var t=(i,n)=>r(i,"name",{value:n,configurable:!0});import{z as e}from"zod";const o=["captured","flip-verified","flip-applied","removal-applied","done"],a=e.enum(o);function g(i){return o.indexOf(i)}t(g,"remediationPhaseRank");const s=e.object({logicalId:e.string().min(1),resourceType:e.string().min(1),physicalId:e.string().min(1)}).strict();function l(i,n){return`${i}/${n}`}t(l,"remediationPlaceholderPhysicalId");function h(i,n){return i.physicalId===l(n,i.logicalId)}t(h,"isRemediationPlaceholderPhysicalId");const c=e.object({diffGuardPassed:e.boolean(),changeSetMetadataOnly:e.boolean(),noChanges:e.boolean(),provenAt:e.string().min(1)}).strict(),m=e.enum(["forget","recreate"]),y=e.object({version:e.literal(1),opId:e.string().min(1),verb:m,accountId:e.string().min(1),region:e.string().min(1),stackName:e.string().min(1),appName:e.string().min(1).optional(),targets:e.array(s).min(1),phase:a,createdAt:e.string().min(1),updatedAt:e.string().min(1),liveTemplateDigest:e.string().min(1).optional(),forensicsPath:e.string().min(1).optional(),proof:c.optional(),consentedPhysicalNames:e.array(e.string()).optional(),retainedByRedeclaration:e.array(e.string().min(1)).optional(),fliplessTargets:e.array(e.string().min(1)).optional(),fliplessByNecessity:e.array(e.string().min(1)).optional(),recreatedResources:e.array(e.string().min(1)).optional(),snapshotPolicies:e.record(e.string().min(1),e.enum(["Snapshot","Delete"])).optional(),coRemovedLogicalIds:e.array(e.string().min(1)).optional(),orphanedResources:e.array(e.string().min(1)).optional(),unverifiedRemovals:e.array(e.string().min(1)).optional(),completedAt:e.string().min(1).optional()}).strict();export{o as REMEDIATION_PHASES,c as RemediationFlipProofSchema,y as RemediationJournalRecordSchema,a as RemediationPhaseSchema,s as RemediationTargetSchema,m as RemediationVerbWithSurgerySchema,h as isRemediationPlaceholderPhysicalId,g as remediationPhaseRank,l as remediationPlaceholderPhysicalId};
@@ -55,12 +55,14 @@ export declare const STEP_IDS: {
55
55
  readonly MESSAGING: "messaging";
56
56
  readonly DATABASE: "database";
57
57
  readonly COMPUTE: "compute";
58
+ readonly US_EAST_1_CERTIFICATES: "us-east-1-certificates";
58
59
  readonly CDN: "cdn";
59
60
  readonly NETWORK_DESTROY: "network-destroy";
60
61
  readonly STORAGE_DESTROY: "storage-destroy";
61
62
  readonly MESSAGING_DESTROY: "messaging-destroy";
62
63
  readonly DATABASE_DESTROY: "database-destroy";
63
64
  readonly COMPUTE_DESTROY: "compute-destroy";
65
+ readonly US_EAST_1_CERTIFICATES_DESTROY: "us-east-1-certificates-destroy";
64
66
  readonly CDN_DESTROY: "cdn-destroy";
65
67
  };
66
68
  export type StepId = (typeof STEP_IDS)[keyof typeof STEP_IDS];
@@ -117,6 +119,7 @@ export interface StepDefinition {
117
119
  requiresStorage?: boolean;
118
120
  requiresMessaging?: boolean;
119
121
  requiresCdn?: boolean;
122
+ requiresUsEast1Certificates?: boolean;
120
123
  requiresMemberAccounts?: boolean;
121
124
  requiresPlatformAccount?: boolean;
122
125
  requiresOrgChanges?: boolean;
@@ -1 +1 @@
1
- const E={AUTH:"auth",DETECT_CONFIG:"detect-config",TARGET_READINESS:"target-readiness",BOOTSTRAP:"bootstrap",CFN_CHECK:"cfn-check",DIFF:"diff",DEPLOY:"deploy",DESTROY:"destroy",VERIFY:"verify",CDK_SYNTH:"cdk-synth",DOCKER_OPERATIONS:"docker-operations",ECR_INIT:"ecr-init",DOCKER_DEPLOY:"docker-deploy",TAG_ECR_IMAGES:"tag-ecr-images",ORG_SETUP:"org-setup",ORG_ENSURE:"org-ensure",ORG_POLICY_TYPES:"policy-types",ORG_SERVICE_ACCESS:"service-access",ORG_CREATE_ACCOUNTS:"create-accounts",ORG_ENSURE_OUS:"ensure-ous",ORG_PLACE_ACCOUNTS:"place-accounts",IDENTITY_CENTRE:"identity-centre",ORG_ACCOUNTS:"accounts",ORG_COST_TAGS:"cost-tags",ORG_PROFILES:"profiles",PREPARE:"prepare",PREPARE_ENVIRONMENT:"prepare-environment",PLATFORM_ACCOUNT:"platform-account",ACCOUNT_CONTEXT:"account-context",CONNECT:"connect",MONITORING:"monitoring",ORG_DEPLOY:"organisation-deploy",ORG_DESTROY:"organisation-destroy",CASCADE_PLATFORM:"cascade-platform",CASCADE_DOMAINS:"cascade-domains",CASCADE_ACCOUNTS:"cascade-accounts",NETWORK:"network",STORAGE:"storage",MESSAGING:"messaging",DATABASE:"database",COMPUTE:"compute",CDN:"cdn",NETWORK_DESTROY:"network-destroy",STORAGE_DESTROY:"storage-destroy",MESSAGING_DESTROY:"messaging-destroy",DATABASE_DESTROY:"database-destroy",COMPUTE_DESTROY:"compute-destroy",CDN_DESTROY:"cdn-destroy"},t={AUTH:"Authenticating with AWS",PREPARE_DEPLOY:"Preparing deployment",PREPARE_DESTROY:"Preparing destruction",TARGET_READINESS:"Verifying target readiness",BOOTSTRAP:"Bootstrapping AWS environment",CHECK_INFRA_STATE:"Checking infrastructure state",ORG_SETUP:"Configuring organisation",ORG_DEPLOY:"Deploying organisation",CASCADE_PLATFORM:"Deploying platform",CASCADE_ACCOUNTS:"Deploying accounts"},e=["Connect securely","Prepare environment","Deploy infrastructure","Enable monitoring"],o={CONNECT:e[0],PREPARE:e[1],DEPLOY:e[2],MONITORING:e[3]};export{e as INFRASTRUCTURE_STEP_NAMES,o as INFRA_STEP_NAME,E as STEP_IDS,t as STEP_NAMES};
1
+ const E={AUTH:"auth",DETECT_CONFIG:"detect-config",TARGET_READINESS:"target-readiness",BOOTSTRAP:"bootstrap",CFN_CHECK:"cfn-check",DIFF:"diff",DEPLOY:"deploy",DESTROY:"destroy",VERIFY:"verify",CDK_SYNTH:"cdk-synth",DOCKER_OPERATIONS:"docker-operations",ECR_INIT:"ecr-init",DOCKER_DEPLOY:"docker-deploy",TAG_ECR_IMAGES:"tag-ecr-images",ORG_SETUP:"org-setup",ORG_ENSURE:"org-ensure",ORG_POLICY_TYPES:"policy-types",ORG_SERVICE_ACCESS:"service-access",ORG_CREATE_ACCOUNTS:"create-accounts",ORG_ENSURE_OUS:"ensure-ous",ORG_PLACE_ACCOUNTS:"place-accounts",IDENTITY_CENTRE:"identity-centre",ORG_ACCOUNTS:"accounts",ORG_COST_TAGS:"cost-tags",ORG_PROFILES:"profiles",PREPARE:"prepare",PREPARE_ENVIRONMENT:"prepare-environment",PLATFORM_ACCOUNT:"platform-account",ACCOUNT_CONTEXT:"account-context",CONNECT:"connect",MONITORING:"monitoring",ORG_DEPLOY:"organisation-deploy",ORG_DESTROY:"organisation-destroy",CASCADE_PLATFORM:"cascade-platform",CASCADE_DOMAINS:"cascade-domains",CASCADE_ACCOUNTS:"cascade-accounts",NETWORK:"network",STORAGE:"storage",MESSAGING:"messaging",DATABASE:"database",COMPUTE:"compute",US_EAST_1_CERTIFICATES:"us-east-1-certificates",CDN:"cdn",NETWORK_DESTROY:"network-destroy",STORAGE_DESTROY:"storage-destroy",MESSAGING_DESTROY:"messaging-destroy",DATABASE_DESTROY:"database-destroy",COMPUTE_DESTROY:"compute-destroy",US_EAST_1_CERTIFICATES_DESTROY:"us-east-1-certificates-destroy",CDN_DESTROY:"cdn-destroy"},t={AUTH:"Authenticating with AWS",PREPARE_DEPLOY:"Preparing deployment",PREPARE_DESTROY:"Preparing destruction",TARGET_READINESS:"Verifying target readiness",BOOTSTRAP:"Bootstrapping AWS environment",CHECK_INFRA_STATE:"Checking infrastructure state",ORG_SETUP:"Configuring organisation",ORG_DEPLOY:"Deploying organisation",CASCADE_PLATFORM:"Deploying platform",CASCADE_ACCOUNTS:"Deploying accounts"},e=["Connect securely","Prepare environment","Deploy infrastructure","Enable monitoring"],o={CONNECT:e[0],PREPARE:e[1],DEPLOY:e[2],MONITORING:e[3]};export{e as INFRASTRUCTURE_STEP_NAMES,o as INFRA_STEP_NAME,E as STEP_IDS,t as STEP_NAMES};
@@ -1 +1 @@
1
- import{readdirSync as t}from"fs";import{logger as i}from"@fjall/util/logger";function s(e){try{return t(e).some(o=>o.startsWith("Dockerfile"))}catch(r){return i.debug("dockerfileDetection","Failed to check for Dockerfile",{appPath:e,error:r instanceof Error?r.message:String(r)}),!1}}export{s as hasDockerfile};
1
+ var i=Object.defineProperty;var o=(e,r)=>i(e,"name",{value:r,configurable:!0});import{readdirSync as c}from"fs";import{logger as n}from"@fjall/util/logger";function a(e){try{return c(e).some(t=>t.startsWith("Dockerfile"))}catch(r){return n.debug("dockerfileDetection","Failed to check for Dockerfile",{appPath:e,error:r instanceof Error?r.message:String(r)}),!1}}o(a,"hasDockerfile");export{a as hasDockerfile};
@@ -1 +1 @@
1
- const l=new Set(["verbose"]);function u(t){let a=0;const n=[],c={};for(const e of Object.keys(t)){if(l.has(e)){c[e]=t[e];continue}const o=t[e];typeof o=="function"&&(c[e]=(...s)=>{a+=1;const r={sequence:a,timestamp:new Date().toISOString()};return n.push({callbackName:e,args:[...s],metadata:r}),o(...s)})}return{callbacks:c,getEvents:()=>[...n],clearEvents:()=>{n.length=0}}}export{u as createSequencedCallbacks};
1
+ var p=Object.defineProperty;var c=(t,n)=>p(t,"name",{value:n,configurable:!0});const u=new Set(["verbose"]);function d(t){let n=0;const a=[],o={};for(const e of Object.keys(t)){if(u.has(e)){o[e]=t[e];continue}const s=t[e];typeof s=="function"&&(o[e]=(...r)=>{n+=1;const l={sequence:n,timestamp:new Date().toISOString()};return a.push({callbackName:e,args:[...r],metadata:l}),s(...r)})}return{callbacks:o,getEvents:c(()=>[...a],"getEvents"),clearEvents:c(()=>{a.length=0},"clearEvents")}}c(d,"createSequencedCallbacks");export{d as createSequencedCallbacks};
@@ -1 +1 @@
1
- function i(o,e){return e?.aborted===!0?Promise.resolve():new Promise(t=>{const n=setTimeout(()=>{e?.removeEventListener("abort",r),t()},o),r=()=>{clearTimeout(n),t()};e?.addEventListener("abort",r,{once:!0})})}export{i as sleepAbortable};
1
+ var u=Object.defineProperty;var r=(t,e)=>u(t,"name",{value:e,configurable:!0});function m(t,e){return e?.aborted===!0?Promise.resolve():new Promise(o=>{const i=setTimeout(()=>{e?.removeEventListener("abort",n),o()},t),n=r(()=>{clearTimeout(i),o()},"onAbort");e?.addEventListener("abort",n,{once:!0})})}r(m,"sleepAbortable");export{m as sleepAbortable};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/deploy-core",
3
- "version": "2.34.0",
3
+ "version": "3.0.0",
4
4
  "description": "Shared deployment engine for Fjall — used by CLI and webapp worker",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -80,14 +80,15 @@
80
80
  "@aws-sdk/client-organizations": "^3.1038.0",
81
81
  "@aws-sdk/client-ram": "^3.1038.0",
82
82
  "@aws-sdk/client-rds": "^3.1038.0",
83
+ "@aws-sdk/client-route-53": "^3.1038.0",
83
84
  "@aws-sdk/client-s3": "^3.1038.0",
84
85
  "@aws-sdk/client-secrets-manager": "^3.1038.0",
85
86
  "@aws-sdk/client-sqs": "^3.1067.0",
86
87
  "@aws-sdk/client-ssm": "^3.1038.0",
87
88
  "@aws-sdk/client-sso-admin": "^3.1038.0",
88
89
  "@aws-sdk/client-sts": "^3.1038.0",
89
- "@fjall/generator": "^2.34.0",
90
- "@fjall/util": "^2.34.0",
90
+ "@fjall/generator": "^3.0.0",
91
+ "@fjall/util": "^3.0.0",
91
92
  "@smithy/node-http-handler": "^4.6.1",
92
93
  "aws-cdk": "^2.1128.1",
93
94
  "tsx": "^4.21.0",
@@ -98,5 +99,5 @@
98
99
  "typescript": "^6.0.3",
99
100
  "vitest": "^4.1.5"
100
101
  },
101
- "gitHead": "8c553fca8f9737d445061ea75cf6c6c7db0d24c9"
102
+ "gitHead": "848a386e3e2244401b76faabd02818c682d231e8"
102
103
  }