@prisma-next/cli 0.14.0-dev.5 → 0.14.0-dev.50
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.mjs +14 -14
- package/dist/cli.mjs.map +1 -1
- package/dist/{client-EnAjSmZg.mjs → client-DL6KE_c0.mjs} +88 -99
- package/dist/client-DL6KE_c0.mjs.map +1 -0
- package/dist/{command-helpers-6cNJZ863.mjs → command-helpers-DMG0RsR1.mjs} +3 -3
- package/dist/command-helpers-DMG0RsR1.mjs.map +1 -0
- package/dist/commands/contract-emit.mjs +1 -1
- package/dist/commands/contract-infer.mjs +1 -1
- package/dist/commands/db-init.mjs +3 -3
- package/dist/commands/db-schema.mjs +3 -3
- package/dist/commands/db-sign.mjs +4 -4
- package/dist/commands/db-update.mjs +4 -4
- package/dist/commands/db-verify.mjs +1 -1
- package/dist/commands/migrate.d.mts +1 -1
- package/dist/commands/migrate.d.mts.map +1 -1
- package/dist/commands/migrate.mjs +35 -35
- package/dist/commands/migrate.mjs.map +1 -1
- package/dist/commands/migration-check.d.mts +1 -1
- package/dist/commands/migration-check.mjs +1 -1
- package/dist/commands/migration-graph.d.mts +1 -1
- package/dist/commands/migration-graph.mjs +7 -7
- package/dist/commands/migration-graph.mjs.map +1 -1
- package/dist/commands/migration-list.d.mts +6 -6
- package/dist/commands/migration-list.d.mts.map +1 -1
- package/dist/commands/migration-list.mjs +1 -1
- package/dist/commands/migration-log.d.mts +1 -1
- package/dist/commands/migration-log.mjs +1 -1
- package/dist/commands/migration-new.mjs +3 -3
- package/dist/commands/migration-plan.d.mts.map +1 -1
- package/dist/commands/migration-plan.mjs +1 -1
- package/dist/commands/migration-show.mjs +3 -3
- package/dist/commands/migration-status.d.mts +1 -1
- package/dist/commands/migration-status.mjs +1 -1
- package/dist/commands/ref.d.mts +1 -1
- package/dist/commands/ref.mjs +2 -2
- package/dist/commands/telemetry/index.mjs +1 -1
- package/dist/{contract-at-errors-DdxWRjMc.mjs → contract-at-errors-bF4CGDl0.mjs} +2 -2
- package/dist/{contract-at-errors-DdxWRjMc.mjs.map → contract-at-errors-bF4CGDl0.mjs.map} +1 -1
- package/dist/{contract-emit-fz6pDR2n.mjs → contract-emit-BM7oxYIG.mjs} +7 -5
- package/dist/{contract-emit-fz6pDR2n.mjs.map → contract-emit-BM7oxYIG.mjs.map} +1 -1
- package/dist/{contract-emit-D4xDDFkO.mjs → contract-emit-DnCG2JaQ.mjs} +3 -3
- package/dist/{contract-emit-D4xDDFkO.mjs.map → contract-emit-DnCG2JaQ.mjs.map} +1 -1
- package/dist/{contract-infer-Ars4yjBv.mjs → contract-infer-Dq9XNQCx.mjs} +3 -3
- package/dist/{contract-infer-Ars4yjBv.mjs.map → contract-infer-Dq9XNQCx.mjs.map} +1 -1
- package/dist/{contract-space-aggregate-loader-Bu2fjSWV.mjs → contract-space-aggregate-loader-DAa8u6bi.mjs} +2 -2
- package/dist/{contract-space-aggregate-loader-Bu2fjSWV.mjs.map → contract-space-aggregate-loader-DAa8u6bi.mjs.map} +1 -1
- package/dist/{db-verify-CZxRV_er.mjs → db-verify-BpfJvC8O.mjs} +56 -60
- package/dist/db-verify-BpfJvC8O.mjs.map +1 -0
- package/dist/exports/control-api.d.mts +3 -3
- package/dist/exports/control-api.mjs +2 -2
- package/dist/exports/index.mjs +2 -2
- package/dist/extension-pack-inputs-1ySHqxKG.mjs.map +1 -1
- package/dist/{format-C3XdaDuA.mjs → format-DrUSkdqR.mjs} +2 -2
- package/dist/{format-C3XdaDuA.mjs.map → format-DrUSkdqR.mjs.map} +1 -1
- package/dist/{framework-components-5RljWT7Q.mjs → framework-components-BdmVlRSS.mjs} +2 -2
- package/dist/{framework-components-5RljWT7Q.mjs.map → framework-components-BdmVlRSS.mjs.map} +1 -1
- package/dist/{init-C79Yb97u.mjs → init-C0YyVoGj.mjs} +3 -3
- package/dist/{init-C79Yb97u.mjs.map → init-C0YyVoGj.mjs.map} +1 -1
- package/dist/{inspect-live-schema-DR8Eyt29.mjs → inspect-live-schema-Bs_0M6z8.mjs} +3 -3
- package/dist/{inspect-live-schema-DR8Eyt29.mjs.map → inspect-live-schema-Bs_0M6z8.mjs.map} +1 -1
- package/dist/{migration-check-CTcJfCC4.mjs → migration-check-DYxrNfK-.mjs} +9 -9
- package/dist/migration-check-DYxrNfK-.mjs.map +1 -0
- package/dist/{migration-command-scaffold-6OT_Q-3Y.mjs → migration-command-scaffold-DB5DQLvF.mjs} +3 -3
- package/dist/{migration-command-scaffold-6OT_Q-3Y.mjs.map → migration-command-scaffold-DB5DQLvF.mjs.map} +1 -1
- package/dist/{migration-list-DVHVmMrf.mjs → migration-list-BX5w9HAn.mjs} +14 -14
- package/dist/migration-list-BX5w9HAn.mjs.map +1 -0
- package/dist/{migration-log-CQpc9JoL.mjs → migration-log-CB1KzVOG.mjs} +3 -3
- package/dist/{migration-log-CQpc9JoL.mjs.map → migration-log-CB1KzVOG.mjs.map} +1 -1
- package/dist/{migration-path-target-zK6RG6JY.mjs → migration-path-target-CEFRK2Q7.mjs} +2 -2
- package/dist/{migration-path-target-zK6RG6JY.mjs.map → migration-path-target-CEFRK2Q7.mjs.map} +1 -1
- package/dist/{migration-plan-o2aqjnfd.mjs → migration-plan-DMKl_HnV.mjs} +29 -28
- package/dist/migration-plan-DMKl_HnV.mjs.map +1 -0
- package/dist/{migration-status-2aXGtYMW.mjs → migration-status-BeNAmEju.mjs} +12 -12
- package/dist/migration-status-BeNAmEju.mjs.map +1 -0
- package/dist/{telemetry-BckOSUWG.mjs → telemetry-_19qtfXp.mjs} +2 -2
- package/dist/{telemetry-BckOSUWG.mjs.map → telemetry-_19qtfXp.mjs.map} +1 -1
- package/dist/{types-qETCCNbe.d.mts → types-DFoqNIcQ.d.mts} +26 -20
- package/dist/types-DFoqNIcQ.d.mts.map +1 -0
- package/dist/{verify-DLqhL2LU.mjs → verify-Djo-Jep_.mjs} +57 -159
- package/dist/verify-Djo-Jep_.mjs.map +1 -0
- package/package.json +21 -21
- package/src/commands/db-verify.ts +31 -19
- package/src/commands/lsp.ts +3 -1
- package/src/commands/migrate.ts +46 -43
- package/src/commands/migration-check.ts +5 -5
- package/src/commands/migration-graph.ts +4 -4
- package/src/commands/migration-list.ts +12 -12
- package/src/commands/migration-plan.ts +14 -3
- package/src/commands/migration-status.ts +9 -9
- package/src/control-api/client.ts +5 -3
- package/src/control-api/operations/contract-emit.ts +7 -6
- package/src/control-api/operations/db-init.ts +2 -2
- package/src/control-api/operations/db-run.ts +18 -17
- package/src/control-api/operations/db-verify.ts +52 -44
- package/src/control-api/operations/migrate.ts +72 -72
- package/src/control-api/operations/run-migration.ts +6 -5
- package/src/control-api/types.ts +8 -8
- package/src/utils/combine-verify-results.ts +94 -0
- package/src/utils/extension-pack-inputs.ts +1 -1
- package/src/utils/formatters/errors.ts +12 -4
- package/src/utils/formatters/verify.ts +88 -227
- package/src/utils/plan-resolution.ts +18 -18
- package/dist/client-EnAjSmZg.mjs.map +0 -1
- package/dist/command-helpers-6cNJZ863.mjs.map +0 -1
- package/dist/db-verify-CZxRV_er.mjs.map +0 -1
- package/dist/migration-check-CTcJfCC4.mjs.map +0 -1
- package/dist/migration-list-DVHVmMrf.mjs.map +0 -1
- package/dist/migration-plan-o2aqjnfd.mjs.map +0 -1
- package/dist/migration-status-2aXGtYMW.mjs.map +0 -1
- package/dist/types-qETCCNbe.d.mts.map +0 -1
- package/dist/verify-DLqhL2LU.mjs.map +0 -1
- package/src/utils/combine-schema-results.ts +0 -84
|
@@ -2,7 +2,7 @@ import { CliStructuredError as CliStructuredError$1 } from "@prisma-next/errors/
|
|
|
2
2
|
import { Result } from "@prisma-next/utils/result";
|
|
3
3
|
import { ControlAdapterDescriptor, ControlDriverDescriptor, ControlDriverInstance, ControlExtensionDescriptor, ControlFamilyDescriptor, ControlFamilyInstance, ControlTargetDescriptor, CoreSchemaView, MigrationPlanOperation, MigrationPlannerConflict, OperationPreview, SignDatabaseResult, VerifyDatabaseResult, VerifyDatabaseSchemaResult } from "@prisma-next/framework-components/control";
|
|
4
4
|
import { TargetBoundComponentDescriptor } from "@prisma-next/framework-components/components";
|
|
5
|
-
import {
|
|
5
|
+
import { AggregateContractSpace } from "@prisma-next/migration-tools/aggregate";
|
|
6
6
|
import { MigrationToolsError } from "@prisma-next/migration-tools/errors";
|
|
7
7
|
import { ContractSourceDiagnostics, ContractSourceProvider } from "@prisma-next/config/config-types";
|
|
8
8
|
import { Contract, ContractMarkerRecord, LedgerEntryRecord } from "@prisma-next/contract/types";
|
|
@@ -15,9 +15,9 @@ import { PslDocumentAst } from "@prisma-next/framework-components/psl-ast";
|
|
|
15
15
|
*
|
|
16
16
|
* Loader → verifier pipeline. The loader (sole descriptor-import
|
|
17
17
|
* boundary) builds a {@link import('@prisma-next/migration-tools/aggregate').ContractSpaceAggregate};
|
|
18
|
-
* the aggregate verifier bundles `markerCheck` + per-space
|
|
19
|
-
*
|
|
20
|
-
* facing `--strict` flag.
|
|
18
|
+
* the aggregate verifier bundles `markerCheck` + per-space `schemaCheck`
|
|
19
|
+
* (each contract space verified against the full schema; extras stripped to its own view).
|
|
20
|
+
* `mode: 'strict' | 'lenient'` maps directly to the user facing `--strict` flag.
|
|
21
21
|
*/
|
|
22
22
|
interface ExecuteDbVerifyOptions<TFamilyId extends string, TTargetId extends string> {
|
|
23
23
|
readonly driver: ControlDriverInstance<TFamilyId, TTargetId>;
|
|
@@ -40,13 +40,19 @@ interface ExecuteDbVerifyOptions<TFamilyId extends string, TTargetId extends str
|
|
|
40
40
|
* emitted, so downstream tooling and integration tests assert on the
|
|
41
41
|
* same shape).
|
|
42
42
|
*
|
|
43
|
-
* On success, the per-space
|
|
43
|
+
* On success, the per-space verify results are returned for the CLI to
|
|
44
44
|
* render. When `skipSchema` is true (`--marker-only`), the schema map
|
|
45
45
|
* is empty.
|
|
46
46
|
*/
|
|
47
47
|
interface ExecuteDbVerifySuccess {
|
|
48
48
|
readonly schemaResults: ReadonlyMap<string, VerifyDatabaseSchemaResult>;
|
|
49
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Live element names no contract space declares, deduplicated and reported
|
|
51
|
+
* once for the whole database (never per space). Strict mode fails on a
|
|
52
|
+
* non-empty list; lenient mode surfaces it informationally.
|
|
53
|
+
*/
|
|
54
|
+
readonly unclaimed: readonly string[];
|
|
55
|
+
readonly spaceOrder: readonly string[];
|
|
50
56
|
readonly appSpaceId: string;
|
|
51
57
|
}
|
|
52
58
|
type ExecuteDbVerifyResult = Result<ExecuteDbVerifySuccess, CliStructuredError$1>;
|
|
@@ -60,11 +66,11 @@ type ExecuteDbVerifyResult = Result<ExecuteDbVerifySuccess, CliStructuredError$1
|
|
|
60
66
|
* structured CLI error.
|
|
61
67
|
* 2. **Read DB state**: marker rows + (when `skipSchema` is `false`)
|
|
62
68
|
* schema introspection.
|
|
63
|
-
* 3. **Verify**: {@link verifyMigration} returns per-space
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* callers (CLI command) can render
|
|
67
|
-
* returned to the caller verbatim.
|
|
69
|
+
* 3. **Verify**: {@link verifyMigration} returns per-space `markerCheck` +
|
|
70
|
+
* per-space `schemaCheck` (each contract space verified against the full schema,
|
|
71
|
+
* then scoped to its own contract space). Marker mismatches map to
|
|
72
|
+
* `CliStructuredError` (code `5002`) so callers (CLI command) can render
|
|
73
|
+
* and exit. Verify results are returned to the caller verbatim.
|
|
68
74
|
*/
|
|
69
75
|
declare function executeDbVerify<TFamilyId extends string, TTargetId extends string>(options: ExecuteDbVerifyOptions<TFamilyId, TTargetId>): Promise<ExecuteDbVerifyResult>;
|
|
70
76
|
//#endregion
|
|
@@ -523,7 +529,7 @@ type EmitResult = Result<EmitSuccess, EmitFailure>;
|
|
|
523
529
|
*
|
|
524
530
|
* The control-api operation is responsible for: loading the
|
|
525
531
|
* contract-space aggregate, reading per-space marker rows from the
|
|
526
|
-
* live database, plotting per-space paths via `
|
|
532
|
+
* live database, plotting per-space paths via `resolveRecordedPath`
|
|
527
533
|
* (replay-only — no synth, no introspection), and dispatching
|
|
528
534
|
* through the shared `runMigration` primitive. The CLI command
|
|
529
535
|
* just resolves the descriptor surface (config, refs, contract
|
|
@@ -535,9 +541,9 @@ interface MigrateOptions {
|
|
|
535
541
|
/** Migrations root directory (`migrations/` under the project). */
|
|
536
542
|
readonly migrationsDir: string;
|
|
537
543
|
/**
|
|
538
|
-
* Optional app-space ref override. When provided, the app
|
|
544
|
+
* Optional app-space ref override. When provided, the app space's
|
|
539
545
|
* graph-walk targets this hash instead of `contract.storage.storageHash`.
|
|
540
|
-
* Extension
|
|
546
|
+
* Extension spaces always walk to their own `headRef.hash`.
|
|
541
547
|
*/
|
|
542
548
|
readonly refHash?: string;
|
|
543
549
|
/**
|
|
@@ -584,17 +590,17 @@ interface MigrateRanEntry {
|
|
|
584
590
|
}
|
|
585
591
|
/**
|
|
586
592
|
* Successful migrate result. Carries both the top-level fields
|
|
587
|
-
* (`markerHash` is the **app
|
|
593
|
+
* (`markerHash` is the **app space's** post-migrate marker) and the
|
|
588
594
|
* per-space breakdown (`perSpace` — markers / operations in canonical
|
|
589
595
|
* schedule order).
|
|
590
596
|
*/
|
|
591
597
|
/**
|
|
592
|
-
* Path-decision summary for the **app
|
|
598
|
+
* Path-decision summary for the **app space** post-migrate. Surfaced
|
|
593
599
|
* at the top level (and consumed by the cli-journeys suite, which
|
|
594
600
|
* inspects `requiredInvariants`/`satisfiedInvariants`/
|
|
595
601
|
* `selectedPath` to validate invariant routing).
|
|
596
602
|
*
|
|
597
|
-
* Per-space path decisions for extension
|
|
603
|
+
* Per-space path decisions for extension spaces are not surfaced —
|
|
598
604
|
* extensions own their own ref/invariant control.
|
|
599
605
|
*/
|
|
600
606
|
interface MigratePathDecision {
|
|
@@ -625,7 +631,7 @@ interface MigrateSuccess {
|
|
|
625
631
|
*/
|
|
626
632
|
readonly perSpace: ReadonlyArray<PerSpaceExecutionEntry>;
|
|
627
633
|
/**
|
|
628
|
-
* Path-decision data for the app
|
|
634
|
+
* Path-decision data for the app space. Present whenever the
|
|
629
635
|
* graph-walk strategy ran for the app (i.e. always for the
|
|
630
636
|
* aggregate-walking migrate path). Absent only for the no-op
|
|
631
637
|
* "Already up to date" early return when the app has no plan.
|
|
@@ -792,7 +798,7 @@ interface ControlClient {
|
|
|
792
798
|
* markers, and (unless `skipSchema` is true) per-space schema
|
|
793
799
|
* verification with pre-projection (closes F23).
|
|
794
800
|
*
|
|
795
|
-
* @returns Result pattern: per-space
|
|
801
|
+
* @returns Result pattern: per-space verify results on success;
|
|
796
802
|
* structured CLI error on marker / loader failure.
|
|
797
803
|
* @throws If not connected or infrastructure failure
|
|
798
804
|
*/
|
|
@@ -881,4 +887,4 @@ interface ControlClient {
|
|
|
881
887
|
}
|
|
882
888
|
//#endregion
|
|
883
889
|
export { ExecuteDbVerifyOptions as A, IntrospectOptions as C, SchemaVerifyOptions as D, PerSpaceExecutionEntry as E, executeDbVerify as M, CliStructuredError$1 as N, SignOptions as O, EmitSuccess as S, OnControlProgress as T, EmitContractConfig as _, ControlClientOptions as a, EmitOptions as b, DbInitFailureCode as c, DbInitSuccess as d, DbUpdateFailure as f, DbUpdateSuccess as g, DbUpdateResult as h, ControlClient as i, ExecuteDbVerifyResult as j, VerifyOptions as k, DbInitOptions as l, DbUpdateOptions as m, ContractEmitResult as n, ControlProgressEvent as o, DbUpdateFailureCode as p, ControlActionName as r, DbInitFailure as s, ContractEmitOptions as t, DbInitResult as u, EmitFailure as v, MigratePathDecision as w, EmitResult as x, EmitFailureCode as y };
|
|
884
|
-
//# sourceMappingURL=types-
|
|
890
|
+
//# sourceMappingURL=types-DFoqNIcQ.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DFoqNIcQ.d.mts","names":[],"sources":["../src/control-api/operations/db-verify.ts","../src/control-api/types.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8CA;UAAiB,sBAAA;EAAA,SACN,MAAA,EAAQ,qBAAA,CAAsB,SAAA,EAAW,SAAA;EAAA,SACzC,cAAA,EAAgB,qBAAA,CAAsB,SAAA;EAAA,SACtC,QAAA,EAAU,QAAA;EAAA,SACV,aAAA;EAAA,SACA,QAAA,EAAU,SAAA;EAAA,SACV,cAAA,EAAgB,aAAA,CAAc,0BAAA,CAA2B,SAAA,EAAW,SAAA;EAAA,SACpE,mBAAA,EAAqB,aAAA,CAAc,8BAAA,CAA+B,SAAA,EAAW,SAAA;EAAA,SAC7E,IAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA,GAAa,iBAAA;AAAA;;;;;;;;;;;;;UAeP,sBAAA;EAAA,SACN,aAAA,EAAe,WAAW,SAAS,0BAAA;EAzBnB;;;;;EAAA,SA+BhB,SAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA;AAAA;AAAA,KAGC,qBAAA,GAAwB,MAAA,CAAO,sBAAA,EAAwB,oBAAA;;;;;;;;;;;;;;AA3B1B;AAezC;;iBA8BsB,eAAA,qDACpB,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,SAAA,IAC1C,OAAA,CAAQ,qBAAA;;;;;;;;;;;AA1DX;;;UCHiB,oBAAA;EAAA,SAEN,MAAA,EAAQ,uBAAA;EAAA,SAER,MAAA,EAAQ,uBAAA;EAAA,SAER,OAAA,EAAS,wBAAA;EDDO;EAAA,SCIhB,MAAA,GAAS,uBAAA;EAAA,SAET,cAAA,GAAiB,aAAA,CAAc,0BAAA;EDF0B;;;;;EAAA,SCQzD,UAAA;AAAA;;;;KAUC,iBAAA;;;;;;;;;;;;;;KAwBA,oBAAA;EAAA,SAEG,MAAA,EAAQ,iBAAA;EAAA,SACR,IAAA;EAAA,SACA,MAAA;EAAA,SACA,YAAA;EAAA,SACA,KAAA;AAAA;EAAA,SAGA,MAAA,EAAQ,iBAAiB;EAAA,SACzB,IAAA;EAAA,SACA,MAAA;EAAA,SACA,OAAA;AAAA;;;;;;KAQH,iBAAA,IAAqB,KAA2B,EAApB,oBAAoB;AD1C5D;;;AAAA,UCmDiB,aAAA;EDlDN;EAAA,SCoDA,QAAA;EDpDmC;;;;;EAAA,SC0DnC,UAAA;ED/CC;EAAA,SCiDD,UAAA,GAAa,iBAAiB;AAAA;;;;UAMxB,mBAAA;EDvDyB;EAAA,SCyD/B,QAAA;EDzDgC;;;AAA0C;AAkBrF;EAlB2C,SC+DhC,MAAA;ED7C0B;;;;;EAAA,SCmD1B,UAAA;EDjDD;EAAA,SCmDC,UAAA,GAAa,iBAAiB;AAAA;;;;UAMxB,WAAA;ED1Df;EAAA,SC4DS,QAAA;ED3DA;;AAAqB;EAArB,SC+DA,YAAA;;;AA5HX;WAgIW,UAAA;;;;;;WAMA,UAAA;EA3HiB;EAAA,SA6HjB,UAAA,GAAa,iBAAiB;AAAA;;;;UAMxB,aAAA;EAxIN;EAAA,SA0IA,QAAA;EAvIA;;;;;EAAA,SA6IA,IAAA;EArIU;AAAA;AAUrB;;;EAVqB,SA2IV,UAAA;EAjIkB;AAwB7B;;;;;EAxB6B,SAwIlB,aAAA;EA7GI;EAAA,SA+GJ,UAAA,GAAa,iBAAiB;AAAA;;;;UAMxB,eAAA;EA7GF;EAAA,SA+GJ,QAAA;EA9GW;AAAA;AAQtB;;;EARsB,SAoHX,IAAA;EA5GiD;AAS5D;;;;EAT4D,SAkHjD,UAAA;EAjGA;;;;AAE8B;AAMzC;;EARW,SAyGA,cAAA;EAjF8B;;;;;;EAAA,SAwF9B,aAAA;EAxF8B;EAAA,SA0F9B,UAAA,GAAa,iBAAiB;AAAA;;;;;;;;;UAWxB,eAAA;EA7EwB;AAMzC;;;;;EANyC,SAoF9B,QAAA,EAAU,QAAA;EAAA,SACV,aAAA;EAAA,SACA,MAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA;EAAA,SACA,UAAA,GAAa,iBAAiB;AAAA;;;;UAMxB,iBAAA;EArDN;;;EAAA,SAyDA,MAAA;EAlCA;;;AAA8B;AAWzC;EAXW,SAwCA,UAAA;;WAEA,UAAA,GAAa,iBAAiB;AAAA;;;;UAMxB,kBAAA;EA1BN;;;EAAA,SA8BA,MAAA,EAAQ,sBAAsB;EA5BA;AAAA;AAMzC;;EANyC,SAiC9B,MAAA;AAAA;;;;UAMM,WAAA;EArBwB;AAAA;AAMzC;EANyC,SAyB9B,cAAA,EAAgB,kBAAA;;WAEhB,UAAA,GAAa,iBAAiB;AAAA;;;;AAZxB;AAMjB;;;;;;;;UAyBiB,sBAAA;EAAA,SACN,OAAA;EADM;EAAA,SAGN,IAAA;;;;;;WAMA,UAAA,EAAY,aAAa;IAAA,SACvB,EAAA;IAAA,SACA,KAAA;IAAA,SACA,cAAA;EAAA;EAQA;;AAAW;AAOxB;;EAPa,SADF,MAAA;IAAA,SACE,WAAA;EAAA;AAAA;;;;UAOI,aAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA;IAAA,SACE,UAAA,EAAY,aAAA;MAAA,SACV,EAAA;MAAA,SACA,KAAA;MAAA,SACA,cAAA;IAAA;IAAA;;;;;;;IAAA,SASF,OAAA,GAAU,gBAAA;EAAA;EAAA,SAEZ,WAAA;IAAA,SACE,WAAA;IAAA,SACA,WAAA;EAAA;EAAA,SAEF,SAAA;IAAA,SACE,iBAAA;IAAA,SACA,kBAAA;EAAA;EAAA,SAEF,MAAA;IAAA,SACE,WAAA;IAAA,SACA,WAAA;EAAA;EAiBD;;;;AAAiB;AAK7B;;EALY,SARD,QAAA,GAAW,aAAA,CAAc,sBAAA;EAAA,SACzB,OAAA;EAAA,SACA,QAAA,GAAW,aAAA,CAAc,wBAAA;AAAA;;;;KAMxB,iBAAA;;;;UAKK,aAAA;EAAA,SACN,IAAA,EAAM,iBAAA;EAAA,SACN,OAAA;EAAA,SACA,GAAA;EAAA,SACA,SAAA,EAAW,aAAA,CAAc,wBAAA;EAAA,SACzB,QAAA,GAAW,aAAA,CAAc,wBAAA;EAAA,SACzB,IAAA,EAAM,MAAA;EAAA,SACN,MAAA;IAAA,SACE,WAAA;IAAA,SACA,WAAA;EAAA;EAAA,SAEF,WAAA;IAAA,SACE,WAAA;IAAA,SACA,WAAA;EAAA;AAAA;;AAAW;AAQxB;;KAAY,YAAA,GAAe,MAAA,CAAO,aAAA,EAAe,aAAA;;;;UAKhC,eAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA;IAAA,SACE,UAAA,EAAY,aAAA;MAAA,SACV,EAAA;MAAA,SACA,KAAA;MAAA,SACA,cAAA;IAAA;IANiB;;;;;;;IAAA,SAenB,OAAA,GAAU,gBAAA;EAAA;EAAA,SAEZ,WAAA;IAAA,SACE,WAAA;IAAA,SACA,WAAA;EAAA;EAAA,SAEF,SAAA;IAAA,SACE,iBAAA;IAAA,SACA,kBAAA;EAAA;EAAA,SAEF,MAAA;IAAA,SACE,WAAA;IAAA,SACA,WAAA;EAAA;EARA;;;;EAAA,SAcF,QAAA,GAAW,aAAA,CAAc,sBAAA;EAAA,SACzB,OAAA;EAAA,SACA,QAAA,GAAW,aAAA,CAAc,wBAAA;AAAA;;;;KAMxB,mBAAA;;;;UAKK,eAAA;EAAA,SACN,IAAA,EAAM,mBAAA;EAAA,SACN,OAAA;EAAA,SACA,GAAA;EAAA,SACA,SAAA,EAAW,aAAA,CAAc,wBAAA;EAAA,SACzB,QAAA,GAAW,aAAA,CAAc,wBAAA;EAAA,SACzB,IAAA,EAAM,MAAA;AAAA;;;;;KAOL,cAAA,GAAiB,MAAA,CAAO,eAAA,EAAiB,eAAA;;;;;UAMpC,WAAA;EAlBA;EAAA,SAoBN,WAAA;EAlBA;EAAA,SAoBA,aAAA;EAnBW;EAAA,SAqBX,WAAA;EApBA;EAAA,SAsBA,YAAA;EAtByB;EAAA,SAwBzB,WAAA;AAAA;;AAvBY;AAOvB;KAsBY,eAAA;;;;UAQK,WAAA;EAAA,SACN,IAAA,EAAM,eAAA;EAAA,SACN,OAAA;EAAA,SACA,GAAA;EAAA,SACA,IAAA,EAAM,MAAA;EAAA,SACN,WAAA,GAAc,yBAAA;AAAA;AAnC2C;AAMpE;;;AANoE,KA0CxD,UAAA,GAAa,MAAA,CAAO,WAAA,EAAa,WAAA;;;;;;;AA1BvB;AAMtB;;;;UAqCiB,cAAA;EA7BA;EAAA,SA+BN,QAAA;;WAEA,aAAA;EA7BM;;;;;EAAA,SAmCN,OAAA;EArCA;;;;;EAAA,SA2CA,aAAA;EAxCuC;AAAA;AAOlD;;;;EAPkD,SA+CvC,OAAA;EAxCc;;;;EAAA,SA6Cd,UAAA;EA7CkC;EAAA,SA+ClC,UAAA,GAAa,iBAAiB;AAAA;;;;AA6CZ;AAkB7B;;;;;;;;;UAxBiB,eAAA;EAAA,SACN,OAAA;EAAA,SACA,OAAA;EAAA,SACA,aAAA;EAAA,SACA,IAAA;EAAA,SACA,EAAA;EAAA,SACA,kBAAA;AAAA;;AA+BY;AAIvB;;;;;;;;;;;;;UAjBiB,mBAAA;EAAA,SACN,QAAA;EAAA,SACA,MAAA;EAAA,SACA,gBAAA;EAAA,SACA,eAAA;EAAA,SACA,OAAA;EAAA,SACA,kBAAA;EAAA,SACA,mBAAA;EAAA,SACA,YAAA;IAAA,SACE,OAAA;IAAA,SACA,aAAA;IAAA,SACA,IAAA;IAAA,SACA,EAAA;IAAA,SACA,UAAA;EAAA;AAAA;AAAA,UAII,cAAA;EAAA,SACN,iBAAA;EAAA,SACA,UAAA;EAAA,SACA,OAAA,WAAkB,eAAA;EAAA,SAClB,OAAA;EA4BA;;;AAAY;AAMvB;EANW,SAtBA,QAAA,EAAU,aAAA,CAAc,sBAAA;;;;;;;WAOxB,YAAA,GAAe,mBAAA;AAAA;;;AAqBuC;KAfrD,kBAAA;;;;UAKK,cAAA;EAAA,SACN,IAAA,EAAM,kBAAA;EAAA,SACN,OAAA;EAAA,SACA,GAAA;EAAA,SACA,IAAA,EAAM,MAAM;AAAA;;AAqCkB;AAUzC;KAzCY,aAAA,GAAgB,MAAA,CAAO,cAAA,EAAgB,cAAA;;;;;;;;;;;AA4DvB;AAiB5B;UA3DiB,mBAAA;;WAEN,UAAA;EAqFA;;;;;;EAAA,SA9EA,UAAA;EA0GK;EAAA,SAxGL,MAAA,GAAS,WAAA;EAwGU;EAAA,SAtGnB,UAAA,GAAa,iBAAiB;AAAA;;;;;;;;UAUxB,kBAAA;EAwID;EAAA,SAtIL,WAAA;EA6IiB;EAAA,SA3IjB,aAAA;EAkJoC;EAAA,SAhJpC,WAAA;EA+JQ;EAAA,SA7JR,KAAA;IA6JyB,sDA3JvB,IAAA,UAmK8B;IAAA,SAjK9B,GAAA;EAAA;EA4Le;;;;;EAAA,SArLjB,iBAAA;AAAA;;;;;;;;;;;UAiBM,aAAA;EAqCyB;;;;;;;EA7BxC,IAAA;EAgDK;;;;;;;;;;;EAnCL,OAAA,CAAQ,UAAA,aAAuB,OAAA;EAwDa;;;;;EAjD5C,KAAA,IAAS,OAAA;EAwET;;;;;;;EA/DA,MAAA,CAAO,OAAA,EAAS,aAAA,GAAgB,OAAA,CAAQ,oBAAA;EA6E7B;;;;;;;EApEX,YAAA,CAAa,OAAA,EAAS,mBAAA,GAAsB,OAAA,CAAQ,0BAAA;EA2FpD;;;;;;;;EAjFA,IAAA,CAAK,OAAA,EAAS,WAAA,GAAc,OAAA,CAAQ,kBAAA;EAmGC;;;;;;;;EAzFrC,MAAA,CAAO,OAAA,EAAS,aAAA,GAAgB,OAAA,CAAQ,YAAA;EAqHnC;;;;AAAyC;;;;;EA1G9C,QAAA,CAAS,OAAA,EAAS,eAAA,GAAkB,OAAA,CAAQ,cAAA;;;;;;;;;;;;;;EAe5C,QAAA,CAAS,OAAA,EAAS,eAAA,GAAkB,OAAA,CAAQ,qBAAA;;;;;;;EAQ5C,UAAA,IAAc,OAAA,CAAQ,oBAAA;;;;;;EAOtB,cAAA,IAAkB,OAAA,CAAQ,WAAA,SAAoB,oBAAA;;;;;;EAO9C,UAAA,CAAW,KAAA,YAAiB,OAAA,UAAiB,iBAAA;;;;;;;;;;;;;;EAe7C,OAAA,CAAQ,OAAA,EAAS,cAAA,GAAiB,OAAA,CAAQ,aAAA;;;;;;;EAQ1C,UAAA,CAAW,OAAA,GAAU,iBAAA,GAAoB,OAAA;;;;;;;;EASzC,YAAA,CAAa,QAAA,YAAoB,cAAA;;;;;;;;EASjC,gBAAA,CAAiB,QAAA,YAAoB,cAAA;;;;;;;;EASrC,sBAAA,IAA0B,oCAAA;;;;;;;;;EAU1B,kBAAA,CAAmB,UAAA,WAAqB,sBAAA,KAA2B,gBAAA;;;;;;;;EASnE,IAAA,CAAK,OAAA,EAAS,WAAA,GAAc,OAAA,CAAQ,UAAA;AAAA"}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
import { M as createColorFormatter, N as formatDim, P as isVerbose } from "./command-helpers-
|
|
1
|
+
import { M as createColorFormatter, N as formatDim, P as isVerbose } from "./command-helpers-DMG0RsR1.mjs";
|
|
2
2
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
3
3
|
import { bold, cyan, dim, green, magenta, red, yellow } from "colorette";
|
|
4
4
|
//#region src/utils/formatters/verify.ts
|
|
5
|
+
/** Human-readable label for each failure reason, prefixed onto an issue's message for display. */
|
|
6
|
+
const REASON_LABEL = {
|
|
7
|
+
"not-found": "missing",
|
|
8
|
+
"not-expected": "extra",
|
|
9
|
+
"not-equal": "mismatch"
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The issue's display text: its own message (the differ's `path`), prefixed
|
|
13
|
+
* with a human label for why it's flagged. Turning `reason` into a label is
|
|
14
|
+
* this formatter's job, not the differ's — the differ's issue is data
|
|
15
|
+
* (`path` + `reason` + nodes), not prose.
|
|
16
|
+
*/
|
|
17
|
+
function formatIssueMessage(issue) {
|
|
18
|
+
return `${REASON_LABEL[issue.reason]}: ${issue.message}`;
|
|
19
|
+
}
|
|
5
20
|
/**
|
|
6
21
|
* Formats human-readable output for database verify.
|
|
7
22
|
*/
|
|
@@ -17,7 +32,16 @@ function formatVerifyOutput(result, flags) {
|
|
|
17
32
|
lines.push(`${formatDimText(` verification: ${verificationMode}`)}`);
|
|
18
33
|
lines.push(`${formatDimText(` storageHash: ${result.contract.storageHash}`)}`);
|
|
19
34
|
if (result.contract.profileHash) lines.push(`${formatDimText(` profileHash: ${result.contract.profileHash}`)}`);
|
|
20
|
-
if (result.
|
|
35
|
+
if (result.schema?.warnings && result.schema.warnings.length > 0) {
|
|
36
|
+
lines.push("");
|
|
37
|
+
lines.push(formatYellow("Schema warnings:"));
|
|
38
|
+
for (const message of result.schema.warnings) lines.push(` ${formatYellow("⚠")} ${message}`);
|
|
39
|
+
}
|
|
40
|
+
if (result.unclaimed && result.unclaimed.length > 0) {
|
|
41
|
+
lines.push("");
|
|
42
|
+
lines.push(formatYellow("Unclaimed elements (declared by no contract):"));
|
|
43
|
+
for (const name of result.unclaimed) lines.push(` ${formatYellow("⚠")} ${name}`);
|
|
44
|
+
}
|
|
21
45
|
if (result.warning) {
|
|
22
46
|
lines.push("");
|
|
23
47
|
lines.push(`${formatYellow("⚠")} ${result.warning}`);
|
|
@@ -42,6 +66,7 @@ function formatVerifyJson(result) {
|
|
|
42
66
|
...ifDefined("missingCodecs", result.missingCodecs),
|
|
43
67
|
...ifDefined("codecCoverageSkipped", result.codecCoverageSkipped),
|
|
44
68
|
...ifDefined("schema", result.schema),
|
|
69
|
+
unclaimed: result.unclaimed ?? [],
|
|
45
70
|
...ifDefined("warning", result.warning),
|
|
46
71
|
...ifDefined("meta", result.meta),
|
|
47
72
|
timings: result.timings
|
|
@@ -56,7 +81,7 @@ function formatIntrospectJson(result) {
|
|
|
56
81
|
}
|
|
57
82
|
/**
|
|
58
83
|
* Renders a schema tree structure from CoreSchemaView.
|
|
59
|
-
*
|
|
84
|
+
* Status-glyph tree styling shared with the retired verification-tree renderer.
|
|
60
85
|
*/
|
|
61
86
|
function renderSchemaTree(node, flags, options) {
|
|
62
87
|
const { isLast, prefix, useColor, formatDimText, isRoot = false } = options;
|
|
@@ -175,167 +200,35 @@ function formatIntrospectOutput(result, schemaView, flags) {
|
|
|
175
200
|
return lines.join("\n");
|
|
176
201
|
}
|
|
177
202
|
/**
|
|
178
|
-
* Renders a schema verification tree structure from SchemaVerificationNode.
|
|
179
|
-
* Similar to renderSchemaTree but for verification nodes with status-based colors and glyphs.
|
|
180
|
-
*/
|
|
181
|
-
function renderSchemaVerificationTree(node, flags, options) {
|
|
182
|
-
const { isLast, prefix, useColor, formatDimText, isRoot = false } = options;
|
|
183
|
-
const lines = [];
|
|
184
|
-
let statusGlyph = "";
|
|
185
|
-
let statusColor = (text) => text;
|
|
186
|
-
if (useColor) switch (node.status) {
|
|
187
|
-
case "pass":
|
|
188
|
-
statusGlyph = "✔";
|
|
189
|
-
statusColor = green;
|
|
190
|
-
break;
|
|
191
|
-
case "warn":
|
|
192
|
-
statusGlyph = "⚠";
|
|
193
|
-
statusColor = (text) => useColor ? yellow(text) : text;
|
|
194
|
-
break;
|
|
195
|
-
case "fail":
|
|
196
|
-
statusGlyph = "✖";
|
|
197
|
-
statusColor = red;
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
else switch (node.status) {
|
|
201
|
-
case "pass":
|
|
202
|
-
statusGlyph = "✔";
|
|
203
|
-
break;
|
|
204
|
-
case "warn":
|
|
205
|
-
statusGlyph = "⚠";
|
|
206
|
-
break;
|
|
207
|
-
case "fail":
|
|
208
|
-
statusGlyph = "✖";
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
let labelColor = (text) => text;
|
|
212
|
-
let formattedLabel = node.name;
|
|
213
|
-
if (useColor) switch (node.kind) {
|
|
214
|
-
case "contract":
|
|
215
|
-
case "schema":
|
|
216
|
-
labelColor = bold;
|
|
217
|
-
formattedLabel = labelColor(node.name);
|
|
218
|
-
break;
|
|
219
|
-
case "table": {
|
|
220
|
-
const tableMatch = node.name.match(/^table\s+(.+)$/);
|
|
221
|
-
if (tableMatch?.[1]) {
|
|
222
|
-
const tableName = tableMatch[1];
|
|
223
|
-
formattedLabel = `${dim("table")} ${cyan(tableName)}`;
|
|
224
|
-
} else formattedLabel = dim(node.name);
|
|
225
|
-
break;
|
|
226
|
-
}
|
|
227
|
-
case "columns":
|
|
228
|
-
labelColor = dim;
|
|
229
|
-
formattedLabel = labelColor(node.name);
|
|
230
|
-
break;
|
|
231
|
-
case "column": {
|
|
232
|
-
const columnMatch = node.name.match(/^([^:]+):\s*(.+)$/);
|
|
233
|
-
if (columnMatch?.[1] && columnMatch[2]) {
|
|
234
|
-
const columnName = columnMatch[1];
|
|
235
|
-
const rest = columnMatch[2];
|
|
236
|
-
const typeMatch = rest.match(/^([^\s→]+)\s*→\s*([^\s(]+)\s*(\([^)]+\))$/);
|
|
237
|
-
if (typeMatch?.[1] && typeMatch[2] && typeMatch[3]) {
|
|
238
|
-
const contractType = typeMatch[1];
|
|
239
|
-
const nativeType = typeMatch[2];
|
|
240
|
-
const nullability = typeMatch[3];
|
|
241
|
-
formattedLabel = `${cyan(columnName)}: ${contractType} → ${dim(nativeType)} ${dim(nullability)}`;
|
|
242
|
-
} else formattedLabel = `${cyan(columnName)}: ${rest}`;
|
|
243
|
-
} else formattedLabel = node.name;
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
case "type":
|
|
247
|
-
case "nullability":
|
|
248
|
-
labelColor = (text) => text;
|
|
249
|
-
formattedLabel = labelColor(node.name);
|
|
250
|
-
break;
|
|
251
|
-
case "primaryKey": {
|
|
252
|
-
const pkMatch = node.name.match(/^primary key:\s*(.+)$/);
|
|
253
|
-
if (pkMatch?.[1]) {
|
|
254
|
-
const columnNames = pkMatch[1];
|
|
255
|
-
formattedLabel = `${dim("primary key")}: ${cyan(columnNames)}`;
|
|
256
|
-
} else formattedLabel = dim(node.name);
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
case "foreignKey":
|
|
260
|
-
case "unique":
|
|
261
|
-
case "index":
|
|
262
|
-
labelColor = dim;
|
|
263
|
-
formattedLabel = labelColor(node.name);
|
|
264
|
-
break;
|
|
265
|
-
case "dependency": {
|
|
266
|
-
const dbMatch = node.name.match(/^database is\s+(.+)$/);
|
|
267
|
-
if (dbMatch?.[1]) {
|
|
268
|
-
const dbName = dbMatch[1];
|
|
269
|
-
formattedLabel = `${dim("database is")} ${cyan(dbName)}`;
|
|
270
|
-
} else {
|
|
271
|
-
const extMatch = node.name.match(/^([^\s]+)\s+(extension is enabled)$/);
|
|
272
|
-
if (extMatch?.[1] && extMatch[2]) {
|
|
273
|
-
const extName = extMatch[1];
|
|
274
|
-
const rest = extMatch[2];
|
|
275
|
-
formattedLabel = `${cyan(extName)} ${dim(rest)}`;
|
|
276
|
-
} else {
|
|
277
|
-
labelColor = magenta;
|
|
278
|
-
formattedLabel = labelColor(node.name);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
break;
|
|
282
|
-
}
|
|
283
|
-
default:
|
|
284
|
-
formattedLabel = node.name;
|
|
285
|
-
break;
|
|
286
|
-
}
|
|
287
|
-
else formattedLabel = node.name;
|
|
288
|
-
const statusGlyphColored = statusColor(statusGlyph);
|
|
289
|
-
let nodeLabel = formattedLabel;
|
|
290
|
-
if ((node.status === "fail" || node.status === "warn") && node.message && node.message.length > 0) {
|
|
291
|
-
const messageText = formatDimText(`(${node.message})`);
|
|
292
|
-
nodeLabel = `${formattedLabel} ${messageText}`;
|
|
293
|
-
}
|
|
294
|
-
if (isRoot) lines.push(`${statusGlyphColored} ${nodeLabel}`);
|
|
295
|
-
else {
|
|
296
|
-
const treePrefix = `${formatDimText(isLast ? "└" : "├")}─ `;
|
|
297
|
-
lines.push(`${prefix}${treePrefix}${statusGlyphColored} ${nodeLabel}`);
|
|
298
|
-
}
|
|
299
|
-
if (node.children && node.children.length > 0) {
|
|
300
|
-
const childPrefix = isRoot ? "" : `${prefix}${isLast ? " " : `${formatDimText("│")} `}`;
|
|
301
|
-
for (let i = 0; i < node.children.length; i++) {
|
|
302
|
-
const child = node.children[i];
|
|
303
|
-
if (!child) continue;
|
|
304
|
-
const childLines = renderSchemaVerificationTree(child, flags, {
|
|
305
|
-
isLast: i === node.children.length - 1,
|
|
306
|
-
prefix: childPrefix,
|
|
307
|
-
useColor,
|
|
308
|
-
formatDimText,
|
|
309
|
-
isRoot: false
|
|
310
|
-
});
|
|
311
|
-
lines.push(...childLines);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return lines;
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
203
|
* Formats human-readable output for database schema verification.
|
|
318
204
|
*/
|
|
319
|
-
function formatSchemaVerifyOutput(result, flags) {
|
|
205
|
+
function formatSchemaVerifyOutput(result, flags, unclaimed = []) {
|
|
320
206
|
if (flags.quiet) return "";
|
|
321
207
|
const lines = [];
|
|
322
208
|
const useColor = flags.color !== false;
|
|
323
209
|
const formatGreen = createColorFormatter(useColor, green);
|
|
324
210
|
const formatRed = createColorFormatter(useColor, red);
|
|
211
|
+
const formatYellow = createColorFormatter(useColor, yellow);
|
|
325
212
|
const formatDimText = (text) => formatDim(useColor, text);
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
formatDimText,
|
|
331
|
-
isRoot: true
|
|
332
|
-
});
|
|
333
|
-
lines.push(...treeLines);
|
|
334
|
-
if (isVerbose(flags, 1)) {
|
|
335
|
-
lines.push(`${formatDimText(` Total time: ${result.timings.total}ms`)}`);
|
|
336
|
-
lines.push(`${formatDimText(` pass=${result.schema.counts.pass} warn=${result.schema.counts.warn} fail=${result.schema.counts.fail}`)}`);
|
|
213
|
+
const issueMessages = result.schema.issues.map(formatIssueMessage);
|
|
214
|
+
if (issueMessages.length > 0) {
|
|
215
|
+
lines.push(formatRed("Schema issues:"));
|
|
216
|
+
for (const message of issueMessages) lines.push(` ${formatRed("✖")} ${message}`);
|
|
337
217
|
}
|
|
338
|
-
|
|
218
|
+
const warningMessages = (result.schema.warnings?.issues ?? []).map(formatIssueMessage);
|
|
219
|
+
if (warningMessages.length > 0) {
|
|
220
|
+
if (lines.length > 0) lines.push("");
|
|
221
|
+
lines.push(formatYellow("Schema warnings:"));
|
|
222
|
+
for (const message of warningMessages) lines.push(` ${formatYellow("⚠")} ${message}`);
|
|
223
|
+
}
|
|
224
|
+
if (unclaimed.length > 0) {
|
|
225
|
+
const strict = result.meta?.strict ?? false;
|
|
226
|
+
if (lines.length > 0) lines.push("");
|
|
227
|
+
lines.push((strict ? formatRed : formatYellow)("Unclaimed elements (declared by no contract):"));
|
|
228
|
+
for (const name of unclaimed) lines.push(` ${(strict ? formatRed : formatYellow)(strict ? "✖" : "⚠")} ${name}`);
|
|
229
|
+
}
|
|
230
|
+
if (isVerbose(flags, 1)) lines.push(`${formatDimText(` Total time: ${result.timings.total}ms`)}`);
|
|
231
|
+
if (lines.length > 0) lines.push("");
|
|
339
232
|
if (result.ok) lines.push(`${formatGreen("✔")} ${result.summary}`);
|
|
340
233
|
else {
|
|
341
234
|
const codeText = result.code ? ` (${result.code})` : "";
|
|
@@ -344,10 +237,15 @@ function formatSchemaVerifyOutput(result, flags) {
|
|
|
344
237
|
return lines.join("\n");
|
|
345
238
|
}
|
|
346
239
|
/**
|
|
347
|
-
* Formats JSON output for database schema verification.
|
|
240
|
+
* Formats JSON output for database schema verification. The unclaimed-elements
|
|
241
|
+
* list is a top-level field alongside the combined result, reported once for
|
|
242
|
+
* the whole database.
|
|
348
243
|
*/
|
|
349
|
-
function formatSchemaVerifyJson(result) {
|
|
350
|
-
return JSON.stringify(
|
|
244
|
+
function formatSchemaVerifyJson(result, unclaimed = []) {
|
|
245
|
+
return JSON.stringify({
|
|
246
|
+
...result,
|
|
247
|
+
unclaimed
|
|
248
|
+
}, null, 2);
|
|
351
249
|
}
|
|
352
250
|
/**
|
|
353
251
|
* Formats human-readable output for database sign.
|
|
@@ -381,4 +279,4 @@ function formatSignJson(result) {
|
|
|
381
279
|
//#endregion
|
|
382
280
|
export { formatSignJson as a, formatVerifyOutput as c, formatSchemaVerifyOutput as i, formatIntrospectOutput as n, formatSignOutput as o, formatSchemaVerifyJson as r, formatVerifyJson as s, formatIntrospectJson as t };
|
|
383
281
|
|
|
384
|
-
//# sourceMappingURL=verify-
|
|
282
|
+
//# sourceMappingURL=verify-Djo-Jep_.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-Djo-Jep_.mjs","names":[],"sources":["../src/utils/formatters/verify.ts"],"sourcesContent":["import type {\n CoreSchemaView,\n ExpectationFailureReason,\n IntrospectSchemaResult,\n SchemaDiffIssue,\n SchemaTreeNode,\n SignDatabaseResult,\n VerifyDatabaseResult,\n VerifyDatabaseSchemaResult,\n} from '@prisma-next/framework-components/control';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { bold, cyan, dim, green, magenta, red, yellow } from 'colorette';\nimport type { GlobalFlags } from '../global-flags';\nimport { createColorFormatter, formatDim, isVerbose } from './helpers';\n\n/** Human-readable label for each failure reason, prefixed onto an issue's message for display. */\nconst REASON_LABEL: Record<ExpectationFailureReason, string> = {\n 'not-found': 'missing',\n 'not-expected': 'extra',\n 'not-equal': 'mismatch',\n};\n\n/**\n * The issue's display text: its own message (the differ's `path`), prefixed\n * with a human label for why it's flagged. Turning `reason` into a label is\n * this formatter's job, not the differ's — the differ's issue is data\n * (`path` + `reason` + nodes), not prose.\n */\nfunction formatIssueMessage(issue: SchemaDiffIssue): string {\n return `${REASON_LABEL[issue.reason]}: ${issue.message}`;\n}\n\n// ============================================================================\n// Verify Output Formatters\n// ============================================================================\n\nexport interface DbVerifyCommandSuccessResult {\n readonly ok: true;\n readonly mode: 'full' | 'marker-only';\n readonly summary: string;\n readonly contract: VerifyDatabaseResult['contract'];\n readonly marker?: VerifyDatabaseResult['marker'];\n readonly target: VerifyDatabaseResult['target'];\n readonly missingCodecs?: VerifyDatabaseResult['missingCodecs'];\n readonly codecCoverageSkipped?: VerifyDatabaseResult['codecCoverageSkipped'];\n readonly schema?: {\n readonly summary: string;\n readonly strict: boolean;\n /**\n * Warn-graded finding messages (observed-policy drift). Informational —\n * present on a passing verify; the full-mode result summarizes them as a\n * flat message list.\n */\n readonly warnings?: readonly string[];\n };\n /**\n * Live element names no contract space declares. In full success this is\n * only ever non-empty in lenient mode — strict mode fails on it — and is\n * rendered informationally.\n */\n readonly unclaimed?: readonly string[];\n readonly warning?: string;\n readonly meta?:\n | (NonNullable<VerifyDatabaseResult['meta']> & {\n readonly schemaVerification: 'performed' | 'skipped';\n })\n | {\n readonly schemaVerification: 'performed' | 'skipped';\n };\n readonly timings: {\n readonly total: number;\n };\n}\n\n/**\n * Formats human-readable output for database verify.\n */\nexport function formatVerifyOutput(\n result: DbVerifyCommandSuccessResult,\n flags: GlobalFlags,\n): string {\n if (flags.quiet) {\n return '';\n }\n\n const lines: string[] = [];\n\n const useColor = flags.color !== false;\n const formatGreen = createColorFormatter(useColor, green);\n const formatYellow = createColorFormatter(useColor, yellow);\n const formatDimText = (text: string) => formatDim(useColor, text);\n const verificationMode =\n result.mode === 'full'\n ? `marker + schema${result.schema?.strict ? ' (strict)' : ' (tolerant)'}`\n : 'marker only (--marker-only)';\n\n lines.push(`${formatGreen('✔')} ${result.summary}`);\n lines.push(`${formatDimText(` verification: ${verificationMode}`)}`);\n lines.push(`${formatDimText(` storageHash: ${result.contract.storageHash}`)}`);\n if (result.contract.profileHash) {\n lines.push(`${formatDimText(` profileHash: ${result.contract.profileHash}`)}`);\n }\n if (result.schema?.warnings && result.schema.warnings.length > 0) {\n lines.push('');\n lines.push(formatYellow('Schema warnings:'));\n for (const message of result.schema.warnings) {\n lines.push(` ${formatYellow('⚠')} ${message}`);\n }\n }\n\n if (result.unclaimed && result.unclaimed.length > 0) {\n lines.push('');\n lines.push(formatYellow('Unclaimed elements (declared by no contract):'));\n for (const name of result.unclaimed) {\n lines.push(` ${formatYellow('⚠')} ${name}`);\n }\n }\n\n if (result.warning) {\n lines.push('');\n lines.push(`${formatYellow('⚠')} ${result.warning}`);\n }\n\n if (isVerbose(flags, 1)) {\n if (result.codecCoverageSkipped) {\n lines.push(\n `${formatDimText(' Codec coverage check skipped (helper returned no supported types)')}`,\n );\n }\n lines.push(`${formatDimText(` Total time: ${result.timings.total}ms`)}`);\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Formats JSON output for database verify.\n */\nexport function formatVerifyJson(result: DbVerifyCommandSuccessResult): string {\n const output = {\n ok: result.ok,\n summary: result.summary,\n mode: result.mode,\n contract: result.contract,\n ...ifDefined('marker', result.marker),\n target: result.target,\n ...ifDefined('missingCodecs', result.missingCodecs),\n ...ifDefined('codecCoverageSkipped', result.codecCoverageSkipped),\n ...ifDefined('schema', result.schema),\n unclaimed: result.unclaimed ?? [],\n ...ifDefined('warning', result.warning),\n ...ifDefined('meta', result.meta),\n timings: result.timings,\n };\n\n return JSON.stringify(output, null, 2);\n}\n\n/**\n * Formats JSON output for database introspection.\n */\nexport function formatIntrospectJson(result: IntrospectSchemaResult<unknown>): string {\n return JSON.stringify(result, null, 2);\n}\n\n/**\n * Renders a schema tree structure from CoreSchemaView.\n * Status-glyph tree styling shared with the retired verification-tree renderer.\n */\nfunction renderSchemaTree(\n node: SchemaTreeNode,\n flags: GlobalFlags,\n options: {\n readonly isLast: boolean;\n readonly prefix: string;\n readonly useColor: boolean;\n readonly formatDimText: (text: string) => string;\n readonly isRoot?: boolean;\n },\n): string[] {\n const { isLast, prefix, useColor, formatDimText, isRoot = false } = options;\n const lines: string[] = [];\n\n // Format node label with color based on kind (matching schema-verify style)\n let formattedLabel: string = node.label;\n\n if (useColor) {\n switch (node.kind) {\n case 'root':\n formattedLabel = bold(node.label);\n break;\n case 'entity': {\n // Parse \"table tableName\" format - color \"table\" dim, tableName cyan\n const tableMatch = node.label.match(/^table\\s+(.+)$/);\n if (tableMatch?.[1]) {\n const tableName = tableMatch[1];\n formattedLabel = `${dim('table')} ${cyan(tableName)}`;\n } else {\n // Fallback: color entire label with cyan\n formattedLabel = cyan(node.label);\n }\n break;\n }\n case 'collection': {\n // \"columns\" grouping node - dim the label\n formattedLabel = dim(node.label);\n break;\n }\n case 'field': {\n // Parse column name format: \"columnName: typeDisplay (nullability)\"\n // Color code: column name (cyan), type (default), nullability (dim)\n const columnMatch = node.label.match(/^([^:]+):\\s*(.+)$/);\n if (columnMatch?.[1] && columnMatch[2]) {\n const columnName = columnMatch[1];\n const rest = columnMatch[2];\n // Parse rest: \"typeDisplay (nullability)\"\n const typeMatch = rest.match(/^([^\\s(]+)\\s*(\\([^)]+\\))$/);\n if (typeMatch?.[1] && typeMatch[2]) {\n const typeDisplay = typeMatch[1];\n const nullability = typeMatch[2];\n formattedLabel = `${cyan(columnName)}: ${typeDisplay} ${dim(nullability)}`;\n } else {\n // Fallback if format doesn't match\n formattedLabel = `${cyan(columnName)}: ${rest}`;\n }\n } else {\n formattedLabel = node.label;\n }\n break;\n }\n case 'index': {\n // Parse index/unique constraint/primary key formats\n // \"primary key: columnName\" -> dim \"primary key\", cyan columnName\n const pkMatch = node.label.match(/^primary key:\\s*(.+)$/);\n if (pkMatch?.[1]) {\n const columnNames = pkMatch[1];\n formattedLabel = `${dim('primary key')}: ${cyan(columnNames)}`;\n } else {\n // \"unique name\" -> dim \"unique\", cyan \"name\"\n const uniqueMatch = node.label.match(/^unique\\s+(.+)$/);\n if (uniqueMatch?.[1]) {\n const name = uniqueMatch[1];\n formattedLabel = `${dim('unique')} ${cyan(name)}`;\n } else {\n // \"index name\" or \"unique index name\" -> dim label prefix, cyan name\n const indexMatch = node.label.match(/^(unique\\s+)?index\\s+(.+)$/);\n if (indexMatch?.[2]) {\n const indexPrefix = indexMatch[1] ? `${dim('unique')} ` : '';\n const name = indexMatch[2];\n formattedLabel = `${indexPrefix}${dim('index')} ${cyan(name)}`;\n } else {\n formattedLabel = dim(node.label);\n }\n }\n }\n break;\n }\n case 'dependency': {\n // Parse extension message formats similar to schema-verify\n // \"extensionName extension is enabled\" -> cyan extensionName, dim rest\n const extMatch = node.label.match(/^([^\\s]+)\\s+(extension is enabled)$/);\n if (extMatch?.[1] && extMatch[2]) {\n const extName = extMatch[1];\n const rest = extMatch[2];\n formattedLabel = `${cyan(extName)} ${dim(rest)}`;\n } else {\n // Fallback: color entire label with magenta\n formattedLabel = magenta(node.label);\n }\n break;\n }\n default:\n formattedLabel = node.label;\n break;\n }\n }\n\n // Root node renders without tree characters or prefix\n if (isRoot) {\n lines.push(formattedLabel);\n } else {\n const treeChar = isLast ? '└' : '├';\n const treePrefix = `${formatDimText(treeChar)}─ `;\n lines.push(`${prefix}${treePrefix}${formattedLabel}`);\n }\n\n // Render children if present\n if (node.children && node.children.length > 0) {\n const childPrefix = isRoot ? '' : `${prefix}${isLast ? ' ' : `${formatDimText('│')} `}`;\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (!child) continue;\n const isLastChild = i === node.children.length - 1;\n const childLines = renderSchemaTree(child, flags, {\n isLast: isLastChild,\n prefix: childPrefix,\n useColor,\n formatDimText,\n isRoot: false,\n });\n lines.push(...childLines);\n }\n }\n\n return lines;\n}\n\n/**\n * Formats human-readable output for database introspection.\n */\nexport function formatIntrospectOutput(\n result: IntrospectSchemaResult<unknown>,\n schemaView: CoreSchemaView | undefined,\n flags: GlobalFlags,\n): string {\n if (flags.quiet) {\n return '';\n }\n\n const lines: string[] = [];\n\n const useColor = flags.color !== false;\n const formatDimText = (text: string) => formatDim(useColor, text);\n\n if (schemaView) {\n // Render tree structure - root node is special (no tree characters)\n const treeLines = renderSchemaTree(schemaView.root, flags, {\n isLast: true,\n prefix: '',\n useColor,\n formatDimText,\n isRoot: true,\n });\n lines.push(...treeLines);\n } else {\n // Fallback: print summary when toSchemaView is not available\n lines.push(`✔ ${result.summary}`);\n if (isVerbose(flags, 1)) {\n lines.push(` Target: ${result.target.familyId}/${result.target.id}`);\n if (result.meta?.dbUrl) {\n lines.push(` Database: ${result.meta.dbUrl}`);\n }\n }\n }\n\n // Add timings in verbose mode\n if (isVerbose(flags, 1)) {\n lines.push(`${formatDimText(` Total time: ${result.timings.total}ms`)}`);\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Formats human-readable output for database schema verification.\n */\nexport function formatSchemaVerifyOutput(\n result: VerifyDatabaseSchemaResult,\n flags: GlobalFlags,\n unclaimed: readonly string[] = [],\n): string {\n if (flags.quiet) {\n return '';\n }\n\n const lines: string[] = [];\n\n const useColor = flags.color !== false;\n const formatGreen = createColorFormatter(useColor, green);\n const formatRed = createColorFormatter(useColor, red);\n const formatYellow = createColorFormatter(useColor, yellow);\n const formatDimText = (text: string) => formatDim(useColor, text);\n\n const issueMessages = result.schema.issues.map(formatIssueMessage);\n if (issueMessages.length > 0) {\n lines.push(formatRed('Schema issues:'));\n for (const message of issueMessages) {\n lines.push(` ${formatRed('✖')} ${message}`);\n }\n }\n\n const warningMessages = (result.schema.warnings?.issues ?? []).map(formatIssueMessage);\n if (warningMessages.length > 0) {\n if (lines.length > 0) lines.push('');\n lines.push(formatYellow('Schema warnings:'));\n for (const message of warningMessages) {\n lines.push(` ${formatYellow('⚠')} ${message}`);\n }\n }\n\n if (unclaimed.length > 0) {\n const strict = result.meta?.strict ?? false;\n if (lines.length > 0) lines.push('');\n lines.push(\n (strict ? formatRed : formatYellow)('Unclaimed elements (declared by no contract):'),\n );\n for (const name of unclaimed) {\n lines.push(` ${(strict ? formatRed : formatYellow)(strict ? '✖' : '⚠')} ${name}`);\n }\n }\n\n if (isVerbose(flags, 1)) {\n lines.push(`${formatDimText(` Total time: ${result.timings.total}ms`)}`);\n }\n\n // Blank line before summary\n if (lines.length > 0) lines.push('');\n\n // Summary line at the end: verdict with status glyph\n if (result.ok) {\n lines.push(`${formatGreen('✔')} ${result.summary}`);\n } else {\n const codeText = result.code ? ` (${result.code})` : '';\n lines.push(`${formatRed('✖')} ${result.summary}${codeText}`);\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Formats JSON output for database schema verification. The unclaimed-elements\n * list is a top-level field alongside the combined result, reported once for\n * the whole database.\n */\nexport function formatSchemaVerifyJson(\n result: VerifyDatabaseSchemaResult,\n unclaimed: readonly string[] = [],\n): string {\n return JSON.stringify({ ...result, unclaimed }, null, 2);\n}\n\n// ============================================================================\n// Sign Output Formatters\n// ============================================================================\n\n/**\n * Formats human-readable output for database sign.\n */\nexport function formatSignOutput(result: SignDatabaseResult, flags: GlobalFlags): string {\n if (flags.quiet) {\n return '';\n }\n\n const lines: string[] = [];\n\n const useColor = flags.color !== false;\n const formatGreen = createColorFormatter(useColor, green);\n const formatDimText = (text: string) => formatDim(useColor, text);\n\n if (result.ok) {\n // Main success message in white (not dimmed)\n lines.push(`${formatGreen('✔')} Database signed`);\n\n // Show from -> to hashes with clear labels\n const previousHash = result.marker.previous?.storageHash ?? 'none';\n const currentHash = result.contract.storageHash;\n\n lines.push(`${formatDimText(` from: ${previousHash}`)}`);\n lines.push(`${formatDimText(` to: ${currentHash}`)}`);\n\n if (isVerbose(flags, 1)) {\n if (result.contract.profileHash) {\n lines.push(`${formatDimText(` profileHash: ${result.contract.profileHash}`)}`);\n }\n if (result.marker.previous?.profileHash) {\n lines.push(\n `${formatDimText(` previous profileHash: ${result.marker.previous.profileHash}`)}`,\n );\n }\n lines.push(`${formatDimText(` Total time: ${result.timings.total}ms`)}`);\n }\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Formats JSON output for database sign.\n */\nexport function formatSignJson(result: SignDatabaseResult): string {\n return JSON.stringify(result, null, 2);\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/cli",
|
|
3
|
-
"version": "0.14.0-dev.
|
|
3
|
+
"version": "0.14.0-dev.50",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -9,18 +9,18 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@clack/prompts": "^1.4.0",
|
|
12
|
-
"@prisma-next/config": "0.14.0-dev.
|
|
13
|
-
"@prisma-next/config-loader": "0.14.0-dev.
|
|
14
|
-
"@prisma-next/contract": "0.14.0-dev.
|
|
15
|
-
"@prisma-next/emitter": "0.14.0-dev.
|
|
16
|
-
"@prisma-next/errors": "0.14.0-dev.
|
|
17
|
-
"@prisma-next/framework-components": "0.14.0-dev.
|
|
18
|
-
"@prisma-next/language-server": "0.14.0-dev.
|
|
19
|
-
"@prisma-next/migration-tools": "0.14.0-dev.
|
|
20
|
-
"@prisma-next/psl-parser": "0.14.0-dev.
|
|
21
|
-
"@prisma-next/psl-printer": "0.14.0-dev.
|
|
22
|
-
"@prisma-next/cli-telemetry": "0.14.0-dev.
|
|
23
|
-
"@prisma-next/utils": "0.14.0-dev.
|
|
12
|
+
"@prisma-next/config": "0.14.0-dev.50",
|
|
13
|
+
"@prisma-next/config-loader": "0.14.0-dev.50",
|
|
14
|
+
"@prisma-next/contract": "0.14.0-dev.50",
|
|
15
|
+
"@prisma-next/emitter": "0.14.0-dev.50",
|
|
16
|
+
"@prisma-next/errors": "0.14.0-dev.50",
|
|
17
|
+
"@prisma-next/framework-components": "0.14.0-dev.50",
|
|
18
|
+
"@prisma-next/language-server": "0.14.0-dev.50",
|
|
19
|
+
"@prisma-next/migration-tools": "0.14.0-dev.50",
|
|
20
|
+
"@prisma-next/psl-parser": "0.14.0-dev.50",
|
|
21
|
+
"@prisma-next/psl-printer": "0.14.0-dev.50",
|
|
22
|
+
"@prisma-next/cli-telemetry": "0.14.0-dev.50",
|
|
23
|
+
"@prisma-next/utils": "0.14.0-dev.50",
|
|
24
24
|
"arktype": "^2.2.0",
|
|
25
25
|
"ci-info": "^4.3.1",
|
|
26
26
|
"clipanion": "4.0.0-rc.4",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"wrap-ansi": "^10.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@prisma-next/sql-contract": "0.14.0-dev.
|
|
40
|
-
"@prisma-next/sql-contract-emitter": "0.14.0-dev.
|
|
41
|
-
"@prisma-next/sql-contract-ts": "0.14.0-dev.
|
|
42
|
-
"@prisma-next/sql-operations": "0.14.0-dev.
|
|
43
|
-
"@prisma-next/sql-runtime": "0.14.0-dev.
|
|
44
|
-
"@prisma-next/test-utils": "0.14.0-dev.
|
|
45
|
-
"@prisma-next/tsconfig": "0.14.0-dev.
|
|
46
|
-
"@prisma-next/tsdown": "0.14.0-dev.
|
|
39
|
+
"@prisma-next/sql-contract": "0.14.0-dev.50",
|
|
40
|
+
"@prisma-next/sql-contract-emitter": "0.14.0-dev.50",
|
|
41
|
+
"@prisma-next/sql-contract-ts": "0.14.0-dev.50",
|
|
42
|
+
"@prisma-next/sql-operations": "0.14.0-dev.50",
|
|
43
|
+
"@prisma-next/sql-runtime": "0.14.0-dev.50",
|
|
44
|
+
"@prisma-next/test-utils": "0.14.0-dev.50",
|
|
45
|
+
"@prisma-next/tsconfig": "0.14.0-dev.50",
|
|
46
|
+
"@prisma-next/tsdown": "0.14.0-dev.50",
|
|
47
47
|
"@types/node": "25.9.1",
|
|
48
48
|
"tsdown": "0.22.1",
|
|
49
49
|
"typescript": "5.9.3",
|