@scalebun-release/cli 2.5.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 (210) hide show
  1. package/bin/scalebun.js +2 -0
  2. package/lib/api/client.d.ts +52 -0
  3. package/lib/api/client.d.ts.map +1 -0
  4. package/lib/api/client.js +335 -0
  5. package/lib/api/client.js.map +1 -0
  6. package/lib/commands/ci-init.d.ts +3 -0
  7. package/lib/commands/ci-init.d.ts.map +1 -0
  8. package/lib/commands/ci-init.js +348 -0
  9. package/lib/commands/ci-init.js.map +1 -0
  10. package/lib/commands/doctor.d.ts +31 -0
  11. package/lib/commands/doctor.d.ts.map +1 -0
  12. package/lib/commands/doctor.js +559 -0
  13. package/lib/commands/doctor.js.map +1 -0
  14. package/lib/commands/launch.d.ts +3 -0
  15. package/lib/commands/launch.d.ts.map +1 -0
  16. package/lib/commands/launch.js +23 -0
  17. package/lib/commands/launch.js.map +1 -0
  18. package/lib/commands/link.d.ts +16 -0
  19. package/lib/commands/link.d.ts.map +1 -0
  20. package/lib/commands/link.js +164 -0
  21. package/lib/commands/link.js.map +1 -0
  22. package/lib/commands/login.d.ts +12 -0
  23. package/lib/commands/login.d.ts.map +1 -0
  24. package/lib/commands/login.js +124 -0
  25. package/lib/commands/login.js.map +1 -0
  26. package/lib/commands/migrate-codepush.d.ts +13 -0
  27. package/lib/commands/migrate-codepush.d.ts.map +1 -0
  28. package/lib/commands/migrate-codepush.js +98 -0
  29. package/lib/commands/migrate-codepush.js.map +1 -0
  30. package/lib/commands/ota-bundle.d.ts +22 -0
  31. package/lib/commands/ota-bundle.d.ts.map +1 -0
  32. package/lib/commands/ota-bundle.js +253 -0
  33. package/lib/commands/ota-bundle.js.map +1 -0
  34. package/lib/commands/ota-channels.d.ts +3 -0
  35. package/lib/commands/ota-channels.d.ts.map +1 -0
  36. package/lib/commands/ota-channels.js +231 -0
  37. package/lib/commands/ota-channels.js.map +1 -0
  38. package/lib/commands/ota-delete-bundle.d.ts +16 -0
  39. package/lib/commands/ota-delete-bundle.d.ts.map +1 -0
  40. package/lib/commands/ota-delete-bundle.js +96 -0
  41. package/lib/commands/ota-delete-bundle.js.map +1 -0
  42. package/lib/commands/ota-inspect.d.ts +3 -0
  43. package/lib/commands/ota-inspect.d.ts.map +1 -0
  44. package/lib/commands/ota-inspect.js +258 -0
  45. package/lib/commands/ota-inspect.js.map +1 -0
  46. package/lib/commands/ota-keys.d.ts +91 -0
  47. package/lib/commands/ota-keys.d.ts.map +1 -0
  48. package/lib/commands/ota-keys.js +765 -0
  49. package/lib/commands/ota-keys.js.map +1 -0
  50. package/lib/commands/ota-promote.d.ts +3 -0
  51. package/lib/commands/ota-promote.d.ts.map +1 -0
  52. package/lib/commands/ota-promote.js +194 -0
  53. package/lib/commands/ota-promote.js.map +1 -0
  54. package/lib/commands/ota-publish.d.ts +26 -0
  55. package/lib/commands/ota-publish.d.ts.map +1 -0
  56. package/lib/commands/ota-publish.js +892 -0
  57. package/lib/commands/ota-publish.js.map +1 -0
  58. package/lib/commands/ota-rollout.d.ts +3 -0
  59. package/lib/commands/ota-rollout.d.ts.map +1 -0
  60. package/lib/commands/ota-rollout.js +265 -0
  61. package/lib/commands/ota-rollout.js.map +1 -0
  62. package/lib/commands/ota-sign.d.ts +19 -0
  63. package/lib/commands/ota-sign.d.ts.map +1 -0
  64. package/lib/commands/ota-sign.js +245 -0
  65. package/lib/commands/ota-sign.js.map +1 -0
  66. package/lib/commands/push-apns.d.ts +3 -0
  67. package/lib/commands/push-apns.d.ts.map +1 -0
  68. package/lib/commands/push-apns.js +166 -0
  69. package/lib/commands/push-apns.js.map +1 -0
  70. package/lib/commands/quickstart.d.ts +4 -0
  71. package/lib/commands/quickstart.d.ts.map +1 -0
  72. package/lib/commands/quickstart.js +672 -0
  73. package/lib/commands/quickstart.js.map +1 -0
  74. package/lib/commands/shell.d.ts +28 -0
  75. package/lib/commands/shell.d.ts.map +1 -0
  76. package/lib/commands/shell.js +512 -0
  77. package/lib/commands/shell.js.map +1 -0
  78. package/lib/commands/tls-pins.d.ts +27 -0
  79. package/lib/commands/tls-pins.d.ts.map +1 -0
  80. package/lib/commands/tls-pins.js +209 -0
  81. package/lib/commands/tls-pins.js.map +1 -0
  82. package/lib/index.d.ts +2 -0
  83. package/lib/index.d.ts.map +1 -0
  84. package/lib/index.js +233 -0
  85. package/lib/index.js.map +1 -0
  86. package/lib/ui/banner.d.ts +23 -0
  87. package/lib/ui/banner.d.ts.map +1 -0
  88. package/lib/ui/banner.js +162 -0
  89. package/lib/ui/banner.js.map +1 -0
  90. package/lib/ui/graphics.d.ts +18 -0
  91. package/lib/ui/graphics.d.ts.map +1 -0
  92. package/lib/ui/graphics.js +134 -0
  93. package/lib/ui/graphics.js.map +1 -0
  94. package/lib/ui/mark.d.ts +4 -0
  95. package/lib/ui/mark.d.ts.map +1 -0
  96. package/lib/ui/mark.js +21 -0
  97. package/lib/ui/mark.js.map +1 -0
  98. package/lib/ui/menu.d.ts +109 -0
  99. package/lib/ui/menu.d.ts.map +1 -0
  100. package/lib/ui/menu.js +314 -0
  101. package/lib/ui/menu.js.map +1 -0
  102. package/lib/ui/sixel.d.ts +6 -0
  103. package/lib/ui/sixel.d.ts.map +1 -0
  104. package/lib/ui/sixel.js +9 -0
  105. package/lib/ui/sixel.js.map +1 -0
  106. package/lib/utils/apps.d.ts +29 -0
  107. package/lib/utils/apps.d.ts.map +1 -0
  108. package/lib/utils/apps.js +19 -0
  109. package/lib/utils/apps.js.map +1 -0
  110. package/lib/utils/browser.d.ts +9 -0
  111. package/lib/utils/browser.d.ts.map +1 -0
  112. package/lib/utils/browser.js +39 -0
  113. package/lib/utils/browser.js.map +1 -0
  114. package/lib/utils/bundle.d.ts +153 -0
  115. package/lib/utils/bundle.d.ts.map +1 -0
  116. package/lib/utils/bundle.js +459 -0
  117. package/lib/utils/bundle.js.map +1 -0
  118. package/lib/utils/bundleStore.d.ts +128 -0
  119. package/lib/utils/bundleStore.d.ts.map +1 -0
  120. package/lib/utils/bundleStore.js +250 -0
  121. package/lib/utils/bundleStore.js.map +1 -0
  122. package/lib/utils/context.d.ts +88 -0
  123. package/lib/utils/context.d.ts.map +1 -0
  124. package/lib/utils/context.js +247 -0
  125. package/lib/utils/context.js.map +1 -0
  126. package/lib/utils/credentials.d.ts +59 -0
  127. package/lib/utils/credentials.d.ts.map +1 -0
  128. package/lib/utils/credentials.js +147 -0
  129. package/lib/utils/credentials.js.map +1 -0
  130. package/lib/utils/guide.d.ts +63 -0
  131. package/lib/utils/guide.d.ts.map +1 -0
  132. package/lib/utils/guide.js +191 -0
  133. package/lib/utils/guide.js.map +1 -0
  134. package/lib/utils/hash.d.ts +3 -0
  135. package/lib/utils/hash.d.ts.map +1 -0
  136. package/lib/utils/hash.js +44 -0
  137. package/lib/utils/hash.js.map +1 -0
  138. package/lib/utils/native-id.d.ts +17 -0
  139. package/lib/utils/native-id.d.ts.map +1 -0
  140. package/lib/utils/native-id.js +105 -0
  141. package/lib/utils/native-id.js.map +1 -0
  142. package/lib/utils/output.d.ts +96 -0
  143. package/lib/utils/output.d.ts.map +1 -0
  144. package/lib/utils/output.js +135 -0
  145. package/lib/utils/output.js.map +1 -0
  146. package/lib/utils/prompt.d.ts +106 -0
  147. package/lib/utils/prompt.d.ts.map +1 -0
  148. package/lib/utils/prompt.js +457 -0
  149. package/lib/utils/prompt.js.map +1 -0
  150. package/lib/utils/provenance.d.ts +30 -0
  151. package/lib/utils/provenance.d.ts.map +1 -0
  152. package/lib/utils/provenance.js +157 -0
  153. package/lib/utils/provenance.js.map +1 -0
  154. package/lib/utils/resolve.d.ts +81 -0
  155. package/lib/utils/resolve.d.ts.map +1 -0
  156. package/lib/utils/resolve.js +139 -0
  157. package/lib/utils/resolve.js.map +1 -0
  158. package/lib/utils/sdkBin.d.ts +18 -0
  159. package/lib/utils/sdkBin.d.ts.map +1 -0
  160. package/lib/utils/sdkBin.js +76 -0
  161. package/lib/utils/sdkBin.js.map +1 -0
  162. package/lib/utils/signer.d.ts +94 -0
  163. package/lib/utils/signer.d.ts.map +1 -0
  164. package/lib/utils/signer.js +230 -0
  165. package/lib/utils/signer.js.map +1 -0
  166. package/lib/utils/signing.d.ts +102 -0
  167. package/lib/utils/signing.d.ts.map +1 -0
  168. package/lib/utils/signing.js +229 -0
  169. package/lib/utils/signing.js.map +1 -0
  170. package/lib/utils/transportSecurity.d.ts +36 -0
  171. package/lib/utils/transportSecurity.d.ts.map +1 -0
  172. package/lib/utils/transportSecurity.js +74 -0
  173. package/lib/utils/transportSecurity.js.map +1 -0
  174. package/lib/utils/trustAnchor.d.ts +109 -0
  175. package/lib/utils/trustAnchor.d.ts.map +1 -0
  176. package/lib/utils/trustAnchor.js +169 -0
  177. package/lib/utils/trustAnchor.js.map +1 -0
  178. package/lib/utils/ui.d.ts +12 -0
  179. package/lib/utils/ui.d.ts.map +1 -0
  180. package/lib/utils/ui.js +60 -0
  181. package/lib/utils/ui.js.map +1 -0
  182. package/lib/utils/validate.d.ts +62 -0
  183. package/lib/utils/validate.d.ts.map +1 -0
  184. package/lib/utils/validate.js +189 -0
  185. package/lib/utils/validate.js.map +1 -0
  186. package/lib/vendor/ota-protocol/base64.d.ts +11 -0
  187. package/lib/vendor/ota-protocol/base64.d.ts.map +1 -0
  188. package/lib/vendor/ota-protocol/base64.js +39 -0
  189. package/lib/vendor/ota-protocol/base64.js.map +1 -0
  190. package/lib/vendor/ota-protocol/codec.d.ts +26 -0
  191. package/lib/vendor/ota-protocol/codec.d.ts.map +1 -0
  192. package/lib/vendor/ota-protocol/codec.js +349 -0
  193. package/lib/vendor/ota-protocol/codec.js.map +1 -0
  194. package/lib/vendor/ota-protocol/hex.d.ts +8 -0
  195. package/lib/vendor/ota-protocol/hex.d.ts.map +1 -0
  196. package/lib/vendor/ota-protocol/hex.js +31 -0
  197. package/lib/vendor/ota-protocol/hex.js.map +1 -0
  198. package/lib/vendor/ota-protocol/index.d.ts +17 -0
  199. package/lib/vendor/ota-protocol/index.d.ts.map +1 -0
  200. package/lib/vendor/ota-protocol/index.js +41 -0
  201. package/lib/vendor/ota-protocol/index.js.map +1 -0
  202. package/lib/vendor/ota-protocol/limits.d.ts +39 -0
  203. package/lib/vendor/ota-protocol/limits.d.ts.map +1 -0
  204. package/lib/vendor/ota-protocol/limits.js +42 -0
  205. package/lib/vendor/ota-protocol/limits.js.map +1 -0
  206. package/lib/vendor/ota-protocol/types.d.ts +73 -0
  207. package/lib/vendor/ota-protocol/types.d.ts.map +1 -0
  208. package/lib/vendor/ota-protocol/types.js +24 -0
  209. package/lib/vendor/ota-protocol/types.js.map +1 -0
  210. package/package.json +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ota-publish.js","sourceRoot":"","sources":["../../src/commands/ota-publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerOtaRolloutCommands(ota: Command): void;
3
+ //# sourceMappingURL=ota-rollout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ota-rollout.d.ts","sourceRoot":"","sources":["../../src/commands/ota-rollout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmFpC,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA6S7D"}
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerOtaRolloutCommands = registerOtaRolloutCommands;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const credentials_1 = require("../utils/credentials");
9
+ const client_1 = require("../api/client");
10
+ const validate_1 = require("../utils/validate");
11
+ const resolve_1 = require("../utils/resolve");
12
+ const prompt_1 = require("../utils/prompt");
13
+ const context_1 = require("../utils/context");
14
+ const output_1 = require("../utils/output");
15
+ function client() {
16
+ const creds = (0, credentials_1.readCredentials)();
17
+ if (!creds)
18
+ (0, output_1.fail)('Not signed in.', ['Run `scalebun login` first.'], output_1.ExitCode.Usage);
19
+ return new client_1.ApiClient(creds);
20
+ }
21
+ async function loadReleases(api, appId) {
22
+ try {
23
+ const all = await api.get(`/saas/apps/${appId}/ota/releases`);
24
+ const rows = Array.isArray(all) ? all : [];
25
+ // Any command that fetched releases refreshes the cache the splash reads,
26
+ // so the onboarding stage self-corrects without its own request.
27
+ (0, context_1.cacheReleaseCount)(rows.length, process.cwd());
28
+ return rows;
29
+ }
30
+ catch (err) {
31
+ (0, output_1.failFromError)('Could not list releases', err);
32
+ }
33
+ }
34
+ /** Shared flags. Every control command takes the same three. */
35
+ function common(c) {
36
+ return c
37
+ .option('--app-id <id>', 'Scalebun app ID (resolved from scalebun.json when omitted)')
38
+ .option('--release-id <id>', 'Act on this release specifically')
39
+ .option('--json', 'Machine-readable output');
40
+ }
41
+ function registerOtaRolloutCommands(ota) {
42
+ // ── releases ──────────────────────────────────────────────────────────────
43
+ ota
44
+ .command('releases')
45
+ .description('List releases and their current rollout state')
46
+ .option('--app-id <id>', 'Scalebun app ID (resolved from scalebun.json when omitted)')
47
+ .option('--json', 'Machine-readable output')
48
+ .action(async (opts) => {
49
+ const api = client();
50
+ const appId = await (0, resolve_1.resolveAppId)({ appId: opts.appId, nonInteractive: opts.json });
51
+ const rows = await loadReleases(api, appId);
52
+ (0, output_1.emit)(() => {
53
+ if (!rows.length) {
54
+ console.log('\nNo releases yet.');
55
+ // The empty state is where an offered next step is worth most:
56
+ // there is nothing on screen to act on, so the only useful thing
57
+ // the command can do is point at what comes first.
58
+ (0, output_1.printNextSteps)([{ label: 'Ship one', argv: ['ota', 'publish'] }], chalk_1.default.cyan);
59
+ return;
60
+ }
61
+ console.log('');
62
+ for (const r of rows) {
63
+ const marker = r.status === 'ACTIVE' ? chalk_1.default.cyan('▶') : ' ';
64
+ console.log(`${marker} ${chalk_1.default.bold((0, resolve_1.describeRelease)(r))}` +
65
+ (r.targetAppVersion ? chalk_1.default.dim(` targets ${r.targetAppVersion}`) : ''));
66
+ console.log(chalk_1.default.dim(` ${r.id}`));
67
+ }
68
+ console.log('');
69
+ (0, output_1.printNextSteps)([
70
+ { label: 'Set the share', argv: ['ota', 'rollout', '--percent', '100'] },
71
+ { label: 'Stop one', argv: ['ota', 'pause'] },
72
+ { label: 'Watch them', argv: ['ota', 'status'] },
73
+ ], chalk_1.default.cyan);
74
+ }, { ok: true, count: rows.length, releases: rows });
75
+ });
76
+ // ── rollout ───────────────────────────────────────────────────────────────
77
+ common(ota
78
+ .command('rollout')
79
+ .description('Set the rollout percentage on a release')
80
+ .requiredOption('--percent <n>', 'Target rollout percentage, 0-100')).action(async (opts) => {
81
+ const api = client();
82
+ const appId = await (0, resolve_1.resolveAppId)({ appId: opts.appId, nonInteractive: opts.json });
83
+ // Validate before the round trip — the precedent publish set for itself.
84
+ // Shared with --rollout on publish and promote, so all three accept the
85
+ // same things — including a trailing `%`, which Number() reads as NaN.
86
+ const pct = (0, validate_1.checkedPercent)('--percent', opts.percent);
87
+ const releases = await loadReleases(api, appId);
88
+ const release = await (0, resolve_1.resolveRelease)(releases, {
89
+ releaseId: opts.releaseId,
90
+ statuses: ['ACTIVE', 'PAUSED'],
91
+ verb: 'widen',
92
+ nonInteractive: opts.json,
93
+ });
94
+ // Lowering does not take the bundle off devices that already applied it.
95
+ // Saying so here is the difference between an operator thinking they have
96
+ // undone something and discovering later that they have not.
97
+ if (pct < (release.rolloutPercent ?? 0) && !(0, output_1.isJson)()) {
98
+ console.log(chalk_1.default.yellow(`⚠️ Lowering ${release.rolloutPercent}% → ${pct}% stops NEW devices receiving it.\n` +
99
+ ' Devices that already applied the bundle keep it — `ota rollback` is how you take it away.'));
100
+ }
101
+ try {
102
+ await api.patch(`/saas/apps/${appId}/ota/releases/${release.id}`, { rolloutPercent: pct });
103
+ }
104
+ catch (err) {
105
+ (0, output_1.failFromError)('Could not set the rollout', err);
106
+ }
107
+ (0, output_1.emit)(() => {
108
+ console.log(`✅ ${(0, resolve_1.describeRelease)(release)} → ${chalk_1.default.bold(`${pct}%`)}`);
109
+ (0, output_1.printNextSteps)([
110
+ { label: 'Watch it', argv: ['ota', 'status'] },
111
+ // Only offer widening while there is room to widen.
112
+ ...(pct < 100 ? [{ label: 'Widen it', argv: ['ota', 'rollout', '--percent', '100'] }] : []),
113
+ { label: 'Stop it', argv: ['ota', 'pause'] },
114
+ { label: 'Undo it', argv: ['ota', 'rollback'] },
115
+ ], chalk_1.default.cyan);
116
+ }, { ok: true, releaseId: release.id, rolloutPercent: pct });
117
+ });
118
+ // ── pause ─────────────────────────────────────────────────────────────────
119
+ common(ota.command('pause').description('Pause a release — no new devices receive it')).action(async (opts) => {
120
+ const api = client();
121
+ const appId = await (0, resolve_1.resolveAppId)({ appId: opts.appId, nonInteractive: opts.json });
122
+ const releases = await loadReleases(api, appId);
123
+ const release = await (0, resolve_1.resolveRelease)(releases, {
124
+ releaseId: opts.releaseId,
125
+ statuses: ['ACTIVE'],
126
+ verb: 'pause',
127
+ nonInteractive: opts.json,
128
+ });
129
+ try {
130
+ await api.patch(`/saas/apps/${appId}/ota/releases/${release.id}`, { status: 'PAUSED' });
131
+ }
132
+ catch (err) {
133
+ (0, output_1.failFromError)('Could not pause', err);
134
+ }
135
+ (0, output_1.emit)(() => {
136
+ console.log(`⏸ Paused ${chalk_1.default.bold((0, resolve_1.describeRelease)(release))}`);
137
+ console.log(chalk_1.default.dim(' Devices that already installed this bundle KEEP running it — pausing stops\n' +
138
+ ' distribution, it does not revert anyone. `ota rollback` does that.'));
139
+ (0, output_1.printNextSteps)([
140
+ { label: 'Undo the pause', argv: ['ota', 'resume'] },
141
+ { label: 'Revert devices', argv: ['ota', 'rollback'] },
142
+ { label: 'Watch it', argv: ['ota', 'status'] },
143
+ ], chalk_1.default.cyan);
144
+ }, { ok: true, releaseId: release.id, status: 'PAUSED' });
145
+ });
146
+ // ── resume ────────────────────────────────────────────────────────────────
147
+ common(ota.command('resume').description('Resume a paused release')).action(async (opts) => {
148
+ const api = client();
149
+ const appId = await (0, resolve_1.resolveAppId)({ appId: opts.appId, nonInteractive: opts.json });
150
+ const releases = await loadReleases(api, appId);
151
+ // PAUSED, not ACTIVE — the whole point of resume is that the release is
152
+ // not active. The old resolver looked for ACTIVE and so could never have
153
+ // helped here, which is why this command demanded an explicit id.
154
+ const release = await (0, resolve_1.resolveRelease)(releases, {
155
+ releaseId: opts.releaseId,
156
+ statuses: ['PAUSED'],
157
+ verb: 'resume',
158
+ nonInteractive: opts.json,
159
+ });
160
+ try {
161
+ await api.patch(`/saas/apps/${appId}/ota/releases/${release.id}`, { status: 'ACTIVE' });
162
+ }
163
+ catch (err) {
164
+ (0, output_1.failFromError)('Could not resume', err);
165
+ }
166
+ (0, output_1.emit)(() => {
167
+ console.log(`▶ Resumed ${chalk_1.default.bold((0, resolve_1.describeRelease)(release))} at its existing rollout percentage.`);
168
+ (0, output_1.printNextSteps)([
169
+ { label: 'Watch it', argv: ['ota', 'status'] },
170
+ { label: 'Change the share', argv: ['ota', 'rollout', '--percent', '100'] },
171
+ { label: 'Stop it again', argv: ['ota', 'pause'] },
172
+ ], chalk_1.default.cyan);
173
+ }, { ok: true, releaseId: release.id, status: 'ACTIVE' });
174
+ });
175
+ // ── rollback ──────────────────────────────────────────────────────────────
176
+ common(ota
177
+ .command('rollback')
178
+ .description('Roll back a release — devices revert to the previous bundle')
179
+ .option('--yes', 'Skip the confirmation prompt (required in CI)')
180
+ .option('--dry-run', 'Show the blast radius and exit without changing anything')).action(async (opts) => {
181
+ const api = client();
182
+ const appId = await (0, resolve_1.resolveAppId)({ appId: opts.appId, nonInteractive: opts.json });
183
+ const releases = await loadReleases(api, appId);
184
+ const release = await (0, resolve_1.resolveRelease)(releases, {
185
+ releaseId: opts.releaseId,
186
+ statuses: ['ACTIVE', 'PAUSED'],
187
+ verb: 'roll back',
188
+ nonInteractive: opts.json || opts.yes,
189
+ });
190
+ // Who this actually touches. The dashboard has shown this for a while; the
191
+ // terminal asked you to confirm a fleet-wide revert with a version number
192
+ // and nothing else.
193
+ let blast = null;
194
+ try {
195
+ blast = await api.get(`/saas/apps/${appId}/ota/releases/${release.id}/blast-radius`);
196
+ }
197
+ catch {
198
+ // Best-effort. An unreachable analytics route must never block the one
199
+ // command someone runs during an incident.
200
+ blast = null;
201
+ }
202
+ const renderBlast = () => {
203
+ if (!blast) {
204
+ console.log(chalk_1.default.dim(' Blast radius unavailable — proceeding without it.'));
205
+ return;
206
+ }
207
+ // 24, not 22: "excluded from estimate" is exactly 22 characters, so a
208
+ // 22-wide column produced "excluded from estimate2684".
209
+ const line = (k, v) => console.log(chalk_1.default.dim(` ${k.padEnd(24)}`) + v);
210
+ line('devices affected', String(blast.targetedDevices ?? 0));
211
+ // null means NOT MEASURED, and the service returns null deliberately.
212
+ // Printing 0 here would turn "we do not know" into "nobody is paying".
213
+ line('paying users', blast.payingUsers == null ? chalk_1.default.dim('not measured') : String(blast.payingUsers));
214
+ line('revenue at risk', blast.mrrAtRisk == null
215
+ ? chalk_1.default.dim('not measured')
216
+ : `${blast.mrrAtRisk} ${blast.currency ?? ''}`.trim());
217
+ if (blast.devicesWithoutInstallationId) {
218
+ line('excluded from estimate', `${blast.devicesWithoutInstallationId} without an install id`);
219
+ }
220
+ };
221
+ if (opts.dryRun) {
222
+ (0, output_1.emit)(() => {
223
+ console.log('');
224
+ console.log(`🔎 Rolling back ${chalk_1.default.bold((0, resolve_1.describeRelease)(release))} would affect:`);
225
+ renderBlast();
226
+ console.log(chalk_1.default.dim('\n --dry-run: nothing was changed.\n'));
227
+ }, { ok: true, dryRun: true, releaseId: release.id, blastRadius: blast });
228
+ return;
229
+ }
230
+ if (!opts.yes) {
231
+ if ((0, resolve_1.isNonInteractive)()) {
232
+ (0, output_1.fail)('Refusing to roll back without confirmation.', ['Pass --yes to proceed in CI.'], output_1.ExitCode.Usage);
233
+ }
234
+ console.log('');
235
+ console.log(chalk_1.default.yellow(`⚠️ Roll back ${chalk_1.default.bold((0, resolve_1.describeRelease)(release))}?`));
236
+ renderBlast();
237
+ console.log(chalk_1.default.dim(' Every device on this release reverts to its previous bundle.'));
238
+ console.log('');
239
+ const ok = await (0, prompt_1.confirmPhrase)(' Type "yes" to confirm: ', 'yes', { caseInsensitive: true });
240
+ (0, prompt_1.closePrompts)();
241
+ if (!ok) {
242
+ console.log('Cancelled — nothing was rolled back.');
243
+ process.exit(output_1.ExitCode.Ok);
244
+ }
245
+ }
246
+ try {
247
+ await api.post(`/saas/apps/${appId}/ota/releases/${release.id}/rollback`, {});
248
+ }
249
+ catch (err) {
250
+ (0, output_1.failFromError)('Rollback failed', err);
251
+ }
252
+ (0, output_1.emit)(() => {
253
+ console.log(`↺ Rolled back ${chalk_1.default.bold((0, resolve_1.describeRelease)(release))}`);
254
+ console.log(chalk_1.default.dim(' Devices revert on their next check. Promote a newer bundle to move forward.'));
255
+ (0, output_1.printNextSteps)([
256
+ { label: 'Watch it', argv: ['ota', 'status'] },
257
+ // "Promote a newer bundle to move forward" is the sentence above;
258
+ // this is the command that does it.
259
+ { label: 'Ship a fix', argv: ['ota', 'promote'] },
260
+ { label: 'See every release', argv: ['ota', 'releases'] },
261
+ ], chalk_1.default.cyan);
262
+ }, { ok: true, releaseId: release.id, status: 'ROLLED_BACK', blastRadius: blast });
263
+ });
264
+ }
265
+ //# sourceMappingURL=ota-rollout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ota-rollout.js","sourceRoot":"","sources":["../../src/commands/ota-rollout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Sign a bundle you already built, without uploading it.
4
+ *
5
+ * WHY THIS EXISTS: `ota publish` builds, signs and uploads in one shot, which
6
+ * forces whoever holds the signing key to also be whoever performs the release.
7
+ * Plenty of teams want those to be different people — the key lives on a build
8
+ * machine, the release is driven from the dashboard by someone who should never
9
+ * see it. This command splits the two: it signs locally and writes a small
10
+ * ticket beside the bundle. The private key never moves.
11
+ *
12
+ * WHY IT MUST TALK TO THE SERVER: under SB-OTA-RSA-SHA256-V1 the signature
13
+ * covers releaseId, bundleId and releaseSequence, and the server reserves those.
14
+ * Signing cannot happen fully offline, so this presigns first, then signs the
15
+ * identity it was given. That reservation carries an expiry, which is why the
16
+ * ticket records one and the picker shows it.
17
+ */
18
+ export declare function registerOtaSignCommand(ota: Command): void;
19
+ //# sourceMappingURL=ota-sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ota-sign.d.ts","sourceRoot":"","sources":["../../src/commands/ota-sign.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAgPzD"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.registerOtaSignCommand = registerOtaSignCommand;
40
+ const fs = __importStar(require("fs"));
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const credentials_1 = require("../utils/credentials");
43
+ const client_1 = require("../api/client");
44
+ const resolve_1 = require("../utils/resolve");
45
+ const output_1 = require("../utils/output");
46
+ const prompt_1 = require("../utils/prompt");
47
+ const signing_1 = require("../utils/signing");
48
+ const signer_1 = require("../utils/signer");
49
+ const native_id_1 = require("../utils/native-id");
50
+ const bundle_1 = require("../utils/bundle");
51
+ const ota_keys_1 = require("./ota-keys");
52
+ const bundleStore_1 = require("../utils/bundleStore");
53
+ /**
54
+ * Sign a bundle you already built, without uploading it.
55
+ *
56
+ * WHY THIS EXISTS: `ota publish` builds, signs and uploads in one shot, which
57
+ * forces whoever holds the signing key to also be whoever performs the release.
58
+ * Plenty of teams want those to be different people — the key lives on a build
59
+ * machine, the release is driven from the dashboard by someone who should never
60
+ * see it. This command splits the two: it signs locally and writes a small
61
+ * ticket beside the bundle. The private key never moves.
62
+ *
63
+ * WHY IT MUST TALK TO THE SERVER: under SB-OTA-RSA-SHA256-V1 the signature
64
+ * covers releaseId, bundleId and releaseSequence, and the server reserves those.
65
+ * Signing cannot happen fully offline, so this presigns first, then signs the
66
+ * identity it was given. That reservation carries an expiry, which is why the
67
+ * ticket records one and the picker shows it.
68
+ */
69
+ function registerOtaSignCommand(ota) {
70
+ ota
71
+ .command('sign')
72
+ .description('Sign a locally built bundle for upload from the dashboard')
73
+ .option('--app-id <id>', 'Scalebun app ID (resolved from scalebun.json when omitted)')
74
+ .option('--channel <name>', 'Channel this release targets', 'production')
75
+ .option('--bundle <path>', 'Bundle to sign, anywhere on disk (skips the picker — use this in CI)')
76
+ .option('--dir <dir>', 'Folder to list bundles from (default: ./bundles)')
77
+ .option('--key-dir <dir>', 'Directory holding the RSA signing key (default: ./.scalebun)')
78
+ .option('--key-id <id>', 'Signing key id (defaults to $SCALEBUN_KEY_ID or the local key id)')
79
+ .option('--passphrase <pass>', 'Passphrase for an encrypted signing key (defaults to $SCALEBUN_SIGNING_KEY_PASSPHRASE)')
80
+ .option('--target-version <range>', 'App version range this release targets', '>=1.0.0')
81
+ .action(async (opts) => {
82
+ const creds = (0, credentials_1.readCredentials)();
83
+ if (!creds)
84
+ (0, output_1.fail)('Not signed in.', ['Run `scalebun login` first.'], output_1.ExitCode.Usage);
85
+ const appId = await (0, resolve_1.resolveAppId)({ appId: opts.appId });
86
+ const client = new client_1.ApiClient(creds);
87
+ // ── pick the bundle ──────────────────────────────────────────────────
88
+ let chosen;
89
+ if (opts.bundle) {
90
+ // Any path, not just bundles/ — `ota bundle build --output <dir>` is a
91
+ // supported thing to do, and a signature belongs beside whatever file it
92
+ // signs. Try it as a path first, then as a name within the listing.
93
+ chosen =
94
+ (0, bundleStore_1.loadBundleAt)(opts.bundle) ??
95
+ (0, bundleStore_1.listLocalBundles)(opts.dir).find((b) => b.name === opts.bundle);
96
+ if (!chosen) {
97
+ (0, output_1.fail)(`No such bundle: ${opts.bundle}`, ['Pass a path to a .bundle file, or a name from bundles/.'], output_1.ExitCode.Usage);
98
+ }
99
+ }
100
+ else {
101
+ const all = (0, bundleStore_1.listLocalBundles)(opts.dir);
102
+ if (!all.length) {
103
+ (0, output_1.fail)(`No local bundles found in ${opts.dir ?? 'bundles/'}.`, ['Build one first: scalebun ota bundle --platform android'], output_1.ExitCode.Usage);
104
+ }
105
+ if (!process.stdin.isTTY) {
106
+ // One bundle is unambiguous, so CI does not need to name it. More than
107
+ // one IS ambiguous, and guessing there would eventually sign the wrong
108
+ // build — which is the whole failure this picker exists to prevent.
109
+ if (all.length > 1) {
110
+ (0, output_1.fail)(`${all.length} bundles exist and this shell is not interactive.`, [
111
+ 'Pass --bundle <path> to choose one explicitly. Newest first:',
112
+ ...all.slice(0, 3).map((x) => ` ${x.name}`),
113
+ ], output_1.ExitCode.Usage);
114
+ }
115
+ console.log(chalk_1.default.dim(`Signing the only local bundle: ${all[0].name}`));
116
+ chosen = all[0];
117
+ }
118
+ else {
119
+ // Show every bundle, not just unsigned ones: re-signing is normal (an
120
+ // earlier ticket expires) and hiding signed builds would make the list
121
+ // lie about what is on disk.
122
+ chosen = await (0, prompt_1.select)('Which bundle do you want to sign?', all.map((b) => ({ label: (0, bundleStore_1.describeBundle)(b), value: b })));
123
+ }
124
+ }
125
+ const b = chosen;
126
+ if (!b.meta) {
127
+ (0, output_1.fail)(`${b.name} has no build metadata beside it.`, [
128
+ `Expected: ${b.metaPath}`,
129
+ 'It was built by an older CLI, or moved without its sidecar.',
130
+ 'Rebuild it with `scalebun ota bundle build`.',
131
+ ], output_1.ExitCode.Usage);
132
+ }
133
+ if ((0, bundleStore_1.sigState)(b) === 'signed') {
134
+ console.log(chalk_1.default.dim('\n This bundle already has a valid signature; signing again replaces it.'));
135
+ }
136
+ // ── load the key (flag > env > .scalebun file) ───────────────────────
137
+ const signing = (0, ota_keys_1.resolveSigningMaterial)({
138
+ keyDir: opts.keyDir,
139
+ keyId: opts.keyId,
140
+ passphrase: opts.passphrase,
141
+ });
142
+ if (!signing.privatePem) {
143
+ (0, output_1.fail)('No signing key found.', [
144
+ 'Generate one: scalebun ota keys generate --app-id ' + appId,
145
+ 'Point at an existing key with --key-dir <dir>,',
146
+ 'or supply it in CI via the SCALEBUN_SIGNING_PRIVATE_KEY secret.',
147
+ ], output_1.ExitCode.Usage);
148
+ }
149
+ const keyId = signing.keyId;
150
+ if (!keyId) {
151
+ (0, output_1.fail)('A signing key is present but its key id is unknown.', ['Pass --key-id <id> or set SCALEBUN_KEY_ID.'], output_1.ExitCode.Usage);
152
+ }
153
+ // ── reserve identity ─────────────────────────────────────────────────
154
+ const platform = b.meta.platform;
155
+ const rnVersion = (0, bundle_1.detectProjectRnVersion)(process.cwd());
156
+ const nativeApplicationId = (0, native_id_1.detectNativeApplicationId)(process.cwd(), platform);
157
+ let presigned;
158
+ try {
159
+ presigned = await client.post(`/saas/apps/${appId}/ota/bundles/presign`, {
160
+ channelId: opts.channel,
161
+ platform,
162
+ nativeApplicationId,
163
+ sha256: b.meta.sha256,
164
+ sizeBytes: b.meta.size,
165
+ rnVersion: rnVersion ?? undefined,
166
+ });
167
+ }
168
+ catch (err) {
169
+ (0, output_1.fail)(`Could not reserve a release: ${err?.message ?? err}`, [], output_1.ExitCode.Rejected);
170
+ return;
171
+ }
172
+ if (!presigned.projectId ||
173
+ !presigned.applicationId ||
174
+ !presigned.releaseId ||
175
+ presigned.releaseSequence == null) {
176
+ (0, output_1.fail)('The server did not return SB-OTA-RSA-SHA256-V1 release identity.', ['The signature has to cover it, so signing cannot continue without it.'], output_1.ExitCode.Rejected);
177
+ }
178
+ // ── sign, locally ────────────────────────────────────────────────────
179
+ const payload = {
180
+ signatureAlgorithm: 'SB-OTA-RSA-SHA256-V1',
181
+ hashAlgorithm: 'SHA-256',
182
+ keyId: keyId,
183
+ projectId: presigned.projectId,
184
+ applicationId: presigned.applicationId,
185
+ releaseId: presigned.releaseId,
186
+ bundleId: presigned.bundleId,
187
+ platform: platform,
188
+ artifactType: 'full',
189
+ targetAppVersion: opts.targetVersion,
190
+ targetRuntimeVersion: rnVersion ?? '',
191
+ minimumSdkVersion: presigned.minimumSdkVersion ?? '',
192
+ releaseSequence: presigned.releaseSequence,
193
+ issuedAtEpochSeconds: Math.floor(Date.now() / 1000),
194
+ expiresAtEpochSeconds: 0,
195
+ artifactSize: b.meta.size,
196
+ artifactSha256: b.meta.sha256,
197
+ baseBundleId: '',
198
+ baseArtifactSha256: '',
199
+ resultArtifactSha256: b.meta.sha256,
200
+ };
201
+ // Same rule as publish: the external path is taken only when one is
202
+ // configured, so with nothing set this is byte-for-byte what it was.
203
+ const externalSigner = process.env.SCALEBUN_SIGNER_COMMAND?.trim();
204
+ const envelope = externalSigner
205
+ ? await (0, signing_1.buildReleaseEnvelopeWith)(payload, (0, signer_1.resolveSigner)({ privateKeyPem: signing.privatePem }))
206
+ : (0, signing_1.buildReleaseEnvelope)(payload, signing.privatePem, {
207
+ passphrase: signing.passphrase,
208
+ });
209
+ const uploadExpiresAt = new Date(Date.now() + presigned.expiresIn * 1000).toISOString();
210
+ const ticket = {
211
+ protocol: envelope.protocol,
212
+ keyId: envelope.keyId,
213
+ signedPayload: envelope.signedPayload,
214
+ signature: envelope.signature,
215
+ bundleId: presigned.bundleId,
216
+ releaseId: presigned.releaseId,
217
+ releaseSequence: presigned.releaseSequence,
218
+ appId,
219
+ artifactSha256: b.meta.sha256,
220
+ signedAt: new Date().toISOString(),
221
+ uploadExpiresAt,
222
+ uploadUrl: presigned.uploadUrl,
223
+ };
224
+ fs.writeFileSync((0, bundleStore_1.sigPathFor)(b.bundlePath), JSON.stringify(ticket, null, 2) + '\n');
225
+ // Clear out tickets that can never be used again. Re-signing the same
226
+ // bundle already replaced its own; this removes the dead ones left behind
227
+ // for OTHER bundles, which are what make a file picker dangerous — they
228
+ // look exactly like a usable signature and are not.
229
+ const sweptExpired = (0, bundleStore_1.pruneExpiredSignatures)(opts.dir);
230
+ const mins = Math.round(presigned.expiresIn / 60);
231
+ console.log(`\n🔏 Signed ${b.name}`);
232
+ console.log(` Key : ${keyId}`);
233
+ console.log(` Release : ${presigned.releaseId} (sequence ${presigned.releaseSequence})`);
234
+ console.log(` Signature : ${(0, bundleStore_1.sigPathFor)(b.bundlePath)}`);
235
+ console.log(chalk_1.default.yellow(`\n Upload within ${mins} minutes — the reserved slot expires after that.`));
236
+ if (sweptExpired.length) {
237
+ console.log(chalk_1.default.dim(` Removed ${sweptExpired.length} expired signature${sweptExpired.length === 1 ? '' : 's'}: ${sweptExpired.join(', ')}`));
238
+ }
239
+ console.log(' Upload the bundle and this .sbsig together from the dashboard,');
240
+ console.log(' under OTA → Bundles → Upload.\n');
241
+ console.log(chalk_1.default.dim(' The signature contains no secret; your private key never left this machine.\n'));
242
+ (0, prompt_1.closePrompts)();
243
+ });
244
+ }
245
+ //# sourceMappingURL=ota-sign.js.map