@somewhere-tech/cli 0.31.2 → 0.31.4
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.
- package/dist/commands/deploy.js +15 -11
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.js +23 -11
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/errors.js +9 -2
- package/dist/commands/errors.js.map +1 -1
- package/dist/commands/logs.js +9 -2
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/open.js +9 -5
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/project.js +113 -0
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/promote.js +52 -1
- package/dist/commands/promote.js.map +1 -1
- package/dist/commands/rollback.js +12 -1
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/status.js +41 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/lib/allowed-origins.js +41 -0
- package/dist/lib/allowed-origins.js.map +1 -0
- package/dist/lib/project-ref.js +34 -0
- package/dist/lib/project-ref.js.map +1 -0
- package/dist/lib/promote-handoff.js +72 -0
- package/dist/lib/promote-handoff.js.map +1 -0
- package/dist/lib/surface-counts.js +87 -0
- package/dist/lib/surface-counts.js.map +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/commands/open.js
CHANGED
|
@@ -3,10 +3,12 @@ import { ApiClient } from '../lib/client.js';
|
|
|
3
3
|
import { getToken, loadProjectConfig } from '../lib/config.js';
|
|
4
4
|
import { dim, error, info } from '../lib/output.js';
|
|
5
5
|
import { getProjectServingUrl } from '../lib/project-urls.js';
|
|
6
|
+
import { chooseProjectRef, projectRefConflictMessage } from '../lib/project-ref.js';
|
|
6
7
|
export function registerOpen(program) {
|
|
7
8
|
program
|
|
8
9
|
.command('open [project]')
|
|
9
10
|
.description('Open the project URL in your browser')
|
|
11
|
+
.option('--project <ref>', 'Project ID, name, slug, or subdomain — the same flag every other command takes. The positional form still works.')
|
|
10
12
|
.option('--dashboard', 'Open the dashboard instead')
|
|
11
13
|
.action(async (project, opts) => {
|
|
12
14
|
if (opts.dashboard) {
|
|
@@ -16,16 +18,18 @@ export function registerOpen(program) {
|
|
|
16
18
|
}
|
|
17
19
|
const token = getToken();
|
|
18
20
|
const client = new ApiClient(token);
|
|
19
|
-
|
|
20
|
-
if (
|
|
21
|
-
|
|
21
|
+
const chosen = chooseProjectRef(project, opts.project);
|
|
22
|
+
if (chosen.kind === 'conflict') {
|
|
23
|
+
error(projectRefConflictMessage(chosen));
|
|
24
|
+
process.exit(1);
|
|
22
25
|
}
|
|
23
|
-
|
|
26
|
+
let projectRef = chosen.kind === 'ref' ? chosen.ref : undefined;
|
|
27
|
+
if (!projectRef) {
|
|
24
28
|
const config = loadProjectConfig();
|
|
25
29
|
projectRef = config?.project_id;
|
|
26
30
|
}
|
|
27
31
|
if (!projectRef) {
|
|
28
|
-
error('No project linked. Pass a project name or run from a linked directory.');
|
|
32
|
+
error('No project linked. Pass a project name (positionally or with --project) or run from a linked directory.');
|
|
29
33
|
process.exit(1);
|
|
30
34
|
}
|
|
31
35
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,iBAAiB,EAAE,kHAAkH,CAAC;SAC7I,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,IAAI,EAAE,EAAE;QAClD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,UAAU,GAAuB,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACnC,UAAU,GAAG,MAAM,EAAE,UAAU,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,KAAK,CACH,yGAAyG,CAC1G,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/project.js
CHANGED
|
@@ -4,6 +4,8 @@ import { ApiClient, CliApiError } from '../lib/client.js';
|
|
|
4
4
|
import { getToken } from '../lib/config.js';
|
|
5
5
|
import { dim, error, info, printJson, statusDot, success, table, teal, timeAgo, } from '../lib/output.js';
|
|
6
6
|
import { fallbackProjectServingUrl, getProjectServingUrl } from '../lib/project-urls.js';
|
|
7
|
+
import { resolveProjectRef } from '../lib/platform-command.js';
|
|
8
|
+
import { isExactOrigin } from '../lib/allowed-origins.js';
|
|
7
9
|
export function registerProject(program) {
|
|
8
10
|
const proj = program
|
|
9
11
|
.command('project')
|
|
@@ -78,6 +80,101 @@ export function registerProject(program) {
|
|
|
78
80
|
process.exit(1);
|
|
79
81
|
}
|
|
80
82
|
});
|
|
83
|
+
// ── Allowed origins (CORS) ──────────────────────────────────────────────
|
|
84
|
+
//
|
|
85
|
+
// The command an advisor, a doc, or a support reply would naturally print.
|
|
86
|
+
// It did not exist: the only working path was `somewhere call
|
|
87
|
+
// project_allowed_origins_get/set '{…}'` with a raw project id, so guidance
|
|
88
|
+
// and executable surface disagreed and a developer chasing a blocked
|
|
89
|
+
// cross-origin request hit `error: unknown command` first (parity finding
|
|
90
|
+
// #3). The platform's own tool names stay valid — this is the CLI-shaped
|
|
91
|
+
// spelling of the same two calls.
|
|
92
|
+
const origins = proj
|
|
93
|
+
.command('allowed-origins')
|
|
94
|
+
.alias('origins')
|
|
95
|
+
.description('Read or replace the other web addresses allowed to call this project\'s API from a browser. '
|
|
96
|
+
+ 'The project always trusts its own addresses — its somewhere.site subdomain and any verified '
|
|
97
|
+
+ 'custom domain — so those are never listed here and never need adding.');
|
|
98
|
+
origins
|
|
99
|
+
.command('list')
|
|
100
|
+
.alias('get')
|
|
101
|
+
.description('Show the other web addresses allowed to call this project from a browser')
|
|
102
|
+
.option('--project <ref>', 'Project ID, name, slug, or subdomain (defaults to the linked project)')
|
|
103
|
+
.option('--json', 'Print the raw response as JSON')
|
|
104
|
+
.action(async (opts) => {
|
|
105
|
+
const client = new ApiClient(getToken());
|
|
106
|
+
let projectRef;
|
|
107
|
+
try {
|
|
108
|
+
projectRef = resolveProjectRef(opts.project);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
error(err instanceof Error ? err.message : String(err));
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const result = await readAllowedOrigins(client, projectRef);
|
|
116
|
+
if (opts.json) {
|
|
117
|
+
printJson(result);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
printAllowedOrigins(result);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
error(err instanceof Error ? err.message : String(err));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
origins
|
|
128
|
+
.command('set [origins...]')
|
|
129
|
+
.description('Replace the whole list. Each entry is one exact address — scheme, host and optional port, '
|
|
130
|
+
+ 'no path and no wildcards (https://app.example.com, http://localhost:5173). '
|
|
131
|
+
+ 'Pass --clear to allow no other addresses at all.')
|
|
132
|
+
.option('--project <ref>', 'Project ID, name, slug, or subdomain (defaults to the linked project)')
|
|
133
|
+
.option('--clear', 'Remove every other address (equivalent to setting an empty list)')
|
|
134
|
+
.option('--json', 'Print the raw response as JSON')
|
|
135
|
+
.action(async (originArgs, opts) => {
|
|
136
|
+
const client = new ApiClient(getToken());
|
|
137
|
+
let projectRef;
|
|
138
|
+
try {
|
|
139
|
+
projectRef = resolveProjectRef(opts.project);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
error(err instanceof Error ? err.message : String(err));
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
// Accept both `set a b` and `set a,b` — an agent that has read one form
|
|
146
|
+
// should not be tripped by the other.
|
|
147
|
+
const requested = (originArgs ?? []).flatMap((value) => value.split(',')).map((v) => v.trim()).filter(Boolean);
|
|
148
|
+
if (!requested.length && !opts.clear) {
|
|
149
|
+
error('Nothing to set. Pass one or more addresses, or --clear to allow no other addresses.');
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
if (requested.length && opts.clear) {
|
|
153
|
+
error('Pass addresses or --clear, not both.');
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
const invalid = requested.filter((value) => !isExactOrigin(value));
|
|
157
|
+
if (invalid.length) {
|
|
158
|
+
error(`Not an exact web address: ${invalid.join(', ')}. Use scheme + host + optional port only — `
|
|
159
|
+
+ 'https://app.example.com, http://localhost:5173 — with no path, query or wildcard.');
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
const result = await writeAllowedOrigins(client, projectRef, requested);
|
|
164
|
+
if (opts.json) {
|
|
165
|
+
printJson(result);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
success(requested.length
|
|
169
|
+
? `Allowed ${requested.length === 1 ? 'address' : 'addresses'} updated.`
|
|
170
|
+
: 'Cleared — no other addresses are allowed.');
|
|
171
|
+
printAllowedOrigins(result);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
error(err instanceof Error ? err.message : String(err));
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
81
178
|
proj
|
|
82
179
|
.command('delete <name-or-id>')
|
|
83
180
|
.description('Permanently delete a project and all its data')
|
|
@@ -208,4 +305,20 @@ async function listProjects(opts = {}) {
|
|
|
208
305
|
process.exit(1);
|
|
209
306
|
}
|
|
210
307
|
}
|
|
308
|
+
async function readAllowedOrigins(client, ref) {
|
|
309
|
+
return client.call('GET', `/projects/${encodeURIComponent(ref)}/allowed-origins`);
|
|
310
|
+
}
|
|
311
|
+
async function writeAllowedOrigins(client, ref, allowedOrigins) {
|
|
312
|
+
return client.call('PUT', `/projects/${encodeURIComponent(ref)}/allowed-origins`, { allowed_origins: allowedOrigins });
|
|
313
|
+
}
|
|
314
|
+
function printAllowedOrigins(result) {
|
|
315
|
+
const list = result.allowed_origins ?? [];
|
|
316
|
+
if (!list.length) {
|
|
317
|
+
info(dim(' No other web addresses are allowed. The project still trusts its own address and any verified custom domain.'));
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
for (const origin of list)
|
|
321
|
+
info(` ${teal(origin)}`);
|
|
322
|
+
info(dim(' The project\'s own address and any verified custom domain are always trusted and are not listed here.'));
|
|
323
|
+
}
|
|
211
324
|
//# sourceMappingURL=project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/promote.js
CHANGED
|
@@ -8,6 +8,8 @@ import { callPlatformTool } from '../lib/platform-tools.js';
|
|
|
8
8
|
import { isRecord, unwrapPlatformData } from '../lib/platform-command.js';
|
|
9
9
|
import { describeUnreadablePromote, isUnreadablePromoteResponse, promoteVerdictFromPointer, refusalContradictsProduction, } from '../lib/promote-outcome.js';
|
|
10
10
|
import { formatErrorReference } from '../lib/client.js';
|
|
11
|
+
import { countFromResponse, formatPublishSurface, } from '../lib/surface-counts.js';
|
|
12
|
+
import { promotedDataNotes } from '../lib/promote-handoff.js';
|
|
11
13
|
/**
|
|
12
14
|
* Read what production is serving right now.
|
|
13
15
|
*
|
|
@@ -30,6 +32,45 @@ async function readActivePointer(projectId) {
|
|
|
30
32
|
return { known: false };
|
|
31
33
|
}
|
|
32
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* What production actually holds, counted the way `somewhere deploy` and
|
|
37
|
+
* `somewhere preview` count (parity finding #12).
|
|
38
|
+
*
|
|
39
|
+
* The promote response cannot answer this on its own: it returns a static
|
|
40
|
+
* tally that does not match the project's own listing, and says only whether
|
|
41
|
+
* functions exist rather than how many. The project's file listing answers both
|
|
42
|
+
* with the same split every other command prints, so one project stops
|
|
43
|
+
* reporting three different sizes of itself.
|
|
44
|
+
*
|
|
45
|
+
* Best-effort by design — a promote that landed is never failed, downgraded, or
|
|
46
|
+
* delayed on a cosmetic read. `null` means "ask the response instead".
|
|
47
|
+
*/
|
|
48
|
+
async function readProductionSurface(projectId) {
|
|
49
|
+
try {
|
|
50
|
+
const listing = unwrapPlatformData(await callPlatformTool('project_files_list', { project_id: projectId }, { allTools: true }));
|
|
51
|
+
if (!isRecord(listing) || !isRecord(listing.counts))
|
|
52
|
+
return null;
|
|
53
|
+
const staticFiles = countFromResponse(listing.counts.static);
|
|
54
|
+
const binary = countFromResponse(listing.counts.binary) ?? 0;
|
|
55
|
+
const functions = countFromResponse(listing.counts.functions);
|
|
56
|
+
if (staticFiles === null || functions === null)
|
|
57
|
+
return null;
|
|
58
|
+
return { staticFiles: staticFiles + binary, functions };
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function promoteSurfaceFromResponse(result) {
|
|
65
|
+
return {
|
|
66
|
+
staticFiles: countFromResponse(result.files_promoted),
|
|
67
|
+
functions: countFromResponse(result.functions_promoted)
|
|
68
|
+
?? (result.has_functions === true ? 'some' : 0),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function promoteDataNotesFromResponse(result) {
|
|
72
|
+
return promotedDataNotes(result.data_notice ?? result.data_note);
|
|
73
|
+
}
|
|
33
74
|
export function registerPromote(program) {
|
|
34
75
|
program
|
|
35
76
|
.command('promote <preview_session_id> <preview_id>')
|
|
@@ -114,11 +155,21 @@ export function registerPromote(program) {
|
|
|
114
155
|
printJson(r);
|
|
115
156
|
return;
|
|
116
157
|
}
|
|
117
|
-
|
|
158
|
+
// Prefer the project's own listing so this line agrees with what
|
|
159
|
+
// deploy and preview printed for the same tree; fall back to the
|
|
160
|
+
// response, where a missing function count becomes the word rather
|
|
161
|
+
// than an invented number.
|
|
162
|
+
const surface = (await readProductionSurface(projectId)) ?? promoteSurfaceFromResponse(r);
|
|
163
|
+
success(`Promoted v${r.version} (${formatPublishSurface(surface)})`);
|
|
118
164
|
// Name the preview session this version was promoted from, when known.
|
|
119
165
|
const fromDraft = draftId ?? r.promoted_draft_id;
|
|
120
166
|
if (fromDraft)
|
|
121
167
|
info(dim(`Promoted from preview session ${teal(fromDraft)}`));
|
|
168
|
+
// The app moved; the data did not. Said here, unprompted, because the
|
|
169
|
+
// alternative is a developer discovering it by opening an empty
|
|
170
|
+
// production page and repeating their whole acceptance pass.
|
|
171
|
+
for (const note of promoteDataNotesFromResponse(r))
|
|
172
|
+
info(note);
|
|
122
173
|
// The promote response carries no URL — resolve the platform's canonical
|
|
123
174
|
// fallback URL (best-effort; never fail a successful promote on it).
|
|
124
175
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAC/B,MAAM,gBAAgB,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACvF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;YACzF,OAAO,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;SAC9E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,qBAAqB,CAClC,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,kBAAkB,CAChC,MAAM,gBAAgB,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC5F,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,WAAW,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5D,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAqBD,MAAM,UAAU,0BAA0B,CACxC,MAAsF;IAEtF,OAAO;QACL,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC;QACrD,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC;eAClD,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAwD;IAExD,OAAO,iBAAiB,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,2CAA2C,CAAC;SACpD,WAAW,CACV,2EAA2E;QACzE,8DAA8D;QAC9D,oCAAoC,CACvC;SACA,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;SAC3E,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,wCAAwC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,kBAA0B,EAAE,IAAI,EAAE,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzC,IAAI,SAAS,GAAG,IAAI,CAAC,OAA6B,CAAC;QACnD,MAAM,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;QACpD,IAAI,gBAAgB,GAA8B,IAAI,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,cAAc,CAAC,YAAY,EAAE,wFAAwF,CAAC,CAAC;oBACvH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,KAAK,CAAC,wFAAwF,CAAC,CAAC;gBAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;YACjD,gBAAgB,GAAG,kBAAkB,CAAC;QACxC,CAAC;aAAM,IAAI,kBAAkB,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAC/F,gBAAgB,GAAG,kBAAkB,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,8DAA8D;YAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GACX,iLAAiL,CAAC;gBACpL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,cAAc,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC;gBAC3B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,mBAAmB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB;gBACxH,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAC/C,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,yEAAyE;gBACzE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,8CAA8C;QAC9C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAgB,MAAM,EAAE,UAAU,EAAE;gBAC7D,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,kBAAkB,EAAE,OAAO;gBAC3B,UAAU,EAAE,kBAAkB;aAC/B,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,CAAC;YAChB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,sBAAsB,CACpB,gBAAgB,CAAC,GAAG,EACpB,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAClC,CAAC,CAAC,OAAO,EACT,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,UAAU,CACpC,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,SAAS,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,iEAAiE;YACjE,iEAAiE;YACjE,mEAAmE;YACnE,2BAA2B;YAC3B,MAAM,OAAO,GAAG,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,KAAK,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrE,uEAAuE;YACvE,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,CAAC,iBAAiB,CAAC;YACjD,IAAI,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,sEAAsE;YACtE,gEAAgE;YAChE,6DAA6D;YAC7D,KAAK,MAAM,IAAI,IAAI,4BAA4B,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,yEAAyE;YACzE,qEAAqE;YACrE,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACjE,IAAI,UAAU;oBAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;YACD,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAErF,uEAAuE;YACvE,qEAAqE;YACrE,4DAA4D;YAC5D,IAAI,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,OAAO;oBAAE,OAAO,CAAC,IAAI,GAAG,0DAA0D,CAAC;gBACvF,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,yBAAyB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC1F,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;gBACrD,IACE,OAAO,CAAC,IAAI,KAAK,SAAS;uBACvB,gBAAgB;uBAChB,YAAY,CAAC,KAAK;uBAClB,YAAY,CAAC,OAAO,KAAK,IAAI,EAChC,CAAC;oBACD,iEAAiE;oBACjE,gEAAgE;oBAChE,sBAAsB,CACpB,gBAAgB,CAAC,GAAG,EACpB,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAClC,YAAY,CAAC,OAAO,EACpB,OAAO,CAAC,eAAe,CACxB,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;wBACxB,SAAS,CAAC;4BACR,MAAM,EAAE,SAAS;4BACjB,WAAW,EAAE,oBAAoB;4BACjC,iBAAiB,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;4BACnF,OAAO,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE;4BACpD,iBAAiB,EAAE,SAAS,IAAI,SAAS;yBAC1C,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,cAAc,CACZ,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,qBAAqB,EAC7E,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,CAC1C,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oBACxB,OAAO,EAAE,IAAI,EAAE,CAAC;oBAChB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACvB,IAAI,SAAS;wBAAE,IAAI,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;wBACjE,IAAI,UAAU;4BAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBAAC,MAAM,CAAC;wBACP,0DAA0D;oBAC5D,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAClC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACxB,IAAI,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,oEAAoE;YACpE,oEAAoE;YACpE,iEAAiE;YACjE,sEAAsE;YACtE,oBAAoB;YACpB,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,gBAAgB,GAAG,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAmB,CAAC;YAC/G,MAAM,YAAY,GAAG,4BAA4B,CAAC;gBAChD,OAAO;gBACP,iBAAiB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACvE,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;oBAC/B,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CACF,6FAA6F;oBAC3F,mDAAmD,CACtD,CAAC;YACJ,CAAC;iBAAM,IAAI,gBAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACnD,IAAI,CACF,GAAG,CACD,8GAA8G,CAC/G,CACF,CAAC;YACJ,CAAC;YACD,IAAI,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -3,6 +3,7 @@ import prompts from 'prompts';
|
|
|
3
3
|
import { ApiClient, CliApiError } from '../lib/client.js';
|
|
4
4
|
import { getToken, loadProjectConfig } from '../lib/config.js';
|
|
5
5
|
import { dim, error, info, printJson, printJsonError, success, teal, warn } from '../lib/output.js';
|
|
6
|
+
import { chooseProjectRef, projectRefConflictMessage } from '../lib/project-ref.js';
|
|
6
7
|
export function formatRollbackSuccess(result) {
|
|
7
8
|
const version = typeof result.version === 'number' && Number.isFinite(result.version)
|
|
8
9
|
? ` to v${result.version}`
|
|
@@ -19,11 +20,21 @@ export function registerRollback(program) {
|
|
|
19
20
|
'promote shipped a bad build — it restores the version that was live ' +
|
|
20
21
|
'before, including its functions. (Requires a previous production ' +
|
|
21
22
|
'version to return to.)')
|
|
23
|
+
.option('--project <ref>', 'Project ID, name, slug, or subdomain — the same flag every other command takes. The positional form still works.')
|
|
22
24
|
.option('-y, --yes', 'Skip the confirmation prompt')
|
|
23
25
|
.option('--json', 'Print the raw rollback response as JSON')
|
|
24
26
|
.action(async (projectArg, opts) => {
|
|
25
27
|
const client = new ApiClient(getToken());
|
|
26
|
-
|
|
28
|
+
const chosen = chooseProjectRef(projectArg, opts.project);
|
|
29
|
+
if (chosen.kind === 'conflict') {
|
|
30
|
+
const conflictMessage = projectRefConflictMessage(chosen);
|
|
31
|
+
if (opts.json)
|
|
32
|
+
printJsonError('PROJECT_REF_CONFLICT', conflictMessage);
|
|
33
|
+
else
|
|
34
|
+
error(conflictMessage);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
let projectId = chosen.kind === 'ref' ? chosen.ref : undefined;
|
|
27
38
|
if (!projectId) {
|
|
28
39
|
const config = loadProjectConfig();
|
|
29
40
|
if (!config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/status.js
CHANGED
|
@@ -4,6 +4,23 @@ import { dim, error, info, printJson, statusDot, teal, timeAgo } from '../lib/ou
|
|
|
4
4
|
import { callPlatformTool } from '../lib/platform-tools.js';
|
|
5
5
|
import { isRecord, unwrapPlatformData } from '../lib/platform-command.js';
|
|
6
6
|
import { fallbackProjectServingUrl, getProjectServingUrl } from '../lib/project-urls.js';
|
|
7
|
+
import { chooseProjectRef, projectRefConflictMessage } from '../lib/project-ref.js';
|
|
8
|
+
import { promoteCommands } from '../lib/promote-handoff.js';
|
|
9
|
+
/** Additive deploy-status fields are untrusted at this boundary: older
|
|
10
|
+
* platforms omit them and malformed values must never break `status`. */
|
|
11
|
+
export function deploymentProvenanceFromStatus(deployment) {
|
|
12
|
+
const candidate = typeof deployment.promoted_from_candidate_id === 'string'
|
|
13
|
+
&& deployment.promoted_from_candidate_id.trim()
|
|
14
|
+
? deployment.promoted_from_candidate_id.trim()
|
|
15
|
+
: null;
|
|
16
|
+
const hash = typeof deployment.production_content_hash === 'string'
|
|
17
|
+
? /^sha256:([a-f0-9]{12,})$/i.exec(deployment.production_content_hash.trim())
|
|
18
|
+
: null;
|
|
19
|
+
return {
|
|
20
|
+
promotedFromCandidate: candidate,
|
|
21
|
+
shortContentHash: hash ? `sha256:${hash[1].slice(0, 12)}` : null,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
7
24
|
export function previewCandidatesFromDeployment(deployment) {
|
|
8
25
|
const raw = Array.isArray(deployment.preview_candidates)
|
|
9
26
|
? deployment.preview_candidates
|
|
@@ -68,15 +85,21 @@ export function registerStatus(program) {
|
|
|
68
85
|
program
|
|
69
86
|
.command('status [project]')
|
|
70
87
|
.description('Show project and workspace status')
|
|
88
|
+
.option('--project <ref>', 'Project ID, name, slug, or subdomain — the same flag every other command takes. The positional form still works.')
|
|
71
89
|
.option('--json', 'Print the raw status responses as JSON')
|
|
72
90
|
.action(async (projectArg, opts) => {
|
|
73
91
|
const token = getToken();
|
|
74
92
|
const client = new ApiClient(token);
|
|
75
|
-
|
|
93
|
+
const chosen = chooseProjectRef(projectArg, opts.project);
|
|
94
|
+
if (chosen.kind === 'conflict') {
|
|
95
|
+
error(projectRefConflictMessage(chosen));
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
let projectId = chosen.kind === 'ref' ? chosen.ref : undefined;
|
|
76
99
|
if (!projectId) {
|
|
77
100
|
const config = loadProjectConfig();
|
|
78
101
|
if (!config) {
|
|
79
|
-
error('No project specified and no .somewhere.json found. Pass a project ID or run `somewhere init`.');
|
|
102
|
+
error('No project specified and no .somewhere.json found. Pass a project ID (positionally or with --project) or run `somewhere init`.');
|
|
80
103
|
process.exit(1);
|
|
81
104
|
}
|
|
82
105
|
projectId = config.project_id;
|
|
@@ -130,6 +153,13 @@ export function registerStatus(program) {
|
|
|
130
153
|
if (typeof deployment.active_release_id === 'string') {
|
|
131
154
|
info(`Active release: ${dim(deployment.active_release_id)}`);
|
|
132
155
|
}
|
|
156
|
+
const provenance = deploymentProvenanceFromStatus(deployment);
|
|
157
|
+
if (provenance.promotedFromCandidate) {
|
|
158
|
+
info(`Promoted from candidate ${teal(provenance.promotedFromCandidate)}`);
|
|
159
|
+
}
|
|
160
|
+
if (provenance.shortContentHash) {
|
|
161
|
+
info(`Content hash: ${dim(provenance.shortContentHash)}`);
|
|
162
|
+
}
|
|
133
163
|
if (deployment.dev_ahead === true) {
|
|
134
164
|
info(`Preview: ${deployment.files_changed ?? 'some'} file(s) ahead of production`);
|
|
135
165
|
}
|
|
@@ -142,7 +172,15 @@ export function registerStatus(program) {
|
|
|
142
172
|
info(`Candidate release: ${dim(candidate.candidate_release_id)}`);
|
|
143
173
|
if (candidate.preview_origin)
|
|
144
174
|
info(`Preview host: ${candidate.preview_origin}`);
|
|
145
|
-
|
|
175
|
+
// Runnable in the shell reading it — a non-interactive caller gets
|
|
176
|
+
// the `--yes` form, since bare promote refuses without a terminal.
|
|
177
|
+
for (const line of promoteCommands({
|
|
178
|
+
previewSessionId: candidate.draft_id,
|
|
179
|
+
previewId: candidate.candidate_release_id,
|
|
180
|
+
interactive: process.stdin.isTTY === true,
|
|
181
|
+
})) {
|
|
182
|
+
info(`Promote: ${dim(line)}`);
|
|
183
|
+
}
|
|
146
184
|
if (candidate.expires_at)
|
|
147
185
|
info(`Preview expires: ${candidate.expires_at}`);
|
|
148
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What counts as an exact web address for a cross-origin allowlist.
|
|
3
|
+
*
|
|
4
|
+
* The allowlist is matched byte-for-byte by the platform, so a path, a query, a
|
|
5
|
+
* trailing slash or a wildcard silently never matches anything. Catching that
|
|
6
|
+
* here — before the request — turns a blocked browser call the developer
|
|
7
|
+
* debugs for ten minutes into one sentence at the moment they typed it.
|
|
8
|
+
*
|
|
9
|
+
* Rule: scheme + host + optional port, and nothing else.
|
|
10
|
+
*/
|
|
11
|
+
export function isExactOrigin(value) {
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
if (!trimmed || trimmed !== value)
|
|
14
|
+
return false;
|
|
15
|
+
if (trimmed.includes('*'))
|
|
16
|
+
return false;
|
|
17
|
+
let url;
|
|
18
|
+
try {
|
|
19
|
+
url = new URL(trimmed);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:')
|
|
25
|
+
return false;
|
|
26
|
+
if (!url.hostname)
|
|
27
|
+
return false;
|
|
28
|
+
if (url.username || url.password)
|
|
29
|
+
return false;
|
|
30
|
+
if (url.search || url.hash)
|
|
31
|
+
return false;
|
|
32
|
+
// `new URL('https://x.dev')` normalizes to pathname '/', so a bare address
|
|
33
|
+
// and one with a trailing slash both arrive here as '/'. Anything deeper is a
|
|
34
|
+
// path, which the allowlist cannot match.
|
|
35
|
+
if (url.pathname !== '/')
|
|
36
|
+
return false;
|
|
37
|
+
// A trailing slash is not what the platform stores, and `https://x.dev/`
|
|
38
|
+
// never equals `https://x.dev`. Require the exact form.
|
|
39
|
+
return trimmed === url.origin;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=allowed-origins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowed-origins.js","sourceRoot":"","sources":["../../src/lib/allowed-origins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACzC,2EAA2E;IAC3E,8EAA8E;IAC9E,0CAA0C;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACvC,yEAAyE;IACzE,wDAAwD;IACxD,OAAO,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One way to name a project, on every command.
|
|
3
|
+
*
|
|
4
|
+
* The CLI grew two syntaxes: most commands take `--project <ref>`, but `logs`,
|
|
5
|
+
* `errors`, `status`, `open` and `rollback` took only a positional and
|
|
6
|
+
* answered `error: unknown option '--project'`. An agent that learned the flag
|
|
7
|
+
* on `deploy` hit a wall on `logs`, with nothing in the message to suggest the
|
|
8
|
+
* positional exists (parity finding #10).
|
|
9
|
+
*
|
|
10
|
+
* The fix is additive on purpose: the positional keeps working everywhere, so
|
|
11
|
+
* nothing that runs today stops running, and the flag now works everywhere too.
|
|
12
|
+
* Passing both is only an error when they disagree — repeating yourself is
|
|
13
|
+
* harmless; naming two different projects in one command is not, and guessing
|
|
14
|
+
* which one was meant is how the wrong project gets rolled back.
|
|
15
|
+
*/
|
|
16
|
+
export function chooseProjectRef(positional, flag) {
|
|
17
|
+
const p = positional?.trim() || undefined;
|
|
18
|
+
const f = flag?.trim() || undefined;
|
|
19
|
+
if (p && f) {
|
|
20
|
+
if (p !== f)
|
|
21
|
+
return { kind: 'conflict', positional: p, flag: f };
|
|
22
|
+
return { kind: 'ref', ref: f };
|
|
23
|
+
}
|
|
24
|
+
if (f)
|
|
25
|
+
return { kind: 'ref', ref: f };
|
|
26
|
+
if (p)
|
|
27
|
+
return { kind: 'ref', ref: p };
|
|
28
|
+
return { kind: 'none' };
|
|
29
|
+
}
|
|
30
|
+
export function projectRefConflictMessage(conflict) {
|
|
31
|
+
return (`Two different projects named in one command: \`${conflict.positional}\` and ` +
|
|
32
|
+
`--project ${conflict.flag}. Pass one.`);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=project-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-ref.js","sourceRoot":"","sources":["../../src/lib/project-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,UAAU,gBAAgB,CAC9B,UAA8B,EAC9B,IAAwB;IAExB,MAAM,CAAC,GAAG,UAAU,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACtC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAGzC;IACC,OAAO,CACL,kDAAkD,QAAQ,CAAC,UAAU,SAAS;QAC9E,aAAa,QAAQ,CAAC,IAAI,aAAa,CACxC,CAAC;AACJ,CAAC"}
|