@ankhorage/deploy 0.9.0 → 0.11.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 (139) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/cli/DeployCliEnvironment.d.ts +27 -0
  4. package/dist/cli/DeployCliEnvironment.d.ts.map +1 -0
  5. package/dist/cli/DeployCliEnvironment.js +27 -0
  6. package/dist/cli/DeployCliEnvironment.js.map +1 -0
  7. package/dist/cli/DeployCliExecutionOutcome.d.ts +7 -0
  8. package/dist/cli/DeployCliExecutionOutcome.d.ts.map +1 -0
  9. package/dist/cli/DeployCliExecutionOutcome.js +2 -0
  10. package/dist/cli/DeployCliExecutionOutcome.js.map +1 -0
  11. package/dist/cli/DeployCliExitCode.d.ts +4 -0
  12. package/dist/cli/DeployCliExitCode.d.ts.map +1 -0
  13. package/dist/cli/DeployCliExitCode.js +2 -0
  14. package/dist/cli/DeployCliExitCode.js.map +1 -0
  15. package/dist/cli/DeployCliExitCodes.d.ts +19 -0
  16. package/dist/cli/DeployCliExitCodes.d.ts.map +1 -0
  17. package/dist/cli/DeployCliExitCodes.js +19 -0
  18. package/dist/cli/DeployCliExitCodes.js.map +1 -0
  19. package/dist/cli/DeployCliInput.d.ts +6 -0
  20. package/dist/cli/DeployCliInput.d.ts.map +1 -0
  21. package/dist/cli/DeployCliInput.js +2 -0
  22. package/dist/cli/DeployCliInput.js.map +1 -0
  23. package/dist/cli/DeployCliInspectionResult.d.ts +12 -0
  24. package/dist/cli/DeployCliInspectionResult.d.ts.map +1 -0
  25. package/dist/cli/DeployCliInspectionResult.js +2 -0
  26. package/dist/cli/DeployCliInspectionResult.js.map +1 -0
  27. package/dist/cli/DeployCliJsonEnvelope.d.ts +34 -0
  28. package/dist/cli/DeployCliJsonEnvelope.d.ts.map +1 -0
  29. package/dist/cli/DeployCliJsonEnvelope.js +2 -0
  30. package/dist/cli/DeployCliJsonEnvelope.js.map +1 -0
  31. package/dist/cli/DeployCliOptions.d.ts +14 -0
  32. package/dist/cli/DeployCliOptions.d.ts.map +1 -0
  33. package/dist/cli/DeployCliOptions.js +2 -0
  34. package/dist/cli/DeployCliOptions.js.map +1 -0
  35. package/dist/cli/DeployCliPlanOutcome.d.ts +6 -0
  36. package/dist/cli/DeployCliPlanOutcome.d.ts.map +1 -0
  37. package/dist/cli/DeployCliPlanOutcome.js +2 -0
  38. package/dist/cli/DeployCliPlanOutcome.js.map +1 -0
  39. package/dist/cli/DeployCliRuntime.d.ts +9 -0
  40. package/dist/cli/DeployCliRuntime.d.ts.map +1 -0
  41. package/dist/cli/DeployCliRuntime.js +2 -0
  42. package/dist/cli/DeployCliRuntime.js.map +1 -0
  43. package/dist/cli/createDeployCliAccess.d.ts +4 -0
  44. package/dist/cli/createDeployCliAccess.d.ts.map +1 -0
  45. package/dist/cli/createDeployCliAccess.js +65 -0
  46. package/dist/cli/createDeployCliAccess.js.map +1 -0
  47. package/dist/cli/createDeployCliConfirmationEnvelope.d.ts +5 -0
  48. package/dist/cli/createDeployCliConfirmationEnvelope.d.ts.map +1 -0
  49. package/dist/cli/createDeployCliConfirmationEnvelope.js +21 -0
  50. package/dist/cli/createDeployCliConfirmationEnvelope.js.map +1 -0
  51. package/dist/cli/createDeployCliExecutionEnvelope.d.ts +5 -0
  52. package/dist/cli/createDeployCliExecutionEnvelope.d.ts.map +1 -0
  53. package/dist/cli/createDeployCliExecutionEnvelope.js +35 -0
  54. package/dist/cli/createDeployCliExecutionEnvelope.js.map +1 -0
  55. package/dist/cli/createDeployCliFailureEnvelope.d.ts +4 -0
  56. package/dist/cli/createDeployCliFailureEnvelope.d.ts.map +1 -0
  57. package/dist/cli/createDeployCliFailureEnvelope.js +13 -0
  58. package/dist/cli/createDeployCliFailureEnvelope.js.map +1 -0
  59. package/dist/cli/createDeployCliPlanEnvelope.d.ts +6 -0
  60. package/dist/cli/createDeployCliPlanEnvelope.d.ts.map +1 -0
  61. package/dist/cli/createDeployCliPlanEnvelope.js +20 -0
  62. package/dist/cli/createDeployCliPlanEnvelope.js.map +1 -0
  63. package/dist/cli/createDeployCliProvider.d.ts +4 -0
  64. package/dist/cli/createDeployCliProvider.d.ts.map +1 -0
  65. package/dist/cli/createDeployCliProvider.js +35 -0
  66. package/dist/cli/createDeployCliProvider.js.map +1 -0
  67. package/dist/cli/defaultDeployCliRuntime.d.ts +3 -0
  68. package/dist/cli/defaultDeployCliRuntime.d.ts.map +1 -0
  69. package/dist/cli/defaultDeployCliRuntime.js +11 -0
  70. package/dist/cli/defaultDeployCliRuntime.js.map +1 -0
  71. package/dist/cli/getDeployCliExecutionOutcome.d.ts +4 -0
  72. package/dist/cli/getDeployCliExecutionOutcome.d.ts.map +1 -0
  73. package/dist/cli/getDeployCliExecutionOutcome.js +19 -0
  74. package/dist/cli/getDeployCliExecutionOutcome.js.map +1 -0
  75. package/dist/cli/getDeployCliPlanOutcome.d.ts +5 -0
  76. package/dist/cli/getDeployCliPlanOutcome.d.ts.map +1 -0
  77. package/dist/cli/getDeployCliPlanOutcome.js +17 -0
  78. package/dist/cli/getDeployCliPlanOutcome.js.map +1 -0
  79. package/dist/cli/handleDeployCliCommand.d.ts +5 -0
  80. package/dist/cli/handleDeployCliCommand.d.ts.map +1 -0
  81. package/dist/cli/handleDeployCliCommand.js +101 -0
  82. package/dist/cli/handleDeployCliCommand.js.map +1 -0
  83. package/dist/cli/handleDeployCliPlan.d.ts +5 -0
  84. package/dist/cli/handleDeployCliPlan.d.ts.map +1 -0
  85. package/dist/cli/handleDeployCliPlan.js +24 -0
  86. package/dist/cli/handleDeployCliPlan.js.map +1 -0
  87. package/dist/cli/index.d.ts +7 -0
  88. package/dist/cli/index.d.ts.map +1 -0
  89. package/dist/cli/index.js +8 -0
  90. package/dist/cli/index.js.map +1 -0
  91. package/dist/cli/inspectDeployCliRelease.d.ts +5 -0
  92. package/dist/cli/inspectDeployCliRelease.d.ts.map +1 -0
  93. package/dist/cli/inspectDeployCliRelease.js +17 -0
  94. package/dist/cli/inspectDeployCliRelease.js.map +1 -0
  95. package/dist/cli/mapDeployCliPlan.d.ts +5 -0
  96. package/dist/cli/mapDeployCliPlan.d.ts.map +1 -0
  97. package/dist/cli/mapDeployCliPlan.js +30 -0
  98. package/dist/cli/mapDeployCliPlan.js.map +1 -0
  99. package/dist/cli/parseDeployCliOptions.d.ts +11 -0
  100. package/dist/cli/parseDeployCliOptions.d.ts.map +1 -0
  101. package/dist/cli/parseDeployCliOptions.js +93 -0
  102. package/dist/cli/parseDeployCliOptions.js.map +1 -0
  103. package/dist/cli/redactDeployCliActions.d.ts +3 -0
  104. package/dist/cli/redactDeployCliActions.d.ts.map +1 -0
  105. package/dist/cli/redactDeployCliActions.js +9 -0
  106. package/dist/cli/redactDeployCliActions.js.map +1 -0
  107. package/dist/cli/redactDeployCliFailure.d.ts +3 -0
  108. package/dist/cli/redactDeployCliFailure.d.ts.map +1 -0
  109. package/dist/cli/redactDeployCliFailure.js +5 -0
  110. package/dist/cli/redactDeployCliFailure.js.map +1 -0
  111. package/dist/cli/redactDeployCliPlan.d.ts +3 -0
  112. package/dist/cli/redactDeployCliPlan.d.ts.map +1 -0
  113. package/dist/cli/redactDeployCliPlan.js +11 -0
  114. package/dist/cli/redactDeployCliPlan.js.map +1 -0
  115. package/dist/cli/redactDeployCliText.d.ts +2 -0
  116. package/dist/cli/redactDeployCliText.d.ts.map +1 -0
  117. package/dist/cli/redactDeployCliText.js +61 -0
  118. package/dist/cli/redactDeployCliText.js.map +1 -0
  119. package/dist/cli/renderDeployCliExecution.d.ts +3 -0
  120. package/dist/cli/renderDeployCliExecution.d.ts.map +1 -0
  121. package/dist/cli/renderDeployCliExecution.js +19 -0
  122. package/dist/cli/renderDeployCliExecution.js.map +1 -0
  123. package/dist/cli/renderDeployCliFailure.d.ts +3 -0
  124. package/dist/cli/renderDeployCliFailure.d.ts.map +1 -0
  125. package/dist/cli/renderDeployCliFailure.js +6 -0
  126. package/dist/cli/renderDeployCliFailure.js.map +1 -0
  127. package/dist/cli/renderDeployCliPlan.d.ts +4 -0
  128. package/dist/cli/renderDeployCliPlan.d.ts.map +1 -0
  129. package/dist/cli/renderDeployCliPlan.js +39 -0
  130. package/dist/cli/renderDeployCliPlan.js.map +1 -0
  131. package/dist/cli/writeDeployCliHuman.d.ts +3 -0
  132. package/dist/cli/writeDeployCliHuman.d.ts.map +1 -0
  133. package/dist/cli/writeDeployCliHuman.js +9 -0
  134. package/dist/cli/writeDeployCliHuman.js.map +1 -0
  135. package/dist/cli/writeDeployCliJson.d.ts +4 -0
  136. package/dist/cli/writeDeployCliJson.d.ts.map +1 -0
  137. package/dist/cli/writeDeployCliJson.js +4 -0
  138. package/dist/cli/writeDeployCliJson.js.map +1 -0
  139. package/package.json +15 -5
@@ -0,0 +1,3 @@
1
+ import type { DeploymentRequiredAction } from '../index.js';
2
+ export declare function redactDeployCliActions(actions: readonly DeploymentRequiredAction[], env: Readonly<Record<string, string | undefined>>): readonly DeploymentRequiredAction[];
3
+ //# sourceMappingURL=redactDeployCliActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliActions.d.ts","sourceRoot":"","sources":["../../src/cli/redactDeployCliActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAG5D,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,wBAAwB,EAAE,EAC5C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,SAAS,wBAAwB,EAAE,CAMrC"}
@@ -0,0 +1,9 @@
1
+ import { redactDeployCliText } from './redactDeployCliText.js';
2
+ export function redactDeployCliActions(actions, env) {
3
+ return actions.map((action) => ({
4
+ ...action,
5
+ message: redactDeployCliText(action.message, env),
6
+ ...('url' in action ? { url: redactDeployCliText(action.url, env) } : {}),
7
+ }));
8
+ }
9
+ //# sourceMappingURL=redactDeployCliActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliActions.js","sourceRoot":"","sources":["../../src/cli/redactDeployCliActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,sBAAsB,CACpC,OAA4C,EAC5C,GAAiD;IAEjD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,MAAM;QACT,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;QACjD,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type { DeploymentRequiredAction } from '../index.js';\nimport { redactDeployCliText } from './redactDeployCliText.js';\n\nexport function redactDeployCliActions(\n actions: readonly DeploymentRequiredAction[],\n env: Readonly<Record<string, string | undefined>>,\n): readonly DeploymentRequiredAction[] {\n return actions.map((action) => ({\n ...action,\n message: redactDeployCliText(action.message, env),\n ...('url' in action ? { url: redactDeployCliText(action.url, env) } : {}),\n }));\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentFailure } from '../index.js';
2
+ export declare function redactDeployCliFailure(failure: DeploymentFailure, env: Readonly<Record<string, string | undefined>>): DeploymentFailure;
3
+ //# sourceMappingURL=redactDeployCliFailure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliFailure.d.ts","sourceRoot":"","sources":["../../src/cli/redactDeployCliFailure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,iBAAiB,CAEnB"}
@@ -0,0 +1,5 @@
1
+ import { redactDeployCliText } from './redactDeployCliText.js';
2
+ export function redactDeployCliFailure(failure, env) {
3
+ return { ...failure, message: redactDeployCliText(failure.message, env) };
4
+ }
5
+ //# sourceMappingURL=redactDeployCliFailure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliFailure.js","sourceRoot":"","sources":["../../src/cli/redactDeployCliFailure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,sBAAsB,CACpC,OAA0B,EAC1B,GAAiD;IAEjD,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AAC5E,CAAC","sourcesContent":["import type { DeploymentFailure } from '../index.js';\nimport { redactDeployCliText } from './redactDeployCliText.js';\n\nexport function redactDeployCliFailure(\n failure: DeploymentFailure,\n env: Readonly<Record<string, string | undefined>>,\n): DeploymentFailure {\n return { ...failure, message: redactDeployCliText(failure.message, env) };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { ReleasePlan } from '../index.js';
2
+ export declare function redactDeployCliPlan(plan: ReleasePlan, env: Readonly<Record<string, string | undefined>>): ReleasePlan;
3
+ //# sourceMappingURL=redactDeployCliPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliPlan.d.ts","sourceRoot":"","sources":["../../src/cli/redactDeployCliPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,WAAW,CAQb"}
@@ -0,0 +1,11 @@
1
+ import { redactDeployCliText } from './redactDeployCliText.js';
2
+ export function redactDeployCliPlan(plan, env) {
3
+ return {
4
+ ...plan,
5
+ diagnostics: plan.diagnostics.map((diagnostic) => ({
6
+ ...diagnostic,
7
+ message: redactDeployCliText(diagnostic.message, env),
8
+ })),
9
+ };
10
+ }
11
+ //# sourceMappingURL=redactDeployCliPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliPlan.js","sourceRoot":"","sources":["../../src/cli/redactDeployCliPlan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CACjC,IAAiB,EACjB,GAAiD;IAEjD,OAAO;QACL,GAAG,IAAI;QACP,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,UAAU;YACb,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;SACtD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC","sourcesContent":["import type { ReleasePlan } from '../index.js';\nimport { redactDeployCliText } from './redactDeployCliText.js';\n\nexport function redactDeployCliPlan(\n plan: ReleasePlan,\n env: Readonly<Record<string, string | undefined>>,\n): ReleasePlan {\n return {\n ...plan,\n diagnostics: plan.diagnostics.map((diagnostic) => ({\n ...diagnostic,\n message: redactDeployCliText(diagnostic.message, env),\n })),\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function redactDeployCliText(text: string, env: Readonly<Record<string, string | undefined>>): string;
2
+ //# sourceMappingURL=redactDeployCliText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliText.d.ts","sourceRoot":"","sources":["../../src/cli/redactDeployCliText.ts"],"names":[],"mappings":"AAaA,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,MAAM,CAGR"}
@@ -0,0 +1,61 @@
1
+ const SENSITIVE_KEYS = new Set([
2
+ 'privateKey',
3
+ 'private_key',
4
+ 'clientSecret',
5
+ 'client_secret',
6
+ 'secret',
7
+ 'token',
8
+ 'access_token',
9
+ 'refresh_token',
10
+ 'password',
11
+ 'passphrase',
12
+ ]);
13
+ export function redactDeployCliText(text, env) {
14
+ const secrets = collectSecrets(env).sort((left, right) => right.length - left.length);
15
+ return secrets.reduce((result, secret) => replaceSecret(result, secret), text);
16
+ }
17
+ function collectSecrets(env) {
18
+ const secrets = new Set();
19
+ addSecret(env.ANKH_DEPLOY_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON, secrets);
20
+ addSecret(env.ANKH_DEPLOY_APP_STORE_CONNECT_API_KEY_JSON, secrets);
21
+ addSecret(env.ANKH_DEPLOY_EAS_TOKEN, secrets);
22
+ return [...secrets];
23
+ }
24
+ function addSecret(rawValue, secrets) {
25
+ const raw = rawValue?.trim();
26
+ if (raw === undefined || raw.length === 0)
27
+ return;
28
+ secrets.add(raw);
29
+ collectJsonSecrets(raw, secrets);
30
+ }
31
+ function collectJsonSecrets(raw, secrets) {
32
+ try {
33
+ const parsed = JSON.parse(raw);
34
+ visitJson(parsed, secrets);
35
+ }
36
+ catch {
37
+ return;
38
+ }
39
+ }
40
+ function visitJson(value, secrets) {
41
+ if (Array.isArray(value)) {
42
+ value.forEach((item) => visitJson(item, secrets));
43
+ return;
44
+ }
45
+ if (!isRecord(value))
46
+ return;
47
+ for (const [key, child] of Object.entries(value)) {
48
+ if (SENSITIVE_KEYS.has(key) && typeof child === 'string' && child.length > 0) {
49
+ secrets.add(child);
50
+ }
51
+ visitJson(child, secrets);
52
+ }
53
+ }
54
+ function replaceSecret(text, secret) {
55
+ const escaped = JSON.stringify(secret).slice(1, -1);
56
+ return text.split(secret).join('[REDACTED]').split(escaped).join('[REDACTED]');
57
+ }
58
+ function isRecord(value) {
59
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
60
+ }
61
+ //# sourceMappingURL=redactDeployCliText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactDeployCliText.js","sourceRoot":"","sources":["../../src/cli/redactDeployCliText.ts"],"names":[],"mappings":"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","sourcesContent":["const SENSITIVE_KEYS = new Set([\n 'privateKey',\n 'private_key',\n 'clientSecret',\n 'client_secret',\n 'secret',\n 'token',\n 'access_token',\n 'refresh_token',\n 'password',\n 'passphrase',\n]);\n\nexport function redactDeployCliText(\n text: string,\n env: Readonly<Record<string, string | undefined>>,\n): string {\n const secrets = collectSecrets(env).sort((left, right) => right.length - left.length);\n return secrets.reduce((result, secret) => replaceSecret(result, secret), text);\n}\n\nfunction collectSecrets(env: Readonly<Record<string, string | undefined>>): string[] {\n const secrets = new Set<string>();\n addSecret(env.ANKH_DEPLOY_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON, secrets);\n addSecret(env.ANKH_DEPLOY_APP_STORE_CONNECT_API_KEY_JSON, secrets);\n addSecret(env.ANKH_DEPLOY_EAS_TOKEN, secrets);\n return [...secrets];\n}\n\nfunction addSecret(rawValue: string | undefined, secrets: Set<string>): void {\n const raw = rawValue?.trim();\n if (raw === undefined || raw.length === 0) return;\n secrets.add(raw);\n collectJsonSecrets(raw, secrets);\n}\n\nfunction collectJsonSecrets(raw: string, secrets: Set<string>): void {\n try {\n const parsed: unknown = JSON.parse(raw);\n visitJson(parsed, secrets);\n } catch {\n return;\n }\n}\n\nfunction visitJson(value: unknown, secrets: Set<string>): void {\n if (Array.isArray(value)) {\n value.forEach((item) => visitJson(item, secrets));\n return;\n }\n if (!isRecord(value)) return;\n for (const [key, child] of Object.entries(value)) {\n if (SENSITIVE_KEYS.has(key) && typeof child === 'string' && child.length > 0) {\n secrets.add(child);\n }\n visitJson(child, secrets);\n }\n}\n\nfunction replaceSecret(text: string, secret: string): string {\n const escaped = JSON.stringify(secret).slice(1, -1);\n return text.split(secret).join('[REDACTED]').split(escaped).join('[REDACTED]');\n}\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { ProjectReleaseExecution } from '../project/index.js';
2
+ export declare function renderDeployCliExecution(execution: ProjectReleaseExecution, executionId: string): string;
3
+ //# sourceMappingURL=renderDeployCliExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDeployCliExecution.d.ts","sourceRoot":"","sources":["../../src/cli/renderDeployCliExecution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,uBAAuB,EAClC,WAAW,EAAE,MAAM,GAClB,MAAM,CAkBR"}
@@ -0,0 +1,19 @@
1
+ export function renderDeployCliExecution(execution, executionId) {
2
+ const lines = [
3
+ `Execution: ${executionId}`,
4
+ `Result: ${execution.result.status}`,
5
+ `Current revision: ${execution.result.currentRevision}`,
6
+ `History recorded: ${execution.historyRecorded ? 'yes' : 'no'}`,
7
+ ];
8
+ if (execution.result.code !== undefined)
9
+ lines.push(`Code: ${execution.result.code}`);
10
+ if (execution.result.executedStepIds.length > 0) {
11
+ lines.push(`Executed steps: ${execution.result.executedStepIds.join(', ')}`);
12
+ }
13
+ if (execution.historyFailure !== undefined) {
14
+ lines.push(`History failure: ${execution.historyFailure.code}: ${execution.historyFailure.message}`);
15
+ }
16
+ lines.push('');
17
+ return lines.join('\n');
18
+ }
19
+ //# sourceMappingURL=renderDeployCliExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDeployCliExecution.js","sourceRoot":"","sources":["../../src/cli/renderDeployCliExecution.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,SAAkC,EAClC,WAAmB;IAEnB,MAAM,KAAK,GAAG;QACZ,cAAc,WAAW,EAAE;QAC3B,WAAW,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QACpC,qBAAqB,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE;QACvD,qBAAqB,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;KAChE,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,IAAI,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,SAAS,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CACR,oBAAoB,SAAS,CAAC,cAAc,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import type { ProjectReleaseExecution } from '../project/index.js';\n\nexport function renderDeployCliExecution(\n execution: ProjectReleaseExecution,\n executionId: string,\n): string {\n const lines = [\n `Execution: ${executionId}`,\n `Result: ${execution.result.status}`,\n `Current revision: ${execution.result.currentRevision}`,\n `History recorded: ${execution.historyRecorded ? 'yes' : 'no'}`,\n ];\n if (execution.result.code !== undefined) lines.push(`Code: ${execution.result.code}`);\n if (execution.result.executedStepIds.length > 0) {\n lines.push(`Executed steps: ${execution.result.executedStepIds.join(', ')}`);\n }\n if (execution.historyFailure !== undefined) {\n lines.push(\n `History failure: ${execution.historyFailure.code}: ${execution.historyFailure.message}`,\n );\n }\n lines.push('');\n return lines.join('\\n');\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeploymentFailure } from '../index.js';
2
+ export declare function renderDeployCliFailure(failure: DeploymentFailure): string;
3
+ //# sourceMappingURL=renderDeployCliFailure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDeployCliFailure.d.ts","sourceRoot":"","sources":["../../src/cli/renderDeployCliFailure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAMzE"}
@@ -0,0 +1,6 @@
1
+ export function renderDeployCliFailure(failure) {
2
+ const scope = [failure.target, failure.provider].filter((value) => value !== undefined);
3
+ const suffix = scope.length === 0 ? '' : ` (${scope.join(' | ')})`;
4
+ return `Deploy failed: ${failure.code}: ${failure.message}${suffix}\n`;
5
+ }
6
+ //# sourceMappingURL=renderDeployCliFailure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDeployCliFailure.js","sourceRoot":"","sources":["../../src/cli/renderDeployCliFailure.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,OAA0B;IAC/D,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrD,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAChD,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACnE,OAAO,kBAAkB,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC;AACzE,CAAC","sourcesContent":["import type { DeploymentFailure } from '../index.js';\n\nexport function renderDeployCliFailure(failure: DeploymentFailure): string {\n const scope = [failure.target, failure.provider].filter(\n (value): value is string => value !== undefined,\n );\n const suffix = scope.length === 0 ? '' : ` (${scope.join(' | ')})`;\n return `Deploy failed: ${failure.code}: ${failure.message}${suffix}\\n`;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ReleasePlan } from '../index.js';
2
+ import type { ProjectReleaseInspection } from '../project/index.js';
3
+ export declare function renderDeployCliPlan(inspection: ProjectReleaseInspection, plan: ReleasePlan): string;
4
+ //# sourceMappingURL=renderDeployCliPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDeployCliPlan.d.ts","sourceRoot":"","sources":["../../src/cli/renderDeployCliPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,wBAAwB,EACpC,IAAI,EAAE,WAAW,GAChB,MAAM,CAyBR"}
@@ -0,0 +1,39 @@
1
+ export function renderDeployCliPlan(inspection, plan) {
2
+ const lines = [
3
+ `Release: ${inspection.desired.version}`,
4
+ `Targets: ${inspection.desired.targets.join(', ')}`,
5
+ `Revision: ${inspection.desired.revision}`,
6
+ `Plan status: ${plan.status}`,
7
+ '',
8
+ 'Steps:',
9
+ ];
10
+ if (plan.steps.length === 0)
11
+ lines.push(' - none');
12
+ plan.steps.forEach((step, index) => lines.push(...renderStep(step, index)));
13
+ lines.push('', 'Diagnostics:');
14
+ if (plan.diagnostics.length === 0)
15
+ lines.push(' - none');
16
+ for (const diagnostic of plan.diagnostics) {
17
+ const target = diagnostic.target === undefined ? '' : ` [${diagnostic.target}]`;
18
+ lines.push(` [${diagnostic.severity}]${target} ${diagnostic.code}: ${diagnostic.message}`);
19
+ }
20
+ lines.push('', 'Required actions:');
21
+ if (inspection.actions.length === 0)
22
+ lines.push(' - none');
23
+ for (const action of inspection.actions) {
24
+ const target = action.target === undefined ? '' : ` [${action.target}]`;
25
+ lines.push(` ${action.type}${target} ${action.code}: ${action.message}`);
26
+ }
27
+ lines.push('');
28
+ return lines.join('\n');
29
+ }
30
+ function renderStep(step, index) {
31
+ return [
32
+ ` ${index + 1}. [${step.target}] ${step.operation}`,
33
+ ` id: ${step.id}`,
34
+ ` dependsOn: ${step.dependsOn.length === 0 ? 'none' : step.dependsOn.join(', ')}`,
35
+ ` irreversible: ${step.irreversible ? 'yes' : 'no'}`,
36
+ ` retry: ${step.retry}`,
37
+ ];
38
+ }
39
+ //# sourceMappingURL=renderDeployCliPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDeployCliPlan.js","sourceRoot":"","sources":["../../src/cli/renderDeployCliPlan.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mBAAmB,CACjC,UAAoC,EACpC,IAAiB;IAEjB,MAAM,KAAK,GAAG;QACZ,YAAY,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;QACxC,YAAY,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnD,aAAa,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC1C,gBAAgB,IAAI,CAAC,MAAM,EAAE;QAC7B,EAAE;QACF,QAAQ;KACT,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,QAAQ,IAAI,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACpC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,IAAqB,EAAE,KAAa;IACtD,OAAO;QACL,KAAK,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE;QACpD,YAAY,IAAI,CAAC,EAAE,EAAE;QACrB,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACrF,sBAAsB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACxD,eAAe,IAAI,CAAC,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC","sourcesContent":["import type { ReleasePlan, ReleasePlanStep } from '../index.js';\nimport type { ProjectReleaseInspection } from '../project/index.js';\n\nexport function renderDeployCliPlan(\n inspection: ProjectReleaseInspection,\n plan: ReleasePlan,\n): string {\n const lines = [\n `Release: ${inspection.desired.version}`,\n `Targets: ${inspection.desired.targets.join(', ')}`,\n `Revision: ${inspection.desired.revision}`,\n `Plan status: ${plan.status}`,\n '',\n 'Steps:',\n ];\n if (plan.steps.length === 0) lines.push(' - none');\n plan.steps.forEach((step, index) => lines.push(...renderStep(step, index)));\n lines.push('', 'Diagnostics:');\n if (plan.diagnostics.length === 0) lines.push(' - none');\n for (const diagnostic of plan.diagnostics) {\n const target = diagnostic.target === undefined ? '' : ` [${diagnostic.target}]`;\n lines.push(` [${diagnostic.severity}]${target} ${diagnostic.code}: ${diagnostic.message}`);\n }\n lines.push('', 'Required actions:');\n if (inspection.actions.length === 0) lines.push(' - none');\n for (const action of inspection.actions) {\n const target = action.target === undefined ? '' : ` [${action.target}]`;\n lines.push(` ${action.type}${target} ${action.code}: ${action.message}`);\n }\n lines.push('');\n return lines.join('\\n');\n}\n\nfunction renderStep(step: ReleasePlanStep, index: number): string[] {\n return [\n ` ${index + 1}. [${step.target}] ${step.operation}`,\n ` id: ${step.id}`,\n ` dependsOn: ${step.dependsOn.length === 0 ? 'none' : step.dependsOn.join(', ')}`,\n ` irreversible: ${step.irreversible ? 'yes' : 'no'}`,\n ` retry: ${step.retry}`,\n ];\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { DeployCliInput } from './DeployCliInput.js';
2
+ export declare function writeDeployCliHuman(input: DeployCliInput, stream: 'stdout' | 'stderr', text: string): void;
3
+ //# sourceMappingURL=writeDeployCliHuman.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeDeployCliHuman.d.ts","sourceRoot":"","sources":["../../src/cli/writeDeployCliHuman.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAC3B,IAAI,EAAE,MAAM,GACX,IAAI,CAIN"}
@@ -0,0 +1,9 @@
1
+ import { redactDeployCliText } from './redactDeployCliText.js';
2
+ export function writeDeployCliHuman(input, stream, text) {
3
+ const safe = redactDeployCliText(text, input.context.env);
4
+ if (stream === 'stdout')
5
+ input.context.writeStdout(safe);
6
+ else
7
+ input.context.writeStderr(safe);
8
+ }
9
+ //# sourceMappingURL=writeDeployCliHuman.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeDeployCliHuman.js","sourceRoot":"","sources":["../../src/cli/writeDeployCliHuman.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CACjC,KAAqB,EACrB,MAA2B,EAC3B,IAAY;IAEZ,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,QAAQ;QAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;QACpD,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import type { DeployCliInput } from './DeployCliInput.js';\nimport { redactDeployCliText } from './redactDeployCliText.js';\n\nexport function writeDeployCliHuman(\n input: DeployCliInput,\n stream: 'stdout' | 'stderr',\n text: string,\n): void {\n const safe = redactDeployCliText(text, input.context.env);\n if (stream === 'stdout') input.context.writeStdout(safe);\n else input.context.writeStderr(safe);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { DeployCliInput } from './DeployCliInput.js';
2
+ import type { DeployCliJsonEnvelope } from './DeployCliJsonEnvelope.js';
3
+ export declare function writeDeployCliJson(input: DeployCliInput, envelope: DeployCliJsonEnvelope): void;
4
+ //# sourceMappingURL=writeDeployCliJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeDeployCliJson.d.ts","sourceRoot":"","sources":["../../src/cli/writeDeployCliJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAE/F"}
@@ -0,0 +1,4 @@
1
+ export function writeDeployCliJson(input, envelope) {
2
+ input.context.writeStdout(`${JSON.stringify(envelope)}\n`);
3
+ }
4
+ //# sourceMappingURL=writeDeployCliJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeDeployCliJson.js","sourceRoot":"","sources":["../../src/cli/writeDeployCliJson.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAAC,KAAqB,EAAE,QAA+B;IACvF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["import type { DeployCliInput } from './DeployCliInput.js';\nimport type { DeployCliJsonEnvelope } from './DeployCliJsonEnvelope.js';\n\nexport function writeDeployCliJson(input: DeployCliInput, envelope: DeployCliJsonEnvelope): void {\n input.context.writeStdout(`${JSON.stringify(envelope)}\\n`);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/deploy",
3
- "version": "0.9.0",
3
+ "version": "0.11.0",
4
4
  "description": "Declarative deployment engine for Expo apps across web, iOS, and Android — build, provision, publish, and manage releases from one configuration.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -42,7 +42,12 @@
42
42
  "import": "./dist/project/index.js",
43
43
  "default": "./dist/project/index.js"
44
44
  },
45
- "./package.json": "./package.json"
45
+ "./package.json": "./package.json",
46
+ "./cli": {
47
+ "types": "./dist/cli/index.d.ts",
48
+ "import": "./dist/cli/index.js",
49
+ "default": "./dist/cli/index.js"
50
+ }
46
51
  },
47
52
  "files": [
48
53
  "dist",
@@ -52,8 +57,12 @@
52
57
  ],
53
58
  "ankh": {
54
59
  "category": "deploy",
55
- "provider": null,
56
- "capabilities": []
60
+ "provider": "./dist/cli/index.js",
61
+ "capabilities": [
62
+ "deploy.inspect",
63
+ "deploy.plan",
64
+ "deploy.execute"
65
+ ]
57
66
  },
58
67
  "scripts": {
59
68
  "build": "rm -rf dist tsconfig.tsbuildinfo tsconfig.build.tsbuildinfo && bun x tsc -p tsconfig.build.json",
@@ -71,10 +80,11 @@
71
80
  "prepack": "bun run build"
72
81
  },
73
82
  "dependencies": {
74
- "@ankhorage/contracts": "^7.5.0",
83
+ "@ankhorage/contracts": "^7.9.0",
75
84
  "google-auth-library": "^10.9.1"
76
85
  },
77
86
  "devDependencies": {
87
+ "@ankhorage/ankh": "^0.8.0",
78
88
  "@ankhorage/devtools": "^1.4.1",
79
89
  "@ankhorage/paradox": "^0.1.21",
80
90
  "@changesets/cli": "^2.31.0",