@substrat-run/cli 0.6.2 → 0.8.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 +83 -6
- package/dist/cli.js.map +1 -1
- package/dist/hostnames.d.ts +52 -0
- package/dist/hostnames.d.ts.map +1 -0
- package/dist/hostnames.js +109 -0
- package/dist/hostnames.js.map +1 -0
- package/dist/push.d.ts +48 -1
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +127 -18
- package/dist/push.js.map +1 -1
- package/package.json +6 -4
package/dist/cli.js
CHANGED
|
@@ -26,6 +26,7 @@ import { promote } from './promote.js';
|
|
|
26
26
|
import { setListing, requestPublish } from './listing.js';
|
|
27
27
|
import { fetchWhoami } from './whoami.js';
|
|
28
28
|
import { pullScope, restoreScope, resolveTenantId } from './scope.js';
|
|
29
|
+
import { listVerticalHostnames, bindSurfaceHostname, unbindHostname, formatHostnames } from './hostnames.js';
|
|
29
30
|
const argv = process.argv.slice(2);
|
|
30
31
|
/** `--name value` → value, else undefined. */
|
|
31
32
|
function flag(name) {
|
|
@@ -69,6 +70,14 @@ Usage:
|
|
|
69
70
|
load a backup into an existing hosted scope,
|
|
70
71
|
REPLACING its data (a pull's .sqlite, a local
|
|
71
72
|
adapter-sqlite scope file, or a .dump.json)
|
|
73
|
+
substrat hostnames <slug> list an install's hostname bindings
|
|
74
|
+
substrat hostnames bind <slug> --surface <s> [--domain <d>] [--scope <id>]
|
|
75
|
+
give a surface a URL: no --domain mints a
|
|
76
|
+
platform hostname (live immediately);
|
|
77
|
+
--domain records a custom domain (pending
|
|
78
|
+
until DNS validation completes)
|
|
79
|
+
substrat hostnames unbind <hostname> remove a binding (the surface's canonical
|
|
80
|
+
flag moves only when you bind a new one)
|
|
72
81
|
|
|
73
82
|
'substrat push' defaults everything from the vertical's package.json — run it from inside the
|
|
74
83
|
directory with no flags. Override any of: --slug, --name, --version. The slug/name come from a
|
|
@@ -206,26 +215,37 @@ async function cmdPush() {
|
|
|
206
215
|
}
|
|
207
216
|
const { controlPlaneUrl, header, as } = auth;
|
|
208
217
|
console.log(`authenticating with ${as}`);
|
|
209
|
-
// Version defaults to the registry's latest, patch-bumped — no hand-tracking. --version
|
|
210
|
-
|
|
218
|
+
// Version defaults to the registry's latest, patch-bumped — no hand-tracking. --version
|
|
219
|
+
// wins. A pinned push may land on `<tenant>/<slug>` or a legacy bare row the pin owns,
|
|
220
|
+
// so both lineages feed the bump (nextVersion takes the max across them).
|
|
221
|
+
const versionSlugs = tenant ? [`${tenant}/${slug}`, slug] : [slug];
|
|
222
|
+
const version = flag('version') ?? (await nextVersion(controlPlaneUrl, header, versionSlugs, meta.versionSeed));
|
|
211
223
|
console.log(`pushing ${tenant ? `${tenant}/` : ''}${slug}@${version}${name && name !== slug ? ` (${name})` : ''} …`);
|
|
212
224
|
const v = await push({
|
|
213
|
-
dir, slug, version, name,
|
|
225
|
+
dir, slug, version, name, tenant,
|
|
214
226
|
envSpec: meta.envSpec,
|
|
215
227
|
ownerGrants: meta.ownerGrants,
|
|
216
228
|
entitlements: meta.entitlements,
|
|
217
229
|
provides: meta.provides,
|
|
218
230
|
requires: meta.requires,
|
|
231
|
+
surfaces: meta.surfaces,
|
|
219
232
|
controlPlaneUrl, authHeader: header,
|
|
220
233
|
});
|
|
221
|
-
console.log(`✓ pushed. version ${v.id} (${version}) is ${v.admission}; deploymentRef=${v.deploymentRef}`);
|
|
234
|
+
console.log(`✓ pushed ${v.verticalSlug ?? slug}. version ${v.id} (${version}) is ${v.admission}; deploymentRef=${v.deploymentRef}`);
|
|
235
|
+
// Advisory, same spirit as the permission-surface gate: a bound surface the new
|
|
236
|
+
// version stopped declaring keeps serving, but probably not what its users expect.
|
|
237
|
+
for (const w of v.warnings ?? [])
|
|
238
|
+
console.warn(`⚠ ${w}`);
|
|
222
239
|
// `--promote <channel>` completes the deploy in the same run — the merge-to-main
|
|
223
240
|
// workflow's shape. A private vertical's push is already admitted, so this succeeds
|
|
224
241
|
// immediately; a listed vertical's lands pending and the refusal below names why.
|
|
242
|
+
// Addressed by the REGISTRY id the deploy actually landed on (`verticalSlug`), not the
|
|
243
|
+
// bare name — for staff the two differ, and effectiveSlug keeps the full id valid for
|
|
244
|
+
// builders too.
|
|
225
245
|
const promoteTo = flag('promote');
|
|
226
246
|
if (promoteTo) {
|
|
227
|
-
const ch = await promote({ controlPlaneUrl, header, slug, channel: promoteTo, versionId: v.id });
|
|
228
|
-
console.log(`✓ ${slug} → ${ch.channel} now points at ${version}`);
|
|
247
|
+
const ch = await promote({ controlPlaneUrl, header, slug: v.verticalSlug ?? slug, channel: promoteTo, versionId: v.id });
|
|
248
|
+
console.log(`✓ ${v.verticalSlug ?? slug} → ${ch.channel} now points at ${version}`);
|
|
229
249
|
}
|
|
230
250
|
else if (v.admission === 'admitted') {
|
|
231
251
|
console.log(' promote it to a channel to go live (or push with --promote prod).');
|
|
@@ -314,6 +334,61 @@ async function cmdScope() {
|
|
|
314
334
|
outDir: flag('out') ?? '.substrat',
|
|
315
335
|
});
|
|
316
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* Surface hostname bindings (K-26 multi-surface — the CLI half of the dashboard's
|
|
339
|
+
* Domains tab). Tenant-narrowed server-side: a builder session or push token reaches
|
|
340
|
+
* only its own workspace's rows; staff pass --tenant to act for one.
|
|
341
|
+
*/
|
|
342
|
+
async function cmdHostnames() {
|
|
343
|
+
const sub = argv[1];
|
|
344
|
+
const usage = 'usage: substrat hostnames <slug> [--tenant <id-or-slug>]\n' +
|
|
345
|
+
' substrat hostnames bind <slug> --surface <s> [--domain <d>] [--scope <id>] [--tenant <t>]\n' +
|
|
346
|
+
' substrat hostnames unbind <hostname> [--tenant <t>]';
|
|
347
|
+
const { controlPlaneUrl, header, as } = resolveAuth({ cp: flag('cp'), token: flag('token'), tenant: flag('tenant') });
|
|
348
|
+
if (sub === 'unbind') {
|
|
349
|
+
const hostname = argv[2];
|
|
350
|
+
if (!hostname || hostname.startsWith('--')) {
|
|
351
|
+
console.error(usage);
|
|
352
|
+
process.exit(1);
|
|
353
|
+
}
|
|
354
|
+
console.log(`authenticating with ${as}`);
|
|
355
|
+
await unbindHostname(controlPlaneUrl, header, hostname);
|
|
356
|
+
console.log(`✓ ${hostname.toLowerCase()} unbound — requests to it stop resolving`);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
const slug = sub === 'bind' ? argv[2] : sub;
|
|
360
|
+
if (!slug || slug.startsWith('--')) {
|
|
361
|
+
console.error(usage);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
console.log(`authenticating with ${as}`);
|
|
365
|
+
const tenantId = await resolveTenantId(controlPlaneUrl, header, flag('tenant') ?? process.env.SUBSTRAT_TENANT ?? loadConfig().defaultTenant);
|
|
366
|
+
if (sub === 'bind') {
|
|
367
|
+
const surface = flag('surface');
|
|
368
|
+
if (!surface) {
|
|
369
|
+
console.error(usage);
|
|
370
|
+
process.exit(1);
|
|
371
|
+
}
|
|
372
|
+
const domain = flag('domain');
|
|
373
|
+
const bound = await bindSurfaceHostname({
|
|
374
|
+
controlPlaneUrl, header, tenantId, slug, surface,
|
|
375
|
+
...(domain ? { domain } : {}),
|
|
376
|
+
...(flag('scope') ? { scope: flag('scope') } : {}),
|
|
377
|
+
});
|
|
378
|
+
if (bound.status === 'active') {
|
|
379
|
+
console.log(`✓ https://${bound.hostname} serves surface '${surface}'`);
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
console.log(`✓ ${bound.hostname} recorded (${bound.status}) for surface '${surface}'`);
|
|
383
|
+
console.log(' it goes live once DNS validation and certificate issuance complete');
|
|
384
|
+
}
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
const rows = await listVerticalHostnames(controlPlaneUrl, header, tenantId, slug);
|
|
388
|
+
console.log(formatHostnames(rows));
|
|
389
|
+
if (rows.some((r) => r.canonical))
|
|
390
|
+
console.log('\n* = canonical for its (scope, surface)');
|
|
391
|
+
}
|
|
317
392
|
async function cmdWhoami() {
|
|
318
393
|
const { controlPlaneUrl, header } = resolveAuth({ cp: flag('cp'), token: flag('token'), tenant: flag('tenant') });
|
|
319
394
|
const { user, tenants } = await fetchWhoami(controlPlaneUrl, header);
|
|
@@ -347,6 +422,8 @@ async function main() {
|
|
|
347
422
|
return cmdWhoami();
|
|
348
423
|
case 'scope':
|
|
349
424
|
return cmdScope();
|
|
425
|
+
case 'hostnames':
|
|
426
|
+
return cmdHostnames();
|
|
350
427
|
case 'help':
|
|
351
428
|
case '--help':
|
|
352
429
|
case '-h':
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `substrat hostnames` — the CLI half of surface hostname binding (K-26 multi-surface;
|
|
3
|
+
* control-plane.md §4.7). One scope can front several apps; the hostname decides which
|
|
4
|
+
* surface the vertical serves (`readRoutedNode(...).surface`). The dashboard's Domains
|
|
5
|
+
* tab is the interactive path; this is CI-and-support parity over the same tenant-
|
|
6
|
+
* narrowed control-plane routes (a builder session reaches only its own tenant's rows).
|
|
7
|
+
*
|
|
8
|
+
* A PLATFORM hostname is minted from the install's own default label —
|
|
9
|
+
* `crm.global.substrat.run` + surface `eka` → `crm-eka.global.substrat.run` — and is
|
|
10
|
+
* live immediately (it rides the wildcard cert). A CUSTOM domain lands `pending` and
|
|
11
|
+
* walks the §4.2 DNS-validation lifecycle.
|
|
12
|
+
*/
|
|
13
|
+
/** One binding row as the control plane returns it (contracts' HostnameBinding). */
|
|
14
|
+
export interface HostnameRow {
|
|
15
|
+
hostname: string;
|
|
16
|
+
tenantId: string;
|
|
17
|
+
scopeId: string;
|
|
18
|
+
verticalSlug: string | null;
|
|
19
|
+
surface: string;
|
|
20
|
+
status: string;
|
|
21
|
+
statusNote: string | null;
|
|
22
|
+
canonical: boolean;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
}
|
|
25
|
+
/** The tenant's bindings for one vertical — matched bare or `<tenant>/<slug>`-prefixed. */
|
|
26
|
+
export declare function listVerticalHostnames(controlPlaneUrl: string, header: Record<string, string>, tenantId: string, slug: string): Promise<HostnameRow[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Bind a hostname to one surface of an install. The install is addressed by its
|
|
29
|
+
* vertical slug; the scope is found through the bindings that already exist (every
|
|
30
|
+
* install got a default hostname at provisioning) — several installs of the same
|
|
31
|
+
* vertical need an explicit `--scope`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function bindSurfaceHostname(opts: {
|
|
34
|
+
controlPlaneUrl: string;
|
|
35
|
+
header: Record<string, string>;
|
|
36
|
+
tenantId: string;
|
|
37
|
+
slug: string;
|
|
38
|
+
surface: string;
|
|
39
|
+
/** A custom domain to bind; omitted ⇒ mint a platform hostname for the surface. */
|
|
40
|
+
domain?: string;
|
|
41
|
+
/** Disambiguates when the tenant runs several installs of the vertical. */
|
|
42
|
+
scope?: string;
|
|
43
|
+
}): Promise<{
|
|
44
|
+
hostname: string;
|
|
45
|
+
status: string;
|
|
46
|
+
canonical: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
/** Unbind one hostname. Tenant-narrowed server-side: a foreign hostname is a 404. */
|
|
49
|
+
export declare function unbindHostname(controlPlaneUrl: string, header: Record<string, string>, hostname: string): Promise<void>;
|
|
50
|
+
/** Render bindings as the aligned table `substrat hostnames <slug>` prints. */
|
|
51
|
+
export declare function formatHostnames(rows: HostnameRow[]): string;
|
|
52
|
+
//# sourceMappingURL=hostnames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostnames.d.ts","sourceRoot":"","sources":["../src/hostnames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD,2FAA2F;AAC3F,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,EAAE,CAAC,CAIxB;AAKD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAoDpE;AAED,qFAAqF;AACrF,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAa3D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `substrat hostnames` — the CLI half of surface hostname binding (K-26 multi-surface;
|
|
3
|
+
* control-plane.md §4.7). One scope can front several apps; the hostname decides which
|
|
4
|
+
* surface the vertical serves (`readRoutedNode(...).surface`). The dashboard's Domains
|
|
5
|
+
* tab is the interactive path; this is CI-and-support parity over the same tenant-
|
|
6
|
+
* narrowed control-plane routes (a builder session reaches only its own tenant's rows).
|
|
7
|
+
*
|
|
8
|
+
* A PLATFORM hostname is minted from the install's own default label —
|
|
9
|
+
* `crm.global.substrat.run` + surface `eka` → `crm-eka.global.substrat.run` — and is
|
|
10
|
+
* live immediately (it rides the wildcard cert). A CUSTOM domain lands `pending` and
|
|
11
|
+
* walks the §4.2 DNS-validation lifecycle.
|
|
12
|
+
*/
|
|
13
|
+
async function request(url, header, init) {
|
|
14
|
+
const res = await fetch(url, { ...init, headers: { 'content-type': 'application/json', ...header } });
|
|
15
|
+
const body = await res.text();
|
|
16
|
+
if (!res.ok) {
|
|
17
|
+
let message = body;
|
|
18
|
+
try {
|
|
19
|
+
message = JSON.parse(body).error ?? body;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// Not JSON — the raw body is the message.
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`${res.status}: ${message}`);
|
|
25
|
+
}
|
|
26
|
+
return JSON.parse(body);
|
|
27
|
+
}
|
|
28
|
+
/** The tenant's bindings for one vertical — matched bare or `<tenant>/<slug>`-prefixed. */
|
|
29
|
+
export async function listVerticalHostnames(controlPlaneUrl, header, tenantId, slug) {
|
|
30
|
+
const base = controlPlaneUrl.replace(/\/$/, '');
|
|
31
|
+
const rows = await request(`${base}/hostnames?tenantId=${encodeURIComponent(tenantId)}`, header);
|
|
32
|
+
return rows.filter((h) => h.verticalSlug === slug || (h.verticalSlug ?? '').endsWith(`/${slug}`));
|
|
33
|
+
}
|
|
34
|
+
const slugifyLabel = (name) => name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'surface';
|
|
35
|
+
/**
|
|
36
|
+
* Bind a hostname to one surface of an install. The install is addressed by its
|
|
37
|
+
* vertical slug; the scope is found through the bindings that already exist (every
|
|
38
|
+
* install got a default hostname at provisioning) — several installs of the same
|
|
39
|
+
* vertical need an explicit `--scope`.
|
|
40
|
+
*/
|
|
41
|
+
export async function bindSurfaceHostname(opts) {
|
|
42
|
+
const base = opts.controlPlaneUrl.replace(/\/$/, '');
|
|
43
|
+
const rows = await listVerticalHostnames(opts.controlPlaneUrl, opts.header, opts.tenantId, opts.slug);
|
|
44
|
+
const scopes = [...new Set(rows.map((h) => h.scopeId))];
|
|
45
|
+
const scopeId = opts.scope ?? (scopes.length === 1 ? scopes[0] : undefined);
|
|
46
|
+
if (!scopeId) {
|
|
47
|
+
if (scopes.length === 0) {
|
|
48
|
+
throw new Error(`no install of '${opts.slug}' has a hostname in this workspace — is it provisioned?`);
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`'${opts.slug}' runs in several scopes — pass --scope <id>:\n ${scopes.join('\n ')}`);
|
|
51
|
+
}
|
|
52
|
+
const own = rows.filter((h) => h.scopeId === scopeId);
|
|
53
|
+
// First binding for a (scope, surface) is canonical; later ones are aliases —
|
|
54
|
+
// adding never silently demotes the URL a surface already serves on.
|
|
55
|
+
const canonical = !own.some((h) => h.surface === opts.surface);
|
|
56
|
+
const bind = (hostname) => request(`${base}/hostnames`, opts.header, {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
body: JSON.stringify({ hostname, tenantId: opts.tenantId, scopeId, surface: opts.surface, canonical }),
|
|
59
|
+
});
|
|
60
|
+
if (opts.domain) {
|
|
61
|
+
const bound = await bind(opts.domain.toLowerCase());
|
|
62
|
+
return { hostname: bound.hostname, status: bound.status, canonical };
|
|
63
|
+
}
|
|
64
|
+
// Platform mint: the install's default label + the surface, on the same base domain.
|
|
65
|
+
const source = own.find((h) => h.canonical && h.surface === 'app') ?? own.find((h) => h.canonical) ?? own[0];
|
|
66
|
+
if (!source || !source.hostname.includes('.')) {
|
|
67
|
+
throw new Error(`no platform hostname to derive from — bind a --domain instead`);
|
|
68
|
+
}
|
|
69
|
+
const [label, ...rest] = source.hostname.split('.');
|
|
70
|
+
const candidates = [
|
|
71
|
+
`${label}-${slugifyLabel(opts.surface)}`,
|
|
72
|
+
`${label}-${slugifyLabel(opts.surface)}-${scopeId.toLowerCase().slice(-4)}`,
|
|
73
|
+
].map((l) => `${l}.${rest.join('.')}`);
|
|
74
|
+
let lastError;
|
|
75
|
+
for (const hostname of candidates) {
|
|
76
|
+
try {
|
|
77
|
+
await bind(hostname);
|
|
78
|
+
await request(`${base}/hostnames/${encodeURIComponent(hostname)}/status`, opts.header, {
|
|
79
|
+
method: 'PATCH',
|
|
80
|
+
body: JSON.stringify({ status: 'active' }),
|
|
81
|
+
});
|
|
82
|
+
return { hostname, status: 'active', canonical };
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
lastError = e instanceof Error ? e : new Error(String(e)); // collision — try the tailed label
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
throw lastError ?? new Error('could not bind a platform hostname');
|
|
89
|
+
}
|
|
90
|
+
/** Unbind one hostname. Tenant-narrowed server-side: a foreign hostname is a 404. */
|
|
91
|
+
export async function unbindHostname(controlPlaneUrl, header, hostname) {
|
|
92
|
+
const base = controlPlaneUrl.replace(/\/$/, '');
|
|
93
|
+
await request(`${base}/hostnames/${encodeURIComponent(hostname)}`, header, { method: 'DELETE' });
|
|
94
|
+
}
|
|
95
|
+
/** Render bindings as the aligned table `substrat hostnames <slug>` prints. */
|
|
96
|
+
export function formatHostnames(rows) {
|
|
97
|
+
if (rows.length === 0)
|
|
98
|
+
return '(no hostnames bound)';
|
|
99
|
+
const width = Math.max(...rows.map((h) => h.hostname.length));
|
|
100
|
+
return rows
|
|
101
|
+
.map((h) => [
|
|
102
|
+
h.hostname.padEnd(width),
|
|
103
|
+
h.surface.padEnd(12),
|
|
104
|
+
(h.canonical ? `${h.status} *` : h.status).padEnd(11),
|
|
105
|
+
h.scopeId,
|
|
106
|
+
].join(' '))
|
|
107
|
+
.join('\n');
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=hostnames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostnames.js","sourceRoot":"","sources":["../src/hostnames.ts"],"names":[],"mappings":"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"}
|
package/dist/push.d.ts
CHANGED
|
@@ -1,8 +1,43 @@
|
|
|
1
|
+
import { type PermissionRegistry, type RuntimeNeeds } from '@substrat-run/contracts';
|
|
2
|
+
/**
|
|
3
|
+
* Read the vertical's generated permission registry (`permissions.json`), if present. The
|
|
4
|
+
* file is emitted and CI-checked by `tools/permission-diff.mts` from the same `MODULES` +
|
|
5
|
+
* `ROLES` + `ENTITY_GRANTS` the host registers, so it cannot drift from what is enforced —
|
|
6
|
+
* and reading a checked-in artifact means `push` never has to load (and execute) the
|
|
7
|
+
* vertical's module code. Absent ⇒ the vertical ships no permission surface here.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readRegistry(dir: string): PermissionRegistry | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* The permission digest (D-39): a content hash of the vertical's declared permission
|
|
12
|
+
* surface — what the promotion checkpoint compares to fire "permissions changed". Over the
|
|
13
|
+
* empty surface when no registry ships, so the value is always meaningful (never the old
|
|
14
|
+
* placeholder that hashed the worker's bindings and moved on unrelated changes).
|
|
15
|
+
*/
|
|
16
|
+
export declare function permissionDigest(registry: PermissionRegistry | undefined): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* The Substrat→Cloudflare mapping (D-38): derive the wrangler config a `runtimeNeeds`
|
|
19
|
+
* vertical never authors. The result feeds BOTH the bundler (written to disk, passed via
|
|
20
|
+
* `--config`) and the manifest extraction below — one object, so what we bundle and what
|
|
21
|
+
* we declare cannot drift. The compatibility date is the platform's RUNTIME_BASELINE;
|
|
22
|
+
* a builder states needs, not substrate config.
|
|
23
|
+
*/
|
|
24
|
+
export declare function wranglerConfigFor(needs: RuntimeNeeds): Record<string, unknown>;
|
|
25
|
+
/** The vertical's `substrat.runtimeNeeds` block, parsed — or undefined for the wrangler.jsonc path. */
|
|
26
|
+
export declare function readRuntimeNeeds(dir: string): RuntimeNeeds | undefined;
|
|
1
27
|
export interface PushOptions {
|
|
2
28
|
dir: string;
|
|
3
29
|
slug: string;
|
|
4
30
|
version: string;
|
|
5
31
|
name?: string;
|
|
32
|
+
/**
|
|
33
|
+
* The workspace this push is FOR (the project pin — cli.ts resolves --tenant →
|
|
34
|
+
* SUBSTRAT_TENANT → package.json `substrat.tenant`). Sent with the bundle so the
|
|
35
|
+
* control plane can HONOR it regardless of who is authenticated: a builder session
|
|
36
|
+
* with a different workspace is refused (not silently redirected), and a staff
|
|
37
|
+
* session's claim lands as the pinned tenant's — prefixed and owned like the
|
|
38
|
+
* equivalent builder push — instead of platform-owned with the pin dropped.
|
|
39
|
+
*/
|
|
40
|
+
tenant?: string;
|
|
6
41
|
/** The vertical's declared env-spec (from package.json `substrat.envSpec`), carried to the
|
|
7
42
|
* registry so the platform can render a config form for it. Validated control-plane-side. */
|
|
8
43
|
envSpec?: readonly unknown[];
|
|
@@ -11,6 +46,9 @@ export interface PushOptions {
|
|
|
11
46
|
entitlements?: readonly unknown[];
|
|
12
47
|
provides?: readonly unknown[];
|
|
13
48
|
requires?: readonly unknown[];
|
|
49
|
+
/** The surfaces the vertical serves (K-26), from package.json `substrat.surfaces` —
|
|
50
|
+
* labels only; buys the dashboard a hostname-binding picker + a push-time warning. */
|
|
51
|
+
surfaces?: readonly unknown[];
|
|
14
52
|
controlPlaneUrl: string;
|
|
15
53
|
/** The auth header to send — a bearer session or an x-service-token (see config.resolveAuth). */
|
|
16
54
|
authHeader: Record<string, string>;
|
|
@@ -27,6 +65,8 @@ export declare function push(opts: PushOptions): Promise<{
|
|
|
27
65
|
id: string;
|
|
28
66
|
admission: string;
|
|
29
67
|
deploymentRef: string;
|
|
68
|
+
verticalSlug: string;
|
|
69
|
+
warnings?: string[];
|
|
30
70
|
}>;
|
|
31
71
|
/** Push defaults read from a vertical's package.json, so `substrat push` needs no flags. */
|
|
32
72
|
export interface VerticalMeta {
|
|
@@ -52,6 +92,8 @@ export interface VerticalMeta {
|
|
|
52
92
|
entitlements: readonly unknown[] | undefined;
|
|
53
93
|
provides: readonly unknown[] | undefined;
|
|
54
94
|
requires: readonly unknown[] | undefined;
|
|
95
|
+
/** Declared surfaces (K-26), from package.json `substrat.surfaces`: `[{ name, label }]`. */
|
|
96
|
+
surfaces: readonly unknown[] | undefined;
|
|
55
97
|
}
|
|
56
98
|
/**
|
|
57
99
|
* Derive push defaults from the vertical directory's package.json (the "it's already in
|
|
@@ -73,6 +115,11 @@ export declare function pinTenant(dir: string, tenant: string): void;
|
|
|
73
115
|
* builder never hand-tracks the number. Falls back to the package.json seed (or `0.0.1`) for
|
|
74
116
|
* the first push of a slug the registry has never seen. A non-semver latest is bumped as-is
|
|
75
117
|
* would be wrong, so those are skipped when finding the max.
|
|
118
|
+
*
|
|
119
|
+
* Takes CANDIDATE slugs because the caller may not know the registry id its push will
|
|
120
|
+
* land on: a pinned push claims `<tenantSlug>/<slug>` in general but a legacy bare row
|
|
121
|
+
* owned by the pin stays bare — so cli.ts asks for both and the max across them wins
|
|
122
|
+
* (they are the same lineage; at most one exists in practice).
|
|
76
123
|
*/
|
|
77
|
-
export declare function nextVersion(controlPlaneUrl: string, header: Record<string, string>,
|
|
124
|
+
export declare function nextVersion(controlPlaneUrl: string, header: Record<string, string>, slugs: readonly string[], seed: string | undefined): Promise<string>;
|
|
78
125
|
//# sourceMappingURL=push.d.ts.map
|
package/dist/push.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
package/dist/push.js
CHANGED
|
@@ -1,13 +1,51 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { mkdtempSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import { join, basename } from 'node:path';
|
|
5
5
|
import { webcrypto } from 'node:crypto';
|
|
6
|
-
import { deployManifest } from '@substrat-run/contracts';
|
|
6
|
+
import { deployManifest, permissionRegistry, runtimeNeeds, RUNTIME_BASELINE, } from '@substrat-run/contracts';
|
|
7
7
|
async function sha256(bytes) {
|
|
8
8
|
const digest = await webcrypto.subtle.digest('SHA-256', bytes);
|
|
9
9
|
return Buffer.from(digest).toString('hex').slice(0, 32);
|
|
10
10
|
}
|
|
11
|
+
/** Deterministic JSON: object keys sorted recursively, array order preserved. Makes the
|
|
12
|
+
* permission digest a pure function of registry CONTENT — independent of the artifact's
|
|
13
|
+
* on-disk key order or formatting. */
|
|
14
|
+
function stableStringify(v) {
|
|
15
|
+
if (Array.isArray(v))
|
|
16
|
+
return `[${v.map(stableStringify).join(',')}]`;
|
|
17
|
+
if (v && typeof v === 'object') {
|
|
18
|
+
const o = v;
|
|
19
|
+
return `{${Object.keys(o)
|
|
20
|
+
.sort()
|
|
21
|
+
.map((k) => `${JSON.stringify(k)}:${stableStringify(o[k])}`)
|
|
22
|
+
.join(',')}}`;
|
|
23
|
+
}
|
|
24
|
+
return JSON.stringify(v);
|
|
25
|
+
}
|
|
26
|
+
const EMPTY_REGISTRY = { permissions: [], roles: [], entityGrants: [] };
|
|
27
|
+
/**
|
|
28
|
+
* Read the vertical's generated permission registry (`permissions.json`), if present. The
|
|
29
|
+
* file is emitted and CI-checked by `tools/permission-diff.mts` from the same `MODULES` +
|
|
30
|
+
* `ROLES` + `ENTITY_GRANTS` the host registers, so it cannot drift from what is enforced —
|
|
31
|
+
* and reading a checked-in artifact means `push` never has to load (and execute) the
|
|
32
|
+
* vertical's module code. Absent ⇒ the vertical ships no permission surface here.
|
|
33
|
+
*/
|
|
34
|
+
export function readRegistry(dir) {
|
|
35
|
+
const path = join(dir, 'permissions.json');
|
|
36
|
+
if (!existsSync(path))
|
|
37
|
+
return undefined;
|
|
38
|
+
return permissionRegistry.parse(JSON.parse(readFileSync(path, 'utf8')));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The permission digest (D-39): a content hash of the vertical's declared permission
|
|
42
|
+
* surface — what the promotion checkpoint compares to fire "permissions changed". Over the
|
|
43
|
+
* empty surface when no registry ships, so the value is always meaningful (never the old
|
|
44
|
+
* placeholder that hashed the worker's bindings and moved on unrelated changes).
|
|
45
|
+
*/
|
|
46
|
+
export async function permissionDigest(registry) {
|
|
47
|
+
return sha256(Buffer.from(stableStringify(registry ?? EMPTY_REGISTRY)));
|
|
48
|
+
}
|
|
11
49
|
/** A tiny JSONC reader: strip // and block comments, then JSON.parse. */
|
|
12
50
|
function readJsonc(path) {
|
|
13
51
|
const raw = readFileSync(path, 'utf8')
|
|
@@ -15,6 +53,44 @@ function readJsonc(path) {
|
|
|
15
53
|
.replace(/(^|[^:])\/\/.*$/gm, '$1');
|
|
16
54
|
return JSON.parse(raw);
|
|
17
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* The Substrat→Cloudflare mapping (D-38): derive the wrangler config a `runtimeNeeds`
|
|
58
|
+
* vertical never authors. The result feeds BOTH the bundler (written to disk, passed via
|
|
59
|
+
* `--config`) and the manifest extraction below — one object, so what we bundle and what
|
|
60
|
+
* we declare cannot drift. The compatibility date is the platform's RUNTIME_BASELINE;
|
|
61
|
+
* a builder states needs, not substrate config.
|
|
62
|
+
*/
|
|
63
|
+
export function wranglerConfigFor(needs) {
|
|
64
|
+
return {
|
|
65
|
+
// wrangler requires a name; the real identity is the platform's deploymentRef.
|
|
66
|
+
name: 'substrat-vertical',
|
|
67
|
+
main: needs.entry,
|
|
68
|
+
compatibility_date: RUNTIME_BASELINE,
|
|
69
|
+
compatibility_flags: needs.needsNodeCompat ? ['nodejs_compat'] : [],
|
|
70
|
+
workers_dev: false,
|
|
71
|
+
...(needs.build ? { build: { command: needs.build } } : {}),
|
|
72
|
+
...(needs.stores.length
|
|
73
|
+
? {
|
|
74
|
+
durable_objects: {
|
|
75
|
+
bindings: needs.stores.map((s) => ({ name: s.binding, class_name: s.class })),
|
|
76
|
+
},
|
|
77
|
+
migrations: [{ tag: 'v1', new_sqlite_classes: needs.stores.map((s) => s.class) }],
|
|
78
|
+
}
|
|
79
|
+
: {}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** The vertical's `substrat.runtimeNeeds` block, parsed — or undefined for the wrangler.jsonc path. */
|
|
83
|
+
export function readRuntimeNeeds(dir) {
|
|
84
|
+
let raw;
|
|
85
|
+
try {
|
|
86
|
+
const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
|
|
87
|
+
raw = pkg.substrat?.runtimeNeeds;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
return raw === undefined ? undefined : runtimeNeeds.parse(raw);
|
|
93
|
+
}
|
|
18
94
|
/**
|
|
19
95
|
* Build a vertical and push its bundle to the platform's deploy endpoint
|
|
20
96
|
* (self-serve-deploy.md). The worker is built with `wrangler --dry-run --outdir` — the
|
|
@@ -24,7 +100,15 @@ function readJsonc(path) {
|
|
|
24
100
|
* hand-picked `--actor`.
|
|
25
101
|
*/
|
|
26
102
|
export async function push(opts) {
|
|
27
|
-
|
|
103
|
+
// Substrate-vocabulary path (D-38): when `substrat.runtimeNeeds` is present the builder
|
|
104
|
+
// authored no wrangler config, so none is read — the CLI derives it. The generated file
|
|
105
|
+
// lands next to the vertical (a relative `main` and the build command's cwd both resolve
|
|
106
|
+
// against the config's directory) and is removed after the build.
|
|
107
|
+
const needs = readRuntimeNeeds(opts.dir);
|
|
108
|
+
if (needs && existsSync(join(opts.dir, 'wrangler.jsonc'))) {
|
|
109
|
+
console.log('note: substrat.runtimeNeeds is set — wrangler.jsonc is ignored for this push');
|
|
110
|
+
}
|
|
111
|
+
const cfg = needs ? wranglerConfigFor(needs) : readJsonc(join(opts.dir, 'wrangler.jsonc'));
|
|
28
112
|
// A vertical's OWN stores travel with the bundle: its DO classes, and its D1 databases
|
|
29
113
|
// (e.g. a Better-Auth AUTH_DB). The control plane re-checks these against the §4 sandbox
|
|
30
114
|
// contract before the upload reaches the namespace.
|
|
@@ -46,13 +130,19 @@ export async function push(opts) {
|
|
|
46
130
|
// built-ins) can't start without them, and the runtime rejects the upload.
|
|
47
131
|
const compatibilityFlags = cfg.compatibility_flags ?? [];
|
|
48
132
|
const mainPath = cfg.main;
|
|
49
|
-
// Build the bundle (runs the vertical's own
|
|
133
|
+
// Build the bundle (runs the vertical's own build command first).
|
|
50
134
|
const out = mkdtempSync(join(tmpdir(), 'substrat-build-'));
|
|
51
135
|
console.log(`building ${opts.slug}@${opts.version} …`);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
136
|
+
const generated = needs ? join(opts.dir, '.wrangler.substrat.json') : undefined;
|
|
137
|
+
if (generated)
|
|
138
|
+
writeFileSync(generated, JSON.stringify(cfg, null, 2) + '\n');
|
|
139
|
+
try {
|
|
140
|
+
execFileSync('npx', ['wrangler', 'deploy', '--dry-run', '--outdir', out, ...(generated ? ['--config', generated] : [])], { cwd: opts.dir, stdio: 'inherit' });
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
if (generated)
|
|
144
|
+
rmSync(generated, { force: true });
|
|
145
|
+
}
|
|
56
146
|
// Collect the built modules; the entry is the bundled basename of `main`.
|
|
57
147
|
const mainBase = basename(mainPath).replace(/\.[cm]?ts$|\.[cm]?js$/, '');
|
|
58
148
|
const files = readdirSync(out).filter((f) => /\.(m?js)$/.test(f) && !f.endsWith('.map'));
|
|
@@ -61,6 +151,9 @@ export async function push(opts) {
|
|
|
61
151
|
throw new Error(`no built module found in ${out}`);
|
|
62
152
|
const modules = files.map((f) => ({ name: f, content: readFileSync(join(out, f)) }));
|
|
63
153
|
const concat = Buffer.concat(modules.map((m) => m.content));
|
|
154
|
+
// The declared permission surface (D-39), read from the checked-in artifact — shipped in
|
|
155
|
+
// the manifest and hashed into digests.permission below.
|
|
156
|
+
const registry = readRegistry(opts.dir);
|
|
64
157
|
// Parsed with the SAME schema the control plane applies at the trust boundary
|
|
65
158
|
// (contracts' deployManifest, re-parsed server-side in control-plane-api). Drift
|
|
66
159
|
// between what the CLI builds and what the server accepts fails here, before the
|
|
@@ -83,18 +176,26 @@ export async function push(opts) {
|
|
|
83
176
|
...(opts.entitlements ? { entitlements: opts.entitlements } : {}),
|
|
84
177
|
...(opts.provides ? { provides: opts.provides } : {}),
|
|
85
178
|
...(opts.requires ? { requires: opts.requires } : {}),
|
|
179
|
+
...(opts.surfaces ? { surfaces: opts.surfaces } : {}),
|
|
180
|
+
// The declared permission surface travels with the bundle (D-39): keys+descriptions,
|
|
181
|
+
// role templates, entity-grant shapes. Its content hash is digests.permission.
|
|
182
|
+
...(registry ? { registry } : {}),
|
|
86
183
|
digests: {
|
|
87
184
|
manifest: await sha256(concat),
|
|
88
|
-
permission: await
|
|
185
|
+
permission: await permissionDigest(registry),
|
|
89
186
|
migration: await sha256(Buffer.from(JSON.stringify(doClasses))),
|
|
90
187
|
},
|
|
91
188
|
});
|
|
92
189
|
const form = new FormData();
|
|
93
190
|
form.set('manifest', JSON.stringify(manifest));
|
|
191
|
+
// The workspace pin rides WITH the push (not in the manifest — it is addressing, not
|
|
192
|
+
// code, so it stays out of every digest). The control plane honors or refuses it.
|
|
193
|
+
if (opts.tenant)
|
|
194
|
+
form.set('tenant', opts.tenant);
|
|
94
195
|
for (const m of modules) {
|
|
95
196
|
form.set(m.name, new Blob([m.content], { type: 'application/javascript+module' }), m.name);
|
|
96
197
|
}
|
|
97
|
-
const url = `${opts.controlPlaneUrl}/verticals/${opts.slug}/deploy`;
|
|
198
|
+
const url = `${opts.controlPlaneUrl}/verticals/${encodeURIComponent(opts.slug)}/deploy`;
|
|
98
199
|
console.log(`uploading ${entry} (+${modules.length - 1} modules) → ${url}`);
|
|
99
200
|
const res = await fetch(url, {
|
|
100
201
|
method: 'POST',
|
|
@@ -136,6 +237,7 @@ export function readVerticalMeta(dir) {
|
|
|
136
237
|
entitlements: s?.entitlements,
|
|
137
238
|
provides: s?.provides,
|
|
138
239
|
requires: s?.requires,
|
|
240
|
+
surfaces: s?.surfaces,
|
|
139
241
|
};
|
|
140
242
|
}
|
|
141
243
|
/**
|
|
@@ -164,17 +266,24 @@ function isNewer(a, b) {
|
|
|
164
266
|
* builder never hand-tracks the number. Falls back to the package.json seed (or `0.0.1`) for
|
|
165
267
|
* the first push of a slug the registry has never seen. A non-semver latest is bumped as-is
|
|
166
268
|
* would be wrong, so those are skipped when finding the max.
|
|
269
|
+
*
|
|
270
|
+
* Takes CANDIDATE slugs because the caller may not know the registry id its push will
|
|
271
|
+
* land on: a pinned push claims `<tenantSlug>/<slug>` in general but a legacy bare row
|
|
272
|
+
* owned by the pin stays bare — so cli.ts asks for both and the max across them wins
|
|
273
|
+
* (they are the same lineage; at most one exists in practice).
|
|
167
274
|
*/
|
|
168
|
-
export async function nextVersion(controlPlaneUrl, header,
|
|
275
|
+
export async function nextVersion(controlPlaneUrl, header, slugs, seed) {
|
|
169
276
|
const base = controlPlaneUrl.replace(/\/$/, '');
|
|
170
|
-
const versions = await fetch(`${base}/verticals/${encodeURIComponent(slug)}/versions`, { headers: header })
|
|
171
|
-
.then((r) => (r.ok ? r.json() : []))
|
|
172
|
-
.catch(() => []);
|
|
173
277
|
let best = null;
|
|
174
|
-
for (const
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
278
|
+
for (const slug of slugs) {
|
|
279
|
+
const versions = await fetch(`${base}/verticals/${encodeURIComponent(slug)}/versions`, { headers: header })
|
|
280
|
+
.then((r) => (r.ok ? r.json() : []))
|
|
281
|
+
.catch(() => []);
|
|
282
|
+
for (const v of versions) {
|
|
283
|
+
const t = parseSemver(v.version);
|
|
284
|
+
if (t && (!best || isNewer(t, best)))
|
|
285
|
+
best = t;
|
|
286
|
+
}
|
|
178
287
|
}
|
|
179
288
|
if (best)
|
|
180
289
|
return `${best[0]}.${best[1]}.${best[2] + 1}`;
|
package/dist/push.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@substrat-run/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "The substrat CLI — authenticated deploy tooling: push a vertical to the platform, manage its versions and channels",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -28,17 +28,19 @@
|
|
|
28
28
|
"node": ">=20"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@substrat-run/contracts": "^0.
|
|
31
|
+
"@substrat-run/contracts": "^0.24.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^22.0.0",
|
|
35
|
-
"typescript": "^7.0.0"
|
|
35
|
+
"typescript": "^7.0.0",
|
|
36
|
+
"vitest": "^3.0.0"
|
|
36
37
|
},
|
|
37
38
|
"publishConfig": {
|
|
38
39
|
"access": "public"
|
|
39
40
|
},
|
|
40
41
|
"scripts": {
|
|
41
42
|
"build": "tsc -p tsconfig.json",
|
|
42
|
-
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
43
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
44
|
+
"test": "vitest run"
|
|
43
45
|
}
|
|
44
46
|
}
|