@ankhorage/deploy 0.3.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 (164) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -2
  3. package/dist/domain/DeploymentCurrentState.d.ts +6 -3
  4. package/dist/domain/DeploymentCurrentState.d.ts.map +1 -1
  5. package/dist/domain/DeploymentCurrentState.js.map +1 -1
  6. package/dist/domain/DeploymentDesiredRevisions.d.ts +3 -0
  7. package/dist/domain/DeploymentDesiredRevisions.d.ts.map +1 -0
  8. package/dist/domain/DeploymentDesiredRevisions.js +2 -0
  9. package/dist/domain/DeploymentDesiredRevisions.js.map +1 -0
  10. package/dist/domain/DeploymentTargetChange.d.ts +1 -1
  11. package/dist/domain/DeploymentTargetChange.d.ts.map +1 -1
  12. package/dist/domain/DeploymentTargetChange.js +1 -0
  13. package/dist/domain/DeploymentTargetChange.js.map +1 -1
  14. package/dist/domain/WebDeploymentPublication.d.ts +9 -0
  15. package/dist/domain/WebDeploymentPublication.d.ts.map +1 -0
  16. package/dist/domain/WebDeploymentPublication.js +2 -0
  17. package/dist/domain/WebDeploymentPublication.js.map +1 -0
  18. package/dist/domain/WebDeploymentPublishIntent.d.ts +6 -0
  19. package/dist/domain/WebDeploymentPublishIntent.d.ts.map +1 -0
  20. package/dist/domain/WebDeploymentPublishIntent.js +2 -0
  21. package/dist/domain/WebDeploymentPublishIntent.js.map +1 -0
  22. package/dist/engine/createDeploymentChanges.d.ts +2 -0
  23. package/dist/engine/createDeploymentChanges.d.ts.map +1 -1
  24. package/dist/engine/createDeploymentChanges.js +22 -7
  25. package/dist/engine/createDeploymentChanges.js.map +1 -1
  26. package/dist/engine/createDeploymentPlan.d.ts +2 -0
  27. package/dist/engine/createDeploymentPlan.d.ts.map +1 -1
  28. package/dist/engine/createDeploymentPlan.js.map +1 -1
  29. package/dist/engine/targetSnapshot.d.ts +2 -2
  30. package/dist/engine/targetSnapshot.d.ts.map +1 -1
  31. package/dist/engine/targetSnapshot.js +14 -9
  32. package/dist/engine/targetSnapshot.js.map +1 -1
  33. package/dist/index.d.ts +3 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +3 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/project/history/validation/observedTarget.d.ts.map +1 -1
  38. package/dist/project/history/validation/observedTarget.js +13 -6
  39. package/dist/project/history/validation/observedTarget.js.map +1 -1
  40. package/dist/project/index.d.ts +6 -0
  41. package/dist/project/index.d.ts.map +1 -1
  42. package/dist/project/index.js +3 -0
  43. package/dist/project/index.js.map +1 -1
  44. package/dist/project/web/ProjectWebDeploymentAccess.d.ts +7 -0
  45. package/dist/project/web/ProjectWebDeploymentAccess.d.ts.map +1 -0
  46. package/dist/project/web/ProjectWebDeploymentAccess.js +2 -0
  47. package/dist/project/web/ProjectWebDeploymentAccess.js.map +1 -0
  48. package/dist/project/web/ProjectWebDeploymentExecution.d.ts +12 -0
  49. package/dist/project/web/ProjectWebDeploymentExecution.d.ts.map +1 -0
  50. package/dist/project/web/ProjectWebDeploymentExecution.js +2 -0
  51. package/dist/project/web/ProjectWebDeploymentExecution.js.map +1 -0
  52. package/dist/project/web/ProjectWebDeploymentInspection.d.ts +19 -0
  53. package/dist/project/web/ProjectWebDeploymentInspection.d.ts.map +1 -0
  54. package/dist/project/web/ProjectWebDeploymentInspection.js +2 -0
  55. package/dist/project/web/ProjectWebDeploymentInspection.js.map +1 -0
  56. package/dist/project/web/ProjectWebDeploymentRuntime.d.ts +9 -0
  57. package/dist/project/web/ProjectWebDeploymentRuntime.d.ts.map +1 -0
  58. package/dist/project/web/ProjectWebDeploymentRuntime.js +8 -0
  59. package/dist/project/web/ProjectWebDeploymentRuntime.js.map +1 -0
  60. package/dist/project/web/ProjectWebExecutionState.d.ts +9 -0
  61. package/dist/project/web/ProjectWebExecutionState.d.ts.map +1 -0
  62. package/dist/project/web/ProjectWebExecutionState.js +2 -0
  63. package/dist/project/web/ProjectWebExecutionState.js.map +1 -0
  64. package/dist/project/web/areDeploymentPlansEqual.d.ts +3 -0
  65. package/dist/project/web/areDeploymentPlansEqual.d.ts.map +1 -0
  66. package/dist/project/web/areDeploymentPlansEqual.js +4 -0
  67. package/dist/project/web/areDeploymentPlansEqual.js.map +1 -0
  68. package/dist/project/web/createProjectWebDeploymentPlan.d.ts +4 -0
  69. package/dist/project/web/createProjectWebDeploymentPlan.d.ts.map +1 -0
  70. package/dist/project/web/createProjectWebDeploymentPlan.js +13 -0
  71. package/dist/project/web/createProjectWebDeploymentPlan.js.map +1 -0
  72. package/dist/project/web/executeProjectWebDeployment.d.ts +14 -0
  73. package/dist/project/web/executeProjectWebDeployment.d.ts.map +1 -0
  74. package/dist/project/web/executeProjectWebDeployment.js +118 -0
  75. package/dist/project/web/executeProjectWebDeployment.js.map +1 -0
  76. package/dist/project/web/executeProjectWebStep.d.ts +16 -0
  77. package/dist/project/web/executeProjectWebStep.d.ts.map +1 -0
  78. package/dist/project/web/executeProjectWebStep.js +80 -0
  79. package/dist/project/web/executeProjectWebStep.js.map +1 -0
  80. package/dist/project/web/inspectProjectWebDeployment.d.ts +9 -0
  81. package/dist/project/web/inspectProjectWebDeployment.d.ts.map +1 -0
  82. package/dist/project/web/inspectProjectWebDeployment.js +56 -0
  83. package/dist/project/web/inspectProjectWebDeployment.js.map +1 -0
  84. package/dist/project/web/inspectProjectWebSetup.d.ts +5 -0
  85. package/dist/project/web/inspectProjectWebSetup.d.ts.map +1 -0
  86. package/dist/project/web/inspectProjectWebSetup.js +9 -0
  87. package/dist/project/web/inspectProjectWebSetup.js.map +1 -0
  88. package/dist/project/web/normalizeProjectWebDesired.d.ts +12 -0
  89. package/dist/project/web/normalizeProjectWebDesired.d.ts.map +1 -0
  90. package/dist/project/web/normalizeProjectWebDesired.js +20 -0
  91. package/dist/project/web/normalizeProjectWebDesired.js.map +1 -0
  92. package/dist/project/web/readCurrentProjectWebDeployment.d.ts +3 -0
  93. package/dist/project/web/readCurrentProjectWebDeployment.d.ts.map +1 -0
  94. package/dist/project/web/readCurrentProjectWebDeployment.js +24 -0
  95. package/dist/project/web/readCurrentProjectWebDeployment.js.map +1 -0
  96. package/dist/project/web/recordProjectWebDeployment.d.ts +19 -0
  97. package/dist/project/web/recordProjectWebDeployment.d.ts.map +1 -0
  98. package/dist/project/web/recordProjectWebDeployment.js +36 -0
  99. package/dist/project/web/recordProjectWebDeployment.js.map +1 -0
  100. package/dist/project/web/resolveProjectWebDeploymentAccess.d.ts +9 -0
  101. package/dist/project/web/resolveProjectWebDeploymentAccess.d.ts.map +1 -0
  102. package/dist/project/web/resolveProjectWebDeploymentAccess.js +7 -0
  103. package/dist/project/web/resolveProjectWebDeploymentAccess.js.map +1 -0
  104. package/dist/project/web/setupBlockingOutcome.d.ts +4 -0
  105. package/dist/project/web/setupBlockingOutcome.d.ts.map +1 -0
  106. package/dist/project/web/setupBlockingOutcome.js +34 -0
  107. package/dist/project/web/setupBlockingOutcome.js.map +1 -0
  108. package/dist/providers/eas/createEasHostingSetupAdapter.d.ts +7 -0
  109. package/dist/providers/eas/createEasHostingSetupAdapter.d.ts.map +1 -0
  110. package/dist/providers/eas/createEasHostingSetupAdapter.js +76 -0
  111. package/dist/providers/eas/createEasHostingSetupAdapter.js.map +1 -0
  112. package/dist/providers/eas/parseEasWebPublication.d.ts +3 -0
  113. package/dist/providers/eas/parseEasWebPublication.d.ts.map +1 -0
  114. package/dist/providers/eas/parseEasWebPublication.js +31 -0
  115. package/dist/providers/eas/parseEasWebPublication.js.map +1 -0
  116. package/dist/providers/eas/publishWebToEas.d.ts +27 -0
  117. package/dist/providers/eas/publishWebToEas.d.ts.map +1 -0
  118. package/dist/providers/eas/publishWebToEas.js +52 -0
  119. package/dist/providers/eas/publishWebToEas.js.map +1 -0
  120. package/dist/providers/eas/resolveEasProcessEnvironment.d.ts +15 -0
  121. package/dist/providers/eas/resolveEasProcessEnvironment.d.ts.map +1 -0
  122. package/dist/providers/eas/resolveEasProcessEnvironment.js +26 -0
  123. package/dist/providers/eas/resolveEasProcessEnvironment.js.map +1 -0
  124. package/dist/runtime/http/DeploymentHttpProbe.d.ts +6 -0
  125. package/dist/runtime/http/DeploymentHttpProbe.d.ts.map +1 -0
  126. package/dist/runtime/http/DeploymentHttpProbe.js +2 -0
  127. package/dist/runtime/http/DeploymentHttpProbe.js.map +1 -0
  128. package/dist/runtime/http/probeDeploymentHttp.d.ts +3 -0
  129. package/dist/runtime/http/probeDeploymentHttp.d.ts.map +1 -0
  130. package/dist/runtime/http/probeDeploymentHttp.js +5 -0
  131. package/dist/runtime/http/probeDeploymentHttp.js.map +1 -0
  132. package/dist/runtime/process/DeploymentProcessRunner.d.ts +13 -0
  133. package/dist/runtime/process/DeploymentProcessRunner.d.ts.map +1 -0
  134. package/dist/runtime/process/DeploymentProcessRunner.js +2 -0
  135. package/dist/runtime/process/DeploymentProcessRunner.js.map +1 -0
  136. package/dist/runtime/process/runDeploymentProcess.d.ts +3 -0
  137. package/dist/runtime/process/runDeploymentProcess.d.ts.map +1 -0
  138. package/dist/runtime/process/runDeploymentProcess.js +29 -0
  139. package/dist/runtime/process/runDeploymentProcess.js.map +1 -0
  140. package/dist/targets/web/PreparedWebArtifact.d.ts +5 -0
  141. package/dist/targets/web/PreparedWebArtifact.d.ts.map +1 -0
  142. package/dist/targets/web/PreparedWebArtifact.js +2 -0
  143. package/dist/targets/web/PreparedWebArtifact.js.map +1 -0
  144. package/dist/targets/web/createWebTargetPlanContributor.d.ts +3 -0
  145. package/dist/targets/web/createWebTargetPlanContributor.d.ts.map +1 -0
  146. package/dist/targets/web/createWebTargetPlanContributor.js +32 -0
  147. package/dist/targets/web/createWebTargetPlanContributor.js.map +1 -0
  148. package/dist/targets/web/hashWebExport.d.ts +2 -0
  149. package/dist/targets/web/hashWebExport.d.ts.map +1 -0
  150. package/dist/targets/web/hashWebExport.js +30 -0
  151. package/dist/targets/web/hashWebExport.js.map +1 -0
  152. package/dist/targets/web/normalizeWebProviders.d.ts +16 -0
  153. package/dist/targets/web/normalizeWebProviders.d.ts.map +1 -0
  154. package/dist/targets/web/normalizeWebProviders.js +16 -0
  155. package/dist/targets/web/normalizeWebProviders.js.map +1 -0
  156. package/dist/targets/web/prepareWebArtifact.d.ts +16 -0
  157. package/dist/targets/web/prepareWebArtifact.d.ts.map +1 -0
  158. package/dist/targets/web/prepareWebArtifact.js +46 -0
  159. package/dist/targets/web/prepareWebArtifact.js.map +1 -0
  160. package/dist/targets/web/verifyWebPublication.d.ts +5 -0
  161. package/dist/targets/web/verifyWebPublication.d.ts.map +1 -0
  162. package/dist/targets/web/verifyWebPublication.js +25 -0
  163. package/dist/targets/web/verifyWebPublication.js.map +1 -0
  164. package/package.json +1 -1
@@ -0,0 +1,12 @@
1
+ import type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';
2
+ import type { DeploymentFailure } from '../../domain/DeploymentFailure';
3
+ import type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';
4
+ import type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';
5
+ export interface ProjectWebDeploymentExecution {
6
+ readonly execution: DeploymentExecutionResult;
7
+ readonly publication: WebDeploymentPublication | null;
8
+ readonly verification: DeploymentVerificationResult | null;
9
+ readonly historyRecorded: boolean;
10
+ readonly historyFailure?: DeploymentFailure;
11
+ }
12
+ //# sourceMappingURL=ProjectWebDeploymentExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebDeploymentExecution.d.ts","sourceRoot":"","sources":["../../../src/project/web/ProjectWebDeploymentExecution.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,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEtF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC;CAC7C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ProjectWebDeploymentExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebDeploymentExecution.js","sourceRoot":"","sources":["../../../src/project/web/ProjectWebDeploymentExecution.ts"],"names":[],"mappings":"","sourcesContent":["import type { DeploymentExecutionResult } from '../../domain/DeploymentExecutionResult';\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';\nimport type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';\n\nexport interface ProjectWebDeploymentExecution {\n readonly execution: DeploymentExecutionResult;\n readonly publication: WebDeploymentPublication | null;\n readonly verification: DeploymentVerificationResult | null;\n readonly historyRecorded: boolean;\n readonly historyFailure?: DeploymentFailure;\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { AppDeployManifest } from '@ankhorage/contracts/deploy';
2
+ import type { DeploymentCurrentState } from '../../domain/DeploymentCurrentState';
3
+ import type { DeploymentFailure } from '../../domain/DeploymentFailure';
4
+ import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';
5
+ export interface ProjectWebDeploymentInspection {
6
+ readonly projectRoot: string;
7
+ readonly desired: AppDeployManifest;
8
+ readonly current: DeploymentCurrentState;
9
+ readonly desiredRevision?: string;
10
+ readonly setup: DeploymentProviderSetupInspectionResult | null;
11
+ }
12
+ export type ProjectWebDeploymentInspectionResult = {
13
+ readonly ok: true;
14
+ readonly inspection: ProjectWebDeploymentInspection;
15
+ } | {
16
+ readonly ok: false;
17
+ readonly failure: DeploymentFailure;
18
+ };
19
+ //# sourceMappingURL=ProjectWebDeploymentInspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebDeploymentInspection.d.ts","sourceRoot":"","sources":["../../../src/project/web/ProjectWebDeploymentInspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAEpH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,uCAAuC,GAAG,IAAI,CAAC;CAChE;AAED,MAAM,MAAM,oCAAoC,GAC5C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ProjectWebDeploymentInspection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebDeploymentInspection.js","sourceRoot":"","sources":["../../../src/project/web/ProjectWebDeploymentInspection.ts"],"names":[],"mappings":"","sourcesContent":["import type { AppDeployManifest } from '@ankhorage/contracts/deploy';\n\nimport type { DeploymentCurrentState } from '../../domain/DeploymentCurrentState';\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\n\nexport interface ProjectWebDeploymentInspection {\n readonly projectRoot: string;\n readonly desired: AppDeployManifest;\n readonly current: DeploymentCurrentState;\n readonly desiredRevision?: string;\n readonly setup: DeploymentProviderSetupInspectionResult | null;\n}\n\nexport type ProjectWebDeploymentInspectionResult =\n | { readonly ok: true; readonly inspection: ProjectWebDeploymentInspection }\n | { readonly ok: false; readonly failure: DeploymentFailure };\n"]}
@@ -0,0 +1,9 @@
1
+ import type { DeploymentHttpProbe } from '../../runtime/http/DeploymentHttpProbe';
2
+ import type { DeploymentProcessRunner } from '../../runtime/process/DeploymentProcessRunner';
3
+ export interface ProjectWebDeploymentRuntime {
4
+ readonly runProcess: DeploymentProcessRunner;
5
+ readonly probeHttp: DeploymentHttpProbe;
6
+ readonly now: () => Date;
7
+ }
8
+ export declare const projectWebDeploymentRuntime: ProjectWebDeploymentRuntime;
9
+ //# sourceMappingURL=ProjectWebDeploymentRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebDeploymentRuntime.d.ts","sourceRoot":"","sources":["../../../src/project/web/ProjectWebDeploymentRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAG7F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,2BAA2B,EAAE,2BAIzC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { probeDeploymentHttp } from '../../runtime/http/probeDeploymentHttp';
2
+ import { runDeploymentProcess } from '../../runtime/process/runDeploymentProcess';
3
+ export const projectWebDeploymentRuntime = {
4
+ runProcess: runDeploymentProcess,
5
+ probeHttp: probeDeploymentHttp,
6
+ now: () => new Date(),
7
+ };
8
+ //# sourceMappingURL=ProjectWebDeploymentRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebDeploymentRuntime.js","sourceRoot":"","sources":["../../../src/project/web/ProjectWebDeploymentRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAQlF,MAAM,CAAC,MAAM,2BAA2B,GAAgC;IACtE,UAAU,EAAE,oBAAoB;IAChC,SAAS,EAAE,mBAAmB;IAC9B,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;CACtB,CAAC","sourcesContent":["import type { DeploymentHttpProbe } from '../../runtime/http/DeploymentHttpProbe';\nimport { probeDeploymentHttp } from '../../runtime/http/probeDeploymentHttp';\nimport type { DeploymentProcessRunner } from '../../runtime/process/DeploymentProcessRunner';\nimport { runDeploymentProcess } from '../../runtime/process/runDeploymentProcess';\n\nexport interface ProjectWebDeploymentRuntime {\n readonly runProcess: DeploymentProcessRunner;\n readonly probeHttp: DeploymentHttpProbe;\n readonly now: () => Date;\n}\n\nexport const projectWebDeploymentRuntime: ProjectWebDeploymentRuntime = {\n runProcess: runDeploymentProcess,\n probeHttp: probeDeploymentHttp,\n now: () => new Date(),\n};\n"]}
@@ -0,0 +1,9 @@
1
+ import type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';
2
+ import type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';
3
+ import type { PreparedWebArtifact } from '../../targets/web/PreparedWebArtifact';
4
+ export interface ProjectWebExecutionState {
5
+ artifact: PreparedWebArtifact | null;
6
+ publication: WebDeploymentPublication | null;
7
+ verification: DeploymentVerificationResult | null;
8
+ }
9
+ //# sourceMappingURL=ProjectWebExecutionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebExecutionState.d.ts","sourceRoot":"","sources":["../../../src/project/web/ProjectWebExecutionState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAEjF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC7C,YAAY,EAAE,4BAA4B,GAAG,IAAI,CAAC;CACnD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ProjectWebExecutionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectWebExecutionState.js","sourceRoot":"","sources":["../../../src/project/web/ProjectWebExecutionState.ts"],"names":[],"mappings":"","sourcesContent":["import type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';\nimport type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';\nimport type { PreparedWebArtifact } from '../../targets/web/PreparedWebArtifact';\n\nexport interface ProjectWebExecutionState {\n artifact: PreparedWebArtifact | null;\n publication: WebDeploymentPublication | null;\n verification: DeploymentVerificationResult | null;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentPlan } from '../../domain/DeploymentPlan';
2
+ export declare function areDeploymentPlansEqual(left: DeploymentPlan, right: DeploymentPlan): boolean;
3
+ //# sourceMappingURL=areDeploymentPlansEqual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areDeploymentPlansEqual.d.ts","sourceRoot":"","sources":["../../../src/project/web/areDeploymentPlansEqual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAE5F"}
@@ -0,0 +1,4 @@
1
+ export function areDeploymentPlansEqual(left, right) {
2
+ return JSON.stringify(left) === JSON.stringify(right);
3
+ }
4
+ //# sourceMappingURL=areDeploymentPlansEqual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areDeploymentPlansEqual.js","sourceRoot":"","sources":["../../../src/project/web/areDeploymentPlansEqual.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,IAAoB,EAAE,KAAqB;IACjF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC","sourcesContent":["import type { DeploymentPlan } from '../../domain/DeploymentPlan';\n\nexport function areDeploymentPlansEqual(left: DeploymentPlan, right: DeploymentPlan): boolean {\n return JSON.stringify(left) === JSON.stringify(right);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { DeploymentPlan } from '../../domain/DeploymentPlan';
2
+ import type { ProjectWebDeploymentInspection } from './ProjectWebDeploymentInspection';
3
+ export declare function createProjectWebDeploymentPlan(inspection: ProjectWebDeploymentInspection): DeploymentPlan;
4
+ //# sourceMappingURL=createProjectWebDeploymentPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjectWebDeploymentPlan.d.ts","sourceRoot":"","sources":["../../../src/project/web/createProjectWebDeploymentPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAEvF,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,8BAA8B,GACzC,cAAc,CAShB"}
@@ -0,0 +1,13 @@
1
+ import { createDeploymentPlan } from '../../engine/createDeploymentPlan';
2
+ import { createWebTargetPlanContributor } from '../../targets/web/createWebTargetPlanContributor';
3
+ export function createProjectWebDeploymentPlan(inspection) {
4
+ return createDeploymentPlan({
5
+ desired: inspection.desired,
6
+ current: inspection.current,
7
+ ...(inspection.desiredRevision === undefined
8
+ ? {}
9
+ : { desiredRevisions: { web: inspection.desiredRevision } }),
10
+ contributors: { web: createWebTargetPlanContributor() },
11
+ });
12
+ }
13
+ //# sourceMappingURL=createProjectWebDeploymentPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjectWebDeploymentPlan.js","sourceRoot":"","sources":["../../../src/project/web/createProjectWebDeploymentPlan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAGlG,MAAM,UAAU,8BAA8B,CAC5C,UAA0C;IAE1C,OAAO,oBAAoB,CAAC;QAC1B,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,GAAG,CAAC,UAAU,CAAC,eAAe,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;QAC9D,YAAY,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE,EAAE;KACxD,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { DeploymentPlan } from '../../domain/DeploymentPlan';\nimport { createDeploymentPlan } from '../../engine/createDeploymentPlan';\nimport { createWebTargetPlanContributor } from '../../targets/web/createWebTargetPlanContributor';\nimport type { ProjectWebDeploymentInspection } from './ProjectWebDeploymentInspection';\n\nexport function createProjectWebDeploymentPlan(\n inspection: ProjectWebDeploymentInspection,\n): DeploymentPlan {\n return createDeploymentPlan({\n desired: inspection.desired,\n current: inspection.current,\n ...(inspection.desiredRevision === undefined\n ? {}\n : { desiredRevisions: { web: inspection.desiredRevision } }),\n contributors: { web: createWebTargetPlanContributor() },\n });\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type { DeploymentPlan } from '../../domain/DeploymentPlan';
2
+ import type { WebDeploymentPublishIntent } from '../../domain/WebDeploymentPublishIntent';
3
+ import type { ProjectWebDeploymentAccess } from './ProjectWebDeploymentAccess';
4
+ import type { ProjectWebDeploymentExecution } from './ProjectWebDeploymentExecution';
5
+ import type { ProjectWebDeploymentInspection } from './ProjectWebDeploymentInspection';
6
+ import type { ProjectWebDeploymentRuntime } from './ProjectWebDeploymentRuntime';
7
+ export interface ExecuteProjectWebDeploymentOptions extends ProjectWebDeploymentAccess {
8
+ readonly inspection: ProjectWebDeploymentInspection;
9
+ readonly plan: DeploymentPlan;
10
+ readonly intent?: WebDeploymentPublishIntent;
11
+ }
12
+ export declare function executeProjectWebDeployment(options: ExecuteProjectWebDeploymentOptions): Promise<ProjectWebDeploymentExecution>;
13
+ export declare function executeProjectWebDeploymentWithRuntime(options: ExecuteProjectWebDeploymentOptions, runtime: ProjectWebDeploymentRuntime): Promise<ProjectWebDeploymentExecution>;
14
+ //# sourceMappingURL=executeProjectWebDeployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeProjectWebDeployment.d.ts","sourceRoot":"","sources":["../../../src/project/web/executeProjectWebDeployment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAO1F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAOjF,MAAM,WAAW,kCAAmC,SAAQ,0BAA0B;IACpF,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,6BAA6B,CAAC,CAExC;AAED,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,kCAAkC,EAC3C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,6BAA6B,CAAC,CAcxC"}
@@ -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