@prisma-next/cli 0.3.0-pr.99.6 → 0.3.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/LICENSE +201 -0
- package/README.md +381 -128
- package/dist/agent-skill-mongo.md +106 -0
- package/dist/agent-skill-postgres.md +106 -0
- package/dist/cli-errors-BDCYR5ap.mjs +4 -0
- package/dist/cli-errors-DStABy9d.d.mts +3 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.js +1 -2910
- package/dist/cli.mjs +261 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/client-DiUkJAeN.mjs +987 -0
- package/dist/client-DiUkJAeN.mjs.map +1 -0
- package/dist/commands/contract-emit.d.mts +7 -0
- package/dist/commands/contract-emit.d.mts.map +1 -0
- package/dist/commands/contract-emit.mjs +9 -0
- package/dist/commands/contract-infer.d.mts +7 -0
- package/dist/commands/contract-infer.d.mts.map +1 -0
- package/dist/commands/contract-infer.mjs +10 -0
- package/dist/commands/db-init.d.mts +7 -0
- package/dist/commands/db-init.d.mts.map +1 -0
- package/dist/commands/db-init.mjs +126 -0
- package/dist/commands/db-init.mjs.map +1 -0
- package/dist/commands/db-schema.d.mts +7 -0
- package/dist/commands/db-schema.d.mts.map +1 -0
- package/dist/commands/db-schema.mjs +56 -0
- package/dist/commands/db-schema.mjs.map +1 -0
- package/dist/commands/db-sign.d.mts +7 -0
- package/dist/commands/db-sign.d.mts.map +1 -0
- package/dist/commands/db-sign.mjs +137 -0
- package/dist/commands/db-sign.mjs.map +1 -0
- package/dist/commands/db-update.d.mts +7 -0
- package/dist/commands/db-update.d.mts.map +1 -0
- package/dist/commands/db-update.mjs +123 -0
- package/dist/commands/db-update.mjs.map +1 -0
- package/dist/commands/db-verify.d.mts +7 -0
- package/dist/commands/db-verify.d.mts.map +1 -0
- package/dist/commands/db-verify.mjs +323 -0
- package/dist/commands/db-verify.mjs.map +1 -0
- package/dist/commands/migration-apply.d.mts +36 -0
- package/dist/commands/migration-apply.d.mts.map +1 -0
- package/dist/commands/migration-apply.mjs +245 -0
- package/dist/commands/migration-apply.mjs.map +1 -0
- package/dist/commands/migration-new.d.mts +8 -0
- package/dist/commands/migration-new.d.mts.map +1 -0
- package/dist/commands/migration-new.mjs +152 -0
- package/dist/commands/migration-new.mjs.map +1 -0
- package/dist/commands/migration-plan.d.mts +47 -0
- package/dist/commands/migration-plan.d.mts.map +1 -0
- package/dist/commands/migration-plan.mjs +313 -0
- package/dist/commands/migration-plan.mjs.map +1 -0
- package/dist/commands/migration-ref.d.mts +43 -0
- package/dist/commands/migration-ref.d.mts.map +1 -0
- package/dist/commands/migration-ref.mjs +195 -0
- package/dist/commands/migration-ref.mjs.map +1 -0
- package/dist/commands/migration-show.d.mts +28 -0
- package/dist/commands/migration-show.d.mts.map +1 -0
- package/dist/commands/migration-show.mjs +140 -0
- package/dist/commands/migration-show.mjs.map +1 -0
- package/dist/commands/migration-status.d.mts +86 -0
- package/dist/commands/migration-status.d.mts.map +1 -0
- package/dist/commands/migration-status.mjs +9 -0
- package/dist/commands/migration-verify.d.mts +16 -0
- package/dist/commands/migration-verify.d.mts.map +1 -0
- package/dist/commands/migration-verify.mjs +110 -0
- package/dist/commands/migration-verify.mjs.map +1 -0
- package/dist/config-loader-C4VXKl8f.mjs +43 -0
- package/dist/config-loader-C4VXKl8f.mjs.map +1 -0
- package/dist/{config-loader.d.ts → config-loader.d.mts} +8 -3
- package/dist/config-loader.d.mts.map +1 -0
- package/dist/config-loader.mjs +3 -0
- package/dist/contract-emit-D2wDXfyo.mjs +191 -0
- package/dist/contract-emit-D2wDXfyo.mjs.map +1 -0
- package/dist/contract-emit-Zm_sd1wQ.mjs +112 -0
- package/dist/contract-emit-Zm_sd1wQ.mjs.map +1 -0
- package/dist/contract-emit-kN-IkKTE.mjs +6 -0
- package/dist/contract-enrichment-CGW6mm-E.mjs +79 -0
- package/dist/contract-enrichment-CGW6mm-E.mjs.map +1 -0
- package/dist/contract-infer-DozZT511.mjs +90 -0
- package/dist/contract-infer-DozZT511.mjs.map +1 -0
- package/dist/exports/config-types.d.mts +2 -0
- package/dist/exports/config-types.mjs +3 -0
- package/dist/exports/control-api.d.mts +624 -0
- package/dist/exports/control-api.d.mts.map +1 -0
- package/dist/exports/control-api.mjs +8 -0
- package/dist/{load-ts-contract.d.ts → exports/index.d.mts} +12 -7
- package/dist/exports/index.d.mts.map +1 -0
- package/dist/exports/index.mjs +142 -0
- package/dist/exports/index.mjs.map +1 -0
- package/dist/extract-operation-statements-DZUJNmL3.mjs +13 -0
- package/dist/extract-operation-statements-DZUJNmL3.mjs.map +1 -0
- package/dist/extract-sql-ddl-DDMX-9mz.mjs +26 -0
- package/dist/extract-sql-ddl-DDMX-9mz.mjs.map +1 -0
- package/dist/framework-components-BAsliT4V.mjs +59 -0
- package/dist/framework-components-BAsliT4V.mjs.map +1 -0
- package/dist/init-6Pvm_esG.mjs +430 -0
- package/dist/init-6Pvm_esG.mjs.map +1 -0
- package/dist/inspect-live-schema-BYnhztxZ.mjs +91 -0
- package/dist/inspect-live-schema-BYnhztxZ.mjs.map +1 -0
- package/dist/migration-command-scaffold-CntCcntR.mjs +105 -0
- package/dist/migration-command-scaffold-CntCcntR.mjs.map +1 -0
- package/dist/migration-status-CJANY4yr.mjs +1583 -0
- package/dist/migration-status-CJANY4yr.mjs.map +1 -0
- package/dist/migrations-DTZBYXm1.mjs +173 -0
- package/dist/migrations-DTZBYXm1.mjs.map +1 -0
- package/dist/progress-adapter-B-YvmcDu.mjs +43 -0
- package/dist/progress-adapter-B-YvmcDu.mjs.map +1 -0
- package/dist/quick-reference-mongo.md +93 -0
- package/dist/quick-reference-postgres.md +91 -0
- package/dist/result-handler-oK_vA-Fn.mjs +697 -0
- package/dist/result-handler-oK_vA-Fn.mjs.map +1 -0
- package/dist/terminal-ui-C5k88MmW.mjs +274 -0
- package/dist/terminal-ui-C5k88MmW.mjs.map +1 -0
- package/dist/validate-contract-deps-esa-VQ0h.mjs +37 -0
- package/dist/validate-contract-deps-esa-VQ0h.mjs.map +1 -0
- package/dist/verify-DlFQ2FOw.mjs +385 -0
- package/dist/verify-DlFQ2FOw.mjs.map +1 -0
- package/package.json +87 -40
- package/src/cli.ts +118 -58
- package/src/commands/contract-emit.ts +101 -78
- package/src/commands/contract-infer-paths.ts +32 -0
- package/src/commands/contract-infer.ts +143 -0
- package/src/commands/db-init.ts +97 -219
- package/src/commands/db-schema.ts +77 -0
- package/src/commands/db-sign.ts +46 -73
- package/src/commands/db-update.ts +236 -0
- package/src/commands/db-verify.ts +409 -119
- package/src/commands/init/detect-package-manager.ts +47 -0
- package/src/commands/init/index.ts +21 -0
- package/src/commands/init/init.ts +203 -0
- package/src/commands/init/templates/agent-skill-mongo.md +106 -0
- package/src/commands/init/templates/agent-skill-postgres.md +106 -0
- package/src/commands/init/templates/agent-skill.ts +19 -0
- package/src/commands/init/templates/code-templates.ts +168 -0
- package/src/commands/init/templates/quick-reference-mongo.md +93 -0
- package/src/commands/init/templates/quick-reference-postgres.md +91 -0
- package/src/commands/init/templates/quick-reference.ts +19 -0
- package/src/commands/init/templates/render.ts +20 -0
- package/src/commands/init/templates/tsconfig.ts +35 -0
- package/src/commands/inspect-live-schema.ts +170 -0
- package/src/commands/migration-apply.ts +427 -0
- package/src/commands/migration-new.ts +260 -0
- package/src/commands/migration-plan.ts +519 -0
- package/src/commands/migration-ref.ts +305 -0
- package/src/commands/migration-show.ts +246 -0
- package/src/commands/migration-status.ts +864 -0
- package/src/commands/migration-verify.ts +180 -0
- package/src/config-loader.ts +13 -3
- package/src/control-api/client.ts +205 -183
- package/src/control-api/contract-enrichment.ts +119 -0
- package/src/control-api/errors.ts +9 -0
- package/src/control-api/operations/contract-emit.ts +181 -0
- package/src/control-api/operations/db-init.ts +53 -49
- package/src/control-api/operations/db-update.ts +220 -0
- package/src/control-api/operations/extract-operation-statements.ts +14 -0
- package/src/control-api/operations/extract-sql-ddl.ts +47 -0
- package/src/control-api/operations/migration-apply.ts +191 -0
- package/src/control-api/operations/migration-helpers.ts +49 -0
- package/src/control-api/types.ts +274 -52
- package/src/exports/config-types.ts +4 -3
- package/src/exports/control-api.ts +15 -5
- package/src/load-ts-contract.ts +30 -19
- package/src/utils/cli-errors.ts +14 -8
- package/src/utils/command-helpers.ts +302 -3
- package/src/utils/formatters/emit.ts +67 -0
- package/src/utils/formatters/errors.ts +82 -0
- package/src/utils/formatters/graph-migration-mapper.ts +240 -0
- package/src/utils/formatters/graph-render.ts +1323 -0
- package/src/utils/formatters/graph-types.ts +120 -0
- package/src/utils/formatters/help.ts +380 -0
- package/src/utils/formatters/helpers.ts +28 -0
- package/src/utils/formatters/migrations.ts +346 -0
- package/src/utils/formatters/styled.ts +212 -0
- package/src/utils/formatters/verify.ts +621 -0
- package/src/utils/framework-components.ts +13 -10
- package/src/utils/global-flags.ts +41 -23
- package/src/utils/migration-command-scaffold.ts +184 -0
- package/src/utils/migration-types.ts +12 -0
- package/src/utils/progress-adapter.ts +18 -29
- package/src/utils/result-handler.ts +12 -13
- package/src/utils/shutdown.ts +92 -0
- package/src/utils/suggest-command.ts +31 -0
- package/src/utils/terminal-ui.ts +276 -0
- package/src/utils/validate-contract-deps.ts +49 -0
- package/dist/chunk-AGOTG4L3.js +0 -965
- package/dist/chunk-AGOTG4L3.js.map +0 -1
- package/dist/chunk-HLLI4YL7.js +0 -180
- package/dist/chunk-HLLI4YL7.js.map +0 -1
- package/dist/chunk-HWYQOCAJ.js +0 -47
- package/dist/chunk-HWYQOCAJ.js.map +0 -1
- package/dist/chunk-VG2R7DGF.js +0 -735
- package/dist/chunk-VG2R7DGF.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/contract-emit.d.ts +0 -3
- package/dist/commands/contract-emit.d.ts.map +0 -1
- package/dist/commands/contract-emit.js +0 -10
- package/dist/commands/contract-emit.js.map +0 -1
- package/dist/commands/db-init.d.ts +0 -3
- package/dist/commands/db-init.d.ts.map +0 -1
- package/dist/commands/db-init.js +0 -257
- package/dist/commands/db-init.js.map +0 -1
- package/dist/commands/db-introspect.d.ts +0 -3
- package/dist/commands/db-introspect.d.ts.map +0 -1
- package/dist/commands/db-introspect.js +0 -155
- package/dist/commands/db-introspect.js.map +0 -1
- package/dist/commands/db-schema-verify.d.ts +0 -3
- package/dist/commands/db-schema-verify.d.ts.map +0 -1
- package/dist/commands/db-schema-verify.js +0 -171
- package/dist/commands/db-schema-verify.js.map +0 -1
- package/dist/commands/db-sign.d.ts +0 -3
- package/dist/commands/db-sign.d.ts.map +0 -1
- package/dist/commands/db-sign.js +0 -195
- package/dist/commands/db-sign.js.map +0 -1
- package/dist/commands/db-verify.d.ts +0 -3
- package/dist/commands/db-verify.d.ts.map +0 -1
- package/dist/commands/db-verify.js +0 -193
- package/dist/commands/db-verify.js.map +0 -1
- package/dist/config-loader.d.ts.map +0 -1
- package/dist/config-loader.js +0 -7
- package/dist/config-loader.js.map +0 -1
- package/dist/control-api/client.d.ts +0 -13
- package/dist/control-api/client.d.ts.map +0 -1
- package/dist/control-api/operations/db-init.d.ts +0 -29
- package/dist/control-api/operations/db-init.d.ts.map +0 -1
- package/dist/control-api/types.d.ts +0 -387
- package/dist/control-api/types.d.ts.map +0 -1
- package/dist/exports/config-types.d.ts +0 -3
- package/dist/exports/config-types.d.ts.map +0 -1
- package/dist/exports/config-types.js +0 -6
- package/dist/exports/config-types.js.map +0 -1
- package/dist/exports/control-api.d.ts +0 -13
- package/dist/exports/control-api.d.ts.map +0 -1
- package/dist/exports/control-api.js +0 -7
- package/dist/exports/control-api.js.map +0 -1
- package/dist/exports/index.d.ts +0 -4
- package/dist/exports/index.d.ts.map +0 -1
- package/dist/exports/index.js +0 -176
- package/dist/exports/index.js.map +0 -1
- package/dist/load-ts-contract.d.ts.map +0 -1
- package/dist/utils/cli-errors.d.ts +0 -7
- package/dist/utils/cli-errors.d.ts.map +0 -1
- package/dist/utils/command-helpers.d.ts +0 -12
- package/dist/utils/command-helpers.d.ts.map +0 -1
- package/dist/utils/framework-components.d.ts +0 -70
- package/dist/utils/framework-components.d.ts.map +0 -1
- package/dist/utils/global-flags.d.ts +0 -25
- package/dist/utils/global-flags.d.ts.map +0 -1
- package/dist/utils/output.d.ts +0 -142
- package/dist/utils/output.d.ts.map +0 -1
- package/dist/utils/progress-adapter.d.ts +0 -26
- package/dist/utils/progress-adapter.d.ts.map +0 -1
- package/dist/utils/result-handler.d.ts +0 -15
- package/dist/utils/result-handler.d.ts.map +0 -1
- package/src/commands/db-introspect.ts +0 -227
- package/src/commands/db-schema-verify.ts +0 -238
- package/src/utils/output.ts +0 -1471
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import type { OperationDescriptor } from '@prisma-next/framework-components/control';
|
|
2
|
+
import { attestMigration, verifyMigration } from '@prisma-next/migration-tools/attestation';
|
|
3
|
+
import { readMigrationPackage, writeMigrationOps } from '@prisma-next/migration-tools/io';
|
|
4
|
+
import { evaluateMigrationTs, hasMigrationTs } from '@prisma-next/migration-tools/migration-ts';
|
|
5
|
+
import { MigrationToolsError } from '@prisma-next/migration-tools/types';
|
|
6
|
+
import { ifDefined } from '@prisma-next/utils/defined';
|
|
7
|
+
import { notOk, ok, type Result } from '@prisma-next/utils/result';
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import { loadConfig } from '../config-loader';
|
|
10
|
+
import {
|
|
11
|
+
CliStructuredError,
|
|
12
|
+
errorRuntime,
|
|
13
|
+
errorTargetMigrationNotSupported,
|
|
14
|
+
errorUnexpected,
|
|
15
|
+
} from '../utils/cli-errors';
|
|
16
|
+
import {
|
|
17
|
+
addGlobalOptions,
|
|
18
|
+
getTargetMigrations,
|
|
19
|
+
setCommandDescriptions,
|
|
20
|
+
setCommandExamples,
|
|
21
|
+
} from '../utils/command-helpers';
|
|
22
|
+
import { formatMigrationVerifyCommandOutput } from '../utils/formatters/migrations';
|
|
23
|
+
import { formatStyledHeader } from '../utils/formatters/styled';
|
|
24
|
+
import { assertFrameworkComponentsCompatible } from '../utils/framework-components';
|
|
25
|
+
import type { CommonCommandOptions } from '../utils/global-flags';
|
|
26
|
+
import { type GlobalFlags, parseGlobalFlags } from '../utils/global-flags';
|
|
27
|
+
import { handleResult } from '../utils/result-handler';
|
|
28
|
+
import { TerminalUI } from '../utils/terminal-ui';
|
|
29
|
+
|
|
30
|
+
interface MigrationVerifyOptions extends CommonCommandOptions {
|
|
31
|
+
readonly dir: string;
|
|
32
|
+
readonly config?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface MigrationVerifyResult {
|
|
36
|
+
readonly ok: boolean;
|
|
37
|
+
readonly status: 'verified' | 'attested';
|
|
38
|
+
readonly dir: string;
|
|
39
|
+
readonly migrationId?: string;
|
|
40
|
+
readonly storedMigrationId?: string;
|
|
41
|
+
readonly computedMigrationId?: string;
|
|
42
|
+
readonly summary: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function executeMigrationVerifyCommand(
|
|
46
|
+
options: MigrationVerifyOptions,
|
|
47
|
+
flags: GlobalFlags,
|
|
48
|
+
ui: TerminalUI,
|
|
49
|
+
): Promise<Result<MigrationVerifyResult, CliStructuredError>> {
|
|
50
|
+
const dir = options.dir;
|
|
51
|
+
|
|
52
|
+
if (!flags.json && !flags.quiet) {
|
|
53
|
+
const header = formatStyledHeader({
|
|
54
|
+
command: 'migration verify',
|
|
55
|
+
description: 'Verify migration package integrity',
|
|
56
|
+
details: [{ label: 'dir', value: dir }],
|
|
57
|
+
flags,
|
|
58
|
+
});
|
|
59
|
+
ui.stderr(header);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
// If migration.ts exists, always evaluate and resolve to ops.json.
|
|
64
|
+
// This ensures ops.json is always fresh relative to migration.ts.
|
|
65
|
+
if (await hasMigrationTs(dir)) {
|
|
66
|
+
const pkg = await readMigrationPackage(dir);
|
|
67
|
+
const descriptors = await evaluateMigrationTs(dir);
|
|
68
|
+
|
|
69
|
+
const config = await loadConfig(options.config);
|
|
70
|
+
const migrations = getTargetMigrations(config.target);
|
|
71
|
+
if (!migrations?.resolveDescriptors) {
|
|
72
|
+
throw errorTargetMigrationNotSupported({
|
|
73
|
+
why: `Target "${config.target.targetId}" does not implement resolveDescriptors; cannot verify a migration package that uses migration.ts`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const frameworkComponents = assertFrameworkComponentsCompatible(
|
|
78
|
+
config.family.familyId,
|
|
79
|
+
config.target.targetId,
|
|
80
|
+
[config.target, config.adapter, ...(config.extensionPacks ?? [])],
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const resolvedOps = migrations.resolveDescriptors(descriptors as OperationDescriptor[], {
|
|
84
|
+
fromContract: pkg.manifest.fromContract,
|
|
85
|
+
toContract: pkg.manifest.toContract,
|
|
86
|
+
frameworkComponents,
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
await writeMigrationOps(dir, resolvedOps);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Now verify/attest with the (potentially updated) ops.json
|
|
93
|
+
const result = await verifyMigration(dir);
|
|
94
|
+
|
|
95
|
+
if (result.ok) {
|
|
96
|
+
return ok({
|
|
97
|
+
ok: true,
|
|
98
|
+
status: 'verified',
|
|
99
|
+
dir,
|
|
100
|
+
...ifDefined('migrationId', result.storedMigrationId),
|
|
101
|
+
...ifDefined('storedMigrationId', result.storedMigrationId),
|
|
102
|
+
...ifDefined('computedMigrationId', result.computedMigrationId),
|
|
103
|
+
summary: 'Migration package verified — migrationId matches',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (result.reason === 'draft') {
|
|
108
|
+
const migrationId = await attestMigration(dir);
|
|
109
|
+
return ok({
|
|
110
|
+
ok: true,
|
|
111
|
+
status: 'attested',
|
|
112
|
+
dir,
|
|
113
|
+
migrationId,
|
|
114
|
+
summary: `Draft migration attested with migrationId: ${migrationId}`,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Mismatch — ops.json was just rewritten by migration.ts evaluation above,
|
|
119
|
+
// so this means the stored migrationId is stale. Re-attest.
|
|
120
|
+
const migrationId = await attestMigration(dir);
|
|
121
|
+
return ok({
|
|
122
|
+
ok: true,
|
|
123
|
+
status: 'attested',
|
|
124
|
+
dir,
|
|
125
|
+
migrationId,
|
|
126
|
+
summary: `Migration re-attested with migrationId: ${migrationId}`,
|
|
127
|
+
});
|
|
128
|
+
} catch (error) {
|
|
129
|
+
if (CliStructuredError.is(error)) {
|
|
130
|
+
return notOk(error);
|
|
131
|
+
}
|
|
132
|
+
if (MigrationToolsError.is(error)) {
|
|
133
|
+
return notOk(
|
|
134
|
+
errorRuntime(error.message, {
|
|
135
|
+
why: error.why,
|
|
136
|
+
fix: error.fix,
|
|
137
|
+
meta: { code: error.code, ...(error.details ?? {}) },
|
|
138
|
+
}),
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
return notOk(
|
|
142
|
+
errorUnexpected(error instanceof Error ? error.message : String(error), {
|
|
143
|
+
why: `Failed to verify migration: ${error instanceof Error ? error.message : String(error)}`,
|
|
144
|
+
}),
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function createMigrationVerifyCommand(): Command {
|
|
150
|
+
const command = new Command('verify');
|
|
151
|
+
setCommandDescriptions(
|
|
152
|
+
command,
|
|
153
|
+
'Verify a migration package migrationId',
|
|
154
|
+
'Recomputes the content-addressed migrationId for a migration package and compares\n' +
|
|
155
|
+
'it against the stored value. Draft migrations (migrationId: null) are automatically\n' +
|
|
156
|
+
'attested. If migration.ts exists, it is always re-evaluated and ops.json is refreshed.',
|
|
157
|
+
);
|
|
158
|
+
setCommandExamples(command, ['prisma-next migration verify --dir migrations/20250101-add-users']);
|
|
159
|
+
addGlobalOptions(command)
|
|
160
|
+
.requiredOption('--dir <path>', 'Path to the migration package directory')
|
|
161
|
+
.option('--config <path>', 'Path to prisma-next.config.ts (required when migration.ts exists)')
|
|
162
|
+
.action(async (options: MigrationVerifyOptions) => {
|
|
163
|
+
const flags = parseGlobalFlags(options);
|
|
164
|
+
const ui = new TerminalUI({ color: flags.color, interactive: flags.interactive });
|
|
165
|
+
|
|
166
|
+
const result = await executeMigrationVerifyCommand(options, flags, ui);
|
|
167
|
+
|
|
168
|
+
const exitCode = handleResult(result, flags, ui, (verifyResult) => {
|
|
169
|
+
if (flags.json) {
|
|
170
|
+
ui.output(JSON.stringify(verifyResult, null, 2));
|
|
171
|
+
} else if (!flags.quiet) {
|
|
172
|
+
ui.log(formatMigrationVerifyCommandOutput(verifyResult, flags));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
process.exit(exitCode);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
return command;
|
|
180
|
+
}
|
package/src/config-loader.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { dirname, resolve } from 'node:path';
|
|
2
|
-
import type { PrismaNextConfig } from '@prisma-next/
|
|
3
|
-
import { validateConfig } from '@prisma-next/
|
|
4
|
-
import {
|
|
2
|
+
import type { PrismaNextConfig } from '@prisma-next/config/config-types';
|
|
3
|
+
import { ConfigValidationError, validateConfig } from '@prisma-next/config/config-validation';
|
|
4
|
+
import {
|
|
5
|
+
errorConfigFileNotFound,
|
|
6
|
+
errorConfigValidation,
|
|
7
|
+
errorUnexpected,
|
|
8
|
+
} from '@prisma-next/errors/control';
|
|
5
9
|
import { loadConfig as loadConfigC12 } from 'c12';
|
|
6
10
|
|
|
7
11
|
/**
|
|
@@ -44,6 +48,12 @@ export async function loadConfig(configPath?: string): Promise<PrismaNextConfig>
|
|
|
44
48
|
|
|
45
49
|
return result.config;
|
|
46
50
|
} catch (error) {
|
|
51
|
+
if (error instanceof ConfigValidationError) {
|
|
52
|
+
throw errorConfigValidation(error.field, {
|
|
53
|
+
why: error.why,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
47
57
|
// Re-throw structured errors as-is
|
|
48
58
|
if (
|
|
49
59
|
error instanceof Error &&
|