@prisma-next/core-control-plane 0.3.0-pr.110.1 → 0.3.0-pr.111.2

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.
@@ -1,4 +1,4 @@
1
- import { a as ControlExtensionDescriptor, i as ControlDriverInstance, r as ControlDriverDescriptor, s as ControlFamilyDescriptor, t as ControlAdapterDescriptor, u as ControlTargetDescriptor } from "./types-DlN-AFyI.mjs";
1
+ import { a as ControlExtensionDescriptor, i as ControlDriverInstance, r as ControlDriverDescriptor, s as ControlFamilyDescriptor, t as ControlAdapterDescriptor, u as ControlTargetDescriptor } from "./types-CsaU_uQP.mjs";
2
2
 
3
3
  //#region src/config-types.d.ts
4
4
 
@@ -76,4 +76,4 @@ interface PrismaNextConfig<TFamilyId extends string = string, TTargetId extends
76
76
  declare function defineConfig<TFamilyId extends string = string, TTargetId extends string = string>(config: PrismaNextConfig<TFamilyId, TTargetId>): PrismaNextConfig<TFamilyId, TTargetId>;
77
77
  //#endregion
78
78
  export { PrismaNextConfig as n, defineConfig as r, ContractConfig as t };
79
- //# sourceMappingURL=config-types-gvC9FW6q.d.mts.map
79
+ //# sourceMappingURL=config-types-h9ifypQ0.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-types-gvC9FW6q.d.mts","names":[],"sources":["../src/config-types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAqDmB,UAjCF,cAAA,CAiCE;EAC0B;;;;EAC8B,SAAA,MAAA,EAAA,OAAA,GAAA,CAAA,GAAA,GAAA,OAAA,GA9B7B,OA8B6B,CAAA,OAAA,CAAA,CAAA;EAAtC;;;;EAUA,SAAA,MAAA,CAAA,EAAA,MAAA;EAAjC;;;;;EAmBgC,SAAA,KAAA,CAAA,EAAA,MAAA;AAuCpC;;;;;;;;;UA5EiB;mBAKE,wBAAwB;mBACxB,wBAAwB,WAAW;oBAClC,yBAAyB,WAAW;qCACnB,2BAA2B,WAAW;;;;;;;oBAOvD,wBAChB,WACA,WACA,sBAAsB,WAAW,YACjC;;;;;;;;;;;0BAYsB;;;;;;sBAMJ;;;;;;;;;;;;;;iBAuCN,2FACN,iBAAiB,WAAW,aACnC,iBAAiB,WAAW"}
1
+ {"version":3,"file":"config-types-h9ifypQ0.d.mts","names":[],"sources":["../src/config-types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAqDmB,UAjCF,cAAA,CAiCE;EAC0B;;;;EAC8B,SAAA,MAAA,EAAA,OAAA,GAAA,CAAA,GAAA,GAAA,OAAA,GA9B7B,OA8B6B,CAAA,OAAA,CAAA,CAAA;EAAtC;;;;EAUA,SAAA,MAAA,CAAA,EAAA,MAAA;EAAjC;;;;;EAmBgC,SAAA,KAAA,CAAA,EAAA,MAAA;AAuCpC;;;;;;;;;UA5EiB;mBAKE,wBAAwB;mBACxB,wBAAwB,WAAW;oBAClC,yBAAyB,WAAW;qCACnB,2BAA2B,WAAW;;;;;;;oBAOvD,wBAChB,WACA,WACA,sBAAsB,WAAW,YACjC;;;;;;;;;;;0BAYsB;;;;;;sBAMJ;;;;;;;;;;;;;;iBAuCN,2FACN,iBAAiB,WAAW,aACnC,iBAAiB,WAAW"}
@@ -1,2 +1,2 @@
1
- import { n as PrismaNextConfig, r as defineConfig, t as ContractConfig } from "./config-types-gvC9FW6q.mjs";
1
+ import { n as PrismaNextConfig, r as defineConfig, t as ContractConfig } from "./config-types-h9ifypQ0.mjs";
2
2
  export { type ContractConfig, type PrismaNextConfig, defineConfig };
@@ -1,4 +1,4 @@
1
- import { n as PrismaNextConfig } from "./config-types-gvC9FW6q.mjs";
1
+ import { n as PrismaNextConfig } from "./config-types-h9ifypQ0.mjs";
2
2
 
3
3
  //#region src/config-validation.d.ts
4
4
 
package/dist/emission.mjs CHANGED
@@ -245,7 +245,10 @@ async function emit(ir, options, targetFamily) {
245
245
  } : void 0;
246
246
  return {
247
247
  contractJson: contractJsonString,
248
- contractDts: await format(targetFamily.generateContractTypes(ir, codecTypeImports ?? [], operationTypeImports ?? [], generateOptions), {
248
+ contractDts: await format(targetFamily.generateContractTypes(ir, codecTypeImports ?? [], operationTypeImports ?? [], {
249
+ coreHash,
250
+ profileHash
251
+ }, generateOptions), {
249
252
  parser: "typescript",
250
253
  singleQuote: true,
251
254
  semi: true,
@@ -1 +1 @@
1
- {"version":3,"file":"emission.mjs","names":["result: Record<string, unknown>","sorted: Record<string, unknown>","result: StorageObject","sortedTable: TableObject","ordered: Record<string, unknown>","normalized: NormalizedContract","ctx: ValidationContext","contractWithHashes: ContractIR & { coreHash?: string; profileHash?: string }"],"sources":["../src/emission/canonicalization.ts","../src/emission/hashing.ts","../src/emission/emit.ts"],"sourcesContent":["import type { ContractIR } from '@prisma-next/contract/ir';\nimport { isArrayEqual } from '@prisma-next/utils/array-equal';\n\ntype NormalizedContract = {\n schemaVersion: string;\n targetFamily: string;\n target: string;\n coreHash?: string;\n profileHash?: string;\n models: Record<string, unknown>;\n relations: Record<string, unknown>;\n storage: Record<string, unknown>;\n extensionPacks: Record<string, unknown>;\n capabilities: Record<string, Record<string, boolean>>;\n meta: Record<string, unknown>;\n sources: Record<string, unknown>;\n};\n\nconst TOP_LEVEL_ORDER = [\n 'schemaVersion',\n 'canonicalVersion',\n 'targetFamily',\n 'target',\n 'coreHash',\n 'profileHash',\n 'models',\n 'storage',\n 'capabilities',\n 'extensionPacks',\n 'meta',\n 'sources',\n] as const;\n\nfunction isDefaultValue(value: unknown): boolean {\n if (value === false) return true;\n if (value === null) return false;\n if (Array.isArray(value) && value.length === 0) return true;\n if (typeof value === 'object' && value !== null) {\n const keys = Object.keys(value);\n return keys.length === 0;\n }\n return false;\n}\n\nfunction omitDefaults(obj: unknown, path: readonly string[]): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => omitDefaults(item, path));\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const currentPath = [...path, key];\n\n // Exclude metadata fields from canonicalization\n if (key === '_generated') {\n continue;\n }\n\n if (key === 'nullable' && value === false) {\n continue;\n }\n\n if (key === 'generated' && value === false) {\n continue;\n }\n\n if (isDefaultValue(value)) {\n const isRequiredModels = isArrayEqual(currentPath, ['models']);\n const isRequiredTables = isArrayEqual(currentPath, ['storage', 'tables']);\n const isRequiredRelations = isArrayEqual(currentPath, ['relations']);\n const isRequiredExtensionPacks = isArrayEqual(currentPath, ['extensionPacks']);\n const isRequiredCapabilities = isArrayEqual(currentPath, ['capabilities']);\n const isRequiredMeta = isArrayEqual(currentPath, ['meta']);\n const isRequiredSources = isArrayEqual(currentPath, ['sources']);\n const isExtensionNamespace = currentPath.length === 2 && currentPath[0] === 'extensionPacks';\n const isModelRelations =\n currentPath.length === 3 &&\n isArrayEqual([currentPath[0], currentPath[2]], ['models', 'relations']);\n const isTableUniques =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'uniques'],\n );\n const isTableIndexes =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'indexes'],\n );\n const isTableForeignKeys =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'foreignKeys'],\n );\n\n if (\n !isRequiredModels &&\n !isRequiredTables &&\n !isRequiredRelations &&\n !isRequiredExtensionPacks &&\n !isRequiredCapabilities &&\n !isRequiredMeta &&\n !isRequiredSources &&\n !isExtensionNamespace &&\n !isModelRelations &&\n !isTableUniques &&\n !isTableIndexes &&\n !isTableForeignKeys\n ) {\n continue;\n }\n }\n\n result[key] = omitDefaults(value, currentPath);\n }\n\n return result;\n}\n\nfunction sortObjectKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => sortObjectKeys(item));\n }\n\n const sorted: Record<string, unknown> = {};\n const keys = Object.keys(obj).sort();\n for (const key of keys) {\n sorted[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);\n }\n\n return sorted;\n}\n\ntype StorageObject = {\n tables?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\ntype TableObject = {\n indexes?: unknown[];\n uniques?: unknown[];\n [key: string]: unknown;\n};\n\nfunction sortIndexesAndUniques(storage: unknown): unknown {\n if (!storage || typeof storage !== 'object') {\n return storage;\n }\n\n const storageObj = storage as StorageObject;\n if (!storageObj.tables || typeof storageObj.tables !== 'object') {\n return storage;\n }\n\n const tables = storageObj.tables;\n const result: StorageObject = { ...storageObj };\n\n result.tables = {};\n // Sort table names to ensure deterministic ordering\n const sortedTableNames = Object.keys(tables).sort();\n for (const tableName of sortedTableNames) {\n const table = tables[tableName];\n if (!table || typeof table !== 'object') {\n result.tables[tableName] = table;\n continue;\n }\n\n const tableObj = table as TableObject;\n const sortedTable: TableObject = { ...tableObj };\n\n if (Array.isArray(tableObj.indexes)) {\n sortedTable.indexes = [...tableObj.indexes].sort((a, b) => {\n const nameA = (a as { name?: string })?.name || '';\n const nameB = (b as { name?: string })?.name || '';\n return nameA.localeCompare(nameB);\n });\n }\n\n if (Array.isArray(tableObj.uniques)) {\n sortedTable.uniques = [...tableObj.uniques].sort((a, b) => {\n const nameA = (a as { name?: string })?.name || '';\n const nameB = (b as { name?: string })?.name || '';\n return nameA.localeCompare(nameB);\n });\n }\n\n result.tables[tableName] = sortedTable;\n }\n\n return result;\n}\n\nfunction orderTopLevel(obj: Record<string, unknown>): Record<string, unknown> {\n const ordered: Record<string, unknown> = {};\n const remaining = new Set(Object.keys(obj));\n\n for (const key of TOP_LEVEL_ORDER) {\n if (remaining.has(key)) {\n ordered[key] = obj[key];\n remaining.delete(key);\n }\n }\n\n for (const key of Array.from(remaining).sort()) {\n ordered[key] = obj[key];\n }\n\n return ordered;\n}\n\nexport function canonicalizeContract(\n ir: ContractIR & { coreHash?: string; profileHash?: string },\n): string {\n const normalized: NormalizedContract = {\n schemaVersion: ir.schemaVersion,\n targetFamily: ir.targetFamily,\n target: ir.target,\n models: ir.models,\n relations: ir.relations,\n storage: ir.storage,\n extensionPacks: ir.extensionPacks,\n capabilities: ir.capabilities,\n meta: ir.meta,\n sources: ir.sources,\n };\n\n if (ir.coreHash !== undefined) {\n normalized.coreHash = ir.coreHash;\n }\n\n if (ir.profileHash !== undefined) {\n normalized.profileHash = ir.profileHash;\n }\n\n const withDefaultsOmitted = omitDefaults(normalized, []) as NormalizedContract;\n const withSortedIndexes = sortIndexesAndUniques(withDefaultsOmitted.storage);\n const withSortedStorage = { ...withDefaultsOmitted, storage: withSortedIndexes };\n const withSortedKeys = sortObjectKeys(withSortedStorage) as Record<string, unknown>;\n const withOrderedTopLevel = orderTopLevel(withSortedKeys);\n\n return JSON.stringify(withOrderedTopLevel, null, 2);\n}\n","import { createHash } from 'node:crypto';\nimport type { ContractIR } from '@prisma-next/contract/ir';\nimport { canonicalizeContract } from './canonicalization';\n\ntype ContractInput = {\n schemaVersion: string;\n targetFamily: string;\n target: string;\n models: Record<string, unknown>;\n relations: Record<string, unknown>;\n storage: Record<string, unknown>;\n extensionPacks: Record<string, unknown>;\n sources: Record<string, unknown>;\n capabilities: Record<string, Record<string, boolean>>;\n meta: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nfunction computeHash(content: string): string {\n const hash = createHash('sha256');\n hash.update(content);\n return `sha256:${hash.digest('hex')}`;\n}\n\nexport function computeCoreHash(contract: ContractInput): string {\n const coreContract: ContractIR = {\n schemaVersion: contract.schemaVersion,\n targetFamily: contract.targetFamily,\n target: contract.target,\n models: contract.models,\n relations: contract.relations,\n storage: contract.storage,\n extensionPacks: contract.extensionPacks,\n sources: contract.sources,\n capabilities: contract.capabilities,\n meta: contract.meta,\n };\n const canonical = canonicalizeContract(coreContract);\n return computeHash(canonical);\n}\n\nexport function computeProfileHash(contract: ContractInput): string {\n const profileContract: ContractIR = {\n schemaVersion: contract.schemaVersion,\n targetFamily: contract.targetFamily,\n target: contract.target,\n models: {},\n relations: {},\n storage: {},\n extensionPacks: {},\n capabilities: contract.capabilities,\n meta: {},\n sources: {},\n };\n const canonical = canonicalizeContract(profileContract);\n return computeHash(canonical);\n}\n","import type { ContractIR } from '@prisma-next/contract/ir';\nimport type { TargetFamilyHook, ValidationContext } from '@prisma-next/contract/types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { format } from 'prettier';\nimport { canonicalizeContract } from './canonicalization';\nimport { computeCoreHash, computeProfileHash } from './hashing';\nimport type { EmitOptions, EmitResult } from './types';\n\nfunction validateCoreStructure(ir: ContractIR): void {\n if (!ir.targetFamily) {\n throw new Error('ContractIR must have targetFamily');\n }\n if (!ir.target) {\n throw new Error('ContractIR must have target');\n }\n if (!ir.schemaVersion) {\n throw new Error('ContractIR must have schemaVersion');\n }\n if (!ir.models || typeof ir.models !== 'object') {\n throw new Error('ContractIR must have models');\n }\n if (!ir.storage || typeof ir.storage !== 'object') {\n throw new Error('ContractIR must have storage');\n }\n if (!ir.relations || typeof ir.relations !== 'object') {\n throw new Error('ContractIR must have relations');\n }\n if (!ir.extensionPacks || typeof ir.extensionPacks !== 'object') {\n throw new Error('ContractIR must have extensionPacks');\n }\n if (!ir.capabilities || typeof ir.capabilities !== 'object') {\n throw new Error('ContractIR must have capabilities');\n }\n if (!ir.meta || typeof ir.meta !== 'object') {\n throw new Error('ContractIR must have meta');\n }\n if (!ir.sources || typeof ir.sources !== 'object') {\n throw new Error('ContractIR must have sources');\n }\n}\n\nexport async function emit(\n ir: ContractIR,\n options: EmitOptions,\n targetFamily: TargetFamilyHook,\n): Promise<EmitResult> {\n const {\n operationRegistry,\n codecTypeImports,\n operationTypeImports,\n extensionIds,\n parameterizedRenderers,\n parameterizedTypeImports,\n } = options;\n\n validateCoreStructure(ir);\n\n const ctx: ValidationContext = {\n ...ifDefined('operationRegistry', operationRegistry),\n ...ifDefined('codecTypeImports', codecTypeImports),\n ...ifDefined('operationTypeImports', operationTypeImports),\n ...ifDefined('extensionIds', extensionIds),\n };\n targetFamily.validateTypes(ir, ctx);\n\n targetFamily.validateStructure(ir);\n\n const contractJson = {\n schemaVersion: ir.schemaVersion,\n targetFamily: ir.targetFamily,\n target: ir.target,\n models: ir.models,\n relations: ir.relations,\n storage: ir.storage,\n extensionPacks: ir.extensionPacks,\n capabilities: ir.capabilities,\n meta: ir.meta,\n sources: ir.sources,\n } as const;\n\n const coreHash = computeCoreHash(contractJson);\n const profileHash = computeProfileHash(contractJson);\n\n const contractWithHashes: ContractIR & { coreHash?: string; profileHash?: string } = {\n ...ir,\n schemaVersion: contractJson.schemaVersion,\n coreHash,\n profileHash,\n };\n\n // Add _generated metadata to indicate this is a generated artifact\n // This ensures consistency between CLI emit and programmatic emit\n // Always add/update _generated with standard content for consistency\n const contractJsonObj = JSON.parse(canonicalizeContract(contractWithHashes)) as Record<\n string,\n unknown\n >;\n const contractJsonWithMeta = {\n ...contractJsonObj,\n _generated: {\n warning: '⚠️ GENERATED FILE - DO NOT EDIT',\n message: 'This file is automatically generated by \"prisma-next contract emit\".',\n regenerate: 'To regenerate, run: prisma-next contract emit',\n },\n };\n const contractJsonString = JSON.stringify(contractJsonWithMeta, null, 2);\n\n const generateOptions =\n parameterizedRenderers || parameterizedTypeImports\n ? {\n ...ifDefined('parameterizedRenderers', parameterizedRenderers),\n ...ifDefined('parameterizedTypeImports', parameterizedTypeImports),\n }\n : undefined;\n\n const contractDtsRaw = targetFamily.generateContractTypes(\n ir,\n codecTypeImports ?? [],\n operationTypeImports ?? [],\n generateOptions,\n );\n const contractDts = await format(contractDtsRaw, {\n parser: 'typescript',\n singleQuote: true,\n semi: true,\n printWidth: 100,\n });\n\n return {\n contractJson: contractJsonString,\n contractDts,\n coreHash,\n profileHash,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"emission.mjs","names":["result: Record<string, unknown>","sorted: Record<string, unknown>","result: StorageObject","sortedTable: TableObject","ordered: Record<string, unknown>","normalized: NormalizedContract","ctx: ValidationContext","contractWithHashes: ContractIR & { coreHash?: string; profileHash?: string }"],"sources":["../src/emission/canonicalization.ts","../src/emission/hashing.ts","../src/emission/emit.ts"],"sourcesContent":["import type { ContractIR } from '@prisma-next/contract/ir';\nimport { isArrayEqual } from '@prisma-next/utils/array-equal';\n\ntype NormalizedContract = {\n schemaVersion: string;\n targetFamily: string;\n target: string;\n coreHash?: string;\n profileHash?: string;\n models: Record<string, unknown>;\n relations: Record<string, unknown>;\n storage: Record<string, unknown>;\n extensionPacks: Record<string, unknown>;\n capabilities: Record<string, Record<string, boolean>>;\n meta: Record<string, unknown>;\n sources: Record<string, unknown>;\n};\n\nconst TOP_LEVEL_ORDER = [\n 'schemaVersion',\n 'canonicalVersion',\n 'targetFamily',\n 'target',\n 'coreHash',\n 'profileHash',\n 'models',\n 'storage',\n 'capabilities',\n 'extensionPacks',\n 'meta',\n 'sources',\n] as const;\n\nfunction isDefaultValue(value: unknown): boolean {\n if (value === false) return true;\n if (value === null) return false;\n if (Array.isArray(value) && value.length === 0) return true;\n if (typeof value === 'object' && value !== null) {\n const keys = Object.keys(value);\n return keys.length === 0;\n }\n return false;\n}\n\nfunction omitDefaults(obj: unknown, path: readonly string[]): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => omitDefaults(item, path));\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const currentPath = [...path, key];\n\n // Exclude metadata fields from canonicalization\n if (key === '_generated') {\n continue;\n }\n\n if (key === 'nullable' && value === false) {\n continue;\n }\n\n if (key === 'generated' && value === false) {\n continue;\n }\n\n if (isDefaultValue(value)) {\n const isRequiredModels = isArrayEqual(currentPath, ['models']);\n const isRequiredTables = isArrayEqual(currentPath, ['storage', 'tables']);\n const isRequiredRelations = isArrayEqual(currentPath, ['relations']);\n const isRequiredExtensionPacks = isArrayEqual(currentPath, ['extensionPacks']);\n const isRequiredCapabilities = isArrayEqual(currentPath, ['capabilities']);\n const isRequiredMeta = isArrayEqual(currentPath, ['meta']);\n const isRequiredSources = isArrayEqual(currentPath, ['sources']);\n const isExtensionNamespace = currentPath.length === 2 && currentPath[0] === 'extensionPacks';\n const isModelRelations =\n currentPath.length === 3 &&\n isArrayEqual([currentPath[0], currentPath[2]], ['models', 'relations']);\n const isTableUniques =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'uniques'],\n );\n const isTableIndexes =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'indexes'],\n );\n const isTableForeignKeys =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'foreignKeys'],\n );\n\n if (\n !isRequiredModels &&\n !isRequiredTables &&\n !isRequiredRelations &&\n !isRequiredExtensionPacks &&\n !isRequiredCapabilities &&\n !isRequiredMeta &&\n !isRequiredSources &&\n !isExtensionNamespace &&\n !isModelRelations &&\n !isTableUniques &&\n !isTableIndexes &&\n !isTableForeignKeys\n ) {\n continue;\n }\n }\n\n result[key] = omitDefaults(value, currentPath);\n }\n\n return result;\n}\n\nfunction sortObjectKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => sortObjectKeys(item));\n }\n\n const sorted: Record<string, unknown> = {};\n const keys = Object.keys(obj).sort();\n for (const key of keys) {\n sorted[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);\n }\n\n return sorted;\n}\n\ntype StorageObject = {\n tables?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\ntype TableObject = {\n indexes?: unknown[];\n uniques?: unknown[];\n [key: string]: unknown;\n};\n\nfunction sortIndexesAndUniques(storage: unknown): unknown {\n if (!storage || typeof storage !== 'object') {\n return storage;\n }\n\n const storageObj = storage as StorageObject;\n if (!storageObj.tables || typeof storageObj.tables !== 'object') {\n return storage;\n }\n\n const tables = storageObj.tables;\n const result: StorageObject = { ...storageObj };\n\n result.tables = {};\n // Sort table names to ensure deterministic ordering\n const sortedTableNames = Object.keys(tables).sort();\n for (const tableName of sortedTableNames) {\n const table = tables[tableName];\n if (!table || typeof table !== 'object') {\n result.tables[tableName] = table;\n continue;\n }\n\n const tableObj = table as TableObject;\n const sortedTable: TableObject = { ...tableObj };\n\n if (Array.isArray(tableObj.indexes)) {\n sortedTable.indexes = [...tableObj.indexes].sort((a, b) => {\n const nameA = (a as { name?: string })?.name || '';\n const nameB = (b as { name?: string })?.name || '';\n return nameA.localeCompare(nameB);\n });\n }\n\n if (Array.isArray(tableObj.uniques)) {\n sortedTable.uniques = [...tableObj.uniques].sort((a, b) => {\n const nameA = (a as { name?: string })?.name || '';\n const nameB = (b as { name?: string })?.name || '';\n return nameA.localeCompare(nameB);\n });\n }\n\n result.tables[tableName] = sortedTable;\n }\n\n return result;\n}\n\nfunction orderTopLevel(obj: Record<string, unknown>): Record<string, unknown> {\n const ordered: Record<string, unknown> = {};\n const remaining = new Set(Object.keys(obj));\n\n for (const key of TOP_LEVEL_ORDER) {\n if (remaining.has(key)) {\n ordered[key] = obj[key];\n remaining.delete(key);\n }\n }\n\n for (const key of Array.from(remaining).sort()) {\n ordered[key] = obj[key];\n }\n\n return ordered;\n}\n\nexport function canonicalizeContract(\n ir: ContractIR & { coreHash?: string; profileHash?: string },\n): string {\n const normalized: NormalizedContract = {\n schemaVersion: ir.schemaVersion,\n targetFamily: ir.targetFamily,\n target: ir.target,\n models: ir.models,\n relations: ir.relations,\n storage: ir.storage,\n extensionPacks: ir.extensionPacks,\n capabilities: ir.capabilities,\n meta: ir.meta,\n sources: ir.sources,\n };\n\n if (ir.coreHash !== undefined) {\n normalized.coreHash = ir.coreHash;\n }\n\n if (ir.profileHash !== undefined) {\n normalized.profileHash = ir.profileHash;\n }\n\n const withDefaultsOmitted = omitDefaults(normalized, []) as NormalizedContract;\n const withSortedIndexes = sortIndexesAndUniques(withDefaultsOmitted.storage);\n const withSortedStorage = { ...withDefaultsOmitted, storage: withSortedIndexes };\n const withSortedKeys = sortObjectKeys(withSortedStorage) as Record<string, unknown>;\n const withOrderedTopLevel = orderTopLevel(withSortedKeys);\n\n return JSON.stringify(withOrderedTopLevel, null, 2);\n}\n","import { createHash } from 'node:crypto';\nimport type { ContractIR } from '@prisma-next/contract/ir';\nimport { canonicalizeContract } from './canonicalization';\n\ntype ContractInput = {\n schemaVersion: string;\n targetFamily: string;\n target: string;\n models: Record<string, unknown>;\n relations: Record<string, unknown>;\n storage: Record<string, unknown>;\n extensionPacks: Record<string, unknown>;\n sources: Record<string, unknown>;\n capabilities: Record<string, Record<string, boolean>>;\n meta: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nfunction computeHash(content: string): string {\n const hash = createHash('sha256');\n hash.update(content);\n return `sha256:${hash.digest('hex')}`;\n}\n\nexport function computeCoreHash(contract: ContractInput): string {\n const coreContract: ContractIR = {\n schemaVersion: contract.schemaVersion,\n targetFamily: contract.targetFamily,\n target: contract.target,\n models: contract.models,\n relations: contract.relations,\n storage: contract.storage,\n extensionPacks: contract.extensionPacks,\n sources: contract.sources,\n capabilities: contract.capabilities,\n meta: contract.meta,\n };\n const canonical = canonicalizeContract(coreContract);\n return computeHash(canonical);\n}\n\nexport function computeProfileHash(contract: ContractInput): string {\n const profileContract: ContractIR = {\n schemaVersion: contract.schemaVersion,\n targetFamily: contract.targetFamily,\n target: contract.target,\n models: {},\n relations: {},\n storage: {},\n extensionPacks: {},\n capabilities: contract.capabilities,\n meta: {},\n sources: {},\n };\n const canonical = canonicalizeContract(profileContract);\n return computeHash(canonical);\n}\n","import type { ContractIR } from '@prisma-next/contract/ir';\nimport type { TargetFamilyHook, ValidationContext } from '@prisma-next/contract/types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { format } from 'prettier';\nimport { canonicalizeContract } from './canonicalization';\nimport { computeCoreHash, computeProfileHash } from './hashing';\nimport type { EmitOptions, EmitResult } from './types';\n\nfunction validateCoreStructure(ir: ContractIR): void {\n if (!ir.targetFamily) {\n throw new Error('ContractIR must have targetFamily');\n }\n if (!ir.target) {\n throw new Error('ContractIR must have target');\n }\n if (!ir.schemaVersion) {\n throw new Error('ContractIR must have schemaVersion');\n }\n if (!ir.models || typeof ir.models !== 'object') {\n throw new Error('ContractIR must have models');\n }\n if (!ir.storage || typeof ir.storage !== 'object') {\n throw new Error('ContractIR must have storage');\n }\n if (!ir.relations || typeof ir.relations !== 'object') {\n throw new Error('ContractIR must have relations');\n }\n if (!ir.extensionPacks || typeof ir.extensionPacks !== 'object') {\n throw new Error('ContractIR must have extensionPacks');\n }\n if (!ir.capabilities || typeof ir.capabilities !== 'object') {\n throw new Error('ContractIR must have capabilities');\n }\n if (!ir.meta || typeof ir.meta !== 'object') {\n throw new Error('ContractIR must have meta');\n }\n if (!ir.sources || typeof ir.sources !== 'object') {\n throw new Error('ContractIR must have sources');\n }\n}\n\nexport async function emit(\n ir: ContractIR,\n options: EmitOptions,\n targetFamily: TargetFamilyHook,\n): Promise<EmitResult> {\n const {\n operationRegistry,\n codecTypeImports,\n operationTypeImports,\n extensionIds,\n parameterizedRenderers,\n parameterizedTypeImports,\n } = options;\n\n validateCoreStructure(ir);\n\n const ctx: ValidationContext = {\n ...ifDefined('operationRegistry', operationRegistry),\n ...ifDefined('codecTypeImports', codecTypeImports),\n ...ifDefined('operationTypeImports', operationTypeImports),\n ...ifDefined('extensionIds', extensionIds),\n };\n targetFamily.validateTypes(ir, ctx);\n\n targetFamily.validateStructure(ir);\n\n const contractJson = {\n schemaVersion: ir.schemaVersion,\n targetFamily: ir.targetFamily,\n target: ir.target,\n models: ir.models,\n relations: ir.relations,\n storage: ir.storage,\n extensionPacks: ir.extensionPacks,\n capabilities: ir.capabilities,\n meta: ir.meta,\n sources: ir.sources,\n } as const;\n\n const coreHash = computeCoreHash(contractJson);\n const profileHash = computeProfileHash(contractJson);\n\n const contractWithHashes: ContractIR & { coreHash?: string; profileHash?: string } = {\n ...ir,\n schemaVersion: contractJson.schemaVersion,\n coreHash,\n profileHash,\n };\n\n // Add _generated metadata to indicate this is a generated artifact\n // This ensures consistency between CLI emit and programmatic emit\n // Always add/update _generated with standard content for consistency\n const contractJsonObj = JSON.parse(canonicalizeContract(contractWithHashes)) as Record<\n string,\n unknown\n >;\n const contractJsonWithMeta = {\n ...contractJsonObj,\n _generated: {\n warning: '⚠️ GENERATED FILE - DO NOT EDIT',\n message: 'This file is automatically generated by \"prisma-next contract emit\".',\n regenerate: 'To regenerate, run: prisma-next contract emit',\n },\n };\n const contractJsonString = JSON.stringify(contractJsonWithMeta, null, 2);\n\n const generateOptions =\n parameterizedRenderers || parameterizedTypeImports\n ? {\n ...ifDefined('parameterizedRenderers', parameterizedRenderers),\n ...ifDefined('parameterizedTypeImports', parameterizedTypeImports),\n }\n : undefined;\n\n const contractDtsRaw = targetFamily.generateContractTypes(\n ir,\n codecTypeImports ?? [],\n operationTypeImports ?? [],\n { coreHash, profileHash },\n generateOptions,\n );\n const contractDts = await format(contractDtsRaw, {\n parser: 'typescript',\n singleQuote: true,\n semi: true,\n printWidth: 100,\n });\n\n return {\n contractJson: contractJsonString,\n contractDts,\n coreHash,\n profileHash,\n };\n}\n"],"mappings":"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"}
package/dist/stack.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as ControlExtensionDescriptor, l as ControlPlaneStack, r as ControlDriverDescriptor, t as ControlAdapterDescriptor, u as ControlTargetDescriptor } from "./types-DlN-AFyI.mjs";
1
+ import { a as ControlExtensionDescriptor, l as ControlPlaneStack, r as ControlDriverDescriptor, t as ControlAdapterDescriptor, u as ControlTargetDescriptor } from "./types-CsaU_uQP.mjs";
2
2
 
3
3
  //#region src/stack.d.ts
4
4
 
@@ -471,13 +471,12 @@ interface VerifyDatabaseResult {
471
471
  * Schema issue type for schema verification results.
472
472
  */
473
473
  interface SchemaIssue {
474
- readonly kind: 'missing_table' | 'missing_column' | 'extra_table' | 'extra_column' | 'extra_primary_key' | 'extra_foreign_key' | 'extra_unique_constraint' | 'extra_index' | 'type_mismatch' | 'nullability_mismatch' | 'primary_key_mismatch' | 'foreign_key_mismatch' | 'unique_constraint_mismatch' | 'index_mismatch' | 'extension_missing' | 'enum_missing' | 'enum_values_mismatch' | 'extra_enum';
474
+ readonly kind: 'missing_table' | 'missing_column' | 'extra_table' | 'extra_column' | 'extra_primary_key' | 'extra_foreign_key' | 'extra_unique_constraint' | 'extra_index' | 'type_mismatch' | 'nullability_mismatch' | 'primary_key_mismatch' | 'foreign_key_mismatch' | 'unique_constraint_mismatch' | 'index_mismatch' | 'extension_missing';
475
475
  readonly table: string;
476
476
  readonly column?: string;
477
477
  readonly indexOrConstraint?: string;
478
- readonly enumName?: string;
479
- readonly expected?: string | readonly string[];
480
- readonly actual?: string | readonly string[];
478
+ readonly expected?: string;
479
+ readonly actual?: string;
481
480
  readonly message: string;
482
481
  }
483
482
  /**
@@ -593,4 +592,4 @@ interface SignDatabaseResult {
593
592
  }
594
593
  //#endregion
595
594
  export { MigrationRunnerExecutionChecks as A, MigrationPlanOperation as C, MigrationPlannerResult as D, MigrationPlannerFailureResult as E, MigrationRunnerResult as M, MigrationRunnerSuccessValue as N, MigrationPlannerSuccessResult as O, TargetMigrationsCapability as P, MigrationPlan as S, MigrationPlannerConflict as T, SignDatabaseResult as _, ControlExtensionDescriptor as a, MigrationOperationClass as b, ControlFamilyInstance as c, ControlTargetInstance as d, EmitContractResult as f, SchemaVerificationNode as g, SchemaIssue as h, ControlDriverInstance as i, MigrationRunnerFailure as j, MigrationRunner as k, ControlPlaneStack as l, OperationContext as m, ControlAdapterInstance as n, ControlExtensionInstance as o, IntrospectSchemaResult as p, ControlDriverDescriptor as r, ControlFamilyDescriptor as s, ControlAdapterDescriptor as t, ControlTargetDescriptor as u, VerifyDatabaseResult as v, MigrationPlanner as w, MigrationOperationPolicy as x, VerifyDatabaseSchemaResult as y };
596
- //# sourceMappingURL=types-DlN-AFyI.d.mts.map
595
+ //# sourceMappingURL=types-CsaU_uQP.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-DlN-AFyI.d.mts","names":[],"sources":["../src/migrations.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"types-CsaU_uQP.d.mts","names":[],"sources":["../src/migrations.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/types.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as MigrationRunnerExecutionChecks, C as MigrationPlanOperation, D as MigrationPlannerResult, E as MigrationPlannerFailureResult, M as MigrationRunnerResult, N as MigrationRunnerSuccessValue, O as MigrationPlannerSuccessResult, P as TargetMigrationsCapability, S as MigrationPlan, T as MigrationPlannerConflict, _ as SignDatabaseResult, a as ControlExtensionDescriptor, b as MigrationOperationClass, c as ControlFamilyInstance, d as ControlTargetInstance, f as EmitContractResult, g as SchemaVerificationNode, h as SchemaIssue, i as ControlDriverInstance, j as MigrationRunnerFailure, k as MigrationRunner, l as ControlPlaneStack, m as OperationContext, n as ControlAdapterInstance, o as ControlExtensionInstance, p as IntrospectSchemaResult, r as ControlDriverDescriptor, s as ControlFamilyDescriptor, t as ControlAdapterDescriptor, u as ControlTargetDescriptor, v as VerifyDatabaseResult, w as MigrationPlanner, x as MigrationOperationPolicy, y as VerifyDatabaseSchemaResult } from "./types-DlN-AFyI.mjs";
1
+ import { A as MigrationRunnerExecutionChecks, C as MigrationPlanOperation, D as MigrationPlannerResult, E as MigrationPlannerFailureResult, M as MigrationRunnerResult, N as MigrationRunnerSuccessValue, O as MigrationPlannerSuccessResult, P as TargetMigrationsCapability, S as MigrationPlan, T as MigrationPlannerConflict, _ as SignDatabaseResult, a as ControlExtensionDescriptor, b as MigrationOperationClass, c as ControlFamilyInstance, d as ControlTargetInstance, f as EmitContractResult, g as SchemaVerificationNode, h as SchemaIssue, i as ControlDriverInstance, j as MigrationRunnerFailure, k as MigrationRunner, l as ControlPlaneStack, m as OperationContext, n as ControlAdapterInstance, o as ControlExtensionInstance, p as IntrospectSchemaResult, r as ControlDriverDescriptor, s as ControlFamilyDescriptor, t as ControlAdapterDescriptor, u as ControlTargetDescriptor, v as VerifyDatabaseResult, w as MigrationPlanner, x as MigrationOperationPolicy, y as VerifyDatabaseSchemaResult } from "./types-CsaU_uQP.mjs";
2
2
  export { type ControlAdapterDescriptor, type ControlAdapterInstance, type ControlDriverDescriptor, type ControlDriverInstance, type ControlExtensionDescriptor, type ControlExtensionInstance, type ControlFamilyDescriptor, type ControlFamilyInstance, type ControlPlaneStack, type ControlTargetDescriptor, type ControlTargetInstance, type EmitContractResult, type IntrospectSchemaResult, type MigrationOperationClass, type MigrationOperationPolicy, type MigrationPlan, type MigrationPlanOperation, type MigrationPlanner, type MigrationPlannerConflict, type MigrationPlannerFailureResult, type MigrationPlannerResult, type MigrationPlannerSuccessResult, type MigrationRunner, type MigrationRunnerExecutionChecks, type MigrationRunnerFailure, type MigrationRunnerResult, type MigrationRunnerSuccessValue, type OperationContext, type SchemaIssue, type SchemaVerificationNode, type SignDatabaseResult, type TargetMigrationsCapability, type VerifyDatabaseResult, type VerifyDatabaseSchemaResult };
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@prisma-next/core-control-plane",
3
- "version": "0.3.0-pr.110.1",
3
+ "version": "0.3.0-pr.111.2",
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-pr.110.1",
11
- "@prisma-next/operations": "0.3.0-pr.110.1",
12
- "@prisma-next/utils": "0.3.0-pr.110.1"
10
+ "@prisma-next/contract": "0.3.0-pr.111.2",
11
+ "@prisma-next/operations": "0.3.0-pr.111.2",
12
+ "@prisma-next/utils": "0.3.0-pr.111.2"
13
13
  },
14
14
  "devDependencies": {
15
15
  "tsdown": "0.18.4",
@@ -117,6 +117,7 @@ export async function emit(
117
117
  ir,
118
118
  codecTypeImports ?? [],
119
119
  operationTypeImports ?? [],
120
+ { coreHash, profileHash },
120
121
  generateOptions,
121
122
  );
122
123
  const contractDts = await format(contractDtsRaw, {
package/src/types.ts CHANGED
@@ -404,16 +404,12 @@ export interface SchemaIssue {
404
404
  | 'foreign_key_mismatch'
405
405
  | 'unique_constraint_mismatch'
406
406
  | 'index_mismatch'
407
- | 'extension_missing'
408
- | 'enum_missing'
409
- | 'enum_values_mismatch'
410
- | 'extra_enum';
407
+ | 'extension_missing';
411
408
  readonly table: string;
412
409
  readonly column?: string;
413
410
  readonly indexOrConstraint?: string;
414
- readonly enumName?: string;
415
- readonly expected?: string | readonly string[];
416
- readonly actual?: string | readonly string[];
411
+ readonly expected?: string;
412
+ readonly actual?: string;
417
413
  readonly message: string;
418
414
  }
419
415