@prisma-next/contract 0.3.0-dev.141 → 0.3.0-dev.143
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/{contract-types-x89nqTli.d.mts → contract-types-d-PtSVGD.d.mts} +2 -2
- package/dist/{contract-types-x89nqTli.d.mts.map → contract-types-d-PtSVGD.d.mts.map} +1 -1
- package/dist/{hashing-D1EPxYRl.mjs → hashing-vJBMVN8S.mjs} +9 -3
- package/dist/hashing-vJBMVN8S.mjs.map +1 -0
- package/dist/hashing.d.mts +4 -2
- package/dist/hashing.d.mts.map +1 -1
- package/dist/hashing.mjs +1 -1
- package/dist/testing.d.mts +2 -2
- package/dist/testing.mjs +1 -1
- package/dist/{types-DmKtoEd-.d.mts → types-D6WADlh6.d.mts} +3 -3
- package/dist/types-D6WADlh6.d.mts.map +1 -0
- package/dist/types-DYikGC04.mjs.map +1 -1
- package/dist/types.d.mts +2 -2
- package/dist/validate-contract.d.mts +1 -1
- package/package.json +2 -2
- package/src/canonicalization.ts +15 -5
- package/src/types.ts +2 -2
- package/dist/hashing-D1EPxYRl.mjs.map +0 -1
- package/dist/types-DmKtoEd-.d.mts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as StorageBase, T as ProfileHashBase, U as ContractModel, f as ExecutionHashBase, p as ExecutionMutationDefault } from "./types-
|
|
1
|
+
import { O as StorageBase, T as ProfileHashBase, U as ContractModel, f as ExecutionHashBase, p as ExecutionMutationDefault } from "./types-D6WADlh6.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/contract-types.d.ts
|
|
4
4
|
|
|
@@ -46,4 +46,4 @@ interface Contract<TStorage extends StorageBase = StorageBase, TModels extends R
|
|
|
46
46
|
}
|
|
47
47
|
//#endregion
|
|
48
48
|
export { ContractExecutionSection as n, Contract as t };
|
|
49
|
-
//# sourceMappingURL=contract-types-
|
|
49
|
+
//# sourceMappingURL=contract-types-d-PtSVGD.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-types-
|
|
1
|
+
{"version":3,"file":"contract-types-d-PtSVGD.d.mts","names":[],"sources":["../src/contract-types.ts"],"sourcesContent":[],"mappings":";;;;;AAiBA;;;;;;AAsBA;;AACiC,KAvBrB,wBAuBqB,CAAA,cAAA,MAAA,GAAA,MAAA,CAAA,GAAA;EACA,SAAA,aAAA,EAvBP,iBAuBO,CAvBW,KAuBX,CAAA;EAAf,SAAA,SAAA,EAAA;IAA+C,SAAA,QAAA,EArB1C,aAqB0C,CArB5B,wBAqB4B,CAAA;EAAf,CAAA;CAIhC;;;;;;;;;;;;;;;;UAND,0BACE,cAAc,6BACf,eAAe,iBAAiB,eAAe;;;kBAI/C;mBACC;oBACC;yBACK,eAAe;2BACb;uBACJ;wBACC;iBACP"}
|
|
@@ -8,6 +8,8 @@ const TOP_LEVEL_ORDER = [
|
|
|
8
8
|
"canonicalVersion",
|
|
9
9
|
"targetFamily",
|
|
10
10
|
"target",
|
|
11
|
+
"storageHash",
|
|
12
|
+
"executionHash",
|
|
11
13
|
"profileHash",
|
|
12
14
|
"roots",
|
|
13
15
|
"models",
|
|
@@ -138,7 +140,7 @@ function orderTopLevel(obj) {
|
|
|
138
140
|
}
|
|
139
141
|
function canonicalizeContractToObject(input) {
|
|
140
142
|
const i = input;
|
|
141
|
-
const
|
|
143
|
+
const normalized = {
|
|
142
144
|
...i["schemaVersion"] !== void 0 ? { schemaVersion: i["schemaVersion"] } : {},
|
|
143
145
|
targetFamily: i["targetFamily"],
|
|
144
146
|
target: i["target"],
|
|
@@ -150,7 +152,11 @@ function canonicalizeContractToObject(input) {
|
|
|
150
152
|
extensionPacks: i["extensionPacks"],
|
|
151
153
|
capabilities: i["capabilities"],
|
|
152
154
|
meta: i["meta"]
|
|
153
|
-
}
|
|
155
|
+
};
|
|
156
|
+
if (i["storageHash"] !== void 0) normalized["storageHash"] = i["storageHash"];
|
|
157
|
+
if (i["executionHash"] !== void 0) normalized["executionHash"] = i["executionHash"];
|
|
158
|
+
if (i["profileHash"] !== void 0) normalized["profileHash"] = i["profileHash"];
|
|
159
|
+
const withDefaultsOmitted = omitDefaults(normalized, []);
|
|
154
160
|
const withSortedIndexes = sortIndexesAndUniques(withDefaultsOmitted["storage"]);
|
|
155
161
|
return orderTopLevel(sortObjectKeys({
|
|
156
162
|
...withDefaultsOmitted,
|
|
@@ -212,4 +218,4 @@ function computeProfileHash(args) {
|
|
|
212
218
|
|
|
213
219
|
//#endregion
|
|
214
220
|
export { canonicalizeContractToObject as a, canonicalizeContract as i, computeProfileHash as n, computeStorageHash as r, computeExecutionHash as t };
|
|
215
|
-
//# sourceMappingURL=hashing-
|
|
221
|
+
//# sourceMappingURL=hashing-vJBMVN8S.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashing-vJBMVN8S.mjs","names":["result: Record<string, unknown>","sorted: Record<string, unknown>","result: StorageObject","sortedTable: TableObject","ordered: Record<string, unknown>","normalized: 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 'storageHash',\n 'executionHash',\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\nexport function 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 roots: Record<string, string>;\n readonly models: Record<string, unknown>;\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 readonly storageHash?: string | undefined;\n readonly executionHash?: string | undefined;\n readonly profileHash?: string | undefined;\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 if (i['storageHash'] !== undefined) {\n normalized['storageHash'] = i['storageHash'];\n }\n if (i['executionHash'] !== undefined) {\n normalized['executionHash'] = i['executionHash'];\n }\n if (i['profileHash'] !== undefined) {\n normalized['profileHash'] = i['profileHash'];\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":";;;;;AAKA,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,SAAS,eAAe,OAAyB;AAC/C,KAAI,UAAU,MAAO,QAAO;AAC5B,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,iBAAiB,KAAM,QAAO;AAClC,KAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,WAAW,EAAG,QAAO;AACvD,KAAI,OAAO,UAAU,YAAY,UAAU,KAEzC,QADa,OAAO,KAAK,MAAM,CACnB,WAAW;AAEzB,QAAO;;AAGT,SAAS,aAAa,KAAc,MAAkC;AACpE,KAAI,QAAQ,QAAQ,OAAO,QAAQ,SACjC,QAAO;AAGT,KAAI,eAAe,KACjB,QAAO;AAGT,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,KAAK,SAAS,aAAa,MAAM,KAAK,CAAC;CAGpD,MAAMA,SAAkC,EAAE;AAE1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,EAAE;EAC9C,MAAM,cAAc,CAAC,GAAG,MAAM,IAAI;AAElC,MAAI,QAAQ,aACV;AAGF,MAAI,QAAQ,cAAc,UAAU,MAClC;AAGF,MAAI,QAAQ,eAAe,UAAU,MACnC;AAGF,OAAK,QAAQ,cAAc,QAAQ,eAAe,UAAU,WAC1D;AAGF,MAAI,eAAe,MAAM,EAAE;GACzB,MAAM,mBAAmB,aAAa,aAAa,CAAC,SAAS,CAAC;GAC9D,MAAM,mBAAmB,aAAa,aAAa,CAAC,WAAW,SAAS,CAAC;GACzE,MAAM,wBAAwB,aAAa,aAAa,CAAC,WAAW,cAAc,CAAC;GACnF,MAAM,oBACJ,YAAY,WAAW,KACvB,aAAa,CAAC,YAAY,IAAI,YAAY,GAAG,EAAE,CAAC,WAAW,cAAc,CAAC;GAC5E,MAAM,kBAAkB,aAAa,aAAa,CAAC,QAAQ,CAAC;GAC5D,MAAM,2BAA2B,aAAa,aAAa,CAAC,iBAAiB,CAAC;GAC9E,MAAM,yBAAyB,aAAa,aAAa,CAAC,eAAe,CAAC;GAC1E,MAAM,iBAAiB,aAAa,aAAa,CAAC,OAAO,CAAC;GAC1D,MAAM,8BAA8B,aAAa,aAAa;IAC5D;IACA;IACA;IACD,CAAC;GACF,MAAM,uBAAuB,YAAY,WAAW,KAAK,YAAY,OAAO;GAC5E,MAAM,mBACJ,YAAY,WAAW,KACvB,aAAa,CAAC,YAAY,IAAI,YAAY,GAAG,EAAE,CAAC,UAAU,YAAY,CAAC;GACzE,MAAM,iBACJ,YAAY,WAAW,KACvB,aAAa,CAAC,YAAY,IAAI,YAAY,GAAG,EAAE,CAAC,UAAU,UAAU,CAAC;GACvE,MAAM,iBACJ,YAAY,WAAW,KACvB,aACE;IAAC,YAAY;IAAI,YAAY;IAAI,YAAY;IAAG,EAChD;IAAC;IAAW;IAAU;IAAU,CACjC;GACH,MAAM,iBACJ,YAAY,WAAW,KACvB,aACE;IAAC,YAAY;IAAI,YAAY;IAAI,YAAY;IAAG,EAChD;IAAC;IAAW;IAAU;IAAU,CACjC;GACH,MAAM,qBACJ,YAAY,WAAW,KACvB,aACE;IAAC,YAAY;IAAI,YAAY;IAAI,YAAY;IAAG,EAChD;IAAC;IAAW;IAAU;IAAc,CACrC;GAEH,MAAM,mBACJ,YAAY,WAAW,KACvB,YAAY,OAAO,aACnB,YAAY,OAAO,YACnB,YAAY,OAAO,kBAClB,QAAQ,gBAAgB,QAAQ;AAEnC,OACE,CAAC,oBACD,CAAC,oBACD,CAAC,yBACD,CAAC,qBACD,CAAC,mBACD,CAAC,4BACD,CAAC,0BACD,CAAC,kBACD,CAAC,+BACD,CAAC,wBACD,CAAC,oBACD,CAAC,kBACD,CAAC,kBACD,CAAC,kBACD,CAAC,sBACD,CAAC,iBAED;;AAIJ,SAAO,OAAO,aAAa,OAAO,YAAY;;AAGhD,QAAO;;AAGT,SAAS,eAAe,KAAuB;AAC7C,KAAI,QAAQ,QAAQ,OAAO,QAAQ,SACjC,QAAO;AAGT,KAAI,eAAe,KACjB,QAAO;AAGT,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,KAAK,SAAS,eAAe,KAAK,CAAC;CAGhD,MAAMC,SAAkC,EAAE;CAC1C,MAAM,OAAO,OAAO,KAAK,IAAI,CAAC,MAAM;AACpC,MAAK,MAAM,OAAO,KAChB,QAAO,OAAO,eAAgB,IAAgC,KAAK;AAGrE,QAAO;;AAcT,SAAS,sBAAsB,SAA2B;AACxD,KAAI,CAAC,WAAW,OAAO,YAAY,SACjC,QAAO;CAGT,MAAM,aAAa;AACnB,KAAI,CAAC,WAAW,UAAU,OAAO,WAAW,WAAW,SACrD,QAAO;CAGT,MAAM,SAAS,WAAW;CAC1B,MAAMC,SAAwB,EAAE,GAAG,YAAY;AAE/C,QAAO,SAAS,EAAE;CAClB,MAAM,mBAAmB,OAAO,KAAK,OAAO,CAAC,MAAM;AACnD,MAAK,MAAM,aAAa,kBAAkB;EACxC,MAAM,QAAQ,OAAO;AACrB,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,UAAO,OAAO,aAAa;AAC3B;;EAGF,MAAM,WAAW;EACjB,MAAMC,cAA2B,EAAE,GAAG,UAAU;AAEhD,MAAI,MAAM,QAAQ,SAAS,QAAQ,CACjC,aAAY,UAAU,CAAC,GAAG,SAAS,QAAQ,CAAC,MAAM,GAAG,MAAM;GACzD,MAAM,QAAS,GAAyB,QAAQ;GAChD,MAAM,QAAS,GAAyB,QAAQ;AAChD,UAAO,MAAM,cAAc,MAAM;IACjC;AAGJ,MAAI,MAAM,QAAQ,SAAS,QAAQ,CACjC,aAAY,UAAU,CAAC,GAAG,SAAS,QAAQ,CAAC,MAAM,GAAG,MAAM;GACzD,MAAM,QAAS,GAAyB,QAAQ;GAChD,MAAM,QAAS,GAAyB,QAAQ;AAChD,UAAO,MAAM,cAAc,MAAM;IACjC;AAGJ,SAAO,OAAO,aAAa;;AAG7B,QAAO;;AAGT,SAAgB,cAAc,KAAuD;CACnF,MAAMC,UAAmC,EAAE;CAC3C,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC;AAE3C,MAAK,MAAM,OAAO,gBAChB,KAAI,UAAU,IAAI,IAAI,EAAE;AACtB,UAAQ,OAAO,IAAI;AACnB,YAAU,OAAO,IAAI;;AAIzB,MAAK,MAAM,OAAO,MAAM,KAAK,UAAU,CAAC,MAAM,CAC5C,SAAQ,OAAO,IAAI;AAGrB,QAAO;;AAmBT,SAAgB,6BACd,OACyB;CACzB,MAAM,IAAI;CACV,MAAMC,aAAsC;EAC1C,GAAI,EAAE,qBAAqB,SAAY,EAAE,eAAe,EAAE,kBAAkB,GAAG,EAAE;EACjF,cAAc,EAAE;EAChB,QAAQ,EAAE;EACV,GAAI,EAAE,mBAAmB,SAAY,EAAE,aAAa,EAAE,gBAAgB,GAAG,EAAE;EAC3E,OAAO,EAAE;EACT,QAAQ,EAAE;EACV,SAAS,EAAE;EACX,GAAI,EAAE,iBAAiB,SAAY,EAAE,WAAW,EAAE,cAAc,GAAG,EAAE;EACrE,gBAAgB,EAAE;EAClB,cAAc,EAAE;EAChB,MAAM,EAAE;EACT;AACD,KAAI,EAAE,mBAAmB,OACvB,YAAW,iBAAiB,EAAE;AAEhC,KAAI,EAAE,qBAAqB,OACzB,YAAW,mBAAmB,EAAE;AAElC,KAAI,EAAE,mBAAmB,OACvB,YAAW,iBAAiB,EAAE;CAGhC,MAAM,sBAAsB,aAAa,YAAY,EAAE,CAAC;CACxD,MAAM,oBAAoB,sBAAsB,oBAAoB,WAAW;AAG/E,QAAO,cADgB,eADG;EAAE,GAAG;EAAqB,SAAS;EAAmB,CACxB,CACpB;;AAGtC,SAAgB,qBAAqB,OAAuC;AAC1E,QAAO,KAAK,UAAU,6BAA6B,MAAM,EAAE,oBAAoB,EAAE;;;;;AClSnF,MAAM,iBAAiB;AAEvB,SAAS,OAAO,SAAyB;CACvC,MAAM,OAAO,WAAW,SAAS;AACjC,MAAK,OAAO,QAAQ;AACpB,QAAO,UAAU,KAAK,OAAO,MAAM;;AAGrC,SAAgB,mBAAmB,MAIP;AAY1B,QAAO,OAXW,qBAAqB;EACrC,eAAe;EACf,cAAc,KAAK;EACnB,QAAQ,KAAK;EACb,SAAS,KAAK;EACd,OAAO,EAAE;EACT,QAAQ,EAAE;EACV,gBAAgB,EAAE;EAClB,cAAc,EAAE;EAChB,MAAM,EAAE;EACT,CAAC,CACsB;;AAG1B,SAAgB,qBAAqB,MAIP;AAa5B,QAAO,OAZW,qBAAqB;EACrC,eAAe;EACf,cAAc,KAAK;EACnB,QAAQ,KAAK;EACb,WAAW,KAAK;EAChB,OAAO,EAAE;EACT,QAAQ,EAAE;EACV,SAAS,EAAE;EACX,gBAAgB,EAAE;EAClB,cAAc,EAAE;EAChB,MAAM,EAAE;EACT,CAAC,CACsB;;AAG1B,SAAgB,mBAAmB,MAIP;AAY1B,QAAO,OAXW,qBAAqB;EACrC,eAAe;EACf,cAAc,KAAK;EACnB,QAAQ,KAAK;EACb,cAAc,KAAK;EACnB,OAAO,EAAE;EACT,QAAQ,EAAE;EACV,SAAS,EAAE;EACX,gBAAgB,EAAE;EAClB,MAAM,EAAE;EACT,CAAC,CACsB"}
|
package/dist/hashing.d.mts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { O as StorageBase, T as ProfileHashBase, f as ExecutionHashBase, k as StorageHashBase } from "./types-
|
|
1
|
+
import { O as StorageBase, T as ProfileHashBase, f as ExecutionHashBase, k as StorageHashBase } from "./types-D6WADlh6.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/canonicalization.d.ts
|
|
4
4
|
type CanonicalContractInput = {
|
|
5
5
|
readonly schemaVersion?: string | undefined;
|
|
6
6
|
readonly targetFamily: string;
|
|
7
7
|
readonly target: string;
|
|
8
|
-
readonly profileHash?: string | undefined;
|
|
9
8
|
readonly roots: Record<string, string>;
|
|
10
9
|
readonly models: Record<string, unknown>;
|
|
11
10
|
readonly storage: StorageBase | Record<string, unknown>;
|
|
@@ -13,6 +12,9 @@ type CanonicalContractInput = {
|
|
|
13
12
|
readonly extensionPacks: Record<string, unknown>;
|
|
14
13
|
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
15
14
|
readonly meta: Record<string, unknown>;
|
|
15
|
+
readonly storageHash?: string | undefined;
|
|
16
|
+
readonly executionHash?: string | undefined;
|
|
17
|
+
readonly profileHash?: string | undefined;
|
|
16
18
|
};
|
|
17
19
|
declare function canonicalizeContractToObject(input: CanonicalContractInput): Record<string, unknown>;
|
|
18
20
|
declare function canonicalizeContract(input: CanonicalContractInput): string;
|
package/dist/hashing.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashing.d.mts","names":[],"sources":["../src/canonicalization.ts","../src/hashing.ts"],"sourcesContent":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hashing.d.mts","names":[],"sources":["../src/canonicalization.ts","../src/hashing.ts"],"sourcesContent":[],"mappings":";;;KAmPY,sBAAA;EAAA,SAAA,aAAA,CAAA,EAAsB,MAAA,GAAA,SAAA;EAIhB,SAAA,YAAA,EAAA,MAAA;EACC,SAAA,MAAA,EAAA,MAAA;EACC,SAAA,KAAA,EAFF,MAEE,CAAA,MAAA,EAAA,MAAA,CAAA;EAAc,SAAA,MAAA,EADf,MACe,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;EAAM,SAAA,WAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAMP,SAAA,aAAA,CAAA,EAAA,MAA4B,GAAA,SACnC;EAiCO,SAAA,WAAA,CAAA,EAAoB,MAAA,GAAA,SAAQ;;iBAlC5B,4BAAA,QACP,yBACN;iBAgCa,oBAAA,QAA4B;;;iBCzR5B,kBAAA;;EDuOJ,YAAA,EAAA,MAAA;EAIM,OAAA,ECxOP,MDwOO,CAAA,MAAA,EAAA,OAAA,CAAA;CACC,CAAA,ECxOf,eDwOe,CAAA,MAAA,CAAA;AACC,iBC1NJ,oBAAA,CD0NI,IAAA,EAAA;EAAc,MAAA,EAAA,MAAA;EACX,YAAA,EAAA,MAAA;EACI,SAAA,ECzNd,MDyNc,CAAA,MAAA,EAAA,OAAA,CAAA;CACa,CAAA,ECzNpC,iBDyNoC,CAAA,MAAA,CAAA;AAAf,iBCzMT,kBAAA,CDyMS,IAAA,EAAA;EACR,MAAA,EAAA,MAAA;EAAM,YAAA,EAAA,MAAA;EAMP,YAAA,EC7MA,MD6MA,CAAA,MAAA,EC7Me,MD6Ma,CAAA,MAAA,EACnC,OAAA,CAAA,CAAA;AAiCT,CAAA,CAAA,EC9OI,eD8OY,CAAA,MAAA,CAAoB"}
|
package/dist/hashing.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as canonicalizeContractToObject, i as canonicalizeContract, n as computeProfileHash, r as computeStorageHash, t as computeExecutionHash } from "./hashing-
|
|
1
|
+
import { a as canonicalizeContractToObject, i as canonicalizeContract, n as computeProfileHash, r as computeStorageHash, t as computeExecutionHash } from "./hashing-vJBMVN8S.mjs";
|
|
2
2
|
|
|
3
3
|
export { canonicalizeContract, canonicalizeContractToObject, computeExecutionHash, computeProfileHash, computeStorageHash };
|
package/dist/testing.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { O as StorageBase, T as ProfileHashBase, U as ContractModel, g as ExecutionSection, k as StorageHashBase, rt as ModelStorageBase } from "./types-
|
|
2
|
-
import { t as Contract } from "./contract-types-
|
|
1
|
+
import { O as StorageBase, T as ProfileHashBase, U as ContractModel, g as ExecutionSection, k as StorageHashBase, rt as ModelStorageBase } from "./types-D6WADlh6.mjs";
|
|
2
|
+
import { t as Contract } from "./contract-types-d-PtSVGD.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/testing-factories.d.ts
|
|
5
5
|
type ContractOverrides<TStorage extends StorageBase = StorageBase, TModels extends Record<string, ContractModel> = Record<string, ContractModel>> = {
|
package/dist/testing.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as coreHash } from "./types-DYikGC04.mjs";
|
|
2
|
-
import { n as computeProfileHash, r as computeStorageHash, t as computeExecutionHash } from "./hashing-
|
|
2
|
+
import { n as computeProfileHash, r as computeStorageHash, t as computeExecutionHash } from "./hashing-vJBMVN8S.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/testing-factories.ts
|
|
5
5
|
const DUMMY_HASH = coreHash("sha256:test");
|
|
@@ -105,8 +105,8 @@ interface ContractBase<TStorageHash extends StorageHashBase<string> = StorageHas
|
|
|
105
105
|
readonly target: string;
|
|
106
106
|
readonly targetFamily: string;
|
|
107
107
|
readonly storageHash: TStorageHash;
|
|
108
|
-
readonly executionHash?: TExecutionHash
|
|
109
|
-
readonly profileHash?: TProfileHash
|
|
108
|
+
readonly executionHash?: TExecutionHash;
|
|
109
|
+
readonly profileHash?: TProfileHash;
|
|
110
110
|
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
111
111
|
readonly extensionPacks: Record<string, unknown>;
|
|
112
112
|
readonly meta: Record<string, unknown>;
|
|
@@ -300,4 +300,4 @@ interface ContractMarkerRecord {
|
|
|
300
300
|
}
|
|
301
301
|
//#endregion
|
|
302
302
|
export { DomainRelation as $, TaggedBigInt as A, ContractDiscriminator as B, PlanMeta as C, Source as D, ResultType as E, executionHash as F, ContractRelation as G, ContractField as H, isDocumentContract as I, DomainDiscriminator as J, ContractRelationOn as K, isTaggedBigInt as L, TaggedRaw as M, bigintJsonReplacer as N, StorageBase as O, coreHash as P, DomainReferenceRelation as Q, isTaggedRaw as R, ParamDescriptor as S, ProfileHashBase as T, ContractModel as U, ContractEmbedRelation as V, ContractReferenceRelation as W, DomainField as X, DomainEmbedRelation as Y, DomainModel as Z, Expr as _, ColumnDefaultLiteralValue as a, JsonPrimitive as b, DocCollection as c, DocumentStorage as d, DomainRelationOn as et, ExecutionHashBase as f, ExecutionSection as g, ExecutionPlan as h, ColumnDefaultLiteralInputValue as i, ReferenceRelationKeys as it, TaggedLiteralValue as j, StorageHashBase as k, DocIndex as l, ExecutionMutationDefaultValue as m, Brand as n, EmbedRelationKeys as nt, ContractBase as o, ExecutionMutationDefault as p, ContractVariantEntry as q, ColumnDefault as r, ModelStorageBase as rt, ContractMarkerRecord as s, $ as t, DomainVariantEntry as tt, DocumentContract as u, FieldType as v, PlanRefs as w, JsonValue as x, GeneratedValueSpec as y, profileHash as z };
|
|
303
|
-
//# sourceMappingURL=types-
|
|
303
|
+
//# sourceMappingURL=types-D6WADlh6.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-D6WADlh6.d.mts","names":[],"sources":["../src/domain-types.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-DYikGC04.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { DomainModel } from './domain-types';\n\n/**\n * Unique symbol used as the key for branding types.\n */\nexport const $: unique symbol = Symbol('__prisma_next_brand__');\n\n/**\n * A helper type to brand a given type with a unique identifier.\n *\n * @template TKey Text used as the brand key.\n * @template TValue Optional value associated with the brand key. Defaults to `true`.\n */\nexport type Brand<TKey extends string | number | symbol, TValue = true> = {\n [$]: {\n [K in TKey]: TValue;\n };\n};\n\n/**\n * Base type for storage contract hashes.\n * Emitted contract.d.ts files use this with the hash value as a type parameter:\n * `type StorageHash = StorageHashBase<'sha256:abc123...'>`\n */\nexport type StorageHashBase<THash extends string> = THash & Brand<'StorageHash'>;\n\n/**\n * Base type for execution contract hashes.\n * Emitted contract.d.ts files use this with the hash value as a type parameter:\n * `type ExecutionHash = ExecutionHashBase<'sha256:def456...'>`\n */\nexport type ExecutionHashBase<THash extends string> = THash & Brand<'ExecutionHash'>;\n\nexport function executionHash<const T extends string>(value: T): ExecutionHashBase<T> {\n return value as ExecutionHashBase<T>;\n}\n\nexport function coreHash<const T extends string>(value: T): StorageHashBase<T> {\n return value as StorageHashBase<T>;\n}\n\n/**\n * Base type for profile contract hashes.\n * Emitted contract.d.ts files use this with the hash value as a type parameter:\n * `type ProfileHash = ProfileHashBase<'sha256:def456...'>`\n */\nexport type ProfileHashBase<THash extends string> = THash & Brand<'ProfileHash'>;\n\nexport function profileHash<const T extends string>(value: T): ProfileHashBase<T> {\n return value as ProfileHashBase<T>;\n}\n\n/**\n * Base type for family-specific storage blocks.\n * Family storage types (SqlStorage, MongoStorage, etc.) extend this to carry the\n * storage hash alongside family-specific data (tables, collections, etc.).\n */\nexport interface StorageBase<THash extends string = string> {\n readonly storageHash: StorageHashBase<THash>;\n}\n\nexport interface ContractBase<\n TStorageHash extends StorageHashBase<string> = StorageHashBase<string>,\n TExecutionHash extends ExecutionHashBase<string> = ExecutionHashBase<string>,\n TProfileHash extends ProfileHashBase<string> = ProfileHashBase<string>,\n> {\n readonly schemaVersion: string;\n readonly target: string;\n readonly targetFamily: string;\n readonly storageHash: TStorageHash;\n readonly executionHash?: TExecutionHash | undefined;\n readonly profileHash?: TProfileHash | undefined;\n readonly capabilities: Record<string, Record<string, boolean>>;\n readonly extensionPacks: Record<string, unknown>;\n readonly meta: Record<string, unknown>;\n readonly sources: Record<string, Source>;\n readonly execution?: ExecutionSection;\n readonly roots: Record<string, string>;\n readonly models: Record<string, DomainModel>;\n}\n\nexport interface FieldType {\n readonly type: string;\n readonly nullable: boolean;\n readonly items?: FieldType;\n readonly properties?: Record<string, FieldType>;\n}\n\nexport type GeneratedValueSpec = {\n readonly id: string;\n readonly params?: Record<string, unknown>;\n};\n\nexport type JsonPrimitive = string | number | boolean | null;\n\nexport type JsonValue =\n | JsonPrimitive\n | { readonly [key: string]: JsonValue }\n | readonly JsonValue[];\n\nexport type TaggedBigInt = { readonly $type: 'bigint'; readonly value: string };\n\nexport function isTaggedBigInt(value: unknown): value is TaggedBigInt {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { $type?: unknown }).$type === 'bigint' &&\n typeof (value as { value?: unknown }).value === 'string'\n );\n}\n\nexport function bigintJsonReplacer(_key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return { $type: 'bigint', value: value.toString() } satisfies TaggedBigInt;\n }\n return value;\n}\n\nexport type TaggedRaw = { readonly $type: 'raw'; readonly value: JsonValue };\n\nexport function isTaggedRaw(value: unknown): value is TaggedRaw {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { $type?: unknown }).$type === 'raw' &&\n 'value' in (value as object)\n );\n}\n\nexport type TaggedLiteralValue = TaggedBigInt | TaggedRaw;\n\nexport type ColumnDefaultLiteralValue = JsonValue | TaggedLiteralValue;\n\nexport type ColumnDefaultLiteralInputValue = ColumnDefaultLiteralValue | bigint | Date;\n\nexport type ColumnDefault =\n | {\n readonly kind: 'literal';\n readonly value: ColumnDefaultLiteralInputValue;\n }\n | { readonly kind: 'function'; readonly expression: string };\n\nexport type ExecutionMutationDefaultValue = {\n readonly kind: 'generator';\n readonly id: GeneratedValueSpec['id'];\n readonly params?: Record<string, unknown>;\n};\n\nexport type ExecutionMutationDefault = {\n readonly ref: { readonly table: string; readonly column: string };\n readonly onCreate?: ExecutionMutationDefaultValue;\n readonly onUpdate?: ExecutionMutationDefaultValue;\n};\n\nexport type ExecutionSection<THash extends string = string> = {\n readonly executionHash: ExecutionHashBase<THash>;\n readonly mutations: {\n readonly defaults: ReadonlyArray<ExecutionMutationDefault>;\n };\n};\n\nexport interface Source {\n readonly readOnly: boolean;\n readonly projection: Record<string, FieldType>;\n readonly origin?: Record<string, unknown>;\n readonly capabilities?: Record<string, boolean>;\n}\n\n// Document family types\nexport interface DocIndex {\n readonly name: string;\n readonly keys: Record<string, 'asc' | 'desc'>;\n readonly unique?: boolean;\n readonly where?: Expr;\n}\n\nexport type Expr =\n | { readonly kind: 'eq'; readonly path: ReadonlyArray<string>; readonly value: unknown }\n | { readonly kind: 'exists'; readonly path: ReadonlyArray<string> };\n\nexport interface DocCollection {\n readonly name: string;\n readonly id?: {\n readonly strategy: 'auto' | 'client' | 'uuid' | 'objectId';\n };\n readonly fields: Record<string, FieldType>;\n readonly indexes?: ReadonlyArray<DocIndex>;\n readonly readOnly?: boolean;\n}\n\nexport interface DocumentStorage {\n readonly document: {\n readonly collections: Record<string, DocCollection>;\n };\n}\n\nexport interface DocumentContract<\n TStorageHash extends StorageHashBase<string> = StorageHashBase<string>,\n TExecutionHash extends ExecutionHashBase<string> = ExecutionHashBase<string>,\n TProfileHash extends ProfileHashBase<string> = ProfileHashBase<string>,\n> extends ContractBase<TStorageHash, TExecutionHash, TProfileHash> {\n // Accept string to work with JSON imports; runtime validation ensures 'document'\n readonly targetFamily: string;\n readonly storage: DocumentStorage;\n}\n\n// Plan types - target-family agnostic execution types\nexport interface ParamDescriptor {\n readonly index?: number;\n readonly name?: string;\n readonly codecId?: string;\n readonly nativeType?: string;\n readonly nullable?: boolean;\n readonly source: 'dsl' | 'raw' | 'lane';\n readonly refs?: { table: string; column: string };\n}\n\nexport interface PlanRefs {\n readonly tables?: readonly string[];\n readonly columns?: ReadonlyArray<{ table: string; column: string }>;\n readonly indexes?: ReadonlyArray<{\n readonly table: string;\n readonly columns: ReadonlyArray<string>;\n readonly name?: string;\n }>;\n}\n\nexport interface PlanMeta {\n readonly target: string;\n readonly targetFamily?: string;\n readonly storageHash: string;\n readonly profileHash?: string;\n readonly lane: string;\n readonly annotations?: {\n codecs?: Record<string, string>; // alias/param → codec id ('ns/name@v')\n [key: string]: unknown;\n };\n readonly paramDescriptors: ReadonlyArray<ParamDescriptor>;\n readonly refs?: PlanRefs;\n readonly projection?: Record<string, string> | ReadonlyArray<string>;\n /**\n * Optional mapping of projection alias → column type ID (fully qualified ns/name@version).\n * Used for codec resolution when AST+refs don't provide enough type info.\n */\n readonly projectionTypes?: Record<string, string>;\n}\n\n/**\n * Canonical execution plan shape used by runtimes.\n *\n * - Row is the inferred result row type (TypeScript-only).\n * - Ast is the optional, family-specific AST type (e.g. SQL QueryAst).\n *\n * The payload executed by the runtime is represented by the sql + params pair\n * for now; future families can specialize this via Ast or additional metadata.\n */\nexport interface ExecutionPlan<Row = unknown, Ast = unknown> {\n readonly sql: string;\n readonly params: readonly unknown[];\n readonly ast?: Ast;\n readonly meta: PlanMeta;\n /**\n * Phantom property to carry the Row generic for type-level utilities.\n * Not set at runtime; used only for ResultType extraction.\n */\n readonly _row?: Row;\n}\n\n/**\n * Utility type to extract the Row type from an ExecutionPlan.\n * Example: `type Row = ResultType<typeof plan>`\n *\n * Works with both ExecutionPlan and SqlQueryPlan (SQL query plans before lowering).\n * SqlQueryPlan includes a phantom `_Row` property to preserve the generic parameter\n * for type extraction.\n */\nexport type ResultType<P> =\n P extends ExecutionPlan<infer R, unknown> ? R : P extends { readonly _Row?: infer R } ? R : never;\n\n/**\n * Type guard to check if a contract is a Document contract\n */\nexport function isDocumentContract(contract: unknown): contract is DocumentContract {\n return (\n typeof contract === 'object' &&\n contract !== null &&\n 'targetFamily' in contract &&\n contract.targetFamily === 'document'\n );\n}\n\n/**\n * Contract marker record stored in the database.\n * Represents the current contract identity for a database.\n */\nexport interface ContractMarkerRecord {\n readonly storageHash: string;\n readonly profileHash: string;\n readonly contractJson: unknown | null;\n readonly canonicalVersion: number | null;\n readonly updatedAt: Date;\n readonly appTag: string | null;\n readonly meta: Record<string, unknown>;\n}\n"],"mappings":";AAiCA,SAAgB,cAAsC,OAAgC;AACpF,QAAO;;AAGT,SAAgB,SAAiC,OAA8B;AAC7E,QAAO;;AAUT,SAAgB,YAAoC,OAA8B;AAChF,QAAO;;AAqDT,SAAgB,eAAe,OAAuC;AACpE,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8B,UAAU,YACzC,OAAQ,MAA8B,UAAU;;AAIpD,SAAgB,mBAAmB,MAAc,OAAyB;AACxE,KAAI,OAAO,UAAU,SACnB,QAAO;EAAE,OAAO;EAAU,OAAO,MAAM,UAAU;EAAE;AAErD,QAAO;;AAKT,SAAgB,YAAY,OAAoC;AAC9D,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8B,UAAU,SACzC,WAAY;;;;;AA6JhB,SAAgB,mBAAmB,UAAiD;AAClF,QACE,OAAO,aAAa,YACpB,aAAa,QACb,kBAAkB,YAClB,SAAS,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"types-DYikGC04.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { DomainModel } from './domain-types';\n\n/**\n * Unique symbol used as the key for branding types.\n */\nexport const $: unique symbol = Symbol('__prisma_next_brand__');\n\n/**\n * A helper type to brand a given type with a unique identifier.\n *\n * @template TKey Text used as the brand key.\n * @template TValue Optional value associated with the brand key. Defaults to `true`.\n */\nexport type Brand<TKey extends string | number | symbol, TValue = true> = {\n [$]: {\n [K in TKey]: TValue;\n };\n};\n\n/**\n * Base type for storage contract hashes.\n * Emitted contract.d.ts files use this with the hash value as a type parameter:\n * `type StorageHash = StorageHashBase<'sha256:abc123...'>`\n */\nexport type StorageHashBase<THash extends string> = THash & Brand<'StorageHash'>;\n\n/**\n * Base type for execution contract hashes.\n * Emitted contract.d.ts files use this with the hash value as a type parameter:\n * `type ExecutionHash = ExecutionHashBase<'sha256:def456...'>`\n */\nexport type ExecutionHashBase<THash extends string> = THash & Brand<'ExecutionHash'>;\n\nexport function executionHash<const T extends string>(value: T): ExecutionHashBase<T> {\n return value as ExecutionHashBase<T>;\n}\n\nexport function coreHash<const T extends string>(value: T): StorageHashBase<T> {\n return value as StorageHashBase<T>;\n}\n\n/**\n * Base type for profile contract hashes.\n * Emitted contract.d.ts files use this with the hash value as a type parameter:\n * `type ProfileHash = ProfileHashBase<'sha256:def456...'>`\n */\nexport type ProfileHashBase<THash extends string> = THash & Brand<'ProfileHash'>;\n\nexport function profileHash<const T extends string>(value: T): ProfileHashBase<T> {\n return value as ProfileHashBase<T>;\n}\n\n/**\n * Base type for family-specific storage blocks.\n * Family storage types (SqlStorage, MongoStorage, etc.) extend this to carry the\n * storage hash alongside family-specific data (tables, collections, etc.).\n */\nexport interface StorageBase<THash extends string = string> {\n readonly storageHash: StorageHashBase<THash>;\n}\n\nexport interface ContractBase<\n TStorageHash extends StorageHashBase<string> = StorageHashBase<string>,\n TExecutionHash extends ExecutionHashBase<string> = ExecutionHashBase<string>,\n TProfileHash extends ProfileHashBase<string> = ProfileHashBase<string>,\n> {\n readonly schemaVersion: string;\n readonly target: string;\n readonly targetFamily: string;\n readonly storageHash: TStorageHash;\n readonly executionHash?: TExecutionHash;\n readonly profileHash?: TProfileHash;\n readonly capabilities: Record<string, Record<string, boolean>>;\n readonly extensionPacks: Record<string, unknown>;\n readonly meta: Record<string, unknown>;\n readonly sources: Record<string, Source>;\n readonly execution?: ExecutionSection;\n readonly roots: Record<string, string>;\n readonly models: Record<string, DomainModel>;\n}\n\nexport interface FieldType {\n readonly type: string;\n readonly nullable: boolean;\n readonly items?: FieldType;\n readonly properties?: Record<string, FieldType>;\n}\n\nexport type GeneratedValueSpec = {\n readonly id: string;\n readonly params?: Record<string, unknown>;\n};\n\nexport type JsonPrimitive = string | number | boolean | null;\n\nexport type JsonValue =\n | JsonPrimitive\n | { readonly [key: string]: JsonValue }\n | readonly JsonValue[];\n\nexport type TaggedBigInt = { readonly $type: 'bigint'; readonly value: string };\n\nexport function isTaggedBigInt(value: unknown): value is TaggedBigInt {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { $type?: unknown }).$type === 'bigint' &&\n typeof (value as { value?: unknown }).value === 'string'\n );\n}\n\nexport function bigintJsonReplacer(_key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return { $type: 'bigint', value: value.toString() } satisfies TaggedBigInt;\n }\n return value;\n}\n\nexport type TaggedRaw = { readonly $type: 'raw'; readonly value: JsonValue };\n\nexport function isTaggedRaw(value: unknown): value is TaggedRaw {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { $type?: unknown }).$type === 'raw' &&\n 'value' in (value as object)\n );\n}\n\nexport type TaggedLiteralValue = TaggedBigInt | TaggedRaw;\n\nexport type ColumnDefaultLiteralValue = JsonValue | TaggedLiteralValue;\n\nexport type ColumnDefaultLiteralInputValue = ColumnDefaultLiteralValue | bigint | Date;\n\nexport type ColumnDefault =\n | {\n readonly kind: 'literal';\n readonly value: ColumnDefaultLiteralInputValue;\n }\n | { readonly kind: 'function'; readonly expression: string };\n\nexport type ExecutionMutationDefaultValue = {\n readonly kind: 'generator';\n readonly id: GeneratedValueSpec['id'];\n readonly params?: Record<string, unknown>;\n};\n\nexport type ExecutionMutationDefault = {\n readonly ref: { readonly table: string; readonly column: string };\n readonly onCreate?: ExecutionMutationDefaultValue;\n readonly onUpdate?: ExecutionMutationDefaultValue;\n};\n\nexport type ExecutionSection<THash extends string = string> = {\n readonly executionHash: ExecutionHashBase<THash>;\n readonly mutations: {\n readonly defaults: ReadonlyArray<ExecutionMutationDefault>;\n };\n};\n\nexport interface Source {\n readonly readOnly: boolean;\n readonly projection: Record<string, FieldType>;\n readonly origin?: Record<string, unknown>;\n readonly capabilities?: Record<string, boolean>;\n}\n\n// Document family types\nexport interface DocIndex {\n readonly name: string;\n readonly keys: Record<string, 'asc' | 'desc'>;\n readonly unique?: boolean;\n readonly where?: Expr;\n}\n\nexport type Expr =\n | { readonly kind: 'eq'; readonly path: ReadonlyArray<string>; readonly value: unknown }\n | { readonly kind: 'exists'; readonly path: ReadonlyArray<string> };\n\nexport interface DocCollection {\n readonly name: string;\n readonly id?: {\n readonly strategy: 'auto' | 'client' | 'uuid' | 'objectId';\n };\n readonly fields: Record<string, FieldType>;\n readonly indexes?: ReadonlyArray<DocIndex>;\n readonly readOnly?: boolean;\n}\n\nexport interface DocumentStorage {\n readonly document: {\n readonly collections: Record<string, DocCollection>;\n };\n}\n\nexport interface DocumentContract<\n TStorageHash extends StorageHashBase<string> = StorageHashBase<string>,\n TExecutionHash extends ExecutionHashBase<string> = ExecutionHashBase<string>,\n TProfileHash extends ProfileHashBase<string> = ProfileHashBase<string>,\n> extends ContractBase<TStorageHash, TExecutionHash, TProfileHash> {\n // Accept string to work with JSON imports; runtime validation ensures 'document'\n readonly targetFamily: string;\n readonly storage: DocumentStorage;\n}\n\n// Plan types - target-family agnostic execution types\nexport interface ParamDescriptor {\n readonly index?: number;\n readonly name?: string;\n readonly codecId?: string;\n readonly nativeType?: string;\n readonly nullable?: boolean;\n readonly source: 'dsl' | 'raw' | 'lane';\n readonly refs?: { table: string; column: string };\n}\n\nexport interface PlanRefs {\n readonly tables?: readonly string[];\n readonly columns?: ReadonlyArray<{ table: string; column: string }>;\n readonly indexes?: ReadonlyArray<{\n readonly table: string;\n readonly columns: ReadonlyArray<string>;\n readonly name?: string;\n }>;\n}\n\nexport interface PlanMeta {\n readonly target: string;\n readonly targetFamily?: string;\n readonly storageHash: string;\n readonly profileHash?: string;\n readonly lane: string;\n readonly annotations?: {\n codecs?: Record<string, string>; // alias/param → codec id ('ns/name@v')\n [key: string]: unknown;\n };\n readonly paramDescriptors: ReadonlyArray<ParamDescriptor>;\n readonly refs?: PlanRefs;\n readonly projection?: Record<string, string> | ReadonlyArray<string>;\n /**\n * Optional mapping of projection alias → column type ID (fully qualified ns/name@version).\n * Used for codec resolution when AST+refs don't provide enough type info.\n */\n readonly projectionTypes?: Record<string, string>;\n}\n\n/**\n * Canonical execution plan shape used by runtimes.\n *\n * - Row is the inferred result row type (TypeScript-only).\n * - Ast is the optional, family-specific AST type (e.g. SQL QueryAst).\n *\n * The payload executed by the runtime is represented by the sql + params pair\n * for now; future families can specialize this via Ast or additional metadata.\n */\nexport interface ExecutionPlan<Row = unknown, Ast = unknown> {\n readonly sql: string;\n readonly params: readonly unknown[];\n readonly ast?: Ast;\n readonly meta: PlanMeta;\n /**\n * Phantom property to carry the Row generic for type-level utilities.\n * Not set at runtime; used only for ResultType extraction.\n */\n readonly _row?: Row;\n}\n\n/**\n * Utility type to extract the Row type from an ExecutionPlan.\n * Example: `type Row = ResultType<typeof plan>`\n *\n * Works with both ExecutionPlan and SqlQueryPlan (SQL query plans before lowering).\n * SqlQueryPlan includes a phantom `_Row` property to preserve the generic parameter\n * for type extraction.\n */\nexport type ResultType<P> =\n P extends ExecutionPlan<infer R, unknown> ? R : P extends { readonly _Row?: infer R } ? R : never;\n\n/**\n * Type guard to check if a contract is a Document contract\n */\nexport function isDocumentContract(contract: unknown): contract is DocumentContract {\n return (\n typeof contract === 'object' &&\n contract !== null &&\n 'targetFamily' in contract &&\n contract.targetFamily === 'document'\n );\n}\n\n/**\n * Contract marker record stored in the database.\n * Represents the current contract identity for a database.\n */\nexport interface ContractMarkerRecord {\n readonly storageHash: string;\n readonly profileHash: string;\n readonly contractJson: unknown | null;\n readonly canonicalVersion: number | null;\n readonly updatedAt: Date;\n readonly appTag: string | null;\n readonly meta: Record<string, unknown>;\n}\n"],"mappings":";AAiCA,SAAgB,cAAsC,OAAgC;AACpF,QAAO;;AAGT,SAAgB,SAAiC,OAA8B;AAC7E,QAAO;;AAUT,SAAgB,YAAoC,OAA8B;AAChF,QAAO;;AAqDT,SAAgB,eAAe,OAAuC;AACpE,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8B,UAAU,YACzC,OAAQ,MAA8B,UAAU;;AAIpD,SAAgB,mBAAmB,MAAc,OAAyB;AACxE,KAAI,OAAO,UAAU,SACnB,QAAO;EAAE,OAAO;EAAU,OAAO,MAAM,UAAU;EAAE;AAErD,QAAO;;AAKT,SAAgB,YAAY,OAAoC;AAC9D,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8B,UAAU,SACzC,WAAY;;;;;AA6JhB,SAAgB,mBAAmB,UAAiD;AAClF,QACE,OAAO,aAAa,YACpB,aAAa,QACb,kBAAkB,YAClB,SAAS,iBAAiB"}
|
package/dist/types.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as DomainRelation, A as TaggedBigInt, B as ContractDiscriminator, C as PlanMeta, D as Source, E as ResultType, F as executionHash, G as ContractRelation, H as ContractField, I as isDocumentContract, J as DomainDiscriminator, K as ContractRelationOn, L as isTaggedBigInt, M as TaggedRaw, N as bigintJsonReplacer, O as StorageBase, P as coreHash, Q as DomainReferenceRelation, R as isTaggedRaw, S as ParamDescriptor, T as ProfileHashBase, U as ContractModel, V as ContractEmbedRelation, W as ContractReferenceRelation, X as DomainField, Y as DomainEmbedRelation, Z as DomainModel, _ as Expr, a as ColumnDefaultLiteralValue, b as JsonPrimitive, c as DocCollection, d as DocumentStorage, et as DomainRelationOn, f as ExecutionHashBase, g as ExecutionSection, h as ExecutionPlan, i as ColumnDefaultLiteralInputValue, it as ReferenceRelationKeys, j as TaggedLiteralValue, k as StorageHashBase, l as DocIndex, m as ExecutionMutationDefaultValue, n as Brand, nt as EmbedRelationKeys, o as ContractBase, p as ExecutionMutationDefault, q as ContractVariantEntry, r as ColumnDefault, rt as ModelStorageBase, s as ContractMarkerRecord, t as $, tt as DomainVariantEntry, u as DocumentContract, v as FieldType, w as PlanRefs, x as JsonValue, y as GeneratedValueSpec, z as profileHash } from "./types-
|
|
2
|
-
import { n as ContractExecutionSection, t as Contract } from "./contract-types-
|
|
1
|
+
import { $ as DomainRelation, A as TaggedBigInt, B as ContractDiscriminator, C as PlanMeta, D as Source, E as ResultType, F as executionHash, G as ContractRelation, H as ContractField, I as isDocumentContract, J as DomainDiscriminator, K as ContractRelationOn, L as isTaggedBigInt, M as TaggedRaw, N as bigintJsonReplacer, O as StorageBase, P as coreHash, Q as DomainReferenceRelation, R as isTaggedRaw, S as ParamDescriptor, T as ProfileHashBase, U as ContractModel, V as ContractEmbedRelation, W as ContractReferenceRelation, X as DomainField, Y as DomainEmbedRelation, Z as DomainModel, _ as Expr, a as ColumnDefaultLiteralValue, b as JsonPrimitive, c as DocCollection, d as DocumentStorage, et as DomainRelationOn, f as ExecutionHashBase, g as ExecutionSection, h as ExecutionPlan, i as ColumnDefaultLiteralInputValue, it as ReferenceRelationKeys, j as TaggedLiteralValue, k as StorageHashBase, l as DocIndex, m as ExecutionMutationDefaultValue, n as Brand, nt as EmbedRelationKeys, o as ContractBase, p as ExecutionMutationDefault, q as ContractVariantEntry, r as ColumnDefault, rt as ModelStorageBase, s as ContractMarkerRecord, t as $, tt as DomainVariantEntry, u as DocumentContract, v as FieldType, w as PlanRefs, x as JsonValue, y as GeneratedValueSpec, z as profileHash } from "./types-D6WADlh6.mjs";
|
|
2
|
+
import { n as ContractExecutionSection, t as Contract } from "./contract-types-d-PtSVGD.mjs";
|
|
3
3
|
export { type $, type Brand, type ColumnDefault, type ColumnDefaultLiteralInputValue, type ColumnDefaultLiteralValue, type Contract, type ContractBase, type ContractDiscriminator, type ContractEmbedRelation, type ContractExecutionSection, type ContractField, type ContractMarkerRecord, type ContractModel, type ContractReferenceRelation, type ContractRelation, type ContractRelationOn, type ContractVariantEntry, type DocCollection, type DocIndex, type DocumentContract, type DocumentStorage, type DomainDiscriminator, type DomainEmbedRelation, type DomainField, type DomainModel, type DomainReferenceRelation, type DomainRelation, type DomainRelationOn, type DomainVariantEntry, type EmbedRelationKeys, type ExecutionHashBase, type ExecutionMutationDefault, type ExecutionMutationDefaultValue, type ExecutionPlan, type ExecutionSection, type Expr, type FieldType, type GeneratedValueSpec, type JsonPrimitive, type JsonValue, type ModelStorageBase, type ParamDescriptor, type PlanMeta, type PlanRefs, type ProfileHashBase, type ReferenceRelationKeys, type ResultType, type Source, type StorageBase, type StorageHashBase, type TaggedBigInt, type TaggedLiteralValue, type TaggedRaw, bigintJsonReplacer, coreHash, executionHash, isDocumentContract, isTaggedBigInt, isTaggedRaw, profileHash };
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/contract",
|
|
3
|
-
"version": "0.3.0-dev.
|
|
3
|
+
"version": "0.3.0-dev.143",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "Data contract type definitions and JSON schema for Prisma Next",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"arktype": "^2.1.29",
|
|
9
|
-
"@prisma-next/utils": "0.3.0-dev.
|
|
9
|
+
"@prisma-next/utils": "0.3.0-dev.143"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"tsdown": "0.18.4",
|
package/src/canonicalization.ts
CHANGED
|
@@ -8,6 +8,8 @@ const TOP_LEVEL_ORDER = [
|
|
|
8
8
|
'canonicalVersion',
|
|
9
9
|
'targetFamily',
|
|
10
10
|
'target',
|
|
11
|
+
'storageHash',
|
|
12
|
+
'executionHash',
|
|
11
13
|
'profileHash',
|
|
12
14
|
'roots',
|
|
13
15
|
'models',
|
|
@@ -221,7 +223,7 @@ function sortIndexesAndUniques(storage: unknown): unknown {
|
|
|
221
223
|
return result;
|
|
222
224
|
}
|
|
223
225
|
|
|
224
|
-
function orderTopLevel(obj: Record<string, unknown>): Record<string, unknown> {
|
|
226
|
+
export function orderTopLevel(obj: Record<string, unknown>): Record<string, unknown> {
|
|
225
227
|
const ordered: Record<string, unknown> = {};
|
|
226
228
|
const remaining = new Set(Object.keys(obj));
|
|
227
229
|
|
|
@@ -243,17 +245,16 @@ export type CanonicalContractInput = {
|
|
|
243
245
|
readonly schemaVersion?: string | undefined;
|
|
244
246
|
readonly targetFamily: string;
|
|
245
247
|
readonly target: string;
|
|
246
|
-
readonly profileHash?: string | undefined;
|
|
247
248
|
readonly roots: Record<string, string>;
|
|
248
249
|
readonly models: Record<string, unknown>;
|
|
249
|
-
// StorageBase is an interface without an index signature, so it is not
|
|
250
|
-
// assignable to Record<string, unknown>. The union allows callers to pass
|
|
251
|
-
// either the typed StorageBase or a plain record.
|
|
252
250
|
readonly storage: StorageBase | Record<string, unknown>;
|
|
253
251
|
readonly execution?: Record<string, unknown> | undefined;
|
|
254
252
|
readonly extensionPacks: Record<string, unknown>;
|
|
255
253
|
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
256
254
|
readonly meta: Record<string, unknown>;
|
|
255
|
+
readonly storageHash?: string | undefined;
|
|
256
|
+
readonly executionHash?: string | undefined;
|
|
257
|
+
readonly profileHash?: string | undefined;
|
|
257
258
|
};
|
|
258
259
|
|
|
259
260
|
export function canonicalizeContractToObject(
|
|
@@ -273,6 +274,15 @@ export function canonicalizeContractToObject(
|
|
|
273
274
|
capabilities: i['capabilities'],
|
|
274
275
|
meta: i['meta'],
|
|
275
276
|
};
|
|
277
|
+
if (i['storageHash'] !== undefined) {
|
|
278
|
+
normalized['storageHash'] = i['storageHash'];
|
|
279
|
+
}
|
|
280
|
+
if (i['executionHash'] !== undefined) {
|
|
281
|
+
normalized['executionHash'] = i['executionHash'];
|
|
282
|
+
}
|
|
283
|
+
if (i['profileHash'] !== undefined) {
|
|
284
|
+
normalized['profileHash'] = i['profileHash'];
|
|
285
|
+
}
|
|
276
286
|
|
|
277
287
|
const withDefaultsOmitted = omitDefaults(normalized, []) as Record<string, unknown>;
|
|
278
288
|
const withSortedIndexes = sortIndexesAndUniques(withDefaultsOmitted['storage']);
|
package/src/types.ts
CHANGED
|
@@ -68,8 +68,8 @@ export interface ContractBase<
|
|
|
68
68
|
readonly target: string;
|
|
69
69
|
readonly targetFamily: string;
|
|
70
70
|
readonly storageHash: TStorageHash;
|
|
71
|
-
readonly executionHash?: TExecutionHash
|
|
72
|
-
readonly profileHash?: TProfileHash
|
|
71
|
+
readonly executionHash?: TExecutionHash;
|
|
72
|
+
readonly profileHash?: TProfileHash;
|
|
73
73
|
readonly capabilities: Record<string, Record<string, boolean>>;
|
|
74
74
|
readonly extensionPacks: Record<string, unknown>;
|
|
75
75
|
readonly meta: Record<string, unknown>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashing-D1EPxYRl.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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-DmKtoEd-.d.mts","names":[],"sources":["../src/domain-types.ts","../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|