@prisma-next/core-control-plane 0.3.0-dev.4 → 0.3.0-dev.6

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.
Files changed (49) hide show
  1. package/dist/config-types.d.ts +68 -0
  2. package/dist/config-types.d.ts.map +1 -0
  3. package/dist/config-validation.d.ts +10 -0
  4. package/dist/config-validation.d.ts.map +1 -0
  5. package/dist/emission/canonicalization.d.ts +6 -0
  6. package/dist/emission/canonicalization.d.ts.map +1 -0
  7. package/dist/emission/emit.d.ts +5 -0
  8. package/dist/emission/emit.d.ts.map +1 -0
  9. package/dist/emission/hashing.d.ts +17 -0
  10. package/dist/emission/hashing.d.ts.map +1 -0
  11. package/dist/emission/types.d.ts +16 -0
  12. package/dist/emission/types.d.ts.map +1 -0
  13. package/dist/errors.d.ts +183 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/exports/config-types.d.ts +3 -70
  16. package/dist/exports/config-types.d.ts.map +1 -0
  17. package/dist/exports/config-validation.d.ts +2 -18
  18. package/dist/exports/config-validation.d.ts.map +1 -0
  19. package/dist/exports/emission.d.ts +5 -42
  20. package/dist/exports/emission.d.ts.map +1 -0
  21. package/dist/exports/errors.d.ts +3 -184
  22. package/dist/exports/errors.d.ts.map +1 -0
  23. package/dist/exports/schema-view.d.ts +2 -87
  24. package/dist/exports/schema-view.d.ts.map +1 -0
  25. package/dist/exports/types.d.ts +2 -589
  26. package/dist/exports/types.d.ts.map +1 -0
  27. package/dist/migrations.d.ts +190 -0
  28. package/dist/migrations.d.ts.map +1 -0
  29. package/dist/schema-view.d.ts +86 -0
  30. package/dist/schema-view.d.ts.map +1 -0
  31. package/dist/types.d.ts +400 -0
  32. package/dist/types.d.ts.map +1 -0
  33. package/package.json +7 -6
  34. package/src/config-types.ts +157 -0
  35. package/src/config-validation.ts +270 -0
  36. package/src/emission/canonicalization.ts +253 -0
  37. package/src/emission/emit.ts +118 -0
  38. package/src/emission/hashing.ts +57 -0
  39. package/src/emission/types.ts +17 -0
  40. package/src/errors.ts +426 -0
  41. package/src/exports/config-types.ts +5 -0
  42. package/src/exports/config-validation.ts +1 -0
  43. package/src/exports/emission.ts +6 -0
  44. package/src/exports/errors.ts +22 -0
  45. package/src/exports/schema-view.ts +1 -0
  46. package/src/exports/types.ts +37 -0
  47. package/src/migrations.ts +247 -0
  48. package/src/schema-view.ts +95 -0
  49. package/src/types.ts +512 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@prisma-next/core-control-plane",
3
- "version": "0.3.0-dev.4",
3
+ "version": "0.3.0-dev.6",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Control plane domain actions, config types, validation, and error factories for Prisma Next",
7
7
  "dependencies": {
8
8
  "arktype": "^2.1.26",
9
9
  "prettier": "^3.3.3",
10
- "@prisma-next/contract": "0.3.0-dev.4",
11
- "@prisma-next/utils": "0.3.0-dev.4",
12
- "@prisma-next/operations": "0.3.0-dev.4"
10
+ "@prisma-next/contract": "0.3.0-dev.6",
11
+ "@prisma-next/operations": "0.3.0-dev.6",
12
+ "@prisma-next/utils": "0.3.0-dev.6"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@vitest/coverage-v8": "4.0.16",
@@ -19,7 +19,8 @@
19
19
  "@prisma-next/test-utils": "0.0.1"
20
20
  },
21
21
  "files": [
22
- "dist"
22
+ "dist",
23
+ "src"
23
24
  ],
24
25
  "exports": {
25
26
  "./config-types": {
@@ -48,7 +49,7 @@
48
49
  }
49
50
  },
50
51
  "scripts": {
51
- "build": "tsup --config tsup.config.ts",
52
+ "build": "tsup --config tsup.config.ts && tsc --project tsconfig.build.json",
52
53
  "test": "vitest run --passWithNoTests",
53
54
  "test:coverage": "vitest run --coverage --passWithNoTests",
54
55
  "typecheck": "tsc --project tsconfig.json --noEmit",
@@ -0,0 +1,157 @@
1
+ import { dirname, join } from 'node:path';
2
+ import { type } from 'arktype';
3
+ import type {
4
+ ControlAdapterDescriptor,
5
+ ControlDriverDescriptor,
6
+ ControlDriverInstance,
7
+ ControlExtensionDescriptor,
8
+ ControlFamilyDescriptor,
9
+ ControlTargetDescriptor,
10
+ } from './types';
11
+
12
+ /**
13
+ * Type alias for CLI driver instances.
14
+ * Uses string for both family and target IDs for maximum flexibility.
15
+ */
16
+ export type CliDriver = ControlDriverInstance<string, string>;
17
+
18
+ /**
19
+ * Contract configuration specifying source and artifact locations.
20
+ */
21
+ export interface ContractConfig {
22
+ /**
23
+ * Contract source. Can be a value or a function that returns a value (sync or async).
24
+ * If a function, it will be called to resolve the contract.
25
+ */
26
+ readonly source: unknown | (() => unknown | Promise<unknown>);
27
+ /**
28
+ * Path to contract.json artifact. Defaults to 'src/prisma/contract.json'.
29
+ * This is the canonical location where other CLI commands can find the contract JSON.
30
+ */
31
+ readonly output?: string;
32
+ /**
33
+ * Path to contract.d.ts artifact. Defaults to output with .d.ts extension.
34
+ * If output ends with .json, replaces .json with .d.ts.
35
+ * Otherwise, appends .d.ts to the directory containing output.
36
+ */
37
+ readonly types?: string;
38
+ }
39
+
40
+ /**
41
+ * Configuration for Prisma Next CLI.
42
+ * Uses Control*Descriptor types for type-safe wiring with compile-time compatibility checks.
43
+ *
44
+ * @template TFamilyId - The family ID (e.g., 'sql', 'document')
45
+ * @template TTargetId - The target ID (e.g., 'postgres', 'mysql')
46
+ */
47
+ export interface PrismaNextConfig<
48
+ TFamilyId extends string = string,
49
+ TTargetId extends string = string,
50
+ > {
51
+ readonly family: ControlFamilyDescriptor<TFamilyId>;
52
+ readonly target: ControlTargetDescriptor<TFamilyId, TTargetId>;
53
+ readonly adapter: ControlAdapterDescriptor<TFamilyId, TTargetId>;
54
+ readonly extensionPacks?: readonly ControlExtensionDescriptor<TFamilyId, TTargetId>[];
55
+ /**
56
+ * Driver descriptor for DB-connected CLI commands.
57
+ * Required for DB-connected commands (e.g., db verify).
58
+ * Optional for commands that don't need database access (e.g., emit).
59
+ */
60
+ readonly driver?: ControlDriverDescriptor<TFamilyId, TTargetId>;
61
+ readonly db?: {
62
+ readonly url?: string;
63
+ };
64
+ /**
65
+ * Contract configuration. Specifies source and artifact locations.
66
+ * Required for emit command; optional for other commands that only read artifacts.
67
+ */
68
+ readonly contract?: ContractConfig;
69
+ }
70
+
71
+ /**
72
+ * Arktype schema for ContractConfig validation.
73
+ * Validates that source is present and output/types are strings when provided.
74
+ */
75
+ const ContractConfigSchema = type({
76
+ source: 'unknown', // Can be value or function - runtime check needed
77
+ 'output?': 'string',
78
+ 'types?': 'string',
79
+ });
80
+
81
+ /**
82
+ * Arktype schema for PrismaNextConfig validation.
83
+ * Note: This validates structure only. Descriptor objects (family, target, adapter) are validated separately.
84
+ */
85
+ const PrismaNextConfigSchema = type({
86
+ family: 'unknown', // ControlFamilyDescriptor - validated separately
87
+ target: 'unknown', // ControlTargetDescriptor - validated separately
88
+ adapter: 'unknown', // ControlAdapterDescriptor - validated separately
89
+ 'extensionPacks?': 'unknown[]',
90
+ 'driver?': 'unknown', // ControlDriverDescriptor - validated separately (optional)
91
+ 'db?': 'unknown',
92
+ 'contract?': ContractConfigSchema,
93
+ });
94
+
95
+ /**
96
+ * Helper function to define a Prisma Next config.
97
+ * Validates and normalizes the config using Arktype, then returns the normalized IR.
98
+ *
99
+ * Normalization:
100
+ * - contract.output defaults to 'src/prisma/contract.json' if missing
101
+ * - contract.types defaults to output with .d.ts extension if missing
102
+ *
103
+ * @param config - Raw config input from user
104
+ * @returns Normalized config IR with defaults applied
105
+ * @throws Error if config structure is invalid
106
+ */
107
+ export function defineConfig<TFamilyId extends string = string, TTargetId extends string = string>(
108
+ config: PrismaNextConfig<TFamilyId, TTargetId>,
109
+ ): PrismaNextConfig<TFamilyId, TTargetId> {
110
+ // Validate structure using Arktype
111
+ const validated = PrismaNextConfigSchema(config);
112
+ if (validated instanceof type.errors) {
113
+ const messages = validated.map((p: { message: string }) => p.message).join('; ');
114
+ throw new Error(`Config validation failed: ${messages}`);
115
+ }
116
+
117
+ // Normalize contract config if present
118
+ if (config.contract) {
119
+ // Validate contract.source is a value or function (runtime check)
120
+ const source = config.contract.source;
121
+ if (
122
+ source !== null &&
123
+ typeof source !== 'object' &&
124
+ typeof source !== 'function' &&
125
+ typeof source !== 'string' &&
126
+ typeof source !== 'number' &&
127
+ typeof source !== 'boolean'
128
+ ) {
129
+ throw new Error(
130
+ 'Config.contract.source must be a value (object, string, number, boolean, null) or a function',
131
+ );
132
+ }
133
+
134
+ // Apply defaults
135
+ const output = config.contract.output ?? 'src/prisma/contract.json';
136
+ const types =
137
+ config.contract.types ??
138
+ (output.endsWith('.json')
139
+ ? `${output.slice(0, -5)}.d.ts`
140
+ : join(dirname(output), 'contract.d.ts'));
141
+
142
+ const normalizedContract: ContractConfig = {
143
+ source: config.contract.source,
144
+ output,
145
+ types,
146
+ };
147
+
148
+ // Return normalized config
149
+ return {
150
+ ...config,
151
+ contract: normalizedContract,
152
+ };
153
+ }
154
+
155
+ // Return config as-is if no contract (preserve literal types)
156
+ return config;
157
+ }
@@ -0,0 +1,270 @@
1
+ import type { PrismaNextConfig } from './config-types';
2
+ import { errorConfigValidation } from './errors';
3
+
4
+ /**
5
+ * Validates that the config has the required structure.
6
+ * This is pure validation logic with no file I/O or CLI awareness.
7
+ *
8
+ * @param config - Config object to validate
9
+ * @throws CliStructuredError if config structure is invalid
10
+ */
11
+ export function validateConfig(config: unknown): asserts config is PrismaNextConfig {
12
+ if (!config || typeof config !== 'object') {
13
+ throw errorConfigValidation('object', {
14
+ why: 'Config must be an object',
15
+ });
16
+ }
17
+
18
+ const configObj = config as Record<string, unknown>;
19
+
20
+ if (!configObj['family']) {
21
+ throw errorConfigValidation('family');
22
+ }
23
+
24
+ if (!configObj['target']) {
25
+ throw errorConfigValidation('target');
26
+ }
27
+
28
+ if (!configObj['adapter']) {
29
+ throw errorConfigValidation('adapter');
30
+ }
31
+
32
+ // Validate family descriptor
33
+ const family = configObj['family'] as Record<string, unknown>;
34
+ if (family['kind'] !== 'family') {
35
+ throw errorConfigValidation('family.kind', {
36
+ why: 'Config.family must have kind: "family"',
37
+ });
38
+ }
39
+ if (typeof family['familyId'] !== 'string') {
40
+ throw errorConfigValidation('family.familyId', {
41
+ why: 'Config.family must have familyId: string',
42
+ });
43
+ }
44
+ if (typeof family['version'] !== 'string') {
45
+ throw errorConfigValidation('family.version', {
46
+ why: 'Config.family must have version: string',
47
+ });
48
+ }
49
+ if (!family['hook'] || typeof family['hook'] !== 'object') {
50
+ throw errorConfigValidation('family.hook', {
51
+ why: 'Config.family must have hook: TargetFamilyHook',
52
+ });
53
+ }
54
+ if (typeof family['create'] !== 'function') {
55
+ throw errorConfigValidation('family.create', {
56
+ why: 'Config.family must have create: function',
57
+ });
58
+ }
59
+
60
+ const familyId = family['familyId'] as string;
61
+
62
+ // Validate target descriptor
63
+ const target = configObj['target'] as Record<string, unknown>;
64
+ if (target['kind'] !== 'target') {
65
+ throw errorConfigValidation('target.kind', {
66
+ why: 'Config.target must have kind: "target"',
67
+ });
68
+ }
69
+ if (typeof target['id'] !== 'string') {
70
+ throw errorConfigValidation('target.id', {
71
+ why: 'Config.target must have id: string',
72
+ });
73
+ }
74
+ if (typeof target['familyId'] !== 'string') {
75
+ throw errorConfigValidation('target.familyId', {
76
+ why: 'Config.target must have familyId: string',
77
+ });
78
+ }
79
+ if (typeof target['version'] !== 'string') {
80
+ throw errorConfigValidation('target.version', {
81
+ why: 'Config.target must have version: string',
82
+ });
83
+ }
84
+ if (target['familyId'] !== familyId) {
85
+ throw errorConfigValidation('target.familyId', {
86
+ why: `Config.target.familyId must match Config.family.familyId (expected: ${familyId}, got: ${target['familyId']})`,
87
+ });
88
+ }
89
+ if (typeof target['targetId'] !== 'string') {
90
+ throw errorConfigValidation('target.targetId', {
91
+ why: 'Config.target must have targetId: string',
92
+ });
93
+ }
94
+ if (typeof target['create'] !== 'function') {
95
+ throw errorConfigValidation('target.create', {
96
+ why: 'Config.target must have create: function',
97
+ });
98
+ }
99
+ const expectedTargetId = target['targetId'] as string;
100
+
101
+ // Validate adapter descriptor
102
+ const adapter = configObj['adapter'] as Record<string, unknown>;
103
+ if (adapter['kind'] !== 'adapter') {
104
+ throw errorConfigValidation('adapter.kind', {
105
+ why: 'Config.adapter must have kind: "adapter"',
106
+ });
107
+ }
108
+ if (typeof adapter['id'] !== 'string') {
109
+ throw errorConfigValidation('adapter.id', {
110
+ why: 'Config.adapter must have id: string',
111
+ });
112
+ }
113
+ if (typeof adapter['familyId'] !== 'string') {
114
+ throw errorConfigValidation('adapter.familyId', {
115
+ why: 'Config.adapter must have familyId: string',
116
+ });
117
+ }
118
+ if (typeof adapter['version'] !== 'string') {
119
+ throw errorConfigValidation('adapter.version', {
120
+ why: 'Config.adapter must have version: string',
121
+ });
122
+ }
123
+ if (adapter['familyId'] !== familyId) {
124
+ throw errorConfigValidation('adapter.familyId', {
125
+ why: `Config.adapter.familyId must match Config.family.familyId (expected: ${familyId}, got: ${adapter['familyId']})`,
126
+ });
127
+ }
128
+ if (typeof adapter['targetId'] !== 'string') {
129
+ throw errorConfigValidation('adapter.targetId', {
130
+ why: 'Config.adapter must have targetId: string',
131
+ });
132
+ }
133
+ if (adapter['targetId'] !== expectedTargetId) {
134
+ throw errorConfigValidation('adapter.targetId', {
135
+ why: `Config.adapter.targetId must match Config.target.targetId (expected: ${expectedTargetId}, got: ${adapter['targetId']})`,
136
+ });
137
+ }
138
+ if (typeof adapter['create'] !== 'function') {
139
+ throw errorConfigValidation('adapter.create', {
140
+ why: 'Config.adapter must have create: function',
141
+ });
142
+ }
143
+
144
+ // Validate extensions array if present
145
+ if (configObj['extensions'] !== undefined) {
146
+ if (!Array.isArray(configObj['extensions'])) {
147
+ throw errorConfigValidation('extensions', {
148
+ why: 'Config.extensions must be an array',
149
+ });
150
+ }
151
+ for (const ext of configObj['extensions']) {
152
+ if (!ext || typeof ext !== 'object') {
153
+ throw errorConfigValidation('extensions[]', {
154
+ why: 'Config.extensions must contain ExtensionDescriptor objects',
155
+ });
156
+ }
157
+ const extObj = ext as Record<string, unknown>;
158
+ if (extObj['kind'] !== 'extension') {
159
+ throw errorConfigValidation('extensions[].kind', {
160
+ why: 'Config.extensions items must have kind: "extension"',
161
+ });
162
+ }
163
+ if (typeof extObj['id'] !== 'string') {
164
+ throw errorConfigValidation('extensions[].id', {
165
+ why: 'Config.extensions items must have id: string',
166
+ });
167
+ }
168
+ if (typeof extObj['familyId'] !== 'string') {
169
+ throw errorConfigValidation('extensions[].familyId', {
170
+ why: 'Config.extensions items must have familyId: string',
171
+ });
172
+ }
173
+ if (typeof extObj['version'] !== 'string') {
174
+ throw errorConfigValidation('extensions[].version', {
175
+ why: 'Config.extensions items must have version: string',
176
+ });
177
+ }
178
+ if (extObj['familyId'] !== familyId) {
179
+ throw errorConfigValidation('extensions[].familyId', {
180
+ why: `Config.extensions[].familyId must match Config.family.familyId (expected: ${familyId}, got: ${extObj['familyId']})`,
181
+ });
182
+ }
183
+ if (typeof extObj['targetId'] !== 'string') {
184
+ throw errorConfigValidation('extensions[].targetId', {
185
+ why: 'Config.extensions items must have targetId: string',
186
+ });
187
+ }
188
+ if (extObj['targetId'] !== expectedTargetId) {
189
+ throw errorConfigValidation('extensions[].targetId', {
190
+ why: `Config.extensions[].targetId must match Config.target.targetId (expected: ${expectedTargetId}, got: ${extObj['targetId']})`,
191
+ });
192
+ }
193
+ if (typeof extObj['create'] !== 'function') {
194
+ throw errorConfigValidation('extensions[].create', {
195
+ why: 'Config.extensions items must have create: function',
196
+ });
197
+ }
198
+ }
199
+ }
200
+
201
+ // Validate driver descriptor if present
202
+ if (configObj['driver'] !== undefined) {
203
+ const driver = configObj['driver'] as Record<string, unknown>;
204
+ if (driver['kind'] !== 'driver') {
205
+ throw errorConfigValidation('driver.kind', {
206
+ why: 'Config.driver must have kind: "driver"',
207
+ });
208
+ }
209
+ if (typeof driver['id'] !== 'string') {
210
+ throw errorConfigValidation('driver.id', {
211
+ why: 'Config.driver must have id: string',
212
+ });
213
+ }
214
+ if (typeof driver['version'] !== 'string') {
215
+ throw errorConfigValidation('driver.version', {
216
+ why: 'Config.driver must have version: string',
217
+ });
218
+ }
219
+ if (typeof driver['familyId'] !== 'string') {
220
+ throw errorConfigValidation('driver.familyId', {
221
+ why: 'Config.driver must have familyId: string',
222
+ });
223
+ }
224
+ if (driver['familyId'] !== familyId) {
225
+ throw errorConfigValidation('driver.familyId', {
226
+ why: `Config.driver.familyId must match Config.family.familyId (expected: ${familyId}, got: ${driver['familyId']})`,
227
+ });
228
+ }
229
+ if (typeof driver['targetId'] !== 'string') {
230
+ throw errorConfigValidation('driver.targetId', {
231
+ why: 'Config.driver must have targetId: string',
232
+ });
233
+ }
234
+ if (driver['targetId'] !== expectedTargetId) {
235
+ throw errorConfigValidation('driver.targetId', {
236
+ why: `Config.driver.targetId must match Config.target.targetId (expected: ${expectedTargetId}, got: ${driver['targetId']})`,
237
+ });
238
+ }
239
+ if (typeof driver['create'] !== 'function') {
240
+ throw errorConfigValidation('driver.create', {
241
+ why: 'Config.driver must have create: function',
242
+ });
243
+ }
244
+ }
245
+
246
+ // Validate contract config if present (structure validation - defineConfig() handles normalization)
247
+ if (configObj['contract'] !== undefined) {
248
+ const contract = configObj['contract'] as Record<string, unknown>;
249
+ if (!contract || typeof contract !== 'object') {
250
+ throw errorConfigValidation('contract', {
251
+ why: 'Config.contract must be an object',
252
+ });
253
+ }
254
+ if (!('source' in contract)) {
255
+ throw errorConfigValidation('contract.source', {
256
+ why: 'Config.contract.source is required when contract is provided',
257
+ });
258
+ }
259
+ if (contract['output'] !== undefined && typeof contract['output'] !== 'string') {
260
+ throw errorConfigValidation('contract.output', {
261
+ why: 'Config.contract.output must be a string when provided',
262
+ });
263
+ }
264
+ if (contract['types'] !== undefined && typeof contract['types'] !== 'string') {
265
+ throw errorConfigValidation('contract.types', {
266
+ why: 'Config.contract.types must be a string when provided',
267
+ });
268
+ }
269
+ }
270
+ }