@prisma-next/sql-contract-ts 0.15.0 → 0.16.0-dev.1
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/{build-contract-BzAyIu0y.mjs → build-contract-CAX6inbk.mjs} +21 -16
- package/dist/build-contract-CAX6inbk.mjs.map +1 -0
- package/dist/config-types.d.mts +0 -1
- package/dist/config-types.d.mts.map +1 -1
- package/dist/config-types.mjs +1 -1
- package/dist/contract-builder.d.mts +73 -42
- package/dist/contract-builder.d.mts.map +1 -1
- package/dist/contract-builder.mjs +1 -1
- package/package.json +11 -11
- package/src/authoring-type-utils.ts +71 -27
- package/src/build-contract.ts +40 -19
- package/dist/build-contract-BzAyIu0y.mjs.map +0 -1
|
@@ -7,6 +7,7 @@ import { isAuthoringEntityTypeDescriptor } from "@prisma-next/framework-componen
|
|
|
7
7
|
import { UNBOUND_NAMESPACE_ID } from "@prisma-next/framework-components/ir";
|
|
8
8
|
import { sqlContractCanonicalizationHooks } from "@prisma-next/sql-contract/canonicalization-hooks";
|
|
9
9
|
import { tableEntityKind, valueSetEntityKind } from "@prisma-next/sql-contract/entity-kinds";
|
|
10
|
+
import { materializeForeignKeysAndIndexes } from "@prisma-next/sql-contract/foreign-key-materialization";
|
|
10
11
|
import { validateIndexTypes } from "@prisma-next/sql-contract/index-type-validation";
|
|
11
12
|
import { createIndexTypeRegistry } from "@prisma-next/sql-contract/index-types";
|
|
12
13
|
import { SqlStorage, applyFkDefaults, toStorageTypeInstance } from "@prisma-next/sql-contract/types";
|
|
@@ -424,7 +425,7 @@ function buildSqlContractFromDefinition(definition, codecLookup) {
|
|
|
424
425
|
...ifDefined("onUpdate", executionDefaultPhases.onUpdate)
|
|
425
426
|
});
|
|
426
427
|
}
|
|
427
|
-
const
|
|
428
|
+
const authoringForeignKeys = (semanticModel.foreignKeys ?? []).map((fk) => {
|
|
428
429
|
if (fk.references.spaceId !== void 0) {
|
|
429
430
|
const targetNamespaceId = fk.references.namespaceId ?? defaultNamespaceId;
|
|
430
431
|
return {
|
|
@@ -472,24 +473,28 @@ function buildSqlContractFromDefinition(definition, codecLookup) {
|
|
|
472
473
|
};
|
|
473
474
|
});
|
|
474
475
|
if (!semanticModel.sharesBaseTable) {
|
|
476
|
+
const uniques = (semanticModel.uniques ?? []).map((u) => ({
|
|
477
|
+
columns: u.columns,
|
|
478
|
+
...ifDefined("name", u.name)
|
|
479
|
+
}));
|
|
480
|
+
const declaredIndexes = (semanticModel.indexes ?? []).map((i) => ({
|
|
481
|
+
columns: i.columns,
|
|
482
|
+
...ifDefined("name", i.name),
|
|
483
|
+
...ifDefined("type", i.type),
|
|
484
|
+
...ifDefined("options", i.options)
|
|
485
|
+
}));
|
|
486
|
+
const primaryKey = semanticModel.id ? {
|
|
487
|
+
columns: semanticModel.id.columns,
|
|
488
|
+
...ifDefined("name", semanticModel.id.name)
|
|
489
|
+
} : void 0;
|
|
490
|
+
const { foreignKeys, indexes } = materializeForeignKeysAndIndexes(tableName, authoringForeignKeys, declaredIndexes, uniques, primaryKey);
|
|
475
491
|
const tableInput = {
|
|
476
492
|
columns,
|
|
477
493
|
...ifDefined("control", semanticModel.control),
|
|
478
|
-
uniques
|
|
479
|
-
|
|
480
|
-
...ifDefined("name", u.name)
|
|
481
|
-
})),
|
|
482
|
-
indexes: (semanticModel.indexes ?? []).map((i) => ({
|
|
483
|
-
columns: i.columns,
|
|
484
|
-
...ifDefined("name", i.name),
|
|
485
|
-
...ifDefined("type", i.type),
|
|
486
|
-
...ifDefined("options", i.options)
|
|
487
|
-
})),
|
|
494
|
+
uniques,
|
|
495
|
+
indexes,
|
|
488
496
|
foreignKeys,
|
|
489
|
-
...
|
|
490
|
-
columns: semanticModel.id.columns,
|
|
491
|
-
...ifDefined("name", semanticModel.id.name)
|
|
492
|
-
} } : {},
|
|
497
|
+
...primaryKey ? { primaryKey } : {},
|
|
493
498
|
...checksForTable.length > 0 ? { checks: checksForTable } : {}
|
|
494
499
|
};
|
|
495
500
|
let nsTables = tablesByNamespace[namespaceId];
|
|
@@ -702,4 +707,4 @@ function buildSqlContractFromDefinition(definition, codecLookup) {
|
|
|
702
707
|
//#endregion
|
|
703
708
|
export { buildSqlContractFromDefinition as t };
|
|
704
709
|
|
|
705
|
-
//# sourceMappingURL=build-contract-
|
|
710
|
+
//# sourceMappingURL=build-contract-CAX6inbk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-contract-CAX6inbk.mjs","names":[],"sources":["../src/build-contract.ts"],"sourcesContent":["import {\n computeExecutionHash,\n computeProfileHash,\n computeStorageHash,\n} from '@prisma-next/contract/hashing';\nimport {\n asNamespaceId,\n type ColumnDefault,\n type Contract,\n type ContractEnum,\n type ContractField,\n type ContractModel,\n type ContractRelation,\n type ContractRelationThrough,\n type ContractValueObject,\n type CrossReference,\n coreHash,\n crossRef,\n type ExecutionMutationDefault,\n type JsonValue,\n type StorageHashBase,\n type ValueSetRef,\n} from '@prisma-next/contract/types';\nimport { type CapabilityMatrix, mergeCapabilityMatrices } from '@prisma-next/contract-authoring';\nimport type {\n AuthoringContributions,\n AuthoringEntityTypeDescriptor,\n AuthoringEntityTypeNamespace,\n} from '@prisma-next/framework-components/authoring';\nimport { isAuthoringEntityTypeDescriptor } from '@prisma-next/framework-components/authoring';\nimport type { CodecLookup, ColumnTypeDescriptor } from '@prisma-next/framework-components/codec';\nimport { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';\nimport { sqlContractCanonicalizationHooks } from '@prisma-next/sql-contract/canonicalization-hooks';\nimport { tableEntityKind, valueSetEntityKind } from '@prisma-next/sql-contract/entity-kinds';\nimport {\n type ForeignKeyAuthoringInput,\n materializeForeignKeysAndIndexes,\n} from '@prisma-next/sql-contract/foreign-key-materialization';\nimport { validateIndexTypes } from '@prisma-next/sql-contract/index-type-validation';\nimport {\n createIndexTypeRegistry,\n type IndexTypeMap,\n type IndexTypeRegistration,\n} from '@prisma-next/sql-contract/index-types';\nimport {\n applyFkDefaults,\n type CheckConstraintInput,\n type SqlNamespaceInput,\n SqlStorage,\n type SqlStorageInput,\n type StorageColumn,\n type StorageTableInput,\n type StorageTypeInstance,\n type StorageValueSetInput,\n toStorageTypeInstance,\n} from '@prisma-next/sql-contract/types';\nimport { validateStorageSemantics } from '@prisma-next/sql-contract/validators';\nimport { deriveValueSetFromEntity } from '@prisma-next/sql-contract/value-set-derivation-hook';\nimport { blindCast } from '@prisma-next/utils/casts';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type {\n ContractDefinition,\n FieldNode,\n ModelNode,\n RelationNode,\n ValueObjectFieldNode,\n} from './contract-definition';\n\ntype DomainFieldRef =\n | { readonly kind: 'scalar'; readonly many?: boolean }\n | { readonly kind: 'valueObject'; readonly name: string; readonly many?: boolean };\n\nfunction encodeViaCodec(value: unknown, codecId: string, codecLookup?: CodecLookup): JsonValue {\n const codec = codecLookup?.get(codecId);\n if (codec) {\n return codec.encodeJson(value);\n }\n return blindCast<\n JsonValue,\n 'no codec lookup at build time: literal/enum member value is already JSON-safe'\n >(value);\n}\n\nfunction encodeColumnDefault(\n defaultInput: ColumnDefault,\n codecId: string,\n codecLookup?: CodecLookup,\n many = false,\n): ColumnDefault {\n if (defaultInput.kind === 'function') {\n return { kind: 'function', expression: defaultInput.expression };\n }\n if (many) {\n if (!Array.isArray(defaultInput.value)) {\n throw new Error(\n `Literal default on a list column must be an array; received ${typeof defaultInput.value}. ` +\n 'A scalar default on a list field must be rejected at the authoring surface.',\n );\n }\n return {\n kind: 'literal',\n value: defaultInput.value.map((element) => encodeViaCodec(element, codecId, codecLookup)),\n };\n }\n return {\n kind: 'literal',\n value: encodeViaCodec(defaultInput.value, codecId, codecLookup),\n };\n}\n\nfunction assertStorageSemantics(\n definition: ContractDefinition,\n contract: Contract<SqlStorage>,\n): void {\n const semanticErrors = validateStorageSemantics(contract.storage);\n if (semanticErrors.length > 0) {\n throw new Error(`Contract semantic validation failed: ${semanticErrors.join('; ')}`);\n }\n\n const indexTypeRegistry = createIndexTypeRegistry();\n const packsToRegister: ReadonlyArray<{ readonly id?: string; readonly indexTypes?: unknown }> = [\n definition.target,\n ...Object.values(definition.extensionPacks ?? {}),\n ];\n for (const pack of packsToRegister) {\n const registration = pack.indexTypes;\n if (registration === undefined) continue;\n if (\n typeof registration !== 'object' ||\n registration === null ||\n !Array.isArray((registration as { entries?: unknown }).entries)\n ) {\n throw new Error(\n `Pack \"${pack.id ?? '<unknown>'}\" declares \"indexTypes\" but its value is not an IndexTypeRegistration (expected an object with an \"entries\" array; got ${typeof registration}).`,\n );\n }\n for (const entry of (registration as IndexTypeRegistration<IndexTypeMap>).entries) {\n indexTypeRegistry.register(entry);\n }\n }\n validateIndexTypes(contract, indexTypeRegistry);\n}\n\nfunction assertKnownTargetModel(\n modelsByName: ReadonlyMap<string, ModelNode>,\n modelsByCoordinate: ReadonlyMap<string, ModelNode>,\n sourceModelName: string,\n targetModelName: string,\n targetNamespaceId: string | undefined,\n context: string,\n): ModelNode {\n const targetModel =\n targetNamespaceId !== undefined && targetNamespaceId.length > 0\n ? modelsByCoordinate.get(`${targetNamespaceId}:${targetModelName}`)\n : modelsByName.get(targetModelName);\n if (!targetModel) {\n const qualified =\n targetNamespaceId !== undefined && targetNamespaceId.length > 0\n ? `${targetNamespaceId}.${targetModelName}`\n : targetModelName;\n throw new Error(\n `${context} on model \"${sourceModelName}\" references unknown model \"${qualified}\"`,\n );\n }\n return targetModel;\n}\n\nfunction assertTargetTableMatches(\n sourceModelName: string,\n targetModel: ModelNode,\n referencedTableName: string,\n context: string,\n): void {\n if (targetModel.tableName !== referencedTableName) {\n throw new Error(\n `${context} on model \"${sourceModelName}\" references table \"${referencedTableName}\" but model \"${targetModel.modelName}\" maps to \"${targetModel.tableName}\"`,\n );\n }\n}\n\nfunction isValueObjectField(\n field: FieldNode | ValueObjectFieldNode,\n): field is ValueObjectFieldNode {\n return 'valueObjectName' in field;\n}\n\n/**\n * Resolves a deferred entity-ref column descriptor (e.g. a `pg.enum(handle)`\n * column) against the field's now-known owning namespace: attaches the\n * storage `valueSet` ref the collected entity's derived value-set is stored\n * under. `nativeType` / `typeParams.typeName` stay bare here — schema\n * qualification (e.g. `auth.aal_level`) is a target concern applied in the\n * next step, `qualifyColumnDescriptor`. A descriptor with no `entityRef` (the\n * ordinary case) passes through unchanged.\n */\nfunction resolveEntityRefDescriptor(\n descriptor: ColumnTypeDescriptor,\n namespaceId: string,\n): ColumnTypeDescriptor {\n const entityRef = descriptor.entityRef;\n if (entityRef === undefined) return descriptor;\n\n return {\n ...descriptor,\n valueSet: {\n plane: 'storage',\n entityKind: 'valueSet',\n namespaceId,\n entityName: entityRef.entityName,\n },\n };\n}\n\n/**\n * A target's contract-construction-time column-type qualifier, contributed\n * through `target.authoring.qualifyColumnType`. Given a column's bare type\n * info and its owning `namespaceId`, it returns the type info the target's\n * schema semantics require (e.g. Postgres schema-qualifies a native-enum\n * column's type name to `auth.aal_level`). The dispatch keys off the codec\n * id, so every codec — including ones needing no change — is passed through\n * and the caller stays codec-blind. Targets without the hook leave every\n * column bare.\n */\ntype ColumnTypeQualifier = (\n input: {\n readonly codecId: string;\n readonly nativeType: string;\n readonly typeParams?: Record<string, unknown>;\n },\n namespaceId: string,\n) => { readonly nativeType: string; readonly typeParams?: Record<string, unknown> };\n\n/**\n * Structural check for a target that contributes a `qualifyColumnType` hook\n * on its authoring contributions. Duck-typed (mirroring\n * `contract-psl`'s `hasColumnFromEntityHook`) so the SQL family stays blind\n * to the target's qualification logic and no framework/family interface has\n * to name the hook.\n */\nfunction hasColumnTypeQualifier(\n authoring: AuthoringContributions,\n): authoring is AuthoringContributions & { readonly qualifyColumnType: ColumnTypeQualifier } {\n return 'qualifyColumnType' in authoring && typeof authoring.qualifyColumnType === 'function';\n}\n\nfunction resolveColumnTypeQualifier(\n target: ContractDefinition['target'],\n): ColumnTypeQualifier | undefined {\n const authoring = target.authoring;\n if (authoring === undefined) return undefined;\n return hasColumnTypeQualifier(authoring) ? authoring.qualifyColumnType : undefined;\n}\n\n/**\n * Applies the target's `qualifyColumnType` hook to a scalar column descriptor\n * at construction, so the storage column and the domain field (which derives\n * its `type.typeParams` from the storage column) are both built already\n * qualified in a single pass. A descriptor whose codec the target leaves\n * unchanged passes through untouched.\n */\nfunction qualifyColumnDescriptor(\n descriptor: ColumnTypeDescriptor,\n namespaceId: string,\n qualify: ColumnTypeQualifier | undefined,\n): ColumnTypeDescriptor {\n if (qualify === undefined) return descriptor;\n const qualified = qualify(\n {\n codecId: descriptor.codecId,\n nativeType: descriptor.nativeType,\n ...ifDefined('typeParams', descriptor.typeParams),\n },\n namespaceId,\n );\n if (\n qualified.nativeType === descriptor.nativeType &&\n qualified.typeParams === descriptor.typeParams\n ) {\n return descriptor;\n }\n return {\n ...descriptor,\n nativeType: qualified.nativeType,\n ...ifDefined('typeParams', qualified.typeParams),\n };\n}\n\ntype CollectedColumnEntities = Record<string, Record<string, Record<string, unknown>>>;\n\n/**\n * Records a deferred column's entity-ref into the namespace-scoped collection\n * accumulator (`namespaceId → entityKind → entityName`) — folded into the same\n * namespace assembly `deriveEntityValueSets`/`entries.<kind>` step as the\n * entities-channel attachments, so a column-collected entity gets its\n * value-set the same way an entities-channel one does.\n *\n * The same handle reused by many columns in one namespace is normal (a native\n * enum type backs any number of columns) and records the identical entity once.\n * Two *different* entity instances sharing a name+kind in one namespace is a\n * name collision — the emitted `entries.valueSet.<name>` could only reflect one\n * of them, silently mismatching the other column's type/cast. PSL hard-errors\n * on the equivalent (`PSL_DUPLICATE_DECLARATION`); the TS path rejects it too.\n */\nfunction collectEntityFromColumn(\n collected: CollectedColumnEntities,\n namespaceId: string,\n entityRef: NonNullable<ColumnTypeDescriptor['entityRef']>,\n): void {\n const forNs = collected[namespaceId] ?? {};\n const forKind = forNs[entityRef.entityKind] ?? {};\n const existing = forKind[entityRef.entityName];\n if (existing !== undefined && existing !== entityRef.entity) {\n throw new Error(\n `buildSqlContractFromDefinition: two different \"${entityRef.entityKind}\" entities named \"${entityRef.entityName}\" in namespace \"${namespaceId}\" — pack-entity names must be unique per namespace.`,\n );\n }\n forKind[entityRef.entityName] = entityRef.entity;\n forNs[entityRef.entityKind] = forKind;\n collected[namespaceId] = forNs;\n}\n\n/**\n * Merges a namespace's entities-channel attachments (lowered from the\n * `entities` handle list, carried on `ContractDefinition.attachedEntities`)\n * with the entities collected from that namespace's deferred entity-ref\n * columns. A column-collected entity that shadows a *different* attached\n * entity of the same kind+name (or vice-versa) is the same name-collision bug\n * `collectEntityFromColumn` guards against across columns, so it is rejected\n * the same way — by entity identity, so the same handle attached and used by\n * a column does not throw.\n */\nfunction mergeColumnAndAttachedEntities(\n namespaceId: string,\n attached: Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined,\n columnCollected: Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined,\n): Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined {\n if (attached === undefined) return columnCollected;\n if (columnCollected === undefined) return attached;\n const kinds = new Set([...Object.keys(attached), ...Object.keys(columnCollected)]);\n const result: Record<string, Readonly<Record<string, unknown>>> = {};\n for (const kind of kinds) {\n const attachedForKind = attached[kind];\n const columnForKind = columnCollected[kind];\n for (const [name, entity] of Object.entries(columnForKind ?? {})) {\n const existing = attachedForKind?.[name];\n if (existing !== undefined && existing !== entity) {\n throw new Error(\n `buildSqlContractFromDefinition: two different \"${kind}\" entities named \"${name}\" in namespace \"${namespaceId}\" — a column-referenced entity conflicts with an attached one; pack-entity names must be unique per namespace.`,\n );\n }\n }\n result[kind] = { ...attachedForKind, ...columnForKind };\n }\n return result;\n}\n\nconst JSONB_CODEC_ID = 'pg/jsonb@1';\nconst JSONB_NATIVE_TYPE = 'jsonb';\n\nfunction resolveModelNamespaceId(\n model: ModelNode,\n modelNameToNamespaceId: ReadonlyMap<string, string>,\n defaultNamespaceId: string,\n): string {\n if (model.namespaceId !== undefined && model.namespaceId.length > 0) {\n return model.namespaceId;\n }\n return modelNameToNamespaceId.get(model.modelName) ?? defaultNamespaceId;\n}\n\nfunction buildThroughDescriptor(\n through: NonNullable<RelationNode['through']>,\n tableNamespaceByName: ReadonlyMap<string, string>,\n targetModel: ModelNode,\n modelName: string,\n fieldName: string,\n defaultNamespaceId: string,\n): ContractRelationThrough {\n if (!tableNamespaceByName.has(through.table)) {\n throw new Error(\n `buildSqlContractFromDefinition: junction table \"${through.table}\" for relation \"${modelName}.${fieldName}\" is not a declared model.`,\n );\n }\n // Junction table names are unique per namespace, not globally. Prefer the\n // junction's own declared namespace (carried on the through node); fall back to\n // the target's default namespace. Resolving by bare table name would pick the\n // wrong namespace when the same junction table name exists in two namespaces.\n const namespaceId = through.namespaceId ?? defaultNamespaceId;\n\n return {\n table: through.table,\n namespaceId,\n parentColumns: through.parentColumns,\n childColumns: through.childColumns,\n targetColumns: targetColumnsForJunction(targetModel, fieldName),\n };\n}\n\nfunction targetColumnsForJunction(targetModel: ModelNode, fieldName: string): readonly string[] {\n const primaryKeyColumns = targetModel.id?.columns;\n if (primaryKeyColumns && primaryKeyColumns.length > 0) {\n return primaryKeyColumns;\n }\n const firstUnique = targetModel.uniques?.find((u) => u.columns.length > 0);\n if (firstUnique) {\n return firstUnique.columns;\n }\n throw new Error(\n `M:N target model \"${targetModel.modelName}\" (relation field \"${fieldName}\") has no primary id or unique key to derive junction targetColumns.`,\n );\n}\n\nfunction buildStorageColumn(\n field: FieldNode | ValueObjectFieldNode,\n storageValueSetRef: ValueSetRef | undefined,\n codecLookup?: CodecLookup,\n): StorageColumn {\n if (isValueObjectField(field)) {\n const encodedDefault =\n field.default !== undefined\n ? encodeColumnDefault(field.default, JSONB_CODEC_ID, codecLookup)\n : undefined;\n\n return {\n nativeType: JSONB_NATIVE_TYPE,\n codecId: JSONB_CODEC_ID,\n nullable: field.nullable,\n ...ifDefined('default', encodedDefault),\n };\n }\n\n const codecId = field.descriptor.codecId;\n const encodedDefault =\n field.default !== undefined\n ? encodeColumnDefault(field.default, codecId, codecLookup, field.many === true)\n : undefined;\n\n // `storageValueSetRef` (derived from an `enumTypeHandle`) takes precedence\n // when present — the established domain-enum path. `field.descriptor.valueSet`\n // is the fallback: set by an entity-ref type constructor (e.g. `pg.enum(Ref)`)\n // that resolved the field's type against a value-set-deriving entity with no\n // domain enum involved. A field carries at most one of the two in practice.\n const valueSet = storageValueSetRef ?? field.descriptor.valueSet;\n\n return {\n nativeType: field.descriptor.nativeType,\n codecId,\n nullable: field.nullable,\n ...(field.many ? { many: true as const } : {}),\n ...ifDefined('typeParams', field.descriptor.typeParams),\n ...ifDefined('default', encodedDefault),\n ...ifDefined('typeRef', field.descriptor.typeRef),\n ...ifDefined('valueSet', valueSet),\n };\n}\n\nfunction buildDomainField(\n field: FieldNode | ValueObjectFieldNode,\n column: StorageColumn,\n domainValueSetRef: ValueSetRef | undefined,\n): ContractField {\n if (isValueObjectField(field)) {\n return {\n type: { kind: 'valueObject', name: field.valueObjectName },\n nullable: field.nullable,\n ...(field.many ? { many: true } : {}),\n };\n }\n\n return {\n type: {\n kind: 'scalar',\n codecId: column.codecId,\n ...ifDefined('typeParams', column.typeParams),\n },\n nullable: column.nullable,\n ...(field.many ? { many: true } : {}),\n ...ifDefined('valueSet', domainValueSetRef),\n };\n}\n\nfunction collectStorageNamespaceCoordinateIds(definition: ContractDefinition): Set<string> {\n const ids = new Set<string>();\n ids.add(definition.target.defaultNamespaceId);\n for (const id of definition.namespaces ?? []) {\n if (id.length > 0) {\n ids.add(id);\n }\n }\n for (const model of definition.models) {\n if (model.namespaceId !== undefined && model.namespaceId.length > 0) {\n ids.add(model.namespaceId);\n }\n }\n for (const id of Object.keys(definition.attachedEntities ?? {})) {\n if (id.length > 0) {\n ids.add(id);\n }\n }\n return ids;\n}\n\n/**\n * Entry kinds the framework assembler itself manages (`table` from models,\n * `valueSet` from `enums` and attached-entity value-set derivation). A\n * pack-attached entity claiming one of these would silently clobber or be\n * clobbered by the managed slot, so it is rejected outright.\n */\nconst MANAGED_ENTRY_KINDS = new Set([tableEntityKind.kind, valueSetEntityKind.kind]);\n\nfunction assertNoManagedEntityKinds(\n namespaceId: string,\n entitiesForNs: Readonly<Record<string, unknown>> | undefined,\n): void {\n if (entitiesForNs === undefined) return;\n for (const kind of Object.keys(entitiesForNs)) {\n if (MANAGED_ENTRY_KINDS.has(kind)) {\n throw new Error(\n `buildSqlContractFromDefinition: attached entity in namespace \"${namespaceId}\" declares entry kind \"${kind}\", which is managed by the framework (table/valueSet) and cannot be attached.`,\n );\n }\n }\n}\n\n/**\n * Walks the flat `entityTypes` namespace tree contributed by the target pack\n * and every extension pack, indexing descriptors by their `discriminator` —\n * the same string a pack entity's entries-map key (`entries.<kind>`) uses.\n * Mirrors `contract-psl`'s `buildEntityTypesByDiscriminator`, recomposed here\n * from the packs `ContractDefinition` already carries (`target` +\n * `extensionPacks`) since the TS assembler has no single pre-merged\n * `AuthoringContributions` input to read the way the PSL interpreter does.\n */\nfunction collectEntityTypeDescriptorsByDiscriminator(\n definition: ContractDefinition,\n): ReadonlyMap<string, AuthoringEntityTypeDescriptor> {\n const result = new Map<string, AuthoringEntityTypeDescriptor>();\n const walk = (namespace: AuthoringEntityTypeNamespace): void => {\n for (const value of Object.values(namespace)) {\n if (isAuthoringEntityTypeDescriptor(value)) {\n result.set(value.discriminator, value);\n } else {\n walk(value);\n }\n }\n };\n const components = [definition.target, ...Object.values(definition.extensionPacks ?? {})];\n for (const component of components) {\n const entityTypes = component.authoring?.entityTypes;\n if (entityTypes !== undefined) {\n walk(entityTypes);\n }\n }\n return result;\n}\n\n/**\n * Derives value-sets for every pack entity declared in one namespace,\n * reusing the same `SqlValueSetDerivingEntityTypeOutput.deriveValueSet` hook\n * `contract-psl`'s `lowerExtensionBlocksForNamespace` folds into\n * `entries.valueSet` on the PSL path — so a TS-attached entity (e.g. a\n * native enum) gets its value-set the same way. Entity kinds with no\n * registered descriptor, or whose descriptor output doesn't derive a\n * value-set, contribute nothing.\n */\nfunction deriveEntityValueSets(\n entitiesForNs: Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined,\n entityTypesByDiscriminator: ReadonlyMap<string, AuthoringEntityTypeDescriptor>,\n): Record<string, StorageValueSetInput> | undefined {\n if (entitiesForNs === undefined) return undefined;\n let result: Record<string, StorageValueSetInput> | undefined;\n for (const [kind, entitiesByName] of Object.entries(entitiesForNs)) {\n const descriptor = entityTypesByDiscriminator.get(kind);\n if (descriptor === undefined) continue;\n for (const [name, entity] of Object.entries(entitiesByName)) {\n const derivedValueSet = deriveValueSetFromEntity(descriptor.output, entity);\n if (derivedValueSet === undefined) continue;\n result ??= {};\n result[name] = derivedValueSet;\n }\n }\n return result;\n}\n\n/**\n * Merges a namespace's `enumType()`-derived value-sets with its pack-entity-\n * derived value-sets. Both land in the same `entries.valueSet[name]` slot —\n * which drives value-set → codec typing and the domain-enum CHECK — so a\n * same-named entry in both would let one silently overwrite the other and\n * corrupt whichever column resolves against it. The same collision class the\n * `mergeColumnAndAttachedEntities` guard rejects; the PSL path already hard-errors\n * on the equivalent (`interpretPslDocumentToSqlContract`). Reject it here too.\n */\nfunction mergeNamespaceValueSets(\n namespaceId: string,\n enumValueSets: Record<string, StorageValueSetInput> | undefined,\n packValueSets: Record<string, StorageValueSetInput> | undefined,\n): Record<string, StorageValueSetInput> {\n if (enumValueSets !== undefined && packValueSets !== undefined) {\n for (const name of Object.keys(packValueSets)) {\n if (Object.hasOwn(enumValueSets, name)) {\n throw new Error(\n `buildSqlContractFromDefinition: value-set \"${name}\" in namespace \"${namespaceId}\" is derived from both an enum and a pack entity — names must be unique per namespace.`,\n );\n }\n }\n }\n return { ...enumValueSets, ...packValueSets };\n}\n\nfunction ensureUnboundNamespaceSlot(\n namespaces: SqlStorageInput['namespaces'],\n createNamespace: ContractDefinition['createNamespace'],\n): SqlStorageInput['namespaces'] {\n if (Object.hasOwn(namespaces, UNBOUND_NAMESPACE_ID)) {\n return namespaces;\n }\n const unboundInput: SqlNamespaceInput = {\n id: UNBOUND_NAMESPACE_ID,\n entries: { table: {} },\n };\n const unbound = createNamespace(unboundInput);\n return {\n [UNBOUND_NAMESPACE_ID]: unbound,\n ...namespaces,\n };\n}\n\nexport function buildSqlContractFromDefinition(\n definition: ContractDefinition,\n codecLookup?: CodecLookup,\n): Contract<SqlStorage> {\n const target = definition.target.targetId;\n const defaultNamespaceId = definition.target.defaultNamespaceId;\n const qualifyColumnType = resolveColumnTypeQualifier(definition.target);\n const targetFamily = 'sql';\n const resolveNamespaceId = (m: ModelNode): string =>\n m.namespaceId !== undefined && m.namespaceId.length > 0 ? m.namespaceId : defaultNamespaceId;\n const modelsByName = new Map(definition.models.map((m) => [m.modelName, m]));\n const tableNamespaceByName = new Map(\n definition.models.map((m) => [\n m.tableName,\n m.namespaceId !== undefined && m.namespaceId.length > 0 ? m.namespaceId : defaultNamespaceId,\n ]),\n );\n const modelsByCoordinate = new Map(\n definition.models.map((m) => [`${resolveNamespaceId(m)}:${m.modelName}`, m]),\n );\n\n const tablesByNamespace: Record<string, Record<string, StorageTableInput>> = {};\n const modelNameToNamespaceId = new Map<string, string>();\n const executionDefaults: ExecutionMutationDefault[] = [];\n const modelsByNamespace: Record<string, Record<string, ContractModel>> = {};\n const collectedColumnEntities: CollectedColumnEntities = {};\n const rootEntries: Array<{\n readonly tableName: string;\n readonly namespaceId: string;\n readonly ref: CrossReference;\n }> = [];\n\n for (const semanticModel of definition.models) {\n const tableName = semanticModel.tableName;\n const namespaceId =\n semanticModel.namespaceId !== undefined && semanticModel.namespaceId.length > 0\n ? semanticModel.namespaceId\n : defaultNamespaceId;\n modelNameToNamespaceId.set(semanticModel.modelName, namespaceId);\n // STI variants share the base table; the base model already owns this\n // table name and its root, so the variant contributes neither.\n if (!semanticModel.sharesBaseTable) {\n rootEntries.push({\n tableName,\n namespaceId,\n ref: crossRef(semanticModel.modelName, namespaceId),\n });\n }\n\n // --- Build storage table ---\n\n const columns: Record<string, StorageColumn> = {};\n const fieldToColumn: Record<string, string> = {};\n const domainFields: Record<string, ContractField> = {};\n const domainFieldRefs: Record<string, DomainFieldRef> = {};\n const checksForTable: CheckConstraintInput[] = [];\n\n for (const field of semanticModel.fields) {\n const executionDefaultPhases =\n field.executionDefaults?.onCreate || field.executionDefaults?.onUpdate\n ? field.executionDefaults\n : undefined;\n if (executionDefaultPhases) {\n if (field.default !== undefined) {\n throw new Error(\n `Field \"${semanticModel.modelName}.${field.fieldName}\" cannot define both default and executionDefaults.`,\n );\n }\n if (field.nullable) {\n throw new Error(\n `Field \"${semanticModel.modelName}.${field.fieldName}\" cannot be nullable when executionDefaults are present.`,\n );\n }\n }\n\n const enumHandle = !isValueObjectField(field) ? field.enumTypeHandle : undefined;\n // Authored enums are always registered under the contract's defaultNamespaceId\n // (see the enum registration loop below), so refs must point there regardless\n // of which namespace the consuming model lives in.\n const storageValueSetRef: ValueSetRef | undefined =\n enumHandle !== undefined\n ? {\n plane: 'storage',\n entityKind: 'valueSet',\n namespaceId: defaultNamespaceId,\n entityName: enumHandle.enumName,\n }\n : undefined;\n const domainValueSetRef: ValueSetRef | undefined =\n enumHandle !== undefined\n ? {\n plane: 'domain',\n entityKind: 'enum',\n namespaceId: defaultNamespaceId,\n entityName: enumHandle.enumName,\n }\n : undefined;\n\n // A field authored through a deferred entity-ref column helper (e.g.\n // `pg.enum(handle)`) carries `descriptor.entityRef`: the referenced\n // entity is collected into `collectedColumnEntities` (folded into the\n // same `entries.<kind>` + `entries.valueSet` assembly an entities-channel\n // attachment goes through) and the descriptor is resolved\n // against this field's now-known `namespaceId` — the builder call that\n // produced it ran before the enclosing model associated one. The\n // descriptor is then handed to the target's `qualifyColumnType` hook,\n // which schema-qualifies a native-enum column's type name for its\n // namespace. Keying off the codec id (inside the hook) catches both the\n // TS `pg.enum(handle)` path (via `entityRef`) and the PSL `pg.enum(Ref)`\n // path (resolved inline in the interpreter, no `entityRef`). Because the\n // storage column is built from this qualified descriptor and the domain\n // field derives its `type.typeParams` from that column, both come out\n // qualified in this single pass.\n let resolvedField: FieldNode | ValueObjectFieldNode = field;\n if (!isValueObjectField(field)) {\n let descriptor = field.descriptor;\n const entityRef = descriptor.entityRef;\n if (entityRef !== undefined) {\n collectEntityFromColumn(collectedColumnEntities, namespaceId, entityRef);\n descriptor = resolveEntityRefDescriptor(descriptor, namespaceId);\n }\n descriptor = qualifyColumnDescriptor(descriptor, namespaceId, qualifyColumnType);\n if (descriptor !== field.descriptor) {\n resolvedField = { ...field, descriptor };\n }\n }\n\n const column = buildStorageColumn(resolvedField, storageValueSetRef, codecLookup);\n columns[field.columnName] = column;\n fieldToColumn[field.fieldName] = field.columnName;\n\n // A domain enum (`storageValueSetRef`, from an `enumType()` handle) is\n // stored as a plain scalar column (`text`, `int4`, …) with no native\n // type of its own to enforce membership, so it needs an explicit\n // CHECK — scalar or array, since a `text[]` array has no element-level\n // enforcement either. A value set resolved by an entity-ref type\n // constructor (`field.descriptor.valueSet`, e.g. `pg.enum(Ref)`) binds\n // the column to a codec/native-type pairing that IS the storage-level\n // enforcement (a Postgres native enum type, or another target's\n // equivalent) — including array columns, since the target enforces\n // membership on every element of a native-typed array — so no CHECK\n // for those.\n if (column.valueSet !== undefined && storageValueSetRef !== undefined) {\n checksForTable.push({\n name: `${tableName}_${field.columnName}_check`,\n column: field.columnName,\n valueSet: column.valueSet,\n });\n }\n\n domainFields[field.fieldName] = buildDomainField(field, column, domainValueSetRef);\n\n if (isValueObjectField(field)) {\n domainFieldRefs[field.fieldName] = {\n kind: 'valueObject',\n name: field.valueObjectName,\n ...(field.many ? { many: true } : {}),\n };\n } else if (field.many) {\n domainFieldRefs[field.fieldName] = { kind: 'scalar', many: true };\n }\n\n if (executionDefaultPhases) {\n executionDefaults.push({\n ref: { namespace: namespaceId, table: tableName, column: field.columnName },\n ...ifDefined('onCreate', executionDefaultPhases.onCreate),\n ...ifDefined('onUpdate', executionDefaultPhases.onUpdate),\n });\n }\n }\n\n const authoringForeignKeys: readonly ForeignKeyAuthoringInput[] = (\n semanticModel.foreignKeys ?? []\n ).map((fk) => {\n if (fk.references.spaceId !== undefined) {\n // Cross-space FK: the target lives in a different contract space.\n // Skip local model lookup and carry the spaceId coordinate through.\n const targetNamespaceId = fk.references.namespaceId ?? defaultNamespaceId;\n return {\n source: { namespaceId: asNamespaceId(namespaceId), tableName, columns: fk.columns },\n target: {\n namespaceId: asNamespaceId(targetNamespaceId),\n tableName: fk.references.table,\n columns: fk.references.columns,\n spaceId: fk.references.spaceId,\n },\n ...applyFkDefaults(\n {\n ...ifDefined('constraint', fk.constraint),\n ...ifDefined('index', fk.index),\n },\n definition.foreignKeyDefaults,\n ),\n ...ifDefined('name', fk.name),\n ...ifDefined('onDelete', fk.onDelete),\n ...ifDefined('onUpdate', fk.onUpdate),\n };\n }\n\n const targetModel = assertKnownTargetModel(\n modelsByName,\n modelsByCoordinate,\n semanticModel.modelName,\n fk.references.model,\n fk.references.namespaceId,\n 'Foreign key',\n );\n assertTargetTableMatches(\n semanticModel.modelName,\n targetModel,\n fk.references.table,\n 'Foreign key',\n );\n const targetNamespaceId =\n fk.references.namespaceId ??\n (targetModel.namespaceId !== undefined && targetModel.namespaceId.length > 0\n ? targetModel.namespaceId\n : defaultNamespaceId);\n return {\n source: { namespaceId: asNamespaceId(namespaceId), tableName, columns: fk.columns },\n target: {\n namespaceId: asNamespaceId(targetNamespaceId),\n tableName: fk.references.table,\n columns: fk.references.columns,\n },\n ...applyFkDefaults(\n {\n ...ifDefined('constraint', fk.constraint),\n ...ifDefined('index', fk.index),\n },\n definition.foreignKeyDefaults,\n ),\n ...ifDefined('name', fk.name),\n ...ifDefined('onDelete', fk.onDelete),\n ...ifDefined('onUpdate', fk.onUpdate),\n };\n });\n\n // STI variants share the base table: their columns are already\n // materialised onto the base `ModelNode`, so the variant builds a domain\n // model (below) but no storage table of its own.\n if (!semanticModel.sharesBaseTable) {\n const uniques = (semanticModel.uniques ?? []).map((u) => ({\n columns: u.columns,\n ...ifDefined('name', u.name),\n }));\n const declaredIndexes = (semanticModel.indexes ?? []).map((i) => ({\n columns: i.columns,\n ...ifDefined('name', i.name),\n ...ifDefined('type', i.type),\n ...ifDefined('options', i.options),\n }));\n const primaryKey = semanticModel.id\n ? { columns: semanticModel.id.columns, ...ifDefined('name', semanticModel.id.name) }\n : undefined;\n // FK1: lower each FK's `constraint`/`index` authoring intent into\n // discrete persisted entities here — the one place a table's full\n // constraint context (its own declared indexes/uniques/primary key)\n // is available. A `constraint: false` FK contributes no\n // `foreignKeys[]` entry; an `index: true` FK not already backed by a\n // declared index/unique/primary-key contributes a named `indexes[]`\n // entry. This authoring pipeline is shared by both the TS DSL and the\n // PSL interpreter (which calls `buildSqlContractFromDefinition`\n // directly), so both authoring surfaces materialize identically.\n const { foreignKeys, indexes } = materializeForeignKeysAndIndexes(\n tableName,\n authoringForeignKeys,\n declaredIndexes,\n uniques,\n primaryKey,\n );\n\n const tableInput: StorageTableInput = {\n columns,\n ...ifDefined('control', semanticModel.control),\n uniques,\n indexes,\n foreignKeys,\n ...(primaryKey ? { primaryKey } : {}),\n ...(checksForTable.length > 0 ? { checks: checksForTable } : {}),\n };\n\n let nsTables = tablesByNamespace[namespaceId];\n if (nsTables === undefined) {\n nsTables = {};\n tablesByNamespace[namespaceId] = nsTables;\n }\n if (nsTables[tableName] !== undefined) {\n throw new Error(\n `buildSqlContractFromDefinition: duplicate table \"${tableName}\" in namespace \"${namespaceId}\".`,\n );\n }\n nsTables[tableName] = tableInput;\n }\n\n // --- Build contract model ---\n\n const storageFields: Record<string, { readonly column: string }> = {};\n for (const [fieldName, columnName] of Object.entries(fieldToColumn)) {\n storageFields[fieldName] = { column: columnName };\n }\n\n const columnToField = new Map(\n Object.entries(fieldToColumn).map(([field, col]) => [col, field]),\n );\n const modelRelations: Record<string, ContractRelation> = {};\n for (const relation of semanticModel.relations ?? []) {\n // Cross-space relations have `spaceId` set — the target model lives in\n // a different contract space, so skip local model lookup and validation.\n if (relation.spaceId !== undefined) {\n const targetNamespaceId = relation.namespaceId ?? defaultNamespaceId;\n modelRelations[relation.fieldName] = {\n to: crossRef(relation.toModel, targetNamespaceId, relation.spaceId),\n // Cross-space belongsTo relations are always N:1 (the FK-owning side).\n cardinality: 'N:1',\n on: {\n localFields: relation.on.parentColumns.map((col) => columnToField.get(col) ?? col),\n // For cross-space targets the lowering carries field names directly\n // (no fieldToColumn map available for the remote model).\n targetFields: relation.on.childColumns,\n },\n };\n continue;\n }\n\n const targetModel = assertKnownTargetModel(\n modelsByName,\n modelsByCoordinate,\n semanticModel.modelName,\n relation.toModel,\n relation.toNamespaceId,\n 'Relation',\n );\n assertTargetTableMatches(semanticModel.modelName, targetModel, relation.toTable, 'Relation');\n\n const targetColumnToField = new Map(\n targetModel.fields.map((f) => [f.columnName, f.fieldName]),\n );\n\n const to = crossRef(\n relation.toModel,\n relation.toNamespaceId !== undefined && relation.toNamespaceId.length > 0\n ? relation.toNamespaceId\n : resolveModelNamespaceId(targetModel, modelNameToNamespaceId, defaultNamespaceId),\n );\n const on = {\n localFields: relation.on.parentColumns.map((col) => columnToField.get(col) ?? col),\n targetFields: relation.on.childColumns.map((col) => targetColumnToField.get(col) ?? col),\n };\n\n if (relation.cardinality === 'N:M') {\n if (!relation.through) {\n throw new Error(\n `Relation \"${semanticModel.modelName}.${relation.fieldName}\" with cardinality \"N:M\" requires through metadata`,\n );\n }\n modelRelations[relation.fieldName] = {\n to,\n cardinality: 'N:M',\n on,\n through: buildThroughDescriptor(\n relation.through,\n tableNamespaceByName,\n targetModel,\n semanticModel.modelName,\n relation.fieldName,\n defaultNamespaceId,\n ),\n };\n } else {\n modelRelations[relation.fieldName] = { to, cardinality: relation.cardinality, on };\n }\n }\n\n let namespaceModels = modelsByNamespace[namespaceId];\n if (namespaceModels === undefined) {\n namespaceModels = {};\n modelsByNamespace[namespaceId] = namespaceModels;\n }\n namespaceModels[semanticModel.modelName] = {\n storage: {\n table: tableName,\n namespaceId,\n fields: storageFields,\n },\n fields: domainFields,\n relations: modelRelations,\n };\n }\n\n // --- Assemble contract ---\n\n // Aggregate roots are keyed by bare storage table name. When two models in\n // different namespaces map to the same bare table name, the bare key would\n // collide (last write wins, silently dropping a root), so those entries fall\n // back to a namespace-qualified key. Single-namespace contracts never\n // collide and keep their bare keys unchanged.\n const rootTableNameCounts = new Map<string, number>();\n for (const entry of rootEntries) {\n rootTableNameCounts.set(entry.tableName, (rootTableNameCounts.get(entry.tableName) ?? 0) + 1);\n }\n const roots: Record<string, CrossReference> = {};\n for (const entry of rootEntries) {\n const key =\n (rootTableNameCounts.get(entry.tableName) ?? 0) > 1\n ? `${entry.namespaceId}.${entry.tableName}`\n : entry.tableName;\n roots[key] = entry.ref;\n }\n\n // Normalise raw codec-triple inputs to the `kind: 'codec-instance'`\n // discriminator shape before hashing so the storageHash matches the\n // persisted JSON envelope produced from the SqlStorage class instance\n // (which always carries the discriminator).\n const rawStorageTypes = definition.storageTypes ?? {};\n const documentTypes: Record<string, StorageTypeInstance> = Object.fromEntries(\n Object.entries(rawStorageTypes).map(([name, entry]) => {\n if ((entry as { kind?: unknown }).kind === 'codec-instance') return [name, entry];\n return [\n name,\n toStorageTypeInstance({\n codecId: entry.codecId,\n nativeType: entry.nativeType,\n typeParams: (entry as { typeParams?: Record<string, unknown> }).typeParams ?? {},\n }),\n ];\n }),\n );\n const namespaceCoordinateIds = collectStorageNamespaceCoordinateIds(definition);\n\n // Build per-namespace registries for `enumType()` handles.\n // All authored enums target the contract's default namespace.\n const domainEnumsByNs: Record<string, Record<string, ContractEnum>> = {};\n const storageValueSetsByNs: Record<string, Record<string, StorageValueSetInput>> = {};\n for (const [enumName, handle] of Object.entries(definition.enums ?? {})) {\n if (enumName !== handle.enumName) {\n throw new Error(\n `enum declaration key \"${enumName}\" must match enumType name \"${handle.enumName}\". Aliases are not supported.`,\n );\n }\n const nsId = defaultNamespaceId;\n let domainSlot = domainEnumsByNs[nsId];\n if (domainSlot === undefined) {\n domainSlot = {};\n domainEnumsByNs[nsId] = domainSlot;\n }\n domainSlot[enumName] = {\n codecId: handle.codecId,\n members: handle.enumMembers.map((m) => ({\n name: m.name,\n value: encodeViaCodec(m.value, handle.codecId, codecLookup),\n })),\n };\n\n let storageSlot = storageValueSetsByNs[nsId];\n if (storageSlot === undefined) {\n storageSlot = {};\n storageValueSetsByNs[nsId] = storageSlot;\n }\n storageSlot[enumName] = {\n kind: 'valueSet',\n values: handle.values.map((v) => encodeViaCodec(v, handle.codecId, codecLookup)),\n };\n }\n\n const { createNamespace } = definition;\n const entityTypesByDiscriminator = collectEntityTypeDescriptorsByDiscriminator(definition);\n const namespaces: SqlStorageInput['namespaces'] = Object.fromEntries(\n [...namespaceCoordinateIds].sort().map((id) => {\n const entitiesForNs = mergeColumnAndAttachedEntities(\n id,\n definition.attachedEntities?.[id],\n collectedColumnEntities[id],\n );\n assertNoManagedEntityKinds(id, entitiesForNs);\n\n const enumValueSetEntries = storageValueSetsByNs[id];\n const packValueSetEntries = deriveEntityValueSets(entitiesForNs, entityTypesByDiscriminator);\n const valueSetEntries =\n enumValueSetEntries !== undefined || packValueSetEntries !== undefined\n ? mergeNamespaceValueSets(id, enumValueSetEntries, packValueSetEntries)\n : undefined;\n\n const nsInput: SqlNamespaceInput = {\n id,\n entries: {\n table: tablesByNamespace[id] ?? {},\n ...entitiesForNs,\n ...(valueSetEntries !== undefined && Object.keys(valueSetEntries).length > 0\n ? { valueSet: valueSetEntries }\n : {}),\n },\n };\n return [id, createNamespace(nsInput)];\n }),\n );\n const storageWithoutHash = {\n ...(Object.keys(documentTypes).length > 0 ? { types: documentTypes } : {}),\n namespaces:\n defaultNamespaceId === UNBOUND_NAMESPACE_ID\n ? ensureUnboundNamespaceSlot(namespaces, createNamespace)\n : namespaces,\n };\n const storageHash: StorageHashBase<string> = definition.storageHash\n ? coreHash(definition.storageHash)\n : computeStorageHash({\n target,\n targetFamily,\n storage: storageWithoutHash as Record<string, unknown>,\n ...sqlContractCanonicalizationHooks,\n });\n const storage = new SqlStorage({ ...storageWithoutHash, storageHash });\n\n const executionSection =\n executionDefaults.length > 0\n ? {\n mutations: {\n defaults: executionDefaults.sort((a, b) => {\n const tableCompare = a.ref.table.localeCompare(b.ref.table);\n if (tableCompare !== 0) {\n return tableCompare;\n }\n return a.ref.column.localeCompare(b.ref.column);\n }),\n },\n }\n : undefined;\n\n const extensionNamespaces = definition.extensionPacks\n ? Object.values(definition.extensionPacks).map((pack) => pack.id)\n : undefined;\n\n const extensionPacks: Record<string, unknown> = { ...(definition.extensionPacks || {}) };\n if (extensionNamespaces) {\n for (const namespace of extensionNamespaces) {\n if (!Object.hasOwn(extensionPacks, namespace)) {\n extensionPacks[namespace] = {};\n }\n }\n }\n\n const extensionPackCapabilitySources = definition.extensionPacks\n ? Object.values(definition.extensionPacks).map(\n (pack) => pack.capabilities as CapabilityMatrix | undefined,\n )\n : [];\n const capabilities = mergeCapabilityMatrices(\n definition.target.capabilities as CapabilityMatrix | undefined,\n ...extensionPackCapabilitySources,\n );\n // Internal `profileHash` computation is unchanged from `origin/main`: it\n // continues to fingerprint the author-declared capability subset. With\n // `capabilities` removed from the `defineContract` input that subset is\n // now always empty, so the hash naturally stabilises at `hash({})`.\n const profileHash = computeProfileHash({\n target,\n targetFamily,\n capabilities: {},\n });\n\n const executionWithHash = executionSection\n ? {\n ...executionSection,\n executionHash: computeExecutionHash({ target, targetFamily, execution: executionSection }),\n }\n : undefined;\n\n const valueObjects: Record<string, ContractValueObject> | undefined =\n definition.valueObjects && definition.valueObjects.length > 0\n ? Object.fromEntries(\n definition.valueObjects.map((vo) => [\n vo.name,\n {\n fields: Object.fromEntries(\n vo.fields.map((f) => [\n f.fieldName,\n isValueObjectField(f)\n ? {\n type: { kind: 'valueObject' as const, name: f.valueObjectName },\n nullable: f.nullable,\n ...(f.many ? { many: true } : {}),\n }\n : {\n type: {\n kind: 'scalar' as const,\n codecId: f.descriptor.codecId,\n ...ifDefined('typeParams', f.descriptor.typeParams),\n },\n nullable: f.nullable,\n },\n ]),\n ),\n },\n ]),\n )\n : undefined;\n\n const domainNamespaceIds = new Set(Object.keys(modelsByNamespace));\n if (domainNamespaceIds.size === 0) {\n domainNamespaceIds.add(defaultNamespaceId);\n }\n if (valueObjects !== undefined) {\n domainNamespaceIds.add(defaultNamespaceId);\n }\n for (const nsId of Object.keys(domainEnumsByNs)) {\n domainNamespaceIds.add(nsId);\n }\n const domainNamespaces = Object.fromEntries(\n [...domainNamespaceIds].sort().map((namespaceId) => {\n const modelsInNs = modelsByNamespace[namespaceId] ?? {};\n const enumsInNs = domainEnumsByNs[namespaceId];\n const namespaceSlice = {\n models: modelsInNs,\n ...(namespaceId === defaultNamespaceId && valueObjects !== undefined\n ? { valueObjects }\n : {}),\n ...(enumsInNs !== undefined && Object.keys(enumsInNs).length > 0\n ? { enum: enumsInNs }\n : {}),\n };\n return [namespaceId, namespaceSlice];\n }),\n );\n\n const contract: Contract<SqlStorage> = {\n target,\n targetFamily,\n ...ifDefined('defaultControlPolicy', definition.defaultControlPolicy),\n domain: { namespaces: domainNamespaces },\n roots,\n storage,\n ...(executionWithHash ? { execution: executionWithHash } : {}),\n extensionPacks,\n capabilities,\n profileHash,\n meta: {},\n };\n\n assertStorageSemantics(definition, contract);\n\n return contract;\n}\n"],"mappings":"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"}
|
package/dist/config-types.d.mts
CHANGED
|
@@ -2,7 +2,6 @@ import { Contract, ControlPolicy } from "@prisma-next/contract/types";
|
|
|
2
2
|
import { SqlNamespaceBase, SqlNamespaceInput } from "@prisma-next/sql-contract/types";
|
|
3
3
|
import { ContractConfig, ContractConfig as ContractConfig$1 } from "@prisma-next/config/config-types";
|
|
4
4
|
import { TargetPackRef } from "@prisma-next/framework-components/components";
|
|
5
|
-
|
|
6
5
|
//#region src/config-types.d.ts
|
|
7
6
|
interface TypeScriptContractSpecifierOptions {
|
|
8
7
|
readonly defaultControlPolicy?: ControlPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-types.d.mts","names":[],"sources":["../src/config-types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-types.d.mts","names":[],"sources":["../src/config-types.ts"],"mappings":";;;;;UAuBiB;WACN,uBAAuB;;iBAGlB,cAAc;WACnB;WACA,QAAQ;WACR,kBAAkB,OAAO,sBAAsB;WAC/C,uBAAuB;IAC9B;iBAiBY,mBACd,UAAU,UACV,iBACA,UAAU,qCACT;iBAaa,2BACd,sBACA,iBACA,UAAU,qCACT"}
|
package/dist/config-types.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as buildSqlContractFromDefinition } from "./build-contract-
|
|
1
|
+
import { t as buildSqlContractFromDefinition } from "./build-contract-CAX6inbk.mjs";
|
|
2
2
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { applySpecifierDefaultControlPolicy } from "@prisma-next/contract/apply-specifier-default-control-policy";
|
|
@@ -7,7 +7,6 @@ import { ContractWithTypeMaps, Index as Index$1, ReferentialAction, SqlNamespace
|
|
|
7
7
|
import { PackEntityHandle } from "@prisma-next/sql-contract/entity-handle-lowering-hook";
|
|
8
8
|
import { ExtensionPackRef, FamilyPackRef, TargetPackRef } from "@prisma-next/framework-components/components";
|
|
9
9
|
import { CodecLookup, ColumnTypeDescriptor } from "@prisma-next/framework-components/codec";
|
|
10
|
-
|
|
11
10
|
//#region src/contract-dsl.d.ts
|
|
12
11
|
type NamingStrategy = 'identity' | 'snake_case';
|
|
13
12
|
type NamingConfig = {
|
|
@@ -222,7 +221,7 @@ type TargetFieldRef<ModelName extends string = string, FieldName extends string
|
|
|
222
221
|
*/
|
|
223
222
|
readonly columnName?: string;
|
|
224
223
|
};
|
|
225
|
-
type ModelTokenRefs<ModelName extends string, Fields extends Record<string, ScalarFieldBuilder>, TSpaceId extends string = '<self>'> = { readonly [K in keyof Fields]: TargetFieldRef<ModelName, K & string, TSpaceId
|
|
224
|
+
type ModelTokenRefs<ModelName extends string, Fields extends Record<string, ScalarFieldBuilder>, TSpaceId extends string = '<self>'> = { readonly [K in keyof Fields]: TargetFieldRef<ModelName, K & string, TSpaceId>; };
|
|
226
225
|
type ConstraintOptions<Name extends string | undefined = string | undefined> = {
|
|
227
226
|
readonly name?: Name;
|
|
228
227
|
};
|
|
@@ -235,7 +234,7 @@ type IndexInput<Name extends string | undefined, IndexTypes extends IndexTypeMap
|
|
|
235
234
|
}) | { readonly [K in keyof IndexTypes & string]: ConstraintOptions<Name> & {
|
|
236
235
|
readonly type: K;
|
|
237
236
|
readonly options: IndexTypes[K]['options'];
|
|
238
|
-
} }[keyof IndexTypes & string];
|
|
237
|
+
}; }[keyof IndexTypes & string];
|
|
239
238
|
type ForeignKeyOptions<Name extends string | undefined = string | undefined> = ConstraintOptions<Name> & {
|
|
240
239
|
readonly onDelete?: 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
|
|
241
240
|
readonly onUpdate?: 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
|
|
@@ -294,16 +293,16 @@ declare function createConstraintsDsl<IndexTypes extends IndexTypeMap = Record<n
|
|
|
294
293
|
ref: <ModelName extends string, FieldName extends string>(modelName: ModelName, fieldName: FieldName) => TargetFieldRef<ModelName, FieldName>;
|
|
295
294
|
id: {
|
|
296
295
|
<FieldName extends string, Name extends string | undefined = undefined>(field: ColumnRef<FieldName>, options?: NamedConstraintSpec<Name>): IdConstraint<readonly [FieldName], Name>;
|
|
297
|
-
<FieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string
|
|
296
|
+
<FieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: NamedConstraintSpec<Name>): IdConstraint<FieldNames, Name>;
|
|
298
297
|
};
|
|
299
298
|
unique: {
|
|
300
299
|
<FieldName extends string>(field: ColumnRef<FieldName>, options?: ConstraintOptions): UniqueConstraint<readonly [FieldName]>;
|
|
301
|
-
<FieldNames extends readonly string[]>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string
|
|
300
|
+
<FieldNames extends readonly string[]>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: ConstraintOptions): UniqueConstraint<FieldNames>;
|
|
302
301
|
};
|
|
303
|
-
index: <FieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string
|
|
302
|
+
index: <FieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: IndexInput<Name, IndexTypes>) => IndexConstraint<FieldNames, Name>;
|
|
304
303
|
foreignKey: {
|
|
305
304
|
<SourceFieldName extends string, TargetModelName extends string, TargetFieldName extends string, Name extends string | undefined = undefined>(field: ColumnRef<SourceFieldName>, target: TargetFieldRef<TargetModelName, TargetFieldName>, options?: ForeignKeyOptions<Name>): ForeignKeyConstraint<readonly [SourceFieldName], TargetModelName, readonly [TargetFieldName], Name>;
|
|
306
|
-
<SourceFieldNames extends readonly string[], TargetModelName extends string, TargetFieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof SourceFieldNames]: ColumnRef<SourceFieldNames[K] & string
|
|
305
|
+
<SourceFieldNames extends readonly string[], TargetModelName extends string, TargetFieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof SourceFieldNames]: ColumnRef<SourceFieldNames[K] & string>; }, target: { readonly [K in keyof TargetFieldNames]: TargetFieldRef<TargetModelName, TargetFieldNames[K] & string>; }, options?: ForeignKeyOptions<Name>): ForeignKeyConstraint<SourceFieldNames, TargetModelName, TargetFieldNames, Name>;
|
|
307
306
|
};
|
|
308
307
|
};
|
|
309
308
|
type ConstraintsDsl = ReturnType<typeof createConstraintsDsl>;
|
|
@@ -317,12 +316,12 @@ type SqlStageSpec = {
|
|
|
317
316
|
readonly indexes?: readonly IndexConstraint[];
|
|
318
317
|
readonly foreignKeys?: readonly ForeignKeyConstraint[];
|
|
319
318
|
};
|
|
320
|
-
type FieldRefs<Fields extends Record<string, ScalarFieldBuilder>> = { readonly [K in keyof Fields]: ColumnRef<K & string
|
|
319
|
+
type FieldRefs<Fields extends Record<string, ScalarFieldBuilder>> = { readonly [K in keyof Fields]: ColumnRef<K & string>; };
|
|
321
320
|
type AttributeContext<Fields extends Record<string, ScalarFieldBuilder>> = {
|
|
322
321
|
readonly fields: FieldRefs<Fields>;
|
|
323
322
|
readonly constraints: Pick<ConstraintsDsl, 'id' | 'unique'>;
|
|
324
323
|
};
|
|
325
|
-
type PackAwareIndex<IndexTypes extends IndexTypeMap> = <FieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string
|
|
324
|
+
type PackAwareIndex<IndexTypes extends IndexTypeMap> = <FieldNames extends readonly string[], Name extends string | undefined = undefined>(fields: { readonly [K in keyof FieldNames]: ColumnRef<FieldNames[K] & string>; }, options?: IndexInput<Name, IndexTypes>) => IndexConstraint<FieldNames, Name>;
|
|
326
325
|
type PackAwareSqlConstraints<IndexTypes extends IndexTypeMap> = {
|
|
327
326
|
readonly foreignKey: ConstraintsDsl['foreignKey'];
|
|
328
327
|
readonly ref: ConstraintsDsl['ref'];
|
|
@@ -337,12 +336,12 @@ type StaticLiteralName<Name> = Name extends string ? (string extends Name ? neve
|
|
|
337
336
|
type NamedConstraintLiteralName<Constraint> = Constraint extends {
|
|
338
337
|
readonly name?: infer Name;
|
|
339
338
|
} ? StaticLiteralName<Name> : never;
|
|
340
|
-
type DuplicateLiteralNames<Items extends readonly unknown[], Seen extends string = never, Duplicates extends string = never> = Items extends readonly [infer First, ...infer Rest extends readonly unknown[]] ? NamedConstraintLiteralName<First> extends infer Name extends string ? Name extends Seen ? DuplicateLiteralNames<Rest, Seen, Duplicates | Name> : DuplicateLiteralNames<Rest, Seen | Name, Duplicates> : DuplicateLiteralNames<Rest, Seen, Duplicates> : Duplicates;
|
|
339
|
+
type DuplicateLiteralNames<Items extends readonly unknown[], Seen extends string = never, Duplicates extends string = never> = Items extends readonly [infer First, ...infer Rest extends readonly unknown[]] ? NamedConstraintLiteralName<First> extends (infer Name extends string) ? Name extends Seen ? DuplicateLiteralNames<Rest, Seen, Duplicates | Name> : DuplicateLiteralNames<Rest, Seen | Name, Duplicates> : DuplicateLiteralNames<Rest, Seen, Duplicates> : Duplicates;
|
|
341
340
|
type InlineIdLiteralName<Fields extends Record<string, ScalarFieldBuilder>> = { readonly [FieldName in keyof Fields]: FieldStateOf<Fields[FieldName]> extends {
|
|
342
341
|
readonly id: {
|
|
343
342
|
readonly name?: infer Name;
|
|
344
343
|
};
|
|
345
|
-
} ? StaticLiteralName<Name> : never }[keyof Fields];
|
|
344
|
+
} ? StaticLiteralName<Name> : never; }[keyof Fields];
|
|
346
345
|
type AttributeIdLiteralName<AttributesSpec extends ModelAttributesSpec | undefined> = AttributesSpec extends {
|
|
347
346
|
readonly id?: {
|
|
348
347
|
readonly name?: infer Name;
|
|
@@ -552,8 +551,17 @@ type NamedConstraintSpec<Name extends string | undefined = string | undefined> =
|
|
|
552
551
|
type NamedConstraintState<Enabled extends boolean, Name extends string | undefined = undefined> = Enabled extends true ? NamedConstraintSpec<Name> : undefined;
|
|
553
552
|
type OptionalObjectArgumentKeys<Properties extends Record<string, AuthoringArgumentDescriptor>> = { readonly [K in keyof Properties]: Properties[K] extends {
|
|
554
553
|
readonly optional: true;
|
|
555
|
-
} ? K : never }[keyof Properties];
|
|
556
|
-
type
|
|
554
|
+
} ? K : never; }[keyof Properties];
|
|
555
|
+
type RequiredObjectArgumentKeys<Properties extends Record<string, AuthoringArgumentDescriptor>> = Exclude<keyof Properties, OptionalObjectArgumentKeys<Properties>>;
|
|
556
|
+
/**
|
|
557
|
+
* When every property is optional the result must be a plain weak type rather
|
|
558
|
+
* than `{} & { … }`: TypeScript's weak-type check rejects an object sharing
|
|
559
|
+
* none of the target's properties, but only when the target is weak — and an
|
|
560
|
+
* intersection with `{}` is not. The TS authoring surface runs no runtime
|
|
561
|
+
* argument validation, so this check is the only thing rejecting a foreign key
|
|
562
|
+
* such as `field.nanoid({ bogus: 1 })`.
|
|
563
|
+
*/
|
|
564
|
+
type ObjectArgumentType<Properties extends Record<string, AuthoringArgumentDescriptor>> = [RequiredObjectArgumentKeys<Properties>] extends [never] ? { readonly [K in OptionalObjectArgumentKeys<Properties>]?: ArgTypeFromDescriptor<Properties[K]>; } : { readonly [K in RequiredObjectArgumentKeys<Properties>]: ArgTypeFromDescriptor<Properties[K]>; } & { readonly [K in OptionalObjectArgumentKeys<Properties>]?: ArgTypeFromDescriptor<Properties[K]>; };
|
|
557
565
|
type ArgTypeFromDescriptor<Arg extends AuthoringArgumentDescriptor> = Arg extends {
|
|
558
566
|
readonly kind: 'string';
|
|
559
567
|
} ? string : Arg extends {
|
|
@@ -563,10 +571,24 @@ type ArgTypeFromDescriptor<Arg extends AuthoringArgumentDescriptor> = Arg extend
|
|
|
563
571
|
} ? number : Arg extends {
|
|
564
572
|
readonly kind: 'stringArray';
|
|
565
573
|
} ? readonly string[] : Arg extends {
|
|
574
|
+
readonly kind: 'option';
|
|
575
|
+
readonly values: infer Values extends readonly string[];
|
|
576
|
+
} ? Values[number] : Arg extends {
|
|
566
577
|
readonly kind: 'object';
|
|
567
578
|
readonly properties: infer Properties extends Record<string, AuthoringArgumentDescriptor>;
|
|
568
579
|
} ? ObjectArgumentType<Properties> : never;
|
|
569
|
-
|
|
580
|
+
/**
|
|
581
|
+
* Recursive rewrite (not a mapped tuple type) so a descriptor marked
|
|
582
|
+
* `optional: true` gets an optional tuple slot (`Type?`), letting callers
|
|
583
|
+
* omit it and every optional arg after it. Required args must precede
|
|
584
|
+
* optional args in a descriptor's `args` list — TypeScript rejects an
|
|
585
|
+
* optional tuple element followed by a required one, and the runtime
|
|
586
|
+
* (`validateAuthoringHelperArguments`'s `minimumArgs`) already treats an
|
|
587
|
+
* optional-before-required arg as effectively required.
|
|
588
|
+
*/
|
|
589
|
+
type TupleFromArgumentDescriptors<Args extends readonly AuthoringArgumentDescriptor[]> = Args extends readonly [infer Head extends AuthoringArgumentDescriptor, ...infer Tail extends readonly AuthoringArgumentDescriptor[]] ? Head extends {
|
|
590
|
+
readonly optional: true;
|
|
591
|
+
} ? readonly [ArgTypeFromDescriptor<Head>?, ...TupleFromArgumentDescriptors<Tail>] : readonly [ArgTypeFromDescriptor<Head>, ...TupleFromArgumentDescriptors<Tail>] : readonly [];
|
|
570
592
|
type SupportsNamedConstraintOptions<Descriptor extends AuthoringFieldPresetDescriptor> = Descriptor['output'] extends {
|
|
571
593
|
readonly id: true;
|
|
572
594
|
} ? true : Descriptor['output'] extends {
|
|
@@ -577,7 +599,7 @@ type ResolveTemplateValue<Template, Args extends readonly unknown[]> = Template
|
|
|
577
599
|
readonly index: infer Index extends number;
|
|
578
600
|
readonly path?: infer Path extends readonly string[] | undefined;
|
|
579
601
|
readonly default?: infer Default;
|
|
580
|
-
} ? ResolveTemplateArgValue<Args[Index], Path, Default, Args> : Template extends readonly unknown[] ? { readonly [K in keyof Template]: ResolveTemplateValue<Template[K], Args
|
|
602
|
+
} ? ResolveTemplateArgValue<Args[Index], Path, Default, Args> : Template extends readonly unknown[] ? { readonly [K in keyof Template]: ResolveTemplateValue<Template[K], Args>; } : Template extends Record<string, unknown> ? { readonly [K in keyof Template]: ResolveTemplateValue<Template[K], Args>; } : Template;
|
|
581
603
|
type ResolveTemplatePathValue<Value, Path extends readonly string[] | undefined> = Path extends readonly [infer Segment extends string, ...infer Rest extends readonly string[]] ? Segment extends keyof NonNullable<Value> ? ResolveTemplatePathValue<NonNullable<Value>[Segment], Rest> : never : Value;
|
|
582
604
|
type ResolveTemplateDefaultValue<Value, Default, Args extends readonly unknown[]> = Default extends undefined ? Value : [Value] extends [never] ? ResolveTemplateValue<Default, Args> : undefined extends Value ? Exclude<Value, undefined> | ResolveTemplateValue<Default, Args> : Value;
|
|
583
605
|
type ResolveTemplateArgValue<Value, Path extends readonly string[] | undefined, Default, Args extends readonly unknown[]> = ResolveTemplateDefaultValue<ResolveTemplatePathValue<Value, Path>, Default, Args>;
|
|
@@ -585,11 +607,20 @@ type FieldBuilderFromPresetDescriptor<Descriptor extends AuthoringFieldPresetDes
|
|
|
585
607
|
type FieldHelperFunctionWithoutNamedConstraint<Descriptor extends AuthoringFieldPresetDescriptor> = Descriptor extends {
|
|
586
608
|
readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
|
|
587
609
|
} ? <const Params extends TupleFromArgumentDescriptors<Args>>(...args: Params) => FieldBuilderFromPresetDescriptor<Descriptor, Params> : () => FieldBuilderFromPresetDescriptor<Descriptor, readonly []>;
|
|
610
|
+
/**
|
|
611
|
+
* An intersection of two call signatures rather than one rest-tuple signature
|
|
612
|
+
* with a trailing `options?`. Once optional descriptors yield optional tuple
|
|
613
|
+
* slots, `Params` can infer as the empty tuple, and a single-argument call
|
|
614
|
+
* such as `field.id.nanoid({ size: 16 })` would bind its preset argument to
|
|
615
|
+
* the trailing optional `options` parameter. Resolving the no-options
|
|
616
|
+
* signature first, and falling through to the options-required signature only
|
|
617
|
+
* when the argument list cannot satisfy it, keeps both spellings working.
|
|
618
|
+
*/
|
|
588
619
|
type FieldHelperFunctionWithNamedConstraint<Descriptor extends AuthoringFieldPresetDescriptor> = Descriptor extends {
|
|
589
620
|
readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
|
|
590
|
-
} ? <const Params extends TupleFromArgumentDescriptors<Args>, const Name extends string | undefined = undefined>(...args: [...params: Params, options
|
|
621
|
+
} ? (<const Params extends TupleFromArgumentDescriptors<Args>>(...args: Params) => FieldBuilderFromPresetDescriptor<Descriptor, Params>) & (<const Params extends TupleFromArgumentDescriptors<Args>, const Name extends string | undefined = undefined>(...args: [...params: Params, options: NamedConstraintSpec<Name>]) => FieldBuilderFromPresetDescriptor<Descriptor, Params, Name>) : <const Name extends string | undefined = undefined>(options?: NamedConstraintSpec<Name>) => FieldBuilderFromPresetDescriptor<Descriptor, readonly [], Name>;
|
|
591
622
|
type FieldHelperFunction<Descriptor extends AuthoringFieldPresetDescriptor> = SupportsNamedConstraintOptions<Descriptor> extends true ? FieldHelperFunctionWithNamedConstraint<Descriptor> : FieldHelperFunctionWithoutNamedConstraint<Descriptor>;
|
|
592
|
-
type FieldHelpersFromNamespace<Namespace> = { readonly [K in keyof Namespace]: Namespace[K] extends AuthoringFieldPresetDescriptor ? FieldHelperFunction<Namespace[K]> : Namespace[K] extends Record<string, unknown> ? FieldHelpersFromNamespace<Namespace[K]> : never };
|
|
623
|
+
type FieldHelpersFromNamespace<Namespace> = { readonly [K in keyof Namespace]: Namespace[K] extends AuthoringFieldPresetDescriptor ? FieldHelperFunction<Namespace[K]> : Namespace[K] extends Record<string, unknown> ? FieldHelpersFromNamespace<Namespace[K]> : never; };
|
|
593
624
|
//#endregion
|
|
594
625
|
//#region src/contract-types.d.ts
|
|
595
626
|
type ExtractCodecTypesFromPack<P> = P extends {
|
|
@@ -597,22 +628,22 @@ type ExtractCodecTypesFromPack<P> = P extends {
|
|
|
597
628
|
output: unknown;
|
|
598
629
|
}>;
|
|
599
630
|
} ? C : Record<string, never>;
|
|
600
|
-
type MergeExtensionCodecTypes<Packs extends Record<string, unknown>> = UnionToIntersection<{ [K in keyof Packs]: ExtractCodecTypesFromPack<Packs[K]
|
|
631
|
+
type MergeExtensionCodecTypes<Packs extends Record<string, unknown>> = UnionToIntersection<{ [K in keyof Packs]: ExtractCodecTypesFromPack<Packs[K]>; }[keyof Packs]>;
|
|
601
632
|
type MergeExtensionCodecTypesSafe<Packs> = Packs extends Record<string, unknown> ? keyof Packs extends never ? Record<string, never> : MergeExtensionCodecTypes<Packs> : Record<string, never>;
|
|
602
633
|
type ExtractIndexTypesFromPack<P> = P extends {
|
|
603
634
|
readonly indexTypes: IndexTypeRegistration<infer M>;
|
|
604
635
|
} ? M : Record<never, never>;
|
|
605
|
-
type AllIndexTypeLiterals<Packs> = Packs extends Record<string, unknown> ? { [K in keyof Packs]: keyof ExtractIndexTypesFromPack<Packs[K]
|
|
606
|
-
type MergeExtensionIndexTypes<Packs extends Record<string, unknown>> = { readonly [Lit in AllIndexTypeLiterals<Packs>]: Extract<{ [K in keyof Packs]: Lit extends keyof ExtractIndexTypesFromPack<Packs[K]> ? ExtractIndexTypesFromPack<Packs[K]>[Lit] : never }[keyof Packs], {
|
|
636
|
+
type AllIndexTypeLiterals<Packs> = Packs extends Record<string, unknown> ? { [K in keyof Packs]: keyof ExtractIndexTypesFromPack<Packs[K]>; }[keyof Packs] & string : never;
|
|
637
|
+
type MergeExtensionIndexTypes<Packs extends Record<string, unknown>> = { readonly [Lit in AllIndexTypeLiterals<Packs>]: Extract<{ [K in keyof Packs]: Lit extends keyof ExtractIndexTypesFromPack<Packs[K]> ? ExtractIndexTypesFromPack<Packs[K]>[Lit] : never; }[keyof Packs], {
|
|
607
638
|
readonly options: unknown;
|
|
608
|
-
}
|
|
639
|
+
}>; };
|
|
609
640
|
type DefinitionExtensionPacks<Definition> = Definition extends {
|
|
610
641
|
readonly extensionPacks?: infer Packs extends Record<string, ExtensionPackRef<'sql', string>>;
|
|
611
642
|
} ? Packs : Record<never, never>;
|
|
612
643
|
type ExtractPackCapabilities<P> = P extends {
|
|
613
644
|
readonly capabilities?: infer Caps extends Record<string, Record<string, boolean>>;
|
|
614
645
|
} ? Caps : never;
|
|
615
|
-
type MergeExtensionPackCapabilities<Packs> = Packs extends Record<string, unknown> ? keyof Packs extends never ? Record<string, never> : UnionToIntersection<{ [K in keyof Packs]: ExtractPackCapabilities<Packs[K]
|
|
646
|
+
type MergeExtensionPackCapabilities<Packs> = Packs extends Record<string, unknown> ? keyof Packs extends never ? Record<string, never> : UnionToIntersection<{ [K in keyof Packs]: ExtractPackCapabilities<Packs[K]>; }[keyof Packs]> : Record<string, never>;
|
|
616
647
|
type Defaulted<T, Fallback> = [T] extends [never] ? Fallback : T;
|
|
617
648
|
type DerivedCapabilities<Definition> = Defaulted<ExtractPackCapabilities<DefinitionTarget<Definition>>, Record<string, never>> & MergeExtensionPackCapabilities<DefinitionExtensionPacks<Definition>>;
|
|
618
649
|
type DefinitionTargetId<Definition> = Definition extends {
|
|
@@ -700,9 +731,9 @@ type DescriptorTypeParams<Descriptor> = Descriptor extends {
|
|
|
700
731
|
type DescriptorTypeRef<Descriptor> = Descriptor extends {
|
|
701
732
|
readonly typeRef: infer TypeRef extends string;
|
|
702
733
|
} ? TypeRef : undefined;
|
|
703
|
-
type LookupNamedStorageTypeKeyByValue<Definition, TypeRef extends StorageType> = { [TypeName in keyof DefinitionTypes<Definition> & string]: [TypeRef] extends [DefinitionTypes<Definition>[TypeName]] ? [DefinitionTypes<Definition>[TypeName]] extends [TypeRef] ? TypeName : never : never }[keyof DefinitionTypes<Definition> & string];
|
|
734
|
+
type LookupNamedStorageTypeKeyByValue<Definition, TypeRef extends StorageType> = { [TypeName in keyof DefinitionTypes<Definition> & string]: [TypeRef] extends [DefinitionTypes<Definition>[TypeName]] ? [DefinitionTypes<Definition>[TypeName]] extends [TypeRef] ? TypeName : never : never; }[keyof DefinitionTypes<Definition> & string];
|
|
704
735
|
type ResolveNamedStorageTypeKey<Definition, TypeRef> = TypeRef extends string ? TypeRef : TypeRef extends StorageType ? [LookupNamedStorageTypeKeyByValue<Definition, TypeRef>] extends [never] ? string : LookupNamedStorageTypeKeyByValue<Definition, TypeRef> : never;
|
|
705
|
-
type ResolveNamedStorageType<Definition, TypeRef> = ResolveNamedStorageTypeKey<Definition, TypeRef> extends infer TypeName extends string ? TypeName extends keyof DefinitionTypes<Definition> ? DefinitionTypes<Definition>[TypeName] : StorageTypeInstance : StorageTypeInstance;
|
|
736
|
+
type ResolveNamedStorageType<Definition, TypeRef> = ResolveNamedStorageTypeKey<Definition, TypeRef> extends (infer TypeName extends string) ? TypeName extends keyof DefinitionTypes<Definition> ? DefinitionTypes<Definition>[TypeName] : StorageTypeInstance : StorageTypeInstance;
|
|
706
737
|
type EnumFieldHandle<FieldState> = [FieldTypeRefOf<FieldState>] extends [never] ? never : FieldTypeRefOf<FieldState> extends EnumTypeHandle ? FieldTypeRefOf<FieldState> : never;
|
|
707
738
|
type EnumHandleDescriptor<Handle> = Handle extends {
|
|
708
739
|
readonly codecId: infer CodecId extends string;
|
|
@@ -718,14 +749,14 @@ type ModelTableName<Definition, ModelName extends ModelNames<Definition>> = [Pre
|
|
|
718
749
|
readonly table?: infer TableName;
|
|
719
750
|
} ? TableName : never>] extends [never] ? ApplyNamingType<ModelName, DefinitionTableNaming<Definition>> : Present<ModelSql<Definition, ModelName> extends {
|
|
720
751
|
readonly table?: infer TableName;
|
|
721
|
-
} ? TableName : never> extends infer ExplicitTableName extends string ? ExplicitTableName : ApplyNamingType<ModelName, DefinitionTableNaming<Definition>>;
|
|
722
|
-
type ModelColumnName<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>> = [FieldColumnOverrideOf<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? ApplyNamingType<FieldName, DefinitionColumnNaming<Definition>> : FieldColumnOverrideOf<ModelFieldState<Definition, ModelName, FieldName>> extends infer ExplicitColumnName extends string ? ExplicitColumnName : ApplyNamingType<FieldName, DefinitionColumnNaming<Definition>>;
|
|
752
|
+
} ? TableName : never> extends (infer ExplicitTableName extends string) ? ExplicitTableName : ApplyNamingType<ModelName, DefinitionTableNaming<Definition>>;
|
|
753
|
+
type ModelColumnName<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>> = [FieldColumnOverrideOf<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? ApplyNamingType<FieldName, DefinitionColumnNaming<Definition>> : FieldColumnOverrideOf<ModelFieldState<Definition, ModelName, FieldName>> extends (infer ExplicitColumnName extends string) ? ExplicitColumnName : ApplyNamingType<FieldName, DefinitionColumnNaming<Definition>>;
|
|
723
754
|
type FieldNamesToColumnNames<Definition, ModelName extends ModelNames<Definition>, FieldNames extends readonly string[]> = FieldNames extends readonly [] ? readonly [] : FieldNames extends readonly [infer First extends ModelFieldNames<Definition, ModelName>, ...infer Rest extends readonly string[]] ? readonly [ModelColumnName<Definition, ModelName, First>, ...FieldNamesToColumnNames<Definition, ModelName, Rest>] : readonly string[];
|
|
724
|
-
type InlineIdFieldName<Definition, ModelName extends ModelNames<Definition>> = { [FieldName in ModelFieldNames<Definition, ModelName>]: [FieldInlineIdSpecOf<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? never : FieldName }[ModelFieldNames<Definition, ModelName>];
|
|
755
|
+
type InlineIdFieldName<Definition, ModelName extends ModelNames<Definition>> = { [FieldName in ModelFieldNames<Definition, ModelName>]: [FieldInlineIdSpecOf<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? never : FieldName; }[ModelFieldNames<Definition, ModelName>];
|
|
725
756
|
type InlineIdFieldNames<Definition, ModelName extends ModelNames<Definition>> = [InlineIdFieldName<Definition, ModelName>] extends [never] ? undefined : readonly [InlineIdFieldName<Definition, ModelName>];
|
|
726
757
|
type InlineIdName<Definition, ModelName extends ModelNames<Definition>> = { [FieldName in ModelFieldNames<Definition, ModelName>]: FieldInlineIdSpecOf<ModelFieldState<Definition, ModelName, FieldName>> extends {
|
|
727
758
|
readonly name?: infer Name extends string;
|
|
728
|
-
} ? Name : never }[ModelFieldNames<Definition, ModelName>];
|
|
759
|
+
} ? Name : never; }[ModelFieldNames<Definition, ModelName>];
|
|
729
760
|
type AttributeIdFieldNames<Definition, ModelName extends ModelNames<Definition>> = AttributeStageIdFieldNames<ModelAttributes<Definition, ModelName>>;
|
|
730
761
|
type AttributeIdName<Definition, ModelName extends ModelNames<Definition>> = Present<ModelAttributes<Definition, ModelName> extends {
|
|
731
762
|
readonly id?: {
|
|
@@ -752,7 +783,7 @@ type BuiltModels<Definition> = { readonly [ModelName in ModelNames<Definition>]:
|
|
|
752
783
|
readonly table: ModelTableName<Definition, ModelName>;
|
|
753
784
|
readonly fields: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: {
|
|
754
785
|
readonly column: ModelColumnName<Definition, ModelName, FieldName>;
|
|
755
|
-
} };
|
|
786
|
+
}; };
|
|
756
787
|
};
|
|
757
788
|
readonly fields: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: {
|
|
758
789
|
readonly nullable: ModelStorageColumn<Definition, ModelName, FieldName>['nullable'];
|
|
@@ -760,12 +791,12 @@ type BuiltModels<Definition> = { readonly [ModelName in ModelNames<Definition>]:
|
|
|
760
791
|
readonly kind: 'scalar';
|
|
761
792
|
readonly codecId: ModelStorageColumn<Definition, ModelName, FieldName>['codecId'];
|
|
762
793
|
};
|
|
763
|
-
} };
|
|
764
|
-
readonly relations: { readonly [RelName in StagedModelRelationNames<Definition, ModelName>]: ContractRelation };
|
|
765
|
-
} };
|
|
794
|
+
}; };
|
|
795
|
+
readonly relations: { readonly [RelName in StagedModelRelationNames<Definition, ModelName>]: ContractRelation; };
|
|
796
|
+
}; };
|
|
766
797
|
type BuiltModelColumnMappings<Definition, ModelName extends ModelNames<Definition>> = BuiltModels<Definition>[ModelName]['storage']['fields'];
|
|
767
798
|
type BuiltModelTableName<Definition, ModelName extends ModelNames<Definition>> = BuiltModels<Definition>[ModelName]['storage']['table'];
|
|
768
|
-
type BuiltStorageTableColumns<Definition, ModelName extends ModelNames<Definition>> = { readonly [FieldName in keyof BuiltModelColumnMappings<Definition, ModelName> & string as BuiltModelColumnMappings<Definition, ModelName>[FieldName]['column']]: ModelStorageColumn<Definition, ModelName, FieldName
|
|
799
|
+
type BuiltStorageTableColumns<Definition, ModelName extends ModelNames<Definition>> = { readonly [FieldName in keyof BuiltModelColumnMappings<Definition, ModelName> & string as BuiltModelColumnMappings<Definition, ModelName>[FieldName]['column']]: ModelStorageColumn<Definition, ModelName, FieldName>; };
|
|
769
800
|
type BuiltStorageTables<Definition> = { readonly [ModelName in ModelNames<Definition> as BuiltModelTableName<Definition, ModelName>]: {
|
|
770
801
|
readonly columns: BuiltStorageTableColumns<Definition, ModelName>;
|
|
771
802
|
readonly uniques: ReadonlyArray<{
|
|
@@ -796,7 +827,7 @@ type BuiltStorageTables<Definition> = { readonly [ModelName in ModelNames<Defini
|
|
|
796
827
|
readonly columns: FieldNamesToColumnNames<Definition, ModelName, ModelIdFieldNames<Definition, ModelName>>;
|
|
797
828
|
readonly name?: ModelIdName<Definition, ModelName>;
|
|
798
829
|
};
|
|
799
|
-
} : Record<string, never>) };
|
|
830
|
+
} : Record<string, never>); };
|
|
800
831
|
type DefinitionEnums<Definition> = Definition extends {
|
|
801
832
|
readonly enums?: infer E;
|
|
802
833
|
} ? Present<E> extends Record<string, EnumTypeHandle> ? string extends keyof Present<E> ? Record<never, never> : Present<E> : Record<never, never> : Record<never, never>;
|
|
@@ -808,8 +839,8 @@ type EnumHandleAccessorType<Handle> = Handle extends EnumTypeHandle<infer _Name,
|
|
|
808
839
|
nameOf(v: Values[number]): string | undefined;
|
|
809
840
|
ordinalOf(v: Values[number]): number;
|
|
810
841
|
} : never;
|
|
811
|
-
type BuiltEnumAccessors<Definition> = { readonly [K in keyof DefinitionEnums<Definition>]: EnumHandleAccessorType<DefinitionEnums<Definition>[K]
|
|
812
|
-
type BuiltDocumentScopedTypes<Definition> = { readonly [K in keyof DefinitionTypes<Definition> as DefinitionTypes<Definition>[K] extends StorageTypeInstance ? K : never]: DefinitionTypes<Definition>[K] };
|
|
842
|
+
type BuiltEnumAccessors<Definition> = { readonly [K in keyof DefinitionEnums<Definition>]: EnumHandleAccessorType<DefinitionEnums<Definition>[K]>; };
|
|
843
|
+
type BuiltDocumentScopedTypes<Definition> = { readonly [K in keyof DefinitionTypes<Definition> as DefinitionTypes<Definition>[K] extends StorageTypeInstance ? K : never]: DefinitionTypes<Definition>[K]; };
|
|
813
844
|
type BuiltDomain<Definition> = BuiltDocumentScopedTypes<Definition> extends Record<never, never> ? Record<string, never> : {
|
|
814
845
|
readonly __unbound__: {
|
|
815
846
|
readonly types: BuiltDocumentScopedTypes<Definition>;
|
|
@@ -830,13 +861,13 @@ type BuiltStorage<Definition> = {
|
|
|
830
861
|
readonly entries: {
|
|
831
862
|
readonly table: BuiltStorageTables<Definition>;
|
|
832
863
|
};
|
|
833
|
-
} } & { readonly [Ns in Exclude<DefinitionNamespaces<Definition>, DefaultStorageNamespaceId<Definition>>]: {
|
|
864
|
+
}; } & { readonly [Ns in Exclude<DefinitionNamespaces<Definition>, DefaultStorageNamespaceId<Definition>>]: {
|
|
834
865
|
readonly id: Ns;
|
|
835
866
|
readonly kind: string;
|
|
836
867
|
readonly entries: {
|
|
837
868
|
readonly table: Record<never, never>;
|
|
838
869
|
};
|
|
839
|
-
} };
|
|
870
|
+
}; };
|
|
840
871
|
};
|
|
841
872
|
type StorageColumnManyOf<Col> = Col extends {
|
|
842
873
|
readonly many: true;
|
|
@@ -850,11 +881,11 @@ type DescriptorEntityMembers<Descriptor> = Descriptor extends {
|
|
|
850
881
|
};
|
|
851
882
|
} ? Members : never;
|
|
852
883
|
type DescriptorValueSetUnion<FieldState> = [FieldDescriptorOf<FieldState>] extends [never] ? never : readonly string[] extends DescriptorEntityMembers<FieldDescriptorOf<FieldState>> ? never : DescriptorEntityMembers<FieldDescriptorOf<FieldState>>[number];
|
|
853
|
-
type CodecChannelType<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>, Channel extends 'output' | 'input'> = ModelStorageColumn<Definition, ModelName, FieldName>['codecId'] extends infer Id extends keyof CodecTypesFromDefinition<Definition> ? CodecTypesFromDefinition<Definition>[Id] extends { readonly [K in Channel]: infer T } ? StorageColumnManyOf<ModelStorageColumn<Definition, ModelName, FieldName>> extends true ? ReadonlyArray<T> : T : unknown : unknown;
|
|
884
|
+
type CodecChannelType<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>, Channel extends 'output' | 'input'> = ModelStorageColumn<Definition, ModelName, FieldName>['codecId'] extends (infer Id extends keyof CodecTypesFromDefinition<Definition>) ? CodecTypesFromDefinition<Definition>[Id] extends { readonly [K in Channel]: infer T; } ? StorageColumnManyOf<ModelStorageColumn<Definition, ModelName, FieldName>> extends true ? ReadonlyArray<T> : T : unknown : unknown;
|
|
854
885
|
type FieldValueUnion<FieldState> = [EnumValueUnion<FieldState>] extends [never] ? DescriptorValueSetUnion<FieldState> : EnumValueUnion<FieldState>;
|
|
855
886
|
type FieldChannelType<Definition, ModelName extends ModelNames<Definition>, FieldName extends ModelFieldNames<Definition, ModelName>, Channel extends 'output' | 'input'> = ([FieldValueUnion<ModelFieldState<Definition, ModelName, FieldName>>] extends [never] ? CodecChannelType<Definition, ModelName, FieldName, Channel> : StorageColumnManyOf<ModelStorageColumn<Definition, ModelName, FieldName>> extends true ? ReadonlyArray<FieldValueUnion<ModelFieldState<Definition, ModelName, FieldName>>> : FieldValueUnion<ModelFieldState<Definition, ModelName, FieldName>>) | (FieldNullableOf<ModelFieldState<Definition, ModelName, FieldName>> extends true ? null : never);
|
|
856
|
-
type FieldChannelTypes<Definition, Channel extends 'output' | 'input'> = { readonly [Ns in DefaultStorageNamespaceId<Definition>]: { readonly [ModelName in ModelNames<Definition>]: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: FieldChannelType<Definition, ModelName, FieldName, Channel
|
|
857
|
-
type StorageColumnChannelTypes<Definition, Channel extends 'output' | 'input'> = { readonly [Ns in DefaultStorageNamespaceId<Definition>]: { readonly [ModelName in ModelNames<Definition> as BuiltModelTableName<Definition, ModelName>]: { readonly [FieldName in ModelFieldNames<Definition, ModelName> as BuiltModelColumnMappings<Definition, ModelName>[FieldName]['column']]: FieldChannelType<Definition, ModelName, FieldName, Channel
|
|
887
|
+
type FieldChannelTypes<Definition, Channel extends 'output' | 'input'> = { readonly [Ns in DefaultStorageNamespaceId<Definition>]: { readonly [ModelName in ModelNames<Definition>]: { readonly [FieldName in ModelFieldNames<Definition, ModelName>]: FieldChannelType<Definition, ModelName, FieldName, Channel>; }; }; };
|
|
888
|
+
type StorageColumnChannelTypes<Definition, Channel extends 'output' | 'input'> = { readonly [Ns in DefaultStorageNamespaceId<Definition>]: { readonly [ModelName in ModelNames<Definition> as BuiltModelTableName<Definition, ModelName>]: { readonly [FieldName in ModelFieldNames<Definition, ModelName> as BuiltModelColumnMappings<Definition, ModelName>[FieldName]['column']]: FieldChannelType<Definition, ModelName, FieldName, Channel>; }; }; };
|
|
858
889
|
type SqlContractResult<Definition> = ContractWithTypeMaps<Omit<Contract<BuiltStorage<Definition>>, 'domain'> & {
|
|
859
890
|
readonly target: DefinitionTargetId<Definition>;
|
|
860
891
|
readonly targetFamily: 'sql';
|
|
@@ -889,7 +920,7 @@ type StorageTypeFromDescriptor<Descriptor extends AuthoringTypeConstructorDescri
|
|
|
889
920
|
type TypeHelperFunction<Descriptor extends AuthoringTypeConstructorDescriptor> = Descriptor extends {
|
|
890
921
|
readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
|
|
891
922
|
} ? <const Params extends TupleFromArgumentDescriptors<Args>>(...args: Params) => StorageTypeFromDescriptor<Descriptor, Params> : () => StorageTypeFromDescriptor<Descriptor, readonly []>;
|
|
892
|
-
type TypeHelpersFromNamespace<Namespace> = { readonly [K in keyof Namespace]: Namespace[K] extends AuthoringTypeConstructorDescriptor ? TypeHelperFunction<Namespace[K]> : Namespace[K] extends Record<string, unknown> ? TypeHelpersFromNamespace<Namespace[K]> : never };
|
|
923
|
+
type TypeHelpersFromNamespace<Namespace> = { readonly [K in keyof Namespace]: Namespace[K] extends AuthoringTypeConstructorDescriptor ? TypeHelperFunction<Namespace[K]> : Namespace[K] extends Record<string, unknown> ? TypeHelpersFromNamespace<Namespace[K]> : never; };
|
|
893
924
|
type CoreFieldHelpers = Pick<typeof field, 'column' | 'generated' | 'namedType'>;
|
|
894
925
|
type MergeAllPackIndexTypes<Family, Target, ExtensionPacks> = MergeExtensionIndexTypes<{
|
|
895
926
|
readonly __family: Family;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-builder.d.mts","names":[],"sources":["../src/contract-dsl.ts","../src/authoring-type-utils.ts","../src/contract-types.ts","../src/composed-authoring-helpers.ts","../src/contract-definition.ts","../src/build-contract.ts","../src/contract-builder.ts","../src/contract-lowering.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contract-builder.d.mts","names":[],"sources":["../src/contract-dsl.ts","../src/authoring-type-utils.ts","../src/contract-types.ts","../src/composed-authoring-helpers.ts","../src/contract-definition.ts","../src/build-contract.ts","../src/contract-builder.ts","../src/contract-lowering.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as buildSqlContractFromDefinition } from "./build-contract-
|
|
1
|
+
import { t as buildSqlContractFromDefinition } from "./build-contract-CAX6inbk.mjs";
|
|
2
2
|
import { blindCast } from "@prisma-next/utils/casts";
|
|
3
3
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
4
4
|
import { isColumnDefault } from "@prisma-next/contract/types";
|
package/package.json
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/sql-contract-ts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0-dev.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"description": "SQL-specific TypeScript contract authoring surface for Prisma Next",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@prisma-next/config": "0.
|
|
10
|
-
"@prisma-next/contract": "0.
|
|
11
|
-
"@prisma-next/contract-authoring": "0.
|
|
12
|
-
"@prisma-next/framework-components": "0.
|
|
13
|
-
"@prisma-next/sql-contract": "0.
|
|
14
|
-
"@prisma-next/utils": "0.
|
|
9
|
+
"@prisma-next/config": "0.16.0-dev.1",
|
|
10
|
+
"@prisma-next/contract": "0.16.0-dev.1",
|
|
11
|
+
"@prisma-next/contract-authoring": "0.16.0-dev.1",
|
|
12
|
+
"@prisma-next/framework-components": "0.16.0-dev.1",
|
|
13
|
+
"@prisma-next/sql-contract": "0.16.0-dev.1",
|
|
14
|
+
"@prisma-next/utils": "0.16.0-dev.1",
|
|
15
15
|
"arktype": "^2.2.2",
|
|
16
16
|
"pathe": "^2.0.3",
|
|
17
17
|
"ts-toolbelt": "^9.6.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@prisma-next/test-utils": "0.
|
|
21
|
-
"@prisma-next/tsconfig": "0.
|
|
20
|
+
"@prisma-next/test-utils": "0.16.0-dev.1",
|
|
21
|
+
"@prisma-next/tsconfig": "0.16.0-dev.1",
|
|
22
22
|
"@types/pg": "8.20.0",
|
|
23
23
|
"pg": "8.22.0",
|
|
24
|
-
"@prisma-next/tsdown": "0.
|
|
25
|
-
"tsdown": "0.22.
|
|
24
|
+
"@prisma-next/tsdown": "0.16.0-dev.1",
|
|
25
|
+
"tsdown": "0.22.8",
|
|
26
26
|
"typescript": "5.9.3",
|
|
27
27
|
"vitest": "4.1.10"
|
|
28
28
|
},
|
|
@@ -26,14 +26,28 @@ export type OptionalObjectArgumentKeys<
|
|
|
26
26
|
readonly [K in keyof Properties]: Properties[K] extends { readonly optional: true } ? K : never;
|
|
27
27
|
}[keyof Properties];
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
} & {
|
|
35
|
-
|
|
36
|
-
}
|
|
29
|
+
type RequiredObjectArgumentKeys<Properties extends Record<string, AuthoringArgumentDescriptor>> =
|
|
30
|
+
Exclude<keyof Properties, OptionalObjectArgumentKeys<Properties>>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* When every property is optional the result must be a plain weak type rather
|
|
34
|
+
* than `{} & { … }`: TypeScript's weak-type check rejects an object sharing
|
|
35
|
+
* none of the target's properties, but only when the target is weak — and an
|
|
36
|
+
* intersection with `{}` is not. The TS authoring surface runs no runtime
|
|
37
|
+
* argument validation, so this check is the only thing rejecting a foreign key
|
|
38
|
+
* such as `field.nanoid({ bogus: 1 })`.
|
|
39
|
+
*/
|
|
40
|
+
export type ObjectArgumentType<Properties extends Record<string, AuthoringArgumentDescriptor>> = [
|
|
41
|
+
RequiredObjectArgumentKeys<Properties>,
|
|
42
|
+
] extends [never]
|
|
43
|
+
? {
|
|
44
|
+
readonly [K in OptionalObjectArgumentKeys<Properties>]?: ArgTypeFromDescriptor<Properties[K]>;
|
|
45
|
+
}
|
|
46
|
+
: {
|
|
47
|
+
readonly [K in RequiredObjectArgumentKeys<Properties>]: ArgTypeFromDescriptor<Properties[K]>;
|
|
48
|
+
} & {
|
|
49
|
+
readonly [K in OptionalObjectArgumentKeys<Properties>]?: ArgTypeFromDescriptor<Properties[K]>;
|
|
50
|
+
};
|
|
37
51
|
|
|
38
52
|
export type ArgTypeFromDescriptor<Arg extends AuthoringArgumentDescriptor> = Arg extends {
|
|
39
53
|
readonly kind: 'string';
|
|
@@ -46,20 +60,38 @@ export type ArgTypeFromDescriptor<Arg extends AuthoringArgumentDescriptor> = Arg
|
|
|
46
60
|
: Arg extends { readonly kind: 'stringArray' }
|
|
47
61
|
? readonly string[]
|
|
48
62
|
: Arg extends {
|
|
49
|
-
readonly kind: '
|
|
50
|
-
readonly
|
|
51
|
-
string,
|
|
52
|
-
AuthoringArgumentDescriptor
|
|
53
|
-
>;
|
|
63
|
+
readonly kind: 'option';
|
|
64
|
+
readonly values: infer Values extends readonly string[];
|
|
54
65
|
}
|
|
55
|
-
?
|
|
56
|
-
:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
66
|
+
? Values[number]
|
|
67
|
+
: Arg extends {
|
|
68
|
+
readonly kind: 'object';
|
|
69
|
+
readonly properties: infer Properties extends Record<
|
|
70
|
+
string,
|
|
71
|
+
AuthoringArgumentDescriptor
|
|
72
|
+
>;
|
|
73
|
+
}
|
|
74
|
+
? ObjectArgumentType<Properties>
|
|
75
|
+
: never;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Recursive rewrite (not a mapped tuple type) so a descriptor marked
|
|
79
|
+
* `optional: true` gets an optional tuple slot (`Type?`), letting callers
|
|
80
|
+
* omit it and every optional arg after it. Required args must precede
|
|
81
|
+
* optional args in a descriptor's `args` list — TypeScript rejects an
|
|
82
|
+
* optional tuple element followed by a required one, and the runtime
|
|
83
|
+
* (`validateAuthoringHelperArguments`'s `minimumArgs`) already treats an
|
|
84
|
+
* optional-before-required arg as effectively required.
|
|
85
|
+
*/
|
|
86
|
+
export type TupleFromArgumentDescriptors<Args extends readonly AuthoringArgumentDescriptor[]> =
|
|
87
|
+
Args extends readonly [
|
|
88
|
+
infer Head extends AuthoringArgumentDescriptor,
|
|
89
|
+
...infer Tail extends readonly AuthoringArgumentDescriptor[],
|
|
90
|
+
]
|
|
91
|
+
? Head extends { readonly optional: true }
|
|
92
|
+
? readonly [ArgTypeFromDescriptor<Head>?, ...TupleFromArgumentDescriptors<Tail>]
|
|
93
|
+
: readonly [ArgTypeFromDescriptor<Head>, ...TupleFromArgumentDescriptors<Tail>]
|
|
94
|
+
: readonly [];
|
|
63
95
|
|
|
64
96
|
export type SupportsNamedConstraintOptions<Descriptor extends AuthoringFieldPresetDescriptor> =
|
|
65
97
|
Descriptor['output'] extends { readonly id: true }
|
|
@@ -144,17 +176,29 @@ export type FieldHelperFunctionWithoutNamedConstraint<
|
|
|
144
176
|
) => FieldBuilderFromPresetDescriptor<Descriptor, Params>
|
|
145
177
|
: () => FieldBuilderFromPresetDescriptor<Descriptor, readonly []>;
|
|
146
178
|
|
|
179
|
+
/**
|
|
180
|
+
* An intersection of two call signatures rather than one rest-tuple signature
|
|
181
|
+
* with a trailing `options?`. Once optional descriptors yield optional tuple
|
|
182
|
+
* slots, `Params` can infer as the empty tuple, and a single-argument call
|
|
183
|
+
* such as `field.id.nanoid({ size: 16 })` would bind its preset argument to
|
|
184
|
+
* the trailing optional `options` parameter. Resolving the no-options
|
|
185
|
+
* signature first, and falling through to the options-required signature only
|
|
186
|
+
* when the argument list cannot satisfy it, keeps both spellings working.
|
|
187
|
+
*/
|
|
147
188
|
export type FieldHelperFunctionWithNamedConstraint<
|
|
148
189
|
Descriptor extends AuthoringFieldPresetDescriptor,
|
|
149
190
|
> = Descriptor extends {
|
|
150
191
|
readonly args: infer Args extends readonly AuthoringArgumentDescriptor[];
|
|
151
192
|
}
|
|
152
|
-
? <
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
193
|
+
? (<const Params extends TupleFromArgumentDescriptors<Args>>(
|
|
194
|
+
...args: Params
|
|
195
|
+
) => FieldBuilderFromPresetDescriptor<Descriptor, Params>) &
|
|
196
|
+
(<
|
|
197
|
+
const Params extends TupleFromArgumentDescriptors<Args>,
|
|
198
|
+
const Name extends string | undefined = undefined,
|
|
199
|
+
>(
|
|
200
|
+
...args: [...params: Params, options: NamedConstraintSpec<Name>]
|
|
201
|
+
) => FieldBuilderFromPresetDescriptor<Descriptor, Params, Name>)
|
|
158
202
|
: <const Name extends string | undefined = undefined>(
|
|
159
203
|
options?: NamedConstraintSpec<Name>,
|
|
160
204
|
) => FieldBuilderFromPresetDescriptor<Descriptor, readonly [], Name>;
|
package/src/build-contract.ts
CHANGED
|
@@ -32,6 +32,10 @@ import type { CodecLookup, ColumnTypeDescriptor } from '@prisma-next/framework-c
|
|
|
32
32
|
import { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';
|
|
33
33
|
import { sqlContractCanonicalizationHooks } from '@prisma-next/sql-contract/canonicalization-hooks';
|
|
34
34
|
import { tableEntityKind, valueSetEntityKind } from '@prisma-next/sql-contract/entity-kinds';
|
|
35
|
+
import {
|
|
36
|
+
type ForeignKeyAuthoringInput,
|
|
37
|
+
materializeForeignKeysAndIndexes,
|
|
38
|
+
} from '@prisma-next/sql-contract/foreign-key-materialization';
|
|
35
39
|
import { validateIndexTypes } from '@prisma-next/sql-contract/index-type-validation';
|
|
36
40
|
import {
|
|
37
41
|
createIndexTypeRegistry,
|
|
@@ -793,7 +797,9 @@ export function buildSqlContractFromDefinition(
|
|
|
793
797
|
}
|
|
794
798
|
}
|
|
795
799
|
|
|
796
|
-
const
|
|
800
|
+
const authoringForeignKeys: readonly ForeignKeyAuthoringInput[] = (
|
|
801
|
+
semanticModel.foreignKeys ?? []
|
|
802
|
+
).map((fk) => {
|
|
797
803
|
if (fk.references.spaceId !== undefined) {
|
|
798
804
|
// Cross-space FK: the target lives in a different contract space.
|
|
799
805
|
// Skip local model lookup and carry the spaceId coordinate through.
|
|
@@ -862,28 +868,43 @@ export function buildSqlContractFromDefinition(
|
|
|
862
868
|
// materialised onto the base `ModelNode`, so the variant builds a domain
|
|
863
869
|
// model (below) but no storage table of its own.
|
|
864
870
|
if (!semanticModel.sharesBaseTable) {
|
|
871
|
+
const uniques = (semanticModel.uniques ?? []).map((u) => ({
|
|
872
|
+
columns: u.columns,
|
|
873
|
+
...ifDefined('name', u.name),
|
|
874
|
+
}));
|
|
875
|
+
const declaredIndexes = (semanticModel.indexes ?? []).map((i) => ({
|
|
876
|
+
columns: i.columns,
|
|
877
|
+
...ifDefined('name', i.name),
|
|
878
|
+
...ifDefined('type', i.type),
|
|
879
|
+
...ifDefined('options', i.options),
|
|
880
|
+
}));
|
|
881
|
+
const primaryKey = semanticModel.id
|
|
882
|
+
? { columns: semanticModel.id.columns, ...ifDefined('name', semanticModel.id.name) }
|
|
883
|
+
: undefined;
|
|
884
|
+
// FK1: lower each FK's `constraint`/`index` authoring intent into
|
|
885
|
+
// discrete persisted entities here — the one place a table's full
|
|
886
|
+
// constraint context (its own declared indexes/uniques/primary key)
|
|
887
|
+
// is available. A `constraint: false` FK contributes no
|
|
888
|
+
// `foreignKeys[]` entry; an `index: true` FK not already backed by a
|
|
889
|
+
// declared index/unique/primary-key contributes a named `indexes[]`
|
|
890
|
+
// entry. This authoring pipeline is shared by both the TS DSL and the
|
|
891
|
+
// PSL interpreter (which calls `buildSqlContractFromDefinition`
|
|
892
|
+
// directly), so both authoring surfaces materialize identically.
|
|
893
|
+
const { foreignKeys, indexes } = materializeForeignKeysAndIndexes(
|
|
894
|
+
tableName,
|
|
895
|
+
authoringForeignKeys,
|
|
896
|
+
declaredIndexes,
|
|
897
|
+
uniques,
|
|
898
|
+
primaryKey,
|
|
899
|
+
);
|
|
900
|
+
|
|
865
901
|
const tableInput: StorageTableInput = {
|
|
866
902
|
columns,
|
|
867
903
|
...ifDefined('control', semanticModel.control),
|
|
868
|
-
uniques
|
|
869
|
-
|
|
870
|
-
...ifDefined('name', u.name),
|
|
871
|
-
})),
|
|
872
|
-
indexes: (semanticModel.indexes ?? []).map((i) => ({
|
|
873
|
-
columns: i.columns,
|
|
874
|
-
...ifDefined('name', i.name),
|
|
875
|
-
...ifDefined('type', i.type),
|
|
876
|
-
...ifDefined('options', i.options),
|
|
877
|
-
})),
|
|
904
|
+
uniques,
|
|
905
|
+
indexes,
|
|
878
906
|
foreignKeys,
|
|
879
|
-
...(
|
|
880
|
-
? {
|
|
881
|
-
primaryKey: {
|
|
882
|
-
columns: semanticModel.id.columns,
|
|
883
|
-
...ifDefined('name', semanticModel.id.name),
|
|
884
|
-
},
|
|
885
|
-
}
|
|
886
|
-
: {}),
|
|
907
|
+
...(primaryKey ? { primaryKey } : {}),
|
|
887
908
|
...(checksForTable.length > 0 ? { checks: checksForTable } : {}),
|
|
888
909
|
};
|
|
889
910
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-contract-BzAyIu0y.mjs","names":[],"sources":["../src/build-contract.ts"],"sourcesContent":["import {\n computeExecutionHash,\n computeProfileHash,\n computeStorageHash,\n} from '@prisma-next/contract/hashing';\nimport {\n asNamespaceId,\n type ColumnDefault,\n type Contract,\n type ContractEnum,\n type ContractField,\n type ContractModel,\n type ContractRelation,\n type ContractRelationThrough,\n type ContractValueObject,\n type CrossReference,\n coreHash,\n crossRef,\n type ExecutionMutationDefault,\n type JsonValue,\n type StorageHashBase,\n type ValueSetRef,\n} from '@prisma-next/contract/types';\nimport { type CapabilityMatrix, mergeCapabilityMatrices } from '@prisma-next/contract-authoring';\nimport type {\n AuthoringContributions,\n AuthoringEntityTypeDescriptor,\n AuthoringEntityTypeNamespace,\n} from '@prisma-next/framework-components/authoring';\nimport { isAuthoringEntityTypeDescriptor } from '@prisma-next/framework-components/authoring';\nimport type { CodecLookup, ColumnTypeDescriptor } from '@prisma-next/framework-components/codec';\nimport { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';\nimport { sqlContractCanonicalizationHooks } from '@prisma-next/sql-contract/canonicalization-hooks';\nimport { tableEntityKind, valueSetEntityKind } from '@prisma-next/sql-contract/entity-kinds';\nimport { validateIndexTypes } from '@prisma-next/sql-contract/index-type-validation';\nimport {\n createIndexTypeRegistry,\n type IndexTypeMap,\n type IndexTypeRegistration,\n} from '@prisma-next/sql-contract/index-types';\nimport {\n applyFkDefaults,\n type CheckConstraintInput,\n type SqlNamespaceInput,\n SqlStorage,\n type SqlStorageInput,\n type StorageColumn,\n type StorageTableInput,\n type StorageTypeInstance,\n type StorageValueSetInput,\n toStorageTypeInstance,\n} from '@prisma-next/sql-contract/types';\nimport { validateStorageSemantics } from '@prisma-next/sql-contract/validators';\nimport { deriveValueSetFromEntity } from '@prisma-next/sql-contract/value-set-derivation-hook';\nimport { blindCast } from '@prisma-next/utils/casts';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type {\n ContractDefinition,\n FieldNode,\n ModelNode,\n RelationNode,\n ValueObjectFieldNode,\n} from './contract-definition';\n\ntype DomainFieldRef =\n | { readonly kind: 'scalar'; readonly many?: boolean }\n | { readonly kind: 'valueObject'; readonly name: string; readonly many?: boolean };\n\nfunction encodeViaCodec(value: unknown, codecId: string, codecLookup?: CodecLookup): JsonValue {\n const codec = codecLookup?.get(codecId);\n if (codec) {\n return codec.encodeJson(value);\n }\n return blindCast<\n JsonValue,\n 'no codec lookup at build time: literal/enum member value is already JSON-safe'\n >(value);\n}\n\nfunction encodeColumnDefault(\n defaultInput: ColumnDefault,\n codecId: string,\n codecLookup?: CodecLookup,\n many = false,\n): ColumnDefault {\n if (defaultInput.kind === 'function') {\n return { kind: 'function', expression: defaultInput.expression };\n }\n if (many) {\n if (!Array.isArray(defaultInput.value)) {\n throw new Error(\n `Literal default on a list column must be an array; received ${typeof defaultInput.value}. ` +\n 'A scalar default on a list field must be rejected at the authoring surface.',\n );\n }\n return {\n kind: 'literal',\n value: defaultInput.value.map((element) => encodeViaCodec(element, codecId, codecLookup)),\n };\n }\n return {\n kind: 'literal',\n value: encodeViaCodec(defaultInput.value, codecId, codecLookup),\n };\n}\n\nfunction assertStorageSemantics(\n definition: ContractDefinition,\n contract: Contract<SqlStorage>,\n): void {\n const semanticErrors = validateStorageSemantics(contract.storage);\n if (semanticErrors.length > 0) {\n throw new Error(`Contract semantic validation failed: ${semanticErrors.join('; ')}`);\n }\n\n const indexTypeRegistry = createIndexTypeRegistry();\n const packsToRegister: ReadonlyArray<{ readonly id?: string; readonly indexTypes?: unknown }> = [\n definition.target,\n ...Object.values(definition.extensionPacks ?? {}),\n ];\n for (const pack of packsToRegister) {\n const registration = pack.indexTypes;\n if (registration === undefined) continue;\n if (\n typeof registration !== 'object' ||\n registration === null ||\n !Array.isArray((registration as { entries?: unknown }).entries)\n ) {\n throw new Error(\n `Pack \"${pack.id ?? '<unknown>'}\" declares \"indexTypes\" but its value is not an IndexTypeRegistration (expected an object with an \"entries\" array; got ${typeof registration}).`,\n );\n }\n for (const entry of (registration as IndexTypeRegistration<IndexTypeMap>).entries) {\n indexTypeRegistry.register(entry);\n }\n }\n validateIndexTypes(contract, indexTypeRegistry);\n}\n\nfunction assertKnownTargetModel(\n modelsByName: ReadonlyMap<string, ModelNode>,\n modelsByCoordinate: ReadonlyMap<string, ModelNode>,\n sourceModelName: string,\n targetModelName: string,\n targetNamespaceId: string | undefined,\n context: string,\n): ModelNode {\n const targetModel =\n targetNamespaceId !== undefined && targetNamespaceId.length > 0\n ? modelsByCoordinate.get(`${targetNamespaceId}:${targetModelName}`)\n : modelsByName.get(targetModelName);\n if (!targetModel) {\n const qualified =\n targetNamespaceId !== undefined && targetNamespaceId.length > 0\n ? `${targetNamespaceId}.${targetModelName}`\n : targetModelName;\n throw new Error(\n `${context} on model \"${sourceModelName}\" references unknown model \"${qualified}\"`,\n );\n }\n return targetModel;\n}\n\nfunction assertTargetTableMatches(\n sourceModelName: string,\n targetModel: ModelNode,\n referencedTableName: string,\n context: string,\n): void {\n if (targetModel.tableName !== referencedTableName) {\n throw new Error(\n `${context} on model \"${sourceModelName}\" references table \"${referencedTableName}\" but model \"${targetModel.modelName}\" maps to \"${targetModel.tableName}\"`,\n );\n }\n}\n\nfunction isValueObjectField(\n field: FieldNode | ValueObjectFieldNode,\n): field is ValueObjectFieldNode {\n return 'valueObjectName' in field;\n}\n\n/**\n * Resolves a deferred entity-ref column descriptor (e.g. a `pg.enum(handle)`\n * column) against the field's now-known owning namespace: attaches the\n * storage `valueSet` ref the collected entity's derived value-set is stored\n * under. `nativeType` / `typeParams.typeName` stay bare here — schema\n * qualification (e.g. `auth.aal_level`) is a target concern applied in the\n * next step, `qualifyColumnDescriptor`. A descriptor with no `entityRef` (the\n * ordinary case) passes through unchanged.\n */\nfunction resolveEntityRefDescriptor(\n descriptor: ColumnTypeDescriptor,\n namespaceId: string,\n): ColumnTypeDescriptor {\n const entityRef = descriptor.entityRef;\n if (entityRef === undefined) return descriptor;\n\n return {\n ...descriptor,\n valueSet: {\n plane: 'storage',\n entityKind: 'valueSet',\n namespaceId,\n entityName: entityRef.entityName,\n },\n };\n}\n\n/**\n * A target's contract-construction-time column-type qualifier, contributed\n * through `target.authoring.qualifyColumnType`. Given a column's bare type\n * info and its owning `namespaceId`, it returns the type info the target's\n * schema semantics require (e.g. Postgres schema-qualifies a native-enum\n * column's type name to `auth.aal_level`). The dispatch keys off the codec\n * id, so every codec — including ones needing no change — is passed through\n * and the caller stays codec-blind. Targets without the hook leave every\n * column bare.\n */\ntype ColumnTypeQualifier = (\n input: {\n readonly codecId: string;\n readonly nativeType: string;\n readonly typeParams?: Record<string, unknown>;\n },\n namespaceId: string,\n) => { readonly nativeType: string; readonly typeParams?: Record<string, unknown> };\n\n/**\n * Structural check for a target that contributes a `qualifyColumnType` hook\n * on its authoring contributions. Duck-typed (mirroring\n * `contract-psl`'s `hasColumnFromEntityHook`) so the SQL family stays blind\n * to the target's qualification logic and no framework/family interface has\n * to name the hook.\n */\nfunction hasColumnTypeQualifier(\n authoring: AuthoringContributions,\n): authoring is AuthoringContributions & { readonly qualifyColumnType: ColumnTypeQualifier } {\n return 'qualifyColumnType' in authoring && typeof authoring.qualifyColumnType === 'function';\n}\n\nfunction resolveColumnTypeQualifier(\n target: ContractDefinition['target'],\n): ColumnTypeQualifier | undefined {\n const authoring = target.authoring;\n if (authoring === undefined) return undefined;\n return hasColumnTypeQualifier(authoring) ? authoring.qualifyColumnType : undefined;\n}\n\n/**\n * Applies the target's `qualifyColumnType` hook to a scalar column descriptor\n * at construction, so the storage column and the domain field (which derives\n * its `type.typeParams` from the storage column) are both built already\n * qualified in a single pass. A descriptor whose codec the target leaves\n * unchanged passes through untouched.\n */\nfunction qualifyColumnDescriptor(\n descriptor: ColumnTypeDescriptor,\n namespaceId: string,\n qualify: ColumnTypeQualifier | undefined,\n): ColumnTypeDescriptor {\n if (qualify === undefined) return descriptor;\n const qualified = qualify(\n {\n codecId: descriptor.codecId,\n nativeType: descriptor.nativeType,\n ...ifDefined('typeParams', descriptor.typeParams),\n },\n namespaceId,\n );\n if (\n qualified.nativeType === descriptor.nativeType &&\n qualified.typeParams === descriptor.typeParams\n ) {\n return descriptor;\n }\n return {\n ...descriptor,\n nativeType: qualified.nativeType,\n ...ifDefined('typeParams', qualified.typeParams),\n };\n}\n\ntype CollectedColumnEntities = Record<string, Record<string, Record<string, unknown>>>;\n\n/**\n * Records a deferred column's entity-ref into the namespace-scoped collection\n * accumulator (`namespaceId → entityKind → entityName`) — folded into the same\n * namespace assembly `deriveEntityValueSets`/`entries.<kind>` step as the\n * entities-channel attachments, so a column-collected entity gets its\n * value-set the same way an entities-channel one does.\n *\n * The same handle reused by many columns in one namespace is normal (a native\n * enum type backs any number of columns) and records the identical entity once.\n * Two *different* entity instances sharing a name+kind in one namespace is a\n * name collision — the emitted `entries.valueSet.<name>` could only reflect one\n * of them, silently mismatching the other column's type/cast. PSL hard-errors\n * on the equivalent (`PSL_DUPLICATE_DECLARATION`); the TS path rejects it too.\n */\nfunction collectEntityFromColumn(\n collected: CollectedColumnEntities,\n namespaceId: string,\n entityRef: NonNullable<ColumnTypeDescriptor['entityRef']>,\n): void {\n const forNs = collected[namespaceId] ?? {};\n const forKind = forNs[entityRef.entityKind] ?? {};\n const existing = forKind[entityRef.entityName];\n if (existing !== undefined && existing !== entityRef.entity) {\n throw new Error(\n `buildSqlContractFromDefinition: two different \"${entityRef.entityKind}\" entities named \"${entityRef.entityName}\" in namespace \"${namespaceId}\" — pack-entity names must be unique per namespace.`,\n );\n }\n forKind[entityRef.entityName] = entityRef.entity;\n forNs[entityRef.entityKind] = forKind;\n collected[namespaceId] = forNs;\n}\n\n/**\n * Merges a namespace's entities-channel attachments (lowered from the\n * `entities` handle list, carried on `ContractDefinition.attachedEntities`)\n * with the entities collected from that namespace's deferred entity-ref\n * columns. A column-collected entity that shadows a *different* attached\n * entity of the same kind+name (or vice-versa) is the same name-collision bug\n * `collectEntityFromColumn` guards against across columns, so it is rejected\n * the same way — by entity identity, so the same handle attached and used by\n * a column does not throw.\n */\nfunction mergeColumnAndAttachedEntities(\n namespaceId: string,\n attached: Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined,\n columnCollected: Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined,\n): Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined {\n if (attached === undefined) return columnCollected;\n if (columnCollected === undefined) return attached;\n const kinds = new Set([...Object.keys(attached), ...Object.keys(columnCollected)]);\n const result: Record<string, Readonly<Record<string, unknown>>> = {};\n for (const kind of kinds) {\n const attachedForKind = attached[kind];\n const columnForKind = columnCollected[kind];\n for (const [name, entity] of Object.entries(columnForKind ?? {})) {\n const existing = attachedForKind?.[name];\n if (existing !== undefined && existing !== entity) {\n throw new Error(\n `buildSqlContractFromDefinition: two different \"${kind}\" entities named \"${name}\" in namespace \"${namespaceId}\" — a column-referenced entity conflicts with an attached one; pack-entity names must be unique per namespace.`,\n );\n }\n }\n result[kind] = { ...attachedForKind, ...columnForKind };\n }\n return result;\n}\n\nconst JSONB_CODEC_ID = 'pg/jsonb@1';\nconst JSONB_NATIVE_TYPE = 'jsonb';\n\nfunction resolveModelNamespaceId(\n model: ModelNode,\n modelNameToNamespaceId: ReadonlyMap<string, string>,\n defaultNamespaceId: string,\n): string {\n if (model.namespaceId !== undefined && model.namespaceId.length > 0) {\n return model.namespaceId;\n }\n return modelNameToNamespaceId.get(model.modelName) ?? defaultNamespaceId;\n}\n\nfunction buildThroughDescriptor(\n through: NonNullable<RelationNode['through']>,\n tableNamespaceByName: ReadonlyMap<string, string>,\n targetModel: ModelNode,\n modelName: string,\n fieldName: string,\n defaultNamespaceId: string,\n): ContractRelationThrough {\n if (!tableNamespaceByName.has(through.table)) {\n throw new Error(\n `buildSqlContractFromDefinition: junction table \"${through.table}\" for relation \"${modelName}.${fieldName}\" is not a declared model.`,\n );\n }\n // Junction table names are unique per namespace, not globally. Prefer the\n // junction's own declared namespace (carried on the through node); fall back to\n // the target's default namespace. Resolving by bare table name would pick the\n // wrong namespace when the same junction table name exists in two namespaces.\n const namespaceId = through.namespaceId ?? defaultNamespaceId;\n\n return {\n table: through.table,\n namespaceId,\n parentColumns: through.parentColumns,\n childColumns: through.childColumns,\n targetColumns: targetColumnsForJunction(targetModel, fieldName),\n };\n}\n\nfunction targetColumnsForJunction(targetModel: ModelNode, fieldName: string): readonly string[] {\n const primaryKeyColumns = targetModel.id?.columns;\n if (primaryKeyColumns && primaryKeyColumns.length > 0) {\n return primaryKeyColumns;\n }\n const firstUnique = targetModel.uniques?.find((u) => u.columns.length > 0);\n if (firstUnique) {\n return firstUnique.columns;\n }\n throw new Error(\n `M:N target model \"${targetModel.modelName}\" (relation field \"${fieldName}\") has no primary id or unique key to derive junction targetColumns.`,\n );\n}\n\nfunction buildStorageColumn(\n field: FieldNode | ValueObjectFieldNode,\n storageValueSetRef: ValueSetRef | undefined,\n codecLookup?: CodecLookup,\n): StorageColumn {\n if (isValueObjectField(field)) {\n const encodedDefault =\n field.default !== undefined\n ? encodeColumnDefault(field.default, JSONB_CODEC_ID, codecLookup)\n : undefined;\n\n return {\n nativeType: JSONB_NATIVE_TYPE,\n codecId: JSONB_CODEC_ID,\n nullable: field.nullable,\n ...ifDefined('default', encodedDefault),\n };\n }\n\n const codecId = field.descriptor.codecId;\n const encodedDefault =\n field.default !== undefined\n ? encodeColumnDefault(field.default, codecId, codecLookup, field.many === true)\n : undefined;\n\n // `storageValueSetRef` (derived from an `enumTypeHandle`) takes precedence\n // when present — the established domain-enum path. `field.descriptor.valueSet`\n // is the fallback: set by an entity-ref type constructor (e.g. `pg.enum(Ref)`)\n // that resolved the field's type against a value-set-deriving entity with no\n // domain enum involved. A field carries at most one of the two in practice.\n const valueSet = storageValueSetRef ?? field.descriptor.valueSet;\n\n return {\n nativeType: field.descriptor.nativeType,\n codecId,\n nullable: field.nullable,\n ...(field.many ? { many: true as const } : {}),\n ...ifDefined('typeParams', field.descriptor.typeParams),\n ...ifDefined('default', encodedDefault),\n ...ifDefined('typeRef', field.descriptor.typeRef),\n ...ifDefined('valueSet', valueSet),\n };\n}\n\nfunction buildDomainField(\n field: FieldNode | ValueObjectFieldNode,\n column: StorageColumn,\n domainValueSetRef: ValueSetRef | undefined,\n): ContractField {\n if (isValueObjectField(field)) {\n return {\n type: { kind: 'valueObject', name: field.valueObjectName },\n nullable: field.nullable,\n ...(field.many ? { many: true } : {}),\n };\n }\n\n return {\n type: {\n kind: 'scalar',\n codecId: column.codecId,\n ...ifDefined('typeParams', column.typeParams),\n },\n nullable: column.nullable,\n ...(field.many ? { many: true } : {}),\n ...ifDefined('valueSet', domainValueSetRef),\n };\n}\n\nfunction collectStorageNamespaceCoordinateIds(definition: ContractDefinition): Set<string> {\n const ids = new Set<string>();\n ids.add(definition.target.defaultNamespaceId);\n for (const id of definition.namespaces ?? []) {\n if (id.length > 0) {\n ids.add(id);\n }\n }\n for (const model of definition.models) {\n if (model.namespaceId !== undefined && model.namespaceId.length > 0) {\n ids.add(model.namespaceId);\n }\n }\n for (const id of Object.keys(definition.attachedEntities ?? {})) {\n if (id.length > 0) {\n ids.add(id);\n }\n }\n return ids;\n}\n\n/**\n * Entry kinds the framework assembler itself manages (`table` from models,\n * `valueSet` from `enums` and attached-entity value-set derivation). A\n * pack-attached entity claiming one of these would silently clobber or be\n * clobbered by the managed slot, so it is rejected outright.\n */\nconst MANAGED_ENTRY_KINDS = new Set([tableEntityKind.kind, valueSetEntityKind.kind]);\n\nfunction assertNoManagedEntityKinds(\n namespaceId: string,\n entitiesForNs: Readonly<Record<string, unknown>> | undefined,\n): void {\n if (entitiesForNs === undefined) return;\n for (const kind of Object.keys(entitiesForNs)) {\n if (MANAGED_ENTRY_KINDS.has(kind)) {\n throw new Error(\n `buildSqlContractFromDefinition: attached entity in namespace \"${namespaceId}\" declares entry kind \"${kind}\", which is managed by the framework (table/valueSet) and cannot be attached.`,\n );\n }\n }\n}\n\n/**\n * Walks the flat `entityTypes` namespace tree contributed by the target pack\n * and every extension pack, indexing descriptors by their `discriminator` —\n * the same string a pack entity's entries-map key (`entries.<kind>`) uses.\n * Mirrors `contract-psl`'s `buildEntityTypesByDiscriminator`, recomposed here\n * from the packs `ContractDefinition` already carries (`target` +\n * `extensionPacks`) since the TS assembler has no single pre-merged\n * `AuthoringContributions` input to read the way the PSL interpreter does.\n */\nfunction collectEntityTypeDescriptorsByDiscriminator(\n definition: ContractDefinition,\n): ReadonlyMap<string, AuthoringEntityTypeDescriptor> {\n const result = new Map<string, AuthoringEntityTypeDescriptor>();\n const walk = (namespace: AuthoringEntityTypeNamespace): void => {\n for (const value of Object.values(namespace)) {\n if (isAuthoringEntityTypeDescriptor(value)) {\n result.set(value.discriminator, value);\n } else {\n walk(value);\n }\n }\n };\n const components = [definition.target, ...Object.values(definition.extensionPacks ?? {})];\n for (const component of components) {\n const entityTypes = component.authoring?.entityTypes;\n if (entityTypes !== undefined) {\n walk(entityTypes);\n }\n }\n return result;\n}\n\n/**\n * Derives value-sets for every pack entity declared in one namespace,\n * reusing the same `SqlValueSetDerivingEntityTypeOutput.deriveValueSet` hook\n * `contract-psl`'s `lowerExtensionBlocksForNamespace` folds into\n * `entries.valueSet` on the PSL path — so a TS-attached entity (e.g. a\n * native enum) gets its value-set the same way. Entity kinds with no\n * registered descriptor, or whose descriptor output doesn't derive a\n * value-set, contribute nothing.\n */\nfunction deriveEntityValueSets(\n entitiesForNs: Readonly<Record<string, Readonly<Record<string, unknown>>>> | undefined,\n entityTypesByDiscriminator: ReadonlyMap<string, AuthoringEntityTypeDescriptor>,\n): Record<string, StorageValueSetInput> | undefined {\n if (entitiesForNs === undefined) return undefined;\n let result: Record<string, StorageValueSetInput> | undefined;\n for (const [kind, entitiesByName] of Object.entries(entitiesForNs)) {\n const descriptor = entityTypesByDiscriminator.get(kind);\n if (descriptor === undefined) continue;\n for (const [name, entity] of Object.entries(entitiesByName)) {\n const derivedValueSet = deriveValueSetFromEntity(descriptor.output, entity);\n if (derivedValueSet === undefined) continue;\n result ??= {};\n result[name] = derivedValueSet;\n }\n }\n return result;\n}\n\n/**\n * Merges a namespace's `enumType()`-derived value-sets with its pack-entity-\n * derived value-sets. Both land in the same `entries.valueSet[name]` slot —\n * which drives value-set → codec typing and the domain-enum CHECK — so a\n * same-named entry in both would let one silently overwrite the other and\n * corrupt whichever column resolves against it. The same collision class the\n * `mergeColumnAndAttachedEntities` guard rejects; the PSL path already hard-errors\n * on the equivalent (`interpretPslDocumentToSqlContract`). Reject it here too.\n */\nfunction mergeNamespaceValueSets(\n namespaceId: string,\n enumValueSets: Record<string, StorageValueSetInput> | undefined,\n packValueSets: Record<string, StorageValueSetInput> | undefined,\n): Record<string, StorageValueSetInput> {\n if (enumValueSets !== undefined && packValueSets !== undefined) {\n for (const name of Object.keys(packValueSets)) {\n if (Object.hasOwn(enumValueSets, name)) {\n throw new Error(\n `buildSqlContractFromDefinition: value-set \"${name}\" in namespace \"${namespaceId}\" is derived from both an enum and a pack entity — names must be unique per namespace.`,\n );\n }\n }\n }\n return { ...enumValueSets, ...packValueSets };\n}\n\nfunction ensureUnboundNamespaceSlot(\n namespaces: SqlStorageInput['namespaces'],\n createNamespace: ContractDefinition['createNamespace'],\n): SqlStorageInput['namespaces'] {\n if (Object.hasOwn(namespaces, UNBOUND_NAMESPACE_ID)) {\n return namespaces;\n }\n const unboundInput: SqlNamespaceInput = {\n id: UNBOUND_NAMESPACE_ID,\n entries: { table: {} },\n };\n const unbound = createNamespace(unboundInput);\n return {\n [UNBOUND_NAMESPACE_ID]: unbound,\n ...namespaces,\n };\n}\n\nexport function buildSqlContractFromDefinition(\n definition: ContractDefinition,\n codecLookup?: CodecLookup,\n): Contract<SqlStorage> {\n const target = definition.target.targetId;\n const defaultNamespaceId = definition.target.defaultNamespaceId;\n const qualifyColumnType = resolveColumnTypeQualifier(definition.target);\n const targetFamily = 'sql';\n const resolveNamespaceId = (m: ModelNode): string =>\n m.namespaceId !== undefined && m.namespaceId.length > 0 ? m.namespaceId : defaultNamespaceId;\n const modelsByName = new Map(definition.models.map((m) => [m.modelName, m]));\n const tableNamespaceByName = new Map(\n definition.models.map((m) => [\n m.tableName,\n m.namespaceId !== undefined && m.namespaceId.length > 0 ? m.namespaceId : defaultNamespaceId,\n ]),\n );\n const modelsByCoordinate = new Map(\n definition.models.map((m) => [`${resolveNamespaceId(m)}:${m.modelName}`, m]),\n );\n\n const tablesByNamespace: Record<string, Record<string, StorageTableInput>> = {};\n const modelNameToNamespaceId = new Map<string, string>();\n const executionDefaults: ExecutionMutationDefault[] = [];\n const modelsByNamespace: Record<string, Record<string, ContractModel>> = {};\n const collectedColumnEntities: CollectedColumnEntities = {};\n const rootEntries: Array<{\n readonly tableName: string;\n readonly namespaceId: string;\n readonly ref: CrossReference;\n }> = [];\n\n for (const semanticModel of definition.models) {\n const tableName = semanticModel.tableName;\n const namespaceId =\n semanticModel.namespaceId !== undefined && semanticModel.namespaceId.length > 0\n ? semanticModel.namespaceId\n : defaultNamespaceId;\n modelNameToNamespaceId.set(semanticModel.modelName, namespaceId);\n // STI variants share the base table; the base model already owns this\n // table name and its root, so the variant contributes neither.\n if (!semanticModel.sharesBaseTable) {\n rootEntries.push({\n tableName,\n namespaceId,\n ref: crossRef(semanticModel.modelName, namespaceId),\n });\n }\n\n // --- Build storage table ---\n\n const columns: Record<string, StorageColumn> = {};\n const fieldToColumn: Record<string, string> = {};\n const domainFields: Record<string, ContractField> = {};\n const domainFieldRefs: Record<string, DomainFieldRef> = {};\n const checksForTable: CheckConstraintInput[] = [];\n\n for (const field of semanticModel.fields) {\n const executionDefaultPhases =\n field.executionDefaults?.onCreate || field.executionDefaults?.onUpdate\n ? field.executionDefaults\n : undefined;\n if (executionDefaultPhases) {\n if (field.default !== undefined) {\n throw new Error(\n `Field \"${semanticModel.modelName}.${field.fieldName}\" cannot define both default and executionDefaults.`,\n );\n }\n if (field.nullable) {\n throw new Error(\n `Field \"${semanticModel.modelName}.${field.fieldName}\" cannot be nullable when executionDefaults are present.`,\n );\n }\n }\n\n const enumHandle = !isValueObjectField(field) ? field.enumTypeHandle : undefined;\n // Authored enums are always registered under the contract's defaultNamespaceId\n // (see the enum registration loop below), so refs must point there regardless\n // of which namespace the consuming model lives in.\n const storageValueSetRef: ValueSetRef | undefined =\n enumHandle !== undefined\n ? {\n plane: 'storage',\n entityKind: 'valueSet',\n namespaceId: defaultNamespaceId,\n entityName: enumHandle.enumName,\n }\n : undefined;\n const domainValueSetRef: ValueSetRef | undefined =\n enumHandle !== undefined\n ? {\n plane: 'domain',\n entityKind: 'enum',\n namespaceId: defaultNamespaceId,\n entityName: enumHandle.enumName,\n }\n : undefined;\n\n // A field authored through a deferred entity-ref column helper (e.g.\n // `pg.enum(handle)`) carries `descriptor.entityRef`: the referenced\n // entity is collected into `collectedColumnEntities` (folded into the\n // same `entries.<kind>` + `entries.valueSet` assembly an entities-channel\n // attachment goes through) and the descriptor is resolved\n // against this field's now-known `namespaceId` — the builder call that\n // produced it ran before the enclosing model associated one. The\n // descriptor is then handed to the target's `qualifyColumnType` hook,\n // which schema-qualifies a native-enum column's type name for its\n // namespace. Keying off the codec id (inside the hook) catches both the\n // TS `pg.enum(handle)` path (via `entityRef`) and the PSL `pg.enum(Ref)`\n // path (resolved inline in the interpreter, no `entityRef`). Because the\n // storage column is built from this qualified descriptor and the domain\n // field derives its `type.typeParams` from that column, both come out\n // qualified in this single pass.\n let resolvedField: FieldNode | ValueObjectFieldNode = field;\n if (!isValueObjectField(field)) {\n let descriptor = field.descriptor;\n const entityRef = descriptor.entityRef;\n if (entityRef !== undefined) {\n collectEntityFromColumn(collectedColumnEntities, namespaceId, entityRef);\n descriptor = resolveEntityRefDescriptor(descriptor, namespaceId);\n }\n descriptor = qualifyColumnDescriptor(descriptor, namespaceId, qualifyColumnType);\n if (descriptor !== field.descriptor) {\n resolvedField = { ...field, descriptor };\n }\n }\n\n const column = buildStorageColumn(resolvedField, storageValueSetRef, codecLookup);\n columns[field.columnName] = column;\n fieldToColumn[field.fieldName] = field.columnName;\n\n // A domain enum (`storageValueSetRef`, from an `enumType()` handle) is\n // stored as a plain scalar column (`text`, `int4`, …) with no native\n // type of its own to enforce membership, so it needs an explicit\n // CHECK — scalar or array, since a `text[]` array has no element-level\n // enforcement either. A value set resolved by an entity-ref type\n // constructor (`field.descriptor.valueSet`, e.g. `pg.enum(Ref)`) binds\n // the column to a codec/native-type pairing that IS the storage-level\n // enforcement (a Postgres native enum type, or another target's\n // equivalent) — including array columns, since the target enforces\n // membership on every element of a native-typed array — so no CHECK\n // for those.\n if (column.valueSet !== undefined && storageValueSetRef !== undefined) {\n checksForTable.push({\n name: `${tableName}_${field.columnName}_check`,\n column: field.columnName,\n valueSet: column.valueSet,\n });\n }\n\n domainFields[field.fieldName] = buildDomainField(field, column, domainValueSetRef);\n\n if (isValueObjectField(field)) {\n domainFieldRefs[field.fieldName] = {\n kind: 'valueObject',\n name: field.valueObjectName,\n ...(field.many ? { many: true } : {}),\n };\n } else if (field.many) {\n domainFieldRefs[field.fieldName] = { kind: 'scalar', many: true };\n }\n\n if (executionDefaultPhases) {\n executionDefaults.push({\n ref: { namespace: namespaceId, table: tableName, column: field.columnName },\n ...ifDefined('onCreate', executionDefaultPhases.onCreate),\n ...ifDefined('onUpdate', executionDefaultPhases.onUpdate),\n });\n }\n }\n\n const foreignKeys = (semanticModel.foreignKeys ?? []).map((fk) => {\n if (fk.references.spaceId !== undefined) {\n // Cross-space FK: the target lives in a different contract space.\n // Skip local model lookup and carry the spaceId coordinate through.\n const targetNamespaceId = fk.references.namespaceId ?? defaultNamespaceId;\n return {\n source: { namespaceId: asNamespaceId(namespaceId), tableName, columns: fk.columns },\n target: {\n namespaceId: asNamespaceId(targetNamespaceId),\n tableName: fk.references.table,\n columns: fk.references.columns,\n spaceId: fk.references.spaceId,\n },\n ...applyFkDefaults(\n {\n ...ifDefined('constraint', fk.constraint),\n ...ifDefined('index', fk.index),\n },\n definition.foreignKeyDefaults,\n ),\n ...ifDefined('name', fk.name),\n ...ifDefined('onDelete', fk.onDelete),\n ...ifDefined('onUpdate', fk.onUpdate),\n };\n }\n\n const targetModel = assertKnownTargetModel(\n modelsByName,\n modelsByCoordinate,\n semanticModel.modelName,\n fk.references.model,\n fk.references.namespaceId,\n 'Foreign key',\n );\n assertTargetTableMatches(\n semanticModel.modelName,\n targetModel,\n fk.references.table,\n 'Foreign key',\n );\n const targetNamespaceId =\n fk.references.namespaceId ??\n (targetModel.namespaceId !== undefined && targetModel.namespaceId.length > 0\n ? targetModel.namespaceId\n : defaultNamespaceId);\n return {\n source: { namespaceId: asNamespaceId(namespaceId), tableName, columns: fk.columns },\n target: {\n namespaceId: asNamespaceId(targetNamespaceId),\n tableName: fk.references.table,\n columns: fk.references.columns,\n },\n ...applyFkDefaults(\n {\n ...ifDefined('constraint', fk.constraint),\n ...ifDefined('index', fk.index),\n },\n definition.foreignKeyDefaults,\n ),\n ...ifDefined('name', fk.name),\n ...ifDefined('onDelete', fk.onDelete),\n ...ifDefined('onUpdate', fk.onUpdate),\n };\n });\n\n // STI variants share the base table: their columns are already\n // materialised onto the base `ModelNode`, so the variant builds a domain\n // model (below) but no storage table of its own.\n if (!semanticModel.sharesBaseTable) {\n const tableInput: StorageTableInput = {\n columns,\n ...ifDefined('control', semanticModel.control),\n uniques: (semanticModel.uniques ?? []).map((u) => ({\n columns: u.columns,\n ...ifDefined('name', u.name),\n })),\n indexes: (semanticModel.indexes ?? []).map((i) => ({\n columns: i.columns,\n ...ifDefined('name', i.name),\n ...ifDefined('type', i.type),\n ...ifDefined('options', i.options),\n })),\n foreignKeys,\n ...(semanticModel.id\n ? {\n primaryKey: {\n columns: semanticModel.id.columns,\n ...ifDefined('name', semanticModel.id.name),\n },\n }\n : {}),\n ...(checksForTable.length > 0 ? { checks: checksForTable } : {}),\n };\n\n let nsTables = tablesByNamespace[namespaceId];\n if (nsTables === undefined) {\n nsTables = {};\n tablesByNamespace[namespaceId] = nsTables;\n }\n if (nsTables[tableName] !== undefined) {\n throw new Error(\n `buildSqlContractFromDefinition: duplicate table \"${tableName}\" in namespace \"${namespaceId}\".`,\n );\n }\n nsTables[tableName] = tableInput;\n }\n\n // --- Build contract model ---\n\n const storageFields: Record<string, { readonly column: string }> = {};\n for (const [fieldName, columnName] of Object.entries(fieldToColumn)) {\n storageFields[fieldName] = { column: columnName };\n }\n\n const columnToField = new Map(\n Object.entries(fieldToColumn).map(([field, col]) => [col, field]),\n );\n const modelRelations: Record<string, ContractRelation> = {};\n for (const relation of semanticModel.relations ?? []) {\n // Cross-space relations have `spaceId` set — the target model lives in\n // a different contract space, so skip local model lookup and validation.\n if (relation.spaceId !== undefined) {\n const targetNamespaceId = relation.namespaceId ?? defaultNamespaceId;\n modelRelations[relation.fieldName] = {\n to: crossRef(relation.toModel, targetNamespaceId, relation.spaceId),\n // Cross-space belongsTo relations are always N:1 (the FK-owning side).\n cardinality: 'N:1',\n on: {\n localFields: relation.on.parentColumns.map((col) => columnToField.get(col) ?? col),\n // For cross-space targets the lowering carries field names directly\n // (no fieldToColumn map available for the remote model).\n targetFields: relation.on.childColumns,\n },\n };\n continue;\n }\n\n const targetModel = assertKnownTargetModel(\n modelsByName,\n modelsByCoordinate,\n semanticModel.modelName,\n relation.toModel,\n relation.toNamespaceId,\n 'Relation',\n );\n assertTargetTableMatches(semanticModel.modelName, targetModel, relation.toTable, 'Relation');\n\n const targetColumnToField = new Map(\n targetModel.fields.map((f) => [f.columnName, f.fieldName]),\n );\n\n const to = crossRef(\n relation.toModel,\n relation.toNamespaceId !== undefined && relation.toNamespaceId.length > 0\n ? relation.toNamespaceId\n : resolveModelNamespaceId(targetModel, modelNameToNamespaceId, defaultNamespaceId),\n );\n const on = {\n localFields: relation.on.parentColumns.map((col) => columnToField.get(col) ?? col),\n targetFields: relation.on.childColumns.map((col) => targetColumnToField.get(col) ?? col),\n };\n\n if (relation.cardinality === 'N:M') {\n if (!relation.through) {\n throw new Error(\n `Relation \"${semanticModel.modelName}.${relation.fieldName}\" with cardinality \"N:M\" requires through metadata`,\n );\n }\n modelRelations[relation.fieldName] = {\n to,\n cardinality: 'N:M',\n on,\n through: buildThroughDescriptor(\n relation.through,\n tableNamespaceByName,\n targetModel,\n semanticModel.modelName,\n relation.fieldName,\n defaultNamespaceId,\n ),\n };\n } else {\n modelRelations[relation.fieldName] = { to, cardinality: relation.cardinality, on };\n }\n }\n\n let namespaceModels = modelsByNamespace[namespaceId];\n if (namespaceModels === undefined) {\n namespaceModels = {};\n modelsByNamespace[namespaceId] = namespaceModels;\n }\n namespaceModels[semanticModel.modelName] = {\n storage: {\n table: tableName,\n namespaceId,\n fields: storageFields,\n },\n fields: domainFields,\n relations: modelRelations,\n };\n }\n\n // --- Assemble contract ---\n\n // Aggregate roots are keyed by bare storage table name. When two models in\n // different namespaces map to the same bare table name, the bare key would\n // collide (last write wins, silently dropping a root), so those entries fall\n // back to a namespace-qualified key. Single-namespace contracts never\n // collide and keep their bare keys unchanged.\n const rootTableNameCounts = new Map<string, number>();\n for (const entry of rootEntries) {\n rootTableNameCounts.set(entry.tableName, (rootTableNameCounts.get(entry.tableName) ?? 0) + 1);\n }\n const roots: Record<string, CrossReference> = {};\n for (const entry of rootEntries) {\n const key =\n (rootTableNameCounts.get(entry.tableName) ?? 0) > 1\n ? `${entry.namespaceId}.${entry.tableName}`\n : entry.tableName;\n roots[key] = entry.ref;\n }\n\n // Normalise raw codec-triple inputs to the `kind: 'codec-instance'`\n // discriminator shape before hashing so the storageHash matches the\n // persisted JSON envelope produced from the SqlStorage class instance\n // (which always carries the discriminator).\n const rawStorageTypes = definition.storageTypes ?? {};\n const documentTypes: Record<string, StorageTypeInstance> = Object.fromEntries(\n Object.entries(rawStorageTypes).map(([name, entry]) => {\n if ((entry as { kind?: unknown }).kind === 'codec-instance') return [name, entry];\n return [\n name,\n toStorageTypeInstance({\n codecId: entry.codecId,\n nativeType: entry.nativeType,\n typeParams: (entry as { typeParams?: Record<string, unknown> }).typeParams ?? {},\n }),\n ];\n }),\n );\n const namespaceCoordinateIds = collectStorageNamespaceCoordinateIds(definition);\n\n // Build per-namespace registries for `enumType()` handles.\n // All authored enums target the contract's default namespace.\n const domainEnumsByNs: Record<string, Record<string, ContractEnum>> = {};\n const storageValueSetsByNs: Record<string, Record<string, StorageValueSetInput>> = {};\n for (const [enumName, handle] of Object.entries(definition.enums ?? {})) {\n if (enumName !== handle.enumName) {\n throw new Error(\n `enum declaration key \"${enumName}\" must match enumType name \"${handle.enumName}\". Aliases are not supported.`,\n );\n }\n const nsId = defaultNamespaceId;\n let domainSlot = domainEnumsByNs[nsId];\n if (domainSlot === undefined) {\n domainSlot = {};\n domainEnumsByNs[nsId] = domainSlot;\n }\n domainSlot[enumName] = {\n codecId: handle.codecId,\n members: handle.enumMembers.map((m) => ({\n name: m.name,\n value: encodeViaCodec(m.value, handle.codecId, codecLookup),\n })),\n };\n\n let storageSlot = storageValueSetsByNs[nsId];\n if (storageSlot === undefined) {\n storageSlot = {};\n storageValueSetsByNs[nsId] = storageSlot;\n }\n storageSlot[enumName] = {\n kind: 'valueSet',\n values: handle.values.map((v) => encodeViaCodec(v, handle.codecId, codecLookup)),\n };\n }\n\n const { createNamespace } = definition;\n const entityTypesByDiscriminator = collectEntityTypeDescriptorsByDiscriminator(definition);\n const namespaces: SqlStorageInput['namespaces'] = Object.fromEntries(\n [...namespaceCoordinateIds].sort().map((id) => {\n const entitiesForNs = mergeColumnAndAttachedEntities(\n id,\n definition.attachedEntities?.[id],\n collectedColumnEntities[id],\n );\n assertNoManagedEntityKinds(id, entitiesForNs);\n\n const enumValueSetEntries = storageValueSetsByNs[id];\n const packValueSetEntries = deriveEntityValueSets(entitiesForNs, entityTypesByDiscriminator);\n const valueSetEntries =\n enumValueSetEntries !== undefined || packValueSetEntries !== undefined\n ? mergeNamespaceValueSets(id, enumValueSetEntries, packValueSetEntries)\n : undefined;\n\n const nsInput: SqlNamespaceInput = {\n id,\n entries: {\n table: tablesByNamespace[id] ?? {},\n ...entitiesForNs,\n ...(valueSetEntries !== undefined && Object.keys(valueSetEntries).length > 0\n ? { valueSet: valueSetEntries }\n : {}),\n },\n };\n return [id, createNamespace(nsInput)];\n }),\n );\n const storageWithoutHash = {\n ...(Object.keys(documentTypes).length > 0 ? { types: documentTypes } : {}),\n namespaces:\n defaultNamespaceId === UNBOUND_NAMESPACE_ID\n ? ensureUnboundNamespaceSlot(namespaces, createNamespace)\n : namespaces,\n };\n const storageHash: StorageHashBase<string> = definition.storageHash\n ? coreHash(definition.storageHash)\n : computeStorageHash({\n target,\n targetFamily,\n storage: storageWithoutHash as Record<string, unknown>,\n ...sqlContractCanonicalizationHooks,\n });\n const storage = new SqlStorage({ ...storageWithoutHash, storageHash });\n\n const executionSection =\n executionDefaults.length > 0\n ? {\n mutations: {\n defaults: executionDefaults.sort((a, b) => {\n const tableCompare = a.ref.table.localeCompare(b.ref.table);\n if (tableCompare !== 0) {\n return tableCompare;\n }\n return a.ref.column.localeCompare(b.ref.column);\n }),\n },\n }\n : undefined;\n\n const extensionNamespaces = definition.extensionPacks\n ? Object.values(definition.extensionPacks).map((pack) => pack.id)\n : undefined;\n\n const extensionPacks: Record<string, unknown> = { ...(definition.extensionPacks || {}) };\n if (extensionNamespaces) {\n for (const namespace of extensionNamespaces) {\n if (!Object.hasOwn(extensionPacks, namespace)) {\n extensionPacks[namespace] = {};\n }\n }\n }\n\n const extensionPackCapabilitySources = definition.extensionPacks\n ? Object.values(definition.extensionPacks).map(\n (pack) => pack.capabilities as CapabilityMatrix | undefined,\n )\n : [];\n const capabilities = mergeCapabilityMatrices(\n definition.target.capabilities as CapabilityMatrix | undefined,\n ...extensionPackCapabilitySources,\n );\n // Internal `profileHash` computation is unchanged from `origin/main`: it\n // continues to fingerprint the author-declared capability subset. With\n // `capabilities` removed from the `defineContract` input that subset is\n // now always empty, so the hash naturally stabilises at `hash({})`.\n const profileHash = computeProfileHash({\n target,\n targetFamily,\n capabilities: {},\n });\n\n const executionWithHash = executionSection\n ? {\n ...executionSection,\n executionHash: computeExecutionHash({ target, targetFamily, execution: executionSection }),\n }\n : undefined;\n\n const valueObjects: Record<string, ContractValueObject> | undefined =\n definition.valueObjects && definition.valueObjects.length > 0\n ? Object.fromEntries(\n definition.valueObjects.map((vo) => [\n vo.name,\n {\n fields: Object.fromEntries(\n vo.fields.map((f) => [\n f.fieldName,\n isValueObjectField(f)\n ? {\n type: { kind: 'valueObject' as const, name: f.valueObjectName },\n nullable: f.nullable,\n ...(f.many ? { many: true } : {}),\n }\n : {\n type: {\n kind: 'scalar' as const,\n codecId: f.descriptor.codecId,\n ...ifDefined('typeParams', f.descriptor.typeParams),\n },\n nullable: f.nullable,\n },\n ]),\n ),\n },\n ]),\n )\n : undefined;\n\n const domainNamespaceIds = new Set(Object.keys(modelsByNamespace));\n if (domainNamespaceIds.size === 0) {\n domainNamespaceIds.add(defaultNamespaceId);\n }\n if (valueObjects !== undefined) {\n domainNamespaceIds.add(defaultNamespaceId);\n }\n for (const nsId of Object.keys(domainEnumsByNs)) {\n domainNamespaceIds.add(nsId);\n }\n const domainNamespaces = Object.fromEntries(\n [...domainNamespaceIds].sort().map((namespaceId) => {\n const modelsInNs = modelsByNamespace[namespaceId] ?? {};\n const enumsInNs = domainEnumsByNs[namespaceId];\n const namespaceSlice = {\n models: modelsInNs,\n ...(namespaceId === defaultNamespaceId && valueObjects !== undefined\n ? { valueObjects }\n : {}),\n ...(enumsInNs !== undefined && Object.keys(enumsInNs).length > 0\n ? { enum: enumsInNs }\n : {}),\n };\n return [namespaceId, namespaceSlice];\n }),\n );\n\n const contract: Contract<SqlStorage> = {\n target,\n targetFamily,\n ...ifDefined('defaultControlPolicy', definition.defaultControlPolicy),\n domain: { namespaces: domainNamespaces },\n roots,\n storage,\n ...(executionWithHash ? { execution: executionWithHash } : {}),\n extensionPacks,\n capabilities,\n profileHash,\n meta: {},\n };\n\n assertStorageSemantics(definition, contract);\n\n return contract;\n}\n"],"mappings":"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"}
|