@prisma-next/family-sql 0.1.0-dev.29 → 0.1.0-dev.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,20 @@
1
1
  import { OperationRegistry } from '@prisma-next/operations';
2
- import { ExtensionPackManifest } from '@prisma-next/contract/pack-manifest-types';
3
2
  import { ControlFamilyDescriptor, ControlAdapterDescriptor, ControlDriverDescriptor, ControlExtensionDescriptor, MigrationOperationPolicy } from '@prisma-next/core-control-plane/types';
4
3
  export { MigrationOperationClass, MigrationOperationPolicy, MigrationPlan, MigrationPlanOperation, MigrationPlanner, MigrationPlannerConflict, MigrationPlannerResult, TargetMigrationsCapability } from '@prisma-next/core-control-plane/types';
5
4
  import { SqlControlAdapter } from './control-adapter.js';
6
- import { S as SqlControlFamilyInstance, a as SqlControlTargetDescriptor, C as CreateSqlMigrationPlanOptions, b as SqlMigrationPlan, c as SqlPlannerConflict, d as SqlPlannerFailureResult, e as SqlPlannerSuccessResult, f as SqlMigrationRunnerErrorCode, A as AnyRecord, g as SqlMigrationRunnerFailure, h as SqlMigrationRunnerSuccessValue } from './instance-Bhq2g51v.js';
7
- export { j as ComponentDatabaseDependencies, k as ComponentDatabaseDependency, i as SchemaVerifyOptions, l as SqlControlExtensionDescriptor, m as SqlMigrationPlanContractInfo, p as SqlMigrationPlanOperation, q as SqlMigrationPlanOperationStep, r as SqlMigrationPlanOperationTarget, n as SqlMigrationPlanner, o as SqlMigrationPlannerPlanOptions, s as SqlMigrationRunner, t as SqlMigrationRunnerExecuteCallbacks, u as SqlMigrationRunnerExecuteOptions, v as SqlMigrationRunnerResult, w as SqlPlannerConflictKind, x as SqlPlannerConflictLocation, y as SqlPlannerResult } from './instance-Bhq2g51v.js';
5
+ import { S as SqlControlFamilyInstance } from './instance-DiZi2k_2.js';
6
+ export { a as SchemaVerifyOptions } from './instance-DiZi2k_2.js';
7
+ import { S as SqlControlTargetDescriptor, C as CreateSqlMigrationPlanOptions, a as SqlMigrationPlan, b as SqlPlannerConflict, c as SqlPlannerFailureResult, d as SqlPlannerSuccessResult, e as SqlMigrationRunnerErrorCode, A as AnyRecord, f as SqlMigrationRunnerFailure, g as SqlMigrationRunnerSuccessValue } from './types-Bh7ftf0Q.js';
8
+ export { h as ComponentDatabaseDependencies, i as ComponentDatabaseDependency, j as SqlControlExtensionDescriptor, k as SqlMigrationPlanContractInfo, n as SqlMigrationPlanOperation, o as SqlMigrationPlanOperationStep, p as SqlMigrationPlanOperationTarget, l as SqlMigrationPlanner, m as SqlMigrationPlannerPlanOptions, q as SqlMigrationRunner, r as SqlMigrationRunnerExecuteCallbacks, s as SqlMigrationRunnerExecuteOptions, t as SqlMigrationRunnerResult, u as SqlPlannerConflictKind, v as SqlPlannerConflictLocation, w as SqlPlannerResult } from './types-Bh7ftf0Q.js';
8
9
  import { NotOk, Ok } from '@prisma-next/utils/result';
9
10
  import '@prisma-next/sql-schema-ir/types';
10
11
  import '@prisma-next/contract/framework-components';
11
- import '@prisma-next/sql-contract/types';
12
12
  import '@prisma-next/contract/ir';
13
+ import '@prisma-next/contract/pack-manifest-types';
13
14
  import '@prisma-next/contract/types';
14
15
  import '@prisma-next/core-control-plane/schema-view';
16
+ import '@prisma-next/sql-operations';
17
+ import '@prisma-next/sql-contract/types';
15
18
 
16
19
  type StorageColumn = {
17
20
  readonly nativeType: string;
@@ -77,7 +80,7 @@ interface ContractIR<TStorage extends Record<string, unknown> = Record<string, u
77
80
  readonly models: TModels;
78
81
  readonly relations: TRelations;
79
82
  readonly storage: TStorage;
80
- readonly extensions: Record<string, unknown>;
83
+ readonly extensionPacks: Record<string, unknown>;
81
84
  readonly capabilities: Record<string, Record<string, boolean>>;
82
85
  readonly meta: Record<string, unknown>;
83
86
  readonly sources: Record<string, unknown>;
@@ -111,7 +114,7 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
111
114
  readonly kind: "family";
112
115
  readonly id = "sql";
113
116
  readonly familyId: "sql";
114
- readonly manifest: ExtensionPackManifest;
117
+ readonly version = "0.0.1";
115
118
  readonly hook: {
116
119
  readonly id: "sql";
117
120
  readonly validateTypes: (ir: ContractIR, _ctx: ValidationContext) => void;
@@ -122,15 +125,15 @@ declare class SqlFamilyDescriptor implements ControlFamilyDescriptor<'sql', SqlC
122
125
  readonly generateRelationsType: (relations: Record<string, unknown> | undefined) => string;
123
126
  readonly generateMappingsType: (models: Record<string, ModelDefinition> | undefined, storage: SqlStorage, codecTypes: string, operationTypes: string) => string;
124
127
  };
125
- create<TTargetId extends string, TTargetDetails = Record<string, never>>(options: {
128
+ create<TTargetId extends string, TTargetDetails>(options: {
126
129
  readonly target: SqlControlTargetDescriptor<TTargetId, TTargetDetails>;
127
130
  readonly adapter: ControlAdapterDescriptor<'sql', TTargetId, SqlControlAdapter<TTargetId>>;
128
131
  readonly driver: ControlDriverDescriptor<'sql', TTargetId>;
129
- readonly extensions: readonly ControlExtensionDescriptor<'sql', TTargetId>[];
132
+ readonly extensionPacks: readonly ControlExtensionDescriptor<'sql', TTargetId>[];
130
133
  }): SqlControlFamilyInstance;
131
134
  }
132
135
 
133
- declare function createMigrationPlan<TTargetDetails = Record<string, never>>(options: CreateSqlMigrationPlanOptions<TTargetDetails>): SqlMigrationPlan<TTargetDetails>;
136
+ declare function createMigrationPlan<TTargetDetails>(options: CreateSqlMigrationPlanOptions<TTargetDetails>): SqlMigrationPlan<TTargetDetails>;
134
137
  declare function plannerSuccess<TTargetDetails>(plan: SqlMigrationPlan<TTargetDetails>): SqlPlannerSuccessResult<TTargetDetails>;
135
138
  declare function plannerFailure(conflicts: readonly SqlPlannerConflict[]): SqlPlannerFailureResult;
136
139
  /**
@@ -1,26 +1,22 @@
1
1
  import {
2
2
  createSqlFamilyInstance
3
- } from "./chunk-RVUPZUZP.js";
3
+ } from "./chunk-6P44BVZ4.js";
4
4
  import "./chunk-C3GKWCKA.js";
5
- import "./chunk-UKUAX2QM.js";
5
+ import "./chunk-F252JMEU.js";
6
6
 
7
7
  // src/core/descriptor.ts
8
8
  import { sqlTargetFamilyHook } from "@prisma-next/sql-contract-emitter";
9
- var sqlFamilyManifest = {
10
- id: "sql",
11
- version: "0.0.1"
12
- };
13
9
  var SqlFamilyDescriptor = class {
14
10
  kind = "family";
15
11
  id = "sql";
16
12
  familyId = "sql";
17
- manifest = sqlFamilyManifest;
13
+ version = "0.0.1";
18
14
  hook = sqlTargetFamilyHook;
19
15
  create(options) {
20
16
  return createSqlFamilyInstance({
21
17
  target: options.target,
22
18
  adapter: options.adapter,
23
- extensions: options.extensions
19
+ extensionPacks: options.extensionPacks
24
20
  });
25
21
  }
26
22
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/descriptor.ts","../../src/core/migrations/plan-helpers.ts","../../src/core/migrations/policies.ts","../../src/exports/control.ts"],"sourcesContent":["import type { ExtensionPackManifest } from '@prisma-next/contract/pack-manifest-types';\nimport type {\n ControlAdapterDescriptor,\n ControlDriverDescriptor,\n ControlExtensionDescriptor,\n ControlFamilyDescriptor,\n} from '@prisma-next/core-control-plane/types';\nimport { sqlTargetFamilyHook } from '@prisma-next/sql-contract-emitter';\nimport type { SqlControlAdapter } from './control-adapter';\nimport { createSqlFamilyInstance, type SqlControlFamilyInstance } from './instance';\nimport type { SqlControlTargetDescriptor } from './migrations/types';\n\n/**\n * SQL family manifest.\n */\nconst sqlFamilyManifest: ExtensionPackManifest = {\n id: 'sql',\n version: '0.0.1',\n};\n\n/**\n * SQL family descriptor implementation.\n * Provides the SQL family hook and factory method.\n */\nexport class SqlFamilyDescriptor\n implements ControlFamilyDescriptor<'sql', SqlControlFamilyInstance>\n{\n readonly kind = 'family' as const;\n readonly id = 'sql';\n readonly familyId = 'sql' as const;\n readonly manifest = sqlFamilyManifest;\n readonly hook = sqlTargetFamilyHook;\n\n create<TTargetId extends string, TTargetDetails = Record<string, never>>(options: {\n readonly target: SqlControlTargetDescriptor<TTargetId, TTargetDetails>;\n readonly adapter: ControlAdapterDescriptor<'sql', TTargetId, SqlControlAdapter<TTargetId>>;\n readonly driver: ControlDriverDescriptor<'sql', TTargetId>;\n readonly extensions: readonly ControlExtensionDescriptor<'sql', TTargetId>[];\n }): SqlControlFamilyInstance {\n return createSqlFamilyInstance({\n target: options.target,\n adapter: options.adapter,\n extensions: options.extensions,\n });\n }\n}\n","import type { NotOk, Ok } from '@prisma-next/utils/result';\nimport { notOk, ok } from '@prisma-next/utils/result';\nimport type {\n AnyRecord,\n CreateSqlMigrationPlanOptions,\n SqlMigrationPlan,\n SqlMigrationPlanOperation,\n SqlMigrationPlanOperationStep,\n SqlMigrationPlanOperationTarget,\n SqlMigrationRunnerErrorCode,\n SqlMigrationRunnerFailure,\n SqlMigrationRunnerSuccessValue,\n SqlPlannerConflict,\n SqlPlannerFailureResult,\n SqlPlannerSuccessResult,\n} from './types';\n\nconst readOnlyEmptyObject: Record<string, never> = Object.freeze({});\n\nfunction cloneRecord<T extends AnyRecord>(value: T): T {\n if (value === readOnlyEmptyObject) {\n return value;\n }\n return Object.freeze({ ...value }) as T;\n}\n\nfunction freezeSteps(\n steps: readonly SqlMigrationPlanOperationStep[],\n): readonly SqlMigrationPlanOperationStep[] {\n if (steps.length === 0) {\n return Object.freeze([]);\n }\n return Object.freeze(\n steps.map((step) =>\n Object.freeze({\n description: step.description,\n sql: step.sql,\n ...(step.meta ? { meta: cloneRecord(step.meta) } : {}),\n }),\n ),\n );\n}\n\nfunction freezeDetailsValue<T>(value: T): T {\n // Primitives and null/undefined are already immutable, return as-is\n if (value === null || value === undefined) {\n return value;\n }\n if (typeof value !== 'object') {\n return value;\n }\n // Arrays: shallow clone and freeze\n if (Array.isArray(value)) {\n return Object.freeze([...value]) as T;\n }\n // Objects: shallow clone and freeze (matching cloneRecord pattern)\n return Object.freeze({ ...value }) as T;\n}\n\nfunction freezeTargetDetails<TTargetDetails>(\n target: SqlMigrationPlanOperationTarget<TTargetDetails>,\n): SqlMigrationPlanOperationTarget<TTargetDetails> {\n return Object.freeze({\n id: target.id,\n ...(target.details !== undefined ? { details: freezeDetailsValue(target.details) } : {}),\n });\n}\n\nfunction freezeOperation<TTargetDetails>(\n operation: SqlMigrationPlanOperation<TTargetDetails>,\n): SqlMigrationPlanOperation<TTargetDetails> {\n return Object.freeze({\n id: operation.id,\n label: operation.label,\n ...(operation.summary ? { summary: operation.summary } : {}),\n operationClass: operation.operationClass,\n target: freezeTargetDetails(operation.target),\n precheck: freezeSteps(operation.precheck),\n execute: freezeSteps(operation.execute),\n postcheck: freezeSteps(operation.postcheck),\n ...(operation.meta ? { meta: cloneRecord(operation.meta) } : {}),\n });\n}\n\nfunction freezeOperations<TTargetDetails>(\n operations: readonly SqlMigrationPlanOperation<TTargetDetails>[],\n): readonly SqlMigrationPlanOperation<TTargetDetails>[] {\n if (operations.length === 0) {\n return Object.freeze([]);\n }\n return Object.freeze(operations.map((operation) => freezeOperation(operation)));\n}\n\nexport function createMigrationPlan<TTargetDetails = Record<string, never>>(\n options: CreateSqlMigrationPlanOptions<TTargetDetails>,\n): SqlMigrationPlan<TTargetDetails> {\n return Object.freeze({\n targetId: options.targetId,\n ...(options.origin !== undefined\n ? { origin: options.origin ? Object.freeze({ ...options.origin }) : null }\n : {}),\n destination: Object.freeze({ ...options.destination }),\n operations: freezeOperations(options.operations),\n ...(options.meta ? { meta: cloneRecord(options.meta) } : {}),\n });\n}\n\nexport function plannerSuccess<TTargetDetails>(\n plan: SqlMigrationPlan<TTargetDetails>,\n): SqlPlannerSuccessResult<TTargetDetails> {\n return Object.freeze({\n kind: 'success',\n plan,\n });\n}\n\nexport function plannerFailure(conflicts: readonly SqlPlannerConflict[]): SqlPlannerFailureResult {\n return Object.freeze({\n kind: 'failure' as const,\n conflicts: Object.freeze(\n conflicts.map((conflict) =>\n Object.freeze({\n kind: conflict.kind,\n summary: conflict.summary,\n ...(conflict.why ? { why: conflict.why } : {}),\n ...(conflict.location ? { location: Object.freeze({ ...conflict.location }) } : {}),\n ...(conflict.meta ? { meta: cloneRecord(conflict.meta) } : {}),\n }),\n ),\n ),\n });\n}\n\n/**\n * Creates a successful migration runner result.\n */\nexport function runnerSuccess(value: {\n operationsPlanned: number;\n operationsExecuted: number;\n}): Ok<SqlMigrationRunnerSuccessValue> {\n return ok(\n Object.freeze({\n operationsPlanned: value.operationsPlanned,\n operationsExecuted: value.operationsExecuted,\n }),\n );\n}\n\n/**\n * Creates a failed migration runner result.\n */\nexport function runnerFailure(\n code: SqlMigrationRunnerErrorCode,\n summary: string,\n options?: { why?: string; meta?: AnyRecord },\n): NotOk<SqlMigrationRunnerFailure> {\n const failure: SqlMigrationRunnerFailure = Object.freeze({\n code,\n summary,\n ...(options?.why ? { why: options.why } : {}),\n ...(options?.meta ? { meta: cloneRecord(options.meta) } : {}),\n });\n return notOk(failure);\n}\n","import type { MigrationOperationPolicy } from '@prisma-next/core-control-plane/types';\n\n/**\n * Policy used by `db init`: additive-only operations, no widening/destructive steps.\n */\nexport const INIT_ADDITIVE_POLICY: MigrationOperationPolicy = Object.freeze({\n allowedOperationClasses: Object.freeze(['additive'] as const),\n});\n","import { SqlFamilyDescriptor } from '../core/descriptor';\n\n// Re-export core types from canonical source\nexport type {\n MigrationOperationClass,\n MigrationOperationPolicy,\n MigrationPlan,\n MigrationPlanner,\n MigrationPlannerConflict,\n MigrationPlannerResult,\n MigrationPlanOperation,\n TargetMigrationsCapability,\n} from '@prisma-next/core-control-plane/types';\nexport type { SchemaVerifyOptions, SqlControlFamilyInstance } from '../core/instance';\nexport {\n createMigrationPlan,\n plannerFailure,\n plannerSuccess,\n runnerFailure,\n runnerSuccess,\n} from '../core/migrations/plan-helpers';\nexport { INIT_ADDITIVE_POLICY } from '../core/migrations/policies';\n// SQL-specific types\nexport type {\n ComponentDatabaseDependencies,\n ComponentDatabaseDependency,\n CreateSqlMigrationPlanOptions,\n SqlControlExtensionDescriptor,\n SqlControlTargetDescriptor,\n SqlMigrationPlan,\n SqlMigrationPlanContractInfo,\n SqlMigrationPlanner,\n SqlMigrationPlannerPlanOptions,\n SqlMigrationPlanOperation,\n SqlMigrationPlanOperationStep,\n SqlMigrationPlanOperationTarget,\n SqlMigrationRunner,\n SqlMigrationRunnerErrorCode,\n SqlMigrationRunnerExecuteCallbacks,\n SqlMigrationRunnerExecuteOptions,\n SqlMigrationRunnerFailure,\n SqlMigrationRunnerResult,\n SqlMigrationRunnerSuccessValue,\n SqlPlannerConflict,\n SqlPlannerConflictKind,\n SqlPlannerConflictLocation,\n SqlPlannerFailureResult,\n SqlPlannerResult,\n SqlPlannerSuccessResult,\n} from '../core/migrations/types';\n\n/**\n * SQL family descriptor for control plane (CLI/config).\n * Provides the SQL family hook and conversion helpers.\n */\nexport default new SqlFamilyDescriptor();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/core/descriptor.ts","../../src/core/migrations/plan-helpers.ts","../../src/core/migrations/policies.ts","../../src/exports/control.ts"],"sourcesContent":["import type {\n ControlAdapterDescriptor,\n ControlDriverDescriptor,\n ControlExtensionDescriptor,\n ControlFamilyDescriptor,\n} from '@prisma-next/core-control-plane/types';\nimport { sqlTargetFamilyHook } from '@prisma-next/sql-contract-emitter';\nimport type { SqlControlAdapter } from './control-adapter';\nimport { createSqlFamilyInstance, type SqlControlFamilyInstance } from './instance';\nimport type { SqlControlTargetDescriptor } from './migrations/types';\n\n/**\n * SQL family descriptor implementation.\n * Provides the SQL family hook and factory method.\n */\nexport class SqlFamilyDescriptor\n implements ControlFamilyDescriptor<'sql', SqlControlFamilyInstance>\n{\n readonly kind = 'family' as const;\n readonly id = 'sql';\n readonly familyId = 'sql' as const;\n readonly version = '0.0.1';\n readonly hook = sqlTargetFamilyHook;\n\n create<TTargetId extends string, TTargetDetails>(options: {\n readonly target: SqlControlTargetDescriptor<TTargetId, TTargetDetails>;\n readonly adapter: ControlAdapterDescriptor<'sql', TTargetId, SqlControlAdapter<TTargetId>>;\n readonly driver: ControlDriverDescriptor<'sql', TTargetId>;\n readonly extensionPacks: readonly ControlExtensionDescriptor<'sql', TTargetId>[];\n }): SqlControlFamilyInstance {\n return createSqlFamilyInstance({\n target: options.target,\n adapter: options.adapter,\n extensionPacks: options.extensionPacks,\n });\n }\n}\n","import type { NotOk, Ok } from '@prisma-next/utils/result';\nimport { notOk, ok } from '@prisma-next/utils/result';\nimport type {\n AnyRecord,\n CreateSqlMigrationPlanOptions,\n SqlMigrationPlan,\n SqlMigrationPlanOperation,\n SqlMigrationPlanOperationStep,\n SqlMigrationPlanOperationTarget,\n SqlMigrationRunnerErrorCode,\n SqlMigrationRunnerFailure,\n SqlMigrationRunnerSuccessValue,\n SqlPlannerConflict,\n SqlPlannerFailureResult,\n SqlPlannerSuccessResult,\n} from './types';\n\nconst readOnlyEmptyObject: Record<string, never> = Object.freeze({});\n\nfunction cloneRecord<T extends AnyRecord>(value: T): T {\n if (value === readOnlyEmptyObject) {\n return value;\n }\n return Object.freeze({ ...value }) as T;\n}\n\nfunction freezeSteps(\n steps: readonly SqlMigrationPlanOperationStep[],\n): readonly SqlMigrationPlanOperationStep[] {\n if (steps.length === 0) {\n return Object.freeze([]);\n }\n return Object.freeze(\n steps.map((step) =>\n Object.freeze({\n description: step.description,\n sql: step.sql,\n ...(step.meta ? { meta: cloneRecord(step.meta) } : {}),\n }),\n ),\n );\n}\n\nfunction freezeDetailsValue<T>(value: T): T {\n // Primitives and null/undefined are already immutable, return as-is\n if (value === null || value === undefined) {\n return value;\n }\n if (typeof value !== 'object') {\n return value;\n }\n // Arrays: shallow clone and freeze\n if (Array.isArray(value)) {\n return Object.freeze([...value]) as T;\n }\n // Objects: shallow clone and freeze (matching cloneRecord pattern)\n return Object.freeze({ ...value }) as T;\n}\n\nfunction freezeTargetDetails<TTargetDetails>(\n target: SqlMigrationPlanOperationTarget<TTargetDetails>,\n): SqlMigrationPlanOperationTarget<TTargetDetails> {\n return Object.freeze({\n id: target.id,\n ...(target.details !== undefined ? { details: freezeDetailsValue(target.details) } : {}),\n });\n}\n\nfunction freezeOperation<TTargetDetails>(\n operation: SqlMigrationPlanOperation<TTargetDetails>,\n): SqlMigrationPlanOperation<TTargetDetails> {\n return Object.freeze({\n id: operation.id,\n label: operation.label,\n ...(operation.summary ? { summary: operation.summary } : {}),\n operationClass: operation.operationClass,\n target: freezeTargetDetails(operation.target),\n precheck: freezeSteps(operation.precheck),\n execute: freezeSteps(operation.execute),\n postcheck: freezeSteps(operation.postcheck),\n ...(operation.meta ? { meta: cloneRecord(operation.meta) } : {}),\n });\n}\n\nfunction freezeOperations<TTargetDetails>(\n operations: readonly SqlMigrationPlanOperation<TTargetDetails>[],\n): readonly SqlMigrationPlanOperation<TTargetDetails>[] {\n if (operations.length === 0) {\n return Object.freeze([]);\n }\n return Object.freeze(operations.map((operation) => freezeOperation(operation)));\n}\n\nexport function createMigrationPlan<TTargetDetails>(\n options: CreateSqlMigrationPlanOptions<TTargetDetails>,\n): SqlMigrationPlan<TTargetDetails> {\n return Object.freeze({\n targetId: options.targetId,\n ...(options.origin !== undefined\n ? { origin: options.origin ? Object.freeze({ ...options.origin }) : null }\n : {}),\n destination: Object.freeze({ ...options.destination }),\n operations: freezeOperations(options.operations),\n ...(options.meta ? { meta: cloneRecord(options.meta) } : {}),\n });\n}\n\nexport function plannerSuccess<TTargetDetails>(\n plan: SqlMigrationPlan<TTargetDetails>,\n): SqlPlannerSuccessResult<TTargetDetails> {\n return Object.freeze({\n kind: 'success',\n plan,\n });\n}\n\nexport function plannerFailure(conflicts: readonly SqlPlannerConflict[]): SqlPlannerFailureResult {\n return Object.freeze({\n kind: 'failure' as const,\n conflicts: Object.freeze(\n conflicts.map((conflict) =>\n Object.freeze({\n kind: conflict.kind,\n summary: conflict.summary,\n ...(conflict.why ? { why: conflict.why } : {}),\n ...(conflict.location ? { location: Object.freeze({ ...conflict.location }) } : {}),\n ...(conflict.meta ? { meta: cloneRecord(conflict.meta) } : {}),\n }),\n ),\n ),\n });\n}\n\n/**\n * Creates a successful migration runner result.\n */\nexport function runnerSuccess(value: {\n operationsPlanned: number;\n operationsExecuted: number;\n}): Ok<SqlMigrationRunnerSuccessValue> {\n return ok(\n Object.freeze({\n operationsPlanned: value.operationsPlanned,\n operationsExecuted: value.operationsExecuted,\n }),\n );\n}\n\n/**\n * Creates a failed migration runner result.\n */\nexport function runnerFailure(\n code: SqlMigrationRunnerErrorCode,\n summary: string,\n options?: { why?: string; meta?: AnyRecord },\n): NotOk<SqlMigrationRunnerFailure> {\n const failure: SqlMigrationRunnerFailure = Object.freeze({\n code,\n summary,\n ...(options?.why ? { why: options.why } : {}),\n ...(options?.meta ? { meta: cloneRecord(options.meta) } : {}),\n });\n return notOk(failure);\n}\n","import type { MigrationOperationPolicy } from '@prisma-next/core-control-plane/types';\n\n/**\n * Policy used by `db init`: additive-only operations, no widening/destructive steps.\n */\nexport const INIT_ADDITIVE_POLICY: MigrationOperationPolicy = Object.freeze({\n allowedOperationClasses: Object.freeze(['additive'] as const),\n});\n","import { SqlFamilyDescriptor } from '../core/descriptor';\n\n// Re-export core types from canonical source\nexport type {\n MigrationOperationClass,\n MigrationOperationPolicy,\n MigrationPlan,\n MigrationPlanner,\n MigrationPlannerConflict,\n MigrationPlannerResult,\n MigrationPlanOperation,\n TargetMigrationsCapability,\n} from '@prisma-next/core-control-plane/types';\nexport type { SchemaVerifyOptions, SqlControlFamilyInstance } from '../core/instance';\nexport {\n createMigrationPlan,\n plannerFailure,\n plannerSuccess,\n runnerFailure,\n runnerSuccess,\n} from '../core/migrations/plan-helpers';\nexport { INIT_ADDITIVE_POLICY } from '../core/migrations/policies';\n// SQL-specific types\nexport type {\n ComponentDatabaseDependencies,\n ComponentDatabaseDependency,\n CreateSqlMigrationPlanOptions,\n SqlControlExtensionDescriptor,\n SqlControlTargetDescriptor,\n SqlMigrationPlan,\n SqlMigrationPlanContractInfo,\n SqlMigrationPlanner,\n SqlMigrationPlannerPlanOptions,\n SqlMigrationPlanOperation,\n SqlMigrationPlanOperationStep,\n SqlMigrationPlanOperationTarget,\n SqlMigrationRunner,\n SqlMigrationRunnerErrorCode,\n SqlMigrationRunnerExecuteCallbacks,\n SqlMigrationRunnerExecuteOptions,\n SqlMigrationRunnerFailure,\n SqlMigrationRunnerResult,\n SqlMigrationRunnerSuccessValue,\n SqlPlannerConflict,\n SqlPlannerConflictKind,\n SqlPlannerConflictLocation,\n SqlPlannerFailureResult,\n SqlPlannerResult,\n SqlPlannerSuccessResult,\n} from '../core/migrations/types';\n\n/**\n * SQL family descriptor for control plane (CLI/config).\n * Provides the SQL family hook and conversion helpers.\n */\nexport default new SqlFamilyDescriptor();\n"],"mappings":"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","names":[]}
@@ -0,0 +1,127 @@
1
+ import { TargetBoundComponentDescriptor } from '@prisma-next/contract/framework-components';
2
+ import { ContractIR } from '@prisma-next/contract/ir';
3
+ import { OperationManifest } from '@prisma-next/contract/pack-manifest-types';
4
+ import { TypesImportSpec } from '@prisma-next/contract/types';
5
+ import { CoreSchemaView } from '@prisma-next/core-control-plane/schema-view';
6
+ import { ControlFamilyInstance, ControlDriverInstance, VerifyDatabaseResult, OperationContext, VerifyDatabaseSchemaResult, SignDatabaseResult, EmitContractResult } from '@prisma-next/core-control-plane/types';
7
+ import { OperationRegistry } from '@prisma-next/operations';
8
+ import { SqlOperationSignature } from '@prisma-next/sql-operations';
9
+ import { SqlSchemaIR } from '@prisma-next/sql-schema-ir/types';
10
+
11
+ /**
12
+ * Converts an OperationManifest (descriptor declarative data) to a SqlOperationSignature.
13
+ * This is SQL-family-specific conversion logic used by instance creation and test utilities.
14
+ */
15
+ declare function convertOperationManifest(manifest: OperationManifest): SqlOperationSignature;
16
+ /**
17
+ * Type metadata for SQL storage types.
18
+ * Maps contract storage type IDs to native database types.
19
+ */
20
+ interface SqlTypeMetadata {
21
+ readonly typeId: string;
22
+ readonly familyId: 'sql';
23
+ readonly targetId: string;
24
+ readonly nativeType?: string;
25
+ }
26
+ /**
27
+ * Registry mapping type IDs to their metadata.
28
+ * Keyed by contract storage type ID (e.g., 'pg/int4@1').
29
+ */
30
+ type SqlTypeMetadataRegistry = Map<string, SqlTypeMetadata>;
31
+ /**
32
+ * State fields for SQL family instance that hold assembly data.
33
+ */
34
+ interface SqlFamilyInstanceState {
35
+ readonly operationRegistry: OperationRegistry;
36
+ readonly codecTypeImports: ReadonlyArray<TypesImportSpec>;
37
+ readonly operationTypeImports: ReadonlyArray<TypesImportSpec>;
38
+ readonly extensionIds: ReadonlyArray<string>;
39
+ readonly typeMetadataRegistry: SqlTypeMetadataRegistry;
40
+ }
41
+ /**
42
+ * Options for schema verification.
43
+ */
44
+ interface SchemaVerifyOptions {
45
+ readonly driver: ControlDriverInstance<'sql', string>;
46
+ readonly contractIR: unknown;
47
+ readonly strict: boolean;
48
+ readonly context?: OperationContext;
49
+ /**
50
+ * Active framework components participating in this composition.
51
+ * All components must have matching familyId ('sql') and targetId.
52
+ */
53
+ readonly frameworkComponents: ReadonlyArray<TargetBoundComponentDescriptor<'sql', string>>;
54
+ }
55
+ /**
56
+ * SQL control family instance interface.
57
+ * Extends ControlFamilyInstance with SQL-specific domain actions.
58
+ */
59
+ interface SqlControlFamilyInstance extends ControlFamilyInstance<'sql'>, SqlFamilyInstanceState {
60
+ /**
61
+ * Validates a contract JSON and returns a validated ContractIR (without mappings).
62
+ * Mappings are runtime-only and should not be part of ContractIR.
63
+ */
64
+ validateContractIR(contractJson: unknown): ContractIR;
65
+ /**
66
+ * Verifies the database marker against the contract.
67
+ * Compares target, coreHash, and profileHash.
68
+ */
69
+ verify(options: {
70
+ readonly driver: ControlDriverInstance<'sql', string>;
71
+ readonly contractIR: unknown;
72
+ readonly expectedTargetId: string;
73
+ readonly contractPath: string;
74
+ readonly configPath?: string;
75
+ }): Promise<VerifyDatabaseResult>;
76
+ /**
77
+ * Verifies the database schema against the contract.
78
+ * Compares contract requirements against live database schema.
79
+ */
80
+ schemaVerify(options: SchemaVerifyOptions): Promise<VerifyDatabaseSchemaResult>;
81
+ /**
82
+ * Signs the database with the contract marker.
83
+ * Writes or updates the contract marker if schema verification passes.
84
+ * This operation is idempotent - if the marker already matches, no changes are made.
85
+ */
86
+ sign(options: {
87
+ readonly driver: ControlDriverInstance<'sql', string>;
88
+ readonly contractIR: unknown;
89
+ readonly contractPath: string;
90
+ readonly configPath?: string;
91
+ }): Promise<SignDatabaseResult>;
92
+ /**
93
+ * Introspects the database schema and returns a family-specific schema IR.
94
+ *
95
+ * This is a read-only operation that returns a snapshot of the live database schema.
96
+ * The method is family-owned and delegates to target/adapter-specific introspectors
97
+ * to perform the actual schema introspection.
98
+ *
99
+ * @param options - Introspection options
100
+ * @param options.driver - Control plane driver for database connection
101
+ * @param options.contractIR - Optional contract IR for contract-guided introspection.
102
+ * When provided, families may use it for filtering, optimization, or validation
103
+ * during introspection. The contract IR does not change the meaning of "what exists"
104
+ * in the database - it only guides how introspection is performed.
105
+ * @returns Promise resolving to the family-specific Schema IR (e.g., `SqlSchemaIR` for SQL).
106
+ * The IR represents the complete schema snapshot at the time of introspection.
107
+ */
108
+ introspect(options: {
109
+ readonly driver: ControlDriverInstance<'sql', string>;
110
+ readonly contractIR?: unknown;
111
+ }): Promise<SqlSchemaIR>;
112
+ /**
113
+ * Projects a SQL Schema IR into a core schema view for CLI visualization.
114
+ * Converts SqlSchemaIR (tables, columns, indexes, extensions) into a tree structure.
115
+ */
116
+ toSchemaView(schema: SqlSchemaIR): CoreSchemaView;
117
+ /**
118
+ * Emits contract JSON and DTS as strings.
119
+ * Uses the instance's preassembled state (operation registry, type imports, extension IDs).
120
+ * Handles stripping mappings and validation internally.
121
+ */
122
+ emitContract(options: {
123
+ readonly contractIR: ContractIR | unknown;
124
+ }): Promise<EmitContractResult>;
125
+ }
126
+
127
+ export { type SqlControlFamilyInstance as S, type SchemaVerifyOptions as a, convertOperationManifest as c };
@@ -1,33 +1,30 @@
1
- import { ExtensionPackManifest } from '@prisma-next/contract/pack-manifest-types';
2
- import { RuntimeFamilyInstance, RuntimeAdapterInstance, RuntimeDriverInstance, RuntimeFamilyDescriptor, RuntimeTargetDescriptor, RuntimeAdapterDescriptor, RuntimeDriverDescriptor, RuntimeExtensionDescriptor } from '@prisma-next/core-execution-plane/types';
1
+ import { RuntimeFamilyInstance, RuntimeDriverInstance, RuntimeFamilyDescriptor, RuntimeTargetDescriptor, RuntimeAdapterDescriptor, RuntimeDriverDescriptor, RuntimeExtensionDescriptor } from '@prisma-next/core-execution-plane/types';
3
2
  import { RuntimeVerifyOptions, Plugin, Log } from '@prisma-next/runtime-executor';
4
3
  import { SqlContract, SqlStorage } from '@prisma-next/sql-contract/types';
5
4
  import { Adapter, SelectAst, LoweredStatement, SqlDriver } from '@prisma-next/sql-relational-core/ast';
6
- import { Extension, Runtime } from '@prisma-next/sql-runtime';
5
+ import { Runtime, SqlRuntimeAdapterInstance } from '@prisma-next/sql-runtime';
7
6
 
8
7
  /**
9
8
  * SQL runtime driver instance type.
10
9
  * Combines identity properties with SQL-specific behavior methods.
11
10
  */
12
11
  type SqlRuntimeDriverInstance<TTargetId extends string = string> = RuntimeDriverInstance<'sql', TTargetId> & SqlDriver;
13
- /**
14
- * SQL runtime adapter instance type.
15
- * Combines identity properties with SQL-specific adapter behavior.
16
- */
17
- type SqlRuntimeAdapterInstance<TTargetId extends string = string> = RuntimeAdapterInstance<'sql', TTargetId> & Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>;
12
+
18
13
  /**
19
14
  * SQL runtime family instance interface.
20
15
  * Extends base RuntimeFamilyInstance with SQL-specific runtime creation method.
21
16
  */
22
17
  interface SqlRuntimeFamilyInstance extends RuntimeFamilyInstance<'sql'> {
23
18
  /**
24
- * Creates a SQL runtime from contract, adapter, driver, and extensions.
19
+ * Creates a SQL runtime from contract, driver options, and verification settings.
20
+ *
21
+ * Extension packs are routed through composition (at instance creation time),
22
+ * not through this method. This aligns with control-plane composition patterns.
25
23
  *
26
24
  * @param options - Runtime creation options
27
25
  * @param options.contract - SQL contract
28
26
  * @param options.driverOptions - Driver options (e.g., PostgresDriverOptions)
29
27
  * @param options.verify - Runtime verification options
30
- * @param options.extensions - Optional extensions (Extension objects, not descriptors)
31
28
  * @param options.plugins - Optional plugins
32
29
  * @param options.mode - Optional runtime mode
33
30
  * @param options.log - Optional log instance
@@ -37,7 +34,6 @@ interface SqlRuntimeFamilyInstance extends RuntimeFamilyInstance<'sql'> {
37
34
  readonly contract: TContract;
38
35
  readonly driverOptions: unknown;
39
36
  readonly verify: RuntimeVerifyOptions;
40
- readonly extensions?: readonly Extension[];
41
37
  readonly plugins?: readonly Plugin<TContract, Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>, SqlDriver>[];
42
38
  readonly mode?: 'strict' | 'permissive';
43
39
  readonly log?: Log;
@@ -52,12 +48,12 @@ declare class SqlRuntimeFamilyDescriptor implements RuntimeFamilyDescriptor<'sql
52
48
  readonly kind: "family";
53
49
  readonly id = "sql";
54
50
  readonly familyId: "sql";
55
- readonly manifest: ExtensionPackManifest;
51
+ readonly version = "0.0.1";
56
52
  create<TTargetId extends string>(options: {
57
53
  readonly target: RuntimeTargetDescriptor<'sql', TTargetId>;
58
54
  readonly adapter: RuntimeAdapterDescriptor<'sql', TTargetId, SqlRuntimeAdapterInstance<TTargetId>>;
59
55
  readonly driver: RuntimeDriverDescriptor<'sql', TTargetId, SqlRuntimeDriverInstance<TTargetId>>;
60
- readonly extensions: readonly RuntimeExtensionDescriptor<'sql', TTargetId>[];
56
+ readonly extensionPacks: readonly RuntimeExtensionDescriptor<'sql', TTargetId>[];
61
57
  }): SqlRuntimeFamilyInstance;
62
58
  }
63
59
 
@@ -1,35 +1,32 @@
1
1
  // src/core/runtime-instance.ts
2
+ import { assertRuntimeContractRequirementsSatisfied } from "@prisma-next/core-execution-plane/framework-components";
2
3
  import { createRuntime, createRuntimeContext } from "@prisma-next/sql-runtime";
3
4
  function createSqlRuntimeFamilyInstance(options) {
4
5
  const {
6
+ family: familyDescriptor,
7
+ target: targetDescriptor,
5
8
  adapter: adapterDescriptor,
6
9
  driver: driverDescriptor,
7
- extensions: extensionDescriptors
10
+ extensionPacks: extensionDescriptors = []
8
11
  } = options;
9
12
  return {
10
13
  familyId: "sql",
11
14
  createRuntime(runtimeOptions) {
12
- const adapterInstance = adapterDescriptor.create();
13
- const driverInstance = driverDescriptor.create(runtimeOptions.driverOptions);
14
- const extensionInstances = extensionDescriptors.map((ext) => ext.create());
15
- const descriptorExtensions = extensionInstances.map((ext) => {
16
- const extension = {};
17
- if ("codecs" in ext && typeof ext.codecs === "function") {
18
- extension.codecs = ext.codecs;
19
- }
20
- if ("operations" in ext && typeof ext.operations === "function") {
21
- extension.operations = ext.operations;
22
- }
23
- return extension;
15
+ assertRuntimeContractRequirementsSatisfied({
16
+ contract: runtimeOptions.contract,
17
+ family: familyDescriptor,
18
+ target: targetDescriptor,
19
+ adapter: adapterDescriptor,
20
+ extensionPacks: extensionDescriptors
24
21
  });
25
- const extensions = [...descriptorExtensions, ...runtimeOptions.extensions ?? []];
22
+ const driverInstance = driverDescriptor.create(runtimeOptions.driverOptions);
26
23
  const context = createRuntimeContext({
27
24
  contract: runtimeOptions.contract,
28
- adapter: adapterInstance,
29
- extensions
25
+ target: targetDescriptor,
26
+ adapter: adapterDescriptor,
27
+ extensionPacks: extensionDescriptors
30
28
  });
31
29
  const runtimeOptions_ = {
32
- adapter: adapterInstance,
33
30
  driver: driverInstance,
34
31
  verify: runtimeOptions.verify,
35
32
  context,
@@ -43,21 +40,18 @@ function createSqlRuntimeFamilyInstance(options) {
43
40
  }
44
41
 
45
42
  // src/core/runtime-descriptor.ts
46
- var sqlFamilyManifest = {
47
- id: "sql",
48
- version: "0.0.1"
49
- };
50
43
  var SqlRuntimeFamilyDescriptor = class {
51
44
  kind = "family";
52
45
  id = "sql";
53
46
  familyId = "sql";
54
- manifest = sqlFamilyManifest;
47
+ version = "0.0.1";
55
48
  create(options) {
56
49
  return createSqlRuntimeFamilyInstance({
50
+ family: this,
57
51
  target: options.target,
58
52
  adapter: options.adapter,
59
53
  driver: options.driver,
60
- extensions: options.extensions
54
+ extensionPacks: options.extensionPacks
61
55
  });
62
56
  }
63
57
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/runtime-instance.ts","../../src/core/runtime-descriptor.ts","../../src/exports/runtime.ts"],"sourcesContent":["import type {\n RuntimeAdapterDescriptor,\n RuntimeAdapterInstance,\n RuntimeDriverDescriptor,\n RuntimeDriverInstance,\n RuntimeExtensionDescriptor,\n RuntimeFamilyInstance,\n RuntimeTargetDescriptor,\n} from '@prisma-next/core-execution-plane/types';\nimport type { Log, Plugin, RuntimeVerifyOptions } from '@prisma-next/runtime-executor';\nimport type { SqlContract, SqlStorage } from '@prisma-next/sql-contract/types';\nimport type {\n Adapter,\n LoweredStatement,\n SelectAst,\n SqlDriver,\n} from '@prisma-next/sql-relational-core/ast';\nimport type { Runtime, RuntimeContext, RuntimeOptions } from '@prisma-next/sql-runtime';\nimport { createRuntime, createRuntimeContext, type Extension } from '@prisma-next/sql-runtime';\n\n/**\n * SQL runtime driver instance type.\n * Combines identity properties with SQL-specific behavior methods.\n */\nexport type SqlRuntimeDriverInstance<TTargetId extends string = string> = RuntimeDriverInstance<\n 'sql',\n TTargetId\n> &\n SqlDriver;\n\n/**\n * SQL runtime adapter instance type.\n * Combines identity properties with SQL-specific adapter behavior.\n */\nexport type SqlRuntimeAdapterInstance<TTargetId extends string = string> = RuntimeAdapterInstance<\n 'sql',\n TTargetId\n> &\n Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>;\n\n/**\n * SQL runtime family instance interface.\n * Extends base RuntimeFamilyInstance with SQL-specific runtime creation method.\n */\nexport interface SqlRuntimeFamilyInstance extends RuntimeFamilyInstance<'sql'> {\n /**\n * Creates a SQL runtime from contract, adapter, driver, and extensions.\n *\n * @param options - Runtime creation options\n * @param options.contract - SQL contract\n * @param options.driverOptions - Driver options (e.g., PostgresDriverOptions)\n * @param options.verify - Runtime verification options\n * @param options.extensions - Optional extensions (Extension objects, not descriptors)\n * @param options.plugins - Optional plugins\n * @param options.mode - Optional runtime mode\n * @param options.log - Optional log instance\n * @returns Runtime instance\n */\n createRuntime<TContract extends SqlContract<SqlStorage>>(options: {\n readonly contract: TContract;\n readonly driverOptions: unknown;\n readonly verify: RuntimeVerifyOptions;\n readonly extensions?: readonly Extension[];\n readonly plugins?: readonly Plugin<\n TContract,\n Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>,\n SqlDriver\n >[];\n readonly mode?: 'strict' | 'permissive';\n readonly log?: Log;\n }): Runtime;\n}\n\n/**\n * Creates a SQL runtime family instance from runtime descriptors.\n */\nexport function createSqlRuntimeFamilyInstance(options: {\n readonly target: RuntimeTargetDescriptor<'sql', string>;\n readonly adapter: RuntimeAdapterDescriptor<'sql', string, SqlRuntimeAdapterInstance>;\n readonly driver: RuntimeDriverDescriptor<'sql', string, SqlRuntimeDriverInstance>;\n readonly extensions: readonly RuntimeExtensionDescriptor<'sql', string>[];\n}): SqlRuntimeFamilyInstance {\n const {\n adapter: adapterDescriptor,\n driver: driverDescriptor,\n extensions: extensionDescriptors,\n } = options;\n\n return {\n familyId: 'sql' as const,\n createRuntime<TContract extends SqlContract<SqlStorage>>(runtimeOptions: {\n readonly contract: TContract;\n readonly driverOptions: unknown;\n readonly verify: RuntimeVerifyOptions;\n readonly extensions?: readonly Extension[];\n readonly plugins?: readonly Plugin<\n TContract,\n Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>,\n SqlDriver\n >[];\n readonly mode?: 'strict' | 'permissive';\n readonly log?: Log;\n }): Runtime {\n const adapterInstance = adapterDescriptor.create();\n const driverInstance = driverDescriptor.create(runtimeOptions.driverOptions);\n\n const extensionInstances = extensionDescriptors.map((ext) => ext.create());\n\n const descriptorExtensions: Extension[] = extensionInstances.map((ext) => {\n const extension: Extension = {};\n if ('codecs' in ext && typeof ext.codecs === 'function') {\n extension.codecs =\n ext.codecs as () => import('@prisma-next/sql-relational-core/ast').CodecRegistry;\n }\n if ('operations' in ext && typeof ext.operations === 'function') {\n extension.operations =\n ext.operations as () => readonly import('@prisma-next/sql-operations').SqlOperationSignature[];\n }\n return extension;\n });\n\n const extensions = [...descriptorExtensions, ...(runtimeOptions.extensions ?? [])];\n\n const context = createRuntimeContext({\n contract: runtimeOptions.contract,\n adapter: adapterInstance,\n extensions,\n }) as RuntimeContext<TContract>;\n\n const runtimeOptions_: RuntimeOptions<TContract> = {\n adapter: adapterInstance,\n driver: driverInstance,\n verify: runtimeOptions.verify,\n context,\n ...(runtimeOptions.plugins ? { plugins: runtimeOptions.plugins } : {}),\n ...(runtimeOptions.mode ? { mode: runtimeOptions.mode } : {}),\n ...(runtimeOptions.log ? { log: runtimeOptions.log } : {}),\n };\n\n return createRuntime(runtimeOptions_);\n },\n };\n}\n","import type { ExtensionPackManifest } from '@prisma-next/contract/pack-manifest-types';\nimport type {\n RuntimeAdapterDescriptor,\n RuntimeDriverDescriptor,\n RuntimeExtensionDescriptor,\n RuntimeFamilyDescriptor,\n RuntimeTargetDescriptor,\n} from '@prisma-next/core-execution-plane/types';\nimport {\n createSqlRuntimeFamilyInstance,\n type SqlRuntimeAdapterInstance,\n type SqlRuntimeDriverInstance,\n type SqlRuntimeFamilyInstance,\n} from './runtime-instance';\n\n/**\n * SQL family manifest for runtime plane.\n */\nconst sqlFamilyManifest: ExtensionPackManifest = {\n id: 'sql',\n version: '0.0.1',\n};\n\n/**\n * SQL runtime family descriptor implementation.\n * Provides factory method to create SQL runtime family instance.\n */\nexport class SqlRuntimeFamilyDescriptor\n implements RuntimeFamilyDescriptor<'sql', SqlRuntimeFamilyInstance>\n{\n readonly kind = 'family' as const;\n readonly id = 'sql';\n readonly familyId = 'sql' as const;\n readonly manifest = sqlFamilyManifest;\n\n create<TTargetId extends string>(options: {\n readonly target: RuntimeTargetDescriptor<'sql', TTargetId>;\n readonly adapter: RuntimeAdapterDescriptor<\n 'sql',\n TTargetId,\n SqlRuntimeAdapterInstance<TTargetId>\n >;\n readonly driver: RuntimeDriverDescriptor<'sql', TTargetId, SqlRuntimeDriverInstance<TTargetId>>;\n readonly extensions: readonly RuntimeExtensionDescriptor<'sql', TTargetId>[];\n }): SqlRuntimeFamilyInstance {\n return createSqlRuntimeFamilyInstance({\n target: options.target,\n adapter: options.adapter,\n driver: options.driver,\n extensions: options.extensions,\n });\n }\n}\n","import { SqlRuntimeFamilyDescriptor } from '../core/runtime-descriptor';\n\n/**\n * SQL runtime family descriptor for execution/runtime plane.\n * Provides factory method to create SQL runtime family instance.\n */\nexport default new SqlRuntimeFamilyDescriptor();\n"],"mappings":";AAkBA,SAAS,eAAe,4BAA4C;AA0D7D,SAAS,+BAA+B,SAKlB;AAC3B,QAAM;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,EACd,IAAI;AAEJ,SAAO;AAAA,IACL,UAAU;AAAA,IACV,cAAyD,gBAY7C;AACV,YAAM,kBAAkB,kBAAkB,OAAO;AACjD,YAAM,iBAAiB,iBAAiB,OAAO,eAAe,aAAa;AAE3E,YAAM,qBAAqB,qBAAqB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;AAEzE,YAAM,uBAAoC,mBAAmB,IAAI,CAAC,QAAQ;AACxE,cAAM,YAAuB,CAAC;AAC9B,YAAI,YAAY,OAAO,OAAO,IAAI,WAAW,YAAY;AACvD,oBAAU,SACR,IAAI;AAAA,QACR;AACA,YAAI,gBAAgB,OAAO,OAAO,IAAI,eAAe,YAAY;AAC/D,oBAAU,aACR,IAAI;AAAA,QACR;AACA,eAAO;AAAA,MACT,CAAC;AAED,YAAM,aAAa,CAAC,GAAG,sBAAsB,GAAI,eAAe,cAAc,CAAC,CAAE;AAEjF,YAAM,UAAU,qBAAqB;AAAA,QACnC,UAAU,eAAe;AAAA,QACzB,SAAS;AAAA,QACT;AAAA,MACF,CAAC;AAED,YAAM,kBAA6C;AAAA,QACjD,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ,eAAe;AAAA,QACvB;AAAA,QACA,GAAI,eAAe,UAAU,EAAE,SAAS,eAAe,QAAQ,IAAI,CAAC;AAAA,QACpE,GAAI,eAAe,OAAO,EAAE,MAAM,eAAe,KAAK,IAAI,CAAC;AAAA,QAC3D,GAAI,eAAe,MAAM,EAAE,KAAK,eAAe,IAAI,IAAI,CAAC;AAAA,MAC1D;AAEA,aAAO,cAAc,eAAe;AAAA,IACtC;AAAA,EACF;AACF;;;AC5HA,IAAM,oBAA2C;AAAA,EAC/C,IAAI;AAAA,EACJ,SAAS;AACX;AAMO,IAAM,6BAAN,MAEP;AAAA,EACW,OAAO;AAAA,EACP,KAAK;AAAA,EACL,WAAW;AAAA,EACX,WAAW;AAAA,EAEpB,OAAiC,SASJ;AAC3B,WAAO,+BAA+B;AAAA,MACpC,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,MACjB,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ;AAAA,IACtB,CAAC;AAAA,EACH;AACF;;;AC9CA,IAAO,kBAAQ,IAAI,2BAA2B;","names":[]}
1
+ {"version":3,"sources":["../../src/core/runtime-instance.ts","../../src/core/runtime-descriptor.ts","../../src/exports/runtime.ts"],"sourcesContent":["import { assertRuntimeContractRequirementsSatisfied } from '@prisma-next/core-execution-plane/framework-components';\nimport type {\n RuntimeAdapterDescriptor,\n RuntimeDriverDescriptor,\n RuntimeDriverInstance,\n RuntimeFamilyDescriptor,\n RuntimeFamilyInstance,\n RuntimeTargetDescriptor,\n} from '@prisma-next/core-execution-plane/types';\nimport type { Log, Plugin, RuntimeVerifyOptions } from '@prisma-next/runtime-executor';\nimport type { SqlContract, SqlStorage } from '@prisma-next/sql-contract/types';\nimport type {\n Adapter,\n LoweredStatement,\n SelectAst,\n SqlDriver,\n} from '@prisma-next/sql-relational-core/ast';\nimport type {\n Runtime,\n RuntimeOptions,\n SqlRuntimeAdapterInstance,\n SqlRuntimeExtensionDescriptor,\n} from '@prisma-next/sql-runtime';\nimport { createRuntime, createRuntimeContext } from '@prisma-next/sql-runtime';\n\n/**\n * SQL runtime driver instance type.\n * Combines identity properties with SQL-specific behavior methods.\n */\nexport type SqlRuntimeDriverInstance<TTargetId extends string = string> = RuntimeDriverInstance<\n 'sql',\n TTargetId\n> &\n SqlDriver;\n\n// Re-export SqlRuntimeAdapterInstance from sql-runtime for consumers\nexport type { SqlRuntimeAdapterInstance } from '@prisma-next/sql-runtime';\n\n/**\n * SQL runtime family instance interface.\n * Extends base RuntimeFamilyInstance with SQL-specific runtime creation method.\n */\nexport interface SqlRuntimeFamilyInstance extends RuntimeFamilyInstance<'sql'> {\n /**\n * Creates a SQL runtime from contract, driver options, and verification settings.\n *\n * Extension packs are routed through composition (at instance creation time),\n * not through this method. This aligns with control-plane composition patterns.\n *\n * @param options - Runtime creation options\n * @param options.contract - SQL contract\n * @param options.driverOptions - Driver options (e.g., PostgresDriverOptions)\n * @param options.verify - Runtime verification options\n * @param options.plugins - Optional plugins\n * @param options.mode - Optional runtime mode\n * @param options.log - Optional log instance\n * @returns Runtime instance\n */\n createRuntime<TContract extends SqlContract<SqlStorage>>(options: {\n readonly contract: TContract;\n readonly driverOptions: unknown;\n readonly verify: RuntimeVerifyOptions;\n readonly plugins?: readonly Plugin<\n TContract,\n Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>,\n SqlDriver\n >[];\n readonly mode?: 'strict' | 'permissive';\n readonly log?: Log;\n }): Runtime;\n}\n\n/**\n * Creates a SQL runtime family instance from runtime descriptors.\n *\n * Routes the same framework composition as control-plane:\n * family, target, adapter, driver, extensionPacks (all as descriptors with IDs).\n */\nexport function createSqlRuntimeFamilyInstance<TTargetId extends string>(options: {\n readonly family: RuntimeFamilyDescriptor<'sql'>;\n readonly target: RuntimeTargetDescriptor<'sql', TTargetId>;\n readonly adapter: RuntimeAdapterDescriptor<\n 'sql',\n TTargetId,\n SqlRuntimeAdapterInstance<TTargetId>\n >;\n readonly driver: RuntimeDriverDescriptor<'sql', TTargetId, SqlRuntimeDriverInstance<TTargetId>>;\n readonly extensionPacks?: readonly SqlRuntimeExtensionDescriptor<TTargetId>[];\n}): SqlRuntimeFamilyInstance {\n const {\n family: familyDescriptor,\n target: targetDescriptor,\n adapter: adapterDescriptor,\n driver: driverDescriptor,\n extensionPacks: extensionDescriptors = [],\n } = options;\n\n return {\n familyId: 'sql' as const,\n createRuntime<TContract extends SqlContract<SqlStorage>>(runtimeOptions: {\n readonly contract: TContract;\n readonly driverOptions: unknown;\n readonly verify: RuntimeVerifyOptions;\n readonly plugins?: readonly Plugin<\n TContract,\n Adapter<SelectAst, SqlContract<SqlStorage>, LoweredStatement>,\n SqlDriver\n >[];\n readonly mode?: 'strict' | 'permissive';\n readonly log?: Log;\n }): Runtime {\n // Validate contract requirements against provided descriptors\n assertRuntimeContractRequirementsSatisfied({\n contract: runtimeOptions.contract,\n family: familyDescriptor,\n target: targetDescriptor,\n adapter: adapterDescriptor,\n extensionPacks: extensionDescriptors,\n });\n\n // Create driver instance\n const driverInstance = driverDescriptor.create(runtimeOptions.driverOptions);\n\n // Create context via descriptor-first API\n const context = createRuntimeContext<TContract, TTargetId>({\n contract: runtimeOptions.contract,\n target: targetDescriptor,\n adapter: adapterDescriptor,\n extensionPacks: extensionDescriptors,\n });\n\n const runtimeOptions_: RuntimeOptions<TContract> = {\n driver: driverInstance,\n verify: runtimeOptions.verify,\n context,\n ...(runtimeOptions.plugins ? { plugins: runtimeOptions.plugins } : {}),\n ...(runtimeOptions.mode ? { mode: runtimeOptions.mode } : {}),\n ...(runtimeOptions.log ? { log: runtimeOptions.log } : {}),\n };\n\n return createRuntime(runtimeOptions_);\n },\n };\n}\n","import type {\n RuntimeAdapterDescriptor,\n RuntimeDriverDescriptor,\n RuntimeExtensionDescriptor,\n RuntimeFamilyDescriptor,\n RuntimeTargetDescriptor,\n} from '@prisma-next/core-execution-plane/types';\nimport {\n createSqlRuntimeFamilyInstance,\n type SqlRuntimeAdapterInstance,\n type SqlRuntimeDriverInstance,\n type SqlRuntimeFamilyInstance,\n} from './runtime-instance';\n\n/**\n * SQL runtime family descriptor implementation.\n * Provides factory method to create SQL runtime family instance.\n */\nexport class SqlRuntimeFamilyDescriptor\n implements RuntimeFamilyDescriptor<'sql', SqlRuntimeFamilyInstance>\n{\n readonly kind = 'family' as const;\n readonly id = 'sql';\n readonly familyId = 'sql' as const;\n readonly version = '0.0.1';\n\n create<TTargetId extends string>(options: {\n readonly target: RuntimeTargetDescriptor<'sql', TTargetId>;\n readonly adapter: RuntimeAdapterDescriptor<\n 'sql',\n TTargetId,\n SqlRuntimeAdapterInstance<TTargetId>\n >;\n readonly driver: RuntimeDriverDescriptor<'sql', TTargetId, SqlRuntimeDriverInstance<TTargetId>>;\n readonly extensionPacks: readonly RuntimeExtensionDescriptor<'sql', TTargetId>[];\n }): SqlRuntimeFamilyInstance {\n return createSqlRuntimeFamilyInstance({\n family: this,\n target: options.target,\n adapter: options.adapter,\n driver: options.driver,\n extensionPacks: options.extensionPacks,\n });\n }\n}\n","import { SqlRuntimeFamilyDescriptor } from '../core/runtime-descriptor';\n\n/**\n * SQL runtime family descriptor for execution/runtime plane.\n * Provides factory method to create SQL runtime family instance.\n */\nexport default new SqlRuntimeFamilyDescriptor();\n"],"mappings":";AAAA,SAAS,kDAAkD;AAuB3D,SAAS,eAAe,4BAA4B;AAuD7C,SAAS,+BAAyD,SAU5C;AAC3B,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,gBAAgB,uBAAuB,CAAC;AAAA,EAC1C,IAAI;AAEJ,SAAO;AAAA,IACL,UAAU;AAAA,IACV,cAAyD,gBAW7C;AAEV,iDAA2C;AAAA,QACzC,UAAU,eAAe;AAAA,QACzB,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,gBAAgB;AAAA,MAClB,CAAC;AAGD,YAAM,iBAAiB,iBAAiB,OAAO,eAAe,aAAa;AAG3E,YAAM,UAAU,qBAA2C;AAAA,QACzD,UAAU,eAAe;AAAA,QACzB,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,gBAAgB;AAAA,MAClB,CAAC;AAED,YAAM,kBAA6C;AAAA,QACjD,QAAQ;AAAA,QACR,QAAQ,eAAe;AAAA,QACvB;AAAA,QACA,GAAI,eAAe,UAAU,EAAE,SAAS,eAAe,QAAQ,IAAI,CAAC;AAAA,QACpE,GAAI,eAAe,OAAO,EAAE,MAAM,eAAe,KAAK,IAAI,CAAC;AAAA,QAC3D,GAAI,eAAe,MAAM,EAAE,KAAK,eAAe,IAAI,IAAI,CAAC;AAAA,MAC1D;AAEA,aAAO,cAAc,eAAe;AAAA,IACtC;AAAA,EACF;AACF;;;AC7HO,IAAM,6BAAN,MAEP;AAAA,EACW,OAAO;AAAA,EACP,KAAK;AAAA,EACL,WAAW;AAAA,EACX,UAAU;AAAA,EAEnB,OAAiC,SASJ;AAC3B,WAAO,+BAA+B;AAAA,MACpC,QAAQ;AAAA,MACR,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,MACjB,QAAQ,QAAQ;AAAA,MAChB,gBAAgB,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACH;AACF;;;ACtCA,IAAO,kBAAQ,IAAI,2BAA2B;","names":[]}
@@ -1,13 +1,16 @@
1
1
  import { SchemaIssue, SchemaVerificationNode, OperationContext, VerifyDatabaseSchemaResult } from '@prisma-next/core-control-plane/types';
2
2
  import { SqlSchemaIR } from '@prisma-next/sql-schema-ir/types';
3
- import { k as ComponentDatabaseDependency } from './instance-Bhq2g51v.js';
3
+ import { i as ComponentDatabaseDependency } from './types-Bh7ftf0Q.js';
4
4
  import { TargetBoundComponentDescriptor } from '@prisma-next/contract/framework-components';
5
5
  import { SqlContract, SqlStorage } from '@prisma-next/sql-contract/types';
6
6
  import '@prisma-next/utils/result';
7
+ import './instance-DiZi2k_2.js';
7
8
  import '@prisma-next/contract/ir';
9
+ import '@prisma-next/contract/pack-manifest-types';
8
10
  import '@prisma-next/contract/types';
9
11
  import '@prisma-next/core-control-plane/schema-view';
10
12
  import '@prisma-next/operations';
13
+ import '@prisma-next/sql-operations';
11
14
 
12
15
  /**
13
16
  * Pure verification helper functions for SQL schema verification.
@@ -2,7 +2,7 @@ import {
2
2
  arraysEqual,
3
3
  verifyDatabaseDependencies,
4
4
  verifySqlSchema
5
- } from "./chunk-UKUAX2QM.js";
5
+ } from "./chunk-F252JMEU.js";
6
6
  export {
7
7
  arraysEqual,
8
8
  verifyDatabaseDependencies,
@@ -1,34 +1,33 @@
1
- import { ExtensionPackManifest } from '@prisma-next/contract/pack-manifest-types';
1
+ import { OperationManifest } from '@prisma-next/contract/pack-manifest-types';
2
2
  import { TypesImportSpec } from '@prisma-next/contract/types';
3
- import { OperationRegistry } from '@prisma-next/operations';
3
+ import { ControlTargetDescriptor, ControlAdapterDescriptor, ControlExtensionDescriptor } from '@prisma-next/core-control-plane/types';
4
+ import { OperationSignature, OperationRegistry } from '@prisma-next/operations';
5
+ export { c as convertOperationManifest } from './instance-DiZi2k_2.js';
6
+ import '@prisma-next/contract/framework-components';
7
+ import '@prisma-next/contract/ir';
8
+ import '@prisma-next/core-control-plane/schema-view';
9
+ import '@prisma-next/sql-operations';
10
+ import '@prisma-next/sql-schema-ir/types';
4
11
 
5
12
  /**
6
- * Extracts codec type imports from extension packs for contract.d.ts generation.
7
- * Pack-based version for use in tests.
13
+ * Assembles an operation registry from descriptors (adapter, target, extensions).
14
+ * Loops over descriptors, extracts operations, converts them using the provided
15
+ * conversion function, and registers them in a new registry.
8
16
  */
9
- declare function extractCodecTypeImportsFromPacks(packs: ReadonlyArray<{
10
- readonly manifest: ExtensionPackManifest;
11
- }>): ReadonlyArray<TypesImportSpec>;
17
+ declare function assembleOperationRegistry(descriptors: ReadonlyArray<ControlTargetDescriptor<'sql', string> | ControlAdapterDescriptor<'sql', string> | ControlExtensionDescriptor<'sql', string>>, convertOperationManifest: (manifest: OperationManifest) => OperationSignature): OperationRegistry;
12
18
  /**
13
- * Extracts operation type imports from extension packs for contract.d.ts generation.
14
- * Pack-based version for use in tests.
19
+ * Extracts codec type imports from descriptors for contract.d.ts generation.
15
20
  */
16
- declare function extractOperationTypeImportsFromPacks(packs: ReadonlyArray<{
17
- readonly manifest: ExtensionPackManifest;
18
- }>): ReadonlyArray<TypesImportSpec>;
21
+ declare function extractCodecTypeImports(descriptors: ReadonlyArray<ControlTargetDescriptor<'sql', string> | ControlAdapterDescriptor<'sql', string> | ControlExtensionDescriptor<'sql', string>>): ReadonlyArray<TypesImportSpec>;
19
22
  /**
20
- * Assembles an operation registry from extension packs.
21
- * Pack-based version for use in tests.
23
+ * Extracts operation type imports from descriptors for contract.d.ts generation.
22
24
  */
23
- declare function assembleOperationRegistryFromPacks(packs: ReadonlyArray<{
24
- readonly manifest: ExtensionPackManifest;
25
- }>): OperationRegistry;
25
+ declare function extractOperationTypeImports(descriptors: ReadonlyArray<ControlTargetDescriptor<'sql', string> | ControlAdapterDescriptor<'sql', string> | ControlExtensionDescriptor<'sql', string>>): ReadonlyArray<TypesImportSpec>;
26
26
  /**
27
- * Extracts extension IDs from packs.
28
- * Pack-based version for use in tests.
27
+ * Extracts extension IDs from descriptors in deterministic order:
28
+ * [adapter.id, target.id, ...extensions.map(e => e.id)]
29
+ * Deduplicates while preserving stable order.
29
30
  */
30
- declare function extractExtensionIdsFromPacks(packs: ReadonlyArray<{
31
- readonly manifest: ExtensionPackManifest;
32
- }>): ReadonlyArray<string>;
31
+ declare function extractExtensionIds(adapter: ControlAdapterDescriptor<'sql', string>, target: ControlTargetDescriptor<'sql', string>, extensions: ReadonlyArray<ControlExtensionDescriptor<'sql', string>>): ReadonlyArray<string>;
33
32
 
34
- export { assembleOperationRegistryFromPacks, extractCodecTypeImportsFromPacks, extractExtensionIdsFromPacks, extractOperationTypeImportsFromPacks };
33
+ export { assembleOperationRegistry, extractCodecTypeImports, extractExtensionIds, extractOperationTypeImports };
@@ -1,15 +1,17 @@
1
1
  import {
2
- assembleOperationRegistryFromPacks,
3
- extractCodecTypeImportsFromPacks,
4
- extractExtensionIdsFromPacks,
5
- extractOperationTypeImportsFromPacks
6
- } from "./chunk-RVUPZUZP.js";
2
+ assembleOperationRegistry,
3
+ convertOperationManifest,
4
+ extractCodecTypeImports,
5
+ extractExtensionIds,
6
+ extractOperationTypeImports
7
+ } from "./chunk-6P44BVZ4.js";
7
8
  import "./chunk-C3GKWCKA.js";
8
- import "./chunk-UKUAX2QM.js";
9
+ import "./chunk-F252JMEU.js";
9
10
  export {
10
- assembleOperationRegistryFromPacks,
11
- extractCodecTypeImportsFromPacks,
12
- extractExtensionIdsFromPacks,
13
- extractOperationTypeImportsFromPacks
11
+ assembleOperationRegistry,
12
+ convertOperationManifest,
13
+ extractCodecTypeImports,
14
+ extractExtensionIds,
15
+ extractOperationTypeImports
14
16
  };
15
17
  //# sourceMappingURL=test-utils.js.map