@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 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupBlockingOutcome.js","sourceRoot":"","sources":["../../../src/project/web/setupBlockingOutcome.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAClC,MAA+C;IAE/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACnE,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;IACxF,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACzD,IAAI,WAAW,CAAC,IAAI,KAAK,gBAAgB,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClF,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;QACnE,CAAC;QACD,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,0EAA0E;gBACnF,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B;SACF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CACjD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,CACpD,CAAC;IACF,OAAO,OAAO,EAAE,MAAM,KAAK,WAAW;QACpC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,8CAA8C;gBACvD,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;aACrC;SACF,CAAC;AACR,CAAC","sourcesContent":["import type { DeploymentProviderSetupInspectionResult } from '../../domain/DeploymentProviderSetupInspectionResult';\nimport type { DeploymentStepOutcome } from '../../domain/DeploymentStepOutcome';\n\nexport function setupBlockingOutcome(\n result: DeploymentProviderSetupInspectionResult,\n): DeploymentStepOutcome | null {\n if (!result.ok) return { status: 'failed', error: result.failure };\n if (result.inspection.authentication.status === 'required') {\n return { status: 'action-required', action: result.inspection.authentication.action };\n }\n for (const requirement of result.inspection.provisioning) {\n if (requirement.type === 'authentication' || requirement.type === 'manual-action') {\n return { status: 'action-required', action: requirement.action };\n }\n return {\n status: 'failed',\n error: {\n code: 'WEB_SETUP_INCOMPLETE',\n message: 'Web deployment setup requires automated provisioning before publication.',\n target: 'web',\n provider: requirement.provider,\n },\n };\n }\n const publish = result.inspection.capabilities.find(\n (capability) => capability.capability === 'publish',\n );\n return publish?.status === 'available'\n ? null\n : {\n status: 'failed',\n error: {\n code: 'WEB_PUBLISH_UNAVAILABLE',\n message: 'The Web publish capability is not available.',\n target: 'web',\n provider: result.inspection.provider,\n },\n };\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { DeploymentProviderSetupAdapter } from '../../domain/DeploymentProviderSetupAdapter';
2
+ import type { DeploymentProcessRunner } from '../../runtime/process/DeploymentProcessRunner';
3
+ export declare function createEasHostingSetupAdapter(options: {
4
+ readonly projectRoot: string;
5
+ readonly runProcess: DeploymentProcessRunner;
6
+ }): DeploymentProviderSetupAdapter;
7
+ //# sourceMappingURL=createEasHostingSetupAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEasHostingSetupAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/eas/createEasHostingSetupAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAIlG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAG7F,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;CAC9C,GAAG,8BAA8B,CAKjC"}
@@ -0,0 +1,76 @@
1
+ import { resolveEasProcessEnvironment } from './resolveEasProcessEnvironment';
2
+ export function createEasHostingSetupAdapter(options) {
3
+ return {
4
+ provider: 'eas',
5
+ inspectSetup: (context) => inspectEasHostingSetup(options, context),
6
+ };
7
+ }
8
+ async function inspectEasHostingSetup(options, context) {
9
+ const environment = await resolveEasProcessEnvironment(context);
10
+ if (!environment.ok)
11
+ return authenticationRequired(environment.action);
12
+ const account = await options.runProcess({
13
+ command: 'eas',
14
+ args: ['account:view'],
15
+ cwd: options.projectRoot,
16
+ ...(environment.env === undefined ? {} : { env: environment.env }),
17
+ });
18
+ if (account.exitCode !== 0)
19
+ return authenticationRequired(createAuthenticationAction());
20
+ const project = await options.runProcess({
21
+ command: 'eas',
22
+ args: ['project:info'],
23
+ cwd: options.projectRoot,
24
+ ...(environment.env === undefined ? {} : { env: environment.env }),
25
+ });
26
+ return project.exitCode === 0 ? readyInspection() : projectLinkRequired();
27
+ }
28
+ function createAuthenticationAction() {
29
+ return {
30
+ type: 'authentication',
31
+ provider: 'eas',
32
+ target: 'web',
33
+ code: 'EAS_AUTHENTICATION_REQUIRED',
34
+ message: 'EAS authentication is required for Web deployment.',
35
+ };
36
+ }
37
+ function authenticationRequired(action) {
38
+ return {
39
+ provider: 'eas',
40
+ authentication: { status: 'required', action },
41
+ capabilities: [
42
+ { capability: 'publish', status: 'unavailable', reason: 'Authentication required.' },
43
+ ],
44
+ provisioning: [{ type: 'authentication', action }],
45
+ };
46
+ }
47
+ function readyInspection() {
48
+ return {
49
+ provider: 'eas',
50
+ authentication: { status: 'authenticated' },
51
+ capabilities: [{ capability: 'publish', status: 'available' }],
52
+ provisioning: [],
53
+ };
54
+ }
55
+ function projectLinkRequired() {
56
+ return {
57
+ provider: 'eas',
58
+ authentication: { status: 'authenticated' },
59
+ capabilities: [
60
+ { capability: 'publish', status: 'unavailable', reason: 'EAS project link required.' },
61
+ ],
62
+ provisioning: [
63
+ {
64
+ type: 'manual-action',
65
+ action: {
66
+ type: 'manual-action',
67
+ target: 'web',
68
+ provider: 'eas',
69
+ code: 'EAS_PROJECT_LINK_REQUIRED',
70
+ message: 'Link the Expo project to an EAS project before publishing.',
71
+ },
72
+ },
73
+ ],
74
+ };
75
+ }
76
+ //# sourceMappingURL=createEasHostingSetupAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEasHostingSetupAdapter.js","sourceRoot":"","sources":["../../../src/providers/eas/createEasHostingSetupAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploymentProviderSetupAdapter } from '../../domain/DeploymentProviderSetupAdapter';\nimport type { DeploymentProviderSetupContext } from '../../domain/DeploymentProviderSetupContext';\nimport type { DeploymentProviderSetupInspection } from '../../domain/DeploymentProviderSetupInspection';\nimport type { DeploymentAuthenticationRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport type { DeploymentProcessRunner } from '../../runtime/process/DeploymentProcessRunner';\nimport { resolveEasProcessEnvironment } from './resolveEasProcessEnvironment';\n\nexport function createEasHostingSetupAdapter(options: {\n readonly projectRoot: string;\n readonly runProcess: DeploymentProcessRunner;\n}): DeploymentProviderSetupAdapter {\n return {\n provider: 'eas',\n inspectSetup: (context) => inspectEasHostingSetup(options, context),\n };\n}\n\nasync function inspectEasHostingSetup(\n options: { readonly projectRoot: string; readonly runProcess: DeploymentProcessRunner },\n context: DeploymentProviderSetupContext,\n): Promise<DeploymentProviderSetupInspection> {\n const environment = await resolveEasProcessEnvironment(context);\n if (!environment.ok) return authenticationRequired(environment.action);\n\n const account = await options.runProcess({\n command: 'eas',\n args: ['account:view'],\n cwd: options.projectRoot,\n ...(environment.env === undefined ? {} : { env: environment.env }),\n });\n if (account.exitCode !== 0) return authenticationRequired(createAuthenticationAction());\n\n const project = await options.runProcess({\n command: 'eas',\n args: ['project:info'],\n cwd: options.projectRoot,\n ...(environment.env === undefined ? {} : { env: environment.env }),\n });\n return project.exitCode === 0 ? readyInspection() : projectLinkRequired();\n}\n\nfunction createAuthenticationAction(): DeploymentAuthenticationRequiredAction {\n return {\n type: 'authentication',\n provider: 'eas',\n target: 'web',\n code: 'EAS_AUTHENTICATION_REQUIRED',\n message: 'EAS authentication is required for Web deployment.',\n };\n}\n\nfunction authenticationRequired(\n action: DeploymentAuthenticationRequiredAction,\n): DeploymentProviderSetupInspection {\n return {\n provider: 'eas',\n authentication: { status: 'required', action },\n capabilities: [\n { capability: 'publish', status: 'unavailable', reason: 'Authentication required.' },\n ],\n provisioning: [{ type: 'authentication', action }],\n };\n}\n\nfunction readyInspection(): DeploymentProviderSetupInspection {\n return {\n provider: 'eas',\n authentication: { status: 'authenticated' },\n capabilities: [{ capability: 'publish', status: 'available' }],\n provisioning: [],\n };\n}\n\nfunction projectLinkRequired(): DeploymentProviderSetupInspection {\n return {\n provider: 'eas',\n authentication: { status: 'authenticated' },\n capabilities: [\n { capability: 'publish', status: 'unavailable', reason: 'EAS project link required.' },\n ],\n provisioning: [\n {\n type: 'manual-action',\n action: {\n type: 'manual-action',\n target: 'web',\n provider: 'eas',\n code: 'EAS_PROJECT_LINK_REQUIRED',\n message: 'Link the Expo project to an EAS project before publishing.',\n },\n },\n ],\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';
2
+ export declare function parseEasWebPublication(value: unknown, revision: string, production: boolean): WebDeploymentPublication | null;
3
+ //# sourceMappingURL=parseEasWebPublication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseEasWebPublication.d.ts","sourceRoot":"","sources":["../../../src/providers/eas/parseEasWebPublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEtF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,GAClB,wBAAwB,GAAG,IAAI,CAYjC"}
@@ -0,0 +1,31 @@
1
+ export function parseEasWebPublication(value, revision, production) {
2
+ if (!isRecord(value) || !isNonEmptyString(value.identifier) || !isHttpUrl(value.url)) {
3
+ return null;
4
+ }
5
+ return {
6
+ target: 'web',
7
+ revision,
8
+ provider: 'eas',
9
+ deploymentId: value.identifier,
10
+ url: value.url,
11
+ production,
12
+ };
13
+ }
14
+ function isRecord(value) {
15
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
16
+ }
17
+ function isNonEmptyString(value) {
18
+ return typeof value === 'string' && value.trim().length > 0;
19
+ }
20
+ function isHttpUrl(value) {
21
+ if (!isNonEmptyString(value))
22
+ return false;
23
+ try {
24
+ const parsed = new URL(value);
25
+ return parsed.protocol === 'https:' || parsed.protocol === 'http:';
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ //# sourceMappingURL=parseEasWebPublication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseEasWebPublication.js","sourceRoot":"","sources":["../../../src/providers/eas/parseEasWebPublication.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,KAAc,EACd,QAAgB,EAChB,UAAmB;IAEnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,MAAM,EAAE,KAAK;QACb,QAAQ;QACR,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK,CAAC,UAAU;QAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';\n\nexport function parseEasWebPublication(\n value: unknown,\n revision: string,\n production: boolean,\n): WebDeploymentPublication | null {\n if (!isRecord(value) || !isNonEmptyString(value.identifier) || !isHttpUrl(value.url)) {\n return null;\n }\n return {\n target: 'web',\n revision,\n provider: 'eas',\n deploymentId: value.identifier,\n url: value.url,\n production,\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nfunction isHttpUrl(value: unknown): value is string {\n if (!isNonEmptyString(value)) return false;\n try {\n const parsed = new URL(value);\n return parsed.protocol === 'https:' || parsed.protocol === 'http:';\n } catch {\n return false;\n }\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentFailure } from '../../domain/DeploymentFailure';
3
+ import type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';
4
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
5
+ import type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';
6
+ import type { WebDeploymentPublishIntent } from '../../domain/WebDeploymentPublishIntent';
7
+ import type { DeploymentProcessRunner } from '../../runtime/process/DeploymentProcessRunner';
8
+ export type EasWebPublishResult = {
9
+ readonly status: 'completed';
10
+ readonly publication: WebDeploymentPublication;
11
+ } | {
12
+ readonly status: 'action-required';
13
+ readonly action: DeploymentRequiredAction;
14
+ } | {
15
+ readonly status: 'failed';
16
+ readonly failure: DeploymentFailure;
17
+ };
18
+ export declare function publishWebToEas(options: {
19
+ readonly projectRoot: string;
20
+ readonly exportDirectory: string;
21
+ readonly revision: string;
22
+ readonly intent: WebDeploymentPublishIntent;
23
+ readonly credentials: readonly DeploymentCredentialReference[];
24
+ readonly resolveSecret: DeploymentSecretResolver;
25
+ readonly runProcess: DeploymentProcessRunner;
26
+ }): Promise<EasWebPublishResult>;
27
+ //# sourceMappingURL=publishWebToEas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishWebToEas.d.ts","sourceRoot":"","sources":["../../../src/providers/eas/publishWebToEas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAI7F,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEvE,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;CAC9C,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2B/B"}
@@ -0,0 +1,52 @@
1
+ import { parseEasWebPublication } from './parseEasWebPublication';
2
+ import { resolveEasProcessEnvironment } from './resolveEasProcessEnvironment';
3
+ export async function publishWebToEas(options) {
4
+ if (!isValidIntent(options.intent))
5
+ return invalidIntentFailure();
6
+ const environment = await resolveEasProcessEnvironment(options);
7
+ if (!environment.ok)
8
+ return { status: 'action-required', action: environment.action };
9
+ const result = await options.runProcess({
10
+ command: 'eas',
11
+ args: createDeployArgs(options.exportDirectory, options.intent),
12
+ cwd: options.projectRoot,
13
+ ...(environment.env === undefined ? {} : { env: environment.env }),
14
+ });
15
+ if (result.exitCode !== 0)
16
+ return providerFailure();
17
+ let parsed;
18
+ try {
19
+ parsed = JSON.parse(result.stdout);
20
+ }
21
+ catch {
22
+ return providerFailure('EAS_WEB_INVALID_RESULT', 'EAS Hosting returned an invalid result.');
23
+ }
24
+ const publication = parseEasWebPublication(parsed, options.revision, options.intent.mode === 'production');
25
+ return publication === null
26
+ ? providerFailure('EAS_WEB_INVALID_RESULT', 'EAS Hosting returned an invalid result.')
27
+ : { status: 'completed', publication };
28
+ }
29
+ function createDeployArgs(exportDirectory, intent) {
30
+ const args = ['deploy', '--json', '--non-interactive', '--export-dir', exportDirectory];
31
+ if (intent.mode === 'production')
32
+ args.push('--prod');
33
+ if (intent.alias !== undefined)
34
+ args.push('--alias', intent.alias);
35
+ if (intent.environment !== undefined)
36
+ args.push('--environment', intent.environment);
37
+ return args;
38
+ }
39
+ function isValidIntent(intent) {
40
+ return ((intent.alias === undefined || intent.alias.trim().length > 0) &&
41
+ (intent.environment === undefined || intent.environment.trim().length > 0));
42
+ }
43
+ function invalidIntentFailure() {
44
+ return providerFailure('INVALID_WEB_PUBLISH_INTENT', 'Web publish intent is invalid.');
45
+ }
46
+ function providerFailure(code = 'EAS_WEB_PUBLISH_FAILED', message = 'EAS Hosting publication failed.') {
47
+ return {
48
+ status: 'failed',
49
+ failure: { code, message, target: 'web', provider: 'eas' },
50
+ };
51
+ }
52
+ //# sourceMappingURL=publishWebToEas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishWebToEas.js","sourceRoot":"","sources":["../../../src/providers/eas/publishWebToEas.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';\nimport type { DeploymentFailure } from '../../domain/DeploymentFailure';\nimport type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';\nimport type { WebDeploymentPublication } from '../../domain/WebDeploymentPublication';\nimport type { WebDeploymentPublishIntent } from '../../domain/WebDeploymentPublishIntent';\nimport type { DeploymentProcessRunner } from '../../runtime/process/DeploymentProcessRunner';\nimport { parseEasWebPublication } from './parseEasWebPublication';\nimport { resolveEasProcessEnvironment } from './resolveEasProcessEnvironment';\n\nexport type EasWebPublishResult =\n | { readonly status: 'completed'; readonly publication: WebDeploymentPublication }\n | { readonly status: 'action-required'; readonly action: DeploymentRequiredAction }\n | { readonly status: 'failed'; readonly failure: DeploymentFailure };\n\nexport async function publishWebToEas(options: {\n readonly projectRoot: string;\n readonly exportDirectory: string;\n readonly revision: string;\n readonly intent: WebDeploymentPublishIntent;\n readonly credentials: readonly DeploymentCredentialReference[];\n readonly resolveSecret: DeploymentSecretResolver;\n readonly runProcess: DeploymentProcessRunner;\n}): Promise<EasWebPublishResult> {\n if (!isValidIntent(options.intent)) return invalidIntentFailure();\n const environment = await resolveEasProcessEnvironment(options);\n if (!environment.ok) return { status: 'action-required', action: environment.action };\n\n const result = await options.runProcess({\n command: 'eas',\n args: createDeployArgs(options.exportDirectory, options.intent),\n cwd: options.projectRoot,\n ...(environment.env === undefined ? {} : { env: environment.env }),\n });\n if (result.exitCode !== 0) return providerFailure();\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(result.stdout);\n } catch {\n return providerFailure('EAS_WEB_INVALID_RESULT', 'EAS Hosting returned an invalid result.');\n }\n const publication = parseEasWebPublication(\n parsed,\n options.revision,\n options.intent.mode === 'production',\n );\n return publication === null\n ? providerFailure('EAS_WEB_INVALID_RESULT', 'EAS Hosting returned an invalid result.')\n : { status: 'completed', publication };\n}\n\nfunction createDeployArgs(\n exportDirectory: string,\n intent: WebDeploymentPublishIntent,\n): readonly string[] {\n const args = ['deploy', '--json', '--non-interactive', '--export-dir', exportDirectory];\n if (intent.mode === 'production') args.push('--prod');\n if (intent.alias !== undefined) args.push('--alias', intent.alias);\n if (intent.environment !== undefined) args.push('--environment', intent.environment);\n return args;\n}\n\nfunction isValidIntent(intent: WebDeploymentPublishIntent): boolean {\n return (\n (intent.alias === undefined || intent.alias.trim().length > 0) &&\n (intent.environment === undefined || intent.environment.trim().length > 0)\n );\n}\n\nfunction invalidIntentFailure(): EasWebPublishResult {\n return providerFailure('INVALID_WEB_PUBLISH_INTENT', 'Web publish intent is invalid.');\n}\n\nfunction providerFailure(\n code = 'EAS_WEB_PUBLISH_FAILED',\n message = 'EAS Hosting publication failed.',\n): EasWebPublishResult {\n return {\n status: 'failed',\n failure: { code, message, target: 'web', provider: 'eas' },\n };\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentAuthenticationRequiredAction } from '../../domain/DeploymentRequiredAction';
3
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
4
+ export type EasProcessEnvironmentResult = {
5
+ readonly ok: true;
6
+ readonly env?: Readonly<Record<string, string>>;
7
+ } | {
8
+ readonly ok: false;
9
+ readonly action: DeploymentAuthenticationRequiredAction;
10
+ };
11
+ export declare function resolveEasProcessEnvironment(options: {
12
+ readonly credentials: readonly DeploymentCredentialReference[];
13
+ readonly resolveSecret: DeploymentSecretResolver;
14
+ }): Promise<EasProcessEnvironmentResult>;
15
+ //# sourceMappingURL=resolveEasProcessEnvironment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveEasProcessEnvironment.d.ts","sourceRoot":"","sources":["../../../src/providers/eas/resolveEasProcessEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,uCAAuC,CAAC;AACpG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEtF,MAAM,MAAM,2BAA2B,GACnC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAA;CAAE,CAAC;AAEpF,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;CAClD,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAyBvC"}
@@ -0,0 +1,26 @@
1
+ export async function resolveEasProcessEnvironment(options) {
2
+ const reference = options.credentials.find((credential) => credential.provider === 'eas' && credential.kind === 'expo-token');
3
+ if (reference === undefined)
4
+ return { ok: true };
5
+ let token;
6
+ try {
7
+ token = await options.resolveSecret(reference);
8
+ }
9
+ catch {
10
+ token = null;
11
+ }
12
+ if (token !== null && token.length > 0) {
13
+ return { ok: true, env: { EXPO_TOKEN: token } };
14
+ }
15
+ return {
16
+ ok: false,
17
+ action: {
18
+ type: 'authentication',
19
+ provider: 'eas',
20
+ target: 'web',
21
+ code: 'EAS_AUTHENTICATION_REQUIRED',
22
+ message: 'EAS authentication is required for Web deployment.',
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=resolveEasProcessEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveEasProcessEnvironment.js","sourceRoot":"","sources":["../../../src/providers/eas/resolveEasProcessEnvironment.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAGlD;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACxC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CAClF,CAAC;IACF,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAEjD,IAAI,KAAoB,CAAC;IACzB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC;IAClD,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE;YACN,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,oDAAoD;SAC9D;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';\nimport type { DeploymentAuthenticationRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';\n\nexport type EasProcessEnvironmentResult =\n | { readonly ok: true; readonly env?: Readonly<Record<string, string>> }\n | { readonly ok: false; readonly action: DeploymentAuthenticationRequiredAction };\n\nexport async function resolveEasProcessEnvironment(options: {\n readonly credentials: readonly DeploymentCredentialReference[];\n readonly resolveSecret: DeploymentSecretResolver;\n}): Promise<EasProcessEnvironmentResult> {\n const reference = options.credentials.find(\n (credential) => credential.provider === 'eas' && credential.kind === 'expo-token',\n );\n if (reference === undefined) return { ok: true };\n\n let token: string | null;\n try {\n token = await options.resolveSecret(reference);\n } catch {\n token = null;\n }\n if (token !== null && token.length > 0) {\n return { ok: true, env: { EXPO_TOKEN: token } };\n }\n return {\n ok: false,\n action: {\n type: 'authentication',\n provider: 'eas',\n target: 'web',\n code: 'EAS_AUTHENTICATION_REQUIRED',\n message: 'EAS authentication is required for Web deployment.',\n },\n };\n}\n"]}
@@ -0,0 +1,6 @@
1
+ interface DeploymentHttpProbeResult {
2
+ readonly status: number;
3
+ }
4
+ export type DeploymentHttpProbe = (url: string) => Promise<DeploymentHttpProbeResult>;
5
+ export {};
6
+ //# sourceMappingURL=DeploymentHttpProbe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentHttpProbe.d.ts","sourceRoot":"","sources":["../../../src/runtime/http/DeploymentHttpProbe.ts"],"names":[],"mappings":"AAAA,UAAU,yBAAyB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DeploymentHttpProbe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentHttpProbe.js","sourceRoot":"","sources":["../../../src/runtime/http/DeploymentHttpProbe.ts"],"names":[],"mappings":"","sourcesContent":["interface DeploymentHttpProbeResult {\n readonly status: number;\n}\n\nexport type DeploymentHttpProbe = (url: string) => Promise<DeploymentHttpProbeResult>;\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentHttpProbe } from './DeploymentHttpProbe';
2
+ export declare const probeDeploymentHttp: DeploymentHttpProbe;
3
+ //# sourceMappingURL=probeDeploymentHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probeDeploymentHttp.d.ts","sourceRoot":"","sources":["../../../src/runtime/http/probeDeploymentHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,eAAO,MAAM,mBAAmB,EAAE,mBAGjC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const probeDeploymentHttp = async (url) => {
2
+ const response = await fetch(url, { method: 'GET', redirect: 'follow' });
3
+ return { status: response.status };
4
+ };
5
+ //# sourceMappingURL=probeDeploymentHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probeDeploymentHttp.js","sourceRoot":"","sources":["../../../src/runtime/http/probeDeploymentHttp.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAwB,KAAK,EAAE,GAAG,EAAE,EAAE;IACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACrC,CAAC,CAAC","sourcesContent":["import type { DeploymentHttpProbe } from './DeploymentHttpProbe';\n\nexport const probeDeploymentHttp: DeploymentHttpProbe = async (url) => {\n const response = await fetch(url, { method: 'GET', redirect: 'follow' });\n return { status: response.status };\n};\n"]}
@@ -0,0 +1,13 @@
1
+ export interface DeploymentProcessRequest {
2
+ readonly command: string;
3
+ readonly args: readonly string[];
4
+ readonly cwd: string;
5
+ readonly env?: Readonly<Record<string, string>>;
6
+ }
7
+ export interface DeploymentProcessResult {
8
+ readonly exitCode: number;
9
+ readonly stdout: string;
10
+ readonly stderr: string;
11
+ }
12
+ export type DeploymentProcessRunner = (request: DeploymentProcessRequest) => Promise<DeploymentProcessResult>;
13
+ //# sourceMappingURL=DeploymentProcessRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentProcessRunner.d.ts","sourceRoot":"","sources":["../../../src/runtime/process/DeploymentProcessRunner.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACpC,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DeploymentProcessRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentProcessRunner.js","sourceRoot":"","sources":["../../../src/runtime/process/DeploymentProcessRunner.ts"],"names":[],"mappings":"","sourcesContent":["export interface DeploymentProcessRequest {\n readonly command: string;\n readonly args: readonly string[];\n readonly cwd: string;\n readonly env?: Readonly<Record<string, string>>;\n}\n\nexport interface DeploymentProcessResult {\n readonly exitCode: number;\n readonly stdout: string;\n readonly stderr: string;\n}\n\nexport type DeploymentProcessRunner = (\n request: DeploymentProcessRequest,\n) => Promise<DeploymentProcessResult>;\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentProcessRunner } from './DeploymentProcessRunner';
2
+ export declare const runDeploymentProcess: DeploymentProcessRunner;
3
+ //# sourceMappingURL=runDeploymentProcess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runDeploymentProcess.d.ts","sourceRoot":"","sources":["../../../src/runtime/process/runDeploymentProcess.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,eAAO,MAAM,oBAAoB,EAAE,uBA6B/B,CAAC"}