@voltro/cli 0.56.0 → 0.58.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/CHANGELOG.md +395 -0
- package/dist/apiBuild-CDE4NXNi.js +2 -0
- package/dist/{apiBuild-Bdaetr37.js → apiBuild-CkpsCqIu.js} +2 -2
- package/dist/bin.js +1 -1
- package/dist/build-51qBWfYY.js +981 -0
- package/dist/{checkCommand-D0QV_zM_.js → checkCommand-C1EbNmwl.js} +1 -1
- package/dist/{checkCommand-CAwFXrxA.js → checkCommand-C30J2F18.js} +4 -4
- package/dist/{codegenCommand-CidbQzbv.js → codegenCommand-kS3Twuc9.js} +12 -12
- package/dist/{codemodRunner-BlQPfjzA.js → codemodRunner-BKjCwGiN.js} +1127 -895
- package/dist/{commands-CWjfThXv.js → commands-DowWkYtd.js} +25 -25
- package/dist/{dashboardCommand-BekcY5Ls.js → dashboardCommand-gG1y4PFG.js} +3 -3
- package/dist/{dataCommand-2pccgbIy.js → dataCommand-hNOGKz4K.js} +7 -7
- package/dist/{dbCommand-DpK_vQET.js → dbCommand-CMAIz-Bf.js} +3 -3
- package/dist/dbCommand-DHi_RuDl.js +2 -0
- package/dist/{dev-Dw263KPu.js → dev-Ce2gEziv.js} +2411 -2391
- package/dist/dev-Dff_pdik.js +3 -0
- package/dist/{doctorCommand-aR_bFmIi.js → doctorCommand-5ULMpL10.js} +652 -289
- package/dist/doctorCommand-B8H2MYCE.js +2 -0
- package/dist/{dormancyCommand-eXTQMbHU.js → dormancyCommand-DYgI0Kf-.js} +3 -3
- package/dist/{embeddingsCommand-CTmiQvwa.js → embeddingsCommand-yJivQSrI.js} +2 -2
- package/dist/emptyResultHeadline-Csa5fZOF.js +18 -0
- package/dist/{envCommand-BDUgV7EM.js → envCommand-ORJUf8r_.js} +2 -2
- package/dist/{evolveCommand-YV8qW1LU.js → evolveCommand-DTawtTxf.js} +2 -2
- package/dist/frameworkTableAssembly-B96WCNJA.js +2 -0
- package/dist/{frameworkTableAssembly-DNOFXfEQ.js → frameworkTableAssembly-vfkzuzEo.js} +104 -85
- package/dist/index.js +1 -1
- package/dist/{infoCommand-BjVXpMlP.js → infoCommand-BFksHunl.js} +1 -1
- package/dist/inspect-CZvsmp8t.js +2 -0
- package/dist/{inspect-CNYvNXPU.js → inspect-PcC5J-Dl.js} +74 -59
- package/dist/{logsCmd-BU8uCdys.js → logsCmd-C5y9HyrG.js} +58 -53
- package/dist/manifestBuild-AUh31bFU.js +2 -0
- package/dist/{manifestBuild-CEkjfpwc.js → manifestBuild-BwiS4iYm.js} +1 -1
- package/dist/{migrate-SICulyz1.js → migrate-DtC3lu7H.js} +4 -4
- package/dist/{probeCommand-6HxEkNDG.js → probeCommand-BUYzc0CT.js} +1 -1
- package/dist/{runtimeTrace-DgYMc09E.js → runtimeTrace-BUk5zMXY.js} +1 -1
- package/dist/{sdkgen-PY-umd6O.js → sdkgen-CAhmmbjx.js} +1 -1
- package/dist/serveCommand-BUXUtSF5.js +2 -0
- package/dist/serveCommand-DhtC7WBq.js +2545 -0
- package/dist/serveEntry.js +1 -1
- package/dist/{start-BFQQkL1i.js → start-C75w6ftA.js} +1 -1
- package/dist/{start-B9NGB8gn.js → start-DNtIlBcn.js} +527 -502
- package/dist/startEntry.js +1 -1
- package/dist/{tracesCmd-BWYDqMy6.js → tracesCmd-C1qKa94g.js} +68 -63
- package/dist/{updateCommand-C9n_Z_oG.js → updateCommand-CtuD5r1t.js} +1 -1
- package/dist/updateCommand-eVKVHj3N.js +2 -0
- package/dist/webDev-Bzb8ZFus.js +2 -0
- package/dist/{webDev-C53hJdcL.js → webDev-CBN9KkyQ.js} +949 -834
- package/dist/{webhooksCommand-uuPu8qQX.js → webhooksCommand-BPJQOGTe.js} +2 -2
- package/package.json +61 -19
- package/templates/AGENTS.md +1 -1
- package/templates/agent-docs/_index.md +1 -1
- package/templates/agent-docs/_manifest.json +2 -2
- package/templates/agent-docs/ai.md +175 -1
- package/templates/agent-docs/authentication.md +68 -19
- package/templates/agent-docs/cli.md +48 -0
- package/templates/agent-docs/configuration.md +29 -4
- package/templates/agent-docs/data.md +30 -0
- package/templates/agent-docs/database/scaling.md +10 -1
- package/templates/agent-docs/database/transactions.md +48 -0
- package/templates/agent-docs/deployment.md +22 -0
- package/templates/agent-docs/observability.md +13 -2
- package/templates/agent-docs/plugins/audit.md +21 -5
- package/templates/agent-docs/plugins/auth-supabase.md +21 -0
- package/templates/agent-docs/plugins/billing.md +2 -0
- package/templates/agent-docs/plugins/sentry.md +91 -8
- package/templates/agent-docs/reference.md +1 -0
- package/templates/agent-docs/scheduling.md +23 -0
- package/templates/agent-docs/schema-driven-ui.md +110 -0
- package/templates/agent-docs/whats-new.md +103 -399
- package/templates/apps/api-ai/package.json +6 -6
- package/templates/apps/api-auth/package.json +8 -8
- package/templates/apps/api-backend/package.json +7 -7
- package/templates/apps/api-backend-deactivation/package.json +7 -7
- package/templates/apps/api-backend-mail/package.json +8 -8
- package/templates/apps/api-backend-mariadb/package.json +9 -9
- package/templates/apps/api-backend-sqlite/package.json +8 -8
- package/templates/apps/api-backend-storage/package.json +8 -8
- package/templates/apps/api-cms/package.json +9 -9
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-data-advanced/package.json +8 -8
- package/templates/apps/api-durable/package.json +8 -8
- package/templates/apps/api-feature-flags/package.json +9 -9
- package/templates/apps/api-governance/package.json +8 -8
- package/templates/apps/api-kv/package.json +8 -8
- package/templates/apps/api-moderation/package.json +8 -8
- package/templates/apps/api-observability/package.json +8 -8
- package/templates/apps/api-ratelimit/package.json +8 -8
- package/templates/apps/api-rbac/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/api-row-history/package.json +8 -8
- package/templates/apps/api-saas/package.json +11 -11
- package/templates/apps/api-saas-starter/package.json +10 -10
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-status/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +7 -7
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +7 -7
- package/templates/apps/frontend-app/package.json +8 -8
- package/templates/apps/frontend-auth/package.json +7 -7
- package/templates/apps/frontend-blank/package.json +6 -6
- package/templates/apps/frontend-cms/package.json +8 -8
- package/templates/apps/frontend-collab/package.json +9 -9
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/package.json +6 -6
- package/templates/apps/frontend-docs/package.json +8 -8
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/package.json +7 -7
- package/templates/apps/frontend-portal/package.json +7 -7
- package/templates/apps/frontend-saas/package.json +7 -7
- package/templates/apps/frontend-spa/package.json +6 -6
- package/templates/apps/frontend-ssr/package.json +6 -6
- package/templates/apps/frontend-ssr-api/package.json +7 -7
- package/templates/apps/frontend-static-blog/package.json +8 -8
- package/templates/apps/frontend-status/package.json +7 -7
- package/templates/apps/mobile-app/package.json +4 -4
- package/dist/apiBuild-Vw1figjO.js +0 -2
- package/dist/build-CI36wL4R.js +0 -868
- package/dist/dbCommand-DrycGWWt.js +0 -2
- package/dist/dev-B9Gz0k85.js +0 -3
- package/dist/doctorCommand-BMWs6aVm.js +0 -2
- package/dist/frameworkTableAssembly-CGNC0qr7.js +0 -2
- package/dist/inspect-S2rWy1Ys.js +0 -2
- package/dist/manifestBuild-DIa_s6u0.js +0 -2
- package/dist/serveCommand-BITS8Hpj.js +0 -2
- package/dist/serveCommand-DIJ3ma76.js +0 -2485
- package/dist/updateCommand-DsXEAHbd.js +0 -2
- package/dist/webDev-C2dRz9s5.js +0 -2
|
@@ -372,6 +372,11 @@ var a = (e) => ({
|
|
|
372
372
|
expected: e.expected,
|
|
373
373
|
...e.missing.length > 0 ? { missing: e.missing } : {},
|
|
374
374
|
...e.stale.length > 0 ? { stale: e.stale } : {},
|
|
375
|
+
...e.departed.length > 0 ? { departed: e.departed.map((e) => ({
|
|
376
|
+
replicaId: e.replicaId,
|
|
377
|
+
ageMs: e.ageMs,
|
|
378
|
+
...e.version === void 0 ? {} : { version: e.version }
|
|
379
|
+
})) } : {},
|
|
375
380
|
...e.versions === void 0 ? {} : { versions: e.versions },
|
|
376
381
|
...e.missing.length > 0 || e.stale.length > 0 ? { reason: [e.missing.length > 0 ? `${e.missing.length} replica(s) have written nothing readable` : "", e.stale.length > 0 ? `${e.stale.length} answer(s) are older than the freshness window` : ""].filter((e) => e !== "").join("; ") } : {}
|
|
377
382
|
},
|
|
@@ -433,15 +438,18 @@ var a = (e) => ({
|
|
|
433
438
|
let e = t.inspectTables?.().tables ?? [];
|
|
434
439
|
return y(200, F(t.rpc, t.workflows, e, t.plugins?.().plugins ?? []), a);
|
|
435
440
|
}
|
|
436
|
-
|
|
441
|
+
if (i === "/_voltro/inspect/metrics") return t.metrics === void 0 ? y(200, [], a) : y(200, t.metrics(), a);
|
|
442
|
+
if (i === "/_voltro/inspect/subscriptions") return t.kind === "api" ? t.subscriptions === void 0 ? y(200, {
|
|
437
443
|
subscriptions: [],
|
|
438
444
|
matcherStats: [],
|
|
439
445
|
resume: [],
|
|
440
446
|
capturedAt: Date.now()
|
|
441
|
-
}, a) : y(200, t.subscriptions(), a) : y(404, { error: "subscriptions endpoint is api-only" }, a)
|
|
447
|
+
}, a) : y(200, t.subscriptions(), a) : y(404, { error: "subscriptions endpoint is api-only" }, a);
|
|
448
|
+
if (i === "/_voltro/inspect/members") return t.kind === "api" ? t.members === void 0 ? y(200, {
|
|
442
449
|
members: [],
|
|
443
450
|
capturedAt: Date.now()
|
|
444
|
-
}, a) : y(200, t.members(), a) : y(404, { error: "members endpoint is api-only" }, a)
|
|
451
|
+
}, a) : y(200, t.members(), a) : y(404, { error: "members endpoint is api-only" }, a);
|
|
452
|
+
if (i === "/_voltro/inspect/events") return t.kind === "api" ? t.events === void 0 ? y(200, {
|
|
445
453
|
declared: [],
|
|
446
454
|
routes: [],
|
|
447
455
|
origin: "",
|
|
@@ -451,14 +459,16 @@ var a = (e) => ({
|
|
|
451
459
|
subscribers: 0,
|
|
452
460
|
buffered: 0
|
|
453
461
|
}
|
|
454
|
-
}, a) : y(200, t.events(), a) : y(404, { error: "events endpoint is api-only" }, a)
|
|
462
|
+
}, a) : y(200, t.events(), a) : y(404, { error: "events endpoint is api-only" }, a);
|
|
463
|
+
if (i === "/_voltro/inspect/data-cache") return t.kind === "api" ? t.dataCache === void 0 ? y(200, {
|
|
455
464
|
backend: "memory",
|
|
456
465
|
engine: "memory",
|
|
457
466
|
driver: "resp",
|
|
458
467
|
hits: 0,
|
|
459
468
|
misses: 0,
|
|
460
469
|
hitRate: 0
|
|
461
|
-
}, a) : y(200, t.dataCache(), a) : y(404, { error: "data-cache endpoint is api-only" }, a)
|
|
470
|
+
}, a) : y(200, t.dataCache(), a) : y(404, { error: "data-cache endpoint is api-only" }, a);
|
|
471
|
+
if (i === "/_voltro/inspect/database") return t.kind === "api" ? t.database === void 0 ? y(200, {
|
|
462
472
|
migrations: [],
|
|
463
473
|
seeds: [],
|
|
464
474
|
dialect: "memory",
|
|
@@ -469,10 +479,12 @@ var a = (e) => ({
|
|
|
469
479
|
region: null,
|
|
470
480
|
localityEnabled: !1
|
|
471
481
|
}
|
|
472
|
-
}, a) : y(200, t.database(), a) : y(404, { error: "database endpoint is api-only" }, a)
|
|
482
|
+
}, a) : y(200, t.database(), a) : y(404, { error: "database endpoint is api-only" }, a);
|
|
483
|
+
if (i === "/_voltro/inspect/plugins") return t.kind === "api" ? t.plugins === void 0 ? y(200, {
|
|
473
484
|
plugins: [],
|
|
474
485
|
capturedAt: Date.now()
|
|
475
|
-
}, a) : y(200, t.plugins(), a) : y(404, { error: "plugins endpoint is api-only" }, a)
|
|
486
|
+
}, a) : y(200, t.plugins(), a) : y(404, { error: "plugins endpoint is api-only" }, a);
|
|
487
|
+
if (i === "/_voltro/inspect/env") return t.env === void 0 ? y(200, {
|
|
476
488
|
app: t.meta.name ?? "app",
|
|
477
489
|
entries: [],
|
|
478
490
|
summary: {
|
|
@@ -480,22 +492,31 @@ var a = (e) => ({
|
|
|
480
492
|
set: 0,
|
|
481
493
|
missingRequired: 0
|
|
482
494
|
}
|
|
483
|
-
}, a) : y(200, t.env(), a)
|
|
495
|
+
}, a) : y(200, t.env(), a);
|
|
496
|
+
if (i === "/_voltro/inspect/data/tables") return t.kind === "api" ? t.inspectTables === void 0 ? y(200, { tables: [] }, a) : y(200, t.inspectTables(), a) : y(404, { error: "data viewer is api-only" }, a);
|
|
497
|
+
if (i === "/_voltro/inspect/invoke") return y(404, { error: "invoke not enabled here — use POST handler" }, a);
|
|
498
|
+
if (U.has(i)) {
|
|
499
|
+
let e = i.endsWith("/traces") ? "traces" : "logs";
|
|
500
|
+
return y(404, {
|
|
501
|
+
error: "endpoint not enabled on this instance",
|
|
502
|
+
path: i,
|
|
503
|
+
reason: `This instance keeps no in-process ${e} ring, so there is nothing to serve. It is off by default because a ring is memory per replica for data most deployments already collect from stdout. Turn it on with \`inspect: { ${e}: true }\` in app.config.ts (or \`{ ${e}: { size: 2000 } }\`), or set VOLTRO_INSPECT_${e.toUpperCase()}=2000 on the deployment. This is not a missing token: the same request with no token would be 401.`
|
|
504
|
+
}, a);
|
|
505
|
+
}
|
|
506
|
+
return H.has(i) ? y(404, {
|
|
484
507
|
error: "endpoint not mounted on this instance",
|
|
485
508
|
path: i,
|
|
486
|
-
reason: "This inspect endpoint is served by `voltro dev`. A production `voltro serve` does not mount it — the data behind it (the
|
|
509
|
+
reason: "This inspect endpoint is served by `voltro dev`. A production `voltro serve` does not mount it — the data behind it (the dev route table, the aggregate registry) is not collected there. This is not a missing token: the same request with no token would be 401."
|
|
487
510
|
}, a) : y(404, {
|
|
488
511
|
error: "unknown inspect endpoint",
|
|
489
512
|
path: i
|
|
490
513
|
}, a);
|
|
491
514
|
}, H = /* @__PURE__ */ new Set([
|
|
492
|
-
`${m}/logs`,
|
|
493
|
-
`${m}/traces`,
|
|
494
515
|
`${m}/workflows`,
|
|
495
516
|
`${m}/storage`,
|
|
496
517
|
`${m}/aggregates`,
|
|
497
518
|
`${m}/flags`
|
|
498
|
-
]), U = async (e, t, n, r = {}) => {
|
|
519
|
+
]), U = /* @__PURE__ */ new Set([`${m}/logs`, `${m}/traces`]), W = async (e, t, n, r = {}) => {
|
|
499
520
|
let i = x(t.origin ?? t.Origin);
|
|
500
521
|
if (h()) return y(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, i);
|
|
501
522
|
let a = (r.method ?? "POST").toUpperCase();
|
|
@@ -530,7 +551,7 @@ var a = (e) => ({
|
|
|
530
551
|
n !== "cookie" && (d[n] = t);
|
|
531
552
|
}
|
|
532
553
|
return y(200, await l(c.input, d), i);
|
|
533
|
-
},
|
|
554
|
+
}, G = async (e, t, n, r = {}) => {
|
|
534
555
|
let i = /[?&]replica=([^&]+)/.exec(e)?.[1], a = n[d] !== void 0;
|
|
535
556
|
if (i !== void 0 && !a && t.kind === "api") {
|
|
536
557
|
let a = x(n.origin ?? n.Origin), o = (r.authResolver ?? _)(n, (r.method ?? "GET").toUpperCase());
|
|
@@ -555,9 +576,9 @@ var a = (e) => ({
|
|
|
555
576
|
headers: a
|
|
556
577
|
} : y(s.status, s.body, a);
|
|
557
578
|
}
|
|
558
|
-
let o = await
|
|
579
|
+
let o = await K(e, t, n, r);
|
|
559
580
|
return o === null ? null : z(j(e), o, r.fleetSize);
|
|
560
|
-
},
|
|
581
|
+
}, K = async (e, t, n, r = {}) => {
|
|
561
582
|
let i = j(e);
|
|
562
583
|
if (!N(i)) return null;
|
|
563
584
|
let a = /[?&]scope=fleet(?:&|$)/.test(e), o = i === "/_voltro/inspect/subscriptions" && a;
|
|
@@ -588,13 +609,7 @@ var a = (e) => ({
|
|
|
588
609
|
}
|
|
589
610
|
return {
|
|
590
611
|
...y(200, { resume: e.byReplica }, s),
|
|
591
|
-
assembled: {
|
|
592
|
-
responded: e.responded,
|
|
593
|
-
expected: e.expected,
|
|
594
|
-
missing: e.missing,
|
|
595
|
-
stale: e.stale,
|
|
596
|
-
versions: e.versions
|
|
597
|
-
}
|
|
612
|
+
assembled: (({ byReplica: e, ...t }) => t)(e)
|
|
598
613
|
};
|
|
599
614
|
}
|
|
600
615
|
return t.migrations === void 0 ? y(200, {
|
|
@@ -607,7 +622,7 @@ var a = (e) => ({
|
|
|
607
622
|
history: [],
|
|
608
623
|
softDropSnapshots: []
|
|
609
624
|
}, s) : y(200, await t.migrations(), s);
|
|
610
|
-
},
|
|
625
|
+
}, q = async (e, t, n, r, i = {}) => {
|
|
611
626
|
let a = j(e);
|
|
612
627
|
if (!N(a) || !a.startsWith("/_voltro/inspect/webhooks/")) return null;
|
|
613
628
|
let o = x(n.origin ?? n.Origin);
|
|
@@ -667,7 +682,7 @@ var a = (e) => ({
|
|
|
667
682
|
message: e?.message ?? String(e)
|
|
668
683
|
}, o);
|
|
669
684
|
}
|
|
670
|
-
},
|
|
685
|
+
}, J = async (e, t, n, r, i = {}) => {
|
|
671
686
|
let a = j(e);
|
|
672
687
|
if (!N(a)) return null;
|
|
673
688
|
let o = x(n.origin ?? n.Origin), s = (i.method ?? "POST").toUpperCase();
|
|
@@ -710,7 +725,7 @@ var a = (e) => ({
|
|
|
710
725
|
message: e?.message ?? String(e)
|
|
711
726
|
}, o);
|
|
712
727
|
}
|
|
713
|
-
},
|
|
728
|
+
}, Y = async (e, t, n, r = {}) => {
|
|
714
729
|
if (j(e) !== "/_voltro/inspect/data/rows") return null;
|
|
715
730
|
let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
|
|
716
731
|
if (a !== "GET") return y(405, {
|
|
@@ -725,9 +740,9 @@ var a = (e) => ({
|
|
|
725
740
|
}, i);
|
|
726
741
|
if (t.kind !== "api") return y(404, { error: "data viewer is api-only" }, i);
|
|
727
742
|
if (t.inspectRows === void 0) return y(404, { error: "inspectRows not configured" }, i);
|
|
728
|
-
let s =
|
|
743
|
+
let s = Z(e), c = s.get("table");
|
|
729
744
|
if (!c) return y(400, { error: "query.table is required" }, i);
|
|
730
|
-
let l =
|
|
745
|
+
let l = Q(s.get("offset")) ?? 0, u = Q(s.get("limit")) ?? 50, d = {}, f = s.get("q");
|
|
731
746
|
if (f) {
|
|
732
747
|
if (f.length > 8192) return y(400, { error: "query.q too large" }, i);
|
|
733
748
|
try {
|
|
@@ -752,7 +767,7 @@ var a = (e) => ({
|
|
|
752
767
|
message: e?.message ?? String(e)
|
|
753
768
|
}, i);
|
|
754
769
|
}
|
|
755
|
-
},
|
|
770
|
+
}, X = async (e, t, n, i = {}) => {
|
|
756
771
|
if (j(e) !== "/_voltro/inspect/provenance") return null;
|
|
757
772
|
let a = x(n.origin ?? n.Origin), o = (i.method ?? "GET").toUpperCase();
|
|
758
773
|
if (o !== "GET") return y(405, {
|
|
@@ -769,7 +784,7 @@ var a = (e) => ({
|
|
|
769
784
|
if (c) return c;
|
|
770
785
|
if (t.kind !== "api") return y(404, { error: "provenance is api-only" }, a);
|
|
771
786
|
if (t.inspectRows === void 0) return y(404, { error: "inspectRows not configured" }, a);
|
|
772
|
-
let l =
|
|
787
|
+
let l = Z(e), u = l.get("table"), d = l.get("id"), f = l.get("column") ?? void 0;
|
|
773
788
|
if (!u || !d) return y(400, { error: "query.table and query.id are required" }, a);
|
|
774
789
|
try {
|
|
775
790
|
let e = (await t.inspectRows({
|
|
@@ -796,14 +811,14 @@ var a = (e) => ({
|
|
|
796
811
|
message: e?.message ?? String(e)
|
|
797
812
|
}, a);
|
|
798
813
|
}
|
|
799
|
-
},
|
|
814
|
+
}, Z = (e) => {
|
|
800
815
|
let t = e.indexOf("?");
|
|
801
816
|
return t < 0 ? new URLSearchParams() : new URLSearchParams(e.slice(t + 1));
|
|
802
|
-
},
|
|
817
|
+
}, Q = (e) => {
|
|
803
818
|
if (e === null || e === "") return;
|
|
804
819
|
let t = Number(e);
|
|
805
820
|
return Number.isFinite(t) && t >= 0 ? Math.floor(t) : void 0;
|
|
806
|
-
},
|
|
821
|
+
}, $ = async (e, t, n, r = {}) => {
|
|
807
822
|
if (j(e) !== "/_voltro/inspect/workflows/runs") return null;
|
|
808
823
|
let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
|
|
809
824
|
if (a !== "GET") return y(405, {
|
|
@@ -823,7 +838,7 @@ var a = (e) => ({
|
|
|
823
838
|
offset: 0,
|
|
824
839
|
limit: 50
|
|
825
840
|
}, i);
|
|
826
|
-
let s =
|
|
841
|
+
let s = Z(e);
|
|
827
842
|
try {
|
|
828
843
|
let e = s.get("deadLettered") === "1" || s.get("deadLettered") === "true", n = (s.get("statuses") ?? "").split(",").map((e) => e.trim()).filter((e) => e !== "");
|
|
829
844
|
return y(200, await t.inspectWorkflowRuns({
|
|
@@ -834,8 +849,8 @@ var a = (e) => ({
|
|
|
834
849
|
...s.get("idPrefix") === null ? {} : { idPrefix: s.get("idPrefix") },
|
|
835
850
|
...s.get("from") === null ? {} : { startedAfter: s.get("from") },
|
|
836
851
|
...s.get("to") === null ? {} : { startedBefore: s.get("to") },
|
|
837
|
-
offset:
|
|
838
|
-
limit:
|
|
852
|
+
offset: Q(s.get("offset")) ?? 0,
|
|
853
|
+
limit: Q(s.get("limit")) ?? 50
|
|
839
854
|
}), i);
|
|
840
855
|
} catch (e) {
|
|
841
856
|
return I(e) ? y(200, {
|
|
@@ -849,7 +864,7 @@ var a = (e) => ({
|
|
|
849
864
|
message: e?.message ?? String(e)
|
|
850
865
|
}, i);
|
|
851
866
|
}
|
|
852
|
-
},
|
|
867
|
+
}, ee = async (e, t, n, r = {}) => {
|
|
853
868
|
if (j(e) !== "/_voltro/inspect/workflows/stats") return null;
|
|
854
869
|
let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
|
|
855
870
|
if (a !== "GET") return y(405, {
|
|
@@ -871,11 +886,11 @@ var a = (e) => ({
|
|
|
871
886
|
total: 0,
|
|
872
887
|
truncated: !1
|
|
873
888
|
}, i);
|
|
874
|
-
let s =
|
|
889
|
+
let s = Z(e);
|
|
875
890
|
try {
|
|
876
891
|
return y(200, await t.inspectWorkflowRunStats({
|
|
877
892
|
...s.get("tag") === null ? {} : { tag: s.get("tag") },
|
|
878
|
-
...
|
|
893
|
+
...Q(s.get("hours")) === void 0 ? {} : { hours: Q(s.get("hours")) }
|
|
879
894
|
}), i);
|
|
880
895
|
} catch (e) {
|
|
881
896
|
return I(e) ? y(200, {
|
|
@@ -891,7 +906,7 @@ var a = (e) => ({
|
|
|
891
906
|
message: e?.message ?? String(e)
|
|
892
907
|
}, i);
|
|
893
908
|
}
|
|
894
|
-
},
|
|
909
|
+
}, te = async (e, t, n, r, i = {}) => {
|
|
895
910
|
let a = j(e).match(/^\/_voltro\/inspect\/workflows\/start\/([^/]+)$/);
|
|
896
911
|
if (!a) return null;
|
|
897
912
|
let o = decodeURIComponent(a[1] ?? ""), s = x(n.origin ?? n.Origin), c = (i.method ?? "POST").toUpperCase();
|
|
@@ -924,7 +939,7 @@ var a = (e) => ({
|
|
|
924
939
|
message: e?.message ?? String(e)
|
|
925
940
|
}, s);
|
|
926
941
|
}
|
|
927
|
-
},
|
|
942
|
+
}, ne = async (e, t, n, r = {}) => {
|
|
928
943
|
let i = j(e);
|
|
929
944
|
if (!i.startsWith("/_voltro/inspect/schedules")) return null;
|
|
930
945
|
let a = x(n.origin ?? n.Origin);
|
|
@@ -974,7 +989,7 @@ var a = (e) => ({
|
|
|
974
989
|
expected: "POST"
|
|
975
990
|
}, a);
|
|
976
991
|
if (!t.inspectFireSchedule) return y(404, { error: "inspectFireSchedule not configured" }, a);
|
|
977
|
-
let n = decodeURIComponent(u[1] ?? ""), r =
|
|
992
|
+
let n = decodeURIComponent(u[1] ?? ""), r = Z(e).get("trigger") === "external" ? "external" : "manual";
|
|
978
993
|
try {
|
|
979
994
|
return y(200, await t.inspectFireSchedule({
|
|
980
995
|
name: n,
|
|
@@ -998,12 +1013,12 @@ var a = (e) => ({
|
|
|
998
1013
|
offset: 0,
|
|
999
1014
|
limit: 50
|
|
1000
1015
|
}, a);
|
|
1001
|
-
let n =
|
|
1016
|
+
let n = Z(e);
|
|
1002
1017
|
try {
|
|
1003
1018
|
return y(200, await t.inspectScheduleRuns({
|
|
1004
1019
|
...n.get("name") === null ? {} : { name: n.get("name") },
|
|
1005
|
-
offset:
|
|
1006
|
-
limit:
|
|
1020
|
+
offset: Q(n.get("offset")) ?? 0,
|
|
1021
|
+
limit: Q(n.get("limit")) ?? 50
|
|
1007
1022
|
}), a);
|
|
1008
1023
|
} catch (e) {
|
|
1009
1024
|
return y(500, {
|
|
@@ -1022,7 +1037,7 @@ var a = (e) => ({
|
|
|
1022
1037
|
error: "unknown schedules endpoint",
|
|
1023
1038
|
path: i
|
|
1024
1039
|
}, a);
|
|
1025
|
-
},
|
|
1040
|
+
}, re = async (e, t, r, i = {}) => {
|
|
1026
1041
|
if (j(e) !== "/_voltro/inspect/cluster") return null;
|
|
1027
1042
|
let a = x(r.origin ?? r.Origin);
|
|
1028
1043
|
if (h()) return y(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, a);
|
|
@@ -1070,7 +1085,7 @@ var a = (e) => ({
|
|
|
1070
1085
|
message: e?.message ?? String(e)
|
|
1071
1086
|
}, a);
|
|
1072
1087
|
}
|
|
1073
|
-
},
|
|
1088
|
+
}, ie = async (e, t, n, r = {}) => {
|
|
1074
1089
|
let i = j(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/steps$/);
|
|
1075
1090
|
if (!i) return null;
|
|
1076
1091
|
let a = decodeURIComponent(i[1] ?? ""), o = x(n.origin ?? n.Origin), s = (r.method ?? "GET").toUpperCase();
|
|
@@ -1094,7 +1109,7 @@ var a = (e) => ({
|
|
|
1094
1109
|
message: e?.message ?? String(e)
|
|
1095
1110
|
}, o);
|
|
1096
1111
|
}
|
|
1097
|
-
},
|
|
1112
|
+
}, ae = async (e, t, n, r = {}) => {
|
|
1098
1113
|
let i = j(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/events$/);
|
|
1099
1114
|
if (!i) return null;
|
|
1100
1115
|
let a = decodeURIComponent(i[1] ?? ""), o = x(n.origin ?? n.Origin), s = (r.method ?? "GET").toUpperCase();
|
|
@@ -1118,7 +1133,7 @@ var a = (e) => ({
|
|
|
1118
1133
|
message: e?.message ?? String(e)
|
|
1119
1134
|
}, o);
|
|
1120
1135
|
}
|
|
1121
|
-
},
|
|
1136
|
+
}, oe = async (e, t, n, r = {}) => {
|
|
1122
1137
|
if (j(t) !== "/_voltro/inspect/workflows/events") return null;
|
|
1123
1138
|
let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
|
|
1124
1139
|
if (a !== "GET") return y(405, {
|
|
@@ -1157,7 +1172,7 @@ var a = (e) => ({
|
|
|
1157
1172
|
message: e?.message ?? String(e)
|
|
1158
1173
|
}, i);
|
|
1159
1174
|
}
|
|
1160
|
-
},
|
|
1175
|
+
}, se = async (e, t, n, r = {}) => {
|
|
1161
1176
|
let i = j(t).match(/^\/_voltro\/inspect\/workflows\/events\/([^/]+)\/deliveries$/);
|
|
1162
1177
|
if (!i) return null;
|
|
1163
1178
|
let a = decodeURIComponent(i[1] ?? ""), o = x(n.origin ?? n.Origin), s = (r.method ?? "GET").toUpperCase();
|
|
@@ -1181,7 +1196,7 @@ var a = (e) => ({
|
|
|
1181
1196
|
message: e?.message ?? String(e)
|
|
1182
1197
|
}, o);
|
|
1183
1198
|
}
|
|
1184
|
-
},
|
|
1199
|
+
}, ce = async (e, t, n, r = {}) => {
|
|
1185
1200
|
if (j(e) !== "/_voltro/inspect/workflows/children") return null;
|
|
1186
1201
|
let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
|
|
1187
1202
|
if (a !== "GET") return y(405, {
|
|
@@ -1195,7 +1210,7 @@ var a = (e) => ({
|
|
|
1195
1210
|
reason: o.reason
|
|
1196
1211
|
}, i);
|
|
1197
1212
|
if (t.kind !== "api") return y(404, { error: "workflow children are api-only" }, i);
|
|
1198
|
-
let s =
|
|
1213
|
+
let s = Z(e).get("parentExecutionId");
|
|
1199
1214
|
if (s === null || s === "") return y(400, { error: "parentExecutionId query param required" }, i);
|
|
1200
1215
|
if (t.inspectWorkflowChildren === void 0) return y(200, {
|
|
1201
1216
|
runs: [],
|
|
@@ -1211,7 +1226,7 @@ var a = (e) => ({
|
|
|
1211
1226
|
message: e?.message ?? String(e)
|
|
1212
1227
|
}, i);
|
|
1213
1228
|
}
|
|
1214
|
-
},
|
|
1229
|
+
}, le = async (e, t, n, r, i = {}) => {
|
|
1215
1230
|
let a = j(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/(cancel|retry|suspend|resume-from-step|resume|signal|update|discard|redrive)$/);
|
|
1216
1231
|
if (!a) return null;
|
|
1217
1232
|
let o = decodeURIComponent(a[1] ?? ""), s = a[2], c = x(n.origin ?? n.Origin), l = (i.method ?? "POST").toUpperCase();
|
|
@@ -1269,7 +1284,7 @@ var a = (e) => ({
|
|
|
1269
1284
|
message: e?.message ?? String(e)
|
|
1270
1285
|
}, c);
|
|
1271
1286
|
}
|
|
1272
|
-
},
|
|
1287
|
+
}, ue = async (e, t, n, r, i = {}) => {
|
|
1273
1288
|
if (j(e) !== "/_voltro/inspect/data/import" || (i.method ?? "POST").toUpperCase() !== "POST") return null;
|
|
1274
1289
|
let a = x(n.origin ?? n.Origin);
|
|
1275
1290
|
if (h()) return y(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, a);
|
|
@@ -1302,7 +1317,7 @@ var a = (e) => ({
|
|
|
1302
1317
|
message: e?.message ?? String(e)
|
|
1303
1318
|
}, a);
|
|
1304
1319
|
}
|
|
1305
|
-
},
|
|
1320
|
+
}, de = async (e, t, n, r, i = {}) => {
|
|
1306
1321
|
let a = j(e);
|
|
1307
1322
|
if (!a.startsWith("/_voltro/inspect/data/rows")) return null;
|
|
1308
1323
|
let o = (i.method ?? "POST").toUpperCase();
|
|
@@ -1340,7 +1355,7 @@ var a = (e) => ({
|
|
|
1340
1355
|
if (!l) return null;
|
|
1341
1356
|
let u = decodeURIComponent(l[1] ?? "");
|
|
1342
1357
|
if (!u) return y(400, { error: "row id is required in URL" }, s);
|
|
1343
|
-
let d =
|
|
1358
|
+
let d = Z(e).get("table") ?? "";
|
|
1344
1359
|
if (!d) return y(400, { error: "query.table is required" }, s);
|
|
1345
1360
|
if (o === "PATCH") {
|
|
1346
1361
|
if (!t.inspectUpdateRow) return y(404, { error: "inspectUpdateRow not configured" }, s);
|
|
@@ -1382,7 +1397,7 @@ var a = (e) => ({
|
|
|
1382
1397
|
error: "method not allowed",
|
|
1383
1398
|
expected: "POST | PATCH | DELETE"
|
|
1384
1399
|
}, s);
|
|
1385
|
-
},
|
|
1400
|
+
}, fe = async (e, t, n, r, i = {}) => {
|
|
1386
1401
|
let a = j(e), o = `${m}/workflows/flow-control`;
|
|
1387
1402
|
if (a !== o && !a.startsWith(`${o}/`)) return null;
|
|
1388
1403
|
let s = x(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
|
|
@@ -1399,7 +1414,7 @@ var a = (e) => ({
|
|
|
1399
1414
|
expected: "GET"
|
|
1400
1415
|
}, s);
|
|
1401
1416
|
if (t.inspectInferences === void 0) return y(404, { error: "inspectInferences not configured" }, s);
|
|
1402
|
-
let n =
|
|
1417
|
+
let n = Z(e).get("limit"), r = n === null ? void 0 : Number(n);
|
|
1403
1418
|
try {
|
|
1404
1419
|
return y(200, await t.inspectInferences(r !== void 0 && Number.isFinite(r) ? { limit: r } : {}), s);
|
|
1405
1420
|
} catch (e) {
|
|
@@ -1415,7 +1430,7 @@ var a = (e) => ({
|
|
|
1415
1430
|
expected: "GET"
|
|
1416
1431
|
}, s);
|
|
1417
1432
|
if (t.inspectFlowControl === void 0) return y(404, { error: "inspectFlowControl not configured" }, s);
|
|
1418
|
-
let n =
|
|
1433
|
+
let n = Z(e).get("limit"), r = n === null ? void 0 : Number(n);
|
|
1419
1434
|
try {
|
|
1420
1435
|
return y(200, await t.inspectFlowControl(r !== void 0 && Number.isFinite(r) ? { limit: r } : {}), s);
|
|
1421
1436
|
} catch (e) {
|
|
@@ -1481,4 +1496,4 @@ var a = (e) => ({
|
|
|
1481
1496
|
}, s);
|
|
1482
1497
|
};
|
|
1483
1498
|
//#endregion
|
|
1484
|
-
export { w as A,
|
|
1499
|
+
export { w as A, ae as C, te as D, $ as E, A as F, C as I, v as L, b as M, z as N, x as O, E as P, se as S, ie as T, ne as _, T as a, ce as b, re as c, de as d, fe as f, B as g, X as h, F as i, h as j, k, ue as l, W as m, P as n, _ as o, J as p, S as r, G as s, m as t, Y as u, q as v, ee as w, oe as x, le as y };
|
|
@@ -2,9 +2,10 @@ import { n as e } from "./runtimeRegistry-DMeKfTHP.js";
|
|
|
2
2
|
import { r as t, t as n } from "./logFileSink-B4uP8pvf.js";
|
|
3
3
|
import { n as r } from "./cliOutput-D1tSBoRM.js";
|
|
4
4
|
import { a as i, i as a } from "./inspectFetch-BU1NyzxV.js";
|
|
5
|
-
import {
|
|
5
|
+
import { n as o, t as s } from "./emptyResultHeadline-Csa5fZOF.js";
|
|
6
|
+
import { ansi as c } from "@voltro/logger";
|
|
6
7
|
//#region src/logsCmd.ts
|
|
7
|
-
var
|
|
8
|
+
var l = (e) => {
|
|
8
9
|
let t = a(e);
|
|
9
10
|
if (t.error !== void 0) return { error: t.error };
|
|
10
11
|
let n = t.target, r = t.rest, i = {
|
|
@@ -31,7 +32,7 @@ var s = (e) => {
|
|
|
31
32
|
case "--since": {
|
|
32
33
|
let e = n();
|
|
33
34
|
if (e === void 0) return { error: "--since expects a value" };
|
|
34
|
-
let t =
|
|
35
|
+
let t = u(e);
|
|
35
36
|
if (t === null) return { error: `--since: unrecognised '${e}' (try '30s', '5m', '1h', or unix-ms)` };
|
|
36
37
|
i.since = t;
|
|
37
38
|
break;
|
|
@@ -89,7 +90,7 @@ var s = (e) => {
|
|
|
89
90
|
...i,
|
|
90
91
|
target: n
|
|
91
92
|
};
|
|
92
|
-
},
|
|
93
|
+
}, u = (e) => {
|
|
93
94
|
let t = /^(\d+)([smh])$/.exec(e);
|
|
94
95
|
if (t) {
|
|
95
96
|
let e = Number(t[1]), n = t[2], r = n === "s" ? 1e3 : n === "m" ? 6e4 : 36e5;
|
|
@@ -97,15 +98,15 @@ var s = (e) => {
|
|
|
97
98
|
}
|
|
98
99
|
let n = Number(e);
|
|
99
100
|
return Number.isFinite(n) && n > 0 ? n : null;
|
|
100
|
-
},
|
|
101
|
+
}, d = () => {
|
|
101
102
|
console.log("voltro logs — recent log records from every running voltro process"), console.log(""), console.log("Usage:"), console.log(" voltro logs [--tail N] [--since SPEC] [--level L] [--scope S]"), console.log(" [--source server|client] [--filter PAT] [--trace ID]"), console.log(" [--process NAME] [--format pretty|json|text] [--no-color]"), console.log(""), console.log("Examples:"), console.log(" voltro logs --tail 50"), console.log(" voltro logs --since 30s --level error"), console.log(" voltro logs --filter 'channels.create'"), console.log(" voltro logs --trace <traceId> --format json # whole chain for one request"), console.log(" voltro logs --format json | jq '.[] | select(.level == \"error\")'");
|
|
102
|
-
},
|
|
103
|
-
let a =
|
|
104
|
-
if ("error" in a) return a.error !== "help" && console.error(`voltro logs: ${a.error}`),
|
|
105
|
-
let
|
|
103
|
+
}, f = async (t) => {
|
|
104
|
+
let a = l(t);
|
|
105
|
+
if ("error" in a) return a.error !== "help" && console.error(`voltro logs: ${a.error}`), d(), a.error === "help" ? 0 : 2;
|
|
106
|
+
let s = a.target === void 0 ? await e() : {
|
|
106
107
|
version: 1,
|
|
107
108
|
apps: [i(a.target)]
|
|
108
|
-
}, u = a.process === void 0 ?
|
|
109
|
+
}, u = a.process === void 0 ? s.apps : s.apps.filter((e) => e.name === a.process);
|
|
109
110
|
if (u.length === 0 && a.process !== void 0) {
|
|
110
111
|
let e = n(a.process);
|
|
111
112
|
e !== void 0 && (u = [{
|
|
@@ -123,37 +124,41 @@ var s = (e) => {
|
|
|
123
124
|
if (u.length === 0) {
|
|
124
125
|
if (a.process !== void 0) {
|
|
125
126
|
console.error(`voltro logs: no running process named '${a.process}' and no orphan log file found`), console.error(" active processes:");
|
|
126
|
-
for (let e of
|
|
127
|
+
for (let e of s.apps) console.error(` - ${e.name} (${e.kind} @ ${e.url})`);
|
|
127
128
|
return 1;
|
|
128
129
|
}
|
|
129
130
|
return console.error("voltro logs: no running voltro process found"), console.error(" start one with 'voltro dev' (or 'voltro start') and try again."), 1;
|
|
130
131
|
}
|
|
131
|
-
let f = u.map((e) =>
|
|
132
|
-
for (let e of
|
|
132
|
+
let f = u.map((e) => p(e, a)), m = await Promise.all(f), h = [], g = [];
|
|
133
|
+
for (let e of m) e.kind === "ok" ? h.push(...e.records) : g.push({
|
|
133
134
|
name: e.name,
|
|
134
135
|
error: e.error
|
|
135
136
|
});
|
|
136
|
-
if (
|
|
137
|
-
let e =
|
|
138
|
-
records:
|
|
139
|
-
fetchErrors:
|
|
140
|
-
} : { records:
|
|
141
|
-
return r(e, { pretty: !1 }), +(
|
|
137
|
+
if (h.sort((e, t) => e.ts - t.ts), a.format === "json") {
|
|
138
|
+
let e = g.length > 0 ? {
|
|
139
|
+
records: h,
|
|
140
|
+
fetchErrors: g
|
|
141
|
+
} : { records: h };
|
|
142
|
+
return r(e, { pretty: !1 }), +(g.length === u.length);
|
|
142
143
|
}
|
|
143
144
|
if (a.format === "text") {
|
|
144
|
-
for (let e of
|
|
145
|
-
for (let e of
|
|
146
|
-
return +(
|
|
145
|
+
for (let e of h) console.log(_(e));
|
|
146
|
+
for (let e of g) console.error(`# fetch failed: ${e.name}: ${e.error}`);
|
|
147
|
+
return +(g.length === u.length);
|
|
147
148
|
}
|
|
148
|
-
for (let e of
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
for (let e of h) console.log(v(e, a.color));
|
|
150
|
+
h.length === 0 && console.error(o({
|
|
151
|
+
noun: "logs",
|
|
152
|
+
targets: u.length,
|
|
153
|
+
failures: g
|
|
154
|
+
}) ?? "voltro logs: no records matched the given filters.");
|
|
155
|
+
for (let e of g) {
|
|
151
156
|
let t = `# fetch failed: ${e.name}: ${e.error}`;
|
|
152
|
-
console.error(a.color ?
|
|
157
|
+
console.error(a.color ? c.dim(t) : t);
|
|
153
158
|
}
|
|
154
|
-
return +(
|
|
155
|
-
},
|
|
156
|
-
if (e.status === "booting") return
|
|
159
|
+
return +(g.length === u.length);
|
|
160
|
+
}, p = async (e, t) => {
|
|
161
|
+
if (e.status === "booting") return m(e, t, "process still booting");
|
|
157
162
|
let n = new URLSearchParams();
|
|
158
163
|
n.set("max", String(t.tail)), n.set("format", "json"), t.since !== void 0 && n.set("since", String(t.since)), t.level !== void 0 && n.set("level", t.level), t.scope !== void 0 && n.set("scope", t.scope), t.source !== void 0 && n.set("source", t.source), t.filter !== void 0 && n.set("filter", t.filter), t.traceId !== void 0 && n.set("trace", t.traceId);
|
|
159
164
|
let r = `${e.url.replace(/\/+$/, "")}/_voltro/inspect/logs?${n.toString()}`;
|
|
@@ -161,7 +166,7 @@ var s = (e) => {
|
|
|
161
166
|
let n = {};
|
|
162
167
|
process.env.VOLTRO_INSPECT_TOKEN !== void 0 && (n.authorization = `Bearer ${process.env.VOLTRO_INSPECT_TOKEN}`);
|
|
163
168
|
let i = await fetch(r, { headers: n });
|
|
164
|
-
if (!i.ok) return
|
|
169
|
+
if (!i.ok) return m(e, t, await s(i));
|
|
165
170
|
let a = await i.json(), o = Array.isArray(a.records) ? a.records : [];
|
|
166
171
|
return {
|
|
167
172
|
kind: "ok",
|
|
@@ -172,9 +177,9 @@ var s = (e) => {
|
|
|
172
177
|
}))
|
|
173
178
|
};
|
|
174
179
|
} catch (n) {
|
|
175
|
-
return
|
|
180
|
+
return m(e, t, n.message || String(n));
|
|
176
181
|
}
|
|
177
|
-
},
|
|
182
|
+
}, m = async (e, n, r) => {
|
|
178
183
|
if (!e.logFile) return {
|
|
179
184
|
kind: "err",
|
|
180
185
|
name: e.name,
|
|
@@ -215,49 +220,49 @@ var s = (e) => {
|
|
|
215
220
|
error: `${r}; file read failed: ${t.message || String(t)}`
|
|
216
221
|
};
|
|
217
222
|
}
|
|
218
|
-
},
|
|
219
|
-
trace:
|
|
220
|
-
debug:
|
|
221
|
-
info:
|
|
222
|
-
warn:
|
|
223
|
-
error:
|
|
224
|
-
fatal: (e) =>
|
|
225
|
-
},
|
|
223
|
+
}, h = {
|
|
224
|
+
trace: c.dim,
|
|
225
|
+
debug: c.cyan,
|
|
226
|
+
info: c.green,
|
|
227
|
+
warn: c.yellow,
|
|
228
|
+
error: c.red,
|
|
229
|
+
fatal: (e) => c.bgRed(c.white(e))
|
|
230
|
+
}, g = {
|
|
226
231
|
trace: "TRACE",
|
|
227
232
|
debug: "DEBUG",
|
|
228
233
|
info: "INFO ",
|
|
229
234
|
warn: "WARN ",
|
|
230
235
|
error: "ERROR",
|
|
231
236
|
fatal: "FATAL"
|
|
232
|
-
}, h = (e) => {
|
|
233
|
-
let t = _(e.ts), n = e.scope ?? "?", r = y(e.fields);
|
|
234
|
-
return `${t} ${m[e.level]} [${n}/${e.source}@${e.process}] ${e.message}${r}`;
|
|
235
|
-
}, g = (e, t) => {
|
|
236
|
-
if (!t) return h(e);
|
|
237
|
-
let n = o.dim(_(e.ts)), r = e.scope ?? "?", i = p[e.level](m[e.level]), a = o.dim(`[${r}/${e.source}@${e.process}]`), s = e.level === "error" || e.level === "fatal" ? o.red(e.message) : e.message, c = y(e.fields);
|
|
238
|
-
return `${n} ${i} ${a} ${s}${c ? o.dim(c) : ""}`;
|
|
239
237
|
}, _ = (e) => {
|
|
238
|
+
let t = y(e.ts), n = e.scope ?? "?", r = x(e.fields);
|
|
239
|
+
return `${t} ${g[e.level]} [${n}/${e.source}@${e.process}] ${e.message}${r}`;
|
|
240
|
+
}, v = (e, t) => {
|
|
241
|
+
if (!t) return _(e);
|
|
242
|
+
let n = c.dim(y(e.ts)), r = e.scope ?? "?", i = h[e.level](g[e.level]), a = c.dim(`[${r}/${e.source}@${e.process}]`), o = e.level === "error" || e.level === "fatal" ? c.red(e.message) : e.message, s = x(e.fields);
|
|
243
|
+
return `${n} ${i} ${a} ${o}${s ? c.dim(s) : ""}`;
|
|
244
|
+
}, y = (e) => {
|
|
240
245
|
let t = new Date(e);
|
|
241
246
|
return `${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}:${String(t.getSeconds()).padStart(2, "0")}.${String(t.getMilliseconds()).padStart(3, "0")}`;
|
|
242
|
-
},
|
|
247
|
+
}, b = 80, x = (e) => {
|
|
243
248
|
let t = Object.entries(e);
|
|
244
249
|
if (t.length === 0) return "";
|
|
245
250
|
let n = [];
|
|
246
|
-
for (let [e, r] of t) r !== void 0 && n.push(`${e}=${
|
|
251
|
+
for (let [e, r] of t) r !== void 0 && n.push(`${e}=${S(r)}`);
|
|
247
252
|
return n.length > 0 ? " " + n.join(" ") : "";
|
|
248
|
-
},
|
|
253
|
+
}, S = (e) => {
|
|
249
254
|
if (typeof e == "string") {
|
|
250
|
-
let t = e.length >
|
|
255
|
+
let t = e.length > b ? e.slice(0, b) + "…" : e;
|
|
251
256
|
return /[\s=]/.test(t) ? `"${t.replace(/"/g, "\\\"")}"` : t;
|
|
252
257
|
}
|
|
253
258
|
if (e === null) return "null";
|
|
254
259
|
if (typeof e == "number" || typeof e == "boolean") return String(e);
|
|
255
260
|
try {
|
|
256
261
|
let t = JSON.stringify(e);
|
|
257
|
-
return t.length >
|
|
262
|
+
return t.length > b ? t.slice(0, b) + "…" : t;
|
|
258
263
|
} catch {
|
|
259
264
|
return "[unserialisable]";
|
|
260
265
|
}
|
|
261
266
|
};
|
|
262
267
|
//#endregion
|
|
263
|
-
export {
|
|
268
|
+
export { f as runLogsCommand };
|