@ankhorage/deploy 0.2.0 → 0.4.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 (268) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -2
  3. package/dist/domain/DeploymentAuthenticationState.d.ts +8 -0
  4. package/dist/domain/DeploymentAuthenticationState.d.ts.map +1 -0
  5. package/dist/domain/DeploymentAuthenticationState.js +2 -0
  6. package/dist/domain/DeploymentAuthenticationState.js.map +1 -0
  7. package/dist/domain/DeploymentCredentialReference.d.ts +6 -0
  8. package/dist/domain/DeploymentCredentialReference.d.ts.map +1 -0
  9. package/dist/domain/DeploymentCredentialReference.js +2 -0
  10. package/dist/domain/DeploymentCredentialReference.js.map +1 -0
  11. package/dist/domain/DeploymentCurrentState.d.ts +6 -3
  12. package/dist/domain/DeploymentCurrentState.d.ts.map +1 -1
  13. package/dist/domain/DeploymentCurrentState.js.map +1 -1
  14. package/dist/domain/DeploymentDesiredRevisions.d.ts +3 -0
  15. package/dist/domain/DeploymentDesiredRevisions.d.ts.map +1 -0
  16. package/dist/domain/DeploymentDesiredRevisions.js +2 -0
  17. package/dist/domain/DeploymentDesiredRevisions.js.map +1 -0
  18. package/dist/domain/DeploymentProviderCapabilityState.d.ts +7 -0
  19. package/dist/domain/DeploymentProviderCapabilityState.d.ts.map +1 -0
  20. package/dist/domain/DeploymentProviderCapabilityState.js +2 -0
  21. package/dist/domain/DeploymentProviderCapabilityState.js.map +1 -0
  22. package/dist/domain/DeploymentProviderSetupAdapter.d.ts +7 -0
  23. package/dist/domain/DeploymentProviderSetupAdapter.d.ts.map +1 -0
  24. package/dist/domain/DeploymentProviderSetupAdapter.js +2 -0
  25. package/dist/domain/DeploymentProviderSetupAdapter.js.map +1 -0
  26. package/dist/domain/DeploymentProviderSetupContext.d.ts +9 -0
  27. package/dist/domain/DeploymentProviderSetupContext.d.ts.map +1 -0
  28. package/dist/domain/DeploymentProviderSetupContext.js +2 -0
  29. package/dist/domain/DeploymentProviderSetupContext.js.map +1 -0
  30. package/dist/domain/DeploymentProviderSetupInspection.d.ts +10 -0
  31. package/dist/domain/DeploymentProviderSetupInspection.d.ts.map +1 -0
  32. package/dist/domain/DeploymentProviderSetupInspection.js +2 -0
  33. package/dist/domain/DeploymentProviderSetupInspection.js.map +1 -0
  34. package/dist/domain/DeploymentProviderSetupInspectionResult.d.ts +10 -0
  35. package/dist/domain/DeploymentProviderSetupInspectionResult.d.ts.map +1 -0
  36. package/dist/domain/DeploymentProviderSetupInspectionResult.js +2 -0
  37. package/dist/domain/DeploymentProviderSetupInspectionResult.js.map +1 -0
  38. package/dist/domain/DeploymentProvisioningRequirement.d.ts +18 -0
  39. package/dist/domain/DeploymentProvisioningRequirement.d.ts.map +1 -0
  40. package/dist/domain/DeploymentProvisioningRequirement.js +2 -0
  41. package/dist/domain/DeploymentProvisioningRequirement.js.map +1 -0
  42. package/dist/domain/DeploymentSecretResolver.d.ts +4 -0
  43. package/dist/domain/DeploymentSecretResolver.d.ts.map +1 -0
  44. package/dist/domain/DeploymentSecretResolver.js +2 -0
  45. package/dist/domain/DeploymentSecretResolver.js.map +1 -0
  46. package/dist/domain/DeploymentTargetChange.d.ts +1 -1
  47. package/dist/domain/DeploymentTargetChange.d.ts.map +1 -1
  48. package/dist/domain/DeploymentTargetChange.js +1 -0
  49. package/dist/domain/DeploymentTargetChange.js.map +1 -1
  50. package/dist/domain/WebDeploymentPublication.d.ts +9 -0
  51. package/dist/domain/WebDeploymentPublication.d.ts.map +1 -0
  52. package/dist/domain/WebDeploymentPublication.js +2 -0
  53. package/dist/domain/WebDeploymentPublication.js.map +1 -0
  54. package/dist/domain/WebDeploymentPublishIntent.d.ts +6 -0
  55. package/dist/domain/WebDeploymentPublishIntent.d.ts.map +1 -0
  56. package/dist/domain/WebDeploymentPublishIntent.js +2 -0
  57. package/dist/domain/WebDeploymentPublishIntent.js.map +1 -0
  58. package/dist/engine/createDeploymentChanges.d.ts +2 -0
  59. package/dist/engine/createDeploymentChanges.d.ts.map +1 -1
  60. package/dist/engine/createDeploymentChanges.js +22 -7
  61. package/dist/engine/createDeploymentChanges.js.map +1 -1
  62. package/dist/engine/createDeploymentPlan.d.ts +2 -0
  63. package/dist/engine/createDeploymentPlan.d.ts.map +1 -1
  64. package/dist/engine/createDeploymentPlan.js.map +1 -1
  65. package/dist/engine/inspectDeploymentProviderSetup.d.ts +8 -0
  66. package/dist/engine/inspectDeploymentProviderSetup.d.ts.map +1 -0
  67. package/dist/engine/inspectDeploymentProviderSetup.js +21 -0
  68. package/dist/engine/inspectDeploymentProviderSetup.js.map +1 -0
  69. package/dist/engine/providerSetup/containsTrackedSecret.d.ts +2 -0
  70. package/dist/engine/providerSetup/containsTrackedSecret.d.ts.map +1 -0
  71. package/dist/engine/providerSetup/containsTrackedSecret.js +12 -0
  72. package/dist/engine/providerSetup/containsTrackedSecret.js.map +1 -0
  73. package/dist/engine/providerSetup/createProviderSetupContext.d.ts +4 -0
  74. package/dist/engine/providerSetup/createProviderSetupContext.d.ts.map +1 -0
  75. package/dist/engine/providerSetup/createProviderSetupContext.js +4 -0
  76. package/dist/engine/providerSetup/createProviderSetupContext.js.map +1 -0
  77. package/dist/engine/providerSetup/createProviderSetupFailure.d.ts +4 -0
  78. package/dist/engine/providerSetup/createProviderSetupFailure.d.ts.map +1 -0
  79. package/dist/engine/providerSetup/createProviderSetupFailure.js +10 -0
  80. package/dist/engine/providerSetup/createProviderSetupFailure.js.map +1 -0
  81. package/dist/engine/providerSetup/createTrackedSecretResolver.d.ts +7 -0
  82. package/dist/engine/providerSetup/createTrackedSecretResolver.d.ts.map +1 -0
  83. package/dist/engine/providerSetup/createTrackedSecretResolver.js +13 -0
  84. package/dist/engine/providerSetup/createTrackedSecretResolver.js.map +1 -0
  85. package/dist/engine/providerSetup/isAppDeployTargetId.d.ts +3 -0
  86. package/dist/engine/providerSetup/isAppDeployTargetId.d.ts.map +1 -0
  87. package/dist/engine/providerSetup/isAppDeployTargetId.js +5 -0
  88. package/dist/engine/providerSetup/isAppDeployTargetId.js.map +1 -0
  89. package/dist/engine/providerSetup/isNonEmptyString.d.ts +2 -0
  90. package/dist/engine/providerSetup/isNonEmptyString.d.ts.map +1 -0
  91. package/dist/engine/providerSetup/isNonEmptyString.js +4 -0
  92. package/dist/engine/providerSetup/isNonEmptyString.js.map +1 -0
  93. package/dist/engine/providerSetup/isRecord.d.ts +2 -0
  94. package/dist/engine/providerSetup/isRecord.d.ts.map +1 -0
  95. package/dist/engine/providerSetup/isRecord.js +4 -0
  96. package/dist/engine/providerSetup/isRecord.js.map +1 -0
  97. package/dist/engine/providerSetup/normalizeAuthenticationAction.d.ts +3 -0
  98. package/dist/engine/providerSetup/normalizeAuthenticationAction.d.ts.map +1 -0
  99. package/dist/engine/providerSetup/normalizeAuthenticationAction.js +21 -0
  100. package/dist/engine/providerSetup/normalizeAuthenticationAction.js.map +1 -0
  101. package/dist/engine/providerSetup/normalizeAuthenticationState.d.ts +3 -0
  102. package/dist/engine/providerSetup/normalizeAuthenticationState.d.ts.map +1 -0
  103. package/dist/engine/providerSetup/normalizeAuthenticationState.js +13 -0
  104. package/dist/engine/providerSetup/normalizeAuthenticationState.js.map +1 -0
  105. package/dist/engine/providerSetup/normalizeAutomatedProvisioningRequirement.d.ts +3 -0
  106. package/dist/engine/providerSetup/normalizeAutomatedProvisioningRequirement.d.ts.map +1 -0
  107. package/dist/engine/providerSetup/normalizeAutomatedProvisioningRequirement.js +23 -0
  108. package/dist/engine/providerSetup/normalizeAutomatedProvisioningRequirement.js.map +1 -0
  109. package/dist/engine/providerSetup/normalizeCredentialReferences.d.ts +3 -0
  110. package/dist/engine/providerSetup/normalizeCredentialReferences.d.ts.map +1 -0
  111. package/dist/engine/providerSetup/normalizeCredentialReferences.js +18 -0
  112. package/dist/engine/providerSetup/normalizeCredentialReferences.js.map +1 -0
  113. package/dist/engine/providerSetup/normalizeManualAction.d.ts +3 -0
  114. package/dist/engine/providerSetup/normalizeManualAction.d.ts.map +1 -0
  115. package/dist/engine/providerSetup/normalizeManualAction.js +23 -0
  116. package/dist/engine/providerSetup/normalizeManualAction.js.map +1 -0
  117. package/dist/engine/providerSetup/normalizeProviderCapabilityStates.d.ts +3 -0
  118. package/dist/engine/providerSetup/normalizeProviderCapabilityStates.d.ts.map +1 -0
  119. package/dist/engine/providerSetup/normalizeProviderCapabilityStates.js +31 -0
  120. package/dist/engine/providerSetup/normalizeProviderCapabilityStates.js.map +1 -0
  121. package/dist/engine/providerSetup/normalizeProviderSetupInspection.d.ts +10 -0
  122. package/dist/engine/providerSetup/normalizeProviderSetupInspection.d.ts.map +1 -0
  123. package/dist/engine/providerSetup/normalizeProviderSetupInspection.js +25 -0
  124. package/dist/engine/providerSetup/normalizeProviderSetupInspection.js.map +1 -0
  125. package/dist/engine/providerSetup/normalizeProvisioningRequirements.d.ts +3 -0
  126. package/dist/engine/providerSetup/normalizeProvisioningRequirements.d.ts.map +1 -0
  127. package/dist/engine/providerSetup/normalizeProvisioningRequirements.js +31 -0
  128. package/dist/engine/providerSetup/normalizeProvisioningRequirements.js.map +1 -0
  129. package/dist/engine/providerSetup/prepareProviderSetupInspection.d.ts +16 -0
  130. package/dist/engine/providerSetup/prepareProviderSetupInspection.d.ts.map +1 -0
  131. package/dist/engine/providerSetup/prepareProviderSetupInspection.js +32 -0
  132. package/dist/engine/providerSetup/prepareProviderSetupInspection.js.map +1 -0
  133. package/dist/engine/targetSnapshot.d.ts +2 -2
  134. package/dist/engine/targetSnapshot.d.ts.map +1 -1
  135. package/dist/engine/targetSnapshot.js +14 -9
  136. package/dist/engine/targetSnapshot.js.map +1 -1
  137. package/dist/index.d.ts +13 -0
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +13 -0
  140. package/dist/index.js.map +1 -1
  141. package/dist/project/history/validation/observedTarget.d.ts.map +1 -1
  142. package/dist/project/history/validation/observedTarget.js +13 -6
  143. package/dist/project/history/validation/observedTarget.js.map +1 -1
  144. package/dist/project/index.d.ts +6 -0
  145. package/dist/project/index.d.ts.map +1 -1
  146. package/dist/project/index.js +3 -0
  147. package/dist/project/index.js.map +1 -1
  148. package/dist/project/web/ProjectWebDeploymentAccess.d.ts +7 -0
  149. package/dist/project/web/ProjectWebDeploymentAccess.d.ts.map +1 -0
  150. package/dist/project/web/ProjectWebDeploymentAccess.js +2 -0
  151. package/dist/project/web/ProjectWebDeploymentAccess.js.map +1 -0
  152. package/dist/project/web/ProjectWebDeploymentExecution.d.ts +12 -0
  153. package/dist/project/web/ProjectWebDeploymentExecution.d.ts.map +1 -0
  154. package/dist/project/web/ProjectWebDeploymentExecution.js +2 -0
  155. package/dist/project/web/ProjectWebDeploymentExecution.js.map +1 -0
  156. package/dist/project/web/ProjectWebDeploymentInspection.d.ts +19 -0
  157. package/dist/project/web/ProjectWebDeploymentInspection.d.ts.map +1 -0
  158. package/dist/project/web/ProjectWebDeploymentInspection.js +2 -0
  159. package/dist/project/web/ProjectWebDeploymentInspection.js.map +1 -0
  160. package/dist/project/web/ProjectWebDeploymentRuntime.d.ts +9 -0
  161. package/dist/project/web/ProjectWebDeploymentRuntime.d.ts.map +1 -0
  162. package/dist/project/web/ProjectWebDeploymentRuntime.js +8 -0
  163. package/dist/project/web/ProjectWebDeploymentRuntime.js.map +1 -0
  164. package/dist/project/web/ProjectWebExecutionState.d.ts +9 -0
  165. package/dist/project/web/ProjectWebExecutionState.d.ts.map +1 -0
  166. package/dist/project/web/ProjectWebExecutionState.js +2 -0
  167. package/dist/project/web/ProjectWebExecutionState.js.map +1 -0
  168. package/dist/project/web/areDeploymentPlansEqual.d.ts +3 -0
  169. package/dist/project/web/areDeploymentPlansEqual.d.ts.map +1 -0
  170. package/dist/project/web/areDeploymentPlansEqual.js +4 -0
  171. package/dist/project/web/areDeploymentPlansEqual.js.map +1 -0
  172. package/dist/project/web/createProjectWebDeploymentPlan.d.ts +4 -0
  173. package/dist/project/web/createProjectWebDeploymentPlan.d.ts.map +1 -0
  174. package/dist/project/web/createProjectWebDeploymentPlan.js +13 -0
  175. package/dist/project/web/createProjectWebDeploymentPlan.js.map +1 -0
  176. package/dist/project/web/executeProjectWebDeployment.d.ts +14 -0
  177. package/dist/project/web/executeProjectWebDeployment.d.ts.map +1 -0
  178. package/dist/project/web/executeProjectWebDeployment.js +118 -0
  179. package/dist/project/web/executeProjectWebDeployment.js.map +1 -0
  180. package/dist/project/web/executeProjectWebStep.d.ts +16 -0
  181. package/dist/project/web/executeProjectWebStep.d.ts.map +1 -0
  182. package/dist/project/web/executeProjectWebStep.js +80 -0
  183. package/dist/project/web/executeProjectWebStep.js.map +1 -0
  184. package/dist/project/web/inspectProjectWebDeployment.d.ts +9 -0
  185. package/dist/project/web/inspectProjectWebDeployment.d.ts.map +1 -0
  186. package/dist/project/web/inspectProjectWebDeployment.js +56 -0
  187. package/dist/project/web/inspectProjectWebDeployment.js.map +1 -0
  188. package/dist/project/web/inspectProjectWebSetup.d.ts +5 -0
  189. package/dist/project/web/inspectProjectWebSetup.d.ts.map +1 -0
  190. package/dist/project/web/inspectProjectWebSetup.js +9 -0
  191. package/dist/project/web/inspectProjectWebSetup.js.map +1 -0
  192. package/dist/project/web/normalizeProjectWebDesired.d.ts +12 -0
  193. package/dist/project/web/normalizeProjectWebDesired.d.ts.map +1 -0
  194. package/dist/project/web/normalizeProjectWebDesired.js +20 -0
  195. package/dist/project/web/normalizeProjectWebDesired.js.map +1 -0
  196. package/dist/project/web/readCurrentProjectWebDeployment.d.ts +3 -0
  197. package/dist/project/web/readCurrentProjectWebDeployment.d.ts.map +1 -0
  198. package/dist/project/web/readCurrentProjectWebDeployment.js +24 -0
  199. package/dist/project/web/readCurrentProjectWebDeployment.js.map +1 -0
  200. package/dist/project/web/recordProjectWebDeployment.d.ts +19 -0
  201. package/dist/project/web/recordProjectWebDeployment.d.ts.map +1 -0
  202. package/dist/project/web/recordProjectWebDeployment.js +36 -0
  203. package/dist/project/web/recordProjectWebDeployment.js.map +1 -0
  204. package/dist/project/web/resolveProjectWebDeploymentAccess.d.ts +9 -0
  205. package/dist/project/web/resolveProjectWebDeploymentAccess.d.ts.map +1 -0
  206. package/dist/project/web/resolveProjectWebDeploymentAccess.js +7 -0
  207. package/dist/project/web/resolveProjectWebDeploymentAccess.js.map +1 -0
  208. package/dist/project/web/setupBlockingOutcome.d.ts +4 -0
  209. package/dist/project/web/setupBlockingOutcome.d.ts.map +1 -0
  210. package/dist/project/web/setupBlockingOutcome.js +34 -0
  211. package/dist/project/web/setupBlockingOutcome.js.map +1 -0
  212. package/dist/providers/eas/createEasHostingSetupAdapter.d.ts +7 -0
  213. package/dist/providers/eas/createEasHostingSetupAdapter.d.ts.map +1 -0
  214. package/dist/providers/eas/createEasHostingSetupAdapter.js +76 -0
  215. package/dist/providers/eas/createEasHostingSetupAdapter.js.map +1 -0
  216. package/dist/providers/eas/parseEasWebPublication.d.ts +3 -0
  217. package/dist/providers/eas/parseEasWebPublication.d.ts.map +1 -0
  218. package/dist/providers/eas/parseEasWebPublication.js +31 -0
  219. package/dist/providers/eas/parseEasWebPublication.js.map +1 -0
  220. package/dist/providers/eas/publishWebToEas.d.ts +27 -0
  221. package/dist/providers/eas/publishWebToEas.d.ts.map +1 -0
  222. package/dist/providers/eas/publishWebToEas.js +52 -0
  223. package/dist/providers/eas/publishWebToEas.js.map +1 -0
  224. package/dist/providers/eas/resolveEasProcessEnvironment.d.ts +15 -0
  225. package/dist/providers/eas/resolveEasProcessEnvironment.d.ts.map +1 -0
  226. package/dist/providers/eas/resolveEasProcessEnvironment.js +26 -0
  227. package/dist/providers/eas/resolveEasProcessEnvironment.js.map +1 -0
  228. package/dist/runtime/http/DeploymentHttpProbe.d.ts +6 -0
  229. package/dist/runtime/http/DeploymentHttpProbe.d.ts.map +1 -0
  230. package/dist/runtime/http/DeploymentHttpProbe.js +2 -0
  231. package/dist/runtime/http/DeploymentHttpProbe.js.map +1 -0
  232. package/dist/runtime/http/probeDeploymentHttp.d.ts +3 -0
  233. package/dist/runtime/http/probeDeploymentHttp.d.ts.map +1 -0
  234. package/dist/runtime/http/probeDeploymentHttp.js +5 -0
  235. package/dist/runtime/http/probeDeploymentHttp.js.map +1 -0
  236. package/dist/runtime/process/DeploymentProcessRunner.d.ts +13 -0
  237. package/dist/runtime/process/DeploymentProcessRunner.d.ts.map +1 -0
  238. package/dist/runtime/process/DeploymentProcessRunner.js +2 -0
  239. package/dist/runtime/process/DeploymentProcessRunner.js.map +1 -0
  240. package/dist/runtime/process/runDeploymentProcess.d.ts +3 -0
  241. package/dist/runtime/process/runDeploymentProcess.d.ts.map +1 -0
  242. package/dist/runtime/process/runDeploymentProcess.js +29 -0
  243. package/dist/runtime/process/runDeploymentProcess.js.map +1 -0
  244. package/dist/targets/web/PreparedWebArtifact.d.ts +5 -0
  245. package/dist/targets/web/PreparedWebArtifact.d.ts.map +1 -0
  246. package/dist/targets/web/PreparedWebArtifact.js +2 -0
  247. package/dist/targets/web/PreparedWebArtifact.js.map +1 -0
  248. package/dist/targets/web/createWebTargetPlanContributor.d.ts +3 -0
  249. package/dist/targets/web/createWebTargetPlanContributor.d.ts.map +1 -0
  250. package/dist/targets/web/createWebTargetPlanContributor.js +32 -0
  251. package/dist/targets/web/createWebTargetPlanContributor.js.map +1 -0
  252. package/dist/targets/web/hashWebExport.d.ts +2 -0
  253. package/dist/targets/web/hashWebExport.d.ts.map +1 -0
  254. package/dist/targets/web/hashWebExport.js +30 -0
  255. package/dist/targets/web/hashWebExport.js.map +1 -0
  256. package/dist/targets/web/normalizeWebProviders.d.ts +16 -0
  257. package/dist/targets/web/normalizeWebProviders.d.ts.map +1 -0
  258. package/dist/targets/web/normalizeWebProviders.js +16 -0
  259. package/dist/targets/web/normalizeWebProviders.js.map +1 -0
  260. package/dist/targets/web/prepareWebArtifact.d.ts +16 -0
  261. package/dist/targets/web/prepareWebArtifact.d.ts.map +1 -0
  262. package/dist/targets/web/prepareWebArtifact.js +46 -0
  263. package/dist/targets/web/prepareWebArtifact.js.map +1 -0
  264. package/dist/targets/web/verifyWebPublication.d.ts +5 -0
  265. package/dist/targets/web/verifyWebPublication.d.ts.map +1 -0
  266. package/dist/targets/web/verifyWebPublication.js +25 -0
  267. package/dist/targets/web/verifyWebPublication.js.map +1 -0
  268. package/package.json +1 -1
@@ -0,0 +1,118 @@
1
+ import { executeDeploymentPlan } from '../../engine/executeDeploymentPlan';
2
+ import { cleanupWebArtifact } from '../../targets/web/prepareWebArtifact';
3
+ import { areDeploymentPlansEqual } from './areDeploymentPlansEqual';
4
+ import { createProjectWebDeploymentPlan } from './createProjectWebDeploymentPlan';
5
+ import { executeProjectWebStep } from './executeProjectWebStep';
6
+ import { inspectProjectWebSetup } from './inspectProjectWebSetup';
7
+ import { projectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';
8
+ import { recordProjectWebDeployment } from './recordProjectWebDeployment';
9
+ import { resolveProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';
10
+ import { setupBlockingOutcome } from './setupBlockingOutcome';
11
+ export function executeProjectWebDeployment(options) {
12
+ return executeProjectWebDeploymentWithRuntime(options, projectWebDeploymentRuntime);
13
+ }
14
+ export async function executeProjectWebDeploymentWithRuntime(options, runtime) {
15
+ const expected = createProjectWebDeploymentPlan(options.inspection);
16
+ if (!areDeploymentPlansEqual(expected, options.plan)) {
17
+ return fromPreflight(failedOutcome('WEB_PLAN_MISMATCH', 'Web deployment plan is invalid.'));
18
+ }
19
+ if (options.plan.steps.length === 0)
20
+ return executeNoChange(options.plan);
21
+ if (options.plan.steps[0]?.id === 'web:remove')
22
+ return executeRemove(options, runtime);
23
+ const access = resolveProjectWebDeploymentAccess(options);
24
+ const setup = await inspectProjectWebSetup(options.inspection.projectRoot, access, runtime);
25
+ const blocker = setupBlockingOutcome(setup);
26
+ if (blocker !== null)
27
+ return fromPreflight(blocker);
28
+ return executeMutableWebPlan(options, access, runtime);
29
+ }
30
+ async function executeMutableWebPlan(options, access, runtime) {
31
+ const state = { artifact: null, publication: null, verification: null };
32
+ let execution;
33
+ try {
34
+ execution = await executeDeploymentPlan({
35
+ plan: options.plan,
36
+ executeStep: (step) => executeProjectWebStep({
37
+ step,
38
+ projectRoot: options.inspection.projectRoot,
39
+ ...(options.inspection.desiredRevision === undefined
40
+ ? {}
41
+ : { expectedRevision: options.inspection.desiredRevision }),
42
+ intent: options.intent ?? { mode: 'preview' },
43
+ access,
44
+ runtime,
45
+ state,
46
+ }),
47
+ });
48
+ }
49
+ finally {
50
+ if (state.artifact !== null)
51
+ await cleanupWebArtifact(state.artifact.directory);
52
+ }
53
+ return finalizeExecution(options, execution, state, runtime);
54
+ }
55
+ async function finalizeExecution(options, execution, state, runtime) {
56
+ if (execution.status !== 'completed' ||
57
+ state.publication === null ||
58
+ state.verification?.ok !== true) {
59
+ return result(execution, state, false);
60
+ }
61
+ const history = await recordProjectWebDeployment({
62
+ inspection: options.inspection,
63
+ plan: options.plan,
64
+ execution,
65
+ verification: state.verification,
66
+ recordedAt: runtime.now().toISOString(),
67
+ });
68
+ return history.recorded
69
+ ? result(execution, state, true)
70
+ : { ...result(execution, state, false), historyFailure: history.failure };
71
+ }
72
+ async function executeNoChange(plan) {
73
+ const execution = await executeDeploymentPlan({
74
+ plan,
75
+ executeStep: () => Promise.resolve({ status: 'completed' }),
76
+ });
77
+ return { execution, publication: null, verification: null, historyRecorded: false };
78
+ }
79
+ async function executeRemove(options, runtime) {
80
+ const state = { artifact: null, publication: null, verification: null };
81
+ const access = resolveProjectWebDeploymentAccess(options);
82
+ const execution = await executeDeploymentPlan({
83
+ plan: options.plan,
84
+ executeStep: (step) => executeProjectWebStep({
85
+ step,
86
+ projectRoot: options.inspection.projectRoot,
87
+ intent: options.intent ?? { mode: 'preview' },
88
+ access,
89
+ runtime,
90
+ state,
91
+ }),
92
+ });
93
+ return result(execution, state, false);
94
+ }
95
+ function fromPreflight(outcome) {
96
+ const execution = outcome.status === 'action-required'
97
+ ? { status: 'action-required', action: outcome.action, records: [] }
98
+ : {
99
+ status: 'failed',
100
+ failure: outcome.status === 'failed'
101
+ ? outcome.error
102
+ : { code: 'WEB_PREFLIGHT_FAILED', message: 'Web deployment preflight failed.' },
103
+ records: [],
104
+ };
105
+ return { execution, publication: null, verification: null, historyRecorded: false };
106
+ }
107
+ function failedOutcome(code, message) {
108
+ return { status: 'failed', error: { code, message, target: 'web' } };
109
+ }
110
+ function result(execution, state, historyRecorded) {
111
+ return {
112
+ execution,
113
+ publication: state.publication,
114
+ verification: state.verification,
115
+ historyRecorded,
116
+ };
117
+ }
118
+ //# sourceMappingURL=executeProjectWebDeployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeProjectWebDeployment.js","sourceRoot":"","sources":["../../../src/project/web/executeProjectWebDeployment.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';\nimport type { DeploymentPlan } from '../../domain/DeploymentPlan';\nimport type { DeploymentStepOutcome } from '../../domain/DeploymentStepOutcome';\nimport type { WebDeploymentPublishIntent } from '../../domain/WebDeploymentPublishIntent';\nimport { executeDeploymentPlan } from '../../engine/executeDeploymentPlan';\nimport { cleanupWebArtifact } from '../../targets/web/prepareWebArtifact';\nimport { areDeploymentPlansEqual } from './areDeploymentPlansEqual';\nimport { createProjectWebDeploymentPlan } from './createProjectWebDeploymentPlan';\nimport { executeProjectWebStep } from './executeProjectWebStep';\nimport { inspectProjectWebSetup } from './inspectProjectWebSetup';\nimport type { ProjectWebDeploymentAccess } from './ProjectWebDeploymentAccess';\nimport type { ProjectWebDeploymentExecution } from './ProjectWebDeploymentExecution';\nimport type { ProjectWebDeploymentInspection } from './ProjectWebDeploymentInspection';\nimport type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';\nimport { projectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';\nimport type { ProjectWebExecutionState } from './ProjectWebExecutionState';\nimport { recordProjectWebDeployment } from './recordProjectWebDeployment';\nimport { resolveProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';\nimport { setupBlockingOutcome } from './setupBlockingOutcome';\n\nexport interface ExecuteProjectWebDeploymentOptions extends ProjectWebDeploymentAccess {\n readonly inspection: ProjectWebDeploymentInspection;\n readonly plan: DeploymentPlan;\n readonly intent?: WebDeploymentPublishIntent;\n}\n\nexport function executeProjectWebDeployment(\n options: ExecuteProjectWebDeploymentOptions,\n): Promise<ProjectWebDeploymentExecution> {\n return executeProjectWebDeploymentWithRuntime(options, projectWebDeploymentRuntime);\n}\n\nexport async function executeProjectWebDeploymentWithRuntime(\n options: ExecuteProjectWebDeploymentOptions,\n runtime: ProjectWebDeploymentRuntime,\n): Promise<ProjectWebDeploymentExecution> {\n const expected = createProjectWebDeploymentPlan(options.inspection);\n if (!areDeploymentPlansEqual(expected, options.plan)) {\n return fromPreflight(failedOutcome('WEB_PLAN_MISMATCH', 'Web deployment plan is invalid.'));\n }\n if (options.plan.steps.length === 0) return executeNoChange(options.plan);\n if (options.plan.steps[0]?.id === 'web:remove') return executeRemove(options, runtime);\n\n const access = resolveProjectWebDeploymentAccess(options);\n const setup = await inspectProjectWebSetup(options.inspection.projectRoot, access, runtime);\n const blocker = setupBlockingOutcome(setup);\n if (blocker !== null) return fromPreflight(blocker);\n\n return executeMutableWebPlan(options, access, runtime);\n}\n\nasync function executeMutableWebPlan(\n options: ExecuteProjectWebDeploymentOptions,\n access: ReturnType<typeof resolveProjectWebDeploymentAccess>,\n runtime: ProjectWebDeploymentRuntime,\n): Promise<ProjectWebDeploymentExecution> {\n const state: ProjectWebExecutionState = { artifact: null, publication: null, verification: null };\n let execution: DeploymentExecutionResult;\n try {\n execution = await executeDeploymentPlan({\n plan: options.plan,\n executeStep: (step) =>\n executeProjectWebStep({\n step,\n projectRoot: options.inspection.projectRoot,\n ...(options.inspection.desiredRevision === undefined\n ? {}\n : { expectedRevision: options.inspection.desiredRevision }),\n intent: options.intent ?? { mode: 'preview' },\n access,\n runtime,\n state,\n }),\n });\n } finally {\n if (state.artifact !== null) await cleanupWebArtifact(state.artifact.directory);\n }\n return finalizeExecution(options, execution, state, runtime);\n}\n\nasync function finalizeExecution(\n options: ExecuteProjectWebDeploymentOptions,\n execution: DeploymentExecutionResult,\n state: ProjectWebExecutionState,\n runtime: ProjectWebDeploymentRuntime,\n): Promise<ProjectWebDeploymentExecution> {\n if (\n execution.status !== 'completed' ||\n state.publication === null ||\n state.verification?.ok !== true\n ) {\n return result(execution, state, false);\n }\n const history = await recordProjectWebDeployment({\n inspection: options.inspection,\n plan: options.plan,\n execution,\n verification: state.verification,\n recordedAt: runtime.now().toISOString(),\n });\n return history.recorded\n ? result(execution, state, true)\n : { ...result(execution, state, false), historyFailure: history.failure };\n}\n\nasync function executeNoChange(plan: DeploymentPlan): Promise<ProjectWebDeploymentExecution> {\n const execution = await executeDeploymentPlan({\n plan,\n executeStep: () => Promise.resolve({ status: 'completed' }),\n });\n return { execution, publication: null, verification: null, historyRecorded: false };\n}\n\nasync function executeRemove(\n options: ExecuteProjectWebDeploymentOptions,\n runtime: ProjectWebDeploymentRuntime,\n): Promise<ProjectWebDeploymentExecution> {\n const state: ProjectWebExecutionState = { artifact: null, publication: null, verification: null };\n const access = resolveProjectWebDeploymentAccess(options);\n const execution = await executeDeploymentPlan({\n plan: options.plan,\n executeStep: (step) =>\n executeProjectWebStep({\n step,\n projectRoot: options.inspection.projectRoot,\n intent: options.intent ?? { mode: 'preview' },\n access,\n runtime,\n state,\n }),\n });\n return result(execution, state, false);\n}\n\nfunction fromPreflight(outcome: DeploymentStepOutcome): ProjectWebDeploymentExecution {\n const execution: DeploymentExecutionResult =\n outcome.status === 'action-required'\n ? { status: 'action-required', action: outcome.action, records: [] }\n : {\n status: 'failed',\n failure:\n outcome.status === 'failed'\n ? outcome.error\n : { code: 'WEB_PREFLIGHT_FAILED', message: 'Web deployment preflight failed.' },\n records: [],\n };\n return { execution, publication: null, verification: null, historyRecorded: false };\n}\n\nfunction failedOutcome(code: string, message: string): DeploymentStepOutcome {\n return { status: 'failed', error: { code, message, target: 'web' } };\n}\n\nfunction result(\n execution: DeploymentExecutionResult,\n state: ProjectWebExecutionState,\n historyRecorded: boolean,\n): ProjectWebDeploymentExecution {\n return {\n execution,\n publication: state.publication,\n verification: state.verification,\n historyRecorded,\n };\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import type { DeploymentPlanStep } from '../../domain/DeploymentPlanStep';
2
+ import type { DeploymentStepOutcome } from '../../domain/DeploymentStepOutcome';
3
+ import type { WebDeploymentPublishIntent } from '../../domain/WebDeploymentPublishIntent';
4
+ import type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';
5
+ import type { ProjectWebExecutionState } from './ProjectWebExecutionState';
6
+ import type { ResolvedProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';
7
+ export declare function executeProjectWebStep(options: {
8
+ readonly step: DeploymentPlanStep;
9
+ readonly projectRoot: string;
10
+ readonly expectedRevision?: string;
11
+ readonly intent: WebDeploymentPublishIntent;
12
+ readonly access: ResolvedProjectWebDeploymentAccess;
13
+ readonly runtime: ProjectWebDeploymentRuntime;
14
+ readonly state: ProjectWebExecutionState;
15
+ }): Promise<DeploymentStepOutcome>;
16
+ //# sourceMappingURL=executeProjectWebStep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeProjectWebStep.d.ts","sourceRoot":"","sources":["../../../src/project/web/executeProjectWebStep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAI1F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AAE9F,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,kCAAkC,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;CAC1C,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAajC"}
@@ -0,0 +1,80 @@
1
+ import { publishWebToEas } from '../../providers/eas/publishWebToEas';
2
+ import { cleanupWebArtifact, prepareWebArtifact } from '../../targets/web/prepareWebArtifact';
3
+ import { verifyWebPublication } from '../../targets/web/verifyWebPublication';
4
+ export async function executeProjectWebStep(options) {
5
+ switch (options.step.id) {
6
+ case 'web:prepare':
7
+ return prepareStep(options);
8
+ case 'web:publish':
9
+ return publishStep(options);
10
+ case 'web:verify':
11
+ return verifyStep(options);
12
+ case 'web:remove':
13
+ return removeStep();
14
+ default:
15
+ return failed('WEB_STEP_UNSUPPORTED', 'Unsupported Web deployment step.');
16
+ }
17
+ }
18
+ async function prepareStep(options) {
19
+ if (options.expectedRevision === undefined) {
20
+ return failed('WEB_REVISION_MISSING', 'Planned Web revision is missing.');
21
+ }
22
+ const result = await prepareWebArtifact({
23
+ projectRoot: options.projectRoot,
24
+ runProcess: options.runtime.runProcess,
25
+ });
26
+ if (!result.ok)
27
+ return { status: 'failed', error: result.failure };
28
+ if (result.artifact.revision !== options.expectedRevision) {
29
+ await cleanupWebArtifact(result.artifact.directory);
30
+ return failed('WEB_SOURCE_CHANGED_AFTER_PLAN', 'Web source changed after the deployment plan was created.');
31
+ }
32
+ options.state.artifact = result.artifact;
33
+ return { status: 'completed' };
34
+ }
35
+ async function publishStep(options) {
36
+ if (options.state.artifact === null || options.expectedRevision === undefined) {
37
+ return failed('WEB_ARTIFACT_MISSING', 'Prepared Web artifact is missing.');
38
+ }
39
+ const result = await publishWebToEas({
40
+ projectRoot: options.projectRoot,
41
+ exportDirectory: options.state.artifact.directory,
42
+ revision: options.expectedRevision,
43
+ intent: options.intent,
44
+ ...options.access,
45
+ runProcess: options.runtime.runProcess,
46
+ });
47
+ if (result.status === 'failed')
48
+ return { status: 'failed', error: result.failure };
49
+ if (result.status === 'action-required') {
50
+ return { status: 'action-required', action: result.action };
51
+ }
52
+ options.state.publication = result.publication;
53
+ return { status: 'completed' };
54
+ }
55
+ async function verifyStep(options) {
56
+ if (options.state.publication === null) {
57
+ return failed('WEB_PUBLICATION_MISSING', 'Web publication result is missing.');
58
+ }
59
+ const verification = await verifyWebPublication(options.state.publication, options.runtime.probeHttp);
60
+ options.state.verification = verification;
61
+ return verification.ok
62
+ ? { status: 'completed' }
63
+ : failed('WEB_VERIFICATION_FAILED', 'Published Web deployment verification failed.');
64
+ }
65
+ function removeStep() {
66
+ return {
67
+ status: 'action-required',
68
+ action: {
69
+ type: 'manual-action',
70
+ target: 'web',
71
+ provider: 'eas',
72
+ code: 'WEB_REMOVAL_REQUIRES_MANUAL_ACTION',
73
+ message: 'Review EAS Hosting aliases and domains before removing the Web deployment.',
74
+ },
75
+ };
76
+ }
77
+ function failed(code, message) {
78
+ return { status: 'failed', error: { code, message, target: 'web' } };
79
+ }
80
+ //# sourceMappingURL=executeProjectWebStep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeProjectWebStep.js","sourceRoot":"","sources":["../../../src/project/web/executeProjectWebStep.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploymentPlanStep } from '../../domain/DeploymentPlanStep';\nimport type { DeploymentStepOutcome } from '../../domain/DeploymentStepOutcome';\nimport type { WebDeploymentPublishIntent } from '../../domain/WebDeploymentPublishIntent';\nimport { publishWebToEas } from '../../providers/eas/publishWebToEas';\nimport { cleanupWebArtifact, prepareWebArtifact } from '../../targets/web/prepareWebArtifact';\nimport { verifyWebPublication } from '../../targets/web/verifyWebPublication';\nimport type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';\nimport type { ProjectWebExecutionState } from './ProjectWebExecutionState';\nimport type { ResolvedProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';\n\nexport async function executeProjectWebStep(options: {\n readonly step: DeploymentPlanStep;\n readonly projectRoot: string;\n readonly expectedRevision?: string;\n readonly intent: WebDeploymentPublishIntent;\n readonly access: ResolvedProjectWebDeploymentAccess;\n readonly runtime: ProjectWebDeploymentRuntime;\n readonly state: ProjectWebExecutionState;\n}): Promise<DeploymentStepOutcome> {\n switch (options.step.id) {\n case 'web:prepare':\n return prepareStep(options);\n case 'web:publish':\n return publishStep(options);\n case 'web:verify':\n return verifyStep(options);\n case 'web:remove':\n return removeStep();\n default:\n return failed('WEB_STEP_UNSUPPORTED', 'Unsupported Web deployment step.');\n }\n}\n\nasync function prepareStep(\n options: Parameters<typeof executeProjectWebStep>[0],\n): Promise<DeploymentStepOutcome> {\n if (options.expectedRevision === undefined) {\n return failed('WEB_REVISION_MISSING', 'Planned Web revision is missing.');\n }\n const result = await prepareWebArtifact({\n projectRoot: options.projectRoot,\n runProcess: options.runtime.runProcess,\n });\n if (!result.ok) return { status: 'failed', error: result.failure };\n if (result.artifact.revision !== options.expectedRevision) {\n await cleanupWebArtifact(result.artifact.directory);\n return failed(\n 'WEB_SOURCE_CHANGED_AFTER_PLAN',\n 'Web source changed after the deployment plan was created.',\n );\n }\n options.state.artifact = result.artifact;\n return { status: 'completed' };\n}\n\nasync function publishStep(\n options: Parameters<typeof executeProjectWebStep>[0],\n): Promise<DeploymentStepOutcome> {\n if (options.state.artifact === null || options.expectedRevision === undefined) {\n return failed('WEB_ARTIFACT_MISSING', 'Prepared Web artifact is missing.');\n }\n const result = await publishWebToEas({\n projectRoot: options.projectRoot,\n exportDirectory: options.state.artifact.directory,\n revision: options.expectedRevision,\n intent: options.intent,\n ...options.access,\n runProcess: options.runtime.runProcess,\n });\n if (result.status === 'failed') return { status: 'failed', error: result.failure };\n if (result.status === 'action-required') {\n return { status: 'action-required', action: result.action };\n }\n options.state.publication = result.publication;\n return { status: 'completed' };\n}\n\nasync function verifyStep(\n options: Parameters<typeof executeProjectWebStep>[0],\n): Promise<DeploymentStepOutcome> {\n if (options.state.publication === null) {\n return failed('WEB_PUBLICATION_MISSING', 'Web publication result is missing.');\n }\n const verification = await verifyWebPublication(\n options.state.publication,\n options.runtime.probeHttp,\n );\n options.state.verification = verification;\n return verification.ok\n ? { status: 'completed' }\n : failed('WEB_VERIFICATION_FAILED', 'Published Web deployment verification failed.');\n}\n\nfunction removeStep(): DeploymentStepOutcome {\n return {\n status: 'action-required',\n action: {\n type: 'manual-action',\n target: 'web',\n provider: 'eas',\n code: 'WEB_REMOVAL_REQUIRES_MANUAL_ACTION',\n message: 'Review EAS Hosting aliases and domains before removing the Web deployment.',\n },\n };\n}\n\nfunction failed(code: string, message: string): DeploymentStepOutcome {\n return { status: 'failed', error: { code, message, target: 'web' } };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { ProjectWebDeploymentAccess } from './ProjectWebDeploymentAccess';
2
+ import type { ProjectWebDeploymentInspectionResult } from './ProjectWebDeploymentInspection';
3
+ import type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';
4
+ export interface InspectProjectWebDeploymentOptions extends ProjectWebDeploymentAccess {
5
+ readonly projectRoot: string;
6
+ }
7
+ export declare function inspectProjectWebDeployment(options: InspectProjectWebDeploymentOptions): Promise<ProjectWebDeploymentInspectionResult>;
8
+ export declare function inspectProjectWebDeploymentWithRuntime(options: InspectProjectWebDeploymentOptions, runtime: ProjectWebDeploymentRuntime): Promise<ProjectWebDeploymentInspectionResult>;
9
+ //# sourceMappingURL=inspectProjectWebDeployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectProjectWebDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/web/inspectProjectWebDeployment.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAKjF,MAAM,WAAW,kCAAmC,SAAQ,0BAA0B;IACpF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,oCAAoC,CAAC,CAE/C;AAED,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,kCAAkC,EAC3C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,oCAAoC,CAAC,CA6B/C"}
@@ -0,0 +1,56 @@
1
+ import { cleanupWebArtifact, prepareWebArtifact } from '../../targets/web/prepareWebArtifact';
2
+ import { resolveDeployProject } from '../resolveDeployProject';
3
+ import { inspectProjectWebSetup } from './inspectProjectWebSetup';
4
+ import { normalizeProjectWebDesired } from './normalizeProjectWebDesired';
5
+ import { projectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';
6
+ import { readCurrentProjectWebDeployment } from './readCurrentProjectWebDeployment';
7
+ import { resolveProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';
8
+ export function inspectProjectWebDeployment(options) {
9
+ return inspectProjectWebDeploymentWithRuntime(options, projectWebDeploymentRuntime);
10
+ }
11
+ export async function inspectProjectWebDeploymentWithRuntime(options, runtime) {
12
+ try {
13
+ const project = await resolveDeployProject({ projectRoot: options.projectRoot });
14
+ const normalized = normalizeProjectWebDesired(project.deploy);
15
+ if (!normalized.ok)
16
+ return normalized;
17
+ const current = await readCurrentProjectWebDeployment(project.projectRoot);
18
+ if (!normalized.enabled) {
19
+ return success(project.projectRoot, normalized.desired, current, undefined, null);
20
+ }
21
+ const artifact = await prepareWebArtifact({
22
+ projectRoot: project.projectRoot,
23
+ runProcess: runtime.runProcess,
24
+ });
25
+ if (!artifact.ok)
26
+ return artifact;
27
+ const { directory, revision } = artifact.artifact;
28
+ await cleanupWebArtifact(directory);
29
+ const access = resolveProjectWebDeploymentAccess(options);
30
+ const setup = await inspectProjectWebSetup(project.projectRoot, access, runtime);
31
+ return success(project.projectRoot, normalized.desired, current, revision, setup);
32
+ }
33
+ catch {
34
+ return {
35
+ ok: false,
36
+ failure: {
37
+ code: 'WEB_PROJECT_INSPECTION_FAILED',
38
+ message: 'Web deployment project inspection failed.',
39
+ target: 'web',
40
+ },
41
+ };
42
+ }
43
+ }
44
+ function success(projectRoot, desired, current, desiredRevision, setup) {
45
+ return {
46
+ ok: true,
47
+ inspection: {
48
+ projectRoot,
49
+ desired,
50
+ current,
51
+ ...(desiredRevision === undefined ? {} : { desiredRevision }),
52
+ setup,
53
+ },
54
+ };
55
+ }
56
+ //# sourceMappingURL=inspectProjectWebDeployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectProjectWebDeployment.js","sourceRoot":"","sources":["../../../src/project/web/inspectProjectWebDeployment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAI1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAMxF,MAAM,UAAU,2BAA2B,CACzC,OAA2C;IAE3C,OAAO,sCAAsC,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sCAAsC,CAC1D,OAA2C,EAC3C,OAAoC;IAEpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC;QAClC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAClD,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACjF,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE;gBACP,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,2CAA2C;gBACpD,MAAM,EAAE,KAAK;aACd;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CACd,WAAmB,EACnB,OAA0B,EAC1B,OAA+B,EAC/B,eAAmC,EACnC,KAAqD;IAErD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,UAAU,EAAE;YACV,WAAW;YACX,OAAO;YACP,OAAO;YACP,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;YAC7D,KAAK;SACN;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { AppDeployManifest } from '@ankhorage/contracts/deploy';\n\nimport type { DeploymentCurrentState } from '../../domain/DeploymentCurrentState';\nimport type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\nimport { cleanupWebArtifact, prepareWebArtifact } from '../../targets/web/prepareWebArtifact';\nimport { resolveDeployProject } from '../resolveDeployProject';\nimport { inspectProjectWebSetup } from './inspectProjectWebSetup';\nimport { normalizeProjectWebDesired } from './normalizeProjectWebDesired';\nimport type { ProjectWebDeploymentAccess } from './ProjectWebDeploymentAccess';\nimport type { ProjectWebDeploymentInspectionResult } from './ProjectWebDeploymentInspection';\nimport type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';\nimport { projectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';\nimport { readCurrentProjectWebDeployment } from './readCurrentProjectWebDeployment';\nimport { resolveProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';\n\nexport interface InspectProjectWebDeploymentOptions extends ProjectWebDeploymentAccess {\n readonly projectRoot: string;\n}\n\nexport function inspectProjectWebDeployment(\n options: InspectProjectWebDeploymentOptions,\n): Promise<ProjectWebDeploymentInspectionResult> {\n return inspectProjectWebDeploymentWithRuntime(options, projectWebDeploymentRuntime);\n}\n\nexport async function inspectProjectWebDeploymentWithRuntime(\n options: InspectProjectWebDeploymentOptions,\n runtime: ProjectWebDeploymentRuntime,\n): Promise<ProjectWebDeploymentInspectionResult> {\n try {\n const project = await resolveDeployProject({ projectRoot: options.projectRoot });\n const normalized = normalizeProjectWebDesired(project.deploy);\n if (!normalized.ok) return normalized;\n const current = await readCurrentProjectWebDeployment(project.projectRoot);\n if (!normalized.enabled) {\n return success(project.projectRoot, normalized.desired, current, undefined, null);\n }\n const artifact = await prepareWebArtifact({\n projectRoot: project.projectRoot,\n runProcess: runtime.runProcess,\n });\n if (!artifact.ok) return artifact;\n const { directory, revision } = artifact.artifact;\n await cleanupWebArtifact(directory);\n const access = resolveProjectWebDeploymentAccess(options);\n const setup = await inspectProjectWebSetup(project.projectRoot, access, runtime);\n return success(project.projectRoot, normalized.desired, current, revision, setup);\n } catch {\n return {\n ok: false,\n failure: {\n code: 'WEB_PROJECT_INSPECTION_FAILED',\n message: 'Web deployment project inspection failed.',\n target: 'web',\n },\n };\n }\n}\n\nfunction success(\n projectRoot: string,\n desired: AppDeployManifest,\n current: DeploymentCurrentState,\n desiredRevision: string | undefined,\n setup: DeploymentProviderSetupInspectionResult | null,\n): ProjectWebDeploymentInspectionResult {\n return {\n ok: true,\n inspection: {\n projectRoot,\n desired,\n current,\n ...(desiredRevision === undefined ? {} : { desiredRevision }),\n setup,\n },\n };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';
2
+ import type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';
3
+ import type { ResolvedProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';
4
+ export declare function inspectProjectWebSetup(projectRoot: string, access: ResolvedProjectWebDeploymentAccess, runtime: ProjectWebDeploymentRuntime): Promise<DeploymentProviderSetupInspectionResult>;
5
+ //# sourceMappingURL=inspectProjectWebSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectProjectWebSetup.d.ts","sourceRoot":"","sources":["../../../src/project/web/inspectProjectWebSetup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAGpH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AAE9F,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kCAAkC,EAC1C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,uCAAuC,CAAC,CAKlD"}
@@ -0,0 +1,9 @@
1
+ import { inspectDeploymentProviderSetup } from '../../engine/inspectDeploymentProviderSetup';
2
+ import { createEasHostingSetupAdapter } from '../../providers/eas/createEasHostingSetupAdapter';
3
+ export function inspectProjectWebSetup(projectRoot, access, runtime) {
4
+ return inspectDeploymentProviderSetup({
5
+ adapter: createEasHostingSetupAdapter({ projectRoot, runProcess: runtime.runProcess }),
6
+ context: { target: 'web', ...access },
7
+ });
8
+ }
9
+ //# sourceMappingURL=inspectProjectWebSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectProjectWebSetup.js","sourceRoot":"","sources":["../../../src/project/web/inspectProjectWebSetup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAIhG,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,MAA0C,EAC1C,OAAoC;IAEpC,OAAO,8BAA8B,CAAC;QACpC,OAAO,EAAE,4BAA4B,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QACtF,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE;KACtC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\nimport { inspectDeploymentProviderSetup } from '../../engine/inspectDeploymentProviderSetup';\nimport { createEasHostingSetupAdapter } from '../../providers/eas/createEasHostingSetupAdapter';\nimport type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';\nimport type { ResolvedProjectWebDeploymentAccess } from './resolveProjectWebDeploymentAccess';\n\nexport function inspectProjectWebSetup(\n projectRoot: string,\n access: ResolvedProjectWebDeploymentAccess,\n runtime: ProjectWebDeploymentRuntime,\n): Promise<DeploymentProviderSetupInspectionResult> {\n return inspectDeploymentProviderSetup({\n adapter: createEasHostingSetupAdapter({ projectRoot, runProcess: runtime.runProcess }),\n context: { target: 'web', ...access },\n });\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import type { AppDeployManifest } from '@ankhorage/contracts/deploy';
2
+ import type { DeploymentFailure } from '../../domain/DeploymentFailure';
3
+ export type NormalizeProjectWebDesiredResult = {
4
+ readonly ok: true;
5
+ readonly desired: AppDeployManifest;
6
+ readonly enabled: boolean;
7
+ } | {
8
+ readonly ok: false;
9
+ readonly failure: DeploymentFailure;
10
+ };
11
+ export declare function normalizeProjectWebDesired(deploy: AppDeployManifest | null): NormalizeProjectWebDesiredResult;
12
+ //# sourceMappingURL=normalizeProjectWebDesired.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeProjectWebDesired.d.ts","sourceRoot":"","sources":["../../../src/project/web/normalizeProjectWebDesired.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,MAAM,MAAM,gCAAgC,GACxC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEhE,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAC/B,gCAAgC,CAgBlC"}
@@ -0,0 +1,20 @@
1
+ import { normalizeWebProviders } from '../../targets/web/normalizeWebProviders';
2
+ export function normalizeProjectWebDesired(deploy) {
3
+ const web = deploy?.targets.web;
4
+ if (web?.enabled !== true) {
5
+ return { ok: true, desired: { targets: {} }, enabled: false };
6
+ }
7
+ const normalized = normalizeWebProviders(web.providers);
8
+ if (!normalized.ok)
9
+ return normalized;
10
+ return {
11
+ ok: true,
12
+ enabled: true,
13
+ desired: {
14
+ targets: {
15
+ web: { enabled: true, providers: normalized.providers },
16
+ },
17
+ },
18
+ };
19
+ }
20
+ //# sourceMappingURL=normalizeProjectWebDesired.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeProjectWebDesired.js","sourceRoot":"","sources":["../../../src/project/web/normalizeProjectWebDesired.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAMhF,MAAM,UAAU,0BAA0B,CACxC,MAAgC;IAEhC,MAAM,GAAG,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;IAChC,IAAI,GAAG,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE;aACxD;SACF;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { AppDeployManifest } from '@ankhorage/contracts/deploy';\n\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport { normalizeWebProviders } from '../../targets/web/normalizeWebProviders';\n\nexport type NormalizeProjectWebDesiredResult =\n | { readonly ok: true; readonly desired: AppDeployManifest; readonly enabled: boolean }\n | { readonly ok: false; readonly failure: DeploymentFailure };\n\nexport function normalizeProjectWebDesired(\n deploy: AppDeployManifest | null,\n): NormalizeProjectWebDesiredResult {\n const web = deploy?.targets.web;\n if (web?.enabled !== true) {\n return { ok: true, desired: { targets: {} }, enabled: false };\n }\n const normalized = normalizeWebProviders(web.providers);\n if (!normalized.ok) return normalized;\n return {\n ok: true,\n enabled: true,\n desired: {\n targets: {\n web: { enabled: true, providers: normalized.providers },\n },\n },\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentCurrentState } from '../../domain/DeploymentCurrentState';
2
+ export declare function readCurrentProjectWebDeployment(projectRoot: string): Promise<DeploymentCurrentState>;
3
+ //# sourceMappingURL=readCurrentProjectWebDeployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readCurrentProjectWebDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/web/readCurrentProjectWebDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,qCAAqC,CAAC;AAI7C,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAOjC"}
@@ -0,0 +1,24 @@
1
+ import { listProjectDeploymentHistory } from '../history/listProjectDeploymentHistory';
2
+ export async function readCurrentProjectWebDeployment(projectRoot) {
3
+ const history = await listProjectDeploymentHistory({ projectRoot });
4
+ const [record] = [...history]
5
+ .filter(isSuccessfulWebRecord)
6
+ .sort((left, right) => right.recordedAt.localeCompare(left.recordedAt));
7
+ const web = record === undefined ? null : observedWebTarget(record);
8
+ return { targets: web === null ? {} : { web } };
9
+ }
10
+ function isSuccessfulWebRecord(record) {
11
+ return (record.deploymentId.startsWith('web-') &&
12
+ record.execution.status === 'completed' &&
13
+ record.verification?.ok === true);
14
+ }
15
+ function observedWebTarget(record) {
16
+ const desired = record.plan.changes.find((change) => change.target === 'web')?.desired;
17
+ if (desired?.target !== 'web' || desired.revision === undefined)
18
+ return null;
19
+ return {
20
+ revision: desired.revision,
21
+ ...(desired.providers === undefined ? {} : { providers: desired.providers }),
22
+ };
23
+ }
24
+ //# sourceMappingURL=readCurrentProjectWebDeployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readCurrentProjectWebDeployment.js","sourceRoot":"","sources":["../../../src/project/web/readCurrentProjectWebDeployment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAGvF,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,WAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;SAC1B,MAAM,CAAC,qBAAqB,CAAC;SAC7B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAsC;IACnE,OAAO,CACL,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW;QACvC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,IAAI,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAsC;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;IACvF,IAAI,OAAO,EAAE,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KAC7E,CAAC;AACJ,CAAC","sourcesContent":["import type {\n DeploymentCurrentState,\n DeploymentObservedWebTarget,\n} from '../../domain/DeploymentCurrentState';\nimport { listProjectDeploymentHistory } from '../history/listProjectDeploymentHistory';\nimport type { ProjectDeploymentHistoryRecord } from '../history/ProjectDeploymentHistoryRecord';\n\nexport async function readCurrentProjectWebDeployment(\n projectRoot: string,\n): Promise<DeploymentCurrentState> {\n const history = await listProjectDeploymentHistory({ projectRoot });\n const [record] = [...history]\n .filter(isSuccessfulWebRecord)\n .sort((left, right) => right.recordedAt.localeCompare(left.recordedAt));\n const web = record === undefined ? null : observedWebTarget(record);\n return { targets: web === null ? {} : { web } };\n}\n\nfunction isSuccessfulWebRecord(record: ProjectDeploymentHistoryRecord): boolean {\n return (\n record.deploymentId.startsWith('web-') &&\n record.execution.status === 'completed' &&\n record.verification?.ok === true\n );\n}\n\nfunction observedWebTarget(\n record: ProjectDeploymentHistoryRecord,\n): DeploymentObservedWebTarget | null {\n const desired = record.plan.changes.find((change) => change.target === 'web')?.desired;\n if (desired?.target !== 'web' || desired.revision === undefined) return null;\n return {\n revision: desired.revision,\n ...(desired.providers === undefined ? {} : { providers: desired.providers }),\n };\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';
2
+ import type { DeploymentFailure } from '../../domain/DeploymentFailure';
3
+ import type { DeploymentPlan } from '../../domain/DeploymentPlan';
4
+ import type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';
5
+ import type { ProjectWebDeploymentInspection } from './ProjectWebDeploymentInspection';
6
+ export type RecordProjectWebHistoryResult = {
7
+ readonly recorded: true;
8
+ } | {
9
+ readonly recorded: false;
10
+ readonly failure: DeploymentFailure;
11
+ };
12
+ export declare function recordProjectWebDeployment(options: {
13
+ readonly inspection: ProjectWebDeploymentInspection;
14
+ readonly plan: DeploymentPlan;
15
+ readonly execution: DeploymentExecutionResult;
16
+ readonly verification: DeploymentVerificationResult;
17
+ readonly recordedAt: string;
18
+ }): Promise<RecordProjectWebHistoryResult>;
19
+ //# sourceMappingURL=recordProjectWebDeployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordProjectWebDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/web/recordProjectWebDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAG9F,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAEvF,MAAM,MAAM,6BAA6B,GACvC;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAElG,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAoBzC"}
@@ -0,0 +1,36 @@
1
+ import { PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION } from '../history/historySchemaVersion';
2
+ import { recordProjectDeploymentHistory } from '../history/recordProjectDeploymentHistory';
3
+ export async function recordProjectWebDeployment(options) {
4
+ const revision = options.inspection.desiredRevision;
5
+ if (revision === undefined)
6
+ return historyFailure('WEB_HISTORY_REVISION_MISSING');
7
+ try {
8
+ await recordProjectDeploymentHistory({
9
+ projectRoot: options.inspection.projectRoot,
10
+ record: {
11
+ schemaVersion: PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION,
12
+ deploymentId: `web-${revision}`,
13
+ recordedAt: options.recordedAt,
14
+ desired: options.inspection.desired,
15
+ plan: options.plan,
16
+ execution: options.execution,
17
+ verification: options.verification,
18
+ },
19
+ });
20
+ return { recorded: true };
21
+ }
22
+ catch {
23
+ return historyFailure('WEB_HISTORY_RECORD_FAILED');
24
+ }
25
+ }
26
+ function historyFailure(code) {
27
+ return {
28
+ recorded: false,
29
+ failure: {
30
+ code,
31
+ message: 'Web deployment history could not be recorded.',
32
+ target: 'web',
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=recordProjectWebDeployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordProjectWebDeployment.js","sourceRoot":"","sources":["../../../src/project/web/recordProjectWebDeployment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yCAAyC,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAM3F,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAMhD;IACC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC,8BAA8B,CAAC,CAAC;IAClF,IAAI,CAAC;QACH,MAAM,8BAA8B,CAAC;YACnC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW;YAC3C,MAAM,EAAE;gBACN,aAAa,EAAE,yCAAyC;gBACxD,YAAY,EAAE,OAAO,QAAQ,EAAE;gBAC/B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;gBACnC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC,2BAA2B,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE;YACP,IAAI;YACJ,OAAO,EAAE,+CAA+C;YACxD,MAAM,EAAE,KAAK;SACd;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport type { DeploymentPlan } from '../../domain/DeploymentPlan';\nimport type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';\nimport { PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION } from '../history/historySchemaVersion';\nimport { recordProjectDeploymentHistory } from '../history/recordProjectDeploymentHistory';\nimport type { ProjectWebDeploymentInspection } from './ProjectWebDeploymentInspection';\n\nexport type RecordProjectWebHistoryResult =\n { readonly recorded: true } | { readonly recorded: false; readonly failure: DeploymentFailure };\n\nexport async function recordProjectWebDeployment(options: {\n readonly inspection: ProjectWebDeploymentInspection;\n readonly plan: DeploymentPlan;\n readonly execution: DeploymentExecutionResult;\n readonly verification: DeploymentVerificationResult;\n readonly recordedAt: string;\n}): Promise<RecordProjectWebHistoryResult> {\n const revision = options.inspection.desiredRevision;\n if (revision === undefined) return historyFailure('WEB_HISTORY_REVISION_MISSING');\n try {\n await recordProjectDeploymentHistory({\n projectRoot: options.inspection.projectRoot,\n record: {\n schemaVersion: PROJECT_DEPLOYMENT_HISTORY_SCHEMA_VERSION,\n deploymentId: `web-${revision}`,\n recordedAt: options.recordedAt,\n desired: options.inspection.desired,\n plan: options.plan,\n execution: options.execution,\n verification: options.verification,\n },\n });\n return { recorded: true };\n } catch {\n return historyFailure('WEB_HISTORY_RECORD_FAILED');\n }\n}\n\nfunction historyFailure(code: string): RecordProjectWebHistoryResult {\n return {\n recorded: false,\n failure: {\n code,\n message: 'Web deployment history could not be recorded.',\n target: 'web',\n },\n };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
3
+ import type { ProjectWebDeploymentAccess } from './ProjectWebDeploymentAccess';
4
+ export interface ResolvedProjectWebDeploymentAccess {
5
+ readonly credentials: readonly DeploymentCredentialReference[];
6
+ readonly resolveSecret: DeploymentSecretResolver;
7
+ }
8
+ export declare function resolveProjectWebDeploymentAccess(access: ProjectWebDeploymentAccess): ResolvedProjectWebDeploymentAccess;
9
+ //# sourceMappingURL=resolveProjectWebDeploymentAccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProjectWebDeploymentAccess.d.ts","sourceRoot":"","sources":["../../../src/project/web/resolveProjectWebDeploymentAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;CAClD;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,0BAA0B,GACjC,kCAAkC,CAKpC"}
@@ -0,0 +1,7 @@
1
+ export function resolveProjectWebDeploymentAccess(access) {
2
+ return {
3
+ credentials: access.credentials ?? [],
4
+ resolveSecret: access.resolveSecret ?? (() => Promise.resolve(null)),
5
+ };
6
+ }
7
+ //# sourceMappingURL=resolveProjectWebDeploymentAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProjectWebDeploymentAccess.js","sourceRoot":"","sources":["../../../src/project/web/resolveProjectWebDeploymentAccess.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,iCAAiC,CAC/C,MAAkC;IAElC,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC","sourcesContent":["import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';\nimport type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';\nimport type { ProjectWebDeploymentAccess } from './ProjectWebDeploymentAccess';\n\nexport interface ResolvedProjectWebDeploymentAccess {\n readonly credentials: readonly DeploymentCredentialReference[];\n readonly resolveSecret: DeploymentSecretResolver;\n}\n\nexport function resolveProjectWebDeploymentAccess(\n access: ProjectWebDeploymentAccess,\n): ResolvedProjectWebDeploymentAccess {\n return {\n credentials: access.credentials ?? [],\n resolveSecret: access.resolveSecret ?? (() => Promise.resolve(null)),\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';
2
+ import type { DeploymentStepOutcome } from '../../domain/DeploymentStepOutcome';
3
+ export declare function setupBlockingOutcome(result: DeploymentProviderSetupInspectionResult): DeploymentStepOutcome | null;
4
+ //# sourceMappingURL=setupBlockingOutcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupBlockingOutcome.d.ts","sourceRoot":"","sources":["../../../src/project/web/setupBlockingOutcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AACpH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEhF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,uCAAuC,GAC9C,qBAAqB,GAAG,IAAI,CAiC9B"}
@@ -0,0 +1,34 @@
1
+ export function setupBlockingOutcome(result) {
2
+ if (!result.ok)
3
+ return { status: 'failed', error: result.failure };
4
+ if (result.inspection.authentication.status === 'required') {
5
+ return { status: 'action-required', action: result.inspection.authentication.action };
6
+ }
7
+ for (const requirement of result.inspection.provisioning) {
8
+ if (requirement.type === 'authentication' || requirement.type === 'manual-action') {
9
+ return { status: 'action-required', action: requirement.action };
10
+ }
11
+ return {
12
+ status: 'failed',
13
+ error: {
14
+ code: 'WEB_SETUP_INCOMPLETE',
15
+ message: 'Web deployment setup requires automated provisioning before publication.',
16
+ target: 'web',
17
+ provider: requirement.provider,
18
+ },
19
+ };
20
+ }
21
+ const publish = result.inspection.capabilities.find((capability) => capability.capability === 'publish');
22
+ return publish?.status === 'available'
23
+ ? null
24
+ : {
25
+ status: 'failed',
26
+ error: {
27
+ code: 'WEB_PUBLISH_UNAVAILABLE',
28
+ message: 'The Web publish capability is not available.',
29
+ target: 'web',
30
+ provider: result.inspection.provider,
31
+ },
32
+ };
33
+ }
34
+ //# sourceMappingURL=setupBlockingOutcome.js.map