@prisma-next/contract 0.3.0-dev.139 → 0.3.0-dev.140
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/hashing-CVS9sXxd.mjs +215 -0
- package/dist/hashing-CVS9sXxd.mjs.map +1 -0
- package/dist/hashing.d.mts +38 -0
- package/dist/hashing.d.mts.map +1 -0
- package/dist/hashing.mjs +3 -0
- package/dist/testing.d.mts +28 -0
- package/dist/testing.d.mts.map +1 -0
- package/dist/testing.mjs +56 -0
- package/dist/testing.mjs.map +1 -0
- package/dist/{contract-types-C0y-Bn8M.d.mts → types-D-iOS0Ks.d.mts} +52 -53
- package/dist/types-D-iOS0Ks.d.mts.map +1 -0
- package/dist/types-DokLaU9G.mjs +30 -0
- package/dist/types-DokLaU9G.mjs.map +1 -0
- package/dist/types.d.mts +1 -1
- package/dist/types.mjs +2 -29
- package/dist/validate-contract.d.mts +1 -1
- package/dist/validate-contract.mjs +1 -1
- package/dist/{validate-domain-WfuBWGsF.mjs → validate-domain-CTQiBiei.mjs} +1 -1
- package/dist/{validate-domain-WfuBWGsF.mjs.map → validate-domain-CTQiBiei.mjs.map} +1 -1
- package/dist/validate-domain.mjs +1 -1
- package/package.json +8 -7
- package/schemas/data-contract-document-v1.json +0 -5
- package/src/canonicalization.ts +286 -0
- package/src/contract-types.ts +1 -1
- package/src/exports/hashing.ts +6 -0
- package/src/exports/testing.ts +1 -0
- package/src/hashing.ts +69 -0
- package/src/testing-factories.ts +93 -0
- package/src/types.ts +7 -7
- package/dist/contract-types-C0y-Bn8M.d.mts.map +0 -1
- package/dist/ir-BPkihpFL.d.mts +0 -86
- package/dist/ir-BPkihpFL.d.mts.map +0 -1
- package/dist/ir.d.mts +0 -2
- package/dist/ir.mjs +0 -52
- package/dist/ir.mjs.map +0 -1
- package/dist/types.mjs.map +0 -1
- package/src/exports/ir.ts +0 -1
- package/src/ir.ts +0 -131
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { t as bigintJsonReplacer } from "./types-DokLaU9G.mjs";
|
|
2
|
+
import { isArrayEqual } from "@prisma-next/utils/array-equal";
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
4
|
+
|
|
5
|
+
//#region src/canonicalization.ts
|
|
6
|
+
const TOP_LEVEL_ORDER = [
|
|
7
|
+
"schemaVersion",
|
|
8
|
+
"canonicalVersion",
|
|
9
|
+
"targetFamily",
|
|
10
|
+
"target",
|
|
11
|
+
"profileHash",
|
|
12
|
+
"roots",
|
|
13
|
+
"models",
|
|
14
|
+
"storage",
|
|
15
|
+
"execution",
|
|
16
|
+
"capabilities",
|
|
17
|
+
"extensionPacks",
|
|
18
|
+
"meta"
|
|
19
|
+
];
|
|
20
|
+
function isDefaultValue(value) {
|
|
21
|
+
if (value === false) return true;
|
|
22
|
+
if (value === null) return false;
|
|
23
|
+
if (value instanceof Date) return false;
|
|
24
|
+
if (Array.isArray(value) && value.length === 0) return true;
|
|
25
|
+
if (typeof value === "object" && value !== null) return Object.keys(value).length === 0;
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
function omitDefaults(obj, path) {
|
|
29
|
+
if (obj === null || typeof obj !== "object") return obj;
|
|
30
|
+
if (obj instanceof Date) return obj;
|
|
31
|
+
if (Array.isArray(obj)) return obj.map((item) => omitDefaults(item, path));
|
|
32
|
+
const result = {};
|
|
33
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
34
|
+
const currentPath = [...path, key];
|
|
35
|
+
if (key === "_generated") continue;
|
|
36
|
+
if (key === "nullable" && value === false) continue;
|
|
37
|
+
if (key === "generated" && value === false) continue;
|
|
38
|
+
if ((key === "onDelete" || key === "onUpdate") && value === "noAction") continue;
|
|
39
|
+
if (isDefaultValue(value)) {
|
|
40
|
+
const isRequiredModels = isArrayEqual(currentPath, ["models"]);
|
|
41
|
+
const isRequiredTables = isArrayEqual(currentPath, ["storage", "tables"]);
|
|
42
|
+
const isRequiredCollections = isArrayEqual(currentPath, ["storage", "collections"]);
|
|
43
|
+
const isCollectionEntry = currentPath.length === 3 && isArrayEqual([currentPath[0], currentPath[1]], ["storage", "collections"]);
|
|
44
|
+
const isRequiredRoots = isArrayEqual(currentPath, ["roots"]);
|
|
45
|
+
const isRequiredExtensionPacks = isArrayEqual(currentPath, ["extensionPacks"]);
|
|
46
|
+
const isRequiredCapabilities = isArrayEqual(currentPath, ["capabilities"]);
|
|
47
|
+
const isRequiredMeta = isArrayEqual(currentPath, ["meta"]);
|
|
48
|
+
const isRequiredExecutionDefaults = isArrayEqual(currentPath, [
|
|
49
|
+
"execution",
|
|
50
|
+
"mutations",
|
|
51
|
+
"defaults"
|
|
52
|
+
]);
|
|
53
|
+
const isExtensionNamespace = currentPath.length === 2 && currentPath[0] === "extensionPacks";
|
|
54
|
+
const isModelRelations = currentPath.length === 3 && isArrayEqual([currentPath[0], currentPath[2]], ["models", "relations"]);
|
|
55
|
+
const isModelStorage = currentPath.length === 3 && isArrayEqual([currentPath[0], currentPath[2]], ["models", "storage"]);
|
|
56
|
+
const isTableUniques = currentPath.length === 4 && isArrayEqual([
|
|
57
|
+
currentPath[0],
|
|
58
|
+
currentPath[1],
|
|
59
|
+
currentPath[3]
|
|
60
|
+
], [
|
|
61
|
+
"storage",
|
|
62
|
+
"tables",
|
|
63
|
+
"uniques"
|
|
64
|
+
]);
|
|
65
|
+
const isTableIndexes = currentPath.length === 4 && isArrayEqual([
|
|
66
|
+
currentPath[0],
|
|
67
|
+
currentPath[1],
|
|
68
|
+
currentPath[3]
|
|
69
|
+
], [
|
|
70
|
+
"storage",
|
|
71
|
+
"tables",
|
|
72
|
+
"indexes"
|
|
73
|
+
]);
|
|
74
|
+
const isTableForeignKeys = currentPath.length === 4 && isArrayEqual([
|
|
75
|
+
currentPath[0],
|
|
76
|
+
currentPath[1],
|
|
77
|
+
currentPath[3]
|
|
78
|
+
], [
|
|
79
|
+
"storage",
|
|
80
|
+
"tables",
|
|
81
|
+
"foreignKeys"
|
|
82
|
+
]);
|
|
83
|
+
const isFkBooleanField = currentPath.length === 5 && currentPath[0] === "storage" && currentPath[1] === "tables" && currentPath[3] === "foreignKeys" && (key === "constraint" || key === "index");
|
|
84
|
+
if (!isRequiredModels && !isRequiredTables && !isRequiredCollections && !isCollectionEntry && !isRequiredRoots && !isRequiredExtensionPacks && !isRequiredCapabilities && !isRequiredMeta && !isRequiredExecutionDefaults && !isExtensionNamespace && !isModelRelations && !isModelStorage && !isTableUniques && !isTableIndexes && !isTableForeignKeys && !isFkBooleanField) continue;
|
|
85
|
+
}
|
|
86
|
+
result[key] = omitDefaults(value, currentPath);
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
function sortObjectKeys(obj) {
|
|
91
|
+
if (obj === null || typeof obj !== "object") return obj;
|
|
92
|
+
if (obj instanceof Date) return obj;
|
|
93
|
+
if (Array.isArray(obj)) return obj.map((item) => sortObjectKeys(item));
|
|
94
|
+
const sorted = {};
|
|
95
|
+
const keys = Object.keys(obj).sort();
|
|
96
|
+
for (const key of keys) sorted[key] = sortObjectKeys(obj[key]);
|
|
97
|
+
return sorted;
|
|
98
|
+
}
|
|
99
|
+
function sortIndexesAndUniques(storage) {
|
|
100
|
+
if (!storage || typeof storage !== "object") return storage;
|
|
101
|
+
const storageObj = storage;
|
|
102
|
+
if (!storageObj.tables || typeof storageObj.tables !== "object") return storage;
|
|
103
|
+
const tables = storageObj.tables;
|
|
104
|
+
const result = { ...storageObj };
|
|
105
|
+
result.tables = {};
|
|
106
|
+
const sortedTableNames = Object.keys(tables).sort();
|
|
107
|
+
for (const tableName of sortedTableNames) {
|
|
108
|
+
const table = tables[tableName];
|
|
109
|
+
if (!table || typeof table !== "object") {
|
|
110
|
+
result.tables[tableName] = table;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const tableObj = table;
|
|
114
|
+
const sortedTable = { ...tableObj };
|
|
115
|
+
if (Array.isArray(tableObj.indexes)) sortedTable.indexes = [...tableObj.indexes].sort((a, b) => {
|
|
116
|
+
const nameA = a?.name || "";
|
|
117
|
+
const nameB = b?.name || "";
|
|
118
|
+
return nameA.localeCompare(nameB);
|
|
119
|
+
});
|
|
120
|
+
if (Array.isArray(tableObj.uniques)) sortedTable.uniques = [...tableObj.uniques].sort((a, b) => {
|
|
121
|
+
const nameA = a?.name || "";
|
|
122
|
+
const nameB = b?.name || "";
|
|
123
|
+
return nameA.localeCompare(nameB);
|
|
124
|
+
});
|
|
125
|
+
result.tables[tableName] = sortedTable;
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
function orderTopLevel(obj) {
|
|
130
|
+
const ordered = {};
|
|
131
|
+
const remaining = new Set(Object.keys(obj));
|
|
132
|
+
for (const key of TOP_LEVEL_ORDER) if (remaining.has(key)) {
|
|
133
|
+
ordered[key] = obj[key];
|
|
134
|
+
remaining.delete(key);
|
|
135
|
+
}
|
|
136
|
+
for (const key of Array.from(remaining).sort()) ordered[key] = obj[key];
|
|
137
|
+
return ordered;
|
|
138
|
+
}
|
|
139
|
+
function canonicalizeContractToObject(input) {
|
|
140
|
+
const i = input;
|
|
141
|
+
const withDefaultsOmitted = omitDefaults({
|
|
142
|
+
...i["schemaVersion"] !== void 0 ? { schemaVersion: i["schemaVersion"] } : {},
|
|
143
|
+
targetFamily: i["targetFamily"],
|
|
144
|
+
target: i["target"],
|
|
145
|
+
...i["profileHash"] !== void 0 ? { profileHash: i["profileHash"] } : {},
|
|
146
|
+
roots: i["roots"],
|
|
147
|
+
models: i["models"],
|
|
148
|
+
storage: i["storage"],
|
|
149
|
+
...i["execution"] !== void 0 ? { execution: i["execution"] } : {},
|
|
150
|
+
extensionPacks: i["extensionPacks"],
|
|
151
|
+
capabilities: i["capabilities"],
|
|
152
|
+
meta: i["meta"]
|
|
153
|
+
}, []);
|
|
154
|
+
const withSortedIndexes = sortIndexesAndUniques(withDefaultsOmitted["storage"]);
|
|
155
|
+
return orderTopLevel(sortObjectKeys({
|
|
156
|
+
...withDefaultsOmitted,
|
|
157
|
+
storage: withSortedIndexes
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
function canonicalizeContract(input) {
|
|
161
|
+
return JSON.stringify(canonicalizeContractToObject(input), bigintJsonReplacer, 2);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region src/hashing.ts
|
|
166
|
+
const SCHEMA_VERSION = "1";
|
|
167
|
+
function sha256(content) {
|
|
168
|
+
const hash = createHash("sha256");
|
|
169
|
+
hash.update(content);
|
|
170
|
+
return `sha256:${hash.digest("hex")}`;
|
|
171
|
+
}
|
|
172
|
+
function computeStorageHash(args) {
|
|
173
|
+
return sha256(canonicalizeContract({
|
|
174
|
+
schemaVersion: SCHEMA_VERSION,
|
|
175
|
+
targetFamily: args.targetFamily,
|
|
176
|
+
target: args.target,
|
|
177
|
+
storage: args.storage,
|
|
178
|
+
roots: {},
|
|
179
|
+
models: {},
|
|
180
|
+
extensionPacks: {},
|
|
181
|
+
capabilities: {},
|
|
182
|
+
meta: {}
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
function computeExecutionHash(args) {
|
|
186
|
+
return sha256(canonicalizeContract({
|
|
187
|
+
schemaVersion: SCHEMA_VERSION,
|
|
188
|
+
targetFamily: args.targetFamily,
|
|
189
|
+
target: args.target,
|
|
190
|
+
execution: args.execution,
|
|
191
|
+
roots: {},
|
|
192
|
+
models: {},
|
|
193
|
+
storage: {},
|
|
194
|
+
extensionPacks: {},
|
|
195
|
+
capabilities: {},
|
|
196
|
+
meta: {}
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
function computeProfileHash(args) {
|
|
200
|
+
return sha256(canonicalizeContract({
|
|
201
|
+
schemaVersion: SCHEMA_VERSION,
|
|
202
|
+
targetFamily: args.targetFamily,
|
|
203
|
+
target: args.target,
|
|
204
|
+
capabilities: args.capabilities,
|
|
205
|
+
roots: {},
|
|
206
|
+
models: {},
|
|
207
|
+
storage: {},
|
|
208
|
+
extensionPacks: {},
|
|
209
|
+
meta: {}
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
//#endregion
|
|
214
|
+
export { canonicalizeContractToObject as a, canonicalizeContract as i, computeProfileHash as n, computeStorageHash as r, computeExecutionHash as t };
|
|
215
|
+
//# sourceMappingURL=hashing-CVS9sXxd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashing-CVS9sXxd.mjs","names":["result: Record<string, unknown>","sorted: Record<string, unknown>","result: StorageObject","sortedTable: TableObject","ordered: Record<string, unknown>"],"sources":["../src/canonicalization.ts","../src/hashing.ts"],"sourcesContent":["import { isArrayEqual } from '@prisma-next/utils/array-equal';\n\nimport type { StorageBase } from './types';\nimport { bigintJsonReplacer } from './types';\n\nconst TOP_LEVEL_ORDER = [\n 'schemaVersion',\n 'canonicalVersion',\n 'targetFamily',\n 'target',\n 'profileHash',\n 'roots',\n 'models',\n 'storage',\n 'execution',\n 'capabilities',\n 'extensionPacks',\n 'meta',\n] as const;\n\nfunction isDefaultValue(value: unknown): boolean {\n if (value === false) return true;\n if (value === null) return false;\n if (value instanceof Date) return false;\n if (Array.isArray(value) && value.length === 0) return true;\n if (typeof value === 'object' && value !== null) {\n const keys = Object.keys(value);\n return keys.length === 0;\n }\n return false;\n}\n\nfunction omitDefaults(obj: unknown, path: readonly string[]): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (obj instanceof Date) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => omitDefaults(item, path));\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const currentPath = [...path, key];\n\n if (key === '_generated') {\n continue;\n }\n\n if (key === 'nullable' && value === false) {\n continue;\n }\n\n if (key === 'generated' && value === false) {\n continue;\n }\n\n if ((key === 'onDelete' || key === 'onUpdate') && value === 'noAction') {\n continue;\n }\n\n if (isDefaultValue(value)) {\n const isRequiredModels = isArrayEqual(currentPath, ['models']);\n const isRequiredTables = isArrayEqual(currentPath, ['storage', 'tables']);\n const isRequiredCollections = isArrayEqual(currentPath, ['storage', 'collections']);\n const isCollectionEntry =\n currentPath.length === 3 &&\n isArrayEqual([currentPath[0], currentPath[1]], ['storage', 'collections']);\n const isRequiredRoots = isArrayEqual(currentPath, ['roots']);\n const isRequiredExtensionPacks = isArrayEqual(currentPath, ['extensionPacks']);\n const isRequiredCapabilities = isArrayEqual(currentPath, ['capabilities']);\n const isRequiredMeta = isArrayEqual(currentPath, ['meta']);\n const isRequiredExecutionDefaults = isArrayEqual(currentPath, [\n 'execution',\n 'mutations',\n 'defaults',\n ]);\n const isExtensionNamespace = currentPath.length === 2 && currentPath[0] === 'extensionPacks';\n const isModelRelations =\n currentPath.length === 3 &&\n isArrayEqual([currentPath[0], currentPath[2]], ['models', 'relations']);\n const isModelStorage =\n currentPath.length === 3 &&\n isArrayEqual([currentPath[0], currentPath[2]], ['models', 'storage']);\n const isTableUniques =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'uniques'],\n );\n const isTableIndexes =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'indexes'],\n );\n const isTableForeignKeys =\n currentPath.length === 4 &&\n isArrayEqual(\n [currentPath[0], currentPath[1], currentPath[3]],\n ['storage', 'tables', 'foreignKeys'],\n );\n\n const isFkBooleanField =\n currentPath.length === 5 &&\n currentPath[0] === 'storage' &&\n currentPath[1] === 'tables' &&\n currentPath[3] === 'foreignKeys' &&\n (key === 'constraint' || key === 'index');\n\n if (\n !isRequiredModels &&\n !isRequiredTables &&\n !isRequiredCollections &&\n !isCollectionEntry &&\n !isRequiredRoots &&\n !isRequiredExtensionPacks &&\n !isRequiredCapabilities &&\n !isRequiredMeta &&\n !isRequiredExecutionDefaults &&\n !isExtensionNamespace &&\n !isModelRelations &&\n !isModelStorage &&\n !isTableUniques &&\n !isTableIndexes &&\n !isTableForeignKeys &&\n !isFkBooleanField\n ) {\n continue;\n }\n }\n\n result[key] = omitDefaults(value, currentPath);\n }\n\n return result;\n}\n\nfunction sortObjectKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (obj instanceof Date) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => sortObjectKeys(item));\n }\n\n const sorted: Record<string, unknown> = {};\n const keys = Object.keys(obj).sort();\n for (const key of keys) {\n sorted[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);\n }\n\n return sorted;\n}\n\ntype StorageObject = {\n tables?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\ntype TableObject = {\n indexes?: unknown[];\n uniques?: unknown[];\n [key: string]: unknown;\n};\n\nfunction sortIndexesAndUniques(storage: unknown): unknown {\n if (!storage || typeof storage !== 'object') {\n return storage;\n }\n\n const storageObj = storage as StorageObject;\n if (!storageObj.tables || typeof storageObj.tables !== 'object') {\n return storage;\n }\n\n const tables = storageObj.tables;\n const result: StorageObject = { ...storageObj };\n\n result.tables = {};\n const sortedTableNames = Object.keys(tables).sort();\n for (const tableName of sortedTableNames) {\n const table = tables[tableName];\n if (!table || typeof table !== 'object') {\n result.tables[tableName] = table;\n continue;\n }\n\n const tableObj = table as TableObject;\n const sortedTable: TableObject = { ...tableObj };\n\n if (Array.isArray(tableObj.indexes)) {\n sortedTable.indexes = [...tableObj.indexes].sort((a, b) => {\n const nameA = (a as { name?: string })?.name || '';\n const nameB = (b as { name?: string })?.name || '';\n return nameA.localeCompare(nameB);\n });\n }\n\n if (Array.isArray(tableObj.uniques)) {\n sortedTable.uniques = [...tableObj.uniques].sort((a, b) => {\n const nameA = (a as { name?: string })?.name || '';\n const nameB = (b as { name?: string })?.name || '';\n return nameA.localeCompare(nameB);\n });\n }\n\n result.tables[tableName] = sortedTable;\n }\n\n return result;\n}\n\nfunction orderTopLevel(obj: Record<string, unknown>): Record<string, unknown> {\n const ordered: Record<string, unknown> = {};\n const remaining = new Set(Object.keys(obj));\n\n for (const key of TOP_LEVEL_ORDER) {\n if (remaining.has(key)) {\n ordered[key] = obj[key];\n remaining.delete(key);\n }\n }\n\n for (const key of Array.from(remaining).sort()) {\n ordered[key] = obj[key];\n }\n\n return ordered;\n}\n\nexport type CanonicalContractInput = {\n readonly schemaVersion?: string | undefined;\n readonly targetFamily: string;\n readonly target: string;\n readonly profileHash?: string | undefined;\n readonly roots: Record<string, string>;\n readonly models: Record<string, unknown>;\n // StorageBase is an interface without an index signature, so it is not\n // assignable to Record<string, unknown>. The union allows callers to pass\n // either the typed StorageBase or a plain record.\n readonly storage: StorageBase | Record<string, unknown>;\n readonly execution?: Record<string, unknown> | undefined;\n readonly extensionPacks: Record<string, unknown>;\n readonly capabilities: Record<string, Record<string, boolean>>;\n readonly meta: Record<string, unknown>;\n};\n\nexport function canonicalizeContractToObject(\n input: CanonicalContractInput,\n): Record<string, unknown> {\n const i = input as Record<string, unknown>;\n const normalized: Record<string, unknown> = {\n ...(i['schemaVersion'] !== undefined ? { schemaVersion: i['schemaVersion'] } : {}),\n targetFamily: i['targetFamily'],\n target: i['target'],\n ...(i['profileHash'] !== undefined ? { profileHash: i['profileHash'] } : {}),\n roots: i['roots'],\n models: i['models'],\n storage: i['storage'],\n ...(i['execution'] !== undefined ? { execution: i['execution'] } : {}),\n extensionPacks: i['extensionPacks'],\n capabilities: i['capabilities'],\n meta: i['meta'],\n };\n\n const withDefaultsOmitted = omitDefaults(normalized, []) as Record<string, unknown>;\n const withSortedIndexes = sortIndexesAndUniques(withDefaultsOmitted['storage']);\n const withSortedStorage = { ...withDefaultsOmitted, storage: withSortedIndexes };\n const withSortedKeys = sortObjectKeys(withSortedStorage) as Record<string, unknown>;\n return orderTopLevel(withSortedKeys);\n}\n\nexport function canonicalizeContract(input: CanonicalContractInput): string {\n return JSON.stringify(canonicalizeContractToObject(input), bigintJsonReplacer, 2);\n}\n","import { createHash } from 'node:crypto';\nimport { canonicalizeContract } from './canonicalization';\nimport type { ExecutionHashBase, ProfileHashBase, StorageHashBase } from './types';\n\nconst SCHEMA_VERSION = '1';\n\nfunction sha256(content: string): string {\n const hash = createHash('sha256');\n hash.update(content);\n return `sha256:${hash.digest('hex')}`;\n}\n\nexport function computeStorageHash(args: {\n target: string;\n targetFamily: string;\n storage: Record<string, unknown>;\n}): StorageHashBase<string> {\n const canonical = canonicalizeContract({\n schemaVersion: SCHEMA_VERSION,\n targetFamily: args.targetFamily,\n target: args.target,\n storage: args.storage,\n roots: {},\n models: {},\n extensionPacks: {},\n capabilities: {},\n meta: {},\n });\n return sha256(canonical) as StorageHashBase<string>;\n}\n\nexport function computeExecutionHash(args: {\n target: string;\n targetFamily: string;\n execution: Record<string, unknown>;\n}): ExecutionHashBase<string> {\n const canonical = canonicalizeContract({\n schemaVersion: SCHEMA_VERSION,\n targetFamily: args.targetFamily,\n target: args.target,\n execution: args.execution,\n roots: {},\n models: {},\n storage: {},\n extensionPacks: {},\n capabilities: {},\n meta: {},\n });\n return sha256(canonical) as ExecutionHashBase<string>;\n}\n\nexport function computeProfileHash(args: {\n target: string;\n targetFamily: string;\n capabilities: Record<string, Record<string, boolean>>;\n}): ProfileHashBase<string> {\n const canonical = canonicalizeContract({\n schemaVersion: SCHEMA_VERSION,\n targetFamily: args.targetFamily,\n target: args.target,\n capabilities: args.capabilities,\n roots: {},\n models: {},\n storage: {},\n extensionPacks: {},\n meta: {},\n });\n return sha256(canonical) as ProfileHashBase<string>;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { D as ProfileHashBase, M as StorageHashBase, f as ExecutionHashBase, j as StorageBase } from "./types-D-iOS0Ks.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/canonicalization.d.ts
|
|
4
|
+
type CanonicalContractInput = {
|
|
5
|
+
readonly schemaVersion?: string | undefined;
|
|
6
|
+
readonly targetFamily: string;
|
|
7
|
+
readonly target: string;
|
|
8
|
+
readonly profileHash?: string | undefined;
|
|
9
|
+
readonly roots: Record<string, string>;
|
|
10
|
+
readonly models: Record<string, unknown>;
|
|
11
|
+
readonly storage: StorageBase | Record<string, unknown>;
|
|
12
|
+
readonly execution?: Record<string, unknown> | undefined;
|
|
13
|
+
readonly extensionPacks: Record<string, unknown>;
|
|
14
|
+
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
15
|
+
readonly meta: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
declare function canonicalizeContractToObject(input: CanonicalContractInput): Record<string, unknown>;
|
|
18
|
+
declare function canonicalizeContract(input: CanonicalContractInput): string;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/hashing.d.ts
|
|
21
|
+
declare function computeStorageHash(args: {
|
|
22
|
+
target: string;
|
|
23
|
+
targetFamily: string;
|
|
24
|
+
storage: Record<string, unknown>;
|
|
25
|
+
}): StorageHashBase<string>;
|
|
26
|
+
declare function computeExecutionHash(args: {
|
|
27
|
+
target: string;
|
|
28
|
+
targetFamily: string;
|
|
29
|
+
execution: Record<string, unknown>;
|
|
30
|
+
}): ExecutionHashBase<string>;
|
|
31
|
+
declare function computeProfileHash(args: {
|
|
32
|
+
target: string;
|
|
33
|
+
targetFamily: string;
|
|
34
|
+
capabilities: Record<string, Record<string, boolean>>;
|
|
35
|
+
}): ProfileHashBase<string>;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { type CanonicalContractInput, canonicalizeContract, canonicalizeContractToObject, computeExecutionHash, computeProfileHash, computeStorageHash };
|
|
38
|
+
//# sourceMappingURL=hashing.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashing.d.mts","names":[],"sources":["../src/canonicalization.ts","../src/hashing.ts"],"sourcesContent":[],"mappings":";;;KAiPY,sBAAA;;EAAA,SAAA,YAAA,EAAA,MAAsB;EAKhB,SAAA,MAAA,EAAA,MAAA;EACC,SAAA,WAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAIC,SAAA,KAAA,EALF,MAKE,CAAA,MAAA,EAAA,MAAA,CAAA;EAAc,SAAA,MAAA,EAJf,MAIe,CAAA,MAAA,EAAA,OAAA,CAAA;EACX,SAAA,OAAA,EADH,WACG,GADW,MACX,CAAA,MAAA,EAAA,OAAA,CAAA;EACI,SAAA,SAAA,CAAA,EADJ,MACI,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA;EACa,SAAA,cAAA,EADb,MACa,CAAA,MAAA,EAAA,OAAA,CAAA;EAAf,SAAA,YAAA,EAAA,MAAA,CAAA,MAAA,EAAe,MAAf,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EACR,SAAA,IAAA,EAAA,MAAA,CAAA,MAAA,EAAA,OAAA,CAAA;CAAM;AAGP,iBAAA,4BAAA,CACP,KAAA,EAAA,sBACA,CAAA,EAAN,MAAM,CAAA,MAAA,EAAA,OAAA,CAAA;AAuBO,iBAAA,oBAAA,CAA4B,KAAA,EAAA,sBAAsB,CAAA,EAAA,MAAA;;;iBC/QlD,kBAAA;;EDqOJ,YAAA,EAAA,MAAA;EAKM,OAAA,ECvOP,MDuOO,CAAA,MAAA,EAAA,OAAA,CAAA;CACC,CAAA,ECvOf,eDuOe,CAAA,MAAA,CAAA;AAIC,iBC5NJ,oBAAA,CD4NI,IAAA,EAAA;EAAc,MAAA,EAAA,MAAA;EACX,YAAA,EAAA,MAAA;EACI,SAAA,EC3Nd,MD2Nc,CAAA,MAAA,EAAA,OAAA,CAAA;CACa,CAAA,EC3NpC,iBD2NoC,CAAA,MAAA,CAAA;AAAf,iBC3MT,kBAAA,CD2MS,IAAA,EAAA;EACR,MAAA,EAAA,MAAA;EAAM,YAAA,EAAA,MAAA;EAGP,YAAA,EC5MA,MD4MA,CAAA,MAAA,EC5Me,MD4Ma,CAAA,MAAA,EACnC,OAAA,CAAA,CAAA;AAwBT,CAAA,CAAA,ECpOI,eDoOY,CAAA,MAAA,CAAoB"}
|
package/dist/hashing.mjs
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as canonicalizeContractToObject, i as canonicalizeContract, n as computeProfileHash, r as computeStorageHash, t as computeExecutionHash } from "./hashing-CVS9sXxd.mjs";
|
|
2
|
+
|
|
3
|
+
export { canonicalizeContract, canonicalizeContractToObject, computeExecutionHash, computeProfileHash, computeStorageHash };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { $ as ContractModel, D as ProfileHashBase, J as Contract, M as StorageHashBase, g as ExecutionSection, j as StorageBase, pt as ModelStorageBase } from "./types-D-iOS0Ks.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/testing-factories.d.ts
|
|
4
|
+
type ContractOverrides<TStorage extends StorageBase = StorageBase, TModels extends Record<string, ContractModel> = Record<string, ContractModel>> = {
|
|
5
|
+
target?: string;
|
|
6
|
+
targetFamily?: string;
|
|
7
|
+
roots?: Record<string, string>;
|
|
8
|
+
models?: TModels;
|
|
9
|
+
storage?: Omit<TStorage, 'storageHash'>;
|
|
10
|
+
capabilities?: Record<string, Record<string, boolean>>;
|
|
11
|
+
extensionPacks?: Record<string, unknown>;
|
|
12
|
+
execution?: ExecutionSection;
|
|
13
|
+
profileHash?: ProfileHashBase<string>;
|
|
14
|
+
meta?: Record<string, unknown>;
|
|
15
|
+
};
|
|
16
|
+
declare const DUMMY_HASH: StorageHashBase<"sha256:test">;
|
|
17
|
+
declare function createContract<TStorage extends StorageBase = StorageBase, TModels extends Record<string, ContractModel> = Record<string, ContractModel>>(overrides?: ContractOverrides<TStorage, TModels>): Contract<TStorage, TModels>;
|
|
18
|
+
type SqlStorageLike = StorageBase & {
|
|
19
|
+
readonly tables: Record<string, unknown>;
|
|
20
|
+
readonly types?: Record<string, unknown>;
|
|
21
|
+
};
|
|
22
|
+
type SqlModelLike = ContractModel<ModelStorageBase & {
|
|
23
|
+
table: string;
|
|
24
|
+
}>;
|
|
25
|
+
declare function createSqlContract(overrides?: ContractOverrides<SqlStorageLike, Record<string, SqlModelLike>>): Contract<SqlStorageLike, Record<string, SqlModelLike>>;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { DUMMY_HASH, createContract, createSqlContract };
|
|
28
|
+
//# sourceMappingURL=testing.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.mts","names":[],"sources":["../src/testing-factories.ts"],"sourcesContent":[],"mappings":";;;AAG8E,KAGzE,iBAAA,CAAA,iBACc,WADG,GACW,WADX,EAAA,gBAEJ,MAFI,CAAA,MAAA,EAEW,aAFX,CAAA,GAE4B,MAF5B,CAAA,MAAA,EAE2C,aAF3C,CAAA,CAAA,GAAA;EACH,MAAA,CAAA,EAAA,MAAA;EAAc,YAAA,CAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAIvB,MAJuB,CAAA,MAAA,EAAA,MAAA,CAAA;EAAf,MAAA,CAAA,EAKP,OALO;EAA+C,OAAA,CAAA,EAMrD,IANqD,CAMhD,QANgD,EAAA,aAAA,CAAA;EAAf,YAAA,CAAA,EAOjC,MAPiC,CAAA,MAAA,EAOlB,MAPkB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EAIxC,cAAA,CAAA,EAIS,MAJT,CAAA,MAAA,EAAA,OAAA,CAAA;EACC,SAAA,CAAA,EAIG,gBAJH;EACM,WAAA,CAAA,EAID,eAJC,CAAA,MAAA,CAAA;EAAL,IAAA,CAAA,EAKH,MALG,CAAA,MAAA,EAAA,OAAA,CAAA;CACoB;cAO1B,UAPW,EAOyB,eAPzB,CAAA,aAAA,CAAA;AACE,iBAQH,cARG,CAAA,iBASA,WATA,GASc,WATd,EAAA,gBAUD,MAVC,CAAA,MAAA,EAUc,aAVd,CAAA,GAU+B,MAV/B,CAAA,MAAA,EAU8C,aAV9C,CAAA,CAAA,CAAA,SAAA,CAAA,EAWN,iBAXM,CAWY,QAXZ,EAWsB,OAXtB,CAAA,CAAA,EAWsC,QAXtC,CAW+C,QAX/C,EAWyD,OAXzD,CAAA;KA0Dd,cAAA,GAAiB,WAzDR,GAAA;EACE,SAAA,MAAA,EAyDG,MAzDH,CAAA,MAAA,EAAA,OAAA,CAAA;EACP,SAAA,KAAA,CAAA,EAyDU,MAzDV,CAAA,MAAA,EAAA,OAAA,CAAA;CAAM;AAAA,KA4DV,YAAA,GAAe,aAzDsB,CAyDR,gBAzDlB,GAAA;EAEA,KAAA,EAAA,MAAA;CACG,CAAA;AAAc,iBAwDjB,iBAAA,CAxDiB,SAAA,CAAA,EAyDpB,iBAzDoB,CAyDF,cAzDE,EAyDc,MAzDd,CAAA,MAAA,EAyD6B,YAzD7B,CAAA,CAAA,CAAA,EA0D9B,QA1D8B,CA0DrB,cA1DqB,EA0DL,MA1DK,CAAA,MAAA,EA0DU,YA1DV,CAAA,CAAA"}
|
package/dist/testing.mjs
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { n as coreHash } from "./types-DokLaU9G.mjs";
|
|
2
|
+
import { n as computeProfileHash, r as computeStorageHash, t as computeExecutionHash } from "./hashing-CVS9sXxd.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/testing-factories.ts
|
|
5
|
+
const DUMMY_HASH = coreHash("sha256:test");
|
|
6
|
+
function createContract(overrides = {}) {
|
|
7
|
+
const target = overrides.target ?? "postgres";
|
|
8
|
+
const targetFamily = overrides.targetFamily ?? "sql";
|
|
9
|
+
const capabilities = overrides.capabilities ?? {};
|
|
10
|
+
const rawStorage = overrides.storage ?? { tables: {} };
|
|
11
|
+
const storageHash = computeStorageHash({
|
|
12
|
+
target,
|
|
13
|
+
targetFamily,
|
|
14
|
+
storage: rawStorage
|
|
15
|
+
});
|
|
16
|
+
const storage = {
|
|
17
|
+
...rawStorage,
|
|
18
|
+
storageHash
|
|
19
|
+
};
|
|
20
|
+
const computedProfileHash = overrides.profileHash ?? computeProfileHash({
|
|
21
|
+
target,
|
|
22
|
+
targetFamily,
|
|
23
|
+
capabilities
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
target,
|
|
27
|
+
targetFamily,
|
|
28
|
+
roots: overrides.roots ?? {},
|
|
29
|
+
models: overrides.models ?? {},
|
|
30
|
+
storage,
|
|
31
|
+
capabilities,
|
|
32
|
+
extensionPacks: overrides.extensionPacks ?? {},
|
|
33
|
+
...overrides.execution !== void 0 ? { execution: {
|
|
34
|
+
...overrides.execution,
|
|
35
|
+
executionHash: computeExecutionHash({
|
|
36
|
+
target,
|
|
37
|
+
targetFamily,
|
|
38
|
+
execution: overrides.execution
|
|
39
|
+
})
|
|
40
|
+
} } : {},
|
|
41
|
+
profileHash: computedProfileHash,
|
|
42
|
+
meta: overrides.meta ?? {}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function createSqlContract(overrides = {}) {
|
|
46
|
+
return createContract({
|
|
47
|
+
target: "postgres",
|
|
48
|
+
targetFamily: "sql",
|
|
49
|
+
storage: overrides.storage ?? { tables: {} },
|
|
50
|
+
...overrides
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { DUMMY_HASH, createContract, createSqlContract };
|
|
56
|
+
//# sourceMappingURL=testing.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.mjs","names":[],"sources":["../src/testing-factories.ts"],"sourcesContent":["import type { Contract } from './contract-types';\nimport type { ContractModel, ModelStorageBase } from './domain-types';\nimport { computeExecutionHash, computeProfileHash, computeStorageHash } from './hashing';\nimport type { ExecutionSection, ProfileHashBase, StorageBase } from './types';\nimport { coreHash } from './types';\n\ntype ContractOverrides<\n TStorage extends StorageBase = StorageBase,\n TModels extends Record<string, ContractModel> = Record<string, ContractModel>,\n> = {\n target?: string;\n targetFamily?: string;\n roots?: Record<string, string>;\n models?: TModels;\n storage?: Omit<TStorage, 'storageHash'>;\n capabilities?: Record<string, Record<string, boolean>>;\n extensionPacks?: Record<string, unknown>;\n execution?: ExecutionSection;\n profileHash?: ProfileHashBase<string>;\n meta?: Record<string, unknown>;\n};\n\nconst DUMMY_HASH = coreHash('sha256:test');\n\nexport function createContract<\n TStorage extends StorageBase = StorageBase,\n TModels extends Record<string, ContractModel> = Record<string, ContractModel>,\n>(overrides: ContractOverrides<TStorage, TModels> = {}): Contract<TStorage, TModels> {\n const target = overrides.target ?? 'postgres';\n const targetFamily = overrides.targetFamily ?? 'sql';\n const capabilities = overrides.capabilities ?? {};\n\n const rawStorage =\n overrides.storage ?? ({ tables: {} } as unknown as Omit<TStorage, 'storageHash'>);\n\n const storageHash = computeStorageHash({\n target,\n targetFamily,\n storage: rawStorage as Record<string, unknown>,\n });\n\n const storage = {\n ...rawStorage,\n storageHash,\n } as TStorage;\n\n const computedProfileHash =\n overrides.profileHash ?? computeProfileHash({ target, targetFamily, capabilities });\n\n return {\n target,\n targetFamily,\n roots: overrides.roots ?? {},\n models: (overrides.models ?? {}) as TModels,\n storage,\n capabilities,\n extensionPacks: overrides.extensionPacks ?? {},\n ...(overrides.execution !== undefined\n ? {\n execution: {\n ...overrides.execution,\n executionHash: computeExecutionHash({\n target,\n targetFamily,\n execution: overrides.execution,\n }),\n },\n }\n : {}),\n profileHash: computedProfileHash,\n meta: overrides.meta ?? {},\n };\n}\n\ntype SqlStorageLike = StorageBase & {\n readonly tables: Record<string, unknown>;\n readonly types?: Record<string, unknown>;\n};\n\ntype SqlModelLike = ContractModel<ModelStorageBase & { table: string }>;\n\nexport function createSqlContract(\n overrides: ContractOverrides<SqlStorageLike, Record<string, SqlModelLike>> = {},\n): Contract<SqlStorageLike, Record<string, SqlModelLike>> {\n return createContract<SqlStorageLike, Record<string, SqlModelLike>>({\n target: 'postgres',\n targetFamily: 'sql',\n storage: overrides.storage ?? { tables: {} },\n ...overrides,\n });\n}\n\nexport { DUMMY_HASH };\n"],"mappings":";;;;AAsBA,MAAM,aAAa,SAAS,cAAc;AAE1C,SAAgB,eAGd,YAAkD,EAAE,EAA+B;CACnF,MAAM,SAAS,UAAU,UAAU;CACnC,MAAM,eAAe,UAAU,gBAAgB;CAC/C,MAAM,eAAe,UAAU,gBAAgB,EAAE;CAEjD,MAAM,aACJ,UAAU,WAAY,EAAE,QAAQ,EAAE,EAAE;CAEtC,MAAM,cAAc,mBAAmB;EACrC;EACA;EACA,SAAS;EACV,CAAC;CAEF,MAAM,UAAU;EACd,GAAG;EACH;EACD;CAED,MAAM,sBACJ,UAAU,eAAe,mBAAmB;EAAE;EAAQ;EAAc;EAAc,CAAC;AAErF,QAAO;EACL;EACA;EACA,OAAO,UAAU,SAAS,EAAE;EAC5B,QAAS,UAAU,UAAU,EAAE;EAC/B;EACA;EACA,gBAAgB,UAAU,kBAAkB,EAAE;EAC9C,GAAI,UAAU,cAAc,SACxB,EACE,WAAW;GACT,GAAG,UAAU;GACb,eAAe,qBAAqB;IAClC;IACA;IACA,WAAW,UAAU;IACtB,CAAC;GACH,EACF,GACD,EAAE;EACN,aAAa;EACb,MAAM,UAAU,QAAQ,EAAE;EAC3B;;AAUH,SAAgB,kBACd,YAA6E,EAAE,EACvB;AACxD,QAAO,eAA6D;EAClE,QAAQ;EACR,cAAc;EACd,SAAS,UAAU,WAAW,EAAE,QAAQ,EAAE,EAAE;EAC5C,GAAG;EACJ,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { t as ContractIR } from "./ir-BPkihpFL.mjs";
|
|
2
1
|
import { OperationRegistry } from "@prisma-next/operations";
|
|
3
2
|
|
|
4
3
|
//#region src/domain-types.d.ts
|
|
@@ -60,6 +59,50 @@ type HasModelsWithRelations = {
|
|
|
60
59
|
type ReferenceRelationKeys<TContract extends HasModelsWithRelations, ModelName extends string & keyof TContract['models']> = { [K in keyof TContract['models'][ModelName]['relations']]: TContract['models'][ModelName]['relations'][K] extends ContractReferenceRelation ? K : never }[keyof TContract['models'][ModelName]['relations']];
|
|
61
60
|
type EmbedRelationKeys<TContract extends HasModelsWithRelations, ModelName extends string & keyof TContract['models']> = { [K in keyof TContract['models'][ModelName]['relations']]: TContract['models'][ModelName]['relations'][K] extends ContractReferenceRelation ? never : K }[keyof TContract['models'][ModelName]['relations']];
|
|
62
61
|
//#endregion
|
|
62
|
+
//#region src/contract-types.d.ts
|
|
63
|
+
/**
|
|
64
|
+
* Execution section for the unified contract (ADR 182).
|
|
65
|
+
*
|
|
66
|
+
* Unlike the legacy {@link import('./types').ExecutionSection}, this type
|
|
67
|
+
* requires `executionHash` — when an execution section is present, its
|
|
68
|
+
* hash must be too (consistent with `StorageBase.storageHash`).
|
|
69
|
+
*
|
|
70
|
+
* @template THash Literal hash string type for type-safe hash tracking.
|
|
71
|
+
*/
|
|
72
|
+
type ContractExecutionSection<THash extends string = string> = {
|
|
73
|
+
readonly executionHash: ExecutionHashBase<THash>;
|
|
74
|
+
readonly mutations: {
|
|
75
|
+
readonly defaults: ReadonlyArray<ExecutionMutationDefault>;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Unified contract representation (ADR 182).
|
|
80
|
+
*
|
|
81
|
+
* A `Contract` is the canonical in-memory representation of a data contract.
|
|
82
|
+
* It is model-first (domain models carry their own storage bridge) and
|
|
83
|
+
* family-parameterized (SQL, Mongo, etc. specialize via `TStorage` and model
|
|
84
|
+
* storage generics on `ContractModel`).
|
|
85
|
+
*
|
|
86
|
+
* JSON persistence fields (`schemaVersion`, `sources`) are not represented
|
|
87
|
+
* here — they are handled at the serialization boundary.
|
|
88
|
+
*
|
|
89
|
+
* @template TStorage Family-specific storage block (extends {@link StorageBase}).
|
|
90
|
+
* @template TModels Record of model name → {@link ContractModel} with
|
|
91
|
+
* family-specific model storage.
|
|
92
|
+
*/
|
|
93
|
+
interface Contract<TStorage extends StorageBase = StorageBase, TModels extends Record<string, ContractModel> = Record<string, ContractModel>> {
|
|
94
|
+
readonly target: string;
|
|
95
|
+
readonly targetFamily: string;
|
|
96
|
+
readonly roots: Record<string, string>;
|
|
97
|
+
readonly models: TModels;
|
|
98
|
+
readonly storage: TStorage;
|
|
99
|
+
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
100
|
+
readonly extensionPacks: Record<string, unknown>;
|
|
101
|
+
readonly execution?: ContractExecutionSection;
|
|
102
|
+
readonly profileHash: ProfileHashBase<string>;
|
|
103
|
+
readonly meta: Record<string, unknown>;
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
63
106
|
//#region src/types.d.ts
|
|
64
107
|
/**
|
|
65
108
|
* Unique symbol used as the key for branding types.
|
|
@@ -374,25 +417,25 @@ interface TargetFamilyHook {
|
|
|
374
417
|
readonly id: string;
|
|
375
418
|
/**
|
|
376
419
|
* Validates that all type IDs in the contract come from referenced extension packs.
|
|
377
|
-
* @param
|
|
420
|
+
* @param contract - Contract to validate
|
|
378
421
|
* @param ctx - Validation context with operation registry and extension IDs
|
|
379
422
|
*/
|
|
380
|
-
validateTypes(
|
|
423
|
+
validateTypes(contract: Contract, ctx: ValidationContext): void;
|
|
381
424
|
/**
|
|
382
425
|
* Validates family-specific contract structure.
|
|
383
|
-
* @param
|
|
426
|
+
* @param contract - Contract to validate
|
|
384
427
|
*/
|
|
385
|
-
validateStructure(
|
|
428
|
+
validateStructure(contract: Contract): void;
|
|
386
429
|
/**
|
|
387
430
|
* Generates contract.d.ts file content.
|
|
388
|
-
* @param
|
|
431
|
+
* @param contract - Contract
|
|
389
432
|
* @param codecTypeImports - Array of codec type import specs
|
|
390
433
|
* @param operationTypeImports - Array of operation type import specs
|
|
391
434
|
* @param hashes - Contract hash values (storageHash, executionHash, profileHash)
|
|
392
435
|
* @param options - Additional options including parameterized type renderers
|
|
393
436
|
* @returns Generated TypeScript type definitions as string
|
|
394
437
|
*/
|
|
395
|
-
generateContractTypes(
|
|
438
|
+
generateContractTypes(contract: Contract, codecTypeImports: ReadonlyArray<TypesImportSpec>, operationTypeImports: ReadonlyArray<TypesImportSpec>, hashes: {
|
|
396
439
|
readonly storageHash: string;
|
|
397
440
|
readonly executionHash?: string;
|
|
398
441
|
readonly profileHash: string;
|
|
@@ -464,49 +507,5 @@ interface ParameterizedCodecDescriptor {
|
|
|
464
507
|
readonly typesImport?: TypesImportSpec;
|
|
465
508
|
}
|
|
466
509
|
//#endregion
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
* Execution section for the unified contract (ADR 182).
|
|
470
|
-
*
|
|
471
|
-
* Unlike the legacy {@link import('./types').ExecutionSection}, this type
|
|
472
|
-
* requires `executionHash` — when an execution section is present, its
|
|
473
|
-
* hash must be too (consistent with `StorageBase.storageHash`).
|
|
474
|
-
*
|
|
475
|
-
* @template THash Literal hash string type for type-safe hash tracking.
|
|
476
|
-
*/
|
|
477
|
-
type ContractExecutionSection<THash extends string = string> = {
|
|
478
|
-
readonly executionHash: ExecutionHashBase<THash>;
|
|
479
|
-
readonly mutations: {
|
|
480
|
-
readonly defaults: ReadonlyArray<ExecutionMutationDefault>;
|
|
481
|
-
};
|
|
482
|
-
};
|
|
483
|
-
/**
|
|
484
|
-
* Unified contract representation (ADR 182).
|
|
485
|
-
*
|
|
486
|
-
* A `Contract` is the canonical in-memory representation of a data contract.
|
|
487
|
-
* It is model-first (domain models carry their own storage bridge) and
|
|
488
|
-
* family-parameterized (SQL, Mongo, etc. specialize via `TStorage` and model
|
|
489
|
-
* storage generics on `ContractModel`).
|
|
490
|
-
*
|
|
491
|
-
* JSON persistence fields (`schemaVersion`, `sources`) are not represented
|
|
492
|
-
* here — they are handled at the serialization boundary.
|
|
493
|
-
*
|
|
494
|
-
* @template TStorage Family-specific storage block (extends {@link StorageBase}).
|
|
495
|
-
* @template TModels Record of model name → {@link ContractModel} with
|
|
496
|
-
* family-specific model storage.
|
|
497
|
-
*/
|
|
498
|
-
interface Contract<TStorage extends StorageBase = StorageBase, TModels extends Record<string, ContractModel> = Record<string, ContractModel>> {
|
|
499
|
-
readonly target: string;
|
|
500
|
-
readonly targetFamily: string;
|
|
501
|
-
readonly roots: Record<string, string>;
|
|
502
|
-
readonly models: TModels;
|
|
503
|
-
readonly storage: TStorage;
|
|
504
|
-
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
505
|
-
readonly extensionPacks: Record<string, unknown>;
|
|
506
|
-
readonly execution?: ContractExecutionSection;
|
|
507
|
-
readonly profileHash?: ProfileHashBase<string>;
|
|
508
|
-
readonly meta: Record<string, unknown>;
|
|
509
|
-
}
|
|
510
|
-
//#endregion
|
|
511
|
-
export { ContractModel as $, RenderTypeContext as A, TypeRenderEntry as B, JsonPrimitive as C, PlanMeta as D, ParameterizedCodecDescriptor as E, TaggedBigInt as F, coreHash as G, TypesImportSpec as H, TaggedLiteralValue as I, isTaggedRaw as J, isDocumentContract as K, TaggedRaw as L, Source as M, StorageBase as N, PlanRefs as O, StorageHashBase as P, ContractField as Q, TargetFamilyHook as R, GeneratedValueSpec as S, ParamDescriptor as T, ValidationContext as U, TypeRenderer as V, bigintJsonReplacer as W, ContractDiscriminator as X, profileHash as Y, ContractEmbedRelation as Z, ExecutionPlan as _, ColumnDefault as a, DomainEmbedRelation as at, FieldType as b, ContractBase as c, DomainReferenceRelation as ct, DocIndex as d, DomainVariantEntry as dt, ContractReferenceRelation as et, DocumentContract as f, EmbedRelationKeys as ft, ExecutionMutationDefaultValue as g, ExecutionMutationDefault as h, Brand as i, DomainDiscriminator as it, ResultType as j, ProfileHashBase as k, ContractMarkerRecord as l, DomainRelation as lt, ExecutionHashBase as m, ReferenceRelationKeys as mt, ContractExecutionSection as n, ContractRelationOn as nt, ColumnDefaultLiteralInputValue as o, DomainField as ot, DocumentStorage as p, ModelStorageBase as pt, isTaggedBigInt as q, $ as r, ContractVariantEntry as rt, ColumnDefaultLiteralValue as s, DomainModel as st, Contract as t, ContractRelation as tt, DocCollection as u, DomainRelationOn as ut, ExecutionSection as v, JsonValue as w, GenerateContractTypesOptions as x, Expr as y, TypeRenderContext as z };
|
|
512
|
-
//# sourceMappingURL=contract-types-C0y-Bn8M.d.mts.map
|
|
510
|
+
export { ContractModel as $, Source as A, TypesImportSpec as B, ParamDescriptor as C, ProfileHashBase as D, PlanRefs as E, TaggedRaw as F, isTaggedBigInt as G, bigintJsonReplacer as H, TargetFamilyHook as I, Contract as J, isTaggedRaw as K, TypeRenderContext as L, StorageHashBase as M, TaggedBigInt as N, RenderTypeContext as O, TaggedLiteralValue as P, ContractField as Q, TypeRenderEntry as R, JsonValue as S, PlanMeta as T, coreHash as U, ValidationContext as V, isDocumentContract as W, ContractDiscriminator as X, ContractExecutionSection as Y, ContractEmbedRelation as Z, Expr as _, ColumnDefaultLiteralValue as a, DomainEmbedRelation as at, GeneratedValueSpec as b, DocCollection as c, DomainReferenceRelation as ct, DocumentStorage as d, DomainVariantEntry as dt, ContractReferenceRelation as et, ExecutionHashBase as f, EmbedRelationKeys as ft, ExecutionSection as g, ExecutionPlan as h, ColumnDefaultLiteralInputValue as i, DomainDiscriminator as it, StorageBase as j, ResultType as k, DocIndex as l, DomainRelation as lt, ExecutionMutationDefaultValue as m, ReferenceRelationKeys as mt, Brand as n, ContractRelationOn as nt, ContractBase as o, DomainField as ot, ExecutionMutationDefault as p, ModelStorageBase as pt, profileHash as q, ColumnDefault as r, ContractVariantEntry as rt, ContractMarkerRecord as s, DomainModel as st, $ as t, ContractRelation as tt, DocumentContract as u, DomainRelationOn as ut, FieldType as v, ParameterizedCodecDescriptor as w, JsonPrimitive as x, GenerateContractTypesOptions as y, TypeRenderer as z };
|
|
511
|
+
//# sourceMappingURL=types-D-iOS0Ks.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-D-iOS0Ks.d.mts","names":[],"sources":["../src/domain-types.ts","../src/contract-types.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/types.ts
|
|
2
|
+
function coreHash(value) {
|
|
3
|
+
return value;
|
|
4
|
+
}
|
|
5
|
+
function profileHash(value) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
function isTaggedBigInt(value) {
|
|
9
|
+
return typeof value === "object" && value !== null && value.$type === "bigint" && typeof value.value === "string";
|
|
10
|
+
}
|
|
11
|
+
function bigintJsonReplacer(_key, value) {
|
|
12
|
+
if (typeof value === "bigint") return {
|
|
13
|
+
$type: "bigint",
|
|
14
|
+
value: value.toString()
|
|
15
|
+
};
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
function isTaggedRaw(value) {
|
|
19
|
+
return typeof value === "object" && value !== null && value.$type === "raw" && "value" in value;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Type guard to check if a contract is a Document contract
|
|
23
|
+
*/
|
|
24
|
+
function isDocumentContract(contract) {
|
|
25
|
+
return typeof contract === "object" && contract !== null && "targetFamily" in contract && contract.targetFamily === "document";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { isTaggedRaw as a, isTaggedBigInt as i, coreHash as n, profileHash as o, isDocumentContract as r, bigintJsonReplacer as t };
|
|
30
|
+
//# sourceMappingURL=types-DokLaU9G.mjs.map
|