@substrat-run/cli 0.38.2 → 0.40.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.
- package/dist/cli.js +24 -7
- package/dist/cli.js.map +1 -1
- package/dist/hostnames.d.ts +2 -21
- package/dist/hostnames.d.ts.map +1 -1
- package/dist/hostnames.js +30 -38
- package/dist/hostnames.js.map +1 -1
- package/dist/http.d.ts +8 -19
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +8 -29
- package/dist/http.js.map +1 -1
- package/dist/installs.d.ts.map +1 -1
- package/dist/installs.js +3 -12
- package/dist/installs.js.map +1 -1
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +3 -20
- package/dist/listing.js.map +1 -1
- package/dist/login.d.ts +5 -0
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +9 -12
- package/dist/login.js.map +1 -1
- package/dist/plane.d.ts +50 -0
- package/dist/plane.d.ts.map +1 -0
- package/dist/plane.js +68 -0
- package/dist/plane.js.map +1 -0
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +20 -10
- package/dist/preview.js.map +1 -1
- package/dist/problem.d.ts +7 -2
- package/dist/problem.d.ts.map +1 -1
- package/dist/problem.js +8 -10
- package/dist/problem.js.map +1 -1
- package/dist/promote.d.ts +3 -31
- package/dist/promote.d.ts.map +1 -1
- package/dist/promote.js +25 -27
- package/dist/promote.js.map +1 -1
- package/dist/push.d.ts +115 -0
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +209 -29
- package/dist/push.js.map +1 -1
- package/dist/schedule-sweeper.d.ts +52 -0
- package/dist/schedule-sweeper.d.ts.map +1 -0
- package/dist/schedule-sweeper.js +270 -0
- package/dist/schedule-sweeper.js.map +1 -0
- package/dist/scope.d.ts.map +1 -1
- package/dist/scope.js +37 -99
- package/dist/scope.js.map +1 -1
- package/dist/versions.d.ts.map +1 -1
- package/dist/versions.js +8 -18
- package/dist/versions.js.map +1 -1
- package/dist/whoami.d.ts +7 -11
- package/dist/whoami.d.ts.map +1 -1
- package/dist/whoami.js +2 -13
- package/dist/whoami.js.map +1 -1
- package/package.json +5 -3
package/dist/promote.js
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
* by name, any other tenant only as a count. `--ack-export-break` passes it once that is read.
|
|
15
15
|
*/
|
|
16
16
|
import { diffRegistries, unitemisedRegistryChanges, } from '@substrat-run/contracts';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { failureMessage,
|
|
17
|
+
import { ControlPlaneError, } from '@substrat-run/control-plane-client';
|
|
18
|
+
import { planeFor, viaPlane, walkAll } from './plane.js';
|
|
19
|
+
import { failureMessage, readRefused } from './problem.js';
|
|
20
20
|
/** The listing a refused (or acknowledged) export break carries, one line per affected app. */
|
|
21
21
|
export function exportBreakLines(b) {
|
|
22
22
|
const lines = b.affected.map((r) => ` ${r.vertical} (scope ${r.scopeId}) imports ${r.type} v${r.schemaVersion} — ` +
|
|
@@ -30,23 +30,22 @@ export function exportBreakListing(b) {
|
|
|
30
30
|
return `\n${exportBreakLines(b).join('\n')}\n(re-run with --ack-export-break once read)`;
|
|
31
31
|
}
|
|
32
32
|
export async function promote(opts) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (!res.ok) {
|
|
33
|
+
// `advisory`: a promote is one of the three commands that nudge a stale CLI, off every
|
|
34
|
+
// answer — success or refusal — before it is read.
|
|
35
|
+
const client = planeFor(opts.controlPlaneUrl, opts.header, { advisory: true });
|
|
36
|
+
try {
|
|
37
|
+
// The refusal is passed through as it is: it needs a second round-trip to explain, which a
|
|
38
|
+
// synchronous mapper cannot make.
|
|
39
|
+
return await viaPlane(() => client.promoteChannel(opts.slug, opts.channel, opts.versionId, opts.acknowledge), (e) => e);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
if (!(e instanceof ControlPlaneError))
|
|
43
|
+
throw e;
|
|
44
|
+
const body = e.body ?? '';
|
|
45
|
+
// A refused promote is exactly where the problem document earns its keep: the two
|
|
46
|
+
// checkpoints answer 4xx with the digests that need acknowledging (#971) — and, since
|
|
47
|
+
// #1677, with the two diffs those digests stand for, so `--ack-*` is an informed answer.
|
|
48
|
+
// An export-break refusal (#1705 PR 3) carries its own listing of the apps it breaks.
|
|
50
49
|
let parsed = {};
|
|
51
50
|
try {
|
|
52
51
|
parsed = JSON.parse(body);
|
|
@@ -59,7 +58,7 @@ export async function promote(opts) {
|
|
|
59
58
|
: parsed.exportBreaksUnavailable
|
|
60
59
|
? `\n (${parsed.exportBreaksUnavailable}; re-run with --ack-export-break to promote anyway)`
|
|
61
60
|
: '';
|
|
62
|
-
const message = failureMessage('promote failed',
|
|
61
|
+
const message = failureMessage('promote failed', e.status, body);
|
|
63
62
|
if (!message.includes(NEEDS_ACK))
|
|
64
63
|
throw new Error(message + listing);
|
|
65
64
|
const lines = await explainRefusal(opts, {
|
|
@@ -68,7 +67,6 @@ export async function promote(opts) {
|
|
|
68
67
|
});
|
|
69
68
|
throw new Error(`${message}${listing}\n\n${lines.join('\n')}`);
|
|
70
69
|
}
|
|
71
|
-
return parseJsonBody(body, url);
|
|
72
70
|
}
|
|
73
71
|
/** What both digest refusals say (`… — acknowledge it explicitly to promote`). Case matters:
|
|
74
72
|
* the export-break refusal says "Acknowledge it explicitly (exportBreak)", and it is answered
|
|
@@ -81,20 +79,20 @@ const NEEDS_ACK = 'acknowledge it explicitly';
|
|
|
81
79
|
* that could not be read is said so in a line rather than put in its place.
|
|
82
80
|
*/
|
|
83
81
|
export async function explainRefusal(opts, refused) {
|
|
84
|
-
const
|
|
85
|
-
const get = (
|
|
82
|
+
const client = planeFor(opts.controlPlaneUrl, opts.header);
|
|
83
|
+
const get = (read) => viaPlane(read, readRefused);
|
|
86
84
|
try {
|
|
87
|
-
const channels = await
|
|
85
|
+
const channels = await walkAll((page) => client.listChannels(opts.slug, page));
|
|
88
86
|
// The channel's `versionId`, as the gate compares — not `servingVersionId`, which only
|
|
89
87
|
// differs after a failed in-place serve (#1661 follows that one for reconcile).
|
|
90
88
|
const serving = channels.find((c) => c.channel === opts.channel)?.versionId;
|
|
91
89
|
if (!serving)
|
|
92
90
|
return ['(nothing serves this channel yet, so there is nothing to diff against)'];
|
|
93
|
-
const registry = (id) => get(
|
|
91
|
+
const registry = (id) => get(() => client.getVersionRegistry(opts.slug, id)).then((r) => r.registry);
|
|
94
92
|
const [from, to, migrations] = await Promise.all([
|
|
95
93
|
registry(serving),
|
|
96
94
|
registry(opts.versionId),
|
|
97
|
-
get(
|
|
95
|
+
get(() => client.getVersionMigrations(opts.slug, opts.versionId, serving)).then((r) => r.migrations),
|
|
98
96
|
]);
|
|
99
97
|
return [
|
|
100
98
|
`${opts.channel} serves ${serving}; promoting ${opts.versionId}.`,
|
package/dist/promote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../src/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,cAAc,EACd,yBAAyB,GAK1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../src/promote.ts"],"names":[],"mappings":"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"}
|
package/dist/push.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type DeclaredMigration, type AssetEntry, type AssetsNeed, type DeclaredBinding, type DeclaredOperationOutput, type EmittedModel, type EnvVarSpec, type PermissionRegistry, type PermissionsInput, type RuntimeNeeds, type VersionOrigin, type DeployManifest } from '@substrat-run/contracts';
|
|
2
|
+
import { type ScheduleRef } from './schedule-sweeper.js';
|
|
2
3
|
/**
|
|
3
4
|
* Derive the vertical's permission registry (D-39/D-41) from its declared TypeScript surface —
|
|
4
5
|
* the single typed source. `package.json` `substrat.permissions` points at the module that
|
|
@@ -108,6 +109,9 @@ export interface DeclaredSurface {
|
|
|
108
109
|
readonly declaredEventsTruncated: boolean;
|
|
109
110
|
/** Every module's SQL migrations (#1677) — see {@link flattenDeclaredMigrations}. */
|
|
110
111
|
readonly migrations: ReturnType<typeof flattenDeclaredMigrations>;
|
|
112
|
+
/** True when any module declares an attachment target (#1995): the push then declares the
|
|
113
|
+
* platform's attachment blob store itself — see `withAttachmentBlobStore`. */
|
|
114
|
+
readonly declaresAttachments: boolean;
|
|
111
115
|
}
|
|
112
116
|
export declare function deriveDeclaredSurface(dir: string): Promise<DeclaredSurface>;
|
|
113
117
|
/** The declared permission surface alone — `deriveDeclaredSurface` for the callers that
|
|
@@ -144,6 +148,9 @@ export interface PermissionSurface {
|
|
|
144
148
|
/** The code-side `envSpec` declaration, when the entry exports one (#1206) — already
|
|
145
149
|
* checked against any leftover package.json copy, so a drift threw before this existed. */
|
|
146
150
|
readonly envSpec?: readonly EnvVarSpec[];
|
|
151
|
+
/** Every module's declared schedules (#1232), for `--check`'s sweeper check (#1646). Not
|
|
152
|
+
* part of the `--json` artifact, which names its fields one by one. */
|
|
153
|
+
readonly schedules?: DeployManifest['schedules'];
|
|
147
154
|
}
|
|
148
155
|
/**
|
|
149
156
|
* The push's permission preflight, on its own (#1205).
|
|
@@ -299,6 +306,69 @@ export interface LayerRulesChecked {
|
|
|
299
306
|
* default and reads exactly as before.
|
|
300
307
|
*/
|
|
301
308
|
export declare function assertLayerRules(dir: string, skipLint?: boolean, log?: (message: string) => void): LayerRulesChecked;
|
|
309
|
+
/**
|
|
310
|
+
* Declared schedules, and something to run them (#1646, #1902).
|
|
311
|
+
*
|
|
312
|
+
* A vertical's modules — its own, and every engine it composes — may declare recurring work
|
|
313
|
+
* (`manifest.schedules`). On a hosted deploy nothing runs it but a `defineScopeSweeperDO`
|
|
314
|
+
* class, bound as a Durable Object: the control plane's cron reaches only its own module-less
|
|
315
|
+
* host, and a dispatch script's `triggers.crons` is not honoured. Since #1902 the uploader
|
|
316
|
+
* supplies that class to a vertical whose entry exports none, so what this refuses is the
|
|
317
|
+
* wiring that would still leave the schedules unrun — an own sweeper nothing binds, the
|
|
318
|
+
* platform's names taken by something else, a vertical-host too old to hand the supplied
|
|
319
|
+
* sweeper its host (`sweeperOffence`). This repo's `lint:schedule-sweeper` refuses the same
|
|
320
|
+
* for the verticals in it; an external vertical's only check is this one, on the push.
|
|
321
|
+
*
|
|
322
|
+
* The signals, and why each is the one used:
|
|
323
|
+
*
|
|
324
|
+
* - SCHEDULES come from the same `definePermissions(...)` import the manifest's `schedules`
|
|
325
|
+
* field is built from (`deriveDeclaredSurface`), so a schedule an ENGINE declares counts
|
|
326
|
+
* even though the vertical's source never names it — a text search would miss exactly
|
|
327
|
+
* that case.
|
|
328
|
+
* - BINDINGS come from the deploy config the push is about to build with (`cfg`), in either
|
|
329
|
+
* vocabulary — `runtimeNeeds.stores` or a hand-authored `wrangler.jsonc` — so the check
|
|
330
|
+
* reads the bindings that will actually be uploaded.
|
|
331
|
+
* - The EXPORT is read from the worker entry's source (`cfg.main`), following relative
|
|
332
|
+
* re-exports. The built bundle was considered and rejected: its exports are a list of
|
|
333
|
+
* names with no mark saying which class is a sweeper, and it cannot be imported to ask
|
|
334
|
+
* (it imports `cloudflare:workers`) — the source's `defineScopeSweeperDO(...)` call is
|
|
335
|
+
* the only place that fact is legible. Reading source also lets `push --check` make the
|
|
336
|
+
* same check with no build at all.
|
|
337
|
+
*
|
|
338
|
+
* What it cannot see is whether an own sweeper's roster is ever filled (`noteScope` from
|
|
339
|
+
* `onProvision`): that is runtime wiring. The platform's sweeper is filled by
|
|
340
|
+
* `mountPlatformSurface` itself.
|
|
341
|
+
*
|
|
342
|
+
* `--allow-unswept-schedules` pushes anyway and says so — for a sweeper wired in a shape this
|
|
343
|
+
* reader does not follow (built by a helper of your own, say), where refusing would be refusing
|
|
344
|
+
* a working deploy.
|
|
345
|
+
*/
|
|
346
|
+
export declare function assertSchedulesAreSwept(dir: string, cfg: Record<string, unknown>, schedules: readonly ScheduleRef[] | undefined, allow?: boolean, log?: (message: string) => void,
|
|
347
|
+
/** The entry's sweeper classes, when the caller has already read them (`sweeperClassesOf`). */
|
|
348
|
+
known?: string[]): void;
|
|
349
|
+
/**
|
|
350
|
+
* Does the target control plane supply the scope sweeper (#1902)? A vertical whose entry
|
|
351
|
+
* exports none leaves it to the platform, and a plane from before #1902 supplies nothing —
|
|
352
|
+
* it would accept the version, and the schedules would never fire, with no error anywhere.
|
|
353
|
+
* So the plane must SAY so: every response from a current one lists
|
|
354
|
+
* `PLATFORM_FEATURE_SCOPE_SWEEPER` in `PLATFORM_FEATURES_HEADER` (the capability half of the
|
|
355
|
+
* handshake the CLI version advisory rides). One cheap read of the slug's versions asks; its
|
|
356
|
+
* status does not matter — a 401 or a 404 carries the header too — and silence is a refusal.
|
|
357
|
+
*/
|
|
358
|
+
export declare function assertPlaneSuppliesSweeper(opts: {
|
|
359
|
+
controlPlaneUrl: string;
|
|
360
|
+
authHeader: Record<string, string>;
|
|
361
|
+
slug: string;
|
|
362
|
+
}, allow?: boolean, log?: (message: string) => void): Promise<void>;
|
|
363
|
+
/** Whether a control plane's response lists `feature` among the platform's features (#1902). */
|
|
364
|
+
export declare function planeSupplies(headers: Headers, feature: string): boolean;
|
|
365
|
+
/**
|
|
366
|
+
* The classes the worker entry exports as its own `defineScopeSweeperDO` sweeper — the
|
|
367
|
+
* manifest's `sweeperClasses` (#1902), what the control plane decides from, once at push,
|
|
368
|
+
* whether to supply the platform's. `[]` when it exports none; `undefined` when the entry cannot be read, which the
|
|
369
|
+
* manifest carries as absence rather than as a claim of "none".
|
|
370
|
+
*/
|
|
371
|
+
export declare function sweeperClassesOf(dir: string, cfg: Record<string, unknown>): string[] | undefined;
|
|
302
372
|
export interface PushOptions {
|
|
303
373
|
dir: string;
|
|
304
374
|
slug: string;
|
|
@@ -361,6 +431,12 @@ export interface PushOptions {
|
|
|
361
431
|
* that only shows up as a 404 on the live hostname, so it is refused by default.
|
|
362
432
|
*/
|
|
363
433
|
allowUnservedUi?: boolean;
|
|
434
|
+
/**
|
|
435
|
+
* Push schedules nothing visibly runs (#1646) — the CLI's --allow-unswept-schedules. See
|
|
436
|
+
* `assertSchedulesAreSwept`: declared schedules with no exported, bound sweeper are refused
|
|
437
|
+
* by default, because they deploy cleanly and never fire.
|
|
438
|
+
*/
|
|
439
|
+
allowUnsweptSchedules?: boolean;
|
|
364
440
|
/**
|
|
365
441
|
* Push code the layer rules never saw (#955) — the CLI's --skip-lint. See
|
|
366
442
|
* `assertLayerRules`: the gate refuses on a violation, and this is the deliberate,
|
|
@@ -396,6 +472,13 @@ export declare function resolveWranglerConfig(dir: string): {
|
|
|
396
472
|
cfg: Record<string, unknown>;
|
|
397
473
|
needs: RuntimeNeeds | undefined;
|
|
398
474
|
};
|
|
475
|
+
/**
|
|
476
|
+
* The deploy config a push WOULD build with, without `resolveWranglerConfig`'s notes and
|
|
477
|
+
* refusals — for `push --check` (#1646), which asks what the bindings are and has no business
|
|
478
|
+
* refusing a tree for lacking a deploy config it is not about to build. Same precedence:
|
|
479
|
+
* `substrat.runtimeNeeds` wins over a hand-authored wrangler.jsonc.
|
|
480
|
+
*/
|
|
481
|
+
export declare function deployConfigIfAny(dir: string): Record<string, unknown> | undefined;
|
|
399
482
|
/**
|
|
400
483
|
* A vertical's OWN stores, as the push declares them to the control plane: its DO
|
|
401
484
|
* bindings and D1 databases (e.g. a Better-Auth AUTH_DB), and the DO classes they bind.
|
|
@@ -413,6 +496,18 @@ export declare function declaredStoresOf(cfg: Record<string, unknown>): {
|
|
|
413
496
|
bindings: DeclaredBinding[];
|
|
414
497
|
doClasses: string[];
|
|
415
498
|
};
|
|
499
|
+
/**
|
|
500
|
+
* A vertical's own static binding may not take the attachment store's name (#1995). When the
|
|
501
|
+
* push declares that store, the platform binds `ATTACHMENTS__<tenant>` once per installed
|
|
502
|
+
* tenant on the same script, and the host reads attachment bytes through exactly that name —
|
|
503
|
+
* an own binding called `ATTACHMENTS`, or anything under `ATTACHMENTS__`, would be a second
|
|
504
|
+
* meaning for it. Refused before the upload rather than resolved by whichever binding wins.
|
|
505
|
+
*/
|
|
506
|
+
export declare function assertAttachmentBindingFree(bindings: readonly {
|
|
507
|
+
name: string;
|
|
508
|
+
}[], blobStores: readonly {
|
|
509
|
+
binding: string;
|
|
510
|
+
}[]): void;
|
|
416
511
|
/**
|
|
417
512
|
* Where the derived wrangler config is written for the build.
|
|
418
513
|
*
|
|
@@ -431,6 +526,26 @@ export declare function push(opts: PushOptions): Promise<{
|
|
|
431
526
|
verticalSlug: string;
|
|
432
527
|
warnings?: string[];
|
|
433
528
|
}>;
|
|
529
|
+
/**
|
|
530
|
+
* POST the assembled bundle to `/verticals/<slug>/deploy` and read the control plane's answer.
|
|
531
|
+
*
|
|
532
|
+
* The multipart upload is the one request the typed client cannot express — its body is a
|
|
533
|
+
* form whose boundary `fetch` writes, so no content type may be set — and it needs the raw
|
|
534
|
+
* exchange: the CLI reads the answer's status, headers and text itself. It still goes through
|
|
535
|
+
* the client, for the addressing and the credential map, with the stale-CLI nudge off the
|
|
536
|
+
* answer (success or refusal) as it always was.
|
|
537
|
+
*/
|
|
538
|
+
export declare function uploadVersion(opts: {
|
|
539
|
+
controlPlaneUrl: string;
|
|
540
|
+
authHeader: Record<string, string>;
|
|
541
|
+
slug: string;
|
|
542
|
+
}, form: FormData, what: string): Promise<{
|
|
543
|
+
id: string;
|
|
544
|
+
admission: string;
|
|
545
|
+
deploymentRef: string;
|
|
546
|
+
verticalSlug: string;
|
|
547
|
+
warnings?: string[];
|
|
548
|
+
}>;
|
|
434
549
|
/** Push defaults read from a vertical's package.json, so `substrat push` needs no flags. */
|
|
435
550
|
export interface VerticalMeta {
|
|
436
551
|
/** Registry slug: an explicit `substrat.slug`, else the package name with scope + a leading `demo-` stripped. */
|
package/dist/push.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|