@prisma-next/family-sql 0.3.0-pr.94.2 → 0.3.0-pr.95.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-H7CGY6OH.js +611 -0
- package/dist/chunk-H7CGY6OH.js.map +1 -0
- package/dist/chunk-SU7LN2UH.js +96 -0
- package/dist/chunk-SU7LN2UH.js.map +1 -0
- package/dist/chunk-XH2Y5NTD.js +715 -0
- package/dist/chunk-XH2Y5NTD.js.map +1 -0
- package/dist/core/assembly.d.ts +36 -0
- package/dist/core/assembly.d.ts.map +1 -0
- package/dist/core/control-adapter.d.ts +42 -0
- package/dist/core/control-adapter.d.ts.map +1 -0
- package/dist/core/descriptor.d.ts +25 -0
- package/dist/core/descriptor.d.ts.map +1 -0
- package/dist/core/instance.d.ts +140 -0
- package/dist/core/instance.d.ts.map +1 -0
- package/dist/core/migrations/plan-helpers.d.ts +20 -0
- package/dist/core/migrations/plan-helpers.d.ts.map +1 -0
- package/dist/core/migrations/policies.d.ts +6 -0
- package/dist/core/migrations/policies.d.ts.map +1 -0
- package/dist/core/migrations/types.d.ts +280 -0
- package/dist/core/migrations/types.d.ts.map +1 -0
- package/dist/core/runtime-descriptor.d.ts +19 -0
- package/dist/core/runtime-descriptor.d.ts.map +1 -0
- package/dist/core/runtime-instance.d.ts +54 -0
- package/dist/core/runtime-instance.d.ts.map +1 -0
- package/dist/core/schema-verify/verify-helpers.d.ts +96 -0
- package/dist/core/schema-verify/verify-helpers.d.ts.map +1 -0
- package/dist/core/schema-verify/verify-sql-schema.d.ts +45 -0
- package/dist/core/schema-verify/verify-sql-schema.d.ts.map +1 -0
- package/dist/core/verify.d.ts +39 -0
- package/dist/core/verify.d.ts.map +1 -0
- package/dist/exports/control-adapter.d.ts +2 -0
- package/dist/exports/control-adapter.d.ts.map +1 -0
- package/dist/exports/control-adapter.js +1 -0
- package/dist/exports/control-adapter.js.map +1 -0
- package/dist/exports/control.d.ts +13 -0
- package/dist/exports/control.d.ts.map +1 -0
- package/dist/exports/control.js +149 -0
- package/dist/exports/control.js.map +1 -0
- package/dist/exports/runtime.d.ts +8 -0
- package/dist/exports/runtime.d.ts.map +1 -0
- package/dist/exports/runtime.js +64 -0
- package/dist/exports/runtime.js.map +1 -0
- package/dist/exports/schema-verify.d.ts +11 -0
- package/dist/exports/schema-verify.d.ts.map +1 -0
- package/dist/exports/schema-verify.js +15 -0
- package/dist/exports/schema-verify.js.map +1 -0
- package/dist/exports/test-utils.d.ts +7 -0
- package/dist/exports/test-utils.d.ts.map +1 -0
- package/dist/exports/test-utils.js +17 -0
- package/dist/exports/test-utils.js.map +1 -0
- package/dist/exports/verify.d.ts +2 -0
- package/dist/exports/verify.d.ts.map +1 -0
- package/dist/exports/verify.js +11 -0
- package/dist/exports/verify.js.map +1 -0
- package/package.json +44 -31
- package/src/core/assembly.ts +48 -0
- package/src/core/instance.ts +4 -1
- package/dist/control-adapter.d.mts +0 -47
- package/dist/control-adapter.d.mts.map +0 -1
- package/dist/control-adapter.mjs +0 -1
- package/dist/control.d.mts +0 -65
- package/dist/control.d.mts.map +0 -1
- package/dist/control.mjs +0 -136
- package/dist/control.mjs.map +0 -1
- package/dist/instance-B_PdDN4y.mjs +0 -525
- package/dist/instance-B_PdDN4y.mjs.map +0 -1
- package/dist/instance-wm4TrZN0.d.mts +0 -130
- package/dist/instance-wm4TrZN0.d.mts.map +0 -1
- package/dist/runtime.d.mts +0 -70
- package/dist/runtime.d.mts.map +0 -1
- package/dist/runtime.mjs +0 -74
- package/dist/runtime.mjs.map +0 -1
- package/dist/schema-verify.d.mts +0 -85
- package/dist/schema-verify.d.mts.map +0 -1
- package/dist/schema-verify.mjs +0 -3
- package/dist/test-utils.d.mts +0 -31
- package/dist/test-utils.d.mts.map +0 -1
- package/dist/test-utils.mjs +0 -5
- package/dist/types-D5CPT9N4.d.mts +0 -270
- package/dist/types-D5CPT9N4.d.mts.map +0 -1
- package/dist/verify-DhFytkFC.mjs +0 -108
- package/dist/verify-DhFytkFC.mjs.map +0 -1
- package/dist/verify-sql-schema-BnLVoeWI.mjs +0 -686
- package/dist/verify-sql-schema-BnLVoeWI.mjs.map +0 -1
- package/dist/verify.d.mts +0 -31
- package/dist/verify.d.mts.map +0 -1
- package/dist/verify.mjs +0 -3
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createSqlFamilyInstance
|
|
3
|
+
} from "../chunk-H7CGY6OH.js";
|
|
4
|
+
import "../chunk-SU7LN2UH.js";
|
|
5
|
+
import "../chunk-XH2Y5NTD.js";
|
|
6
|
+
|
|
7
|
+
// src/core/descriptor.ts
|
|
8
|
+
import { sqlTargetFamilyHook } from "@prisma-next/sql-contract-emitter";
|
|
9
|
+
var SqlFamilyDescriptor = class {
|
|
10
|
+
kind = "family";
|
|
11
|
+
id = "sql";
|
|
12
|
+
familyId = "sql";
|
|
13
|
+
version = "0.0.1";
|
|
14
|
+
hook = sqlTargetFamilyHook;
|
|
15
|
+
create(stack) {
|
|
16
|
+
return createSqlFamilyInstance({
|
|
17
|
+
target: stack.target,
|
|
18
|
+
adapter: stack.adapter,
|
|
19
|
+
extensionPacks: stack.extensionPacks
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// src/core/migrations/plan-helpers.ts
|
|
25
|
+
import { notOk, ok } from "@prisma-next/utils/result";
|
|
26
|
+
var readOnlyEmptyObject = Object.freeze({});
|
|
27
|
+
function cloneRecord(value) {
|
|
28
|
+
if (value === readOnlyEmptyObject) {
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
return Object.freeze({ ...value });
|
|
32
|
+
}
|
|
33
|
+
function freezeSteps(steps) {
|
|
34
|
+
if (steps.length === 0) {
|
|
35
|
+
return Object.freeze([]);
|
|
36
|
+
}
|
|
37
|
+
return Object.freeze(
|
|
38
|
+
steps.map(
|
|
39
|
+
(step) => Object.freeze({
|
|
40
|
+
description: step.description,
|
|
41
|
+
sql: step.sql,
|
|
42
|
+
...step.meta ? { meta: cloneRecord(step.meta) } : {}
|
|
43
|
+
})
|
|
44
|
+
)
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
function freezeDetailsValue(value) {
|
|
48
|
+
if (value === null || value === void 0) {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
if (typeof value !== "object") {
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
if (Array.isArray(value)) {
|
|
55
|
+
return Object.freeze([...value]);
|
|
56
|
+
}
|
|
57
|
+
return Object.freeze({ ...value });
|
|
58
|
+
}
|
|
59
|
+
function freezeTargetDetails(target) {
|
|
60
|
+
return Object.freeze({
|
|
61
|
+
id: target.id,
|
|
62
|
+
...target.details !== void 0 ? { details: freezeDetailsValue(target.details) } : {}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function freezeOperation(operation) {
|
|
66
|
+
return Object.freeze({
|
|
67
|
+
id: operation.id,
|
|
68
|
+
label: operation.label,
|
|
69
|
+
...operation.summary ? { summary: operation.summary } : {},
|
|
70
|
+
operationClass: operation.operationClass,
|
|
71
|
+
target: freezeTargetDetails(operation.target),
|
|
72
|
+
precheck: freezeSteps(operation.precheck),
|
|
73
|
+
execute: freezeSteps(operation.execute),
|
|
74
|
+
postcheck: freezeSteps(operation.postcheck),
|
|
75
|
+
...operation.meta ? { meta: cloneRecord(operation.meta) } : {}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function freezeOperations(operations) {
|
|
79
|
+
if (operations.length === 0) {
|
|
80
|
+
return Object.freeze([]);
|
|
81
|
+
}
|
|
82
|
+
return Object.freeze(operations.map((operation) => freezeOperation(operation)));
|
|
83
|
+
}
|
|
84
|
+
function createMigrationPlan(options) {
|
|
85
|
+
return Object.freeze({
|
|
86
|
+
targetId: options.targetId,
|
|
87
|
+
...options.origin !== void 0 ? { origin: options.origin ? Object.freeze({ ...options.origin }) : null } : {},
|
|
88
|
+
destination: Object.freeze({ ...options.destination }),
|
|
89
|
+
operations: freezeOperations(options.operations),
|
|
90
|
+
...options.meta ? { meta: cloneRecord(options.meta) } : {}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function plannerSuccess(plan) {
|
|
94
|
+
return Object.freeze({
|
|
95
|
+
kind: "success",
|
|
96
|
+
plan
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function plannerFailure(conflicts) {
|
|
100
|
+
return Object.freeze({
|
|
101
|
+
kind: "failure",
|
|
102
|
+
conflicts: Object.freeze(
|
|
103
|
+
conflicts.map(
|
|
104
|
+
(conflict) => Object.freeze({
|
|
105
|
+
kind: conflict.kind,
|
|
106
|
+
summary: conflict.summary,
|
|
107
|
+
...conflict.why ? { why: conflict.why } : {},
|
|
108
|
+
...conflict.location ? { location: Object.freeze({ ...conflict.location }) } : {},
|
|
109
|
+
...conflict.meta ? { meta: cloneRecord(conflict.meta) } : {}
|
|
110
|
+
})
|
|
111
|
+
)
|
|
112
|
+
)
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function runnerSuccess(value) {
|
|
116
|
+
return ok(
|
|
117
|
+
Object.freeze({
|
|
118
|
+
operationsPlanned: value.operationsPlanned,
|
|
119
|
+
operationsExecuted: value.operationsExecuted
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
function runnerFailure(code, summary, options) {
|
|
124
|
+
const failure = Object.freeze({
|
|
125
|
+
code,
|
|
126
|
+
summary,
|
|
127
|
+
...options?.why ? { why: options.why } : {},
|
|
128
|
+
...options?.meta ? { meta: cloneRecord(options.meta) } : {}
|
|
129
|
+
});
|
|
130
|
+
return notOk(failure);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// src/core/migrations/policies.ts
|
|
134
|
+
var INIT_ADDITIVE_POLICY = Object.freeze({
|
|
135
|
+
allowedOperationClasses: Object.freeze(["additive"])
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// src/exports/control.ts
|
|
139
|
+
var control_default = new SqlFamilyDescriptor();
|
|
140
|
+
export {
|
|
141
|
+
INIT_ADDITIVE_POLICY,
|
|
142
|
+
createMigrationPlan,
|
|
143
|
+
control_default as default,
|
|
144
|
+
plannerFailure,
|
|
145
|
+
plannerSuccess,
|
|
146
|
+
runnerFailure,
|
|
147
|
+
runnerSuccess
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +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 {\n ControlFamilyDescriptor,\n ControlPlaneStack,\n} from '@prisma-next/core-control-plane/types';\nimport { sqlTargetFamilyHook } from '@prisma-next/sql-contract-emitter';\nimport { createSqlFamilyInstance, type SqlControlFamilyInstance } from './instance';\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>(\n stack: ControlPlaneStack<'sql', TTargetId>,\n ): SqlControlFamilyInstance {\n // Note: driver is not passed here because SqlFamilyInstance operations\n // (validate, emit, etc.) don't require DB connectivity. Commands that\n // need the driver (verify, introspect) get it directly from the stack.\n return createSqlFamilyInstance({\n target: stack.target,\n adapter: stack.adapter,\n extensionPacks: stack.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,8 @@
|
|
|
1
|
+
import { SqlRuntimeFamilyDescriptor } from '../core/runtime-descriptor';
|
|
2
|
+
/**
|
|
3
|
+
* SQL runtime family descriptor for execution/runtime plane.
|
|
4
|
+
* Provides factory method to create SQL runtime family instance.
|
|
5
|
+
*/
|
|
6
|
+
declare const _default: SqlRuntimeFamilyDescriptor;
|
|
7
|
+
export default _default;
|
|
8
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/exports/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE;;;GAGG;;AACH,wBAAgD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// src/core/runtime-instance.ts
|
|
2
|
+
import { assertRuntimeContractRequirementsSatisfied } from "@prisma-next/core-execution-plane/framework-components";
|
|
3
|
+
import { createRuntime, createRuntimeContext } from "@prisma-next/sql-runtime";
|
|
4
|
+
function createSqlRuntimeFamilyInstance(options) {
|
|
5
|
+
const {
|
|
6
|
+
family: familyDescriptor,
|
|
7
|
+
target: targetDescriptor,
|
|
8
|
+
adapter: adapterDescriptor,
|
|
9
|
+
driver: driverDescriptor,
|
|
10
|
+
extensionPacks: extensionDescriptors = []
|
|
11
|
+
} = options;
|
|
12
|
+
return {
|
|
13
|
+
familyId: "sql",
|
|
14
|
+
createRuntime(runtimeOptions) {
|
|
15
|
+
assertRuntimeContractRequirementsSatisfied({
|
|
16
|
+
contract: runtimeOptions.contract,
|
|
17
|
+
family: familyDescriptor,
|
|
18
|
+
target: targetDescriptor,
|
|
19
|
+
adapter: adapterDescriptor,
|
|
20
|
+
extensionPacks: extensionDescriptors
|
|
21
|
+
});
|
|
22
|
+
const driverInstance = driverDescriptor.create(runtimeOptions.driverOptions);
|
|
23
|
+
const context = createRuntimeContext({
|
|
24
|
+
contract: runtimeOptions.contract,
|
|
25
|
+
target: targetDescriptor,
|
|
26
|
+
adapter: adapterDescriptor,
|
|
27
|
+
extensionPacks: extensionDescriptors
|
|
28
|
+
});
|
|
29
|
+
const runtimeOptions_ = {
|
|
30
|
+
driver: driverInstance,
|
|
31
|
+
verify: runtimeOptions.verify,
|
|
32
|
+
context,
|
|
33
|
+
...runtimeOptions.plugins ? { plugins: runtimeOptions.plugins } : {},
|
|
34
|
+
...runtimeOptions.mode ? { mode: runtimeOptions.mode } : {},
|
|
35
|
+
...runtimeOptions.log ? { log: runtimeOptions.log } : {}
|
|
36
|
+
};
|
|
37
|
+
return createRuntime(runtimeOptions_);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/core/runtime-descriptor.ts
|
|
43
|
+
var SqlRuntimeFamilyDescriptor = class {
|
|
44
|
+
kind = "family";
|
|
45
|
+
id = "sql";
|
|
46
|
+
familyId = "sql";
|
|
47
|
+
version = "0.0.1";
|
|
48
|
+
create(options) {
|
|
49
|
+
return createSqlRuntimeFamilyInstance({
|
|
50
|
+
family: this,
|
|
51
|
+
target: options.target,
|
|
52
|
+
adapter: options.adapter,
|
|
53
|
+
driver: options.driver,
|
|
54
|
+
extensionPacks: options.extensionPacks
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/exports/runtime.ts
|
|
60
|
+
var runtime_default = new SqlRuntimeFamilyDescriptor();
|
|
61
|
+
export {
|
|
62
|
+
runtime_default as default
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure schema verification exports.
|
|
3
|
+
*
|
|
4
|
+
* This module exports the pure schema verification function that can be used
|
|
5
|
+
* without a database connection. It's suitable for migration planning and
|
|
6
|
+
* other tools that need to compare schema states.
|
|
7
|
+
*/
|
|
8
|
+
export { arraysEqual, isIndexSatisfied, isUniqueConstraintSatisfied, verifyDatabaseDependencies, } from '../core/schema-verify/verify-helpers';
|
|
9
|
+
export type { VerifySqlSchemaOptions } from '../core/schema-verify/verify-sql-schema';
|
|
10
|
+
export { verifySqlSchema } from '../core/schema-verify/verify-sql-schema';
|
|
11
|
+
//# sourceMappingURL=schema-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-verify.d.ts","sourceRoot":"","sources":["../../src/exports/schema-verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
arraysEqual,
|
|
3
|
+
isIndexSatisfied,
|
|
4
|
+
isUniqueConstraintSatisfied,
|
|
5
|
+
verifyDatabaseDependencies,
|
|
6
|
+
verifySqlSchema
|
|
7
|
+
} from "../chunk-XH2Y5NTD.js";
|
|
8
|
+
export {
|
|
9
|
+
arraysEqual,
|
|
10
|
+
isIndexSatisfied,
|
|
11
|
+
isUniqueConstraintSatisfied,
|
|
12
|
+
verifyDatabaseDependencies,
|
|
13
|
+
verifySqlSchema
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=schema-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test utilities for working with component descriptors.
|
|
3
|
+
* These functions operate on descriptors directly, used in tests and integration tests.
|
|
4
|
+
*/
|
|
5
|
+
export { assembleOperationRegistry, extractCodecTypeImports, extractExtensionIds, extractOperationTypeImports, } from '../core/assembly';
|
|
6
|
+
export { convertOperationManifest } from '../core/instance';
|
|
7
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/exports/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assembleOperationRegistry,
|
|
3
|
+
convertOperationManifest,
|
|
4
|
+
extractCodecTypeImports,
|
|
5
|
+
extractExtensionIds,
|
|
6
|
+
extractOperationTypeImports
|
|
7
|
+
} from "../chunk-H7CGY6OH.js";
|
|
8
|
+
import "../chunk-SU7LN2UH.js";
|
|
9
|
+
import "../chunk-XH2Y5NTD.js";
|
|
10
|
+
export {
|
|
11
|
+
assembleOperationRegistry,
|
|
12
|
+
convertOperationManifest,
|
|
13
|
+
extractCodecTypeImports,
|
|
14
|
+
extractExtensionIds,
|
|
15
|
+
extractOperationTypeImports
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/exports/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,56 +1,69 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/family-sql",
|
|
3
|
-
"version": "0.3.0-pr.
|
|
3
|
+
"version": "0.3.0-pr.95.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
|
-
"engines": {
|
|
7
|
-
"node": ">=20"
|
|
8
|
-
},
|
|
9
6
|
"description": "SQL family descriptor for Prisma Next",
|
|
10
7
|
"dependencies": {
|
|
11
8
|
"arktype": "^2.0.0",
|
|
12
|
-
"@prisma-next/
|
|
13
|
-
"@prisma-next/
|
|
14
|
-
"@prisma-next/
|
|
15
|
-
"@prisma-next/core-execution-plane": "0.3.0-pr.
|
|
16
|
-
"@prisma-next/operations": "0.3.0-pr.
|
|
17
|
-
"@prisma-next/runtime-executor": "0.3.0-pr.
|
|
18
|
-
"@prisma-next/sql-contract": "0.3.0-pr.
|
|
19
|
-
"@prisma-next/sql-contract-emitter": "0.3.0-pr.
|
|
20
|
-
"@prisma-next/sql-contract-ts": "0.3.0-pr.
|
|
21
|
-
"@prisma-next/sql-operations": "0.3.0-pr.
|
|
22
|
-
"@prisma-next/sql-relational-core": "0.3.0-pr.
|
|
23
|
-
"@prisma-next/sql-runtime": "0.3.0-pr.
|
|
24
|
-
"@prisma-next/sql-schema-ir": "0.3.0-pr.
|
|
25
|
-
"@prisma-next/utils": "0.3.0-pr.
|
|
9
|
+
"@prisma-next/contract": "0.3.0-pr.95.2",
|
|
10
|
+
"@prisma-next/core-control-plane": "0.3.0-pr.95.2",
|
|
11
|
+
"@prisma-next/cli": "0.3.0-pr.95.2",
|
|
12
|
+
"@prisma-next/core-execution-plane": "0.3.0-pr.95.2",
|
|
13
|
+
"@prisma-next/operations": "0.3.0-pr.95.2",
|
|
14
|
+
"@prisma-next/runtime-executor": "0.3.0-pr.95.2",
|
|
15
|
+
"@prisma-next/sql-contract": "0.3.0-pr.95.2",
|
|
16
|
+
"@prisma-next/sql-contract-emitter": "0.3.0-pr.95.2",
|
|
17
|
+
"@prisma-next/sql-contract-ts": "0.3.0-pr.95.2",
|
|
18
|
+
"@prisma-next/sql-operations": "0.3.0-pr.95.2",
|
|
19
|
+
"@prisma-next/sql-relational-core": "0.3.0-pr.95.2",
|
|
20
|
+
"@prisma-next/sql-runtime": "0.3.0-pr.95.2",
|
|
21
|
+
"@prisma-next/sql-schema-ir": "0.3.0-pr.95.2",
|
|
22
|
+
"@prisma-next/utils": "0.3.0-pr.95.2"
|
|
26
23
|
},
|
|
27
24
|
"devDependencies": {
|
|
28
|
-
"
|
|
25
|
+
"tsup": "8.5.1",
|
|
29
26
|
"typescript": "5.9.3",
|
|
30
27
|
"vitest": "4.0.16",
|
|
31
|
-
"@prisma-next/driver-postgres": "0.3.0-pr.
|
|
28
|
+
"@prisma-next/driver-postgres": "0.3.0-pr.95.2",
|
|
32
29
|
"@prisma-next/test-utils": "0.0.1",
|
|
33
|
-
"@prisma-next/tsconfig": "0.0.0"
|
|
34
|
-
"@prisma-next/tsdown": "0.0.0"
|
|
30
|
+
"@prisma-next/tsconfig": "0.0.0"
|
|
35
31
|
},
|
|
36
32
|
"files": [
|
|
37
33
|
"dist",
|
|
38
34
|
"src"
|
|
39
35
|
],
|
|
40
36
|
"exports": {
|
|
41
|
-
"./control":
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"./
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
"./control": {
|
|
38
|
+
"types": "./dist/exports/control.d.ts",
|
|
39
|
+
"import": "./dist/exports/control.js"
|
|
40
|
+
},
|
|
41
|
+
"./control-adapter": {
|
|
42
|
+
"types": "./dist/exports/control-adapter.d.ts",
|
|
43
|
+
"import": "./dist/exports/control-adapter.js"
|
|
44
|
+
},
|
|
45
|
+
"./runtime": {
|
|
46
|
+
"types": "./dist/exports/runtime.d.ts",
|
|
47
|
+
"import": "./dist/exports/runtime.js"
|
|
48
|
+
},
|
|
49
|
+
"./verify": {
|
|
50
|
+
"types": "./dist/exports/verify.d.ts",
|
|
51
|
+
"import": "./dist/exports/verify.js"
|
|
52
|
+
},
|
|
53
|
+
"./test-utils": {
|
|
54
|
+
"types": "./dist/exports/test-utils.d.ts",
|
|
55
|
+
"import": "./dist/exports/test-utils.js"
|
|
56
|
+
},
|
|
57
|
+
"./schema-verify": {
|
|
58
|
+
"types": "./dist/exports/schema-verify.d.ts",
|
|
59
|
+
"import": "./dist/exports/schema-verify.js"
|
|
60
|
+
}
|
|
48
61
|
},
|
|
49
62
|
"scripts": {
|
|
50
|
-
"build": "
|
|
63
|
+
"build": "tsup --config tsup.config.ts && tsc --project tsconfig.build.json",
|
|
51
64
|
"test": "vitest run",
|
|
52
65
|
"test:coverage": "vitest run --coverage",
|
|
53
|
-
"typecheck": "tsc --noEmit",
|
|
66
|
+
"typecheck": "tsc --project tsconfig.json --noEmit",
|
|
54
67
|
"lint": "biome check . --error-on-warnings",
|
|
55
68
|
"clean": "rm -rf dist coverage .tmp-output"
|
|
56
69
|
}
|
package/src/core/assembly.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
NormalizedTypeRenderer,
|
|
3
|
+
TypeRenderer,
|
|
4
|
+
} from '@prisma-next/contract/framework-components';
|
|
5
|
+
import { normalizeRenderer } from '@prisma-next/contract/framework-components';
|
|
1
6
|
import type { OperationManifest } from '@prisma-next/contract/pack-manifest-types';
|
|
2
7
|
import type { TypesImportSpec } from '@prisma-next/contract/types';
|
|
3
8
|
import type {
|
|
@@ -115,3 +120,46 @@ export function extractExtensionIds(
|
|
|
115
120
|
|
|
116
121
|
return ids;
|
|
117
122
|
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Extracts and normalizes parameterized codec renderers from descriptors.
|
|
126
|
+
* Templates are compiled to functions at this layer.
|
|
127
|
+
*
|
|
128
|
+
* Throws an error if multiple descriptors provide a renderer for the same codecId.
|
|
129
|
+
* This is intentional - duplicate codecId is a hard error, not a silent override.
|
|
130
|
+
*
|
|
131
|
+
* @returns Map from codecId to normalized renderer
|
|
132
|
+
*/
|
|
133
|
+
export function extractParameterizedRenderers(
|
|
134
|
+
descriptors: ReadonlyArray<
|
|
135
|
+
| ControlTargetDescriptor<'sql', string>
|
|
136
|
+
| ControlAdapterDescriptor<'sql', string>
|
|
137
|
+
| ControlExtensionDescriptor<'sql', string>
|
|
138
|
+
>,
|
|
139
|
+
): Map<string, NormalizedTypeRenderer> {
|
|
140
|
+
const renderers = new Map<string, NormalizedTypeRenderer>();
|
|
141
|
+
const owners = new Map<string, string>(); // codecId -> descriptor.id for error messages
|
|
142
|
+
|
|
143
|
+
for (const descriptor of descriptors) {
|
|
144
|
+
const parameterized = descriptor.types?.codecTypes?.parameterized as
|
|
145
|
+
| Record<string, TypeRenderer>
|
|
146
|
+
| undefined;
|
|
147
|
+
if (!parameterized) continue;
|
|
148
|
+
|
|
149
|
+
for (const [codecId, renderer] of Object.entries(parameterized)) {
|
|
150
|
+
const existingOwner = owners.get(codecId);
|
|
151
|
+
if (existingOwner !== undefined) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
`Duplicate parameterized renderer for codecId "${codecId}". ` +
|
|
154
|
+
`Descriptor "${descriptor.id}" conflicts with "${existingOwner}". ` +
|
|
155
|
+
'Each codecId can only have one renderer.',
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
renderers.set(codecId, normalizeRenderer(codecId, renderer));
|
|
160
|
+
owners.set(codecId, descriptor.id);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return renderers;
|
|
165
|
+
}
|
package/src/core/instance.ts
CHANGED
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
extractCodecTypeImports,
|
|
34
34
|
extractExtensionIds,
|
|
35
35
|
extractOperationTypeImports,
|
|
36
|
+
extractParameterizedRenderers,
|
|
36
37
|
} from './assembly';
|
|
37
38
|
import type { SqlControlAdapter } from './control-adapter';
|
|
38
39
|
import { verifySqlSchema } from './schema-verify/verify-sql-schema';
|
|
@@ -404,11 +405,12 @@ export function createSqlFamilyInstance<TTargetId extends string>(
|
|
|
404
405
|
// Assembly functions only use manifest and id, so we can pass Control*Descriptor types directly
|
|
405
406
|
const descriptors = [target, adapter, ...extensions];
|
|
406
407
|
|
|
407
|
-
// Assemble operation registry, type imports, and
|
|
408
|
+
// Assemble operation registry, type imports, extension IDs, and parameterized renderers
|
|
408
409
|
const operationRegistry = assembleOperationRegistry(descriptors, convertOperationManifest);
|
|
409
410
|
const codecTypeImports = extractCodecTypeImports(descriptors);
|
|
410
411
|
const operationTypeImports = extractOperationTypeImports(descriptors);
|
|
411
412
|
const extensionIds = extractExtensionIds(adapter, target, extensions);
|
|
413
|
+
const parameterizedRenderers = extractParameterizedRenderers(descriptors);
|
|
412
414
|
|
|
413
415
|
// Build type metadata registry from manifests
|
|
414
416
|
const typeMetadataRegistry = buildSqlTypeMetadataRegistry({
|
|
@@ -888,6 +890,7 @@ export function createSqlFamilyInstance<TTargetId extends string>(
|
|
|
888
890
|
codecTypeImports,
|
|
889
891
|
operationTypeImports,
|
|
890
892
|
extensionIds,
|
|
893
|
+
parameterizedRenderers,
|
|
891
894
|
},
|
|
892
895
|
sqlTargetFamilyHook,
|
|
893
896
|
);
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ControlAdapterInstance, ControlDriverInstance } from "@prisma-next/core-control-plane/types";
|
|
2
|
-
import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
3
|
-
|
|
4
|
-
//#region src/core/control-adapter.d.ts
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* SQL control adapter interface for control-plane operations.
|
|
8
|
-
* Implemented by target-specific adapters (e.g., Postgres, MySQL).
|
|
9
|
-
*
|
|
10
|
-
* @template TTarget - The target ID (e.g., 'postgres', 'mysql')
|
|
11
|
-
*/
|
|
12
|
-
interface SqlControlAdapter<TTarget extends string = string> extends ControlAdapterInstance<'sql', TTarget> {
|
|
13
|
-
/**
|
|
14
|
-
* The target ID this adapter implements.
|
|
15
|
-
* Used for type tracking and runtime validation.
|
|
16
|
-
* @deprecated Use targetId from ControlAdapterInstance instead
|
|
17
|
-
*/
|
|
18
|
-
readonly target: TTarget;
|
|
19
|
-
/**
|
|
20
|
-
* Introspects a database schema and returns a raw SqlSchemaIR.
|
|
21
|
-
*
|
|
22
|
-
* This is a pure schema discovery operation that queries the database catalog
|
|
23
|
-
* and returns the schema structure without type mapping or contract enrichment.
|
|
24
|
-
* Type mapping and enrichment are handled separately by enrichment helpers.
|
|
25
|
-
*
|
|
26
|
-
* @param driver - ControlDriverInstance instance for executing queries (target-specific)
|
|
27
|
-
* @param contractIR - Optional contract IR for contract-guided introspection (filtering, optimization)
|
|
28
|
-
* @param schema - Schema name to introspect (defaults to 'public')
|
|
29
|
-
* @returns Promise resolving to SqlSchemaIR representing the live database schema
|
|
30
|
-
*/
|
|
31
|
-
introspect(driver: ControlDriverInstance<'sql', TTarget>, contractIR?: unknown, schema?: string): Promise<SqlSchemaIR>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* SQL control adapter descriptor interface.
|
|
35
|
-
* Provides a factory method to create control adapter instances.
|
|
36
|
-
*
|
|
37
|
-
* @template TTarget - The target ID (e.g., 'postgres', 'mysql')
|
|
38
|
-
*/
|
|
39
|
-
interface SqlControlAdapterDescriptor<TTarget extends string = string> {
|
|
40
|
-
/**
|
|
41
|
-
* Creates a SQL control adapter instance for control-plane operations.
|
|
42
|
-
*/
|
|
43
|
-
create(): SqlControlAdapter<TTarget>;
|
|
44
|
-
}
|
|
45
|
-
//#endregion
|
|
46
|
-
export { type SqlControlAdapter, type SqlControlAdapterDescriptor };
|
|
47
|
-
//# sourceMappingURL=control-adapter.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"control-adapter.d.mts","names":[],"sources":["../src/core/control-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;;AAYA;;;;AAsBY,UAtBK,iBAsBL,CAAA,gBAAA,MAAA,GAAA,MAAA,CAAA,SArBF,sBAqBE,CAAA,KAAA,EArB4B,OAqB5B,CAAA,CAAA;EAGC;;;;AASb;mBA3BmB;;;;;;;;;;;;;qBAeP,6BAA6B,kDAGpC,QAAQ;;;;;;;;UASI;;;;YAIL,kBAAkB"}
|
package/dist/control-adapter.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|